Unity3D游戏过场动画制作以及遇到的坑

发表于2017-04-20
评论1 5.8k浏览

方案介绍:

         相信绝大多数游戏里都有酷炫的过场动画,制作方式无外乎两种。

         1.         视频

         2.         利用现有场景资源制作

         用视频制作过场动画,简单粗暴,并且效果可以非常酷炫,但同样的占用的空间也会很大,所以游戏内也会有不少过场动画是利用现有的场景资源,通过调度角色和镜头来实现。这种方案制作的过场动画效果会差一点,但是不会带来的额外的存储开销。本文就是介绍第二种过场动画的制作方式以及会遇到的坑。


实现思路:

         美术同学(导演)在3DMax里设计好镜头调度,以及角色和Boss(统称演员)的位置调度,然后导出带有镜头和“演员们”的动画信息的FBX动画文件(仅仅是动画文件,没有任何其他资源),大小只有几十KB左右。如下图,里面只包含了point_playerpoint_camerapoint_boss等三个骨骼点。

         在游戏中,在特定场景,将相机,角色,以及Boss分别挂载到对应的挂点上,然后播放该模型对应的动画,就实现了相机和演员们的调度,当然也可以额外加一些点来挂载酷炫特效。这样就形成了效果还算不错的过场动画。


遇到的坑:

         思路是巧妙的,但在实现过程中,却没有那么顺利。在真正导入到游戏里的时候,发现相机里看到的东西和3DMax里并不完全一样。比如下面的对比图。左边是Unity里面的效果,右边是3DMax里面的效果(请忽略边景,只看角色在镜头里面的位置就好了)。

         明显看得出来,导入到Unity以后,角色离相机更近,并不完全一致。我们的要求是必须对美术同学所见即所得。接下来就开始排查问题。


解决过程:

排查过程如下:

1.       先确定3DMax导出来的动画挂点,到Unity以后,坐标值,旋转值等是否和3DMax一致。(一致)

2.       第一步确定以后,那肯定是相机的问题了。然后排查到Unity3DMax里面相机的实际焦距并不一致,即使数值一样。(两个软件的数值系统不一样)

3.       接下来调试焦距。实际焦距一致以后,问题得到很大改善,但两个画面所显示内容大小有差异。想到分辨率是否一致。

4.       如上猜想,验证得到目前美术同学和开发同学在3DMaxUnity下的工作分辨率并不一致。调整后,画面完全一样。

5.       至此,问题得到解决,结果如下图。


总结:

1.       3DMax里面导出来的动画到Unity里面,节点位置和旋转其实是没差别的。

2.       3DMax下的相机焦距和Unity下的相机焦距设置不一致。需要统一。

3.       3DMaxUnity下的相机分辨率不一致,需要统一。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引