Unity场景、模型等资源转UE4

  

共同点:

在世界空间和模型空间内,UE4、Unity均为左手系

不同点:

轴向

模型空间内,UE4、Unity轴向的对应关系如下:

轴向 UE4 Unity
向前 +x +z
向右 +y +x
向上 +z +y

旋转

欧拉角Euler Angles)使用三个角度值来描述物体在三维空间的任意朝向

它的基本思想是让物体开始于“标准”方位(物体坐标轴和惯性坐标轴对齐),每次让其绕着物体坐标系某个轴进行旋转,通过三次旋转就可以达到最终朝向

如果从惯性坐标系到物体坐标系,欧拉角顺序为:m-n-p;那么,从物体坐标系到惯性坐标系,旋转的顺序就是相反的,为p-n-m

合法的欧拉角组中,唯一的限制是,任何两个连续的旋转,必须绕着不同的转动轴旋转,因此,一共有12种顺规。

欧拉角分为两大类:

别种欧拉角组(Proper Euler angles,仅绕两个不同的轴进行旋转): z-x-z、x-y-x,、y-z-y、z-y-z、x-z-x、y-x-y

泰特-布萊恩角(Tait–Bryan angles,三次都绕不同的轴进行旋转) :x-y-z、y-z-x、z-x-y、x-z-y、z-y-x、y-x-z

游戏中使用的是泰特-布萊恩角(Tait–Bryan angles)

泰特-布萊恩角(Tait–Bryan angles)又称Cardan angles; nautical angles; heading, elevation, and bank; or yaw, pitch, and roll

Yaw(shaking your head to say "no") ,又称heading,方位角

Pitch (think nodding to say "yes"),又称elevation, 俯仰角

Roll (tilting your head sideways while looking in a specific direction) ,又称bank,横滚角

UE4欧拉角顺序为:Yaw-Pitch-Roll

欧拉角 旋转轴方向 存储分量
横滚角(Roll) -x(向后) x
俯仰角(Pitch) -y(向左) y
方位角(Yaw) +z(向上) z

Unity欧拉角顺序为:Yaw-Pitch-Roll

欧拉角 旋转轴方向 存储分量
横滚角(Roll) +z(向前) z
俯仰角(Pitch) +x(向右) x
方位角(Yaw) +y(向上) y

值得注意地是,虽然UE4和Unity的欧拉角顺序相同,但两者在Pitch和Roll分量的旋转方向是相反的

若要将Unity的场景转换到UE4中,需要进行如下操作:

(1) 计算场景中GameObject在世界坐标系中Location、Rotation和Scale,然后按照如下对应关系写入到UE4中

string.format("RelativeLocation=(X={0:F6},Y={1:F6},Z={2:F6})", UnityWorldPosition.Z * 100, UnityWorldPosition.X * 100, UnityWorldPosition.Y * 100);
string.format("RelativeRotation=(Roll={2:F6},Pitch={0:F6},Yaw={1:F6})", -UnityWorldRotation.Z, -UnityWorldRotation.X, UnityWorldRotation.Y);
string.format("RelativeScale3D=(X={0:F6},Y={1:F6},Z={2:F6})", UnityWorldScale.Z, UnityWorldScale.X, UnityWorldScale.Y);

注:Location要乘以100,原因是untiy的单位是m,而UE4的单位是cm

(2)mesh模型导入到UE4中时,需要将Pitch俯仰角设置成 -90,另外Location也要乘以100

原文地址:https://www.cnblogs.com/kekec/p/12209526.html

时间: 2024-08-01 06:59:52

Unity场景、模型等资源转UE4的相关文章

Unity Awards 2018最佳资源

好的工具与资源,将帮助你的开发,达到事办功倍,今天我们将为大家介绍荣获Unity Awards 2018最佳资源的获奖作品. 最佳艺术工具:Aura - Volumetric Lighting Aura是由开发者Raphael Ernaelsten创作的一个Unity体积光照解决方案.Aura 在Unity Awards 2018荣获最佳艺术工具. Aura可以模拟光线在环境介质中的散射效果,以及环境中无法通过肉眼或摄像机观察的微粒光照效果,即“体积雾”效果,打造出非常逼真的光照环境. Aura

Unity开发实战探讨-资源的加载释放最佳策略简要心得

