本文将由Unity Demo团队的动画总监Krasimir Nechevski为大家介绍整个《Adam》短片的动画制作流程与细节。
关于作者

我是Krasimir Nechevski,Unity Demo团队的动画总监。尽管获得了软件工程师学位,但已从事角色动画师工作超过15年了。一年前加入了Unity的Demo团队,此前曾在Crytek做了7年的动画主管。

制作《Adam》 Demo的工作令我既荣幸又兴奋,有机会参与这样一个拥有伟大创意、尖端技术及优秀团队的产品。我知道这并不容易,因为有时我们不得不踏入未知领域,尽管如此我们依然充满信心和热情完成了任务。

阅读下面的文章了解更多关于团队制作《Adam》的经验:
Unity实时渲染短片《Adam》揭秘:产品设计Unity实时渲染短片《Adam》揭秘:资源创作


本文将为大家介绍《Adam》中所有与动画相关的内容。大部分由我自己制作,还有一些交给外包。我直接负责动画预览、Adam的骨骼系统、Adam大部分的动画、环境动画、摄像机动画并管理动作捕捉的工作。我还与年轻程序员Dominykas Klauleikis一起设计开发了人群系统。最后在Unity正在开发中的Sequencing工具里完成了整部电影的组装。

预览

我们的计划是保持所有内容随时都能灵活使用。我们希望能够按需切换资源并尽可能多进行迭代,所以这个项目很多时候都处于半预览阶段。我们一开始做的是为Adam建立一个占位模型。


占位模型的目的是获得正确的基本比例,并对肩膀骨骼系统的运作方式进行迭代,因为尽管Adam的肩膀看起来是人形的,但它不是多自由度的球型关节,而是单轴旋转关节的组合。


另一件对我们来说很重要的事情是能尽早和演员一起工作。我们的演员,Ovanes Torosian, 有电影和戏剧方面的经验,但没有做过动作捕捉。在早期的预览阶段,我们决定使用性价比很高的无标记点的动作捕捉解决方案——Perception Neuron(神经元感知)系统。这样做能给演员一些时间来适应这项技术,我们测试了不同的方法并迭代了Adam的姿势、肢体语言和表现。我们也用手持数码单反相机装置尝试了相机移动。

091209haag0t000xh3vpjv.jpg 无标记点方案(神经元)Adam表演的排练

我们开始在Motionbuilder 中测试其中一个标志性场景的预览,我们尝试了一系列的镜头切换,从单个相机无缝切换到快节奏的剪切。

091209mfjiqa4fmxubzbbj.png Motionbuilder中初版预览剪辑镜头

不久之后我们决定将这个预览移植到Unity。之后导演Vess就可以添加灯光、材质,并完美利用引擎的实时渲染功能让预览效果更接近最终的质量。最终证明这种迭代方式以及早前就将整部电影移植到Unity对我们来说非常高效,可以对不同的镜头进行快速测试。

091210agizhq56xi5tjrqu.jpg Unity中的早期版本预览

Adam的装配

导演Vess希望实现一个逼真的纪录片式风格的电影,所以我们需要让Adam的移动机制看起来很可信。我不想遮掩或捏造任何部位,比如让坚硬的面部扭曲或将它们藏在相机后面。此外我们在很多功能还不确定的时候就开始制作了,所以整个制作过程初期Adam只有基本骨骼和部分手臂的功能。这个构造和比例一直保持到最后,但是很多部分都是在后面添加的,还有一些为了适应移动范围而做了修改。为了不影响角色自由移动的概念,做出一些改变是很有必要的,我与产品设计师Georgi和模型师Paco之间也来回反复进行修正直到最终完成作品。

091210od8dqtrttid8888y.jpg 不同阶段的Adam模型

导出到Unity中的装配是在3D Studio Max中完成的,借助Character Studio 制作了主骨骼。在此基础上我按步骤加上了动画骨骼比如肩胛骨、锁骨、上臂和前臂。对于腹部和脖子周围的橡胶,我决定不使用混合外形,而是烘焙一系列辅助链关节来模拟变形。

091210ogawcy7z54jqjcmy.jpg Adam的装配

装配另一个耗费大量精力的部位就是眼睛。我为它们做了一个类似混合了相机与单独旋转刀片解剖虹膜的实用装配。分割眼睑并且为每一块分别放置眼角膜。


眼睛的骨骼

然后动画师在Motionbuilder内导入装配,Character Studio 的骨骼被作为Human IK Biped的象征。所有的动画捕捉数据都在Motionbuilder内重定向、整理并修改。大量的手动键控动画也是在Motionbuilder里完成的,除了眼睛。

