fc2ブログ
WEBマスター目指して日々勉強!!
page top
[papervision3d] マテリアルの種類
CATEGORY/papervision3d
マテリアルの種類を調べたら
下記サイトが親切にまとめてありました。
参考にさせていただきます。

http://blog.rainyday.jp/flash/pv3d/PV3D_material.html

スポンサーサイト



page top
[papervision3d] ベクターテキスト(Text3D)で任意のフォントを使用する
CATEGORY/papervision3d
papervision3dではベクターテキストを使用することができるが
デフォルトで使用できるフォントは、下記に限られる。

・HelveticaBold
・HelveticaLight
・HelveticaMedium
・HelveticaRoman


まず前提として
下記のクラスでText3Dを使用できること確認。

-------------------------------------------------------------------
package {
    import flash.events.*;
    import flash.utils.*;
    import org.papervision3d.materials.*;
    import org.papervision3d.materials.special.*;
    import org.papervision3d.typography.fonts.*;
    import org.papervision3d.typography.*;
    import org.papervision3d.view.*;
    public class Main extends BasicView {
        public function Main():void {
            //マテリアルを作成
            var material:Letter3DMaterial = new Letter3DMaterial(0x006699);
            material.doubleSided = true;
           
            //ベクターテキストを作成
            var font:HelveticaBold = new HelveticaBold(); //ここで表示するフォントの種類を設定
            var text3D:Text3D = new Text3D("Papervision3D World", font, material);

            scene.addChild(text3D);
           
            startRendering();
        }
    }
}
-------------------------------------------------------------------

「var font:HelveticaBold = new HelveticaBold()」の部分でフォントを変えられるわけです。


そこで、任意のフォントをベクターテキストにする方法をメモる。
大きな手順として、下記の工程を行う。


●ベクターテキストに使用したいフォントをクラスファイル(.as)にする
●フォントをクラスファイルを編集
●実行するasを作成



では具体的に見ていこう
続きを読む
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);
        }
    }
   
}
page top
[papervision3d/as3] BasicViewクラスを使用しない書き方
CATEGORY/papervision3d
BasicViewを継承すれば簡単な記述でpv3dを実行出来る。

が、

詳細設定などを融通を効かせたいときなどある
その場合は、
それぞれのプロパティを設定

下記にメモ記載


package {
    import flash.events.Event;
    import flash.display.MovieClip;
    import flash.display.Sprite;


    //papervision3Dクラスをインポート
    import org.papervision3d.scenes.*;
    import org.papervision3d.objects.*;
    import org.papervision3d.cameras.*;
    import org.papervision3d.materials.*;
    import org.papervision3d.objects.primitives.*;
    import org.papervision3d.render.BasicRenderEngine;
    import org.papervision3d.view.BasicView;
    import org.papervision3d.view.Viewport3D;
   
   
    public class Hoge extends MovieClip{
       
        private var viewport:Viewport3D;
        private var scene:Scene3D;
        private var camera:Camera3D;
        private var renderer:BasicRenderEngine;
        private var rootNode:DisplayObject3D;
        private var plane:Plane;

        public function Hoge() {
            addEventListener(Event.ADDED_TO_STAGE, init3D);
        }

        private function init3D(e:Event):void {
           
            viewport = new Viewport3D(0, 0, true, true);
            scene=new Scene3D();
            camera=new Camera3D();
            renderer=new BasicRenderEngine();
            rootNode=scene.addChild(new DisplayObject3D("rootNode"));
            addEventListener(Event.ENTER_FRAME, onFrame);

            addChild(viewport);
            camera.zoom=30;
            camera.focus=200;
            camera.target = DisplayObject3D.ZERO;
           
            var m:WireframeMaterial = new WireframeMaterial(0xffffff);
            plane = new Plane(m, 100, 100, 0, 0);

            rootNode.addChild(plane);
           
        }
       
        public function onFrame(e:Event):void{
            renderer.renderScene(scene, camera, viewport);
        }
       
       
    }
}
page top
[papervision3d/as3] DisplayObject3D/マテリアル 削除
CATEGORY/papervision3d
シーン内の
DisplayObject3Dを完全に削除したい場合は
下記を使えばOK。


public function _delete_Proc():void { 
    for(var s:String in this.scene.children){ 
        var obj:DisplayObject3D = DisplayObject3D(this.scene.children[s]); 
        //マテリアルが存在するなら 
        if(obj.material){ 
        //ビットマップがあるなら開放 
        if(obj.material.bitmap)obj.material.bitmap.dispose(); 
        //マテリアルを破壊 
        obj.material.destroy(); 
        } 
        //シーンから削除 
        this.scene.removeChild(obj); 
    } 
}
© WEB-WORKMAN. all rights reserved.
Page top
FC2 BLOG