UE和Unity坐标系转换

内容将会持续更新,有错误的地方欢迎指正,谢谢!
 

UE和Unity坐标系转换
     
TechX 坚持将创新的科技带给世界!

拥有更好的学习体验 —— 不断努力,不断进步,不断探索
TechX —— 心探索、心进取!

助力快速掌握 UE和Unity 坐标系转换

为初学者节省宝贵的学习时间,避免困惑!



一、左手坐标系和右手坐标系


在三维坐标中,根据Z轴(深)的不同方向,分为“右手系”和“左手系”两种坐标系。当Z轴的方向是(在一般二维直角坐标系上:向右为X轴,向上为Y轴)从眼前伸向深处时,该坐标系是左手系,反之则是右手系。

左手坐标系:

在左手坐标系中,可以用左手来演示坐标轴的方向。

  • 大拇指指向 X 轴正方向,X 轴是水平的,朝右为正方向;
  • 食指指向 Y 轴正方向,Y 轴是垂直的,朝上为正方向;
  • 中指指向 Z 轴正方向,Z 轴垂直于屏幕,向观察者为正方向。

右手坐标系:

在右手坐标系中,可以用右手来演示坐标轴的方向。

  • 大拇指指向 X 轴正方向,X 轴是水平的,朝右为正方向;
  • 食指指向 Y 轴正方向,Y 轴是垂直的,朝上为正方向;
  • 中指指向 Z 轴正方向,Z 轴垂直于屏幕,背离观察者为正方向;

在这里插入图片描述

二、UE和Unity坐标系


UE和Unity一样也是采用左手坐标系,在3d软件中,大多数软件都用红色代表x轴,绿色代表y轴,蓝色代表z轴。不同的是:
  • 在UE中X轴代表前方,Y轴代表右方,Z轴代表上方;

请添加图片描述

  • 在Unity中X轴代表右方,Y轴代表上方,Z轴代表前方;

在这里插入图片描述

三、UE和Unity坐标系的转换


  • pitch 俯仰角

    UE:绕 Y 轴旋转
    Unity:绕 X 轴旋转

  • yaw 偏航角

    UE:绕 Z 轴旋转
    Unity:绕 Y 轴旋转

  • roll 滚转角

    UE:绕 X 轴旋转
    Unity:绕 Z 轴旋转

using System;
using UnityEngine;

public class TransformInfo 
{
    
    
    //X轴坐标(单位:米)
    public float x;
    //Y轴坐标(单位:米)
    public float y;
    //Z轴坐标(单位:米)
	 public float z;
    //俯仰,UE:Y轴旋转角 Unity:X轴旋转角(单位:度)
    public float pitch;
    //偏航,UE:Z轴旋转角 Unity:Y轴旋转角(单位:度)
    public float yaw;
    //滚转,UE:X轴旋转角 Unity:Z轴旋转角(单位:度)
    public float roll; 
}
public class CoordinateConversion: MonoBehavior
{
    
    
	/// <summary>
	/// 数据类型从unity转换为ue4数据类型
	/// </summary>
	/// <param name="sensorInfo"></param>
	/// <returns></returns>
	public TransformInfo ConvertUe4(TransformInfo transformInfo)
	{
    
    
	    // ue4     unity
	
	    float x = transformInfo .z;
	    float y = transformInfo .x;
	    float z = transformInfo .y;
	    float roll = -transformInfo .roll;
	    float pitch = -transformInfo .pitch;
	    float yaw = transformInfo .yaw;
	
	    transformInfo .x = x;
	    transformInfo .y = y;
	    transformInfo .z = z;
	    transformInfo .roll = roll;
	    transformInfo .yaw = yaw;
	    transformInfo .pitch = pitch;
	
	    return transformInfo ;
	}
	
	/// 数据类型从ue4转换为unity数据类型
	public TransformInfo ConvertU3D(TransformInfo transformInfo)
	{
    
    
	    // unity  ue4
	    float z = transformInfo.x;
	    float x = transformInfo.y;
	    float y = transformInfo.z;
	    float yaw = transformInfo.yaw;
	    float roll = -transformInfo.roll;
	    float pitch = -transformInfo.pitch;
	
	    transformInfo.x = x;
	    transformInfo.y = y;
	    transformInfo.z = z;
	    transformInfo.roll = roll;
	    transformInfo.yaw = yaw;
	    transformInfo.pitch = pitch;
	    
	    return transformInfo;
	}
}





TechX —— 心探索、心进取!

每一次跌倒都是一次成长

每一次努力都是一次进步

END
感谢您阅读本篇博客!希望这篇内容对您有所帮助。如果您有任何问题或意见,或者想要了解更多关于本主题的信息,欢迎在评论区留言与我交流。我会非常乐意与大家讨论和分享更多有趣的内容。
如果您喜欢本博客,请点赞和分享给更多的朋友,让更多人受益。同时,您也可以关注我的博客,以便及时获取最新的更新和文章。
在未来的写作中,我将继续努力,分享更多有趣、实用的内容。再次感谢大家的支持和鼓励,期待与您在下一篇博客再见!

猜你喜欢

转载自blog.csdn.net/caiprogram123/article/details/135394792
今日推荐