今回は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);
今回作成したものはコチラです。

