[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:00220] Re: Transform3D
-------------------------------------------------------------------
○今年のバレンタインはアンナミラーズの焼きたてパイで○○○○○○○
アンナミラーズインターネットショッピングでは、新発売のチョコレート
チーズケーキパイを特別価格、4,000円(送料・消費税込み)でご提供中。
ご注文は2月10日までです。 下記URLへ今すぐアクセス!
=======> http://shopping.biglobe.ne.jp/kaze/AnnaMillers/
-------------------------------------------------------------------
Konnoさん、こんにちは。
Transform3Dについて調べていただいてありがとうございます。
やはり、Transform3D.set(Quat4f)の挙動は不可解ですよね。
> 次に、set(Quat4f)/set(AxisAngle4f)を、
> setRotation(Quat4f) / setRotation(AxisAngle4f)をsetIdentity()
> と組み合わせて、以下のように同様の動作をするように設定してみた
> のですがこちらは問題なく正常な値が返されてきました (^ ^)
>
> Transform3D t3d = new Transform3D();
> t3d.setIdentity(); // この場合に行列生成直後なので必要は
> // ありませんが .....
> t3d.setRotation(q4f);
> t3d.get(q4f); // この結果はOK
こちらの方法を試させていただいたところ、確かに、setRotation(q4f)
を使用すると正しくQuat4fを取得することができました。
ところが、setRotation(q4f)したTransform3Dオブジェクト
に対して一度でもmul(Transform3D)してしまうと、get(Quat4f)では
正しいQuat4fオブジェクトが取得できないことがあるようです。
Transform3D t3d0 = new Transform3D();
t3d0.setRotation(q4f0);
t3d0.get(q4f0); // OK
Transform3D t3d1 = new Transform3D();
t3d1.setRotation(q4f1);
t3d0.mul(t3d1);
t3d1.get(q4f1); // NGのときがある
このあたりは、注意して使用しなければいけないかもしれません。
> #仕様を読む限り、どうしてもSunの実装ミスであると考えてしまうの
> #ですが、皆さんはどう思われますでしょうか?
私もバグのような気がします。
それでは失礼します。
--
==================================================================
株式会社カーネル PHONE 0298(57)7457 FAX 0298(57)7458
小原 一太朗 E-MAIL kernel@xxxxxxxxxx
==================================================================