きまぐれに FP10 のネイティブ 3D 表現
2009/01/10 18:24 - AS3.0
まだちゃんと検証したわけではないのですが、FP10 のネイティブ 3D 表現は、Astro 時代のものと正式リリース後では多少違いがあるようです。
PerspectiveProjection が Astro 時代は納得できない動きをしていたんですが、今触ってみると期待どおりに動いています。
納得できない動きに関しては Astro de 3D(14) PerspectiveProjection は放棄<5> をご覧ください。ですが、現行の FlashPlayer10(10,0,12,36)で見ようとすると上記ページの swf が見られません。swf へのコンパイルの過程なのか、それとも FlashPlayer10 自身なのかは分かりませんが、Astro 時代はバグがあって、正式リリース後はそのバグが取れたような感じ?
何で PerspectiveProjection を触っていたかというと、WonderFl 用のコードを書いていたのです。 自分用にネイティブ 3D 表現の基本フォーマットを整備しておこうかなと。
でも基本的なネイティブ 3D 表現はもういろいろと投稿されているので、基本フォーマットをそのまま投稿してもあまり有意義でないなぁ、と考え直しちょっとヒネりました。
透明な球体の緯度経度上に等間隔でポイントがあり、そのポイントにあたかも丸いシールを貼り付けたかのような 3D 表現です。 シールの表は山吹色、裏は赤色になっています。
ところで上記のコードは ENTER_FRAME 毎に、各頂点すべてで Matrix3D や Vector3D を使って投射変換をおこない、まず頂点の配置とサイズを整えます。 その後、球面に貼り付いているかのような表示にするために、scaleX と rotation を計算するということをしています。
前者はネイティブ 3D のコーディングなので良いとしても、後者は AS2 時代のテクニックでちょっと個人的に納得のいくコードになっていません。いろいろネイティブ風なコードを試みたものの失敗しました。
どなたか fork して添削していただけると幸いです。
ってゆーか、そもそもこのような見栄えなら何も、いちいち ENTER_FRAME 毎にひとつひとつ頂点を計算しなくても、頂点である丸の生成時に x、y、z の各座標と、rotation[X|Y|Z] を計算して配置し、ENTER_FRAME 時は頂点のコンテナを rotation[X|Y] で回転させれば事足りる気がするんですが、それについてもいろいろ試みたものの失敗しました。
この点もどなたか fork して添削していただけると幸いです。