Astro de 3D(4) ~青春の蹉跌編~
2008/06/04 21:24 - Astro
今回から具体的な 3D 表現のコーディング作業に入ります。
いきなりアレもコレもと欲張るとワケわかんなくなるので、まず PerspectiveProjection は使わずに DisplayObject の座標プロパティと rotation[X|Y|Z] だけで組みますよ。
目指すゴールはマウスカーソル位置に従って動く立方体とします。立方体はステージ中央に配置。
まずは Papervision3D 的なアプローチでもって組んでみましょう。
Papervision3D には、プリミティブオブジェクトとして Cube が存在しますが、Plane を6枚生成してそれを組み合わせても立方体を作ることができますよね(ここら辺参照)。それと同じやり方でコーディング。
3D 空間として rootNode を生成。これが面オブジェクトのコンテナとなります。
子オブジェクトとして平面を6枚生成、rootNode に addChild します。
そして rootNode の rotation[X|Y|Z] メソッドを使って、rootNode そのものを回転させることで立方体それ自体が回転する、というこの淀みのない流れ。カンペキだ。 かの孔明ですら私の前では頭を垂れるに違いない。
Papervision3D では rootNode と各 Plane は DisplayObject3D でしたが、Astro においては、面が Shape オブジェクト、その面のコンテナが Sprite になります。
で、できたサンプルが↓
Zソートができておらぬ! 罠だ。これは孔明の罠だ!
何がどうダメで失敗したのか。 Zソートのアルゴリズムが間違っていたのか?
次回、「青春の蹉跌 解決編」に続く。