articles

2009 年 6 月 18 日

Papervision3D簡単なサンプル

CATEGORYactionscriptPapervision3D   TAG 11:28 AM
/*
ポイント
1.BasicViewをCAMERA3Dで作成
2.BasicView.startRendering()で描画開始
3.cameraのターゲットを変更、破棄
4.ターゲットなし状態でのカメラ移動
*/

import org.papervision3d.view.BasicView;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.cameras.Camera3D;

var world=new BasicView(0,0,true,false,"CAMERA3D");
addChild(world);


var obj_list=new Array();//球体を格納する配列
var btn_container=new Sprite();
btn_container.x=10;
btn_container.y=stage.stageHeight-30;
addChild(btn_container);

//3D空間にそれを貼り付ける
for (var i=0; i<4; i++) {
	//半径100、縦8分割、横8分割のボール(Sphere)を作る
	var obj=new Sphere(null,100,8,8);
	obj.x=i*300;
	world.scene.addChild( obj);
	obj_list.push(obj);


	//ターゲットを変更するボタンを作成
	var btn=new Sprite();
	btn.name="btn"+i;
	btn.graphics.beginFill(0x888888);
	btn.graphics.drawRect(0,0,80,20);
	btn.x=85*i;
	var textfield=new TextField();
	textfield.text=i;
	textfield.mouseEnabled=false;
	btn.addChild(textfield)
	
	
	btn_container.addChild(btn);
	btn.addEventListener(MouseEvent.CLICK,btnHandler);
}

//表示スタート
world.startRendering();

addEventListener(Event.ENTER_FRAME,enterFrame);

function enterFrame(event) {
	world.camera.x=(mouseX-stage.stageWidth/2)*3;
	world.camera.y=(stage.stageHeight/2-mouseY)*3;
	trace(world.camera.x,world.camera.y,world.camera.z);
}

function btnHandler(event) {
	var _name=event.target.name.substr(3,4);
	trace(_name);
	world.camera.target=obj_list[_name];
}

//ターゲットをなしにするボタン
btnNull.addEventListener(MouseEvent.CLICK,cameraTargetNullHandler);
function cameraTargetNullHandler(event) {
	trace("ターゲット破棄");
	world.camera.target=null;
	world.camera.rotationX=0;
	world.camera.rotationY=0;
	world.camera.rotationZ=0;
}