[Translate&Review]Intelligent Setups for Automating Character FX | [译评] 自动化角色FX配置

这篇主要讲的是影视中Character FX的自动化pipeline的,笔者觉得很有启发,因此翻译并做一讨论。

讲者Adam Katz是Animal Logics的Lead Character FX Artist,这个talk主要讲的是Character Fx,具体里来说主要是布料和毛发模拟。虽然在”术”的方面的可能和游戏开发关系不大,但是在”道”的层面,比如如何应用,如何架构等,很值得借鉴。

这套pipeline他们称为end-to-end charfx。End-to-end这个词在Machine Learning中用得很多,大概可以理解成”输入原始数据,输出的是最后结果“,中间全自动化。当然这是所有pipeline的理想目标,不需要人工介入就可以完成特定任务。

在这个talk的语境下,pipeline输入的是动画部分的关键帧动画,输出的是包含了毛发和布料的集合体,直接可以给集群渲染。

Why?

所以目的是什么?目的是为了快速反馈,为了”迭代“。动画完成后,可以快速获得渲染镜头。得益于有可伸缩的渲染农场,动画师提交后等待一阵就能看到结果。

为什么需要这样做?笔者理解一方面是需要迭代产生质量的提升(也就是DevOps的目的)。另一方面是作者讲到的,他们团队很小,只能集中到重要的工作上”Hero Work”,对于次要任务都可以自动化解决。

How?

并不是所有的Character Fx都是自动进行的,他们分成两类,一部分是全自动进行的。另一部分,比如自动生成的有错误,或者需要Art Directer反馈等的,还是要人工设置Character FX的

Character FX主要分成这几部分:动画师输入的USD文件,先进行几何处理,减少模型重叠。然后进行布料模拟,之后进行毛发模拟,最后输出USD输出给渲染农场。

Tech Details

具体到其中几步的技术,就不细说了,选几个有意思的

用户输入hair volume,用来做碰撞和生成毛发

为了减少毛发的交错,会重生成毛发。用原毛发生成的速度场,叠加上一个法向速度场,来advect新生成的毛发。

节点层面,有一个模板文件,所有的charfx都走这个模板。核心的是这个模板rig,包含了每一步的操作

这里的问题是,怎么能保证模板中的hda更新的同时,还能保留用户的工作?解决方法是,用户部分从模板hda中merge输入,然后模板hda从用户部分中merge结果并合并。

Discussion

整套pipeline的好处:

  • 满足快速迭代动画的需求
  • 自动生成80%的
  • 工作集中到重要工作上

当然也有坏处,

  • 很复杂
  • 有些情况很难自动处理

做了一系列log和错误检查的步骤

Review

以下不再是Talk的内容,而是笔者的反思

反思一下这个pipeline的思想,和DevOps思想与实践一致,促进部门密切合作,高频发布迭代产品,保证产品稳定性。

  • 持续集成 Continuous Integration(CI)

在互联网中讲的比较多,一般指代码提交后自动打包或者上线
在这个case中,可以把渲染镜头理解为交付,pipeline做的是让动画效果快速交付。整个流程图,和互联网的交付流程真的很像。 对应到游戏中,美术资源是否也可以持续交付?粗模做完就直接自动导入引擎配置,直接可以看到效果。之后每一步都持续集成。

  •  测试驱动 Test-Driven

互联网CI/CD中提倡程序员自己写单元测试,减少QA的工作。
这个case中,写了很多清晰的log,写了很多错误检查,方便美术自查问题。 游戏美术资源也一样的呀,持续集成中设置自动检查,方便快速排除问题。

  • ​可扩展性 Scalability

如何在不同的电脑上做集成?互联网有成熟云基础设施,K8s+Docker扩充服务器。
这个talk中,影视公司也有很好的基础设施,有渲染农场方便部署。 游戏美术资源是不是也可以做云服务,让pipeline跑在云上?

另外还有对如何应用Procedural的思考。

  • 80/20法则,80%的工作交给procedural,20%的工作由人工处理。

这个talk很工程化的一点是,并没有讲procedural可以产生更好的效果,而是只把procedural当成pipeline的一部分,用于完成80%简单工作。对应到游戏中,高模低模uv烘焙,碰撞LOD交互配置,绑定布料引擎整合,角色/物件放置组装,lighting烘焙,是不是都可以做end-to-end pipeline。并不是所有的环节都充满创造性,是否可以流程大部分交给procedural,只留少部分由艺术家完成Hero Work?

  • 定制化 Customization

Procedural一定面临的一个问题是怎么解耦用户的输入和自动生成的结果?这里做出的答案是,procedural完成基础性的工作,用户可以override其中一些部分。具体到实现上也给了houdini里如何做的建议。

欢迎讨论。

参考资料:

《持续交付2.0》乔梁 人民邮电出版社

Intelligent Setups for Automating Character FX, Adam Katz, Houdini HIVE at SIGGRAPH Asia 2019

欢迎关注微信公众号:码工图形

发表评论

电子邮件地址不会被公开。 必填项已用*标注