MAX----- Visualization Series — Ambient Occlusion及其应用

  

      

别提示:如果你对AO无所谓或不喜欢,那么这个帖子不看也罢,或者看过了当它不存在也可;如果你持强烈反对观点,那么你愿意的话请以技术交流的方式跟贴讨论。我不想因为某些无聊者而让帖子变味。这里,我真诚的欢迎大家一起来讨论和研究,也希望能分享你们的成果和心得,更盼望高手们能前来指导和深化。我在此先行谢过!

本帖中所涉及的相关理论资料绝大部分来自国外网站、论坛或个人网页,文字翻译都是我个人所为,相关解释也多我的个人理解。我对AO的认识,最早是在国外论坛查看资料、自己研究和测试的,后来跟 鹏帆 一直探讨着,前段时间还得到了 凡子 的理论帮助......这样算起来接触AO已有半年多,现在我也终于把对AO的理解整理成文了。申明一下:本文我仅发表于“VRay中文网”和“火星时代”,未经允许请勿转载!

我喜欢了解一些新东西、偶尔会研究一下,其实也是为了更好的做图、做好图,相对于理论,我更看重实际!我一直认为自己是“实用主义”者,更是“拿来主义”者。我始终认为,国外的一些技术和经验还是很值得学习、参考和借鉴的,至少我们也应该在了解之后再作取舍。所以虽然为了能尽早尽快的接轨世界,我确实很想推广一些东西(也在努力中),但对于大家能否理解和接受不强求,我{zd0}的意愿是还大家一个“知情权”!

先附上几个与主题相关的帖子链接:
火星时代 【3ds max技术论坛】渲染技巧 - 《看VRay的GI+AO VS mental ray的GI & AO》【效果探讨】

火星时代 【室内表现论坛】Vray专区 - 《看VRay的......》【效果探讨•小续】
VRay中文网 [讨论] 看VRay的GI+AO VS mental ray的GI & AO
VRay中文网 [原创] 关于简单的VRAY AO制作!

一、AO的历史与发展

Ambient Occlusion简称AO,中文译名不太好定,过去的书籍和网络上有叫“环境遮挡”的,也有叫“环境光散射”、“环境光吸收”的,如Maya中的Bake AO似乎就一直是译成“烘焙环境吸收贴图”的。要不沿用一下就叫它“环境吸收”或者“环境光吸收”?!

AO这项技术最早是在Siggraph 2002年会上由ILM(工业光魔)的技术主管Hayden Landis所展示,当时就被叫做Ambient Occlusion。象RenderMan系列渲染器中的PRMan、BMat以及Maya、Blender等软件引入AO技术较早,Softimage|XSI与Cinema 4D是在Siggraph 2005上发布的版本中增加AO的......

在Max的渲染器中,除Mr较早外,最近的fR Stage-1 R2.0和VR 1.5RC3才见AO现身。对此,我打个玩笑的比方:如果对Max中四大渲染器的AO来划“阶级成分”的话,mr算是“地主”了,它的AO Shader资历最深、家产最多,除本能外还可以放入相机、灯光Shader来计算和控制,高级用户更可自行编程,另外新增的“建筑与设计材质”也内置了“AO{tx}”;fR可算“富农”,因为AO Shader同样拥有用作灯光、遮罩、融合以及反射的“资本”,但终因无QMC之故AO虽快却质差,所以是“暴发户”一类的;VR差不多算“中农”吧,虽然就一个“Dirt”倒也能自给自足,不花哨从而保持了“本色”;而Br就是贫农了,因为它目前尚不拥有AO(但它基于QMC的GI似乎可以抗衡其他渲染器GI+AO效果,而且据说{zx1}的2.0版本在整体速度上已经超过了VR 1.5RC3)。

下面是AO的几个相关示意【图01-04】,大家先了解一下吧。

二、AO的原理与作用

