お久しぶりです。むらけんです。
さて、世間を騒がせているpapervision3dですが、僕もAS3の壁を乗り越えてやっと弄り始めました。
大分理解出来ましたので、自分を含めAS1.5大好きな人にも抵抗の少ないフレームアクションベースでご紹介していきたいと思います。
今回は入門編として、HelloWorld的なものです。一応これでもActionScript3です。w
01| import org.papervision3d.core.proto.*;
papervision3dを弄ってみた感想としては、このくらいのサンプルだとあまり分からないですが、
もっと複雑なことをしたときに、AS3を使うだけあって、今まででは考えられないくらいのスピード感が得られます。
02| import org.papervision3d.scenes.*;
03| import org.papervision3d.cameras.*;
04| import org.papervision3d.objects.*;
05| import org.papervision3d.materials.*;
06| // _______________________________________________________________________
07| // vars
08| var container : Sprite;
09| var scene : MovieScene3D;
10| var camera : FreeCamera3D;
11| var planeObj:Plane;
12| var material:MovieMaterial;
13| // _______________________________________________________________________
14| // Constructor
15| ptest();
16| function ptest():void{
17| stage.frameRate = 60;
18| stage.quality = "MEDIUM";
19| stage.scaleMode = "noScale";
20| stage.align = StageAlign.TOP_LEFT;
21| this.addEventListener(Event.ENTER_FRAME, _enterframe);
22| this.stage.addEventListener(Event.RESIZE, onStageResize);
23| init();
24| }
25| // _______________________________________________________________________
26| // Init
27| function init():void{
28| var _myclass:test;
29| var objcontainer:Sprite;
30|
31| //コンテナ生成
32| container = new Sprite();
33| addChild(container);
34| container.x = this.stage.stageWidth / 2;
35| container.y = this.stage.stageHeight / 2;
36| //シーン生成
37| scene = new MovieScene3D( container );
38| //カメラ設定
39| camera=new FreeCamera3D(2,1000);
40| //オブジェクト生成
41| _myclass = new test();
42| _myclass.dTxt.text="Hello\nWorld";
43| material = new MovieMaterial( _myclass, true, {
44| doubleSided :true,
45| smooth :true
46| } );
47| planeObj = new Plane(material,180,180,2,2);
48| scene.addChild(planeObj);
49| }
50| // _______________________________________________________________________
51| // Event
52| function _enterframe(e:Event):void{
53| planeObj.rotationY=container.mouseX;
54| planeObj.rotationX=container.mouseY;
55| material.updateBitmap();
56| this.scene.renderCamera( camera );
57| }
58| // _______________________________________________________________________
59| // onStageResize
60| function onStageResize(e:Event):void{
61| this.container.x = this.stage.stageWidth / 2;
62| this.container.y = this.stage.stageHeight / 2;
63| }
他に代表的な3Dフレームワークといえば、sandy等ありますが、両方触りましたが、僕的にはpapervision3dの方がより良かったです。(分かりやすい)
papervision3dについてこれからもう少し書いていこうと思います。よろしくです。
コンパイルにはFlash9 Public Alpha及び papervision3dクラスライブラリが必要です。
ソースはこちら
▽免責事項▽
このサンプルを使用した場合、または使用できなかった等のいかなる損害も、
制作者 むらけん 及び F-site は、その責を負いません。
ご自身の責任においてご使用ください。
この記事へのコメント
●1.gankon(2008年01月31日 05:03)
コメント
doubleSidedはget,set型に変更になったらしく、initObjectでは使えない。
material.doubleSided=true;
とするらしい。