室内设计联盟官网-设计师互动平台 

主题数0

积分560

好友数2

日志

AO渲染技法

已有 2923 次阅读2011-9-14 08:08

AO教程收藏(三)Ambient Occlusion及其应用
(一)AO的制作方法
不象其他渲染器还分开了AO和Dirt(污垢),VRay中的AO就是通过VRayDirt来实现的(上面已提及),另外也可以借助于一个渲染脚本VRay ambient occlusion。下面我们就来一一讨论它们。
1、关于渲染视图的事项
如果你喜欢或习惯使用“透视图”/“Max相机视图”,那么设置完毕就直接进行AO渲染好了。如果是使用VR物理相机的,那么通常做法是取消exposure“曝光”,这样光圈系数、快门速度、胶片速度与白平衡等将全部失效,也就如同渲染“透视图”/“Max相机视图”,而原有的“相机特效”或“垂直移动”等设置仍然有效。作为建议,我更希望大家能使用VR物理相机,因为在不取消exposure“曝光”的前提下,它可以调节渲染图像的亮度,而适当的调暗还可以节省渲染时间。
我使用VR物理相机的习惯设置如下【图11】,我是参考了传统相机的参数设置的。这里有必要简单介绍一下:VR物理相机采用的是真实相机的原理,从默认参数来看,RC3模拟的是传统相机,到RC5更多的是模拟了数码相机。使用VR物理相机的方面之处在于它是理论上的,所以调节f-number光圈系数、shutter speed快门速度、film speed[ISO]胶片速度(感光度)这三者中任意一个对于增减渲染亮度起到的作用是完全一样的,他们都控制着进入相机的光线数量。
ISO在传统相机上就是胶片感光速度,通常我们使用的胶卷包装上都能明确看出ISO值,如常用的ISO 100、ISO 200、ISO 400等等,引申到数码相机上就相当于CCD感光速度(它倒是可调的)。ISO的感光量按正常倍数计算,如ISO 400就是比ISO 200亮1倍,ISO 200比ISO 100亮1倍......我习惯传统相机的“胶卷确定”方式,所以在VR物理相机中确定一个ISO参数值后一般也就不再去动它了。
至于光圈和快门调节哪一个或者是否一起调节,都可以,但必须清楚他们的数值关系。首先,这2个参数都是反比(倒数)方式,f-number 8.0就是f/8.0,shutter speed 30就是1/30秒,所以参数值越大就代表着光通量或曝光量越小,得到的渲染图像也就越暗。其次是倍数关系,f-number常用的有1.4、2、2.8、4、5.6、8、11、16、22,成“根号2”计算并排列,相邻的后者比前者的光通量小1倍;shutter speed常见各级有1、2、4、8、15、30、60、125、250、500、1000,相邻的后者比前者的曝光量小1倍。就是说对于VR物理相机,f/8、1/30跟f/5.6、1/60这两种设置下的渲染图像亮度是完全一样的。
 
2、AO Pass的一般做法
场景物体材质使用VRayLightMtl+VRayDirt或者Standard+VRayDirt+Self-Illumination方式(这两种方式都属于“正宗”做法),进行简单渲染设置后VR渲染即可,得到的就是AO Pass。具体步骤如下:
首先,打开“渲染场景对话框”。关闭所有灯光和GI【图12】,这些对于AO非但不再需要,还会无谓增加渲染时间和麻烦,因为VRay灯光也是“物体”所以即使“不可见”它还是会参与AO计算的。还有需要特别注意的是,虽然关闭了GI,但渲染设置中其他控制参数仍然起作用,其中如曝光方式,建议最好为“线性倍增”类型【图13】;而“图像采样器(反走样)”和“随机化准蒙特卡罗采样器”一如既往的对图像起着决定性作用!后者的原因是AO渲染同样调用rQMC。所以为了确保AO图像的质量,还是需要合理的图像采样器类型、反走样过滤器种类以及噪波阈值等设置的【图14】。
然后,如果场景存在可见“环境”,你想把它也纳入AO Pass,那么一般做法是把“环境”(快捷键8)颜色设置为纯白,当然为了需要也可以保持原有状态(比如蓝色或贴图),到时候反正可以PS处理(比如去色成灰度图)。这里说明一下:“环境”是相对独立的,它不受材质限制,所以可以带贴图或颜色,而又因为是关闭了GI所以贴图或颜色也不会影响到场景物体的AO渲染。
所有这些步骤不必分先后,早晚是要做的,而这些设置或修改对于2种材质组合方式也是完全一样的。
 
 
 

