SceneGraph


SceneGraph の詳しい構造について解説します。

SimpleUniverse / 戻る / トップページ


SimpleUniverse

SimpleUniverse は VirtualUniverse のサブクラスで、 コンストラクタ中に木構造をある程度構築します。
 
以下のような構造を作ります。(みにくくてすみません)
 
com.sun.j3d.utils.universe.SimpleUniverse (VirtualUniverse)
javax.media.j3d.Locale
com.sun.j3d.utils.universe.ViewingPlatform (BranchGroup)
com.sun.j3d.utils.universe.MultiTransformGroup (1 個以上の TransformGroup)
javax.media.j3d.ViewPlatform
javax.media.j3d.BranchGroup
com.sun.j3d.utils.universe.PlatformGeometry
javax.media.j3d.BranchGroup
com.sun.j3d.utils.universe.ViewerAvatar
 
ViewingPlatform オブジェクトは視点関係のオブジェクトを子に持つ BranchGroup オブジェクトです。
 
ViewPlatform オブジェクト (ViewingPlatform と名前が似ているので注意してください) が視点を表します。 物体と同じようにその親にある TransformGroup オブジェクトによってその位置が表現されます。 SimpleUniverse ではそのための TransformGroup オブジェクトを コンストラクタ中で自動的に生成しています。 その TransformGroup オブジェクトの取得・設定方法は SimpleUniverse の視点移動 をご覧ください。
 
木構造を見てわかるようにその TransformGroup オブジェクトの下に 物体をぶら下げれば、 その物体は視点の位置・方向が変わっても動かないようにできます。 そのために PlatformGeometry クラスが用意されています。 PlatformGeometry クラスは BranchGroup クラスのサブクラスで、 追加されているメソッドはありません。 視点の位置・方向が変わっても動かないでいて欲しい物体を PlatformGeometry オブジェクトの下にぶら下げて ViewingPlatform オブジェクトに設定します。
	PlatformGeometry platform=new PlatformGeometry();
	
	Transform3D translation=new Transform3D();
	translation.setTranslation(new Vector3d(0.0,0.0,-3.0));	// このままでは物体が視点にめり込んでしまうのでずらす
	TransformGroup transform=new TransformGroup(translation);
	platform.addChild(transform);
	
	transform.addChild(new ColorCube());	// 色付き立方体
	
	universe.getViewingPlatform().setPlatformGeometry(platform);

戻る