Utils3D.projectVectors で 3D 表現の次なるステージへ(1)
2009/10/28 22:23 - AS3.0
ずいぶん前から ActionScript で 3D 表現をいろいろと扱って参りました。
もうその頃のデータは全部破棄してしまいましたが、AS2 時代から、本を読んだり、ソースを窺ったりしてきたわけです。
自作 3D ライブラリに挑戦してみたこともありました。一度ならず二度も三度も。 Papervision3D にも手をつけてみました。 自作の Matrix3D を作ったこともあります。
そして時は流れ、いよいよ ActionScript ネイティブで 3D 表現が可能となりました。 長年恋い焦がれた待望の機能が FlashPlayer10、そして Flash CS4 でついに実装されたのです。
新機能による 3D 表現をいろいろ試してみたところ、点を使った 3D 表現について着目した場合、「Matrix3D.transformVector() を使って座標を変換する」というところに辿りつきました。
ここでどん詰まりかなぁ、と長いこと感じていたんですが(理由は後述)、先だって wonderfl でとてもステキなコードを拝見し、さらに進化を遂げることができましたよ。バンザイ!
今回のエントリーは、それについて忘れないようにメモっておくという意味の記述になります。
今回の主役になるメソッドは Utils3D.projectVectors です。 書式は以下のとおり。
ヘルプをあまりよく読まないワタクシは、当初このメソッドは案外使いづらいものだとばかり思いこんでいました。
ちゃんと読んでいれば、実は使えるメソッドだということが理解できていた可能性があることを考えると、いいかげんではいけないなぁ、とコレで何度目になるんだ、という反省を繰り返すことしきり。
3D 表現をおこなうにあたってクリアしなければならない点として次の二つが考えられます。
- 遠近表現
- Z ソート
次回は、今まで Matrix3D.transformVector() を使って、どのようにそれら二つを実現していたのか、次々回は、Utils3D.projectVectors を使うことでどのようにそれら二つを実現するのか、ということについてお話しします。
シリーズ
- Utils3D.projectVectors で 3D 表現の次なるステージへ(4)
- Utils3D.projectVectors で 3D 表現の次なるステージへ(3)
- Utils3D.projectVectors で 3D 表現の次なるステージへ(2)