经典教程Ambint occlution的原理与高级应用Word文档下载推荐.docx
- 文档编号:16192866
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:22
- 大小:3.19MB
经典教程Ambint occlution的原理与高级应用Word文档下载推荐.docx
《经典教程Ambint occlution的原理与高级应用Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《经典教程Ambint occlution的原理与高级应用Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
下面教程开始
环境遮挡的原理
基本的原理跟finalgather类似,其取样点的生成是一样的。
首先从摄像机发出取样光线,取样光线和物体的交点,就是我们说的取样点,然后从取样点发出次光线(proberays)。
接着Ambientocclusion和fg就不一样了。
Ambientocclusion的次光线是每一条光线是否被周围的物体所遮挡,如果遮挡了直接返回值,不做任何的Shader计算,也就是取样点的周围被物体阻挡着不让看到背景的百分比;
fg的次光线不太一样,他的次光线与周围的物体相交以后,它要求焦点处的颜色值,然后返回的是颜色值,而不是Ambientocclusion的真假值。
最后也是不一样的,作为Ambientocclusion,每一个取样点其实就是渲染时输出的色彩值,而fg只是为渲染时的fgpoint,它代表着要渲染点附近的光照,在渲染时用来产生照明。
(图01)
图01
下面我就结合MentalRayforMaya,跟大家一起讨论一下Ambientocclusion的一些应用。
MentalRayforMaya中有三个节点是我们在使用环境遮挡时需要用到的,mib_amb_occlusion,mib_fg_occlusion,mib_bent_normal_env,如下图。
(图02)
图02
环境遮挡的使用
在介绍实际的应用之前,我们用一个简单的场景作介绍,场景中只有一盏物理灯。
默认渲染如图。
(图03)
图03
Ambientocclusion(AO)经典的环境遮挡效果,也被称为漫反射遮挡(Diffuseocclusion),可以用来缩放对材质环境光的贡献,它一般赋给材质的环境光参数(Ambient),更进一步说他最好赋给Lambertian材质。
如下图。
(图04)
图04
渲染的效果如下图。
(图05)
图05
现在暗部的细节出来了,可见AO很好的模拟了全局光。
Reflectiveocclusion发射沿着反射光线的方向发射次光线,而不像Ambientocclusion那样以物体表面的法线方向为中心发射次光线,下面的示意图说明了之间的不同。
(图06)
图06
在MentalRayforMaya中实现起来很简单,只需要将mib_amb_occlusion节点参数中的Inflective打开就行了。
(图07)
图07
同时我们可以调整小spread的值为0.1,使得反射遮挡的效果更加明显,渲染效果如图。
(图08)
图08
家可以很明显的看到物体的暗部是沿着反射方向产生的。
我们可以给mib_amb_occlusion的bright的参数连接一个环境节点,使得环境对我们的材质有了影响,但这不说明次光线对环境光进行了采样计算,它只是把遮挡的结果与环境光简单相乘罢了,连接和渲染结果如图。
(图09、图10)
图09
图10
第二种连接方法就是将我们的摄像机连接到环境球查询节点上,然后设输出参数为1(取样环境),另外可以选择occlusioninalpha,如图。
(图11、图12)
图11
图12
从渲染结果来看,效果是一样的,但是他对环境球取样的阶段是不一样的。
我们可以减小它的spread参数,也就是改变次光线取样范围,使得反射更集中,渲染如图。
(图13)
图13
mib_fg_occlusion的使用mib_fg_occlusion其实就是一个选择器,也就是说如果在渲染的时候渲染全局中打开了finalGather,我们就用finalgather来计算遮挡,反而反之,节点连接如图。
(图14、图15)
图14
图15
mib_bent_normal_env的使用在讲mib_bent_normal_env之前,我们有必要了解一下mib_amb_occlusion其他的输出模式(output_mode)。
0是标准的遮挡模式,1是环境进行取样模式,2、3就是bentnormal模式。
所谓bentnormal就是计算未遮挡的次光线,求平均值,所得到的就是bentnormal的法线矢量,名字很形象。
矢量的三个分量的值分别对应纹理的RGB三个值,outputMode的模式2输出的是世界坐标系,模式3输出的是摄像机坐标系。
(图16)
图16
模式2,世界坐标系。
(图17)
图17
模式3,摄像机坐标系。
(图18)
图18
mib_bent_normal_env其实是为了加速环境遮挡所制作的一个节点,在动画中对于我们场景中的不移动不变形并且没有别的物体接近一直影响到他的受光物体,我们就可以采用这种方法,所以局限性很大,但是带来最大的好处就是渲染速度巨大提升,因为我们不用跟踪任何一条光线。
我们可以预先将环境遮挡和bentnormal烘焙成纹理文件,我们也可以用lightmap节点帮我们将文件保存进纹理文件,连接的示意图如图。
(图19)
图19
我们连接的纹理文件(图中虚线框),一定要把writable选项打开,才能使我们的纹理写道磁盘文件上,连接图如下。
(图20)
图20
烘焙完纹理以后,前期工作就算完成了,就可以用我们的mib_bent_normal_env了。
我们可以这样理解这个节点,他的作用跟把烘焙的纹理不但能直接加到物体的材质上,而且它可以是相对环境的反应,只不过我们要用一张环境贴图,而不是真实物体的影响。
这种方法主要是用在实时渲染(realtimerendering),也就是我们说的游戏中,能模拟很好的全局光照。
下面是我们烘焙好的两张图,一张是环境遮挡,另一张是bentnormal。
(图21、图22)
图21
图22
环境遮挡
连接方法示意图。
(图23)
图23
节点的实际连接图。
(图24)
图24
环境遮挡的高级应用实际应用中,将环境遮挡,单独渲染成一层,然后再后期是使我们最常用的方法,因为只要我们不追求物理的真实度的话,这种方法是很灵活方便的。
我们在PS中举个例子。
下面是我们渲染的两个层,一层是color层,另一层就是occ层。
(图25、图26)
图25
图26
在PS里面我们可以把occ层设为mutiply模式,合成后为下图。
(图27)
图27
在MentalRay中,我们可以把Ambientocclusion作为一个Lightshader,成为灯光的内建环境遮挡,节点连接如图。
(图28)
图28
渲染如图。
(图29)
图29
我们可以分析一下,每个渲染点需要查询灯光,我们的灯光是环境遮挡Shader,他会返回这个点的照明强度为这个点的遮挡程度,背离灯光的地方,途中黑色的地方,因为它在灯光的阴影区,也就是说它不会去查询灯光照明强度的,因此没办法调用环境遮挡,从而成了黑色。
到此为止,我们的环境遮挡就讲到这里了,感谢大家看我的教程。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 经典教程Ambint occlution的原理与高级应用 经典 教程 Ambint occlution 原理 高级 应用