Java3Dは標準ではメタセコイアのモデルデータを読み込めない。
java3dでMetasequoiaのモデル(MQO)をロードするからmqoview20070717.zipを用いて、Java3Dからmqoファイルを取り込む方法を紹介する。
zipファイルをダウンロード後、解凍する。
jp/kurusugawa/java3d/loader/mqo下にあるMQOLoader.javaがローダーとなる。
MQOLoaderTest.javaを参考にすれば基本的にうまくいった。
Java3Dではお約束のcreateSceneGraph()内で以下のように使う。
public BranchGroup createSceneGraph() {
BranchGroup root = new BranchGroup();
try {
mObject = new MQOLoader().load(getClass().getResource(
"/myobject.mqo"));
root.addChild(createAmbientLight());
root.addChild(createDirectionalLight());
// 縮小
TransformGroup scale_group = new TransformGroup();
Transform3D scale_trans = new Transform3D();
scale_trans.setScale(0.0002);
scale_group.setTransform(scale_trans);
scale_group.addChild(mObject.getSceneGroup());
root.addChild(scale_group);
} catch (Exception e) {
e.printStackTrace();
}
root.compile();
return root;
}
scale_trans.setScale(0.0002)の値はロードするオブジェクトの大きさに合わせて調整する。
createAmbientLight()とcreateDirectionalLight()は光源の定義。
最後を参照に。
次は、SimpleUniverse。
mScene = createSceneGraph();
mUniverse = new SimpleUniverse(mCanvas);
mUniverse.getViewingPlatform().setNominalViewingTransform();
mUniverse.addBranchGraph(mScene);
// 視点
Transform3D scale_trans = new Transform3D();
scale_trans.setTranslation(new Vector3d(0d, 0d, 1.2d));
mUniverse.getViewingPlatform().getViewPlatformTransform().setTransform(
scale_trans);
mUniverse.getViewer().getView().setBackClipDistance(1000.0);
mUniverse.getViewer().getView().setTransparencySortingPolicy(
View.TRANSPARENCY_SORT_GEOMETRY);
mUniverse.getViewer().getView().setDepthBufferFreezeTransparent(false);
public BoundingSphere mSchedulingBounds =
new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 1000000.0);
....
private AmbientLight createAmbientLight() {
AmbientLight tLight = new AmbientLight();
tLight.setInfluencingBounds(mSchedulingBounds);
return tLight;
}
private DirectionalLight createDirectionalLight() {
DirectionalLight tLight = new DirectionalLight(new Color3f(1.0f, 1.0f,
1.0f), new Vector3f(-1.0f, -1.0f, 0.0f));
tLight.setInfluencingBounds(mSchedulingBounds);
return tLight;
}
ラベル: Java