刚刚弄完这届本科动画毕展,身心俱疲。每年都是这样,到了最后一两个月,学生和指导老师都超负荷工作,前者是拖延症重度患者终于开始抱佛脚了,后者是为了让学生能够顺利毕业而不敢有半分松懈。三维动画这边尤为崩溃,因为很多问题到这个阶段已经不可解,只能想办法遮掩,甚至于干脆给“简化”掉。
抛开学生实际制作能力高低不谈,最影响其作品质量的,其实是因为项目规范和管理上的不合理而造成的本不应该出现的困难。有感于此,特地写这一篇文章来总结一下这方面的问题,希望对大家做实作项目(毕业设计、个人创作、各种参赛等等)有所帮助。
实作项目和课程作业的区别
首先,项目规范和管理在课堂上是讲过的,但从来没有学生愿意遵守,直到他们做毕设时踩入大坑才后悔不迭,但这时候已经晚了。之所以学生都不愿意去遵守,是因为“规范和管理”对于他们做作业完全没有意义,而从大一到大三,凡是不影响交作业的东西,学生们都不会在意。
但实作项目和课程作业有本质的区别。首先是复杂程度不同,课程作业都很简单,可能是一个模型,两三张静帧渲染,或者10-20s单角色动画。基本上都是一个.mb
文件解决的事情,顶多建个文件夹把场景文件和贴图文件放进去。而实作项目要复杂得多,至少有2-3个角色,1-2套完整场景,几十个镜头,几十甚至上百张贴图,渲染出来几百上千张图片再去合成。更重要的是,实作项目的一个.mb
场景文件中可能有无数个多边形物体,有着各式各样奇奇怪怪看不懂的名字,卡得Maya视窗操作只有个位数帧率。
其次是工作方式不一样。课程作业通常是单人完成,每天完成一点进度,做着做着就做完了可以交作业了。而实作项目通常有多人合作,剧本、分镜、人设可能天天都在变,每周见导师都有新的反馈要修改,更别说碰到有制作难点的时候还要不断尝试新技术新方法。
这就使得按照课程作业的制作方式来搞毕业设计这种实作项目通常都会死得很惨,典型的表现就是项目进展到中期的时候就发现项目已经“改不动了”:碰到的新问题来源于已完成部分的“错误”或“不合理”,但修改这些“错误”和“不合理”意味着要重做很多东西,只好硬着头皮往下做,用更多的“错误”和“不合理”来填前面的坑,同时为后面挖下更深的坑。
坑1:没有工程目录或者有工程目录却不按工程目录存放文件
致命度:2星
很多人在我的“强压”下还是建了工程目录,但其实建了等于没建,打开场景依然一堆贴图的定位在“桌面”或者“U盘”,每次拿项目来办公室给我看都不完整,也不知道哪个场景文件是最新的最全的。
确实,按照工程目录放文件有一丢丢麻烦,尤其是贴图,需要拷贝到sourceimages
文件夹里面再开始使用。但工程目录是基础,没有工程目录,一切项目规划和管理都谈不上。
坑2:不命名或者命名不规范
致命度:3星
命名是个老生常谈的问题。客观存在的问题是,学生英文不好,Maya内不允许用中文命名,拼音命名又不直观。但好歹有个名字总比没有名字强。
建议:
至少要保证:场景文件(.mb
)名称要清晰;模型顶级组节点名称要清晰。
这里推荐一个改名mel脚本cometRename:(下载地址,提取码:n6mc)。用这个可以批量将组内节点改名,避免到处都是pCube、pSphere这种名字。
坑3:不使用或者不会使用“引用(Reference)”功能
致命度:5星
引用(Reference)是Maya最实用的功能之一,但几乎没有几个学生知道或者会用这个功能。这个我要检讨,很多时候确实是专业课里忘记讲了或者强调不够。
带毕设最常见的一幕,是在中后期见学生看进度的时候,学生掏出一排单文件几百兆的.mb
,然后还补充说:“场景太卡了,时不时Maya就崩了”。但打开场景一看,其实场景中充斥着重复的模型,一棵树复制了几十遍做的森林,随处可见长得一模一样的建筑、家具、路灯、垃圾桶、人行横道,拿ADV绑定还处于3键光滑模式下的主配角等等。最另我印象深刻的是一个low-poly风格的房间里面的架子上的4排酒瓶,大概有3-4种不同造型,但复制出了三十多个,每一个酒瓶的多边形数是整个房子多边形数的30多倍!
抛开优化不合理的问题不谈(比如那些高模酒瓶),这样结构的场景文件给制作和迭代带来了巨大的灾难:
- 调动画的同学需要看到场景,就必须在几百兆大的
.mb
文件中艰难地K帧(PS:ADV绑出来的Rig本身就蛮吃系统资源了)。于是,只能草草调一下动画了事。 - 如果一个复制了几十遍的模型需要修改,那么就必须在几百兆大的
.mb
文件重复修改几十遍,或者修改一遍然后重新复制替换旧模型。于是,干脆就不要改了吧。
建议:
其实使用“引用”功能就可以很好地解决这个问题。下图是一个三层结构的引用规范:
- 第一层是基础资产:建筑、树、路灯、垃圾桶、远景山等都单独文件制作,清理干净,等待被引用,角色Rig也是如此。需要注意的是,这里每个文件中都需要有个顶级组(Root),不能大纲视图里面是一堆多边形物体散放着。
- 第二层是整合资产:
场景模型.mb
中引用基础资产搭建复杂场景,但其本身其实几乎是空白的。角色动画.mb
引入角色Rig.mb
,然后制作动画,等于说角色动画.mb
文件中仅有动画曲线,这样其实很方便模型Rig的替换。需要注意的是,这里不能直接用Ctrl+D复制,要在“引用编辑器”中“复制引用”。 - 第三层是最终分镜头:整合场景、角色动画、灯光设置,用来渲染输出,里面仅含有摄影机动画和渲染设置。
- 负责灯光的同学可以直接引用
场景模型.mb
来进行打光工作,打完光删除引用就是干净的灯光Rig。 - 负责动画的同学也可以直接引用
场景模型.mb
或者制作一个场景模型低模代理.mb
来辅助动画,最后同样删除引用就行了。
按照这样的引用规划来制作的话,修改和更新是非常灵活的。模型组只需要做出简模就可以用来搭建场景模型.mb
,拆UV、画贴图、指定材质、细化模型等工作都可以慢慢进行,仅需要在更新基础资产文件后重新打开场景模型.mb
就立即更新到最终状态了。
负责建模的同学还可以时不时引用灯光设置.mb
来渲个场景气氛图来自嗨一下,只要最后记得“移除引用”就好。
需要补充的是,Maya的“引用”功能并不是很智能,使用的时候要熟悉其秉性,避免踩坑。比如文件A中引用了文件B,然后对引用的部分作出了一定的修改(比如整体移动了模型位置,或者对某些节点设置了动画等等),这时候修改的相关信息存在于文件A,而修改的对象信息存在于文件B。要记住:Maya是通过相关节点的名称来识别并链接修改信息和被引用对象的!这就意味着,如果文件B中对应的节点名称发生了改变,那么文件A将不能正确更新文件B。
举个例子:文件A引用文件B;文件B中是一个高模房屋,其顶级组的名称是“House01_high”;我们又为文件B制作了一个低模代理文件B_proxy,其顶级组的名称是“House01_low”。这样的规划是错误的!当我们在文件A中“替换引用”B为B_proxy时,低模代理将不会出现在正确的位置,因为A找不到名称为“House01_high”的节点来对接其位置变化信息!正确的做法是在文件B和B_proxy中都使用同样的顶级组名称“House01”,这样文件A就能正确识别放置低模代理了。
总而言之呢,就是一个原则:“会重复性用到的东西,或者有可能会要修改的东西,统统都引用进来而不是导入进来”。
坑4:清理得不干净的场景文件
致命度:5星
场景不干净就会导致各种乱七八糟的破事。比如莫名其妙多出一些东西出来不知道是做什么用的又不敢删;比如显示层那里冒出来一堆名字奇怪的层;比如大纲视图里面无缘无故多出了好多摄影机,不仅有透视摄影机,还有正交摄影机;比如Hypershade里面多出来很多无用节点,导致找材质球的时候无比麻烦还无比的慢(Hypershade本身就已经很慢了);等等等等。
用“导入”而不是“引用”来整合场景(见坑3)会使得“场景清理地不干净”这个坑愈发的深邃,中后期的时候我多次想要帮学生整理一下场景,但每每都只能望之心叹,“还是算了吧……要整理清楚还不如重做一遍呢……”
建议:
首先当然是要避免坑3,这样就算踩入了坑4不是灾难性问题。
其次,做模型资产的时候,不要直接保存文件,而是成组后使用“导出选择”,这样无形中可以避免输出很多多余节点。然后再打开导入的文件检查一下。
至于多边形模型的清理规范,那要另外开一个单章来讲才能讲清楚。
坑5:角色Rig上不做代理模型
致命度:4星
也许是错觉吧,我总觉得学生并不是不会调动画,而是Rig太卡了调不动只好随便调调了事。
上面这张图是我选择一个根节点随意移动时截的,这个角色模型也就7000面不到。基本上,这个Rig在全身运动的时候,视窗交互帧数率不超过20 fps。场景中有两三个这样的Rig同时动起来,基本就卡成PPT了,还谈什么调动作。
我个人用ADV绑定插件比较少,所以还不是很确定究竟是插件本身原因导致这么慢还是这位同学绑定过程出了问题才会这样。但我看ADV的范例Rig也挺慢的,所以我倾向于认为是ADV插件过于复杂的锅。
但不管怎样,做个代理模型总归是能够提升一些交互速度的,但所有的学生都宁可忍受卡成PPT的K帧过程,而不愿意多花半个小时去为Rig做一套代理模型。
ADV貌似应该有做代理模型的功能吧?知道的读者请留言告诉我,谢谢。
坑6:渲染不输出EXR格式
致命度:5星
今年让我最遗憾的一个学生毕设作品就踩了这个坑。他们的片子渲染难度不高,所以我就没让他们细调光照,只要大概差不多就行,反正后期可以调整曝光程度嘛。但好死不死,到了最后渲染阶段,负责的同学脑子一抽风就选择了输出成.png
格式,也没有跟我报备,直到全部渲染完了来问我说“室内部分渲得好像太暗了能不能调亮点”的时候我才发现是png序列而不是exr序列(渲染器是Arnold)。那还调个毛线了!室内部分暗了,室外部分曝了,最后只能一声叹息。
没有输出exr自然也没有AOVs,自然也谈不上分pass校色,自然也没有ID mask……最后就等于搞不了什么后期合成校色,AE沦为视频剪辑工具。
建议:
- 时间再紧张也要用批渲染方式输出EXR序列!!!
- 必须输出的AOVs有:AO层、ID层、Depth(深度)层,有心在后期好好校一下色的不仅要把Beauty完整分解出来,还得输出主要灯光的AOV
- 请在AE中合成,PR中剪辑,不要反着来!!!
- 背景天空必须后期合成!!!
坑7:不会用“时间编辑器”
致命度:3星
“时间编辑器”是Maya 2017才加入的新功能,用来代替原来的Trax Editor。其实这两个都是Maya动画的“偷懒神器”。
时间编辑器的核心概念,就是将角色动画的动画曲线(通常一个角色有上百条动画曲线)整合成“动画片段(clips)”,然后在时间线上通过拼接动画片段来完成动画而不是手动K所有的关键帧。比如一个行走动画循环片段也就40帧长(大概10个关键帧),用传统方式来做一个不停往前走的角色就得手动重复这些关键帧,还得将部分动画曲线调成相对循环模式,而用时间编辑器就只用将40帧长的片段拉成4000帧长就好了,任何时候需要角色停下来只需要融合一个站立姿势(pose)即可。
理解这个概念以及时间编辑器的用法确实需要一定的时间,但学会了以后不仅可以节省很多调动画的时间,潜在地还会导致学生作品的动画变得丰富起来(毕竟堆clips是很方便的),从而整体提高作品质量。
比不用“时间编辑器”还厉害的,是直接“一镜到底”,在一个.mb
文件中调几百甚至上千帧的关键帧动画,我不知道学生怎么想的,我是看到这么长的动画曲线就失去下手的勇气了的。(当然,也可以将这几百帧的动画曲线做成clip然后切成小片段再排列组合,但前提是要会用“时间编辑器”啊!)
结语:
总的来说,学生经常性、群体性踩入这些坑的原因,一方面固然是因为学生有一种“怕麻烦,得过且过”的心态,但另一方面,也反映出在教学中对这些坑的强调不够早,不够多,不够振聋发聩。这也就是我写这篇文章的目的,总结出这些坑及其危害来,希望未来大家可以早点规避这些坑,不至于因为这些“本不应该出现的困难”而影响自己的创作效率和创作质量。