<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
	creationComplete="init()" width="420" height="260">
	<mx:Script>
		<![CDATA[
			import org.papervision3d.materials.utils.MaterialsList;
			import org.papervision3d.materials.BitmapFileMaterial;
			import org.papervision3d.materials.ColorMaterial;
			import org.papervision3d.objects.primitives.Cone;
			import org.papervision3d.objects.primitives.Cube;
			import org.papervision3d.objects.primitives.Plane;
			import org.papervision3d.objects.DisplayObject3D;
			import org.papervision3d.cameras.FreeCamera3D;
			import mx.core.UIComponent;
			import org.papervision3d.render.BasicRenderEngine;
			import org.papervision3d.view.Viewport3D;
			import org.papervision3d.scenes.Scene3D;
		
			private var myScene:Scene3D;
			private var myCamera:FreeCamera3D;
			private var myViewport:Viewport3D;
			private var myRenderer:BasicRenderEngine;
			private var rootNode:DisplayObject3D;
		
			private var cube:Cube;
		
			private function init():void{
				//ＵＩコンポーネント作成
				var myNestingComponent:UIComponent = new UIComponent();
				addChild(myNestingComponent);
				myViewport = new Viewport3D(420, 260, false, false);
				myNestingComponent.addChild(myViewport);
				setup();
		
				this.addEventListener(Event.ENTER_FRAME, renderLoop);//イベントリスナー登録
		
			}
		
		
			private function setup():void{
			
				myScene = new Scene3D();				//シーン生成
				myRenderer = new BasicRenderEngine();	//レンダリング専用クラス
				myCamera = new FreeCamera3D;				//カメラオブジェクト生成
				myCamera.zoom = 3;						//カメラズーム
				myCamera.focus = 500;					//カメラフォーカス
				rootNode = new DisplayObject3D("rootNode");	//ルートノード
				myScene.addChild(rootNode);
				
				/* Planeの作成 */				
				// マテリアルの作成
				var planeMaterial:BitmapFileMaterial = new BitmapFileMaterial("img/ms.jpg");
				planeMaterial.doubleSided = true;
				planeMaterial.smooth = true;
				
				// オブジェクトの作成
				var plane:Plane = new Plane(planeMaterial, 48, 45, 1, 1);
				rootNode.addChild(plane);
				
				
				
				/* Cubeの作成 */
				// マテリアルの作成
				var cubeMaterials:MaterialsList = new MaterialsList({
					front: new BitmapFileMaterial("img/ai.jpg"),
					back: new BitmapFileMaterial("img/fl.jpg"),
					right: new BitmapFileMaterial("img/dw.jpg"),
					left: new BitmapFileMaterial("img/ps.jpg"),
					top: new BitmapFileMaterial("img/air.jpg"),
					bottom: new BitmapFileMaterial("img/ms.jpg")
				});
				
				// オブジェクトの作成
				cube = new Cube(cubeMaterials, 50,50,50);
				cube.x = 100;
				rootNode.addChild(cube);
				
				
				
				/* Coneの作成 */
				// マテリアルの作成
				var coneMaterial:ColorMaterial = new ColorMaterial(0xcc0000);
				
				// オブジェクトの作成
				var cone:Cone = new Cone(coneMaterial, 50, 50);
				cone.x = -100;
				rootNode.addChild(cone);

			
			
			
			}
		
			//回転してレンダリング
			private function renderLoop(myEvent:Event):void{
				myCamera.rotationZ += 5;
				cube.rotationX += 10;
				rootNode.rotationY += 5;
				myRenderer.renderScene(myScene, myCamera, myViewport);
			}
				
		]]>
	</mx:Script>
</mx:Application>