2008年 08月 23日
今更ですが Cube の マテリアルについてです。
ある面だけのマテルアルを変更したい。
という時はMaterialList を使用して 面毎に設定します。
Cubeの materialsList:String は
front, back, right, left, top, bottom & all.
になります。
指定しない部分は何もレンダリングされません。
package {
import flash.display.Sprite;
import org.papervision3d.objects.primitives.Cube;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.objects.primitives.Plane;
import flash.events.Event;
import org.papervision3d.view.Viewport3D;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.core.utils.Mouse3D;
import org.papervision3d.objects.DisplayObject3D;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.text.TextField;
import flash.events.MouseEvent;
import flash.display.DisplayObject;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
public class Pv3D_TEST extends Sprite
{
public var viewport :Viewport3D;
public var scene :Scene3D;
public var camera :Camera3D;
public var renderer :BasicRenderEngine;
public var obj3d :DisplayObject3D;
/**----------------------------------------------------------------------
* コンストラクタ
-----------------------------------------------------------------------*/
public function Pv3D_TEST() {
var text:TextField = new TextField();
text.width = this.stage.stageWidth;
text.y = this.stage.stageHeight/2 - text.height/2;
text.selectable = false;
text.defaultTextFormat = new TextFormat(null,16,null,null,null,null,null,null,TextFormatAlign.CENTER);
text.defaultTextFormat.align = TextFormatAlign.CENTER;
text.text = "クリックしてください";
this.addChild(text);
text.addEventListener(MouseEvent.CLICK , this.init);
}
/**----------------------------------------------------------------------
* init
* 初期化
-----------------------------------------------------------------------*/
public function init(evn:MouseEvent):void {
this.removeChild(DisplayObject(evn.currentTarget))
//このムービーのスケールモードを設定
this.stage.scaleMode = StageScaleMode.NO_SCALE;
this.stage.align = StageAlign.TOP_LEFT;
//3Dの初期設定
this.init3D();
//毎フレーム呼び出されるイベントを追加
this.addEventListener( Event.ENTER_FRAME, this.loop_Proc );
}
/**----------------------------------------------------------------------
* init3D
* 3Dの初期設定
-----------------------------------------------------------------------*/
public function init3D():void {
// ビューポートの作成
this.viewport = new Viewport3D(0, 0, true, true);
this.addChild( viewport );
//レンダラーの設定
this.renderer = new BasicRenderEngine();
//シーン作成
this.scene = new Scene3D();
//Cubeを作成
this.obj3d = new Cube(new MaterialsList(
{
front:new ColorMaterial(0xFF0000)
,back:new ColorMaterial(0x00FF00)
,right:new ColorMaterial(0x0000FF)
,left:new ColorMaterial(0xFF00FF)
,top:new ColorMaterial(0xF0000F)
,bottom:new ColorMaterial(0x0F0F0F)
}
));
this.scene.addChild(this.obj3d );
// カメラの作成
this.camera = new Camera3D();
this.camera.zoom = 3;
}
/**----------------------------------------------------------------------
* loop_Proc
* 毎フレーム呼び出される 関数
-----------------------------------------------------------------------*/
public function loop_Proc(event:Event):void
{
this.obj3d.rotationX ++;
this.obj3d.rotationY ++;
//レンダリング
this.renderer.renderScene(scene, camera, viewport);
}
}
}
投稿者: d5 22 : 08
更新日:2008-08-23 22:24:16
|
|
|
| |