AS2版PV3Dはどうなのか
実務レベルでPV3Dを使おうとした時に必要性が出てくるかもしれないと勝手に素振りして、AS2版だとどの程度までイケるのか実際ある程度触って調べてみた。つい最近リビジョンが上がったりして開発チーム的にはまだ切り捨てるつもりは無さそうだけど、結論としては「AS3版使っとけ」に尽きる。以下、致命的だと感じたオレ向けメモ。
劇的に重い
頂点数が増えると差が歴然。
DisplayObject3Dをツリー構造にできないっぽい
AS3版は
var rootNode:DisplayObject3D = new DisplayObject3D ( "rootNode" );
var planeObj1:Plane = new Plane (material, 100,100);
var planeObj2:Plane = new Plane (material, 100,100);
rootNode.addChild (planeObj);
rootNode.addChild (planeObj2);
みたいな感じで、親オブジェクトにaddChildすることでツリー構造になる。
この状態で
rootNode.rotationY += 1;
なんてことをすれば、rootNodeの原点を中心に2つのplaneObjをまとめてY軸回転できる。これが、AS2でも出来ると思ってたら出来なかった。不便なうえに、オブジェクトの個数分回転処理が必要になるからパフォーマンスにも影響が出る(んだよきっと)。
verticesを制御できないっぽい
AS3版は
planeObj.geometry.vertices[n].x = hoge;
planeObj.geometry.vertices[n].y = fuga;
で頂点の制御ができるが、これもAS2だとダメ。
形状データを定義する時点で設定した数値を後で変更できないので、
中心点をずらしたい時は、あらかじめ中心点をずらした状態で形状を定義する必要がある。
※たぶん上2つの問題をなんとかしたい時、AS2版ではColladaを使うのがセオリーっぽい。ただ、Blenderで複数オブジェクトを含んだデータをオブジェクト結合せずにCollada出力すると、なぜか1つしかオブジェクトが表示されない。オブジェクト結合した状態で出力すれば問題ないけど、今度は複数のオブジェクトを個別に動かすことができなくなる。3dsMAX買うしかねーのか!?(無理)
movexxx()、pitch()、roll()、yaw()、lookAt()など姿勢制御系のメソッドがごっそり無い
もうとにかくAS3版で便利に使ってたメソッドがほとんど無い。何をするにも苦労を強いられそう。
他にもY軸が下向きだったりとか出前のツケとかプロパン屋の支払いとかいろいろあるけど、AS3版なら簡単にできることをわざわざAS2版で技巧を駆使してまで使う意味無さげ。よほどの理由がない限りAS3の方向で。