关于多通道渲染,这里介绍Muti-render passes 中的高级分层以及叠加方式。
参照maya帮助中案例
合成方法:Beauty = diffuse_level * (diffuse_raw + (indirect_raw * ao_raw)) +
spec_level * spec_raw + refl_level * refl_raw + refr_level * refr_raw +
tran_level * tran_raw + add_result
这里介绍一些各层:
1、diffuse_result=diffuse_raw*diffuse_level; diffuse_raw是直接照明效果,只有光影,没有颜色,而diffuse_level含有颜色信息
2、spec_result=spec_raw*spec_level: spec_raw是没有衰减的高光范围,而spec_level只包含高光的色彩信息, 值得一提的是如果mia_material / mia_material_X shader的属性中specular balance的值为1.0,
那么
refl_level是相同的。
3、refl_result=refl_raw*refl_level ; refl_raw即无衰减的最强反射范围,而refl_level则是实际反射,包含了反射的颜色和BRDF(菲涅尔)曲线衰减效果。
BRDF(bidirectional scattering distribution function) 关乎间接照明,并且可以采样计算光子,包含了refl 、refr 的diffuse 、glossy 、和spec。
spec_level
与
4、refr_result=refr_raw*refr_level ; refr_raw 是无衰减的最强折射效果,而refr_level是由能量守恒调节的实际折射效果。
5、tran_result= tran_raw*tran_level ; tran_raw 是无衰减的半透效果,tran_level 是由能量守恒调节的实际半透效果。
6、indirect_result 是间接照明的效果,包含了环境闭塞与漫反射颜色相乘的效果, indirect_raw 带有间接照明信息却没有环境闭塞信息 ,ao_raw 是环境闭塞的无衰减效果。
Indirect_post_ao = indirect_raw * ao_raw
7、add_result 字面翻译是 add_color
属性的直接反应,有待测试。
了解了各层的意义,那么合成的算法也就不难理解了:
Beauty = diffuse_level * (diffuse_raw + (indirect_raw * ao_raw)) +颜色+(直接照明+间接照明)
spec_level * spec_raw + 高光 refl_level * refl_raw + 反射 refr_level * refr_raw + 折射 tran_level * tran_raw + 半透
add_result
下面以一个例子来讲解怎样进行这种方式的通道渲染以及合成方式:
在这个场景中有一只恐龙和一个地面,地面用来接收阴影,环境球提供照明,一盏平行光打出影子。
不分通道的渲染时间:
根据上面提到的分层方式分析,我们首先应该给恐龙分出:diffuse_level diffuse_raw spec_level spec_raw refl_level refl_raw indirect_raw ao_raw shadow_raw 另外也可渲出 indirectPostAo indirectResult 比对效果使用。 为了使用后期的灯光效果,还应该渲染 normalCam normalWorld 。为了给恐龙做一个干净的通道,应当渲染 dragonMatte层。
对于地面应当渲染floorShadowRaw ,这里需要注意的就是地面与恐龙的阴影应该分为两层。
再加上默认渲染的beauty层。
测试渲染时间
综上所述,我们应当渲染出的有16层,如下:
Final Render
ao_raw
Diffuse_level
Diffuse_raw
floorShadow_raw
indirectPostAo
Indirect_raw
Indirect_result
Beauty
normalCam
NormalWorld
Refl_level
Refl_raw
dragonShadowRaw
specLevel
Spec_raw
dragonMatte
下面分步进行操作:
1、新建一个渲染层,命名为beauty
2、为了将恐龙与地面分开,我们应当首先选中恐龙模型和灯光,在beauty
层上右键,选择
双击新建的pass contribution map 重命名为dragon
3、同理,选择地板和灯光,新建pass contribution map 并重命名为floor。
4、以设置diffuseLevel和diffuseRaw为例,首先我们在渲染设置里,找
到pass设置,
打开新建pass
,找到
,选中,然后在
输入
diffuseLevel,并点击,然后将改为
diffuseRaw,创建并且关闭,这样在scence passes里面我们就有了两个passes
对于pass参数的设置参照之前所讲的。
5、在确保渲染设置窗口上方
是需要进行设
置的渲染层之后,选择我们刚刚创建的两个passes,点击,这样就加入
了我们这个层的通道渲染,但是还不够,这个diffuseLevel和diffuseRaw 我们只想针对恐龙进行拆分,所以应当在下面的
下拉菜单选择
dragon,然后点击,再将创建的两个pass添
加到dragon pass map 中,这样就只会拆分出恐龙的这两个通道。
其他的通道设置同理。
6、在渲染设置里讲各通道设置好后,我们到材质编辑器,这里我们给恐龙
上的是mia_material_X_passes shader ,这
里先不对这个材质球进行介绍,正在对这个shader的maya帮助进行翻译,先告诉大家怎么用这个材质球进行通道拆分,需要注意的一点是如果需要渲染AO层,那么勾选use Ambient Occlusion
。
前面我们已经设置好了diffuseLevel 和diffuseRaw 两个passes ,这时我们创建一个mentalray的节点writeToColorBuffer
在该节点的属性中选择该节点重命名为diffuseRaw。
7、按住中键,将材质球拖放到节点上,选择other
,并将
在弹出的关系编辑器中,左边选择
右边选择
,这样我们就真正设置好了diffuseRaw通道。
其他的通道同理。
8、总的都设置好之后
对名称以及格式等进行设置可以了。
下面讲一下合成:
在nuke中总节点如下:
,之后批渲染就
1、
2、
3、
4、
5、
6、
7、
这是基本的几个部分的合成,还需细调。
另外还对小场景进行了景深通道和3d矢量通道的拆分
Beauty
Depth
Depth的合成:
Depth效果:
另外,利用该材质球应该也可以拆出模拟sss效果,测试中。
Without SSS
With SSS
对于多个物体的拆分:
一个简单场景
给小球,方盒子还有地面分别上三个材质
测试渲染时间为20秒
按上面的拆分方式得到
渲染时间21秒
Diffuse Level
Diffuse raw
Beauty shadow
Floor shadow
misss_fast_shader_x_passes 测试
sssBacklevel
sssBackRaw
sssBackResult
sssBackLecel * sssBackRaw = sssBackResult
diffuseLevel * diffuseRaw = diffuseResult
diffuseResult (screen) sssBackResult = beauty
因篇幅问题不能全部显示,请点此查看更多更全内容