介于我也是比较熟悉Mentalray的工作流程,所以还是觉得可以把渲染设置的相关参数放上来,其实都是一些很通用的原理性的知识,大家权且一看,也许能给大家一些启发也说不定。提到渲染也就是几个老主题了,采样,过滤,抗锯齿之类,了解一些基础原理,就会比较好的进行设置渲染参数。
首先,在渲染过程中,所有的几何体都会被分解成为多个三角面进行最终的渲染输出,可以给表面物体添加Approximation节点来控制表面在渲染时的细分(你可以将这个节点同时应用于场景中的多个物体,选中物体,选择Assign即可。这个节点在Windows -- Rendering Editors -- Mentalray --Approximation Editor下面)。在编辑Approximation node的时候,Parametric method选项是最简单的编辑选项,它使用N subdivision这一个参数来控制细分的级别,多边形的数量将会细分为这个参数乘以4个,如果参数为3,1个多边面将会被细分为12个(想要在大纲视图中找到这个节点,需要关闭DAG objects only)。
Anti-aliasing 和Sampling(抗锯齿与采样)
抗锯齿和采样都是用来控制降低3D物体边缘锯齿效果和表面内部细节噪点的参数。在高分辨率贴图中的闪烁通常出现在动画中,这种闪烁的产生和抗锯齿以及采样的设置密切相关。在抗锯齿选项中的最主要的两项为Sample Level和Anti-Aliasing Contrast。其中Sample Level的设置和Adaptive,Fixed和Custom Sampling Mode有关。
采样涉及到Mentalray如何确定一张渲染图中像素的颜色。一般情况下,摄像机向场景中射出大量的Primary Eye Rays来确定最终渲染图像中每个像素的初始颜色值,接着次级射线则从Primary Eye Rays和物体表面的交点处发出,接着去寻找Raytracing的颜色(反射、折射等),然后对图像中的每个像素的颜色进行融合处理。等采样完毕之后,接着过滤器将对图像中的每个像素的颜色进行平均计算(具体见Vray的过滤部分)。
Primary Eye Ray的类型是由Features下面的Primary Renderer的设置来决定的。默认Mentalray的主渲染器是Scanline,而Raytracing以及后续的效果会根据需要进行添加。
Mentalray渲染图像是用Tile进行的(相当于Vray的Buckets),每一个Tile单独在Sampling Frame Buffer中存储采样。只要样本被存进Tile,那么过滤器就会对颜色进行平均。过滤完毕后的样本将会被转换成颜色值存储在图像缓存区。这样每个Tile实际上定义了最后要变成最终图像像素的一块区域的样本值。
Min/Max Sample Level:
Mentalray利用这两个采样级别来定义采样的范围。Mentalray利用Min Sample Level作为评估场景和确定是否需要更多采样的起点,如果检测到需要更多的采样,那么额外的采样数量由Max Sample Level来确定(Max Sample Level是采样级别的最大上限)。Sample Level是按照4的整数倍增加的,如果Sample Level是0,那么将针对每个像素采样一次,如果是1,将会对每个像素采样4次,2的话就是16次,以此类推(这完全可以理解,如图每个高一级的级别将会对上一个级别的像素进行细分,一个正方形细分一次就是4个正方形)。如果Sample Level的值小于0,那么意味着一次采样将应用到多个像素。比如-1代表一次采样用于4个像素,-2则为16个像素,以此类推。Sample Level是一个对渲染影响很大的参数,在最终渲染的时候(尤其渲染动画的时候),预先估算渲染时间和大量的单帧测试非常重要。
Sampling Mode:
-Fixed:Mentalray在渲染的时候,将会按照最大采样进行。这在渲染Motion Blur的时候特别有用(不过仍然不建议用MR渲染Motion Blur,死慢!谁用谁知道~)。
-Adaptive Sampling:设为这个模式,MR将会自动采用Max Sample Level 低两级的值作为Min Sample Level。比如,设置最大采样级别为2的话,那么最小采样级别就是0。最终渲染的时候,你不应该让最大采样级别低于2 。
-Custom Sampling:自由设置最大和最小采样的值,测试渲染的时候很灵活。
那么,Mentalray如何知道一个像素何时需要更高的采样呢?就是利用Anti-aliasing Contrast这个参数来控制(相当于Vray里面的Distance Threshold,Color Threshold和Normal Threshold参数),降低Anti-aliasing Contrast将会增加需要更多采样的判断(相当于判断条件更加苛刻),这样就等于增加了更多采样的必要,会在渲染时让整个场景更加接近于最大采样进行(这也会对渲染时间有很大的影响)。一般情况下,比较好的处理抗锯齿的方法是在保证Max和Min Sample Level的情况下,慢慢降低Anti-aliasing Contrast的值,只有在降到比较低的时候结果仍然有瑕疵,那么再去调整Max和Min Sample Level的值。
和Vray一样,如果一张图中空白部分比较大,那么把Min Sample Level设为0或者-1能够有效节省渲染时间。同样,也可以勾选Diagnose Samples来调试采样的结果,最终图像中采样比较密集的地方会显示为白色,其余部分显示为红色。
Filtering:
过滤发生在采样之后,当采样的图像被送进帧缓存区的时候,过滤就开始了。有很多过滤器可以用来选择。Filter Size决定了过滤区域的大小,(1,1)表示只过滤单独的一个像素,(2,2)表示取四个像素的值进行平均计算,大部分情况下,默认的过滤器Size往往可以得到不错的效果。
Jitter选项:可以用来减少闪烁或者条纹瑕疵。Jittering会将样本点偏移到一个限定区域的随机值,然后进行过滤平均。
Sample Lock选项:锁定采样的纹案,这将会通过强制Mentalray对每一帧图像用同一种方式进行采样,以此来减少动画过程中的闪烁。在渲染有运动模糊动画的时候比较有效。
Rasterizer:
光栅渲染是不同于Scanline和Raytracing的另外一种渲染方式。它采用了不同的采样算法。可以在设置下,更改主渲染器为Raysterizer,这个渲染方式在渲染运动模糊和毛发的时候比较有效。它在处理场景中有大量重叠的细小表面非常有效。
当切换到Raysterizer作为主要渲染方式的时候,可以用Visibility Samples和Shading Quality来控制最终的品质,Visibility Samples如同Scanline/Raytracing下的Max Sample Level。不过Raysterizer渲染设置下的方式并不是自适应的。默认设置为0意味着每个像素将进行一次采样来用于抗锯齿。Shading Quality设置每个像素的阴影采样的数量。Raysterizer会把采样信息和几何体一并缓存下来,这样当几何体运动的时候,这些采样点也和几何体一起运动,所以这种渲染方式很适合运动模糊。
Raytrace Acceleration:
Acceleration确定了Mentalray渲染的时候,Raytracing算法的BSP树。改变这里的设置不会影响图像的品质,只会影响图像渲染的速度。(正是因为这样,一开始在这里进行设置正确的参数,将可能减少最终渲染的时间)
Acceleration Method一共有三种方式:Regular BSP, Large BSP和BSP2 。Large BSP主要用于大场景,它在处理硬盘转换内存的效果上比Regular BSP好。BSP2不允许用户定义数量和深度,它也更适用于大场景。
BSP Size控制每个Voxel中集合体的最小数量,也就是Leaf Node中的几何面的最大数量。BSP Depth控制BSP细分后的BSP树的最大深度,即Voxel的最大次数。这两个值互相影响,需要进行平衡,一个大的BSP Size的值,将会使得Rays和Voxel中每一个几何面的比较次数增多,从而渲染更慢。不过大的BSP Size将会减少BSP Depth。BSP Depth的值越大,将会增加内存的开销,但是也会增加更多的时间用于对Voxel的细分。一般情况下,BSP Depth对于渲染时间的影响将会大于BSP Size。如果渲染的时候,BSP Depth值不够,那么渲染时间将会极大的增加(并不是说BSP Depth值给的越大,就会渲染越快,因为场景中几何体分配到一定程度后,将不会在进行细分,实际的BSP Depth的值要小于给定的数值)。
Diagnose BSP:打开这个可以检测BSP运行的结果,红色区域表示Voxel的细分达到最大值,即深度不够,这个时候可以增大细分深度。
一般在测试BSP参数的时候,降低渲染采样的参数,可以很好地加快渲染的速度,更好地得到反馈。