Away 3Dを使ってみる(3)

「そろそろ、目に見えて楽しいものにしていきたい」と考えて、「地球」にしてみた。

そこで、

【今回の目的】

・地球を回す

【今回のサンプル】
ここ(http://system.logosware.com/blogimag/0520/sample/)。


【今回の結果】

地球になった。地軸も傾けてみた。

【次回の課題】

今回は、チュートリアルをキチンと読むつもりだったが、チュートリアルの目次を見ていたら「Create the Earth」の文字が目に入り、いきなり路線変更をしてしまった。

わき道に逸れたついでに、次回は「月」も加えてみようかと思っている。

 

以下、今回の遊び。

【画像ファイルの取扱い】

Flash Developで画像ファイルを扱う方法を知らなかったので、試行錯誤しながら書いてみた。

これが“正しい方法”なのかは分からない。

【どっちを回す?】

Sceneを回しても良いし、Sphereを回しても良い。

ただ、月はScene上で「公転」させたいので、地球の自転はSphereを回した。

 

コードは以下。

package
{
	import mx.core.UIComponent;
	
	import away3d.containers.View3D;
	import away3d.containers.Scene3D;
	import away3d.cameras.Camera3D;
	import away3d.primitives.Sphere;
	import away3d.materials.BitmapMaterial;
	import away3d.core.utils.Cast;
	
	import flash.events.*;
	
	public class App extends UIComponent
	{
		// Away3D view
		internal var view:View3D = null;
		// Away3D camera
		internal var camera:Camera3D = null;
		// Away3D scene
		internal var scene:Scene3D = null;
		// Away3D Objects
		internal var globe:Sphere = null;
		
		
		// Earth
		[Embed(source = 'earthmap1k.jpg')]
		internal var EarthMap: Class;
		
		// rotationRate
		static internal var rotaionRate:int = 100;
		
		public function App() 
		{
			super();
			initVIew();
			initCamera();
			initScene();
			initObject();
		}
	
		private function initVIew():void {
			view = new View3D();
			view.x = 400;
			view.y = 200;
		
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
			addChild(view);
		}
		
		private function initCamera():void {
			camera = new Camera3D();
			camera.zoom = 100;
			camera.focus = 10;
			camera.z = -1000;
			view.camera = camera;
		}		
		
		private function initScene():void {
			scene = new Scene3D();
			view.scene = scene;
		}	
		
		private function initObject():void {
			globe = new Sphere( { material:"blue#white", radius:150, segmentsH:18, segmentsW:26 } );
			globe.material = new BitmapMaterial(Cast.bitmap(new EarthMap()));
			globe.rotationZ = 23.4;

			view.scene.addChild(globe);
		}	
		
		private function onEnterFrame( event: Event ):void  {
			globe.rotationY = globe.rotationY - 15 / rotaionRate;
			view.render();
		}
		
	}
}

The following two tabs change content below.

ロゴスウェア

ロゴスウェア株式会社は、インターネットや情報技術を使って学習に革新的進化をもたらす製品を開発することを目標に、2001年7月に設立されたテクノロジー系ベンチャー企業です。

Comments are closed.