091211xefiea4xicizfz9j.png Motionbuilder中Adam的装配

一个镜头准备好后就将其导出到3DS Max,在3DS Max添加所有的程序性动画以及手动键控的眼睛动画。最终烘焙的结果以FBX格式导出到Unity中作为通用装配。

Adam动作捕捉和动画

制作过程中发现很多镜头都很有挑战性,尤其是第一部分Adam从担架上掉落,用膝盖爬行并试图移除面具的镜头。挑战主要在于角色与相机移动要保持完美同步。在动画捕捉预览阶段,演员要设法迭代表演并有机会更好地理解这个角色。与此同时,导演可以对这些表演给予反馈,对动作进行微调,同时不断迭代调整相机来保证所有元素相辅相成。

102418pkvhaxh20hkqhvf2.jpg 演员穿戴无标记动捕装置(Neuron)

最终在Cinemotion中查看动作捕捉的最后表演时,我们已经完全清楚想要的效果,所以在短短一天时间内就完成了所有的拍摄。来自保加利亚的Cinemotion工作室提供了所有我们需要的设备,以便使用虚拟相机设置来同时捕捉Adam与相机运动。

另外,由于价格合理,我们也能应用反复迭代的制作方式,重新拍摄,探索更多镜头,必要时实现突如其来的灵感。

091211hezxchxfmhj7xd7z.jpg 在Cinemotion工作室进行最后的动作捕捉

最后的表演拍摄完后,我挑选了不同的镜头数据并将演员表演与导演Vess最喜欢的相机捕捉镜头进行组合。如果没有花费额外的时间在工作室尝试所有的部位,这是不可能完成的。


早期镜头迭代版本之一

在清除并重定位数据后,就要整合最终的表演并加入最后的润色了。接下来就是填补那些不太能捕捉到适当动作或姿势的动画缺口,比如Adam一开始是挂在担架上。在制作出最终的融合和修补动作后,我在Motionbuilder 内部完成手指键,导出镜头到Max中并利用该引用设置了眼睛的关键帧。


研究眼部表演

在动作捕捉中,我使用手持相机单独捕捉了一些演员的眼睛镜头。最后在Max中使用这些镜头作为参考增加了眼睛的动画。此时Adam就可以导出备用了!

091212hmz7zqtq5u8he3eo.png Mihail和Ovanes在动作捕捉空间中

Sebastian和Lu

Sebastian和Lu是电影下半部分出现的两个陌生人。捕捉他们的表演又是另一个挑战,因为他们是用可伸缩的高跷来行走的。我们邀请了有踩高跷经验的Stanimir ‘Stunny’ Stamatov扮演了两个角色来进行动作捕捉。

102746qlmxpqtq8xnwn5zl.png102747liit4hi7h6s0gtg4.png102747lkucq7uc7vapc4xv.png 特技替身演员Stanimir ‘Stunny’ Stamatov扮演的Sebastian和Lu

在我们为这些角色拍摄动作捕捉时,导演关于他们的表演有几个不同的想法,但是并未决定采用哪一个。我们需要调整方法以便导演可以构建并尝试大量不同的动作。所以我们更多地使用了制作游戏的方式,捕捉不同的循环和过渡动画以方便后面进行整合。这里有不同版本的动画,可以从中挑选出最合适的一个。这两个角色使用了一系列的循环动画如走路、空闲、停止、下降等,还有一些过渡动画。这个方法很灵活但也存在缺陷,一些动画之间的过渡不够流畅。

091219xyuitu0eynh4eehi.jpg Motionbuilder中Sebastian和Lu的装配

守卫

守卫的装配从某种意义上来说和Adam的装配是一样的。它拥有一个基本的Character Studio骨骼和一些在此基础上附加的程序部分。额外添加的装配解决了盔甲滑动和弯曲的问题。腰部和弹药袋以下部分的布料是Zdravko用CaronteFX来完成的。

091220s0n6nlll1lpl87tj.jpg 守卫装配

Ovanes和Stanimir两位演员完成了守卫的动作捕捉。最难的场景就是一个愤怒的守卫开始射击人群的部分。那一幕只捕捉到很少到镜头,分镜头的表现都是后期再缝合进去的。我们使用了Cinemotion动画服务完成守卫的重定位和清理工作。

102918criqp4ievq75a979.jpg Ovanes, Stanimir 和Mihail在 Cinemotion动作捕捉中心

人群

