Flash Player および AIR ランタイムでの 3D 表示オブジェクトについて

Flash Player 10 以降、Adobe AIR 1.5 以降

Flash Player 10 よりも前の Flash Player と、Adobe AIR 1.5 よりも前の Adobe AIR の場合、表示オブジェクトには 2D 平面上の配置に使用する x および y プロパティがあります。Flash Player 10 および Adobe AIR 1.5 からは、すべての ActionScript 表示オブジェクトに、そのオブジェクトを z 軸に沿って配置するための z プロパティがあります。一般に、このプロパティは奥行きまたは距離を示すために使用されます。

Flash Player 10 および Adobe AIR 1.5 から、3D エフェクトのサポートが導入されています。ただし、表示オブジェクトの性質は平面です。MovieClip オブジェクトや Sprite オブジェクトなどの各表示オブジェクトは、最終的に自身を単一平面上に 2 次元でレンダリングします。3D 機能を使用すると、これらの平面オブジェクトを 3 次元で配置、移動、回転および変換することができます。また、3D ポイントを管理し、2D の x, y 座標に変換して、3D オブジェクトを 2D ビューに投影することもできます。これらの機能を使用して、多くの種類の 3D エクスペリエンスをシミュレートすることができます。

ActionScript で使用される 3D 座標系は、他の座標系と異なります。ActionScript で 2D 座標系を使用する場合、x 軸に沿って右に移動すると x の値が増加し、y 軸に沿って下に移動すると y の値が増加します。3D 座標系は、これらの規則を保持し、視点から遠ざかる方に移動したときに値が増加する z 軸を追加します。

ActionScript 3D 座標系の x、y および z 軸の正の方向。
A.
+ Z 軸

B.
原点

C.
+X 軸

D.
+Y 軸

注意: Flash Player および AIR は、3D を常にレイヤーで表現することに注意してください。つまり、オブジェクト A が表示リストでオブジェクト B の前にある場合、2 つのオブジェクトの z 軸値に関係なく、Flash Player または AIR では常に A が B の前にレンダリングされます。表示リスト順序と z 軸順序の間のこの矛盾を解決するには、 transform.getRelativeMatrix3D() メソッドを使用して 3D 表示オブジェクトのレイヤーを保存してから、再び並べ替えます。詳しくは、 Matrix3D オブジェクトを使用した表示の並べ替え を参照してください。

次の ActionScript クラスでは、新しい 3D 関連機能がサポートされます。

  1. flash.display.DisplayObject クラスには、 z プロパティと、3D 空間の表示オブジェクトを操作するための新しい回転および拡大/縮小プロパティがあります。 DisplayObject.local3DToGlobal() メソッドは、3D ジオメトリを 2D 平面に投影する単純な方法を提供します。

  2. flash.geom.Vector3D クラスは、3D ポイントを管理するためのデータ構造として使用することができます。ベクター数式もサポートします。

  3. flash.geom.Matrix3D クラスでは、回転、拡大/縮小、平行移動など、3D ジオメトリの複雑な変換がサポートされます。

  4. flash.geom.PerspectiveProjection クラスでは、3D ジオメトリを 2D ビューにマッピングするためのパラメーターが制御されます。

ActionScript で 3D イメージをシミュレートするアプローチは 2 つあります。

  1. 3D 空間に平面オブジェクトを配置およびアニメーション化します。このアプローチでは、表示オブジェクトの x、y および z プロパティを使用して表示オブジェクトをアニメーション化するか、DisplayObject クラスを使用して回転および拡大/縮小プロパティを設定します。DisplayObject.transform.matrix3D オブジェクトを使用して、より複雑な動きを実現することができます。DisplayObject.transform.perspectiveProjection オブジェクトでは、表示オブジェクトが 3D 遠近法で描画される方法をカスタマイズします。主に平面から構成される 3D オブジェクトをアニメーション化する場合は、このアプローチを使用します。このアプローチの例として、3D イメージギャラリや、3D 空間に配置された 2D アニメーションオブジェクトがあります。

  2. 3D ジオメトリから 2D 三角形を生成し、これらの三角形をテクスチャ付きでレンダリングします。このアプローチを使用するには、最初に 3D オブジェクトに関するデータを定義および管理してから、データをレンダリングするために 2D 三角形に変換する必要があります。ビットマップテクスチャをこれらの三角形にマップすることができ、三角形は Graphics.drawTriangles() メソッドを使用してグラフィックスオブジェクトに描画されます。このアプローチの例には、ファイルからの 3D モデルデータのロードや画面上でのモデルのレンダリング、または三角形メッシュとしての 3D テレインの生成と描画があります。