栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

Unity坐标转换

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unity坐标转换

文章目录
  • 1.前言
  • 2.坐标转化
    • 2.1 普通转化
    • 2.2 左右手坐标系转化
  • 3.结语

1.前言

本文从基本的坐标系转化(即均为左手或者右手)开始,后续给出左右手坐标系转化的方法,参考众多文章,只贴结论和方法,细节参考后续的参考文献。

2.坐标转化 2.1 普通转化

在同一坐标系的转化比较简单,但是为了方便计算通常会采用RT矩阵进行计算,类似与渲染中的仿射变换。计算公式如下:
如果知道ΔR和ΔT,就比较容易计算,根据一点在不同坐标系下的数值可以如下方案计算ΔR和ΔT:

    public static Pose ComputeDeltaPose(Pose localPose,Pose cloudPose)
    {
        Vector3 localPosition = localPose.position;
        Quaternion localRotation = Quaternion.Normalize(localPose.rotation);

        Vector3 cloudPosition = cloudPose.position;
        Quaternion cloudRotation = Quaternion.Normalize(cloudPose.rotation);

        Quaternion deltaRotation = localRotation * Quaternion.Inverse(cloudRotation);
        Vector3 deltaPosition = localPosition - deltaRotation * cloudPosition;

        return new Pose(deltaPosition, deltaRotation);
    }

也可以采用unity的matrix4X4直接求出ΔRT矩阵。

2.2 左右手坐标系转化

左右手坐标系转化比较简单,一般只需要某一个轴反向即可,在unity将z轴取反即可,即位置x,y不变,z值取反。旋转值(四元数),w和z值不变,x,y取反。
总结如下:
哪个轴反转,坐标位置对应的那个轴数值取反,旋转则w值和对应那个轴不变,其他取反。

3.结语

U3d在与一些算法打交道时,尤其在做mr设备时,经常遇到坐标转化问题,可以在转到相同手系坐标后在进行相关的切换。
参考文献:
文献一
文献二
文献三

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/900418.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号