2.3.3 Irradiance map(辐照度贴图引擎)

2.3.3 Irradiance map(辐照度贴图引擎)

Irradiance map(辐照度贴图引擎):Irradiance(辐照度)描述了三维空间中的任意一点以及全部可能照射到这点的光线。

在几何光学里,这个点可以是无数条不同的光线来照射,但是在渲染器中必须对这些不同的光线进行对比取舍,这样才能优化渲染速度。那么VRay 渲染器的Irradiance map(辐照度贴图引擎)是怎样对光线进行优化的呢?当光线射到物体表面的时候VRay 会从Irradiance map 里寻找与当前计算过的点类似的点(VRay 计算过的点就会放在Irradiance 里),然后根据内部参数进行对比,满足内部参数的点就认为和计算过的点相同,不满足内部参数的点就认为和计算过的点不相同,同时就认为此点是个新点,那么就重新计算它,并且也把它保存在Irradiance map 里。这也就是我们在渲染的时候看到的 Irradiance map 计算过程中跑几遍光子的现象。正是因为这样,Irradiance map 才会在物体的边界交叉,阴影区域计算得更精确(这些区域光的变化很大,所以被计算的新点也很多);而在平坦区域计算的精度就比较低(平坦区域的光的变化并不大,所以被计算的新点也相对比较少)。它的内部计算原理大概就这样,接下来看看它的参数面板,如图2.19 所示。

图2.19

在Irradiance map(辐照度贴图引擎)卷展栏中系统提供了7 种系统预设和种自定义参数设置,根据场景要求可选择不同级别的渲染引擎预设参数。

(1)Built-in presets:内置预设。

Current preset:当前选择的模式,其下拉菜单包括Custom(自定义)、Very Low(非常低)、Low(低质量)Medium(中级)、Medium-Animation(中级动画)、High(高级别)、High-animation(高级别-动画)、Very high(非常高)8 种模式。这8种模式可以根据用户的需要渲染不同质量的效果图。当选择Custom(自定义)时,可以手动调节IrradIance map 中的参数。

(2)Basic Parameters(基本参数):主要控制样本的数量,采样的分布以及物体边缘的查找精度,其具体参数如图2.20 所示。

图2.20

➢ Min rate(最小比率):控制场景中平坦区域的采样数量。O 表示计算区域的每个点都有样本,-1 表示计算区域的1/2 是样本,2 表示计算区域的1/4 是样本。

➢ Max rate(最大比率):控制场景中的物体边线、角落阴影等细节的采样数量。表示计算区域的每个点都有样本,-1 表示计算区域的l/2 是样本,-2 表示计算区域的l/4 是样本。

➢ HSph.subdivs(半球细分):因为VRay 采用的是几何光学,它可以模拟光线的条数。这个参数就是用来模拟光线的数量,值越高,表现光线越多,那么样本精度也就越高,渲染的品质也越好,同时渲染时间也会增加。

➢ Interp.samples(插值采样):这个参数对样本进行模糊处理,输入较大的值可以得到比较模糊的效果,输入较小的值可以得到比较锐利的效果。

➢ CLr thresh(颜色极限值):这个值主要让渲染器分辨哪些是平坦区域,哪些不是平坦区域,它是按照颜色的灰度来区分的。值越小,对灰度的敏感度越高,区分能力越强。

➢ Nrm thresh(法线极限值):这个值主要让渲染器分辨哪些是交叉区域,哪些不是交叉区域,它是按照法线的方向来区分的。值越小,对法线方向的敏感度越高,区分能力越强。

➢ Dist thresh(距离极限值):这个值主要让渲染器分辨哪些是弯曲表面区域,哪些不是弯曲表面区域,它是按照表面距离和表面弧度的比较来区分的。值越高,弯曲表面的样本更多,区分能力越强。

建筑动画的制作中,HSph.subdivs(半球细分)参数的值不宜过小,尽管较小的值可以加快渲染速度,但容易使画面产生黑斑,测试渲染效果如图2.21 所示。

图2.21

适当增大Interp.samples(插值采样)参数的值可以产生模糊黑斑的效果,减小参数的值可以使画面变得清晰锐利。如图2.22 所示为增大HSph.subdivs(半球细分)和Interp.samples(插值采样)参数的值的测试渲染效果,所以适当增大HSph.subdivs(半球细分)和Interp.samples(插值采样)参数的值时可以解决黑斑现象的。

图2.22

(3)Options(选项):控制渲染过程的显示方式和样本是否可见,其参数面板如图2.23所示。

图2.23

➢ Show calc.phase(显示计算过程):勾选选项之后,用户就可以看到渲染帧的GI预计算过程同时会占用一定的内存资源。

