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);

这想这种方式应该不对,只是对旋转矩阵需要转化。对有平移分量元素应该不变。上面的操作是都变化

a02, a12, a20, a21变为负的即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值