《CF穿越火线》引擎动画案例分享(下):迭代整合和引擎动画的误区

作者:弓振涛 Unity官方平台 2019-07-03
在《CF穿越火线》引擎动画案例分享(上)中,喜悦娱乐副总经理兼技术总监弓振涛分享了制作《CF穿越火线》引擎动画案例过程中人和资产的调度,以及并行分工和分级审核二个案例。

本文将分享第三个案例-迭代整合和使用引擎做动画时的一些误区。

演讲内容

我们分享了并行分工和分级审核二个案例,现在分享第三个案例:迭代开发。这是关于Timeline内容,也是后半
场的重点。

我们还是分二个角度来分析,从人的调度,主要是二个关键的角色:数字资产管理员和Timeline管理员。

在传统动画中也会有数字资产的管理员。但对于引擎动画,进入到引擎之后,很多资产是需要二次加工的,例如我们要在Model Importer中做一些设置,包括制作的动画也要在FBX Importer中设置,制作预制体。

从资产调度,制作的原始资产,DCC的资产,在工程目录中怎么去组织?怎么去放置?Timeline怎么去设计?


从下图右边的循环可以看出,从起点DCC工具制作的资产开始,跟传统动画是一样的,按照美术规范和技术规范,去制作每项内容。不管你用什么样的工具,并不会有特别多的要求,你喜欢用Maya制作角色都没关系,只需要最后按我们的规范导出内容。

例如,使用Maya制作的镜头,导入摄像机的时候,需要按照FBX格式导出,然后只有摄像机的信息。不要像传统做镜头,这个镜头有镜头动画、角色动画、道具动画都在一起,我们肯定不需要这种。

按照要求导出蒙皮骨骼动画时,需要把焦距,包括使用的镜头是35毫米的学院派镜头,还是70毫米的IMAX镜头,都要设置好,还有传感器,Sensor Size,包括后镜的偏移量,Lens Shift等。

Marvelous Designer导出布料模拟的时候,要Alembic这种格式提供,包含里面只能有动画信息,不要包含其它的东西。因为这个文件非常大,随便模拟一个东西时,在磁盘上,几十TB或上百TB就没了。

使用Substance Designer制作材质,现在这个工具也非常时髦和主流,因为它做的程序化材质非常棒,而且体积非常小。我们可以在Unity中进行二次的修改、参数的修改。

当导出FBX格式的时候,在SD里导出的时候,设置的参数类型一定是Unity能够识别的。


作为数字资产管理员,第一个责任肯定是审核验收资产。资产管理员需要对资产做一些必要的改动,然后制作成预制体,放到Unity引擎里面。

例如在工程中,Assets是最原始的资产管理目录,资产管理员收到的一些AE特效和NUKE制作的特效,包括一些Alembic的文件、布料的模拟、音频等内容。


数字资产管理员的角色更像一个配菜师,把菜洗好、切好放在案板上。这时要等待我们的大厨Timeline管理员出场。Timeline管理员需要考虑的是,我以什么样的方式把资产放到Timeline里,会制作出什么样的效果?

数字资产管理员和Timeline管理员是二个完全不一样的工种,思考方式也不一样。Timeline管理员是基于引擎的,我怎么设计Timeline的结构,从而让这个结构更合理,让传统团队中动画师和特效师都能够很开心的同时工作。这是Timeline管理员要去思考的问题。

Timeline管理员要设计Timeline场景,项目中的组长场景,导演场景、每个Timeline场景的轨道、轨道的资产要怎么去设计,才能符合我们拍摄的需求。

我们通过组长或执行导演去选拔Timeline管理员,他们需要对制作流程非常熟悉,并且具备一定的美感,也要知道如何跟人员协调,包括和外包对接的时候,知道痛点在什么地方,知道哪个地方会导致项目停滞。

需要说明这不是什么标准,只能说是每一个团队策划项目的时候,选择出一个适合自己的,大家还是要按照自己实际项目情况进行。


我们先看Timeline场景的设计,设计Timeline场景的时候,我们的思维要先回到游戏。

Unity是擅长制作游戏的工具,那么游戏里面如果是程序员,一定是想到借助一个概念:全局变量和局部变量。

我们套用一下全局变量,例如有一个全局Post-Processing Stack,在上面有一个Is Global的选项。勾选后,只要在设置好Layer的层,所有的Post-Processing Stack都会生效,尤其是is Global。