➢ Show direct light(显示直接光照):在预计算的时候显示直接光照,方便用户观察直接光照的位置。

➢ Show samples(显示样本):显示样本的分布,以及分布的密度,帮助用户分析GI 的精度够不够。

(4)Detail enhancement(细部增强):缩写为DE。这个功能是VRay1.5 的新功能,在以前的版本中,如果要增加细部的GI 就必须把样本密度开得很高,但这样同时也会把平坦部分的样本密度增高,比较浪费渲染时间,所以VRay 推出了新功能Detail enhancement,它的目的在于用另外种计算方式(高蒙特卡罗积分计算方式)来单独计算场景中物体边线、角落等细节的地方。那么这样就可以在平坦区域不需要很高的Gl。

总体上来说节约了渲染时间,提高了图像的品质,其参数面板如图2.24 所示。

图2.24

➢ On:是否打开细部增强功能。

➢ Scale(空间单位依据):后面的下拉菜单里有两种:Screen 和world.Screen主要是按照渲染图的大小来衡量后面的Radius 单位,比如Radius 给60,而渲染的圈的大小是600,那么就表示细节部分的大小是整个图的l/10。World 是按照3ds Max 里的场景尺寸来设定的,比如场景单位是mm,半径为60.那么代表细节部分的半径为60mm。

➢ Radius(半径):表示细节部分有多大区域使用细部增强功能.半径越大,使用细部增强功能的区域也就越大,渲染时间就越慢。

➢ Subdivs mult(细分百分比):这里主要是控制细部的细分,但是这个值和Irradiance map 里的HSph subdivs(半球细分)有关系,0.3 就代表细分是HSph.subdivs(半球细分)的30%,1 就代表和HSph.subdivs(半球细分)的值一样。值越低,细部就会产生杂点。渲染速度比较快值越高,细部就可以避免产生杂点,同时渲染速度增加。

(5)Advanced notions(高级选项):主要对样本的相似点进行插补、查找。其参数面板如图2.25 所示。

图2.25

Interpolation type(插补类型):VRay 内部提供4 种样本插补方式。为Irradiance map 的样本的相似点进行查补,其4 种方式分别介绍如下:

➢ weighted average(加权平均值):这个插补方式是早期采用的方式,它根据采样点到插补点的距离和法线差异进行简单的混合而得到最后的样本。从而进行渲染。用这种方式渲染出来的结果是4 种插补方式中最差的一个。

➢ Least squares fit(最小平方适配):这个插补方式和Delone triangulation(三角测量法)比较类似,但是它的算法会比Delone triangulation(三角测量法)在物理边缘上要模糊点。它主要优势在于比Interpolationtype(插补类型)更适合计算物体表面过渡区的插补。

➢ Delone triangulation(三角测量法)这个方式与上面两种不同的在于:它尽量避免采用模糊的方式去计算物体的边缘,所以计算的结果相当准确,主要体现在阴影比较实,其效果也是比较好的。

➢ Least squares w/Voronoi weights(最小平方加权测量法):它采用类似于Least squares fit( 最小平方适配)的计算方式, 但同时又结合 Delone triangalation(三角测量法)的一些算法,让物体的表面过渡区域和阴影双方都得到比较好的控制,是4 种方式中最好的一种,同时速度也是最慢的。

Sample lookup(样本查找):它主要控制哪些位置的采样点是适合用来作为基础插补的采样点VR 内部提供了4 种样本查找方式,分别介绍如下:

➢ Quad-balanced( good )[四元组平衡(好)]:它将插补点的空间划分为4 个区域,然后尽量在它们中寻找相等数量的样本。它的渲染效果比Nearest 效果好,但是渲染速度比Nearest 慢。

➢ Nearest(draft )[接近(草图)]:这种方式是一种草图方式,它简单地使用Irradiance map 里的最靠近的插补点样本来渲染图形,渲染速度比较快。

➢ Overlapping(Very good/fast)[重叠(非常好/快)]:这种查找方式需要对Irradiance map 进行预处理,然后对每个样本半径进行计算。低密度区域样本半径比较大。而高密度区域样本半径比较小。渲染速度比其他3 种都快。

➢ Density-based( best )[基于密度(最好)]:它基于总体密度来进行样本查找,不但物体边缘处理非常棒。而且在物体表面也处理得十分均匀。它的效果比Overlapping( Very good/fast )[重叠(非常好快)]更好,其速度也是4 种查找方式中最慢的一个。

➢ Calc.pass interpolation samples(计算传递插补样本):它是被用于计算irrdiance map 过程中的,主要计算已经被查找后的插补样本使用数量。较低的数值可以加速计算过程。但是会导致信息不足,较高的数值会使计算速度减慢,但是所利用的样本数量比较多,所以渲染质量也比较好。官方推荐使用10~25 之间的数值。

