Papervision3d はじめの9歩 Material ShadedMaterial
FlatShadeMaterialは、ColorMaterialの陰影つけられる位置づけという感じで捉えたほうがいいのかな?
じゃぁ、BitMapMaterialに陰影つけるにはどーすればいいの!っていう時は、ShadedMaterialを使えばいいらしい。
Shaderは陰影をつける方法:
第2引数のShaderには色々種類があってこのShaderによって陰影のつき方がかわってくるらしい。
イメージ:
画像データ(BitMapMaterial)+陰影をつける方法(Shader(ライト+影の色の設定))
で作ったマテリアルがShadedMaterialというイメージかな?
メモ:
shaderについてはまた今度やろう。なんかこの陰影のつき方はかかり具合が厄介らしい。
セグメントの数と、影の色で色々大変みたいです。

じゃぁ、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; } } } |
