この前に「as3mathlib: ActionScript3の各種数学演算のルーチン集」で各種数学演算のルーチン集を紹介しました。今回はActionScript3で提供される「Away3D」というFlashの3D描画エンジンです。Away3Dは、PV3Dを拡張してテクスチャのパースペクティブ補正や、Z-buffer的実装したりしてたAlexander Zadorozhny氏による、PV3Dベースの3Dエンジンです。
Flashの開発者に対して、3Dを表示しなければいけないときが多いと思います。Away3Dの様のライブラリを使うと効率的にアップできるよね。公式サイトにサンプルソースがいっぱいがあるので、初めて3Dを扱うと付属のサンプルを表示させるところからやってみたほうがいいと思います。
以下は「Away3D」を利用して作った物の一つです。
公式サイトにはサンプルがいっぱいがあるですが、以下は一部の使用方法の羅列です。
物体の表示、移動
表示させる物体は全てObject3Dクラスを継承している
Object3Dクラスを移動させるにはmoveFoward(), moveBackward(), moveUp(), moveDown(), moveRight(), moveLeft(), moveTo()あたりを使う
物体を回転させるには、rotationX, rotationY, rotationZの値を増減させる
カメラ
カメラもObject3Dを継承したCamera3Dオブジェクトなので、Object3Dと同じメソッドで移動させることができる
カメラは移動しただけじゃ向いてる方向は変わらないので、どこかを向かせたいときはlookAt()メソッドを使う
moveTo()やlookAt()で指定する引数はNumber3Dオブジェクト(x,y,zの値だけを持つオブジェクト)
Object3Dの座標もこのNumber3D型のpositionという変数で持っている
なので、カメラを特定の方向に向けたければ view.camera.lookAt(new Number3D(100, 200, 300));
cubeの方を向かせたければ view.camera.lookAt(cube.position);
物体の色
new Cube({material:”grey#black”,・・・ ここで指定するmaterialで物体の色や特性を決める
単純に色だけ指定する場合は、”面の色#線の色”
光源を反映する物体にする場合は、new ShadingColorMaterial(何かの色)
光源
光源はLight3Dオブジェクトを配置
光源によって色が変わるオブジェクトは、 material に new ShadingColorMaterial(0xFF0000) とか指定
ちょっとはまった細かいところ
カメラをY軸上から(0,0,0)を向かせるとうまく表示されない (0,0,1)あたりにして回避
灰色は”gray”じゃなく”grey”で定義されてる
分からないこと
ある物体を見ながら回りこむ動きって出来るの?
moveRight(target.position);の直後にlookAt(target.position);するとそれっぽくなるけど違うような・・・
地道に座標計算するしかないのか
関連リンク
http://away3d.com 公式サイト
Posted on Monday, 27th April 2009 by admin
Tags: 3D, ActionScript, Away3D, Flash, エンジン
Posted in ActionScript, Flash Project | Comments (2) | 3,776 views

May 30th, 2009 at 5:32 pm
[...] 「Away3D: ActionScript3で提供されるFlashの3D描画エンジン」を含めて同じような3Dエンジンはいくつかあります。 [...]
January 12th, 2010 at 10:55 pm
[...] Blenderアニメーションで、以前紹介したPapervision3DとAway3Dなどと併用出来ます。合わせて活用できればいろいろ超カッゴイものを作れるね。Cast3DってLGPLなんだなあ。商用も可能のようです。 [...]