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

[Java3Djp:01186] Re: RotationInterpolatorのaxisOfRotationについて



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

えんどうです。

> このソースを実行すると、ピックしたパーツが原点位置に移動した後に
> 横に向かって飛んでいってしまいます。

もし2点間の移動なら、PositionPathInterpolatorを使う方が楽です。

PositionInterpolator は X 軸方向にしか移動できません。

> (1回目のピック時)
> --------------------------------------------
> Matrix4d: 1.0, 0.0, 0.0, 0.0
> 0.0, 1.0, 0.0, 29.192899703979492
> 0.0, 0.0, 1.0, 0.0
> 0.0, 0.0, 0.0, 1.0

Y座標は 29.19 になってますね。

> (2回目のピック時)
> --------------------------------------------
> Matrix4d: 1.0, 0.0, 0.0, 5.4000091552734375
> 0.0, 1.0, 0.0, 0.0
> 0.0, 0.0, 1.0, 0.0
> 0.0, 0.0, 0.0, 1.0

一度原点に戻って、X 方向に 5.4 移動してるみたいですね。

(TG) <-- Y=29.19 の TransformGroup
 |
/S\  <-- 動かしたいオブジェクト
~~~

もし上記のようになっているなら、こんな処理が考えられます。
(今回は PickObject.TRANSFORM_GROUP でピックされているようなので、
こうなっている保証はありません)

(TG) <-- Y=29.19 の TransformGroup
 |
(TG) <-- InterpolatorのTARGETになるTransformGroup (動的に追加する)
 |
/S\  <-- 動かしたいオブジェクト
~~~

たしか com.sun.j3d.util.behavior.mouse.MouseBehavior とそのサブクラス
がこんな処理をやっていたような気がします。
でも自信ありません。^^;
よろしければcom.sun.j3d.util.behavior.mouseのソースを読んでみてください。

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