👨‍🌾

Quaternionの順序

2022/09/13に公開

概要

Quaternionの順序をまとめます。
Unity環境です。

X軸(赤)回転

   IEnumerator test3()
    {
        int i = 0;
        while (true)
        {
            var rot1 = Quaternion.AngleAxis(1, new Vector3(1, 0, 0));

            //元々の回転軸で回転させたい 場合、かけたい回転(rot1)をみぎ
            m_target.transform.localRotation = m_target.transform.localRotation *rot1; 

            // 固定の回転軸で回転させたい
            m_target2.transform.localRotation =rot1 *  m_target2.transform.localRotation ; 
            if (i >= 360) break;
            i += 1;
            yield return new WaitForSeconds(0.01f);
        }
    }

m_target2.transform.localRotation =rot1*m_target2.transform.localRotation ; の場合、UnityEditorでrot_xのみが変化します。


Y軸回転(緑)

UnityのHierarchyはAxisを選択している。x、y、zが変化している。

   IEnumerator test4()
    {
        int i = 0;
        while (true)
        {
            //var rot1 = Quaternion.AngleAxis(1, new Vector3(1, 0, 0));
            var rot2 = Quaternion.AngleAxis(1, new Vector3(0, 1, 0));

            //元々の回転軸で回転させたい 場合、かけたい回転(rot1)をみぎ
            m_target.transform.localRotation = m_target.transform.localRotation * rot2;

            // 固定の回転軸で回転させたい
            m_target2.transform.localRotation = rot2 * m_target2.transform.localRotation;
            if (i >= 360*2) break;
            i += 1;
            yield return new WaitForSeconds(0.01f);
        }
    }

参考)
https://virtualcast.jp/blog/2019/11/quaternion/
https://qiita.com/yaegaki/items/4d5a6af1d1738e102751

動画からアニメGIF
https://qiita.com/Bacillus/items/4c733c4c5f7b06dce462

Discussion