papervision3dのお勉強 step-2 もう少し理解を深める

今回はpapervision3dが、どういった構造になっているかを理解しながらコードを書いてみることにしました。

papervision3dでは以下の様なステップで3D表現を創りだすことができているようです。

1.ビューポートの作成
3D空間を表示する画面のようなものを作成します。この範囲にあるものだけが描画されることになります。実際にはカメラで撮影された表示がレンダリングによってビューポートに表示されることになります。

2.カメラの作成
3D空間を撮影する為のカメラを定義します。

3.3Dシーンの作成
papervision3dではシーンにaddChildすることでオブジェクトが表示されます。

4.レンダリングエンジンの作成
レンダリングを行うためのレンダーを定義します。

5.オブジェクトを作成
3D空間に投影したい形状を定義します。形状を定義する場合は、マテリアル(テクスチャ)を定義してから、形状を定義するイメージです。
最後にシーンにaddChildすることを忘れずに。。

6.レンダリングを行う
1~5まで行ってきた作業を3Dで表示してくれるものです。

以前作成したものよりも、
コードは長いですが、実際にやっていることは同じです。それはBasicViewクラスの中身を見れば明確でした。以下BasicViewクラスの一部です。以前は見ても何がなんだかでしたが、こうやって1つずつ見ていくと理解できるものですね。

public function BasicView(viewportWidth:Number = 640, viewportHeight:Number = 480, scaleToStage:Boolean = true, interactive:Boolean = false, cameraType:String = "Target")
{

	super();

	//シーンの作成

	scene = new Scene3D();

	//ビューポートの作成

	viewport = new Viewport3D(viewportWidth, viewportHeight, scaleToStage, interactive);

	addChild(viewport);

	//レンダリングエンジンの作成

	renderer = new BasicRenderEngine();

	//カメラの設定

	switch(cameraType)

	{

		case CameraType.DEBUG:

			_camera = new DebugCamera3D(viewport);

			break;

		case CameraType.TARGET:

			_camera = new Camera3D(60);

			_camera.target = DisplayObject3D.ZERO;

			break;

		case CameraType.SPRING:

			_camera = new SpringCamera3D();

			_camera.target = DisplayObject3D.ZERO;

			break;

		case CameraType.FREE:

		default:

			_camera = new Camera3D(60);

			break;

	}

	cameraAsCamera3D.update(viewport.sizeRectangle);

今回作成したものはコチラです。

flash on 2009-5-20 – wonderfl build flash online