接着就是材质设置了。如下图【图15】,在渲染设置的Global Switches“全局开关”卷展栏中,勾选使用Override mtl“覆盖(越界)材质”,“覆盖材质”关联到材质编辑器中(反过来关联也一样)。若有某些物体想做成半透明、3S或凹凸、置换等的AO,那么单独处理他们好了,最简单的办法就是使用“覆盖材质”下面的Override Exclude “覆盖排除”(1.5RC5新增功能)将他们排除掉,另外赋上材质,这些材质是与“覆盖材质”一样的AO设置再加上你所需要的其他处理,这样就OK了。
(1)AO材质的第1种方式VRayLightMtl+VRayDirt【图16】
VRayLightMtl中,倍增值默认为1.0,你也可以根据需要来调整的。有点麻烦的是下面的Opacity“不透明”贴图和Emit light on back side“背面发光”,总感觉不如第2种方式的Standard材质好调,尤其是对排除物体做单独处理时(后面将有图做比较说明)。
VRayDirt中的一些常用参数含义:
radius半径 即阴影范围。数值越小,阴影范围就越小也越生硬;数值越大,阴影范围越大并且越柔和。所以这个数值最关键!注意:它是以场景单位计算的,如果你的场景单位是M数值取1的话就是半径为1m;而如果你的场景单位是mm数值取1000的话就是半径为1000mm,也是1m!对于室内,我通常取值在800-1000mm左右,对于室外要看情况了,一般是越大越好。
occluded color受阻色 即阴影颜色。该物体被其他物体阻挡光线,吸收的自然就是阴影了。因为合成时一般都不是100%的加上AO Pass的,所以这里的颜色即使纯黑也不会造成合成后阴影“死黑”(除非你的渲染图中本来就是死黑阴影了)。
unoccluded color非受阻色 即光线颜色(环境光)。也就是直接到达物体而被该物体吸收的光线。这个颜色不一定非得纯白,可以根据需要调节其灰度。
distribution分布 我的理解是吸收的分布密度,但它还跟Spread“传播(扩散)”有关。数值越小,密度越小,而传播或扩散的范围却越大,阴影也就越柔和。根据我看过的2个官方资料(1个是下面视频中的演示,1个是Vlado的建议),这个值都是取1.0。
falloff衰减 类似于Max灯光的衰减“行为”,可以理解成阴影“刹车”的范围,本来是匀速的刹车,给衰减后意味着提前刹车。所以一般不需要过大的衰减,要给需要适当。
subdivs 细分 针对阴影(边缘)的采样精度。如果数值过小,阴影边缘的噪波就会很明显,即使rQMC采样器中的噪波阈值再小也无济于事;如果数值过大,渲染时间将会倍增,而阴影质量高到一定程度后也看不出什么区别了。所以取值要合理,一般16-32左右也差不多了,再加以噪波阈值的全局配合。
......
其他一些参数对于AO意义不大了,感兴趣的话就自己测试、研究吧。这里我附上一个VRayDirt的视频,后面部分是关于制作AO Pass的简单示范。

帖子发表后,得到 凡子 的原理补充,现增加于此:
VRdirt中的Radius是指每一个着色点(shade point)向周围发射的探测光线的探测范围,
当这个值过小时,既便这个着色点离另一个物体表面很近,但这时可能会出现探测光线探测不到这一表面的情况,于是所有的探测光线返回告诉VR这个着色点基本不被阻塞,从而用unOcclusion颜色着色,
当这个值很大时,就算不断增大,效果也不会有什么变化,因为场景是一定的,探测范围再大也只能探测到这些阻塞表面,所以这个值够用就好,因此,radius的变化导致阻塞效果的变化是有区间性的,并非无穷变化。
另外Distribution是指探测光线的分离角度,值越大,越多的探测光线向着色点表面法线对齐,当其值为零时,是均匀角度180度等分分布,是一种均匀半球分布状态,如果阻塞颜色范围过大,可以增加这个值。
 
(2)AO材质的第2种方式Standard+VRayDirt+Self-Illumination【图17】
在这种材质方式中,VRayDirt的设置是跟上面完全一样的。“自发光”的话建议值是100,但也可以根据需要自己调整。
另外大家也许已经注意到了,这种方式的灵活性远比第1种要强,象双面、(半)透明、凹凸等等都可以较方便的在这里实现。