Unity开发实战探讨-资源的加载释放最佳策略简要心得 看过我另外一篇关于Unity资源释放随笔<Unity开发实战探讨-资源的加载释放最佳策略>如果觉得略微复杂,那么下面是一些比较简要的心得体会: 概括 常用资源加载的方法有三种:静态,Resources内部资源,AssetBundle外部资源 资源释放的方式 有二种:立刻释放和统一释放. 静态 静态就是资源直接放场景,静态资源无法立刻释放,但场景关闭由引擎统一释放,开发者无法干预,所以最为无脑. 但静态过于死板,除了整个场景生命周期中必须使

【Unity】4.2 提升开发效率的捷径--导入Unity自带的资源包

分类:Unity.C#.VS2015 创建日期:2016-04-06 一.简介 Unity自带的资源包也称为标准资源包.换言之,Unity自带的所有标准资源包导入到Unity项目中以后,都会放在Project视图的Standed Assets文件夹下.如果是多平台,除了Standed Assets文件夹以外,还会有一个Edit文件夹. 如果你打开别人写的Unity项目,只要看到项目中包含有Standed Assets文件夹和Edit文件夹,你就应该马上想到,这些文件夹下的资源都是从Unity自带

在Unity场景中更改天空盒的步骤

一.介绍 目的:在Unity场景中制作一个天空盒. 软件环境:Unity 2017.3.0f3,VS2013. 参考 skybox 二.自制一个天空盒 1,创建一个材质material 2,更改属性为Skybox/6 Sided,并且把六个面的图片都选好 三.修改天空盒 在菜单栏Window属性下,选中Lighting -> settings,会出现下面对话框 修改后效果如下 原文地址:https://www.cnblogs.com/OctoptusLian/p/8932428.html

基于全景照片和场景模型计算导出纹理贴图

基于全景照片和场景模型计算导出纹理贴图 首先,假设全景的位姿是已知,一般可以通过传感器测量或者相关标定方法计算得到:另外,还假设相机中心与模型坐标中心重合(只有这样才能将全景和模型映射到标准球上):这里重点介绍如何基于全景照片和场景模型(.obj)计算导出纹理贴图(.png).主要用到一种球面映射的思想,具体实现如下: 一.实现思路 1.全景照片标准化,扩大填充为2:1大小的全景照片,如果已经是2:1的全景无需这种扩充变换. 2.标准全景照片映射到标准球面上.(标准球是半径为1m的空间球体) 3

Unity场景道具模型拓展自定义编辑器

(一)适用情况 当游戏主角进入特定的场景或者关卡,每个关卡需要加载不同位置的模型,道具等.这些信息需要先在unity编辑器里面配置好,一般由策划干这事,然后把这些位置道具信息保存在文件,当游戏主角进入后根据保存的文件信息加载模型道具.如 跑酷场景的金币 赛车赛道的道具 (二)实例文件格式 Json 需要导入SimpleJson 具体使用方法可以看我另外一篇<Unity游戏数据用Json保存>,有详细介绍 http://www.cnblogs.com/July7th/p/4808095.html

【转载】Unity 优雅地管理资源,减少占用内存,优化游戏

转自:星辰的<Unity3D占用内存太大的解决方法> 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化. Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大. Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时 动态加载,可以指定路径和来源的. 其实场景里所有静

Unity AssetBundle打包与资源更新

Unity的AssetBundle打包是一件让人头疼的事情,当我接手这项工作时,我以为最多只用两个周就可以把整个打包和资源热更新的流程搞定,结果还是花了一个月,期间踩坑无数,总结出来希望能够节约别人的时间. (一)你的游戏项目是什么类型的? 在开始写打包的Editor脚本之前,你最好先详细考察一下你们的游戏项目是什么类型?是端游,手游还是页游?因为这三者涉及到bundle包的资源管理策略截然不同,如果你们是跨平台发布,那我建议你最好用宏来切换管理策略. 我先分享一下我曾经接手过打包工作的两个项目

解决Unity中模型部件的MeshCollider不随动画一起运动的问题

Unity的3d游戏开发中,经常遇到需要将模型的某一部分(比如武器),单独做碰撞处理的情况. 导入模型后,给武器部分添加MeshCollider,MeshCollider的Mesh通常包含在模型里,如图: 勾选MeshCollider的Convex以及Inflate mesh后,在场景中能看到生成的绿色网格碰撞器. 但是运行后,会发现这个Collider并不随着模型动画一起运动. 不知道是不是问题太小白的原因,网上很少有相关问题的讨论,不少相关的问题都没有答案. 最终在csdn上翻到一篇文章,解