先看一段小文字:
《鲨鱼故事》(Shark Tale)是2005年第77届奥斯卡金像奖“{zj0}动画长片”提名的三部影片之一。为了更好地达到“绘画感”这个需要,总美工设计师皮埃尔特别用到了软区域阴影和反射光,即利用环境光来模拟柔和阴影,这是当时非常流行的一种新的灯光技术,称为“Ambient Occlusion”(梦工厂称之为“exposure”<曝光>),它能够为表面上的每一点xx计算来自天空的自然光量,这样处理的结果就像是一张阴天状态下曝光极好的灰度照片。然后将Ambient Occlusion Pass(AO层)与环境灯光合成,这样,CG元素与实拍的素材就非常自然地结合在一起了......

3D软件(渲染器)中AO的原理是统一的,Max中mr、fR、VR的AO也是几乎一致的(只是可控性和功能、用途有所不同)。顺便提一下,如果有些使用VR的朋友确实认为mr或fR的AO既快又功能多的话,那么不妨结合了使用,就是说“VR原始渲染+mr或fR的AO”进行合成,这其实也是我最近想到的一个思路。但就目前而言,我还是很喜欢VR的AO,因为它操作简单灵活、效果真实细腻。

What is occlusion ?
To simplify the explanation, just think of a situation when all your objects have a simple white color and your scene is lit equally from all directions by a white light. Basically this should result in a blank white image, but what happens when some objects block a certain amount of rays that should have gotten to other objects ? those rays don't reach the other object and as a result, the parts where the rays were blocked will become darker. The more rays blocked, the darker the surface will be. So basically what we get is a white image with dark areas where geometry intersects with itself.
什么是Occlusion?
简单的来解释,那就想象一下这样的一个情形:当场景中所有的物体都是单一白色并且是由一个白色灯光来产生均匀的直接照明,那么基本上,结果就是得到一个苍白的图像。但是当某些物体阻挡了相当数量的本应投射到其他物体的光线时,那将会发生什么呢?这些光线没有到达那些物体,结果就是被光线阻挡的地方变得较暗。越多光线被阻挡,表面就越暗。所以基本上我们得到的是一个带有自身几何相交暗区的白色图像。

Why using it ?
The resulting occlusion pass gives very accurate and smooth shadows that resemble the result of global illumination. Compositing these shadows over your final render can significantly improve your image in many ways, it can mainly improve your shadows, give more depth to your scene and really helps to better show all the details of your models.
为什么使用它?
Occlusion pass的结果就是贡献了非常xx和平滑的阴影,就好像是全局照明的结果。在你最终渲染后有多种方法来合成这些阴影会在真正意义上改善图像,它主要能改善阴影,给场景更多的深度,真正有助于更好的表现出模型的所有细节。

AO采用快速而廉价的算法来模拟全局照明模式。其大致计算过程是在几何体表面任意一点的上方,用半径预定的半球探测该点的外部区域,从而决定光线是否在该几何体表面上该点处被其他几何体阻挡,或者,被吸收。一旦各点的吸收幅度确定,则几何体表面会形成一张灰度级的映射图,用以调制环境光对该几何体表面的贡献,映射图中明暗区域均按比例调节其对环境光吸收的强弱程度。

我用比较通俗的话来总结一下:AO不需要任何灯光照明,它以独特的计算方式吸收“环境光”(同时吸收未被阻挡的“光线”和被阻挡光线所产生的“阴影”),从而模拟全局照明的结果(enhance GI or fake GI),它主要是通过改善阴影来现实更好的图像细节,尤其在场景物体很多从而到处阻挡着光线导致间接照明不足时,AO的作用会更加明显。

附上4个链接,第1个是纯理论,其余3个是跟mr AO有关的教程(其中都涉及到了共通的原理),有兴趣的朋友不妨看看。
Ambient occlusion:

Ambient occlusion pass guide:
Occlusion in 3dsmax 7:
3DS Max 7: MentalRay: Ambient Occlusion:

下面2张图【图05-06】是mr的AO示意,因为fR和VR的AO出来太晚,一时找不到图示,只好用mr的了,但原理是一样的。请大家尤其注意一下第2张图,两个物体正下方的阴影(其中立方体因为距离远故平面吸收的阴影就很浅),以及球体左上方受到立方体“阻挡”光线而吸收的阴影。

客观的说,尤其是以前AO更多的被应用于CG类图像包括插图。而随着人们认识的加深以及做图的需要,AO也逐渐被用到了工业造型、建筑与设计的表现上来,如xx轿车的设计展示每每被用到了AO(尤其是mr渲染),而在建筑外观以及室内设计表现中也越来越多的见到它的身影。这也证明了fR、VR于(最)新版本推出AO不无目的吧。

如果要说AO的意义所在,我是这样解释的:即使你把花在制作AO Pass上的甚至更多的时间,都用来提高原先的采样和精度,你也无法渲染出(哪怕类似于)AO带来的效果!尤其是渲染质量较低的图像,可以得到很大的改善!况且AO的渲染相对较快,如果有空余电脑利用了渲张AO Pass那更是不耽误时间。若是觉得要多出一道“合成”工序来,其实不然,因为最终的图基本都要PS过的吧,而AO Pass在PS里“合成”进去只不过是举手之劳而已,呵呵!

那么要问AO到底能带来哪些效果(好处)呢?具体的说,AO可以解决或改善漏光、飘和阴影不实等问题,解决或改善场景中缝隙、褶皱与墙角、角线以及细小物体等的表现不清晰问题,综合改善细节尤其是暗部阴影,增强空间的层次感、真实感,同时加强和改善画面明暗对比,增强画面的艺术性。


三、AO的制作与合成

作为比较,大家可以看看mr、fR和VR的AO参数面板,是否感觉大同小异【图07】。

VRay官方网站ChaosGroup论坛上有一个帖子标题是 Ambient Occlusion vs Dirtmap ,作者因为不理解所以认为VRayDirt不是真正意义上的AO,他还以VRayDirt图【图08】跟MR AO图【图09】相比来咨询。论坛老大也是VRay开发者之一的Vlado解释到:VRayDirt works more or less in the same way as MR ambient occlusion.(VRayDirt或多或少是跟MR的AO起同样作用的),并且建议:You simply need a larger radius for the "dirt" effect. Also, if you are simulating AO, you need to set the distribution parameter to 1.0.(你只需要一个较大的半径值给Dirt效果。同时,如果你是模拟AO,那么你需要把distribution“分布”参数设置为1.0)。作者根据建议再次测试,得到了下图【图10】,同时他也感叹到:More testing required for increased VRay knowledge.(要增加VRay知识,必须多测试!)

因为我不用mr和fR,所以从这里开始我们将着重讨论Max中VRay的AO(xx于静帧表现)。

(一)AO的制作方法

不象其他渲染器还分开了AO和Dirt(污垢),VRay中的AO就是通过VRayDirt来实现的(上面已提及),另外也可以借助于一个渲染脚本VRay ambient occlusion。下面我们就来一一讨论它们。

1、关于渲染视图的事项

如果你喜欢或习惯使用“xx图”/“Max相机视图”,那么设置完毕就直接进行AO渲染好了。如果是使用VR物理相机的,那么通常做法是取消exposure“曝光”,这样光圈系数、快门速度、胶片速度与白平衡等将全部失效,也就如同渲染“xx图”/“Max相机视图”,而原有的“相机{tx}”或“垂直移动”等设置仍然有效。作为建议,我更希望大家能使用VR物理相机,因为在不取消exposure“曝光”的前提下,它可以调节渲染图像的亮度,而适当的调暗还可以节省渲染时间。

