基本図形(Cube)の4方向表示
基本図形(Cube)の4方向表示
* use papervision3d
/*
* 基本図形(Cube)の4方向表示
* use papervision3d
*/
package {
//必要なクラスのimport
import flash.display.Sprite;
import org.papervision3d.view.Viewport3D;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.objects.primitives.Cube;
import flash.events.Event;
import org.papervision3d.materials.BitmapColorMaterial;
import org.papervision3d.materials.utils.MaterialsList;
public class Sample07 extends Sprite { //Spriteクラス継承
public var viewport1:Viewport3D;//前方からの表示用
public var viewport2:Viewport3D;//上方からの表示用
public var viewport3:Viewport3D;//下方からの表示用
public var viewport4:Viewport3D;//後方からの表示用
public var scene:Scene3D;
public var camera1:Camera3D;//前方からの表示用
public var camera2:Camera3D;//上方からの表示用
public var camera3:Camera3D;//下方からの表示用
public var camera4:Camera3D;//後方からの表示用
public var renderer:BasicRenderEngine;
public var cube:Cube;
private var top_bcm:BitmapColorMaterial = new BitmapColorMaterial(0xff0000 , 1);
private var left_bcm:BitmapColorMaterial = new BitmapColorMaterial(0x00ff00 , 1);
private var right_bcm:BitmapColorMaterial = new BitmapColorMaterial(0x0000ff , 1);
private var bottom_bcm:BitmapColorMaterial = new BitmapColorMaterial(0xffff00 , 1);
private var front_bcm:BitmapColorMaterial = new BitmapColorMaterial(0x00ffff , 1);
private var back_bcm:BitmapColorMaterial = new BitmapColorMaterial(0x888888 , 1);
//コンストラクタ
public function Sample07() {
init();//初期化関数開始
}
//初期化関数
public function init():void{
//Viewport3Dインスタンスのサイズは全体を四分割したものにする
viewport1 = new Viewport3D(stage.stageWidth / 2 , stage.stageHeight / 2);
viewport2 = new Viewport3D(stage.stageWidth / 2 , stage.stageHeight / 2);
viewport3 = new Viewport3D(stage.stageWidth / 2 , stage.stageHeight / 2);
viewport4 = new Viewport3D(stage.stageWidth / 2 , stage.stageHeight / 2);
//Viewport3Dインスタンスの位置の決定
viewport1.x = 0;//左上
viewport1.y = 0;//左上
viewport2.x = stage.stageWidth / 2;//右上
viewport2.y = 0;//右上
viewport3.x = 0;//左下
viewport3.y = stage.stageHeight / 2;//左下
viewport4.x = stage.stageWidth / 2;//右下
viewport4.y = stage.stageHeight / 2;//右下
//Viewport3Dインスタンスを表示ツリーに追加
addChild(viewport1);
addChild(viewport2);
addChild(viewport3);
addChild(viewport4);
renderer = new BasicRenderEngine();
scene = new Scene3D();
//BitmapFileMaterialを引数として渡す
cube = new Cube(new MaterialsList({top:top_bcm , left:left_bcm , right:right_bcm , bottom:bottom_bcm , front:front_bcm , back:back_bcm}) , 300 , 300 , 300);
scene.addChild(cube);
//Camera3Dインスタンスの生成
camera1 = new Camera3D();
camera2 = new Camera3D();
camera3 = new Camera3D();
camera4 = new Camera3D();
//カメラの位置の決定
//orbitはx軸に対しての回転方向とy軸に対しての回転方向を指定する
//基準は上方だということに注意
//引数に0を使うとうまく表示されない様子
camera2.orbit(0.1 , 0.1 );//上方
camera3.orbit(180 , 0.1 );//下方
camera4.orbit(90 , 90 );//後方
addEventListener(Event.ENTER_FRAME , onEnterFrame);//ENTER_FRAMEイベント定義
}
//ENTER_FRAME時関数
public function onEnterFrame(event:Event):void {
cube.yaw(5);//回転軸に沿って回転
renderer.renderScene(scene , camera1 , viewport1);//描画
renderer.renderScene(scene , camera2 , viewport2);//描画
renderer.renderScene(scene , camera3 , viewport3);//描画
renderer.renderScene(scene , camera4 , viewport4);//描画
}
}
}