note.x

[Papervision3D2.0] objects.special

objectsパッケージのラストを飾るのは、special。
このパッケージは、何とも使いどころが難しそうなクラスが並んでおりますな。

  • Frustum3D.as ※リビジョン639で削除されました
  • ParticleField.as
  • Sound3D.as
  • UCS.as

ParticleFieldは、Starsクラスに替わってPV3D1.7の後期リビジョンで追加されたものと同じ。
それ以外のクラスは2.0で新たに登場したもの。

Frustum3Dのコンストラクタ定義

Frustum3D ( FrustumCamera3Dオブジェクト:FrustumCamera3D )

これは、FrustumCamera3Dの視錐台を可視化するクラス。3Dアプリケーションなんかでよく見かけるものだけど、デバッグとか、カメラのモーションエディタとか作るのに使う以外、用途がひらめかねぇ。
08/09/01追記:
Rev.639以降は、Frustum3Dクラスが削除されたので使えない。一応記述は残しておくけど御注意を。

使用例

var frustum_camera:FrustumCamera3D = new FrustumCamera3D(viewport, 28, 200, 2000 );
frustum_camera.y = 100;
frustum_camera.z = -400;

var objFrustum:Frustum3D = new Frustum3D(frustum_camera)
scene.addChild( objFrustum );
objFrustum.y = frustum_camera.y;
objFrustum.z = frustum_camera.z;

カメラとFrustum3Dオブジェクトは別々のDisplayObject3Dオブジェクトなので、カメラを移動してもFrustum3Dはついてこない。同期させるには適時カメラ座標をFrustum3Dに渡すなり、ペアレントするなり。

ParticleFieldのコンストラクタ定義

ParticleField (
パーティクルマテリアル:ParticleMaterial,
パーティクルの量:int,
パーティクルを分布させる空間の幅:Number,
パーティクルを分布させる空間の高さ:Number = 2000,
パーティクルを分布させる空間の奥行:Number = 2000
)

以前との違いは、マテリアルの指定が直接RGB値だったのが、パーティクル専用マテリアルのParticleMaterialに変わったくらい。ParticleMaterialは、org.papervision3d.materials.special に。

使用例

var pMat:ParticleMaterial = new ParticleMaterial( 0xffffff,1 );
var PF:ParticleField = new ParticleField( pMat, 1000, 1000, 1000,1000 );
scene.addChild(PF);

Sound3Dのコンストラクタ定義

Sound3D ( サウンドオブジェクト:Sound )

カメラとの位置関係によって、割り当てたSoundオプジェクトのボリュームやパンを変化させて、なんちゃって3Dサウンドが楽しめるクラス。サウンドビジュアライザー的なものに使えば付加価値上がってよろしいんじゃないかと。

使用例

var soundurl:URLRequest = new URLRequest("hoge.mp3");
var sound_obj:Sound = new Sound( soundurl );

var objSound3D:Sound3D = new Sound3D( sound_obj );
scene.addChild(objSound3D);
objSound3D.play();

Sound3Dオブジェクトは、DisplayObject3Dを継承したクラスなので、

objSound3D.x = 1000;
objSound3D.y = 0;
objSound3D.z = 1000;

とかいう感じで座標指定してやると、音の定位が変化する。また、バグか仕様か、Sound3Dオブジェクトとcameraの座標が重なると音が出ないので注意。

UCSのコンストラクタ定義

UCS (
拡大縮小率:Number,
インスタンス名:String
)

これは文字コード関係のUCSではなく、座標軸を作成するクラス。

使用例

var objUCS:UCS = new UCS( 200 );
scene.addChild(objUCS);

Frustum3Dと同様、デバッグとか空間認識のためのインフォメーションに使うのかしら。Frustum3Dと、UCSに関しては、その親クラスであるLines3Dの使用例って感じだな。

以上でobjectsパッケージは一通り目を通した。(カチンシュボパチン)ふー。
今回のサンプルは3つ。

sp_UCS_Frustum3D.swf(要:FlashPlayer9)
sp_ParticleField.swf(要:FlashPlayer9)
sp_Sound3D.swf(要:FlashPlayer9)※音出るのでご注意。

地味だな…orz。


Trackback URL : http://blog.r3c7.net/as3-software-rendering/142/trackback/

COMMENTS

  1. AlexG - 2010.03.19 18:28:31

    Nice hieroglifs
    I should start learning japanese

Leave a Reply