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

[Java3Djp:02034] Re: Transform3D.rotX() について



------------------------- infoseek ML Sponsor --------------------------
■■■■■■■■ キャッシングならキャッシュワン ■■■■■■■■■
┏━━┓┏1.入会金・年会費・ATM手数料一切不要!━━━━━━━━┓
<特徴>┃2.実質年率15.0〜18.0% 1万円からのキャッシング    ┃
┗━━┛┗3.【今なら5万円商品券も当る!10月1日〜11月30日まで 】━┛
東京三菱キャッシュワン ⇒ http://www.p-advg.com/?bid=11321 
------------------------------------------------------------------------


えんどうです。

私も何かを誤解しているのかも知れませんが...

> SU
>   |
> TG1 : T3D1をセット
>   |
> TG2 : T3D2 をセット
>   |
> S3D
> となっているとします。
> 
> ここでT3D2.rotX()を実行した場合、
> TG1のローカル座標系におけるX軸回りに
> 回転する(公転するイメージ)と理解しているのですが、
> これでよろしいのでしょうか?

いえ、TG2 のローカル座標だと思います。

> さらにこの本ではT3DのmulメソッドによってT3Dが合成される際に
> 処理が実行される順番として、たとえばT3D1.mul(T3D2)の場合、
> T3D1→T3D2の順番で実行されると解説してあります。
> (同p.113下)

これは TransformGroup がひとつで、
そこに合成行列(Transfom3Dどうしの合成)を適用する場合でしょうか?

上図では TG1 と TG2 が親子関係になっているので、
それぞれに別個に適用されている変換操作は「結果として」合成されますが、
実際に mul() が行われるわけではない、と私は理解していました。

(Java 3Dのソースを見たわけではありませんが、
PushMatrix/PopMatrix で実現しているのではないか、と推測していました)

> Java3DAPIおよびこのメーリングリストの過去ログを調べると
> T3D1.mul(T3D2)はT3D1×T3D2マトリックスを生成し、
> 実行順序はT3D2→T3D1だと思っておりました。

「実行順序」というのは行列乗算の左辺から右辺へ、
という意味でしょうか?

さて、ひとつの TransfomGroup に対して合成行列を作用させる場合は
乗算の順序に留意しなければなりませんが、

親子関係にある複数の TransformGroup の場合は
上位→下位という影響関係だけ考えれば良い、
と思うのですがどうでしょう。

でないとシーングラフを使うメリットがないです。



-- 
ENDO Yasuyuki <yasuyuki@xxxxxxxxxxxx>
http://www.javaopen.org/yasuyuki/ (Personal/Japanese Only)
http://www.javaopen.org/jfriends/ (Japanese Only)


------------------------------------------------------------------------
  ★豪華賞品が呼んでいるぅ〜。『あなたのプロバイダーはなぁ〜にぃ〜?』
          http://ap.infoseek.co.jp/navi.html