独立恐怖短片中的自适应FACS面部动画管线解析
简介
大家好,我是Jev Belyaev,一名CG通才和电影制作人,目前在Netflix动画工作室担任角色特效主管。我来自拉脱维亚,在英国学习,目前居住在加拿大温哥华。从小我就对电影、动画和CGI感兴趣。多年间,我有幸通过MPC、Rodeo FX、Spin VFX和Tangent Animation等工作室,参与华纳兄弟、派拉蒙、迪士尼、漫威影业、Netflix、Apple TV和Amazon Prime等客户的VFX和动画制作流程。
在工作室工作之外,我还会创作自己的动画短片,并以此探索角色动画、情绪、电影摄影、技术层面和视觉语言。在这篇文章中,我想分享我最近一部恐怖动画的第三个也是最后一个技术分解。这部分重点介绍我过去几年一直在开发的Adaptive FACS Pipeline,以及项目中使用的其他自定义工具。
该管线的核心目标是将可复用的FACS表情、4D缓存重定向和程序化修正通道整合到一个灵活的面部设置中,从而更轻松地适配不同角色间的面部动画和皮肤细节。该系统仍在持续演进,未来迭代将专注于优化、一致性、更好的视觉质量和更简洁的工作流。
项目背景
除了这套特定的面部系统外,这部恐怖动画本身也成了更大规模独立动画作品的小型管线原型。这类项目让我有机会测试新工具、改进工作流,并在较小尺度上探索不同题材和视觉构想。我已经在将其中许多想法应用到我的下一部动画短片中,这部短片计划作为通往一部更大型、面向电影节的影片的桥梁。
如果你想在深入研究面部管线之前先看看最终动画和更宏观的制作概览,可以在下方查看:
Adaptive FACS管线分解
工作流从分解第二部分中介绍的自定义角色生成系统开始。这是一个基于blendshape的双足系统,能够在保持相同拓扑结构的前提下生成多样化的角色。通过在所有生成的角色中保留拓扑和点数量,该系统使资产和下游管线工作具备高度可复用性,简化了绑定、贴图、毛发和面部设置。
驱动身体和面部生成的blendshape支持高达1600万点的网格,使其适用于高分辨率角色。该系统还会将眼球、牙齿和泪阜对齐到身体形状上,这在后来的FACS管线中会很有用。

如你所见,这套面部管线的核心是FACS,即面部动作编码系统。我的基础双足模型使用了一个由不同族裔、年龄和性别群体的扫描数据生成的中间形状,这是未来角色形状的良好起点。
基础面部表情要么来自扫描数据,要么通过手动雕刻创建——闭眼、张嘴、不同唇形、眉形以及其他核心表情。当这些面部形状就绪后,它们会以.bgeo文件保存,并以一长串blendshape的形式导入设置中。

随后,所有这些blendshape都会连接到对应的UI控件上。UI控件本身是通过我制作的一个基础UI系统程序化生成的。你可以在SOP中直接按所需层级创建控件并命名。通过在3D视口中选中面部网格上对应的点,控件会被放置到正确位置。
理论上,这个UI系统可以用于任何面部网格,但在我的案例中,我只在之前提到的基础网格上设置了一次。如果后续需要调整,之后可以通过程序化方式处理,无需大规模返工。
面部动画
该系统内的面部动画可以通过几种不同方式驱动:使用UI控件触发面部blendshape和眼球运动;从其他DCC(如Unreal Engine和MetaHuman)重定向网格变形,或从4D缓存重定向;或者混合使用两者——重定向的网格变形结合FACS动画。
MetaHuman和4D缓存通过邻近捕捉或UV插值进行传递,根据基础网格和源网格的邻近度或UV进行匹配。

面部形状适配
系统的另一个步骤是面部形状适配。由于面部形状不同但共享相同拓扑,因此很容易将基础形状与新形状之间的差值线性应用到动画网格上。然而,简单的线性差值混合在更极端的静态形状或动画姿势中可能产生伪影,例如穿插、体积损失、挤压或形态夸张。
为了尽量减少这些问题,我将线性差值混合与眼睛和嘴唇周围的翻转邻近包裹相结合,以保持更好的接触区域。对于更有机的嘴部和鼻部形状,我还会将线性差值混合与使用切线和法线的UV插值混合使用。

颌部
我没有完全用骨骼为颌部装配绑定,而是决定直接从网格变形本身来追踪其位置,无论该变形是来自 FACS 形状还是重定向缓存。在颌部追踪的同时,我还构建了一个尚在开发中的嘴唇碰撞系统。如果嘴唇陷入口腔过深并开始与牙龈相交,它们会被推出并重新放置在表面顶部。舌头追踪、重叠以及可能的模拟属性仍计划在将来实现。

眼睛
眼睛解算器是该系统最重要的部分之一。由于眼睛承载着角色的大部分情感,我花了额外的时间试图让它们尽可能自然、流畅地移动和表现。目前,眼睛解算器使用骨骼变形来处理眼睑,将眼睑曲线投影到眼球上以更好地保持形状和接触,并额外增加了一个皮肤层处理,让眼球向外推动眼睑皮肤。
这有助于模仿皮肤下眼球摩擦和真实运动,无论眼睛是睁开还是闭上。当前方法中仍存在一些注意事项,例如在某些面部形状下眼睑可能看起来不自然,但改进措施已在计划中。

最后一步是将面部运动传递给牙齿以及其他网格,例如泪线和泪阜。这里没有太复杂的过程——主要基于邻近关系和 UV 包裹,并带有一些简单的自动去相交处理。
之后,静止姿态下的面部动画会进行插值,并应用到空间中的全身运动上。这是通过从 FACS 动画中提取增量,并使用四元数将该数据定向到已设置动画的身体网格上来完成的。

角色的最终组装、外观开发、压缩、拉伸和血流蒙版都会在 Blender 中使用 Cycles 进行测试和渲染。
第二部分分解中介绍的自定义毛孔生成系统计划与自适应 FACS 流程相结合,以获得更好的动态皱纹和基于张力的细节。未来的目标是通过方向性拉伸贴图和生成的皱纹蒙版来扩展皮肤细节,使毛孔压缩和小皱纹等精细皮肤细节能够对面部张力和形状变化做出动态反应。
毳毛生长由毛孔生成系统驱动。
另一个面部动画测试:
结语
这个项目最初是一部恐怖动画,但逐渐演变成对我的角色与面部流程的一次更大规模测试。Adaptive FACS 流程仍在持续演进,但它已经帮助我构建出更灵活的方式,将面部表演、4D 缓存动作重定向、程序化修正以及渲染端的皮肤细节结合起来。
下一步是继续改进这套系统——尤其是在优化、一致性、皮肤细节和基于张力的皱纹响应方面——同时将这些想法连同新的思路应用到我的下一部动画短片中,并最终用于一部面向电影节的更大规模作品。感谢阅读,也感谢 80 Level 给我机会分享这一过程的深入细节。
你可以在我的 ArtStation、YouTube 以及其他社交页面找到更多作品和这部恐怖动画解析的前几部分。欢迎查看以下项目:
Jev Belyaev,首席角色 FX
相关链接
原文链接:https://80.lv/articles/inside-a-custom-facial-animation-pipeline-for-an-indie-horror-short
喜欢这篇内容吗?