新 3D クラス開発日記(4) ~ パッケージ<1> Aq3D.core ~
2007/02/05 21:30 - AS3.0
今回からは各パッケージとクラスについての話です。
今回は Aq3D.core です。
Aq3D.core
3D 表現の基礎要素に関するクラスのパッケージで、以下の 3 つのクラスが属しています。
Vertex
頂点の定義クラスです。
- v
- 初期配置座標の Vector オブジェクト
- face
- この頂点に割り当てる表示オブジェクト
今後紹介するサンプルでは基本的にライブラリに登録した MovieClip を割り当てています
Vertex クラスはその内部で、以下の二つの座標を Vector オブジェクトの形で生成・保持します。
- worldCoordinate : 静止時座標を退避したもの
- transCoordinate : ExMatrix インスタンスによる移動を反映した座標を保持するもの
transCoordinate の座標から得られるスクリーン座標と透視変換適用後のスケールによって、face は表示されます。
worldCoordinate を変更すると、Fomation のように、途中で頂点の編隊を変えることができます。
Poligon
面の定義クラスです。
- vertices
- この面を構成する各頂点である Vertex オブジェクトを格納した配列
- face
- この面に割り当てられる表示オブジェクト
face をコンテナとして、lineTo や BeginFill の使用、もしくは BitmapData 貼付により面を可視化します
今後紹介するサンプルでは基本的にルートタイムラインでスクリプト生成した Shape を割り当てています
- texture
- BitmapData 貼り付け時に使用する bitmapData
Poligon クラスはその内部で、Vertex クラスと同様に worldCoordinate と transCoordinate の二つの Vector オブジェクトを生成します。 Z ソート用にはこの座標を使用します。
ScreenPoint
ワールド座標をスクリーン座標に変換し、その値をプロパティとして保持するクラスです。
このクラスは計算フィルターとして設計しました。 よってコンストラクタでは引数を取りません。
calculate メソッドの実行によりプロパティを更新するようになっています。
- v
- 変換元の三次元座標
基本的に Vertex 、Poligon 両クラスで説明した transCoordinate が該当します
- vp
- この 3D 表現全体の視点
視点 / ( 視点 + z 座標 ) の公式から透視変換係数を求め、スクリーン座標を計算します。 また求めた透視変換係数を z として保持もします。
この程度の処理ならわざわざクラスにしないで Objecct{} でもいいのかなぁとも考えましたが、 そうすると、透視変換係数を求める計算式があちこち分散して、なんかウザくなりそうな予感がしたのでクラスにしました。