刘德新
(中影动画产业有限公司,北京101400)
一部动画电影的 “产生”涉及到的工作非常多,从宏观角度讲有投资、制片、编剧、导演、配音、音乐音效、美术设计、三维动画制作、母带制作、影片发行等。以上工作中参与人数最多,制作周期最长,预算压力最大,进度最难把控的莫过于动画制作了。动画制作过程中诸如电脑软硬件配置、渲染农场的搭建、网络传输技术、生产流程规划、技术方案准备、人力资源配置、制片管理水平等事项都会严重影响制作的进度。诚然每个公司都有严格的流程管理制度,每个部门也都会有详细的制作规范,但是当面对几页到十几页的制作规范,着实难以保证不会发生任何人为的疏忽。比较糟糕的结果是数字艺术家们花费了不少时间在文件的检查上,但偶尔还是会发生问题,此类现象反而会影响到数字艺术家们的工作状态和生产效率。越复杂的工作可控性越差,参与的人员越多发生人为失误的机率就会越高。因此科学严谨的动画生产流程是必不可少的,它将有效地处理重复的工作内容或者经常发生的问题,从而保障生产安全,提高生产效率。笔者在参与制作动画电影 《直立象传说》时所得到的体会是:与艺术创作无关的工作都应该交给程序来完成。那么让我梳理一下当时的制作流程,看看在整个过程中哪些工作必须交由制片、导演或者艺术家来完成,哪些工作应该交给研发团队和程序来完成。
笔者在2017-2019年参与制作了由中影集团投资,中影动画产业有限公司与新西兰Huhu Studio共同创作的动画电影 《直立象传说》,任绑定组长。在此过程中观察到了很多值得借鉴和研究的内容,谨在此整理如下:
“自动化辅助系统”是基于软件内置命令的命令集合,用以整合诸多软件的功能,起到简化工作的作用。编写程序的语言也有很多,比如C、C++、Java、Python等,现在比较流行的是Python。
在剧本完成以后会分成两个不同方向的美术工作来同时进行。
一个是手绘故事板,最终它将被制作成配有台词、音乐、基本声效的动态故事板。至此将得到整个片子的时间线,它包括所有的镜头号和每个镜头的时间。这些镜头清单是3DLayout、3DAnime和特效制作的必备资料。
另一个是包括所有角色、道具和场景的资产清单,即二维设计的清单。二维设计的线稿是三维模型的重要参考,色稿和材质指定是贴图和Shader的参考,不同时段的气氛设计是灯光和合成效果的艺术参考。
最后还需要整理一份镜头资产清单,它是根据每个镜头出现到的资产来整理的,制作Layout时会用到。
以上三份资料整理完成后,我们就初步得到此次项目三维制作的总工作量。
那么,程序可以在这里帮助我们完成哪些枯燥的工作?
一是通过记录在Excel表格里的镜头清单,根据项目的盘符和文件目录要求自动生成Layout、动画、特效、解算、abc缓存、毛发和布料缓存、灯光、合成等部门相应的工程目录。并且在每个文件夹里自动生产版本为V00的Maya空文件,这些文件夹和空文件的命名会与镜头清单保持一致。
另一个是通过记录在Excel表格里的资产清单,自动生成二维设计、模型、贴图、Shader、绑定等部门相应的工程目录,并在二维设计资产文件夹下自动生产一个版本为V00的PSD空文件,在其他部门的资产文件夹下自动生产一个版本为V00的Maya空文件。
通过这两个部分的操作可以得到一份完整的工程目录,并且可以确保目录里的文件夹和文件的命名都是正确的。
在项目的推动过程中,每个部门都在遵循这样的基本流程:领任务、制作、艺术、技术检查、调整、发布。从模型到合成,这些自动化程序在不同阶段都在为艺术家提供帮助。
由于遵循相同的资产清单,我们应该把二维设计、模型、贴图、Shader、绑定看成是一个整体,即资产。制作任务的分配通常是通过项目管理软件来完成的,比较常见的软件是Shotgun。模型师拿到工作任务的后,可以通过二维设计稿和Maya V00文件的名字来帮助他进行确认。一份标准的二维设计稿包含正视图、侧视图、顶视图、透视图和一份材质指定(用于贴图工作),它会帮助模型师更快地找到灵感来完成工作。模型的比例和造型首先需要通过艺术指导或者导演的艺术审核,然后它会进入到模型的技术审查(主要是拓扑方面),这些都是程序无法替代的工作。如果以上两个审核通过,那么会进入下一个繁琐的技术审核环节。例如模型文件中各部件和组的命名,模型的中心点,模型的法线,模型是否被冻结(Freeze),有没有多余的非法点或者非法面,有没有三角面,是否已删除历史等。由于以上涉及的命令在不同的菜单,导致这些检查变得非常繁琐。在TD们的帮助下,通过程序可以把以上所有需要的检查项集成在同一个命令面板上,只要点击一次就可以完成以上所有的检查工作。程序如果发现问题会及时反馈给模型师,提醒模型师进行修正。然后重新检查,在确认没有问题后,模型文件会被程序发布(Publish)给下一个环节。
模型发布的文件会通过程序在指定的路径下分别生成材质和绑定的Maya文件。以上两个文件同时会被程序处理成正确的文件名命名。由于材质一般是在其他软件里完成的,这里仅仅简单介绍一下材质文件在发布时程序可以提供的功能。在材质测试通过了艺术指导的审核后,程序将对Maya文件里使用到的材质Node和贴图进行命名检查。名称很重要,它在镜头装配阶段能否顺利进行起到决定性的作用。如果没有发现错误的命名程序就会发布材质文件。材质文件会被发布成两个文件,一是贴图的Maya文件,它带有模型信息和UVs信息。在发布时程序会将Maya文件使用到的本地的贴图(分辨率一般为4K)复制到指定的路径下,并自动生成不同分辨率的贴图,它们将在后续镜头渲染时根据物体与镜头的远近进行切换,从而降低渲染时间。同时负责物体质感的Shader文件也会被单独发布到指定路径,会在渲染前的镜头装配阶段被使用到,这个部分稍后再进行介绍。
绑定分为道具、场景、角色三种类型。不仅角色绑定可以使用程序来完成,像道具和场景这种拥有相同文件结构且单纯的文件更应该使用程序来处理它们。通过程序可以在模型发布阶段针对即将发布出的文件添加更复杂的内容,使发布出的绑定文件变为带有统一标准和基础功能的绑定文件。这种标准基础文件完全可以胜任在Layout阶段对绑定的需求,工作效率有显著提高。对于功能复杂的道具或场景则需要绑定师花更多的时间来制作,但这些文件只要在动画镜头开始制作前完成就可以。
角色绑定一般被认为是和程序关系最为密切的工作之一,任何一套功能详细的角色绑定系统都需要以程序的方式表现出来,因为这将极大地提高工作效率。这项工作需要绑定总监把已经确定的绑定方案详细地讲解给程序开发组,然后由程序开发组按照此思路来编写程序,最终完成可以自动生成和绑定方案一致的程序。
无论是使用自己编写的程序还是其他商业绑定插件,几乎所有的公司都是使用程序来进行角色绑定工作的。既然角色绑定的控制器是可以通过程序来产生,那么角色绑定最大的工作量就只剩下权重分配了。在一般的绑定插件里通常会通过Weight cage的方法使用程序自带的低模对高模进行权重拷贝,它的大体结果是可以接受的,但是要花费不少的时间来处理细小的部分。
在动画电影 《直立象传说》中使用了一些新的思路来提高绑定工作的效率。模型是绑定的基础,在此项目中的所有模型都是由一个 “标准模型”调整而来,他们拥有同样的拓扑和同样的点ID,以及同样的UVs,只是造型不同。程序在第一阶段导入标准的骨架,通过模型上点的ID信息把骨骼自动匹配到各关节的位置,再通过同样的UVs导入 “标准模型”的权重贴图。在这个部分完成后角色的权重大部分都是可用的;第二阶段的工作是检查和调整权重效果非常差的地方和添加衣服的布料设置;第三阶段是通过程序自动生成所有的控制系统并发布它。通过这样的安排至少减少了一半以上的工作量。这份 “完整”的绑定文件会被发布成不同的版本,比如提供给动画组使用的Puppet文件(它不包含解算信息),提供给解算组使用的Sim文件(它不包含动画使用的低边模型)等。
在Layout文件自动创建完成后,我们可以进一步细化程序,动画师可以执行另一个程序,它可以根据镜头清单中记录的资产名称将绑定文件逐个导入到场景里,还可以导入已经绑定好的摄像机文件(CameraRig),并自动对此摄像机的名称进行调整。例如:s001c0001_101_200,意思为第一场第一镜Layout时间101帧到200帧。同时根据项目要求对拍屏和渲染规格自动进行设置。
在Layout制作完成一个文件后同样需要发布它,发布文件的信息主要是摄像机文件和场景中资产文件的动画曲线。这样的好处是在Layout文件发生损坏时可以通过这些动画曲线快速恢复文件。
动画师在工作时会用到各种各样的小程序以提升工作效率,很多时候它们下载自互联网,并且使用不同的语言来编写。通过程序可以把不同语言、不同版本和不同功能的小程序整理成一个独立的工具箱,然后分享给所有参与工作的艺术家。不单在动画部门,其他部门也都会有自己特制的工具箱,它是标准工业化流程的重要组成部分。
对于动画师来说一个好用动作库管理程序的作用是非常大的。它将对每个角色的常用动作进行储备,次要角色多为站立走跑跳等,主要角色还会涉及到标志性动作以及表情等。在制作动画镜头时如果遇到需要的动作可以通过程序随时调用,动作库的意义不是简单的减少重复工作,更重要的是使每个卡通角色的动画风格保持一致,这对一部动画电影来说至关重要。
另外在动画师提交Mov给导演审看时程序也可以帮上大忙,程序可以在拍屏的同时显示时间码、制作者姓名、时期、版本号,并在拍屏完成后自动提交到指定的位置。
动画在通过审核后也会进行发布,发布程序会执行一系列的命令,一个重要内容就是对所有控制器进行Bake动画曲线,在Bake后所有的约束关系变成了动画曲线,这样会避免在发布后出现由于约束失效导致的动画错误。
动画发布的信息主要包括以下内容:一是单独的摄像机文件;二是镜头里所有资产上控制器的动画曲线,这样做可以在文件发生意外的时候快速回复已经通过的动画镜头;三是镜头里的模型会被发布成Alembic文件存储到指定的工程目录下。这样做的优点是使用来渲染的模型文件变得 “单纯”起来,它们没有绑定文件的历史,文件的渲染速度会有很大的提升。
布料和毛发的解算在不同的公司有不同的流程,一种是在动画文件的基础上进行解算,另一种是使用动画文件导出的abc文件来进行解算。无论哪种情况程序都可以为角色进行TPose设置,方便解算工作。
解算效果通过后,程序会把模型发布成abc文件到指定的路径下,毛发的缓存也被发布到指定的路径。
在灯光工作开始前需要用程序把所有需要的信息导入到一个新文件中,我们称之为装配文件。它的工作原理是:首先导入的摄像机,然后导入角色道具场景模型的abc缓存文件(这些缓存并不是最终材质)。接着导入镜头中模型涉及到的Shader文件和贴图,通过名称自动识别,依次把相应的材质和Shader赋给abc模型,然后导入带有缓存的毛发文件,最后倒入当前场景的标准灯光(key Light)。在装配时可能会发生贴图和Shader找不到对应的模型的问题,或者毛发连不到缓存等问题。这样的话工作将无法向下进行。装配是一个复杂的过程,需要不断对流水线进行技术测试,以确保在灯光开始时一切正常。
如果一切顺利,装配完成后可以通过程序把不同的角色、道具和场景根据需求设置到不同的渲染层中,并且设置渲染尺寸、渲染的输出路径等等。灯光艺术家的工作是确认所有的物件没有发生丢失,材质正确,abc缓存的动画效果正确,场景灯光导入正确,可以正常渲染出单帧画面。完成以上工作后艺术家们可以更加专注于提升画面的艺术效果。
根据不同的工作需求,可以对装配和灯光两个阶段的程序化进行更加深入地调整。比如在动画文件发布后,通过程序调入指定场次的场景文件和预制的灯光(Light Key),以及已经发布的所有摄像机。然后通过程序对每个镜头的第一帧和最后一帧进行自动渲染并提交到指定的文件夹。这一操作可以帮助导演和制作团队快速确认某场戏完整的灯光效果,以及确认该场次摄像机前所有的近景模型是否需要加细。
在单帧画面通过审核就可以提交到渲染农场进行序列渲染了。渲染通常会在渲染农场进行,并且使用Deadline来管理渲染农场的渲染数据,不仅高效,管理起来也十分方便。通过它可以实时地看到哪些文件在正常渲染,哪些文件渲染不了。Deadline会将信息反馈给用户,可以通过这些信息来修复遇到的问题,然后重新提交渲染。
以上是一些较为粗浅的流程介绍,可以看出动画工业中有大量的工作是可以通过程序来完成的,因此需要很多喜欢动画行业的程序员来完成这些工作。经过了二十几年的发展,中国已经有很多的CG艺术家在世界范围内取得了非常大的成就。很多公司都在开发自己的自动化流程。就国内动画工业的整体发展水平而言还有很长的路要走。导致这样现象的原因有很多:一是中国动画在代工的路上走了很长时间,把太多时间关注在制作层面,工业化方面有待产业升级;二是产业升级将给企业造成巨大的成本压力,对于企业来说动力不足;三是国内高校设立的动画专业一直都把教学内容定位在“动画艺术”方面,对 “动画工业化”的观念比较模糊,使得高等教育培养出的人才与动画工业升级存在一定的供求差异。
中国的动画工业已经从 “有没有”发展到 “好不好”的阶段,产业升级已经开始。动画是一门艺术,它是一种抒发情感的方式。动画产业是一门商业,它研究的是好内容如何更好变现。而动画工业是一门以数学为基础的应用科学,它是做出好产品的技术保障。希望未来能有更多的人关注动画工业的产业升级,也非常希望中国的动画产业迎来更大更高的发展空间 。