Alternativa3Dを試してみる Part.02 : PrimitiveとMaterial

今回からはAlternativa3Dの技術的な解説に入っていきます。まずは基礎編ということでPrimitive(立方体や球などの3Dオブジェクト)とMaterial(3Dオブジェクトの表面)から。

Primitiveの一覧

Alternativa3D : Primitive

Alternativa3D : Primitive

今回はSWFでなくキャプチャ画像で。クリックすれば拡大ができます。ソースコードはこんな感じです。
[source:javascript]
scene.root.addChild(new Box(100, 100, 100, 3, 3, 3));
scene.root.addChild(new Cone(100, 100, 0, 1, 12));
scene.root.addChild(new Sphere());
scene.root.addChild(new GeoSphere());
scene.root.addChild(new Plane(150, 150, 3, 3));
scene.root.addChild(new GeoPlane(150, 150, 3, 3));
[/source]
引数はサイズやセグメント(レンダリングの分割数)です。気になったのはCylinderがないことですが、Coneの頂点半径を底辺の大きさとあわせれば、きっと少しは代用できます。

SphereとPlaneに対して、GeoSphereとGeoPlaneというのがありますが、頂点と分割方法が違っているみたいです。PV3DでいうならばSphereとGeoSphereが、PlaneとGeoPlaneが対応してますので、Alternativa3DのSphereとPlaneは一つの違いということになります。

Materialの一覧

Alternativa3D : Material

Alternativa3D : Material

GeoSphereにMaterialを貼付けてみました。こちらも画像で(クリックで拡大できます)。ソースコードはこんな感じです。
[source:javascript]
var o:GeoSphere = GeoSphere(scene.root.addChild(new GeoSphere()));
o.cloneMaterialToAllSurfaces(new WireMaterial(1, 0xFFFFFF, 1, BlendMode.NORMAL));
//o.cloneMaterialToAllSurfaces(new DevMaterial(DevMaterial.BSP_DEPTH, 16777215, 100, false, 65535, 0, 255, 1, BlendMode.NORMAL, -1, 0));
//o.cloneMaterialToAllSurfaces(new FillMaterial(0x00FFFF, 1, BlendMode.NORMAL, -1, 0));           
//o.cloneMaterialToAllSurfaces(new TextureMaterial(new Texture(new MyImage().bitmapData), 1, true, false, BlendMode.NORMAL, -1, 0, TextureMaterialPrecision.BEST));
[/source]
特徴的なのはワイヤーフレーム以外のMaterialでも引数でブレンドモードやワイヤーフレームの太さを設定できることです。が、必要ないので今回のデモではワイヤーフレームはオフにしています。

順に説明まとめてみるとこんな感じです。

  • WireMaterial ワイヤーフレームマテリアル
  • FillMaterial 単色マテリアル
  • DevMaterial フラットシェーディング風マテリアル(ちょっと違うかも)
  • TextureMaterial ビットマップマテリアル

他にSpriteTextureMaterialというのがありましたが、バージョン5.5からの新機能だそうで、SurfaceMaterialを継承していないので同じ貼付け方をしようとするとエラー発生して確認できず。ここはASDoc以外の情報源が皆無なので今回は見送り、分かり次第追記したいと思います。

ということで今日はここまで。

投稿者 : 池田 泰延

BookMark

ブックマークはこちらからどうぞ。

このエントリーをはてなブックマークに追加