Unity3D游戏过场动画制作以及遇到的坑
方案介绍:
相信绝大多数游戏里都有酷炫的过场动画,制作方式无外乎两种。
1. 视频
2. 利用现有场景资源制作
用视频制作过场动画,简单粗暴,并且效果可以非常酷炫,但同样的占用的空间也会很大,所以游戏内也会有不少过场动画是利用现有的场景资源,通过调度角色和镜头来实现。这种方案制作的过场动画效果会差一点,但是不会带来的额外的存储开销。本文就是介绍第二种过场动画的制作方式以及会遇到的坑。
实现思路:
美术同学(导演)在3DMax里设计好镜头调度,以及角色和Boss(统称演员)的位置调度,然后导出带有镜头和“演员们”的动画信息的FBX动画文件(仅仅是动画文件,没有任何其他资源),大小只有几十KB左右。如下图,里面只包含了point_player,point_camera,point_boss等三个骨骼点。
在游戏中,在特定场景,将相机,角色,以及Boss分别挂载到对应的挂点上,然后播放该模型对应的动画,就实现了相机和演员们的调度,当然也可以额外加一些点来挂载酷炫特效。这样就形成了效果还算不错的过场动画。
遇到的坑:
思路是巧妙的,但在实现过程中,却没有那么顺利。在真正导入到游戏里的时候,发现相机里看到的东西和3DMax里并不完全一样。比如下面的对比图。左边是Unity里面的效果,右边是3DMax里面的效果(请忽略边景,只看角色在镜头里面的位置就好了)。
明显看得出来,导入到Unity以后,角色离相机更近,并不完全一致。我们的要求是必须对美术同学所见即所得。接下来就开始排查问题。
解决过程:
排查过程如下:
1. 先确定3DMax导出来的动画挂点,到Unity以后,坐标值,旋转值等是否和3DMax一致。(一致)
2. 第一步确定以后,那肯定是相机的问题了。然后排查到Unity和3DMax里面相机的实际焦距并不一致,即使数值一样。(两个软件的数值系统不一样)
3. 接下来调试焦距。实际焦距一致以后,问题得到很大改善,但两个画面所显示内容大小有差异。想到分辨率是否一致。
4. 如上猜想,验证得到目前美术同学和开发同学在3DMax和Unity下的工作分辨率并不一致。调整后,画面完全一样。
5. 至此,问题得到解决,结果如下图。
总结:
1. 3DMax里面导出来的动画到Unity里面,节点位置和旋转其实是没差别的。
2. 3DMax下的相机焦距和Unity下的相机焦距设置不一致。需要统一。