前言
由于工作的关系,对接引擎就会遇到很多导入导出的问题,这里总结一波。
动画勾选 step
动画导入到虚幻的时候务必要勾选 step
否则动画读取小数位的关键帧会有抖动的问题。
绑定导入
绑定导入到虚幻的时候通常都需要将 normal 的切换为 imported normal
否则一些特殊修改的法线信息就不会导入了
Use T0 As Ref Pose
关于 Unreal 绑定导入最坑爹的属性莫过于这个了
关于这个属性相关的问题几乎无法在网上找到相关的描述
而官方文档的介绍也只是说会将模型动画的第一帧作为绑定 pose
但是在实际流程中,这个选项勾选和不勾选会导致很多很奇怪的问题。
有时候 Maya 导出的绑定文件会导致动作产生奇奇怪怪的错位。
比如某些骨骼会莫名其妙地偏转了一定的度数。
但是神奇的是将 FBX 导回 Maya 查看是一切正常的。
然而如果勾选 Use T0 As Ref Pose 选项就可以解决问题
本来以为勾选就万事大吉了,可是后来有出了差错。
如果勾选 Use T0 As Ref Pose 有时候会导致法线的显示异常。
而且只会对 imported 的法线产生问题,如果是 computed 的法线则显示正常。
结果是两个问题无论是否勾选都会出问题。
动作错位
后来折腾了好久也没有解决方案,只好求救于我的导师了。
关于 Pose 的问题,我导师很快就给出了一针见血的解决方案。
原来这个问题和 Maya 绑定的 bindpose 有关,有可能是绑定文件修改过多导致产生多个 BindPose
bindpose 直接不匹配就有可能导致偏移问题。
解决方法也很简单,只需要将这些 bindpose 全部删除掉,重新生成一个新的 bindpose 就可以了。
这个操作也不影响到绑定和权重,非常方便。
bindpose 的生成可以选择模型执行 Maya 的 mel 命令
1 | dagPose -bp -save |
法线错乱
最初按照上面的方法的确解决了pose的问题,因此法线错乱的问题也就放在一边没有管了。
不过按照导师的说法就是尽量不要勾选 Use T0 As Ref Pose
可是后来就出现了完全反过来的情况。
也就是勾选 Use T0 As Ref Pose 的话法线是正常的,但是如果不勾选的话 法线 是错乱的。
于是我又测试了好久,期间尝试对重新绑定等操作。
于是我中间的测试过程中,尽管中间过程中有些错误的操作,但是重新绑定的模型导入到引擎就好了。
于是我就把完善的后续工作交给外包处理,等重新绑定完成了之后再放到引擎测试。
结果回来的模型还是错乱的。
于是我人都傻了,为啥我之前简单的测试是可以的呢?
于是我自己完善了一边导出流程,结果发现自己导出的也是有问题的。
于是我又对比了之前那个不完善版本的区别,最后发现模型有转了 90 度的区别。
这边绑定模型都是默认转了 90 度对接到引擎里面的。
而这个模型我把他旋转到 0 度导入到引擎就是正确的法线效果了。
这个法线让我目瞪口呆了,后来咨询了绑定外包之后。
得出大概是模型没有锁定法线导致的。
的确模型的法线是特殊修改过的,而且不可以在 90 度的状态下锁定,必须要在 Maya 的 0 度状态下锁定法线。
然后再旋转回 90 度,这样子导出的模型就不会有奇奇怪怪的法线问题了。
总结
没想到虚幻的导入会涉及到这些问题。
特别是 Use T0 As Ref Pose 这个选项居然会影响到法线。
不过都还好,问题最后都顺利解决了。