Japanese | English | Korean

Samples

シーングラフの構築

ここではシーングラフを自分で構築する手順について解説します。



シーングラフは m3dWorld オブジェクトをルートノードとしたツリー構造をしています。シーングラフを構築する際は m3dWorld クラスオブジェクトを作成し、それに子ノードを追加していくことでツリー構造を作成することになります。子ノードの追加には IMICRO3Dv4es_m3dGroup_addChild() メソッドを使用します。

以下はサンプルコードで m3dWorld オブジェクトを作成し、m3dCamera クラス、 m3dLight クラス、 m3dGroup クラスの各オブジェクトを子ノードとして追加して、シーングラフを構築している部分です。

/* Worldオブジェクトの作成 */
pmc -> pWorld = IMICRO3Dv4es_m3dWorld_create( pMe -> pIM3D );
if ( pmc -> pWorld == NULL ) {
return HI_FALSE;
}

/* シーングラフの構築 */
IMICRO3Dv4es_m3dWorld_setBackground( pMe -> pIM3D, pmc -> pWorld, pmc -> pBackground );

IMICRO3Dv4es_m3dGroup_addChild( pMe ->pIM3D, ( m3dGroup* ) pmc -> pWorld, ( m3dNode* ) pmc -> pBoy );

IMICRO3Dv4es_m3dGroup_addChild( pMe -> pIM3D, ( m3dGroup* ) pmc -> pWorld, ( m3dNode* ) pmc -> pPyrGroup );

IMICRO3Dv4es_m3dGroup_addChild( pMe -> pIM3D, ( m3dGroup* ) pmc -> pWorld, ( m3dNode* )pmc -> pCamera );

IMICRO3Dv4es_m3dGroup_addChild( pMe -> pIM3D, ( m3dGroup* ) pmc -> pWorld, ( m3dNode* ) pmc -> pAmbLight );

IMICRO3Dv4es_m3dGroup_addChild( pMe -> pIM3D, ( m3dGroup* ) pmc -> pWorld, ( m3dNode* ) pmc -> pDirLight);

/* 描画に使用するカメラを指定 */
IMICRO3Dv4es_m3dWorld_setActiveCamera( pMe -> pIM3D, pmc -> pWorld, pmc -> pCamera );

IMICRO3Dv4es_m3dWorld_setActiveCamera(inst, world, camera) メソッドにより m3dWorld オブジェクトを描画する際に使用する m3dCameraオブジェクトを設定しています。 ここで設定する m3dCamera オブジェクトは、シーングラフに含まれるものしか指定できません。そのため、m3dWorld クラスに m3dCameraオブジェクトを追加した後でカメラの設定を行っています。

また、IMICRO3Dv4es_m3dWorld_setBackground(inst, world, background) メソッドは、 m3dWorld オブジェクトに背景として m3dBackgroundオブジェクトを設定するメソッドです。 m3dBackground クラスのオブジェクトを設定しない場合、背景はデフォルトとして黒く塗りつぶされます。


描画結果