自定LPE OSL语法实现Alsurface形式的Clarisse渲染分层AOV介绍及范例下载

Clarisse的AOV分层繁杂琐碎,使用起来非常不便。因此weindy根据官方论坛最近的帖子综合Clarisse 4.0 SP5b版本中新增的LPE元素,制作了一个范例文件,以共研究参考,也可以拿来修改为自己所用的AOV模板。相关参考页面及官方Clarisse 3.6版的LPE库范例文件在文章末尾提供。

前言

看到这个标题这么多单词,有的小伙伴可能要懵圈了,这里来简单介绍下哈。

AOV是任意输出变量Arbitrary Output Variables的缩写,是组成美景beauty的不同渲染通道,这些通道包含光照和颜色信息如漫反射、折射等,也包含深度,运动模糊和法线信息。不同的渲染器都自带大多数常用AOV。在后期合成软件如nuke中,可以通过调整这些AOV通道,来达到不经过渲染器3D渲染,也能自由改变画面最终色彩和位置的目的。

我们最为熟悉的应该就是maya中Arnold自带的AOV。Alsurface是Arnold的一个开源shader,以出色的SSS效果和方便的8个自定义ID和灯光AOV非常受到喜爱。自Arnold 5以来,Alsurface的特性被整合到Arnold标准默认材质中,也就是后来的AistandardSurface。所以,国内非常流行的Alsurface式AOV分层放式也一直延续至今。

Clarisse也有类似的AOV,不过对于颜色部分拆分过于繁琐,尤其那一堆带i和k的直接间接搞得大家眼花缭乱。因此,要用到灯光路径表达式Light Path Expression(首字母缩写即为LPE)进行简化和规范化,使其更加接近我们常用的AOV方式,让工作流程更顺畅,让合成减少无用的劳动力尝试。

OSL是开放式着色语言Open Shading Language的缩写,是一种小而丰富的语言,用于高级渲染器和其他应用程序中的可编程着色,非常适合描述材质,灯光,位移和图案生成。OSL最初是由索尼大法旗下Sony Pictures Imageworks开发的,用于其内部渲染器中,该渲染器用于故事片动画和视觉效果,并作为开源发布,因此可以被其他视觉效果,动画工作室和渲染软件供应商使用。现在,它已成为用于VFX和动画功能的事实上的标准着色语言,已在整个行业中用于许多商业和工作室专有的渲染器。因此,OSL的工作于2017年获得了奥斯卡技术成就奖。

说明

Clarisse版本要求:4.0以上,建议使用4.0 SP5b版本,因为该版本volume的shader为新版,且光照模型更精准。

该范例文件的原始版本由Clarisse官方论坛发布,他们使用了3.6版本进行的测试,并且AOV并没有按照Arnold的风格进行设置。因此weindy进行了修改,将所有常用AOV通道使用LPE表达式自定义输出。

具体表达式为:

这个范例文件的AOV合成公式是:
diffuse_direct + diffuse_indirect + specular_direct + specular_indirect + transmission + emission_direct + emission_indirect + volume_direct + volume_indirect = beauty

也就是说,范例中渲染出的exr文件,放入nuke中将所有AOV通道提出,除去beauty和两个lightgroup灯光分组,将其他通道合并使用plus,即可得到原始渲染的beauty。不过目前仍然存在问题——volume通道会丢失一部分散射效果,即使使用内置volume的AOV也跟渲染得到的beauty有偏差,需要等待Clarisse版本更新才能解决。

好在使用Clarisse渲染volume的情况并不多,因为在3.6版本时的生产验证得出,houdini导出的烟雾和流体等的自定义通道,Clarisse并不能完全继承,无法渲染这些自定义属性的AOV通道(当然这不是我验证的)。4.0版本据说改进了VDB的支持,具体需要验证之后再做定论。但是 Clarisse渲染VDB的速度依然不如houdini里GPU渲染器那么快,并且一部分环境气氛用到的云雾,可以用同样只支持CPU渲染的terragen渲的更快。

同时包含该场景的maya Arnold版本,使用同样合成方式,除beauty和灯光外的所有AOV通道合并起来之后,即可得到beauty。

值得一提的是,单独灯光的表达式,Clarisse和maya中一样,都是C.*<L.’灯光标签名称’>。同时,如果想获得某个灯光的单独AOV,比如主光key的直接反射specular_direct,就可以将C<RS>|<RG>L改写为C<RS>|<RG><L.’key’>即可。

题外话

基于Clarisse文件制作maya版本时,使用了导出abc和烘焙纹理的方式,除了maya的变换轴顺序是XYZ,Clarisse是ZXY之外,发现了一些有趣的关系。比如clarisse模型的box和sphere无法导出abc,只能得到一个空组信息,能导出的只有polygrid和polysphere。灯光同样无法导出abc,只能得到空组信息,而且同一位置和面积大小的面光源,maya的面光源缩放是Clarisse的二倍。相机可以导出abc,但是在maya中的相机缩放Camera Scale值是2倍多一点点等。Shader设定中差别更大一些。

Maya文件中还单独写了表层coat的AOV。在Clarisse 4.0 SP5b中,刚更新了针对迪士尼原则的AOV新属性,可以分离表层coat的AOV。之后再发布针对迪士尼原则disney principled shader的范例文件。

对于影视制作中需要给合成部门提供的AOV,除了颜色相关,灯光阴影相关,还需要输出一些数据data相关的AOV,比如景深,运动模糊,世界位置,世界法线等,以及一些粒子流体效果需要用到的深度遮罩和颜色遮罩之类。这将在以后讲解nuke合成流程的教程里再作详细阐述。

而对于非常重要的阴影AOV,maya中的Arnold很早就加入了阴影捕捉shadow catcher的AOV选项,Clarisse是在3.6后期版本才加入,并且使用起来需要结合着色器层shading layer进行层覆盖。对于这点将在以后的Clarisse教程中作详细讲解。

相关链接

Clarisse灯光路径表达式简介文档:
https://www.clarissewiki.com/4.0/introduction-to-light-path-exp.html

常用Clarisse灯光路径表达式范例文档:
https://www.clarissewiki.com/4.0/useful_light_path_expression_e.html

Clarisse官方论坛灯光路径表达式库下载贴子(主题为Clarisse 3.6不完整版):
https://forum.isotropix.com/viewtopic.php?f=11&t=6063

Arnold灯光路径表达式AOV文档:
https://docs.arnoldrenderer.com/display/A5ARP/Light+Path+Expression+AOVs

Arnold灯光路径表达式介绍页:
https://docs.arnoldrenderer.com/display/A5ARNTUT/Introduction+to+Light+Path+Expressions

Github开放式着色语言官网对灯光路径表达式的介绍页:
https://github.com/imageworks/OpenShadingLanguage/wiki/OSL-Light-Path-Expressions

下载

百度网盘下载 提取码:lx0l

Google网盘下载

发表评论

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