fc2ブログ
WEBマスター目指して日々勉強!!
page top
[papervision3d] jiglibFlash 使い方
CATEGORY/papervision3d
使い方は結構簡単。
papervision3dで生成したプリミティブを
「JBox」「JPlane」「JSphere」のクラスに渡し
物理演算をしてくれるインスタンスを生成する。

そして、
「PhysicsSystem.getInstance().AddBody(インスタンス);」で物理演算の対象に

最後にエンターフレーム内に毎処理を加えれば
一連のアニメーションが描画される。

まだまだわからないことがあるが、、


サンプルはこんな感じ、



package{
    import flash.events.Event;

    import org.papervision3d.materials.utils.MaterialsList;
    import org.papervision3d.materials.WireframeMaterial;
    import org.papervision3d.objects.primitives.Cylinder;
    import org.papervision3d.objects.primitives.Plane;
    import org.papervision3d.objects.primitives.Sphere;
   
    import org.papervision3d.objects.primitives.Cube;
    import org.papervision3d.view.BasicView;
   
    import jiglib.physics.PhysicsSystem;
    import jiglib.math.JNumber3D;
    import jiglib.math.JMatrix3D;
    import jiglib.geometry.JBox;
    import jiglib.geometry.JPlane;
    import jiglib.geometry.JSphere;
   
    public class Main extends BasicView{
       
        public function Main():void {
        super(550, 400, true, false, "Debug");
        camera.y = 1000;   
           
        //重力設定 デフォルトは(0, -10, 0) 省略可
        PhysicsSystem.getInstance().SetGravity(new JNumber3D(0, -10, 0));
       
        var mList:MaterialsList = new MaterialsList();
        mList.addMaterial(new WireframeMaterial(0xffffff), "all");
       
       
        //床
        var cubeObj:Cube = new Cube(mList, 1000, 1000, 500, 1, 1, 1, 0, 0);
        scene.addChild(cubeObj);
       
        var ground:JBox = new JBox(cubeObj, false, 1000, 1000, 500);
        PhysicsSystem.getInstance().AddBody(ground);
        ground.Material.Restitution = 0.8;//反発力 大きいほどぴょんぴょん
        ground.Material.StaticFriction = 0.9;
       
       
        //キューブ
        var cubeObj2:Cube = new Cube(mList, 50, 50, 50, 1, 1, 1, 0, 0);
        scene.addChild(cubeObj2);
       
        var cube:JBox = new JBox(cubeObj2, true, 50, 50, 50);
        cube.MoveTo(new JNumber3D(0, 1000, 0), JMatrix3D.IDENTITY);
        PhysicsSystem.getInstance().AddBody(cube);
       
       
        //球
        var ballObj:Sphere = new Sphere(null,50,8,6);
        scene.addChild(ballObj);
       
        var ball:JSphere = new JSphere(ballObj, true, 50);
        ball.MoveTo(new JNumber3D(0, 700, 0), JMatrix3D.IDENTITY);
        PhysicsSystem.getInstance().AddBody(ball);

       
        //いた
        var planeObj:Plane = new Plane(null, 200, 200, 0, 0);
        scene.addChild(planeObj);
       
        var plane:JPlane = new JPlane(planeObj);
        plane.MoveTo(new JNumber3D(0, 600, 0), JMatrix3D.rotationX(Math.PI / 2.5));
        PhysicsSystem.getInstance().AddBody(plane);
       
       
        startRendering();
        addEventListener(Event.ENTER_FRAME, loop);
       
        }
        private function loop(e:Event):void {
            PhysicsSystem.getInstance().Integrate(0.3);
        }
    }
   
}
スポンサーサイト



© WEB-WORKMAN. all rights reserved.
Page top
FC2 BLOG