讲解Ambient Occlution的原理与高级应用(2)
大家可以很明显的看到物体的暗部是沿着反射方向产生的。
我们可以给mib_amb_occlusion的bright的参数连接一个环境节点,使得环境对我们的材质有了影响,但这不说明次光线对环境光进行了采样计算,它只是把遮挡的结果与环境光简单相乘罢了,连接和渲染结果如图。(图09、图10)
图09
图10
第二种连接方法就是将我们的摄像机连接到环境球查询节点上,然后设输出参数为1(取样环境),另外可以选择occlusion in alpha,如图。(图11、图12)
图11
图12
从渲染结果来看,效果是一样的,但是他对环境球取样的阶段是不一样的。我们可以减小它的spread参数,也就是改变次光线取样范围,使得反射更集中,渲染如图。(图13)
图13
mib_fg_ occlusion的使用mib_fg_ occlusion其实就是一个选择器,也就是说如果在渲染的时候渲染全局中打开了final Gather,我们就用final gather来计算遮挡,反而反之,节点连接如图。(图14、图15)
图14
图15
mib_bent_normal_env的使用在讲mib_bent_normal_env之前,我们有必要了解一下mib_amb_occlusion其他的输出模式(output_mode)。
0是标准的遮挡模式,1是环境进行取样模式,2、3就是bent normal模式。所谓bent normal就是计算未遮挡的次光线,求平均值,所得到的就是bent normal的法线矢量,名字很形象。
矢量的三个分量的值分别对应纹理的RGB三个值,output Mode的模式2输出的是世界坐标系,模式3输出的是摄像机坐标系。(图16)
图16
模式2,世界坐标系。(图17)
图17
模式3,摄像机坐标系。(图18)
图18
mib_bent_normal_env其实是为了加速环境遮挡所制作的一个节点,在动画中对于我们场景中的不移动不变形并且没有别的物体接近一直影响到他的受光物体,我们就可以采用这种方法,所以局限性很大,但是带来最大的好处就是渲染速度巨大提升,因为我们不用跟踪任何一条光线。
我们可以预先将环境遮挡和bent normal烘焙成纹理文件,我们也可以用lightmap节点帮我们将文件保存进纹理文件,连接的示意图如图。(图19)
图19