我们的思维是什么?在Timeline场景中会有全局的Post-Processing Stack,例如拍摄场景在一个黄昏,我希望设置光线也好、天空也好,包括颜色校正都是正常的情况。

但是可能会有一些自己特殊的需求,例如顺着我们的时间轴线性往前推进的时候,第一个镜头没有什么任何变化,就是黄昏暖暖的光照,但是光线没那么强。

第二个镜头,导演需要一个闪电劈了下来。那么我们需要一个场景,如果使用新的版本,调温度可以用色温去调,把色温调到一万或者更高,色温看上去是非常冷的,甚至发蓝的光。这是特殊的需求,我们只需要在二号镜头改变场景灯光的色温,其它景深、AO则不需要发生改变。

这个时候就产生了一个局部的需求。当然第三个镜头闪电过后恢复平静,第四个镜头时,镜头可能拆分成了04a、04b。


例如闪电后,我们发现草丛中躲避的狙击手,在04a镜头时,焦距的景深可能聚集在枪口上,也就是我们的焦点。04b的时候,景深会慢慢过渡到瞄准镜,或者是狙击手的脸部,这样的一个动态的过程。

这个时候,当时间轴开始运动的时候,击穿第一个镜头没有变化,第二个镜头出现闪电,刚才的过程依次过去。这种思路是相对来说全局和局部的关系。

时间轴最本质的是:通过时间的线性击穿不同的资源,然后这些资源,资产能够控制表象的行为。


类似像镜头也一样,镜头可能做的FOV,FOV可能在20~25之间,不需要特别的大。但下一个镜头中,我们可能需要的是正常的35毫米的焦距,这是我们常规拍摄用到的镜头。

再下一个镜头可能是刘海或头发的特写,我们需要特别大的8毫米的镜头拍摄。这个时候每一个镜头也会有各自的需求,就像Post-Processing Stack,天空盒,灯光都会有这样的需求。


这个时候把概念抽象出来,我们设计Timeline场景的时候,如下图红框部分,首先有一个区域是全局变量,包括:Camera、Post-Processing Stack、Skybox、Light,可能以后还有其它全局的东西我们希望刚开始预置的值贯穿拍摄影片的时间轴,但是每个镜头一定有特殊的值。


下图红框部分的12号镜头,当激活镜头的时候,我们希望镜头的目标发生一些改变,包括角色,灯光都会进行改变。但是Post-Processing Stack不需要改变,使用全局的就可以了,这个时候可以定制每个镜头的需求。


然后我们按照镜头划分,以此类推。


其次,Timeline管理员需要设计Timeline轨道和轨道资产。

下图左边红框部分就是在Timeline窗口中看到轨道的区域,右边是轨道资产的区域。


原生的Timeline里面,现在Unity官方推出的只有一些比较简单的东西,包括:对象控制,动画播放音频,当然也有Cinemachine。Cinemachine的优点,只要用过的人都知道,我只说它的缺陷,因为这是经验的分享。

例如前面提到的镜头,景深的焦点聚集在枪口的时候,这是镜头的前半程,后半程的焦点会跑到后面。如果我们使用Cinemachine要怎么做呢?

Cinemachine有点像Add Component,可以添加一个效果。这个效果只要装了Post-Processing Stack之后,都可以去添加。Post-Processing Stack的效果是跟虚拟摄像头持续的时间是一样的生命周期,也就是进这个镜头有这个效果,出这个镜头,效果就结束了。


像刚刚说的狙击手的镜头,制作的时候,我会创建二个虚拟摄像机。

第一个虚拟摄像机焦点就是在枪口,这时我已经调好景深了,各项数值,包括光圈和焦距。


第二个虚拟摄像机的镜头,即6号镜头,06B,我可能就把焦距放在瞄准镜上。这个时候中间做了一个过渡,不管是线性还是Curve的过渡,这时候非常的完美。


但这时候有个问题,比如说导演有个需求,当景深从枪口推进到瞄准镜的过程中,我希望加一个运动模糊Motion Blur,这个时候在下图红框镜头中间的三分之一段,在推进的过程要怎么添加?


一些人说我可以按传统的方法继续拆,把二个虚拟摄像机镜头拆成四个。中间我拆出来这二个,在这二个镜头上,我会在后面放Motion Blur的一个脚本。

如果有别的需求,例如我希望对灯光进行一个校验,在快速推进的时候,这时又来了一个闪电需求,我又需要改变光线的强度。这时不可能无限制地拆下去。而且后面的难度是成指数的,基本上是拆不了。

