Unity: Quaternionの使い方 その1
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

Unity: Quaternionの使い方 その1

2014-04-14 02:18
    どうもとりすーぷです。
    自分へのメモも込めて、Unityで役に立つ知恵や技を書いていこうと思います。

    まず最初はQuaternionの使い方について紹介したいと思います。

    Quaternionとは

    Quaternionとは日本語で「四元数」と呼ばれているもので、以下の様な4次元のベクトルで表現することが一般的です。

    q = ( x, y, z, w)

    Quaternionは3次元上における姿勢や回転を計算するのに用いられることが多いです。
    複雑な回転行列等の式を簡略化して計算することができるため、3Dの演算をする上で欠かせない要素の一つとなっています。
    真面目に学ぼうとするとクッソややこしいので、今回はUnity上での使い方のみを紹介したいと思います。(もちろん原理を自体を知っておく事も大切ですけども)

    UnityにおけるQuaternionの扱い

    Unity上で用いられているQuaternionは果たしてどういった意味を持つのでしょうか。
    まずは以下の画像を見てください。



    適当なCube(向きがわかるように変な形にしている)をY軸に対して90度回転させた形で配置しました(Rotationが(0, 90, 0) となっている)

    このオブジェクトに下記のスクリプトを貼り付けて実行するとどうなるか見てみましょう。



    結果


    Quaternion自体にはよくわからない値が入っているが、オイラー角に変換したものはインスペクタービューに表示されている値と同じものになりました。

    このことから、Quaternionが何を意味するのかわかると思います。
    • transfrom.rotationはQuaternionである
    • Quaternionはオブジェクトの姿勢(回転)を示す
    • Quaternionの値はぱっと見で何を意味するか理解できない
    • インスペクタービューの角度値はオイラー角に変換された値である(元はQuaternion値)
    そもそもQuaternionは計算を簡単にするために使われているものであり、Quaternion値を直接見て姿勢がどうなっているかを理解することはまず無理です。
    なので、Unityで姿勢を制御する時は以下の方法を利用することになります。
    Quaternion構造体に備え付けの便利関数群を使う
    オイラー角に一回変換してから操作する
    (直接Quaternion値を書き換えるようなことは普通はしません)



    つづく




    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。