Katana批量镜头生产(一)
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的参数及连接做一遍。
需要注意下贴图的色彩空间问题
因为所有的贴图已经在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来自动化完成)。
下一篇章讲会谈使用变量来批量完成多镜头的生产,以及最后提前农场的过程。