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

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



======================================================================
    ┌────┐           1.会員登録をする(無料)
(( /⌒│\ P /│⌒\ ))  2.好きな情報をたくさんキャッチする
 /へへ│ \/ │へへ\   3.ポイントを集めて、賞品と交換する
    └────┘             ☆★☆ ポイントメール ☆★☆
       ・...・            http://www.pointmail.co.jp/
===================================================================ad=

小池です。

Interpolatorを使ったことはないので完全に想像ですが。
ソースもないし・・。

At 19:33 99/12/23 +0900, 冨塚 義浩 wrote:
> 
> 現在、ピックされた最上位のTransformGroupを取得して回転や移動などの
> 振る舞いを与える段階までは成功しているのですが、ピックしたパーツが
> グローバル座標の原点位置(0.0, 0.0, 0.0)から動作を開始してしまいます。
> ピックしたパーツは(0.0, 29.0, 0.0)に存在しているのですが。

確認ですが、「ピックされた最上位の」というのは、動かす
対象のサブグラフの中の最上位と言うことですよね。

グローバル座標の原点位置(0.0, 0.0, 0.0)から動作を開始、
というのは、Interpolatorの軸がグローバル座標系の
座標軸になっている、ということでしょうか。

> RotationInterpolatorを例に挙げると、
> axisOfRotationに設定しているTransform3Dの値が変なのだと思うのですが、
> よく考えるとTransform3Dにどんな値を設定したらいいのか、
> 恥ずかしながら分かりません。今はたぶんIdentity状態だと思います。

想像ですが、ちょっとAPIの説明を見たところでは、この
Transform3Dが、RotationInterpolatorの回転軸を決める、
と書いてありますから、

TransformGroup target = ...
Transform3D targetTransform = new Transform3D();
target.getTransform(targetTransform);
Vector3d targetTranslation = new Vector3d();
targetTranslation.get(targetTranslation);

Transform3D axisOfRotation = new Transform3D();
axisOfRotation.set(targetTranslation);

でいいかも、という気がします。

Interpolatorに関しても詳しい方がいらっしゃるので、
間違いであれば訂正してくださることを期待しつつ・・(^^;

そういえば、Java3Dについてくるデモで、ConicWorldは
複数の物体がくるくる回ってるものでした。参考になる
かもしれません。



/* written by Koike,T. */