WOW-Engineとは、3D空間上で物理演算するフレームワークである。座標計算とか、衝突計算とか、そういうことだけをWOWEngineはやってくれる。
3Dオブジェクトの描画はしてくれないので、3D空間に壁をつくるとか、球体を表示するとか、「表示をする」ならば、Papervision3Dとか、Sandyとかと組み合わせて作成必要だ。あくまでオブジェクトの位置関係を計算するだけだ。
WOWEngineを使う手順は以下の通り
- WOWEngineを入手する
- WOWEngineを初期化する
- 物体を追加する
- 物体を動かす
- WOWEngineで計算する
- 表示に反映する。
サンプルいろいろ(最近、アクセスできない場合は頻繁だよう、変わりにゴーグルコードサイトにアクセスできる)
- spheres on plane
- boundArea, sphere
- spheres and contraints
- 3D picture
- rope, box
- cloth 01
- cloth 02
- cloth 03
Wow-Engineの導入と解説に関してはhttp://d.hatena.ne.jp/o_healer/20080315/1205573581に参考できる。
WOWEngineを初期化する
ここからは実際にWOWEngineを使う話。まずは、3D物理計算を行ってくれるエンジンである、「WOWEngine」のインスタンスを作成・初期化する必要がある。
以下のような感じで、クラスのメンバとして定義する。
- private var wow:WOWEngine;
- private var wowFloor:WBoundArea;
- private var wowMiku:WSphere;
- private var wowRin:WSphere;
このようにして宣言したWOWEngine関連のメンバを、次のように初期化する
- wow = new WOWEngine();
- wow.collisionResponseMode = wow.SELECTIVE;
- wow.addMasslessForce(new WVector(0, 0, 0));//常にかかり続ける力
- wow.damping = 1;
- wowFloor = new WBoundArea(FLOOR_WIDTH , FLOOR_HEIGHT , FLOOR_DEPTH);
- wowFloor.setPosition(0, FLOOR_HEIGHT / 2, 0);//位置
- wowFloor.elasticity = 1;//弾性
- wowFloor.friction = 0.050;//摩擦
- wow.setBoundArea(wowFloor);
物体を追加する
物理計算を行ってくれるWOWEngine自体の初期化が完了したら、そこに物体を加えていく。今回はミクとリンの2物体を追加すればよい。初期化時の
- private var wowMiku:WSphere;
- private var wowRin:WSphere;
を使う。以下は、かぐぁみねリンが床面に降り立つ→WOWEngineの物体定義の処理を行っている部分。
- Tweener.addTween(rin , { y:0 , time:4 , onComplete:function():void {
- wowRin = new WSphere(rin.x , rin.y , rin.z , 60 , false , 43 , 0.65);
- wow.addParticle(wowRin);
- }
- } );
物体を動かす
- private function wowMoveModel(target: displayObject3D , wowTarget:WSphere , point:Number3D):void {
- var dx:Number =0;
- var dz:Number = 0;
- var rad:Number = 0;
- if (target && wowTarget && point) {
- dx = target.x – point.x; //(1)
- dz= target.z – point.z; //(1)
- rad = Math.atan2(dx , dz) * 180 / Math.PI; //(2)
- target.rotationY = rad; //(2)
- wowTarget.velocity = new WVector(-1 * dx / 4 , 0 , -1 * dz / 4);//(3)
- }
- }
チュートリアル
- Your First WOW-Engine Application
- how to use boundArea
- how to use sphere and get position
- How to use plane, sphere & constraint
関連エントリ
- WOWEngineを使ってみた
- WOWEngineで、ミクとリンが跳梁跋扈!!
- WOWEngine+Away3Dを使ってFlex上で3D物理エンジンを試してみる
- WoW-Engineの学習ログ
- 3D物理演算エンジンWOWEngineとPapervision3D 2.0 GreatWhite
グーグルコード
Posted on Monday, 25th January 2010 by admin
Tags: 3Dエンジン, オープンソース, ライブラリ, 物理エンジン
Posted in Flash Project | Comments (0) | 718 views