Multipass(多重预计算):当勾选此选项时。VR 会根据Max rate 和Min rate 进行多次计算。如果不勾该选项,此时VR 渲染器将强制一次性计算完。经过多次计算以后的样本分布通常会均匀合理一些。

Randomize samples(随机样本):控制Irradiance map 的样本是否随机分配,如果勾选此选项,那么样本将随机分配,若如果不勾选,那么样本将以网格方式排列样本。

Cheek sample visibility(检查样本的可视性):在灯光通过比较薄的物体时,很有可能会产生漏光,勾选此选项可以解决这个问题,但是渲染时间就会更长一点。通常在比较高的G1 情况下,也不会漏光。所以一般情况下不勾选它。当出现漏光的情况时,可以试着把它勾上。

Advanced options 中的Cheek sample visibility(检查样本可视性)选项默认为非勾选状态。此项功能可以在一定程度上解决模型漏光现象。如图2.26 所示为取消勾选Cheek sample visibility(检查样本可视性)选项的测试效果,墙壁出现严重漏光现象,如图2.27 所示为勾Check sample visibility(检查样本可视性)选项的测试效果。漏光现象几乎已经不存在,由于VR 版本的不断优化,漏光现象已经很少出现,所以通常情况下不用勾选该选项;特殊情况下漏光严重的时候可以打开此选项解决漏光问题。

图2.26

图2.27

(6)Mode 模式:提供对Irradiance map 不同的使用模式,VRay 内部提供了6 种模式,其参数面板如图2.28 所示。

图2.28

Mode(模式):可以从后面的下拉菜单里选择不同的模式,一共6 种,分别介绍如下:

➢ Single Frame(单帧模式):它一般用来渲染静帧。

➢ Multiframe incremental(多重叠加模式):这个用于渲染仅有摄像机移动的动画。当VRay 计算完第一帧的光子以后,在后面的帧里根据第一帧里没有的光子信息进行新计算,这样就节约了渲染时间。

➢ From file:当渲染完光子以后.就可以保存了,这个选项就是调用保存的光子图进行动画计算(静帧同样也可以这样用)。

➢ Add to torrent mop(增加到当前光子图):当渲染完一个角度的时候,可以把相机转一个角度再全新计算新角度的光子,最后把这两次的光子叠加起来,这样的光子信息更丰富和准确,同时也可以更多次叠加。

➢ Incremental add to current map(以添加方式增加到当前光子图中):这个模式和Add to current map 相似,不同的是,它不是全新计算新角度的光子,而是只对没计算过的区域进行新的计算。

➢ Bucket mode(块模式):把整个图分成块来计算,渲染完一个块再进行下一个块的计算。需要注意的是,在低GI 的情况下。渲染出来的块会出现错位的情况。它主要用于网络渲染。速度比其他方式快。

Save(保存):保存光子图到硬盘。

Reset(重置):把光子图从内存中清除。

Browse(浏览):单击该按钮.可以从硬盘中调用需要的光子图进行渲染。

在Mode 后面的下拉菜单中。系统提供了6 种生成发光贴图的模式,每种模式都有各自的特点,系统默认为Single frame(单帧模式),这种模式在场景的单帧测试以及效果图制作最为常见,在单帧模式下每一帧都是单独运算光子贴图的.大部分动画场景测试也会选择此模式。但是由于每帧都是单独运算光子贴图的,在动画渲染选择这种光子计算方式时,经常会出现闪烁现象,因此Single Game(单帧模式)模式一般不会用在动画场景中最终的光子运算模式上,只在测试单帧效果时使用。

Incremental add to current map(以添加方式增加到当前光子图中)模式就是将后面生成的光子贴图与之前内存中已存在的光子贴图进行叠加,这种贴图模式广泛应用于动画场景生成光子。单击Reset 按钮可以重新设定光子贴图,主要用于清除内存中暂存的光子贴图文件,单击后系统自动弹出V-R.)对话框。询问是否要清除内存中的光子贴图,如图2.29 所示。

图2.29

(7)On render end(在消染以后)主要控制光子图在渲染完以后的处理。其参数面板如图2.30 所示。

图2.30

Don't delete(不删除)参数即不删除生成在内存中的光子贴图文件.由于生成的光子文件一直暂存于内存中。所以除非在生成动画时选择的是单帧模式且动画尺寸较大时.为了节省内存会取消该选项,一般情况下在选择Imreme.tal add to current map(以添加方式增加到当前光子图中)模式时.会将该参数保持默认勾选。