gggds 发表于 2009-11-10 23:40:57

3d MAX分别抑制漫射面/镜面HDRI色彩过饱和的解决方案

在MAX里使用HDRI对场景照明时,经常会出现色彩过饱和的现象。
通俗地说就是,物体被HDRI照明时,表现为被比HDRI原有色光更加鲜艳的色光照明。这一问题常常表现为如图所示的情形。
http://www.fevte.com/uploadfile/3d/uploadfile/200806/20080622092619479.jpg
在此以finalrender为例,介绍一套解决这个问题的方案。与其它格式的LDRI相比,对HDRI直接进行色相/饱和度的调整是不太可行的。但在MAX材质编辑器调用HDRI时,可以通过引入一种“RGB Tint”结点,使HDRI被调整后,再间接被调用。建立一个简单的“室外”场景。一个展示台上放着一个金属壶。它们的材质分别如图所示。可以说展示台是漫射面,金属壶既有镜面成份又有漫射面的成份。
http://www.fevte.com/uploadfile/3d/uploadfile/200806/20080622092631143.jpg
skylight影响着什么?skylight可以说是最典型的室外半球光源,HDRI也恰恰主要充当室外半球光源。于是很自然我们可以把HDRI放入skylight贴图通道里,以HDRI的高动态范围色彩来控制skylight的色彩分布。我们将通过下面的操作来解答上面的问题。这里使用一幅具有湛蓝天空的HDRI。
http://www.fevte.com/uploadfile/3d/uploadfile/200806/20080622092637963.jpg
其白平衡设置如图。
http://www.fevte.com/uploadfile/3d/uploadfile/200806/20080622092639398.jpg
FR渲染面板如图。为了消除影响光照的其它无关因素,在这里显然要关闭MAX默认的灯光。把HDRI放入skylight通道,原有的skylight色彩将失效。此时background通道里无图,勾选“consider background”无实际意义,于是不勾选。
http://www.fevte.com/uploadfile/3d/uploadfile/200806/20080622092640996.jpg
渲染结果如图。可见,具有完全漫射性的展示台和部分漫射性的金属壶的确被skylight照亮了,并且HDRI起到了显著的作用,因为被照亮的部分呈现出显著的饱和蓝色。另一方面金属壶不如展示台那么明亮,且金属壶的镜面反射形成的是一片漆黑天空的像。这些现象充分证明了skylight仅仅影响漫射面,只有漫射面被skylight照亮。对于镜面来说,此时天空依然是光线追踪的默认“终结色”------黑色。
http://www.fevte.com/uploadfile/3d/uploadfile/200806/20080622092643456.jpg

?


Background影响着什么?我们将通过下面的操作来解答这个问题。在Environment的background里依然放入那张HDRI。
http://www.fevte.com/uploadfile/3d/uploadfile/200806/20080622092645940.jpg
为了消除影响光照的其它无关因素,在这里显然要关闭MAX默认的灯光,并且不开skylight。先不勾选consider background。结果如左图。漫射面一片漆黑,而镜面反射所成像里可以看见background。再勾选consider background。结果如右图。漫射面如同被skylight照亮,而镜面反射所成像里同时也可以看见background。可见,无论哪种情况,在镜面折/反射所成的像中总是可以看见background,即Background默认情况只影响着镜面。而FR所特有的“consider background”功能指漫射面的GI也能考虑background的存在,使background等效于另一个来源的skylight,同时对镜面和漫射面起着作用。
http://www.fevte.com/uploadfile/3d/uploadfile/200806/20080622092648970.jpg
综上所述,于是可以条理分明地分别利用skylight和background来控制漫射面和镜面对HDRI的响应。只要在skylight和background贴图通道里加入分别通过RGB Tint调整过的HDRI就可以达到任意的效果。为了使background不串扰漫射面,于是“consider background”将始终不勾选。 通过RGB Tint的处理,很容易将HDRI所表现出的光色的色度(包括色相、饱和度、明度)校正到理想状态。但如果使skylight和background里的HDRI分别通过不同的RGB Tint结点处理,使之分别对漫射面和镜面表现出各自不同的色度值,那么这样一来可以带来一个关键性的优点,那就是在保证漫射面被不过度饱和的HDRI色光照明的前提下,可以使镜面成像中的HDRI依旧色彩艳丽纯正。具体操作就不描述了,其流程如图所示。
http://www.fevte.com/uploadfile/3d/uploadfile/200806/20080622092655957.jpg
为了避免漫射面被过于饱和的蓝光照明,需要把HDRI原图链接到RGB Tint上。在RGB Tint属性栏里可以看见,默认情况下原始图像的R、G、B三通道分别对应着纯红(255.0.0)、纯绿(0.255.0)、纯蓝(0.0.255),即从RGB Tint结点输入的像素三通道分别不失真地映射到从该结点输出的像素三通道。若自定义三通道对应的色块,则意味着原图三通道分别偏移地映射到自定义的色彩。将三色块的饱和度均降低到164就可以显著降低HDRI的饱和度,为了在降低饱和度的同时不使明度升高,只要将三色块的明度均降低到180就可以了。三色块的饱和度和明度同步升降,可以保持HDRI的色相不偏移。 校正后渲染结果如图。
http://www.fevte.com/uploadfile/3d/uploadfile/200806/20080622092657334.jpg
通过RGB Tint的处理,甚至还可以使漫射面和镜面看起来对HDRI产生色相不同的响应,这是通过使链接至skylight和background的两组RGB Tint三色块产生差异从而实现的。如图所示。
http://www.fevte.com/uploadfile/3d/uploadfile/200806/20080622092701249.jpg
页: [1]
查看完整版本: 3d MAX分别抑制漫射面/镜面HDRI色彩过饱和的解决方案