Wonderfulで始めるAlternativa3D

Surfaceごとにマテリアルを変える

これまで、Meshにマテリアルを貼り付ける場合、Mesh.cloneMaterialToAllSurfaces(material)メソッドを使用していましたが、これは全てのSurfaceにマテリアルをコピー(clone)して張り付けるものでした。
逆に、各Surfaceごとにマテリアルを張り分ける場合は、
Mesh.setMaterialToSurface(material,SurfaceID)メソッドを使用します。
なお、SurfaceのIDを使用しますので、あらかじめ知る必要がありますので、surfacesプロパティを使用して、確認しておきます。

			//Meshが持っているSurfaceの名前(id:String)を返す
			for (var id:String in box.surfaces) {
				trace(id);
				dbg.appendText(id+",");
			}

なお、Plane、Box、Coneの場合はSurfacesId固定になっていますので、以下のIDでアクセスできます。
Box:"front", "back", "left", "right", "top", "bottom"
Cone:"bottom", "side"(topRadiusが0以上の場合は"top"も追加されます。)
Plane:"front", "back"(twoSide、reverseの状況で、有無が変わります。)

今回はとりあえず簡単なBoxで塗り分けてみます。

			var box:Box = new Box(600,600,600);
			box.setMaterialToSurface(new FillMaterial(0x9999FF),'front');
			box.setMaterialToSurface(new FillMaterial(0xFF9999),'back');
			box.setMaterialToSurface(new FillMaterial(0x99FF99),'top');
			box.setMaterialToSurface(new FillMaterial(0x99FFFF),'bottom');
			box.setMaterialToSurface(new FillMaterial(0xFFFF99),'left');
			box.setMaterialToSurface(new FillMaterial(0xFF99FF),'right');

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

Adobe Flash Player を取得


.src
box.setMaterialToSurface(new FillMaterial(0x9999FF),'front');
と言う書き方をしていますが、今までのように
var material:FillMaterial= FillMaterial(0x9999FF)
box.setMaterialToSurface(material,'front');
といった書き方でも問題はありません。

一面だけ塗り替える場合等は、先に
cloneMaterialToAllSurfaces(material);
で全面を設定した後、
setMaterialToSurface(material,'front');
で差し替えるという事もできます。

			// プリミティブを作成します
			var box:Box = new Box(600,600,600);
			box.cloneMaterialToAllSurfaces(new FillMaterial(0x999999));
			box.setMaterialToSurface(new FillMaterial(0x9999FF),'front');

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

Adobe Flash Player を取得

.src

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のグロー、ブラー