初めてのシステムと日記

システムも日記も初めてです。

Papervision3Dを試す

前々からFlash、特に3D周りをやりたいと思っていたのですが、

開発環境の作り方を教えて頂いたのでこちらにメモです。


用意するもの

  • FlashDevelop
    • フリーのコードエディタ。主にActionScript向け。
  • FlexSDK

1.FlashDevelopのダウンロード

こちらのページから最新版(FlashDevelop 3.x.x RTM)をダウンロード

インストールは「Next>」をクリックし続けて完了です。

2.FlexSDKのダウンロード

こちらのページの[Latest Milestone Release Builds]の[Adobe Flex SDK]をダウンロードして解凍。

flex_sdk_3.〜というフォルダが出来上がるので任意の場所に移動。

※自分はc:\直下に置きました。

3.Papervision3D(以下pv3d)のダウンロード

pv3dSubversion形式で公開されています。

WindowsではTortoiseSVNあたりを利用する必要があります。

http://papervision3d.googlecode.com/svn/trunk/をチェックアウトすればOKです。

4.FlesSDKの設定

まずライブラリ用のディレクトリを作成します。

※自分はC:\flex_sdk_3.〜\frameworks\sources

その中にpv3dの/as3/trunk/src/の中身をコピーします。

次にコンフィグファイルの設定をします。

場所はC:\flex_sdk_3〜\frameworks\flex-config.xmlです。

これののコメントアウトを外し以下のように記述します。

<source-path>
  <path-element>sources</path-element>
</source-path>

5.FlashDevelopの設定

Tools->Program Setting を選択します。左メニューのAS3Contextを選択し以下を入力

Default Flash Version→10を入力

Flex SDK Location→FlexSDKへのパスを入力

次に左メニューのFlashViewerを選択し、Movie Display StyleをPopupとします。

最後にTools->Global Classpathsを選択し、Add Classpath..からpv3dへのパスを入力します。

これで設定は終わりです。

サンプル

New ProjectからAS3 Projectを作成し、Main.asで以下のサンプルを作成しました。

package {
	import flash.display.*;
	import flash.events.*;
	
	import org.papervision3d.view.*;
        import org.papervision3d.objects.primitives.*;
	import org.papervision3d.objects.parsers.DAE;
	
	import org.papervision3d.scenes.Scene3D;
	import org.papervision3d.cameras.Camera3D;
	import org.papervision3d.render.BasicRenderEngine;
	
  
        public class Main extends Sprite
	{
		private var viewport:Viewport3D;
		private var camera:Camera3D;
		private var scene:Scene3D;
		private var renderer:BasicRenderEngine;
		
		private var colladaObj:DAE;
		private var mySphere:Sphere;
		
		public function Main()
		{
			initStage();
			initPv3d();
			createObj();
		}
		
		private function initStage():void
		{
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.quality = StageQuality.MEDIUM;
		}

		private function initPv3d():void
		{
			viewport = new Viewport3D(640, 480, true, true);
			viewport.opaqueBackground = 0xFFFFFF;
			addChild(viewport);
			
			scene = new Scene3D();
			camera = new Camera3D();
			renderer = new BasicRenderEngine();
		}
		
		private function createObj():void
		{
			colladaObj = new DAE();
			colladaObj.load("first.dae");
			scene.addChild(colladaObj);

			mySphere = new Sphere(null,600,40,40);
			scene.addChild( mySphere );
		   
			addEventListener(Event.ENTER_FRAME, handler);
		}
		
		private function handler(event:Event):void
		{
			renderer.renderScene(scene, camera, viewport);
		}
       }
} 

これでビルドして下のような球体が表示されれば

pv3dの設定がきちんとされています。


次は3Dモデルのインポートを試してみます。