[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:00514] Transform3D#lookAt()の謎
/ 免疫機能研究会の3月のお知らせ /
/ ■ アガリクス活性化多糖体による免疫療法体験談 8編 /
/ ■ 「免疫機能研究」ニューズレター 7編 /
/ -------------------------- /
/ こちらで掲載中です。--->> http://www.meneki.com/ /
--------------------------------------------------------------
遠藤です。
LogomotionとTurtle3Dのソースコードを参考に、ずっと亀を作ってました。
亀はだいたい出来たのですが、
View側のTransformGroupとのバインド方法で悩んでます。
View側のTransformGroupは、SimpleUniverseの場合、
getViewingPlatform().getViewPlatformTransform() メソッドで取得できます。
たとえば x=0、y=0、z=4 への視点移動は、
Transform3D t3d = new Transform3D();
t3d.set(new Vector3d(0.0, 0.0, 4.0));
universe.getViewingPlatform().getViewPlatformTransform().setTransform(t3d);
こんなコードで可能です。ところが、Transform3DのlookAt()メソッドを使って、
Transform3D t3d = new Transform3D();
Point3d eye = new Point3d(0.0, 0.0, 4.0); // 視点座標
Point3d center = new Point3d(0.0, 0.0, 0.0); // 注目点座標
Vector3d upvec = new Vector3d(0.0, 1.0, 0.0); // 視点の上向きベクトル
t3d.lookAt(eye, center, upvec);
universe.getViewingPlatform().getViewPlatformTransform().setTransform(t3d);
などとすると set(new Vector3d(0.0, 0.0, 4.0)) とはまったく違う結果になります。
Java 3Dのサンプルコードをgrepしてみましたが lookAt() を使ったものは無いようです。
もう少し研究してみます。
--
えんどう やすゆき <yasuyuki@xxxxxxxxxx>
http://www.javaopen.org/jfriends/ (Java互助会ホームページ)