我使用VR物理相机的习惯设置如下【图11】,我是参考了传统相机的参数设置的。这里有必要简单介绍一下:VR物理相机采用的是真实相机的原理,从默认参数来看,RC3模拟的是传统相机,到RC5更多的是模拟了数码相机。使用VR物理相机的方面之处在于它是理论上的,所以调节f-number光圈系数、shutter speed快门速度、film speed[ISO]胶片速度(感光度)这三者中任意一个对于增减渲染亮度起到的作用是xx一样的,他们都控制着进入相机的光线数量。

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这两种设置下的渲染图像亮度是xx一样的。

2、AO Pass的一般做法

场景物体材质使用VRayLightMtl+VRayDirt或者Standard+VRayDirt+Self-Illumination方式(这两种方式都属于“xx”做法),进行简单渲染设置后VR渲染即可,得到的就是AO Pass。具体步骤如下:

首先,打开“渲染场景对话框”。关闭所有灯光和GI【图12】,这些对于AO非但不再需要,还会无谓增加渲染时间和麻烦,因为VRay灯光也是“物体”所以即使“不可见”它还是会参与AO计算的。还有需要特别注意的是,虽然关闭了GI,但渲染设置中其他控制参数仍然起作用,其中如曝光方式,建议{zh0}为“线性倍增”类型【图13】;而“图像采样器(反走样)”和“随机化准蒙特卡罗采样器”一如既往的对图像起着决定性作用!后者的原因是AO渲染同样调用rQMC。所以为了确保AO图像的质量,还是需要合理的图像采样器类型、反走样过滤器种类以及噪波阈值等设置的【图14】。

然后,如果场景存在可见“环境”,你想把它也纳入AO Pass,那么一般做法是把“环境”(快捷键8)颜色设置为纯白,当然为了需要也可以保持原有状态(比如蓝色或贴图),到时候反正可以PS处理(比如去色成灰度图)。这里说明一下:“环境”是相对独立的,它不受材质限制,所以可以带贴图或颜色,而又因为是关闭了GI所以贴图或颜色也不会影响到场景物体的AO渲染。

所有这些步骤不必分先后,早晚是要做的,而这些设置或修改对于2种材质组合方式也是xx一样的。

接着就是材质设置了。如下图【图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的设置是跟上面xx一样的。“自发光”的话建议值是100,但也可以根据需要自己调整。

另外大家也许已经注意到了,这种方式的灵活性远比第1种要强,象双面、(半)透明、凹凸等等都可以较方便的在这里实现。

3、利用VRay ambient occlusion脚本制作AO Pass

这是个由老外编写的免费的AO渲染脚本,具体可去
查看和下载,为方便大家我还是上传一个在这里吧。这个脚本是安装型的,将它拖入打开的Max界面,会有“安装 / 卸载”对话框,点击Install“安装”即可。安装后,{zh0}进行一下自定义,找到这个子项“ml_plugins”,“VRay ambient occlusion”就在里面。至于自定义到菜单、主工具栏、四元菜单还是快捷键就随你了,不然只能xxx的“脚本-运行”了。它的面板很简单【图18】,你只要设置合理的半径和细分就可以了,这个就没有必要再翻译了吧。

使用这个脚本的方便之处在于,除了渲染设置中“反走样过滤器”、“曝光类型”以及“噪波阈值”等就那么几个设置依然要合理外,其他包括场景都不用再去管了,连材质也都帮你自动覆盖了,你只要点击“渲染”,应该算是“傻瓜型”的了;另外它还优化了rQMC。当然,优点后面的缺点就是:可控参数太少!因此当半径值不合理时(过小)明暗交接会变得比较明显,再就是无法单独处理(半)透明和凹凸等,而最头疼的还属对法线反转的物体(如单面)的不正确计算。此外,渲染时间上感觉相对的要长一些。

