ジンバルロックを体験してみよう!3(ビルトイン関数編)


ジンバルロックを体験してみよう!3(ビルトイン関数編)PV3Dでのジンバルロックを確認するのもよいけど、ビルトイン関数ではどうなんだろう、ということで作ってみた。

Get Adobe Flash player

★ジンバルロックを体験してみよう!3

0.左上のrotationXYZの立方体に注目
1.初期状態(又はReset後)に「Y+=30」を三回クリックして、
Y軸90度回転をする。
2.「Z+=30」をクリックしてみる。Z軸回転したことを確認。
3.「Z-=30」をクリックして戻す。
4.「X-=30」をクリックすると、、、アレレ!「Z+=30」と同じ
Z軸回転しちゃうぞ!
これがジンバルロックであります。
いろいろ回転させていろいろ試してくださいませ。

=============================

AS3.0(FP10)のビルトイン関数における、
rotationX,appendRotation,prependRotation
の使い分け。Pepervision3D(PV3D)との比較。

PV3D版★ジンバルロックを体験してみよう!
と見比べながら読むことを推奨。

まずそもそも、X,Zをクリックした時の回転方向が異なることに注目。
これは、PV3Dが左手系、ビルトイン関数では右手系であることによる違い。
正確にはX,Zが違うというより、Yが逆になっている。
PV3Dは既存のグラフィック系3Dソフトのセオリーに従った結果、
ビルトイン関数の方は、なによりこれまでのFlashの体系を優先させた結果だと思う。

■rotationXYZ
簡単なものなら、rotationXで足りるものもあるんだろうけど、
自在に回転させるとなると、どうしてもジンバルロックが問題になる。
値がわかりやすいってのが強み。
PV3DのrotationXYZに相当(名前も同じだから間違えないね!)。

■appendRotation
内部的にはQuaternionを使っているので、ジンバルロックが無い。
PV3DのQuaternionに相当。

■prependRotation
内部的にはQuaternionを使っているので、ジンバルロックが無い。
PV3DのlocalRotationXYZに相当。

参考
http://blog.r3c7.net/?p=193
http://www.kuma-de.com/blog/1-application/1-flash/2009-04-19/395

▼Wonderfl
http://wonderfl.net/code/35c2aac390baca65de536ca2d938336d691e758d

▼ActionScript AS3(FP9)