Alternativa3Dには、プリミティブパッケージが用意されており、これらを使うと非常に簡単にメッシュを作成することができます。
しかし、これらのクラスでは、複雑なメッシュを作ることが出きません。そこでプリミティブを利用せず、自由なメッシュを作成したいときは、createVertex, createFace, createSurfaceを利用します。
プリミティブに関する記事は、Alternativa3Dを試してみる Part.02 : PrimitiveとMaterialが詳しいです。
createVertex
まず始めにcreateVertexを利用してメッシュの頂点を作成します。
次の例では、頂点を4つ作成しています。
var mesh:Mesh = new Mesh();
mesh.createVertex(0, 0, 0, "v1");
mesh.createVertex(100, 0, 0, "v2");
mesh.createVertex(100, 100, 0, "v3");
mesh.createVertex(0, 100, 0, "v4");
第4引数に、その頂点を示す固有のIDを割り振ります。AS Docsではid:Object = null
と示されています。このIDは、後に頂点へアクセスするときに利用します。
createFace
頂点情報を作成したら、その頂点をひとつのFaceとして集約します。
mesh.createFace(["v1", "v2", "v3", "v4"], "f0");
第一引数に、頂点情報の配列を渡します。この頂点情報とは、先ほど createVertex で割り振ったIDです。createVertexと同じく、このFaceにも固有のIDを割り振る必要があります。フェイスへのアクセスにIDが必要なのもまったく同じことです。
もし、マテリアルにTextureMaterialを利用する場合は、UVマッピングをする必要があります。その場合は、【Alternativa3D】setUVsToFaceとTextureMaterialでビットマップ画像をテクスチャとして利用を参照してください。
createSurface
1つ、または、複数のフェイスを1つのサーフェスとして更に集約します。
mesh.createSurface(["f0"], "s0");
フェイスを作成した時と同じく、第一引数にフェイス情報の配列を、第二引数には、このサーフェスのIDを割り振ります。
setMaterialToSurface
サーフェイスを作成したら サーフェスにマテリアルを渡しましょう。Mesh#setMaterialToSurfaceを利用します。
mesh.setMaterialToSurface(new FillMaterial(0xffffff), "s0");
第一引数にマテリアルを、第二引数にマテリアルを適応するサーフェスのIDを渡します。
これらを利用した簡単なデモを作成しました。あわせてご覧ください。createVertex, createFace, createSurface | wonderfl build flash online