BLOG ENTRY

papervision3Dをインストールしてサンプル(正六面体cube)を動かすまで[AS3]

papervision3D

ActionSctiptのライブラリpapervision3Dをインストールしてサンプルコード(正六面体cube)を出力します。
SVNリポジトリからダウンロードしてセットアップする場合と、SVNクライアントを使わないでセットアップするのと両方記載しておきます。

GoogleCodeのpapervision3Dのページ

http://code.google.com/p/papervision3d/

説明によると最新版はSVNリポジトリから持ってくるみたい
>>You can get the latest revision of Papervision3D from the SVN repository:
>>http://papervision3d.googlecode.com/svn/trunk/

公開リポジトリからチェックアウト(papervision3d – Revision 932: /)

http://papervision3d.googlecode.com/svn/trunk/

でもいいけどAS3用のだけでAS2用のはいらないので

下記からチェックアウトします。

http://papervision3d.googlecode.com/svn/trunk/as3/trunk

チェックアウトするディレクトリはどこでもいいです。任意のディレクトリで問題ないです。
(後でこのディレクトリパスをFlashDevelopやFlexSDKの設定ファイルに記載します。)

ちなみに、今回はflexSDKをインストールしてるディレクトリC:\flex_sdk_3.3.0.4852
のframeworksディレクトリ内にpv3dフォルダを新規作成してそこにチェックアウトしました。

なので今回はチェックアウト先は
C:\flex_sdk_3.3.0.4852\frameworks\pv3d
になりました。

PaperVision3Dのディレクトリパスを記載する

で、次にコンパイル時にクラスパスを読み込んでくれるように、FlexSDKとFlashDevelopの設定ファイルに書き込んでいきます。
C:\flex_sdk_3.3.0.4852\frameworks\flex-config.xml
を開くと<source-path>の部分がコメントアウトされてるので、コメントアウトを外して
そこに

    <source-path>
        <path-element>C:\flex_sdk_3.3.0.4852\frameworks\pv3d\src\</path-element>
    </source-path>

を記載します。

FlashDevelopを開いて
Tools > Global Classpaths

C:\flex_sdk_3.3.0.4852\frameworks\pv3d\src\

を記載します。

※ちなみにコピー後にC:\flex_sdk_3.3.0.4852\frameworks\pv3d\の中には、
bin/
build/
docs/
examples/
src/
がある状態です。

PaperVision3Dのセットアップはここまでで終了です。
ちゃんと動くかどうかサンプルコードを試してみます。

サンプルコードはとりあえずpapervision3Dのパスがちゃんと通っているかどうかだけ確認できればいいので、今回は正六面体cubeと視点を立体的に回転させながら動かす、というものを試してみます。

サンプルコードの正六面体cube

sample demo

This movie requires Flash Player 9

MyCube.as (adobe Flashは必要ありません)

package {

	import flash.display.*;
	import flash.events.*;
	import flash.utils.*;

	import org.papervision3d.core.effects.view.ReflectionView;
	import org.papervision3d.cameras.*;
	import org.papervision3d.materials.*;
	import org.papervision3d.materials.utils.MaterialsList;
	import org.papervision3d.objects.*;
	import org.papervision3d.objects.primitives.*;

	[SWF(width = "440", height = "440", frameRate = "30", backgroundColor = "#000000")]

	public class MyCube extends ReflectionView {

		[Embed(source='images/ai.jpg')]
		private var AI:Class;

		[Embed(source = 'images/dw.jpg')]
		private var DW:Class;

		[Embed(source = 'images/fl.jpg')]
		private var FL:Class;

		[Embed(source = 'images/id.jpg')]
		private var ID:Class;

		[Embed(source = 'images/pr.jpg')]
		private var PR:Class;

		[Embed(source = 'images/ps.jpg')]
		private var PS:Class;

		private var cube:Cube;
		private var earch:Plane;

		public function MyCube() {

			var earth:Plane = createEarth();
			var cube:Cube = createMyCube();

			scene.addChild(cube);
			scene.addChild(earth);

			surfaceHeight = 0;
			camera.y = 600;

			stage.addEventListener(Event.ENTER_FRAME, enterFrameHandle);
		}

		private function createEarth():Plane {
			var earth:Plane = new Plane(new WireframeMaterial(0xFFFFFF, .5), 600, 600, 10, 10);
			with (earth) {
				rotationX = 90;
				rotationY = 20;
				y = -100;
			}

			return earth;
		}

		private function createMyCube():Cube {
			var materialsList:MaterialsList = new MaterialsList();
			var imgClassArr:Array = [AI, DW, FL, ID, PR, PS];
			var faceNameArr:Array = ['front', 'back', 'top', 'bottom', 'right', 'left'];
			for (var i:int = 0; i < imgClassArr.length; i++ ) {
				var bitmap:Bitmap = new imgClassArr[i]() as Bitmap;
				var bitmapData:BitmapData = new BitmapData(200, 200);
				bitmapData.draw(bitmap);
				var material:BitmapMaterial = new BitmapMaterial(bitmapData, true);
				material.smooth = true;
				materialsList.addMaterial(material, faceNameArr[i]);
			}
			cube = new Cube(materialsList, 120, 120, 120, 1, 1, 1);
			return cube;
		}

		private function enterFrameHandle(e:Event):void {
			with (cube) {
				yaw((200 - mouseX ) / 14);
				pitch((200 - mouseY ) / 14);
				y = Math.sin(getTimer() / 300) * -25 + 240;
			}

			with (camera) {
				x = 500 * Math.sin(getTimer() / 4000);
				z = 500 * Math.cos(getTimer() / 4000);
			}
			singleRender();
		}
	}
}

SVNダウンロードができない場合

SVNダウンロードができない場合は、
http://code.google.com/p/papervision3d/
の右コンテンツ内からPapervision3D_2.0.883.zip
をダウンロード&解凍してできたディレクトリの中から
nochump/
org/
をC:\flex_sdk_3.3.0.4852\frameworks\pv3d\
以下に設置すれば、同様にpapervision3Dが利用できます。

papervision3D

リファレンスなどのリンクいろいろ

Document
http://papervision3d.googlecode.com/svn/trunk/as3/trunk/docs/index.html

Forum
http://forum.papervision3d.org/

PaperVision3D OfficialWebSite
http://www.papervision3d.org/

No related posts.

WRITE COMMENT


(required)


(required)


(required)

MENU

veltica creative of twitter