[Papervision3D2.0] Viewport3D

2007.12.08

Papervision3D 2.0 の解析をちょっとずつ始めてみる。
とりあえず Viewport3D から。

これまでのバージョンだと、

var container:Sprite = new Sprite();
addChild(this.container);
scene = new Scene3D( container );

てな感じでSpriteをビューポートに見立ててたのが、新たにViewport3Dとして実装されたと。
Viewport3DはSpriteを継承したクラスで、表示範囲のクリッピングと、表示範囲外ポリゴンのカリングを処理してくれる。Papervision3Dメモ#22で取り上げた、RectangleTriangleCullerの機能がここに結実といった感じ。

そんなこんなで、PV3D2.0からは、

var viewport:Viewport3D = new Viewport3D(0,0,true);
addChild(viewport);
scene = new Scene3D();

と、定義することになったらしい。(Scene3Dにviewportを突っ込む必要はナシ。)

Viewport3Dのコンストラクタ定義

Viewport3D(
    viewportWidth:Number = 640,
    viewportHeight:Number = 480,
    autoScaleToStage:Boolean = false,
    interactive:Boolean = false,
    autoClipping:Boolean = true,
    autoCulling:Boolean = true
)
  • viewportWidth:ビューポートの幅
  • viewportHeight:ビューポートの高さ
  • autoScaleToStage:ステージサイズにビューポートのサイズをフィット
  • interactive:インタラクティブモード?(未確認)
  • autoClipping:ビューポート矩形範囲外をクリッピング
  • autoCulling:ビューポート矩形範囲外ポリゴンをカリング

Spriteを継承してるので、ステージ上での位置指定や背景色指定は

viewport.x = 200;
viewport.y = 200;
viewport.opaqueBackground = 0xFF0000;

とかいう感じでできる。

widthとheightに関しては

viewport.width = 200;
viewport.height = 200;

だと、当然ながらビューポート内のオブジェクトごと大きさが変わるので、ビューポート矩形のみ幅と高さを変えたい場合は、

viewport.viewportWidth = 200;
viewport.viewportHeight = 200;

ってな具合で指定するとよろし。

また、ビューポートはいくつも定義できるので、以下のようなことが出来る。

Viewport3DTest.swf(要:FlashPlayer9)

ビューポートを4つ作ってマトリクス状に配置。
シーン内に、設置場所の異なるカメラを4つ配置して、

renderer.renderScene(scene,top_camera,top_view);
renderer.renderScene(scene,front_camera,front_view);
renderer.renderScene(scene,side_camera,side_view);
renderer.renderScene(scene,quarter_camera,quarter_view);

って感じで、renderer.renderScene()メソッド(これも変わったポイント)にそれぞれのカメラとビューポートを指定した。ちょっとした3Dアプリみたいだわ。

Viewport3Dはだいたいこんな感じかな。

関連する投稿

Trackback URL : http://blog.r3c7.net/wp-trackback.php?p=130

コメント / トラックバック5件

  1. mobilebmx より:

    素晴らしいです。
    Viewport を複数設定できることは知りませんでした。もしよろしければ、Mainクラスの全体のSouceCodeを教えていただけませんか?

  2. rect より:

    色々とハズカシイので勘弁してください。すんません。

  3. felix より:

    great blog! I wish I could read japanese :) are you sharing the source code? I’m trying to figure out how you get the nice gray shadows.

  4. rect より:

    Hi felix,

    > great blog!

    just your work is very wonderful.
    TiltViewer rocks!

    >I’m trying to figure out how you get the nice gray shadows.

    This demo used cheaper trick.
    gray shadows are not realtime rendering, it’s texture mapping.

    reference URL:
    http://wiki.blender.org/index.php/Manual/Render_Bake

    Thank you for your comment.
    I’m sorry for poor English.
    cheers.

  5. [...] 参考にさせてもらった記事です。 ・[Papervision3D2.0] Viewport3D 今回から新たに加わったという、表示用クラス(?)Vieport3D。 ・[Papervision3D2.0] Render レンダリングの仕方が変わりました。 [...]

コメントをどうぞ

Powered by WP Hashcash