[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:00519] Re: [Q]Transfom3Dの順番
/ 免疫機能研究会の3月のお知らせ /
/ ■ アガリクス活性化多糖体による免疫療法体験談 8編 /
/ ■ 「免疫機能研究」ニューズレター 7編 /
/ -------------------------- /
/ こちらで掲載中です。--->> http://www.meneki.com/ /
--------------------------------------------------------------
>t1.mul(t2);//t1*t2;
>t1.mul(t3);//t1*t2*t3;
>t1.addChild(visualObject);
>myTransformGroup.addChild(t1);
TransformGroup は下記のように javax.media.j3d.Node のサブクラスなので
addChild() できますが、
java.lang.Object
|
+--javax.media.j3d.SceneGraphObject
|
+--javax.media.j3d.Node
|
+--javax.media.j3d.Group
|
+--javax.media.j3d.TransformGroup
Transform3D は下記のように javax.media.j3d.Node のサブクラスではないので
addChild() 出来ません。
java.lang.Object
|
+--javax.media.j3d.Transform3D
この場合、myTrasformGroup に visualObject を addChild() することに
なると思います。
Transform3D ですが、myTransformGroup に setTransform(Transform3D) する
ことになります。
>1 Transform3D myTransform3D = new Transform3D();
>2 myTransform3D.setTranslation(new Vector3f(-1.0f,0.0f,-4.0f));
>3 myTransform3D.setScale(0.1);
>4 Transform3D tempTrans = new Transform3D();
>5 tempTrans.rotY(Math.PI/4.0);
>6 myTransform3D.mul(tempTrans);
>7 TransformGroup myTransformGroup = new TransformGroup(myTransform3D);
>8 myTransformGroup.addChild(visualObject);
>
>では、visualObjectに
>1番目:Y軸周りの回転(5で定義)
>2番目:0.1のスケール(3で定義)
>3番目:平行移動(2で定義)
>という順番で作用される???という理解でよいのでしょうか?
やってみていないので確証はありませんが、
TransformGroup myTransformGroup = new TransformGroup();
myTransformGroup.addChild(visualObject);
Transform3D t1 = new Transform3D();
t1.set(new Vector3d(-1.0, 0.0, -4.0));
Transform3D t2 = new Transform3D();
t2.setScale(0.1);
t1.mul(t2);
Transform3D t3 = new Transform3D();
t3.rotY(Math.PI/4.0);
t1.mul(t3);
myTransformGroup.setTransform(t1);
こんな感じでしょうか。
私も Transform3D の lookAt() メソッドで悩んでます。
これからいろいろ実験しようと思っています。
--
えんどう やすゆき <yasuyuki@xxxxxxxxxx>
http://www.javaopen.org/jfriends/ (Java互助会ホームページ)