Murayama blog.

プログラミング教育なブログ

rotationX,rotationY,rotationZ


3Dの空間というのがいまいちピンとこないので、
サンプルを作って動かしてみました。

package
{
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	import org.papervision3d.materials.ColorMaterial;
	import org.papervision3d.objects.primitives.PaperPlane;
	import org.papervision3d.view.BasicView;
	
	[SWF(backgroundColor="0x000000")]
	public class Sample7 extends BasicView
	{
		private var paperPlaneX:PaperPlane;
		private var paperPlaneY:PaperPlane;
		private var paperPlaneZ:PaperPlane;
		public function Sample7()
		{
			
			var randomColor:Number = Math.random() * 0xFFFFFF;
			
			var colorMaterial:ColorMaterial = new ColorMaterial(randomColor);
			colorMaterial.oneSide = false;
			
			paperPlaneX = new PaperPlane(colorMaterial, 2);
			paperPlaneY = new PaperPlane(colorMaterial, 2);
			paperPlaneZ = new PaperPlane(colorMaterial, 2);
			
			paperPlaneX.x = -300
			paperPlaneY.x =  0
			paperPlaneZ.x = 300
			
			scene.addChild(paperPlaneX);
			scene.addChild(paperPlaneY);
			scene.addChild(paperPlaneZ);
			
			startRendering()
		}
		
		override protected function onRenderTick(event:Event = null):void
		{
			// 奥に倒れるように回転する。ように見える。
			paperPlaneX.rotationX++;
			// 横に回転する。ように見える。時計まわり。
			paperPlaneY.rotationY++;
			// なんとも表現しにくい回転をする。
			paperPlaneZ.rotationZ++;
			renderer.renderScene(scene, _camera, viewport);
		}
	}
}


結果はこんなかんじ。


正直、まだしっくりこないかんじです。
たぶん、Camera3DとかViewport3Dとか調べればもう少しわかるはず、、だと信じる。