[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Java3Djp:01167] Re: 回転移動情報の反映方法



♪♪♪♪♪♪♪ネット上オークションサイト【eオークション】♪♪♪♪♪♪
        今月中に無料買い手登録をすると……
    ヒルトン東京、横浜ベイシェラトン、ホテルオークラなど
   高級ホテルの宿泊券がドドーンとあたる!http://www.eac.ne.jp
●ホテルのスイートルームをなんと15,000円(2人分)からオークション中!●

えんどうです。

> Rotate(3)の変更も反映させたいのですが、どのような方法があるのでしょうか?
> (上記の処理では反映されない事はわかるのですが、どのような処理を追加すれば
>  良いのかがわかりません)
> 
> 実際のプログラムは、ある平面にマウスドラッグで線を書くのですが、
> 平面をMouseBehaviorで動かした後に、その平面上に線を描くというものです。

com.sun.j3d.utils.behaviors.mouse パッケージのクラスですが、

MouseRotate    -> 回転
MouseTranslate -> XY平面での移動
MouseZoom      -> Z軸方向への移動

となっています。

http://www.javaopen.org/j3dbook/examples/QuatTest/QuatTest.java

上記サンプルではこんなことをやっています。

  private Quat4f quat4f = new Quat4f();
       :
    MouseRotate rotator = new MouseRotate(trans);
    rotator.setSchedulingBounds(bounds);
    rotator.setupCallback( new MouseBehaviorCallback() {
      public void transformChanged(int flag, Transform3D trans) {
        trans.get(quat4f);
        tuplePanel.set(quat4f);
      }
    });
    root.addChild(rotator);

ここでは回転を Quat4f に取得して表示しているだけですが、
ここで別の Transform3D に setRotation(Quat4f) してやれば
良いのではないかと思います。
(このあと別のオブジェクトを回転させたい場合は回転を乗算する
必要はあると思います)

同様に、移動についても Transform3D#get(Vector3f) で取得できると思います。

---
ENDO Yasuyuki <yasuyuki@xxxxxxxxxx>
http://www.javaopen.org/jfriends/index.html (Japanese Only)