3、利用VRay ambient occlusion脚本制作AO Pass
这是个由老外编写的免费的AO渲染脚本,为方便大家我还是上传一个在这里吧。这个脚本是安装型的,将它拖入打开的Max界面,会有“安装 / 卸载”对话框,点击Install“安装”即可。安装后,最好进行一下自定义,找到这个子项“ml_plugins”,“VRay ambient occlusion”就在里面。至于自定义到菜单、主工具栏、四元菜单还是快捷键就随你了,不然只能最原始的“脚本-运行”了。它的面板很简单【图18】,你只要设置合理的半径和细分就可以了,这个就没有必要再翻译了吧。
使用这个脚本的方便之处在于,除了渲染设置中“反走样过滤器”、“曝光类型”以及“噪波阈值”等就那么几个设置依然要合理外,其他包括场景都不用再去管了,连材质也都帮你自动覆盖了,你只要点击“渲染”,应该算是“傻瓜型”的了;另外它还优化了rQMC。当然,优点后面的缺点就是:可控参数太少!因此当半径值不合理时(过小)明暗交接会变得比较明显,再就是无法单独处理(半)透明和凹凸等,而最头疼的还属对法线反转的物体(如单面)的不正确计算。此外,渲染时间上感觉相对的要长一些。
看一下下面的【图19】,测试采用LWF模式(稍后有简单解释),利用VR物理相机并适当减暗。图中大家可以看到,单面的Plane与茶壶的法线反转面都计算错误(应该说是没有计算),所以是单一的死黑。感觉“半径”对渲染时间影响不大,可怕的是“细分”。另外,天光模式倒是可以尝试的,尤其对于室外(建筑)表现【图20】。鉴于它的操作较简单,所以我们对它的讨论就到此为止了。对于室内表现,我建议大家还是少用这个脚本为好。
 

(二)2种方式下的AO比较与深化
一个小建议:除非只是探察一下功能,不然测试的话最好采用平常做图的真实数据,不要随便来个茶壶、搭几个Box就试,那样当你真的做建筑或室内时,这些随手的参数就毫无参考价值了。
下面用来测试比较的场景是采用真实尺寸的,单位mm;Max相机与VR物理相机各1个; 2个墙面1个桌面加几个物体,其中Plane以法线反转那一面对着镜头【图21】。这个小文件我传在这里,大家需要的话可以用来测试。

接下来我们进行相关测试的比较。我用的是奔4的老机器了,CPU 2.80GHz的,2G内存撑着,呵呵!
1、先说明一下,我测试是采用LWF(Gamma2.2)模式的,但同样适用于非线性的传统模式,只是示意图中的明暗以及对比度会有别于传统图像。不知大家注意到没有,VR最近几个版本的新增功能多与Gamma有关,其目的不言而喻了吧。如果你尝试LWF模式,可以简单设置如下:
(1)设置系统Gamma【图22】。
(2)建议渲染曝光类型为“线性倍增”,其下的Gamma设置为2.2(如果勾选了后面新增的“不影响颜色[仅自适应]”,那么使用VFB渲染的则需要按下“在sRGB空间显示色彩”按钮来察看,保存时必须选择Gamma覆盖方式,且修改为2.2。2种情形下渲染结果会有细小区别,具体的优劣有待测试、研究)【图23】。
(3)建议使用VR的VFB进行渲染,渲染完成后直接保存即可(不必覆盖更改Gamma值)。
如果你希望采用LWF模式做图,而对尝试后的结果很迷惑,可能有以下几种原因:
(1)尚未习惯或理解此模式(占50%)。要敢于尝试,要打破“闭门造车”,“走出去”多看外面的世界。我个人认为LWF是到达Visualization最方便也最正确的途径。这里推荐几个国外网站链接:
(2)Gamma设置和校正不到位(占20%)。不光只校正贴图,材质中的颜色也需要校正。
(3)灯光的布置、参数设置以及渲染设置不合理(占20%)。一般按实际需要布光即可,无须多余的补光。
(4)其他因素(占10%)。它包括必须承认的技术本身的客观缺陷,还有人为因素,比如对表现的理解、做图能力以及后期处理的把握(注:再好的老外高手也都进行图像后期处理的)。
下面就来看一下传统模式(上)与LWF模式(下)的图像区别【图24】。这里采用的是Standard+VRayDirt+Self-Illumination方式,材质勾选2-Sided“双面”;VRayDirt中设置:半径800mm,分布1.0,衰减0.0/1.0/3.0/6.0,细分32;噪波阈值0.002;透视图渲染。我的理解是:传统模式下的阴影,因其非线性故“堆积”过多,合成进去有“太狠”的感觉,需要改善比如加大衰减等(或者PS中再想办法处理);而LWF模式下的阴影就很均匀柔和,合成进去就比较真实自然。另外请注意一下它们的渲染时间,也很有趣。
 

