介于我也是比较熟悉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参数的时候,降低渲染采样的参数,可以很好地加快渲染的速度,更好地得到反馈。via yiihuu |