Unity3d 物体坐标从左手转到右手

不同的四种方法

          Matrix4x4 mat = Matrix4x4.TRS(_Model.position, _Model.rotation, _Model.localScale);
            print(mat);
            print("---------------------------");
            // 方法一
            mat[0, 2] = - mat[0, 2];
            mat[1, 2] = - mat[1, 2];
            mat[3, 2] = - mat[3, 2];

            mat[2, 0] = - mat[2, 0];
            mat[2, 1] = - mat[2, 1];
            mat[2, 3] = - mat[2, 3];


            // 方法二
            mat.m02 = -mat.m02;
            mat.m12 = -mat.m12;
            mat.m32 = -mat.m32;

            mat.m20 = -mat.m20;
            mat.m12 = -mat.m12;
            mat.m32 = -mat.m32;

            print(mat);
            print("---------------------------");

            //方法三
             Matrix4x4 transMatrix = new Matrix4x4
            {
                m00 = 1, m01 = 0, m02 = 0, m03 = 0,
                m10 = 0, m11 = 1, m12 = 0, m13 = 0,
                m20 = 0, m21 = 0, m22 = -1,m23 = 0,
                m30 = 0, m31 = 0, m32 = 0, m33 = 1
            };
            //方法四
            mat = transMatrix*mat*transMatrix;

            Matrix4x4 tr_inv = transMatrix.inverse;

            print("test");

            print(tr_inv);
            print("---------------------------");
            print(transMatrix);

猜你喜欢

转载自blog.csdn.net/moonlightpeng/article/details/128833859