新 3D クラス開発日記(18) ~ 面を使った 3D 表現<5> Bitmap ~
2007/03/04 21:57 - AS3.0
面を使った 3D 表現の最後は Bitmap です。
Bitmap
これは面に対してテクスチャーを貼りつけることで 3D 表現を実現します。 BitmapData と MovieClip をテクスチャーとして適用することができます。
Aq3D.skin.BitmapSkin は今までの 3 つとはアプローチが全く異なります。 そのため、コンストラクタ、 render メソッドともに他とはずいぶん違うものになっています。
コンストラクタでは、対象のテクスチャーが BitmapData か MovieClip かで選別をおこないます。 MovieClip だった場合は、空の BitmapData を生成し、そこに MovieClip を draw します。
そして DistortImage オブジェクトを生成します。
render メソッドは非常に簡単な造りになっています。
面を構成する頂点のスクリーン座標を計算し、DistortImage オブジェクトに丸投げします。
スキンタイプ別変数 info は DistortImage オブジェクトのコンストラクタ引数である seg になります。
ビットマップの歪曲は面を三角形に区切ることで実現しますが、 その三角形に分割するためのセグメント数を指定するのが変数 seg です。
seg は 3 ~ 4 くらいにしといた方が無難でしょう。
ここで唐突に出てきた DistortImage ですが、 これは sandy のパッケージクラスである DistortImage を自分にとって分かりやすくリライトしたものです。
3D 表現に限らず、いろいろな場面でかなり応用が利くクラスと思われるので、com.Aquioux.AqGeom パッケージに収めました。
sandy の開発者が最初に DistortImage を発表したときも、3D 用としてではありませんでした。
テクスチャーが BitmapData
|
テクスチャーが MovieClip
|
- ソース( bitmap.zip 81.0 KB )
次回からは DistortImage も格納されている com.Aquioux.AqGeom パッケージについての説明に移ります。
参考サイト