2、再来看这些比较(LWF模式,以下相同不再说明)。先看第一组【图25】,分别是对透视图、Max相机视图和VR物理相机视图的渲染,AO材质设置相同。你会发现这4张渲染图(几乎)是一样的,而渲染的时间也一样。
其中第4张的VR物理相机设置:启用“曝光”并取消“镜头渐晕”,f/8(默认)、1/12秒、ISO 200(RC3中的默认设置就是f/8、1/30秒、ISO 200)。你是否意识到了这意味着什么?呵呵!是的,如果你原先使用的是Max相机,而换成VR物理相机后想得到跟原先一样亮度的渲染结果的话,这套参数设置应该就是“换算标准”了。
看第二组【图26】,分别是不同快门速度下的渲染结果,其他设置都相同,VR物理相机一样是启用“曝光”并取消“镜头渐晕”、f/8和ISO 200。快门速度1/60秒、1/30秒、1/15秒、1/8秒各相差1级,表示曝光量各相差1倍,也就是说渲染亮度依次提高1倍。请注意渲染时间,它们依次增加到了1.4-1.6倍左右。当然图像(AO)质量也略微有所提高。
这个比较我想说明一个问题,就是使用VR物理相机对于控制渲染时间的相对作用。因为AO Pass质量相差不大的话,在PS里合成几乎是看不出来的,更何况一般也不是100%合成进去的。来看下【图27】就清楚了,从理论上计算,快门速度1/12秒跟1/30秒时的曝光量相差1.3-1.4倍样子,在PS里我们用“曝光度”对1/30秒时的渲染图进行调整,你会发现当“曝光度”达到1.33左右时是否就跟1/12秒时的图像“亮度”趋于一致了?只是质量因为渲染得暗而略微差些。再回头看一下2张图的渲染时间,相差了将近1倍!注意:快门1/12秒时的图像就等同于Max相机的渲染图,渲染时间也是一样的。
 

3、我们回过来看一下(AO)VRayDirt自身参数的一些比较。这里我使用了VR物理相机,参数设置如【图28】,这样渲染也会加快;AO做法采用了Max标准材质方式,并且勾选了“双面”,VRayDirt中细分32;渲染设置中噪波阈值0.002。
【图29】是不同半径下的比较,衰减都为0.0。大家可以发现,左侧1组3张在无分布下,半径越大阴影就越虚以至象墙角处都模糊掉了,而右侧1组3张给了分布1.0后差别就没那么明显了吧。
【图30】是相同半径下有无衰减和分布的比较。
另外,“衰减”比较在上面作LWF与否模式下的比较时已经有过了。至于其他一些参数,一般保持默认即可,这里就不再多作说明了。
小结一下:我认为,VRayDirt中最关键的就是“半径”和“分布”了,还有“衰减”也可以配合使用。图中的参数其实也算是我的建议值了,当然大家可以根据自己的理解和不同的需要来调整。
 
4、我们接着来看使用VR灯光材质与Max标准材质这2种方式下的比较。场景与渲染设置同上。
【图31】清楚的解释了为何我要放置单面物体,呵呵!图中我们可以看到VR灯光材质的缺陷,即对于单面物体的计算处理,它在不勾选Emit light on back side“背面发光”时就不用说了,即使勾选了也同样存在问题。只有Max标准材质勾选“双面”才是“正解”!

再来说说我在前面提到过的“Max标准材质这种方式的灵活性更强,象双面、(半)透明、置换(不是修改器的置换)、凹凸等等都可以较方便的在这里实现”。
这次我“覆盖排除”掉2个茶壶,将它们单独处理成“半透明”。拷贝一个“覆盖材质”改名后附给2个茶壶,简单处理就调节Opacity“不透明度”的数值或者Falloff贴图,还可以想办法来调节IOR“折射率”......【图32-33】。
VR灯光材质虽然也带了Opacity“不透明度”贴图通道,但真要用的话效果不好,况且这里又牵涉到了折射率以及(半)透明物体的“双面”问题,不信大家可以试试。
 