这个时候应该回顾一下Timeline最简单的需求,在Timeline轨道中,我们希望每个效果都是一个轨道,非常简单独立的,这些轨道可能是由不同角色的艺术家制作的。


这个时候我可能会做一个景深的轨道,这个景深的轨道可能就是前半程交集在我的枪口,后面到了瞄准镜。

这时候想做Motion Blur也可以,只要做一个Motion Blur的轨道就可以了。你的生命周期可以持续的不一样。包括GO控制的,即GameObject控制的,都可以按自己的需要划分,这样就可以形成自己的导演工具。


上图是其中的一个轨道,这个比较简单,在这个镜头时间内持续,出来这个镜头就消失。实际上我们使用的时候,可能角色走进屋子后打开灯,灯亮的状态是动态过程,就像Light GameObject被显式激活了。

但后面持续的很多镜头都会有这样的效果,不可能每个都开一遍灯,尤其做一些特效的时候,它会有重新初始化的过程,非常繁琐。这个时候可以定制自己的需求,像这个镜头持续多少时间内消失存在,或者一直消失,一直存在。


同样的思路,我们可以制作出别的轨道,例如:场景的轨道、景深的轨道、转场的轨道、颜色校正、Light、Motion Blur,包括Speed子弹时间。根据我们的需求做各样各种的轨道,这些轨道就组成了导演工具。

轨道的设计思路其实有二种比较简单直接的。第一种是如果你的能力非常强,有很强的技术美术能力,技术也非常强,那你就把所有资源放一起就好了,因为这样确实非常快,怎么快怎么来,这种思路适合小团队。


但是我们选取的是另一种方案,这种思路更适合大团队。例如:在项目中,你是做镜头的,你就做好自己的镜头轨道就可以了,不要放其他的轨道。

因为当你的项目比较大、做的项目资产比较多的时候,还是逃不掉并行工作的事情,你还没放好Playable,别人可能想放灯光了,别人就要等着你,所以我们是把所有角色工种的轨道全部分开。

最后有一些误区。


我们还是提到一次性成片的问题。其实我们更多的时候做一些落地的商业化项目的时候,更多的是多场景,不可能一集只在一个场景拍,镜头非常多、资产非常多。

这个时候千万不要追求一次性成片,一次性成片确实可以做到非常的酷炫,但是我们建议Timeline时间轴不要超过50个镜头,或者根据拍摄场地区分,尽量不要加载比较大的场景,它还是非常费效率的。


有的人问,如果使用引擎做动画,很多东西可以在引擎里做,是不是就可以放弃之前的东西?

但是导演可能还会拿Premiere串片,因为非常方便,他们已经用惯了,用来贴声音和其它东西上去,可能我们后期还是要用NUKE去做合成,虽然引擎里也可以合成非常酷炫的效果,但是这个成本对于过渡期间的制作还是有很大的成本。

所以不要抛弃传统的动画软件,我们拿Unity也是做一个改进和升级。


也不要追求单一的工程。因为Unity本身可以创建3D模板或HDRP模板,包括Unity版本更新的非常快。例如,我负责角色,我只关心角色制作好之后导入引擎,附上了引擎的材质之后效果怎么样,我不需要更新其它更多的东西,我可以自建一个工程。

或者使用高清晰渲染管线HDRP的时候,我们可以做一些皮肤或植被,这种半透明效果非常好。可能有一些3D拍摄场景,我可以完全自建一个HDRP的工程去做这件事。

这和跟传统做游戏不同,传统做游戏会去找一个固定的版本,搭一个大工程就制作下去了。动画的制作毕竟最后验收的时候会让镜头验收。

尤其像Unity更新,比如Unity 2019更新完了之后,Post-Processing Stack全部改了,不能说做到20集的时候再去更换,这是非常不现实的一件事,所以不要追求单一的工程。


最后是谨慎使用复制功能。使用复制功能的时候,像Post-Processing Stack的数据存储在Profile里面,Timeline的存储数据在Playable里面。

有时候我们创建新场景的时候,确实有非常大的工作量。这时候复制时一定要小心,它们共用的是一份数据资源,千万不要在改后面的镜头时,把前面的数据给改掉,所以谨慎使用这个功能。最好的方式是让技术美术程序化的,批量去创建这种脚本。

谢谢大家!

前文:《CF穿越火线》引擎动画案例分享(上)

作者:弓振涛
来源:Unity官方平台

最新评论
暂无评论
参与评论

商务合作 查看更多

编辑推荐 查看更多