In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

基本図形(Cube)の4方向表示

基本図形(Cube)の4方向表示
* use papervision3d
Get Adobe Flash player
by katan_t 28 Feb 2009
/*
* 基本図形(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);//描画
		}
	}
}