新 3D クラス開発日記(20) ~ 終わりに ~
2007/03/12 22:06 - AS3.0
新しい 3D クラスについての説明は、これで一通り終わりです。
最後に、現在の課題と今後の予定など。
課題
一つは問題点、もう一つは付け加えたい点です。
問題点
面を定義するクラス Poligon.as で現在未解決の問題点がひとつあります。
面のZソート用座標の計算方法についてです。
面を構成する頂点の数が3個または4個の場合は以下のように求めるのが正しい方法です。
- 3個の点を使ってベクトルを2個作る
- その2個のベクトルを使って外積値を計算
- その値をZソート用の座標とする
ところが頂点の数が5個以上になると、どうしたらいいのか分かりません。
現在は、「0番目の頂点ベクトル」と「( 全頂点 ÷ 2 ) 番目の頂点ベクトル」を加算し、その計算値を Vector.scale で 0.5 倍するということをしています。
過去の配布ソースでは、この辺がかなり混乱していて、配布時ごとに Poligon.as のコードが異なっています。
付け加えたい点
3D 表現というのは以下のステップを踏んで 3D を 2D に表現するらしいです。
- ワールド座標変換
- ビュー座標変換
- プロジェクション座標変換
- スクリーン座標変換
で、上記のサイトを見て分かったことは、私の 3D クラスにはカメラが欠けているってこと。
今後、手を加えるなら、カメラを付加したいと考えています。
今後の方向性
今後 3D 表現の作品を作るにあたって、私の進むべき方向性としては以下の二つが考えられます。
- このクラスを作りこむ
- オープンソースを利用する
現在、Flash で 3D 表現を実現するオープンソースがいくつか発表されています。
Papervison3D がかなり良さげ。
AS2.0 にしか対応していない sandy は食指が動かなかったんですが、Papervision3D はAS3.0 にも対応していることだし、開発者は私なんか足元にも及ばない神コーダーに違いないだろうし、もう自作のクラスは廃棄して、こっちに鞍替えするかも知れません。