继续,这次我们来做贴图的“凹凸”和“置换”效果。茶壶什么的都不要了,合并进Evermotion Archmodels v30织物一集043中的一块毛巾,这块毛巾的原有材质中就给了“置换”贴图的。“覆盖排除”掉毛巾和桌子。如果毛巾的材质是VRayMtl,那么就换成Max标准材质,别忘了把原有的置换贴图拷贝(或剪切)粘贴入新材质的“置换”贴图通道,还有就是关联一个VRayDirt到“漫反射”贴图通道中,“自发光”值给到100,是否需要“双面”看模型情况【图34】。桌面的凹凸也是类似做法,无非换成了“凹凸”贴图通道【图35】。按下它们的“在视图中显示贴图”按钮进行察看【图36】。对于这样做法的“凹凸”,贴图Amount“数量”必须较大,不然不明显,而“置换”尽量保持原始渲染中的贴图“数量”以免物体被置换“放大”,本例因原贴图对比较小也为了效果示意故“数量”较狠。渲染结果如图【图37】,感觉所花渲染时间也不多。
对于这样的带凹凸或置换的AO效果,VR灯光材质恐怕是做不到了吧,呵呵!
 

以上介绍的几种AO Pass的制作方法各有优劣,具体操作时请根据情况自己取舍。当然还有其他类似的做法也应该可行,这里就不多说了,只要大家肯多动脑筋、多研究、多测试,那么办法就在你自己手中!我的建议,目前最好还是采用Max标准材质那种方式来做,那样更标准些、也更灵活些。希望VRay下一个版本能有针对AO制作的新材质或新功能出现。

(三)AO的合成方法
我们渲染得到AO Pass后,一般就利用Photoshop来进行与原始渲染图的合成,顺便进行其余的后期处理。
Combination“合成”在PS中的最简单做法,是将“AO图”作为1个(或N个)图层加到“原始渲染图”图层上,通过设置图层的“混合模式”和“不透明度”来调整“AO图”与“原始渲染图”的合成效果,一般来说“叠加”与“柔光”模式较好且“不透明度”无须100%。其他做法,还可以采用“蒙板”、“通道”等手段来处理“AO图”后再进行合成。
PS中几个常用混合模式概念的简单解释:
叠加:加强原图像的高亮区和阴影区,同时将前景色叠加到原图像上。
柔光:根据前景色的灰度值来对原图像进行处理。前景色加光、遮光。
正片叠底:新加入的颜色与原图像颜色合成为比原来的二种颜色更深的第三种颜色。
颜色加深:用前景色变暗原图像颜色。
对于我们的合成作用来看,“叠加”与“柔光”都加深了阴影部分的颜色,同时也让图像变得更亮。但从整体效果来看,“叠加”是相对的提高了对比度,而“柔光”似乎是“蒙上”了一层光线。所以,我个人更倾向于“叠加”模式,或者采取 “部分‘叠加’+少量‘柔光’”的方式来进行合成。来看一下下面的几个图,我以上一个帖子做过的sponza场景效果为例。
【图38】是原始渲染图与AO图。AO图被我简单处理过了,主要是“擦除”了一些不需要的“阴影”。
【图39】是“叠加”(左)与“柔光”(右)2种模式100%混合后的效果,可以很清楚的看出“叠加”与“柔光”的区别。一般来说,不需要100%的不透明度,那样太狠。
【图40】右侧的是“叠加”70%时的效果,跟左侧的原始渲染图比较(红圈是我随意挑的几处),可以看到改善了的效果,尤其是阴影细节以及明暗对比。大家可能还注意到了我的原始渲染图不是很亮,我是有意控制了渲染成这样的,因为AO合成可以提亮它,同时也考虑到了渲染时间;此外,LWF模式下貌似图像对比度不够的问题也通过AO合成得到了改善吧。

鸡蛋

鲜花

握手

雷人

路过

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 联系客服
    •   QQ 44247496

    •   13693232461
    • 工作日:早9点晚6点


      备用联系:15011229364(电话/微信)

  • 二维码

    官方微信/小红书

    关注室内设计联盟

    • 微信扫一扫关注本站公众号

      关注本站公众号
    • 小红书

      关注小红书
  • 发布
  • 收藏
  • 签到