Wonderfulで始めるAlternativa3D

入門編3. プリミティブ - Box

プリミティブは、Alternativa3Dに最初から用意されている、3Dオブジェクトの基本形体です。

Alternativa3Dで表現する3Dオブジェクトは、ほとんどが、メッシュ(Mesh)クラスで作成されます。
しかし、このメッシュを作成するには、
・すべての3D頂点を登録
・その頂点を使用して必要な面すべてを作成
・さらにその面に、UVマップ(マテリアルの貼り付け方向)を設定
・さらにさらに、その面をサーフェース(表面)として登録・・・
というとても面倒な過程を踏む必要があります。

それを、わずかな設定だけで簡単な形状のメッシュを作成できるようにしたのが、プリミティブクラスです。

alternativa.engine3d.primitiveパッケージクラスには、以下の6種類があります。

Box 四角い箱
Cone 円錐 or シリンダー
Plane 表・裏を持つ板
Sphere
   
GeoPlane ジオメトリーな板
GeoSphere
ジオメトリーな球

Coneが円錐とシリンダーを兼ねているのが特徴的です。
ちなみに、GeoPlaneGeoSphereは他の4種が四角ポリゴンで構成されているのに対し、 三角ポリゴンで構成されたメッシュです。

Box

四角い箱です。

インスタンスの生成時に以下の引数を指定できます。
Box(width:Number = 100, length:Number = 100, height:Number = 100, widthSegments:uint = 1, lengthSegments:uint = 1, heightSegments:uint = 1, reverse:Boolean = false, triangulate:Boolean = false)

width:Number、length:Number、height:Number
それぞれ幅、長さ、高さです。
次項の座標で解説しますが、Alternativa3Dの座標系は右手系のZが上下、Yが前後(奥行き)で考えられてます。その為、width(幅)、length(長さ・奥行き)、height(高さ)となっています。

widthSegments:uint, lengthSegments:uint, heightSegments:uint
それぞれ、幅、長さ、高さの分割数です。
分割数が大きくなると、処理に時間がかかるようになります。あまり無茶な分割にしない方いいです。
0を指定すると、エラーは出ませんがメッシュは作成されません。

reverse:Boolean
箱は外から見た面と、箱の中から見た面がありますが、Boxプリミティブはどちらかの面のみを生成します。defaultのreverse=falseでは、外から見た面を生成します。逆にreverse=trueで中から見た面を生成します。

triangulate:Boolean
Boxプリミティブは通常四角の面で生成されますが、この引数をtrueにすると、その四角をさらに対角線で分断した三角形で生成します。ちなみにtrueにしてもAlternativa3Dでは、あまりメリットはありません。というか、重くなるだけです。

以下はBasic Templateを使用し、それぞれの引数の動作がわかるようにしたサンプルです。
マテリアルは
var material:FillMaterial=new FillMaterial(0xCCCCCC,1,BlendMode.NORMAL,0,0x0000000);
を使用しています。

length(長さ)を、短くし、分割数を3にしたサンプル

var box:Box = new Box(600, 300, 600,3,3,3);

このページのコンテンツには、Adobe Flash Player の最新バージョンが必要です。

Adobe Flash Player を取得

上記の物を反転(reverse=true)にした物

var box:Box = new Box(600, 300, 600,3,3,3,true);

このページのコンテンツには、Adobe Flash Player の最新バージョンが必要です。

Adobe Flash Player を取得

さらに、三角分割(triangulate=turu)した物

var box:Box = new Box(600, 300, 600,3,3,3,true,true);

このページのコンテンツには、Adobe Flash Player の最新バージョンが必要です。

Adobe Flash Player を取得

ここで、ちょっと?と思う部分があると思います。

length(長さ)を短くしているのに、見た目は高さが短くなっていますね。これは、SampleTemplateのカメラの位置がz=-1000に配置してあり、そこから、boxを見ている為です。つまり、真下から上を見ている状態だからです。ちょっとややこしいですが、カメラとビューの項までは、このままで行きたいとおもいます。

 

Menu

入門編

初級編

7. Sprite3Dとは?

8. MovieClipMaterial

中級(インタラクティブ編)

1. インタラクティブなオブジェクト

2. 反応するモデルと反応しないモデル

3. サーフェースごとのマウスイベント

4. フェースごとのマウスイベント

中級(コントローラー編)

1. コントローラーとは?

2. コントローラーをカスタマイズ

3. 重力・衝突判定

4. LookAt

中級(カメラ&View編)

1. カメラZOOMとFOV

2. 複数のカメラとView

3. Viewのクリッピング

中級(メッシュ作成編)

1. 頂点を作成する

2. 面を作成する

3. 表面を作成する

4. UVを設定する

5. メッシュを作る

実践・応用編

1. 読み込んだ画像で絵本を作る

3. GoogleNexusOne

4. 3Dスロット

5. ルービックキューブ

実験編

1. 3dsの読み込みと操作

2. イラレで作ったpathを押し出す

3. 押し出しによるText3D

4. 自作のマテリアルクラスを作る

5. フラットシェーディングマテリアル

6. 衝突判定を利用した跳ね返り

7. Sprite3Dによるパーティクル表現

8. Sprite3Dでピクセルレンダー

9. Objectのグロー、ブラー