ホーム > Material, Papervision3d > Papervision3d はじめの9歩 Material ShadedMaterial

Papervision3d はじめの9歩 Material ShadedMaterial

2009 年 6 月 7 日 コメントをどうぞ コメント
FlatShadeMaterialは、ColorMaterialの陰影つけられる位置づけという感じで捉えたほうがいいのかな?
じゃぁ、BitMapMaterialに陰影つけるにはどーすればいいの!っていう時は、ShadedMaterialを使えばいいらしい。

ShadedMaterial(material:BitmapMaterial, shader:Shader, compositeMode:int = 0)
material : BitmapMaterial
shader : Shader
shaderCompositeMode : int  shaderの合成モード

Shaderは陰影をつける方法:
第2引数のShaderには色々種類があってこのShaderによって陰影のつき方がかわってくるらしい。

イメージ:
画像データ(BitMapMaterial)+陰影をつける方法(Shader(ライト+影の色の設定))
で作ったマテリアルがShadedMaterialというイメージかな?

メモ:
shaderについてはまた今度やろう。なんかこの陰影のつき方はかかり具合が厄介らしい。
セグメントの数と、影の色で色々大変みたいです。

			var light:PointLight3D = new PointLight3D();
			var bmpMaterial:BitmapMaterial = BitmapMaterial(new BitmapFileMaterial("img/test1.jpg"));
			var flatShade:FlatShader = new FlatShader(light, 0x0000FF,0xFF8040);
 
			var shadedMaterial:ShadedMaterial = new ShadedMaterial(bmpMaterial, flatShade);
			var materialsList:MaterialsList = new MaterialsList( {
				all: shadedMaterial
			});
 
			cube = new Cube(materialsList, 200, 200, 200, 10, 10, 10);
			sphere = new Sphere(shadedMaterial,200,20,20);




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import org.papervision3d.lights.PointLight3D;
	import org.papervision3d.materials.BitmapFileMaterial;
	import org.papervision3d.materials.BitmapMaterial;
	import org.papervision3d.materials.ColorMaterial;
	import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
	import org.papervision3d.materials.shaders.FlatShader;
	import org.papervision3d.materials.shaders.ShadedMaterial;
	import org.papervision3d.objects.primitives.Cube;
	import org.papervision3d.materials.utils.MaterialsList;
	import org.papervision3d.objects.primitives.Sphere;
	import org.papervision3d.view.BasicView;
	import flash.display.BitmapData;
 
	[SWF(width = "640", height = "480", backgroundColor = "0xFFFFFF", frameRate = "24")]
 
 
	public class Main extends Sprite 
	{
		private var cube:Cube;
		private var sphere:Sphere;
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			var light:PointLight3D = new PointLight3D();
			var bmpMaterial:BitmapMaterial = BitmapMaterial(new BitmapFileMaterial("img/test1.jpg"));
			var flatShade:FlatShader = new FlatShader(light, 0xFF0080,0xFF8040);
 
			var shadedMaterial:ShadedMaterial = new ShadedMaterial(bmpMaterial, flatShade);
			var materialsList:MaterialsList = new MaterialsList( {
				all: shadedMaterial
				//back: new FlatShadeMaterial(light,0x00FFFF),
				//right: new FlatShadeMaterial(light,0x800080),
				//left: new FlatShadeMaterial(light,0xFFFFFF),
				//top: new FlatShadeMaterial(light,0x808000),
				//bottom: new FlatShadeMaterial(light,0xFF8000)
			});
 
			cube = new Cube(materialsList, 200, 200, 200, 10, 10, 10);
			sphere = new Sphere(shadedMaterial,200,20,20);
			sphere.x = -200;
			cube.x = 200;
 
			var basicView:BasicView = new BasicView(640, 480);
			basicView.scene.addChild(sphere);
			basicView.scene.addChild(cube);
 
			basicView.startRendering();
			addChild(basicView);
			addEventListener(Event.ENTER_FRAME, onFrameHandler);
		}
 
		private function onFrameHandler(e:Event):void 
		{
			cube.rotationX += 5;
			cube.rotationY += 4;
			cube.rotationZ += 3;
 
			sphere.rotationX += 5;
			sphere.rotationY += 4;
			sphere.rotationZ += 3;
		}
 
	}
 
}




Bookmark and Share

関連する投稿

  1. コメントはまだありません。
  1. トラックバックはまだありません。