看一下下面的【图19】,测试采用LWF模式(稍后有简单解释),利用VR物理相机并适当减暗。图中大家可以看到,单面的Plane与茶壶的法线反转面都计算错误(应该说是没有计算),所以是单一的死黑。感觉“半径”对渲染时间影响不大,可怕的是“细分”。另外,天光模式倒是可以尝试的,尤其对于室外(建筑)表现【图20】。鉴于它的操作较简单,所以我们对它的讨论就到此为止了。对于室内表现,我建议大家还是少用这个脚本为好。

(二)2种方式下的AO比较与深化

一个小建议:除非只是探察一下功能,不然测试的话{zh0}采用平常做图的真实数据,不要随便来个茶壶、搭几个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;xx图渲染。我的理解是:传统模式下的阴影,因其非线性故“堆积”过多,合成进去有“太狠”的感觉,需要改善比如加大衰减等(或者PS中再想办法处理);而LWF模式下的阴影就很均匀柔和,合成进去就比较真实自然。另外请注意一下它们的渲染时间,也很有趣。

2、再来看这些比较(LWF模式,以下相同不再说明)。先看{dy}组【图25】,分别是对xx图、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的制作方法各有优劣,具体操作时请根据情况自己取舍。当然还有其他类似的做法也应该可行,这里就不多说了,只要大家肯多动脑筋、多研究、多测试,那么办法就在你自己手中!我的建议,目前{zh0}还是采用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合成得到了改善吧。

【图41】是最终效果。我在AO合成后又简单的调整了一下,主要是利用滤镜进行了“锐化”和“修缮”。这张图的1645×700大图可以查看此贴

或许有人要问了,如果原始渲染图的亮度已经到位,那么AO合成该如何进行才能不影响图像已有亮度而又增加阴影细节呢?总体思路是只将AO图中的暗部阴影区合成进去,它同样适用于图像的局部处理。这种做法就类似于“抠图”了,删除不需要的亮部区和较亮的中间调区,方法应该很多的,怎么做就各人各喜欢了。我建议一个较简单的办法,就是给AO图层添加一个蒙板,然后利用通道处理,{zh1}通过某种混合模式以适当不透明度跟原始渲染图合成。

下面的【图42】是老外一个教程(似乎也是仅有的关于VRay AO的教程)里的示意说明,他用到的就是类似方法,可以看到图像没有明显提亮而暗部细节变得丰富。我把教程保存成了网页文件传在这里,里面包括了制作与合成AO整个过程的简介,有兴趣的话可以看看。

AO在PS里的合成差不多就这些了,相信熟练PS处理的朋友应该心领神会、可以手到擒来了吧。呵呵!

四、AO的应用实例

由于众所周知的一些原因,很多时候我们不得不那样渲染出图,造成了图像质量不高;但有些时候,是我们自己设置不合理,也导致图像出现问题。我们就需要对图像进行修正和改善。还有些时候,我们为了使图像更加xx所以也需要进行处理。这些后期处理,一般都是通过PS现成工具来完成的,基本上也就是对亮度、对比度、色调、锐化等的处理,说白了就是“平面处理”,不关“三维效果”的痛痒。当然有功夫深的还是处理了空间造型、空间层次等“三维图像实质”,但会很花时间。现在,AO合成提供了真正意义上的三维处理方法之一,简单而又实用!下面我就分4个方面来举例简单示意。

1、解决或改善物体漏光、阴影不实等问题

AO的作用主要就是加强阴影,所以处理阴影不实应该是卓有成效的;对于轻微漏光现象,也能较好的改善,但如果漏光严重那又另当别论,毕竟AO不是“包治百病”的吧,呵呵!【图43】这个简单例子中,利用通道处理了AO,这样合成就不太会过多影响图像的原有亮度了。从结果可以看出,球的阴影不实处理的很xx,而墙格里的貌似漏光现象也基本修正了,还附带处理了左上墙角,跟原始渲染图相比差别很大而且还是多方面的。


郑重声明:资讯 【MAX----- Visualization Series — Ambient Occlusion及其应用】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——