开发手札:UnrealEngine和Unity3d坐标系问题
最近把一套网络模块和一套组件模块从u3d改造到ue4。
网络模块通用性很高,毕竟协议都是通用网络协议,改造后没啥问题。
但是改造组件模块的时候就遇到了问题。
首先,unity3d的坐标系是标准左手坐标系,如下:
同时自己的几何算法都是基于左手坐标系计算的。
结果在ue4中移植代码的时候发现,ue4居然是非标坐标系,既不是directx的左手坐标系也不是opengl的右手坐标系,而是如下:
一种x轴朝前、y轴朝右、z轴朝上的坐标系。这就麻烦了,不论是左右手坐标系,我仅需少量修改就能自适应,避免改变美术输出资源的标准。
但是基于ue4的这种坐标系,我自己在blender中用按照同样的坐标系模式建模,如下:
然后按照左手坐标系的标准导出到ue4才能应用标准左手几何算法。
我顺便测试移植了三个常用的旋钮组件,分别是自由旋钮、回弹旋钮和多档位旋钮,如下:
我得在建模工具里预先把坐标系转换成左右手坐标系后,进ue4才能正常做几何运算,现在都搞不懂怎么跟美术同事一起定建模规范了。
当然在unity就方便很多,正常建模导入unity就行,如下:
我个人还是比较喜欢标准左右手坐标系的三维引擎,几何算法匹配起来方便。