制作人群最大的挑战就是需要完成大量的内容以保证足够的多样性。在此基础上这些机械的、磕磕绊绊的、充满疑惑的角色要尽可能看起来具有独立意识。我们的方法是制作拥有不同行为的人群(如难过的、精力充沛的、好奇的)。对于每种行为都有一个很简单的状态机来驱动各个机器人。

091222xci744d668c4hzb7.png 人群的Animation Controller

我们的理想目标是拥有8种不同的版本,每一种都拥有其所需的完整动画。但是,由于电影在变化而剪辑却趋于固定,所以每种人群版本都需要90秒左右的动画。这对我们来说太多了,所以最终只做了4种版本。

091223tttzici3w6wkqs77.png Motionbuilder中的人群模型及骨骼

我们为Adam构建了3种LOD版本,分别带有41、28和13根骨头。最后采用了质量较高的2种LOD,因为由技术主管Torbjorn Laedre开发的GPU蒙皮技术完全可以处理我们需要的角色数量。人群的动作捕捉表演也再度由Ovanes和Stanimir完成,并随后在Cinemotion动画师们的帮助下完成了动作的重定位和清理工作。

人群系统

人群系统是由我们的技术主管Torbjorn Laedre,初级程序员Dominykas和我一起开发的。Torbjorn写了所有的播放程序,关键帧插值,GPU蒙皮,人群实例以及材质的变化。Dominykas编写了所有向量场的代码和工具。

最重要的就是我们需要明确人群系统必须完成的任务:
人群仿真需要100% 的确定性 系统需要能与Unity的Sequencer工具配合以便于进行快速拖来播放 我们需要一个很好的方式来控制整个人群的动向 我们还需要一种方式来调整自定义值用于分离人群


为了控制人群的走向,我们决定使用向量场来实现该系统,人群在向量场中经过后的朝向会受其影响。Dominykas制作了一些简单而强大的向量场创作工具,以线条形式呈现。每条线的向量场可以与其方向一致,朝向或者背离它移动。而且都有影响区域和力度的调整参数。

091223r3xjja3rwbakoqai.png Unity中的可视化向量场

我们在其中一个区域中添加了用来随机初始化机器人分布的功能。这种方式分配的机器人后续可以调整起始点的位置和角度,或者改变状态机的初始状态,以及通过延时触发器来更改。我们还添加了用于捕捉人群在时间轴上任意点状态的功能,可以用作下一个镜头的起始点。

091224b4u9fcn5joacfl4a.png 人群控制面板

Sequencing工具

Unity Demo团队的一个重要任务就是为引擎团队提供使用者的反馈。对于《 Adam》,我们与开发Unity全新的Sequencing工具的团队紧密合作。我们曾经用过原型和初期版本的工具,也不断地在提供反馈,从而能够影响该工具的设计和发展。使用这个工具制作《Adam》的过程非常舒服也很熟悉,因为它与电影工业中广泛应用的工具很类似。

对于角色和摄像机动画,我们使用标准的动画轨迹,可以在世界空间中进行裁剪、混合及补间。

091224mbo8enx0o1muo41d.png 红色区域是动画轨迹

Sequencer工具提供了更高级的功能,我们使用了另一种类型的方式来让用户运行自定义脚本Playables,这个例子中包含了人群系统的场景管理器,用来显示隐藏对象,改变光照和摄像机等等。

091224mhc0fprj8cp8abzb.png 自定义脚本轨迹,Playables

Sequencer工具另外一个非常有用的功能就是可以记录任意参数的变化。该功能结合曲线编辑器就可以轻松制作摄像机的位移,属性,渐变等动画。

091224bttgotkwmbmcae0m.png 曲线编辑器

这个工程的最终成果就是完成了第一阶段的Demo,我们可以在Unity中直接构建出可执行文件用于展示。

为了提供一个可以预览的电影给在线观众,我们专门制作了一个视频放在了YouTube上。视频制作借助了小脚本BeautyShot。Unity研发团队正在研究是否能够在引擎中直接实现视频录制工具。

感谢您的阅读!现在我们正准备发布《Adam》的各部分资源,后面还会继续推出Adam制作相关的文章,请保持关注。

相关阅读:
Unity实时渲染短片《Adam》揭秘:产品设计Unity实时渲染短片《Adam》揭秘:资源创作


原文链接:https://blogs.unity3d.com/2016/08/31/adam-animation-for-the-real-time-short-film/
感谢Unity官方翻译组成员“CelebrationMa”、“ShawDason”对本文翻译所做的贡献。
转载请注明来源:Unity官方中文社区 (forum.china.unity3d.com)。请勿私自更改任何版权说明信息。

Unity, Adam, 实时渲染, 电影锐亚教育

锐亚教育 锐亚科技 unity unity教程