FLASHでの3Dデータの表示に挑戦しています。今回はテクスチャを貼りました。
動作確認
マウスでドラッグすると回転します。
「FULL」ボタンを押すとフルスクリーンになり、もう一度押すと戻ります。
説明
3Dモデリングソフト「
メタセコイア」のサンプルデータを拝借しました。
テクスチャとしてPNG画像を読み込んで、
beginBitmapFill→drawTriangles→endFillの流れで描画しています。
drawTrianglesはX,Y,Z,U,V,頂点インデックスの全パラメータを基本型配列のみで受け付けるという、ちょっとビックリなメソッドです。構造体のようなものはなく、恐らく連続したメモリ領域を処理するようになっているんでしょう。
今後の展開
描画ロジックを実装しながら困ったことに気付きました。zソートを行ってしまうとマテリアルソートができなくなりパフォーマンスが落ちてしまいます。
今回のデータは1つのテクスチャが全ての面に貼られているので問題ありませんでしたが、そうでないデータが大半ですし、ゲームのように複数のオブジェクトを登場させにくくなります。
それでもマテリアルが切り替わるタイミングでbeginBitmapFillを呼びなおせば多少はマシになるのでしょうが、drawTrianglesは配列の部分指定ができないので呼び出すたびに新規の配列を作らなければなりません。
とりあえず、パフォーマンスが落としてでも複数マテリアルや光源適用なんかを実装していこうと思います。