BACK TO ARCHIVE
Arnold Katana DCC Mechanics & Nuances

Katana批量镜头生产(一)

02.19.2021 ADUCG RESEARCH

Katana 批量镜头生产

年初时接了个网大灯光渲染的活,活比较简单,但问题就是镜头量有一些大,而且甲方要的也紧。根据当时的要求,平均一天要产出 15 个左右的镜头才能按时交付(蛋疼的时我当时只有晚上有时间|´・ω・)ノ)。

甲方提供了 Maya 的动画文件以及 ref 的绑定资产,材质已经是直接在绑定文件上做好的。

第一天测试发现 Maya 文件加载卡顿,按我当时预想,准备用 render setup 来批量生产。在做到第二个镜头时,我 Maya 就已经崩溃过三次,尤其在 Arnold IPR 渲染和切换窗口操作及为不稳定,虽然之前也有心理准备,但没想到如此的不顺,按此种方式我一天即使通宵也不太可能完成!

那就考虑换平台,首先想到的是 Katana,我在上家公司已经利用 Katana 完成了两个网大项目的批量生产,我负责搭建 setup,批量性生产的工作就交给灯光师来完成。当时一个中级灯光师的产量一天可以达到 50 个。之所以可以稳定高效的生产,得益于我对资产及跟踪和动画的把控上,从最初阶段就开始要求统一标准化生产,包括几何体命名,文件命名以及储存格式和路径。根据可寻的规则才能让 Katana 完成批量化的生产。

但此项目是外包的,根据发来的文件可以判断甲方对于命名和文件管理上并没有严格要求。存在不同版本的 rig 文件,动画加载的 ref 的路径以及跟踪相机的命名都不统一等问题,应该是甲方分发不同团队制作完成的。


转换资产

动画文件及绑定与材质文件全部是 Maya 格式,首先需要完成将现有资产全部转换为通用格式,并且在 Katana 中对模型装配材质,

导出 Alembic

面对这些文件可能已经没办法依赖于现有的脚本工具来批量完成导出资产的工作。为了不耽误时间,我用了最笨的办法。

我耗费了一个晚上,将所有镜头的动画文件中角色及相机分别导出 abc 文件,这里没有使用 USD 是去年在用 katana3.6 时发现 USD 并不太稳定,经常会发生崩溃,力求稳还是选择了保守的 Alembic。导出当然是需要统一命名和路径,对于绑定文件,只导出 geo 组就可以,但要保证每个文件导出的层级都一至,针对多个道具及角色,尽可能分别导出不同的 abc 文件。在这之前我已经用 cgtw 建立了每个镜头的目录,用来存放动画 Publish 出的 abc 缓存,导出为和节省时间,我写了简单的 mel 做为书架菜单来执行操作。

  • 导出相机时检查 overscan 值是否异常
  • 统一路径及文件名称
  • 统一层级导出
  • 只导出几何体组而非 CV 线等不必要的“垃圾”数据
  • 面对多个资产则分别导出
  • 无动画信息的物体导出时选择 current frame
  • 确保勾选 UV write 及 World space
  • 若有面材质确保构选 Write Face Sets
  • 若有多 uv set 确保构选 Write UV Set

转换材质

Maya 中的材质连接得比较随意,虽然都是使用 aiStandardSurface,但贴图并不是标准的 Metal / Roughness 方式,并且还有大量的颜色调整节点,而且这部分节点并非全部使用的是 Arnold 的 shader。

如果使用 MaterialX,肯定会有一些节点无法转换成功,那么先前就需要先在 Maya 里将那部分节点去替换,并且保证材质效果的一至性,另外还有一个坑,MaterialX 对于层级及名称的要求是非常严格的,否则后面都将无法进行。

另外一种方式就是比较传统的直接在 kat 里创建对应的节点去把材质效果还原,如果有 TD 的帮助可以用脚本工具实现快速的转换,当然在 Kat 中还原也是要依赖于 Arnold 的 shader,因此在 Maya 中还是要替换成 Arnold shader 或者是在 kat 里测试替换以保证效果和 Maya 中的一至。

考虑到 MaterialX 的坑,还是用了“笨”办法,直接在 kat 中按 Maya 的参数及连接做一遍。

Caution

需要注意下贴图的色彩空间问题

因为所有的贴图已经在 Maya 中转换为对应 Color space 的 tx 文件,因此在 Katana 中的贴图也直接读取.tx 文件,但这个时候在 Color space 中应当选择使用 Linear,否则会错误的再次对 tx 文件进行 Color space 转换。

针对完整的一个资产,将材质集中在一个 ShadingGroup 中,方便不同场次镜头调用。

下面是整合后的材质包


Katana 的镜头模板搭建

Katana 的相比 Maya 最重要的一点优势就是可以通过搭建 Setup 来提高整个项目的生产效率,而且在没有 TD 的帮助下普通灯光师就可以完成。

首先需要明确 Setup 模板的用途和定位,是针对某一效果,是针对某些镜头,还是针对整个场次,还是针对所有场次。也就是从小到“微观”的 Setup 到“宏观”模板框架,或可理解为在一个通用的框架内是由许多个小 Setup 构成。

既然是 Setup,首先应当考虑它的“通用性”和“易用性”。针对此话题我会在后面的文章中单独叙述。

明目了上面的内容,那么就先要完成这个框架的建设。

总体框架大概如下图

  • GEO IN:导入资产,包括相机,这里按镜头做为一个包,创建 collection 组,此功能类似于 Maya 的 set,最后用 Prune 节点来删除不需要参加渲染的物体。
  • OBJ SET:将导入的资产创建 Arnold 的物体设置,完成包括渲染细分,不透明,置换等常用设置。CameraClippingPlaneEdit 节点用来设置相机的裁切范围。
  • Lookdev:这里存放着之前 Lookdev 发布的材质设置,最后通过 MATERIAL_ASSIGN_STACK 来完成对物体的材质指定。
  • LGT:GafferThree 的灯光设置。
  • AGS:ArnoldGlobalSettings Arnold 的全局设置。这里可以用 RenderFilter 功能,来做不同质量的切换,提高生产效率。
  • AOV:Arnold 输出的 AOV 设置。
  • RS:渲染设置,指定相机,输出通道,渲染分辨率等。
  • Render:设置渲染帧范围。GEO IN 部分主要是导入资产,包括角色,道具,场景,相机等。

Lookdev 中是之前的材质包。

AOV 中分为两部分,crypto 和 AOV,因为目前的版本中 crypto 无法与其它通道合并为一个 exr 文件,因此在这里分为两套序列。

以上就是整个的框架,其实 AOV 和 AGS,RS 等,都是常用设置,这里可以理解它们为小的 setup,只要渲染器不变的情况下,它们都是有一定通用性的,比如不同项目或者不同场景镜头,无非是修改个别参数而已。我个人也是将这些提前做好,针对不同项目随时调用,如果每次都重新搭建,仅就 AOV 中的内容,就需要耗费许多时间(当然可以利用其它脚本工具或者第三方的 Supertool 来自动化完成)。

下一篇章讲会谈使用变量来批量完成多镜头的生产,以及最后提前农场的过程。

End of Article