本文对于渲染师或者渲染爱好者来说是一道技术大餐,但你要有耐心,跟着笔者的思路从头到尾看完,除了看图之外更要看字,这道大餐才算是能真正吃上。
在进行渲染测试以及撰写本文的时候,我尽量站在严谨、客观的角度去看待Arnold、Vray和Mentalray这三款常用渲染器。
写这篇文章最初的想法源于这篇帖子:《用一个场景打破AR的神话》,里面讨论的内容有所受教,但关于“Vray GI偏暖,Arnold
GI偏冷”的观点本人持怀疑态度,抱着打破砂锅问到底的原则,我决定深入测试Arnold、Vray、Mentalray三款“通用渲染器”在室内渲染中的异同。帖子里那个测试场景非常典型,于是我拿来用到这个场景并做了轻微修改。本文少讲表面操作,多讲技术原理,有兴趣的请往下看。请尽量不要跳着阅读,否则思路会乱。看完后也许你会对这三款渲染器有新的理解。
本文着重讨论以下四个内容:
1、为什么Vray适合做室内效果图渲染?
2、Arnold、Vray、Mentalray,他们的全局照明技术差距在哪里?分别有什么特点?
3、在理解的基础上用三种渲染器实现基本一致的渲染效果(更深入的了解Arnold、Vray、Mentalray的全局照明系统,解决Arnold的色彩bug)。
4、Biased GI vs. Unbiased GI vs. Hybrid
GI?
感谢百度贴吧的Jaminna提供的场景文件,我稍作修改以更好的适应本文的内容。
我调节好的场景测试文件:点此下载
文件版本分别是:
maya2013 64位
maya to arnold 1.0.0.1
vray for maya 2.30.01
mentalray for maya 2013.0 - 3.10.1.4(maya2013自带)
-----------------------------------------------------------------------------
场景描述:
场景的模型和材质非常简单,全部的shader都是lambert,不携带任何光泽反射(specular)、镜面反射(reflection)、折射(refraction)、3s等内容。总而言之就是简化成一个纯diffuse漫反射环境,这样能够专注于测试漫反射全局照明在arnold、vray、mentalray中的异同。
全局光,其英文名叫Global
Illumination,翻译过来叫全菊照明,哦不对是全局照明,也可以叫间接照明,我个人更接受间接照明(Indirect
Illumination)这个叫法。英文简称叫GI,在常用渲染器中,全局照明通常指的是全局漫反射照明。
测试灯光环境搭建:
1、测试场景中使用了一盏平行光来模拟太阳直射光,然后根据渲染器的不同,arnold用了aiSky来作为蓝天的间接照明,vray使用了Override
Environment的内容来作为蓝天,mentalray使用了Image Based
Lighting来作为蓝天背景。天空的颜色与颜色强度在三个渲染器中我都设置为完全一致。但是Arnold的aiSky中颜色设置有bug。
2、场景中平行光在Vray和Mentalray渲染层中的灯光强度为2,在Arnold
渲染层中相对应的强度值为2*3.14=6.28,我不能很好的解释为什么在本场景中arnold的灯光强度要乘以π才能得到实际等值于Vray和Mentalray中2的灯光强度,但经过测试的结果确实如此。
3、本次测试在三款渲染器中全部使用线性工作流程。
注:你可以下载打开测试文件看看,对理解本文更有帮助。
-----------------------------------------------------------------------------
一、用户常用默认设置下的测试结果对比:
一款商用渲染器的好坏,易用性是一项很重要的评判指标,我拿到这个场景后根据arnold、vray、mentalray的基本特点,使用了一般情况下最常用的设置,打开了全局光(arnold的diffuse的反弹次数为3,vray使用irradiance+light
cache,mentalray使用finalgather),并把采样设置到产品渲染级别,其他的参数尽量使用渲染器默认的设置,得到了如下三张图的效果:
看到这张图的亲们,请先不要激动,不要产生偏激的想法,先把本文看完再做评论。
在最常用的设置下,三种渲染器得到的结果差别很大,arnold整体照明偏冷,vray偏暖,mentalray偏黑且质量低下,渲染时间上arnold最慢。
用户常用默认设置下的结论:
Mentalray的常用设置渲染的结果基本没法看,从这一点可以看出mentalray的易用性偏弱。
-----------------------------------------------------------------------------
接下来让我们来做一些改进,一是去掉arnold中aiSky偏色的bug,二是把mentalray渲染的挫效果进行提升。
1、解决aiSky的偏色bug。
在这里我也提到过arnold在aiSky使用纯色的情况下,颜色有bug,在nuke中取色颜色明显不对,也就是说你在aiSky里设置一个<<0.8,0.9,1.0>>的颜色值,渲染得到的结果并不等于<<0.8,0.9,1.0>>,而且这个bug和gamma值什么的一点关系都没有。解决的方法就是建立一个gammaCorrect节点,设定颜色为<<0.8,0.9,1.0>>,gamma参数保持为1,然后连接给aiSky的Color通道,见下图:
上图是使用arnold渲染器的情况下有颜色bug的渲染图和去除bug之后的渲染图的对比,可以看到原本的浅蓝色天空在出bug的情况下,变得更深,因此房间的间接照明偏冷,去除bug后房间的冷色调明显减少。结果更接近Vray使用经典的Irradiance map+light cache得到的渲染效果。 2、增强mentalray渲染的效果。
这个场景属于半封闭场景,因此间接照明的使用是否得当将直接影响到室内环境的光线充沛度,在仅仅采用finalgather作为间接照明技术的情况下,mentalray只能得到反弹一次的间接照明采样,对于室内场景来说远远不够,这就是为什么mentalray只开fg渲染室内特别黑的原因。 所以,让我们同时开启mentalray渲染器面板中的Global Illumination的勾,并在平行光下开启mentalray选项卡下的emit photons,调节相关的值,又提升了一些finalgather的参数,得到如下渲染结果(注意mentalray在渲染为exr格式并勾选Enable Color Management并将设置都改为sRGB的情况下,输出的结果在nuke中和在render view中看到的不一致,因此请关闭Enable Color Management并在nuke中查看mentalray渲染出来的exr,并且一定记得把exr位深设置为32bit): 这个结果更进一步的接近Vray渲染的结果,只是黄色调更重一点,暗部更暗一点。 1、Mentalray与Vray和Arnold相比,需要花费更多的参数调节时间去得到理想的效果。 2、Arnold的aiSky的颜色bug确实存在,但可以解决。 ----------------------------------------------------------------------------- 从上图可以看到,三种渲染器得到的结果是越来越一致了,但现在仍然存在两个问题:1、arnold渲染的结果为什么还是偏暗?2、mentalray渲染的结果为何过于偏黄? 第二个问题我本人目前没找到答案。 关于第一个问题“Arnold渲染结果偏暗?”我们可以好好探讨下: 影响间接照明充沛度的关键因素是什么?是间接照明反弹次数,在不同的渲染器里有不同的叫法,比如gi bounce、ray depth等,arnold渲染器默认的漫反射照明的反弹次数为1(见下图) 而我在本文中之前渲染所使用的diffuse depth=3,效果比1要好的多,但还是比较暗,角落照不亮,如果我把diffuse depth设置为30呢?我们来看下图分别设置diffuse ray depth=1、3、30的渲染效果对比: 那么我们回过头来看看arnold的diffuse ray
depth=30的渲染结果和之前Vray和mentalray渲染结果的对比:
从上图可以看出,Arnold在diffuse ray depth=30的时候,渲染结果与Vray的渲染结果已经十分接近了(但渲染时间变得很夸张),因此可以判断Vray和Arnold在GI算法设计上遵循着同样的能量守恒原则,并不存在“这个渲染器的渲染风格偏文艺,那个渲染器的渲染风格偏小资”这种感性的说法。
Mentalray的GI效果与Vray也是类似,只是更加明显的倾向于“模拟近似算法”、“糊糊的”、“细节不足”等感觉。差距就在于mentalray使用的Global
Illumination技术过于老旧。这点是硬伤。
我们之前说过,影响间接照明充沛度的关键参数是GI反弹次数,Vray使用Irradiance map+Light
cache技术得到效果直接默认就很好,根本就不用像arnold那样需要去人为调节什么ray depth,这是为什么呢?
导致Vray渲染间接照明灯光充沛的的原因,要归功于Vray独有的Light
Cache(LC,灯光缓存)技术。灯光缓存技术牛逼在于它默认的ray
depth=100,更牛逼的地方在于无论这个depth设置为多高,都不会明显减慢渲染速度。
所以这也解释了为什么渲染室内效果图大部分人都选择Vray,因为Vray的IR+LC的组合渲染室内又快效果又好,全局光看着最舒服,转角细节也保持的不错,再加上光子烘焙技术,室内室外游览动画也都不会闪。在室内效果图渲染这块领域,arnold不是不行,而是arnold要得到一张成品图要更慢。从效率和效果上综合来说,必然是Vray占优势。
有人会说我可以在窗户上用area light(portal light)发射天空颜色进行直接照明来弥补ray
depth不足导致的暗角,这方法是可以,但仅仅是一种提升的手段,即便用了area
light仍然无法在室内效果图领域与Vray抗衡。
关于GI反弹次数的话题,我们一直在讲arnold和vray,Mentalray其实也有类似的参数,它在Global Illumination的选项下面,见下图: 写到这我发现了自己之前的一个错误,mentalray的gi默认的photon reflections和phont refractions的值是5,被我直接开到100了,也就是说之前mentalray开FG+GI渲染的结果都是100的参数渲染的,按照默认的情况下我应该以5的值去渲染,抱歉。 如果把photon reflections和phont
refractions的值设置为5,结果和在arnold中将diffuse ray
depth设置为5的结果类似,同理,如果把photon reflections和phont
refractions的值设置为3,结果和在arnold中将diffuse ray
depth设置为3的结果类似。Mentalray的结果我就不上图了。
最终统一渲染效果的结论:
1、在三种渲染器中,得到理想的室内全局照明效果,mentalray所花的人工调节测试时间最长,Arnold渲染时间最长,Vray使用IR+LC模式速度最快,质量最好。 2、在三种渲染器中,合做封闭、半封闭场景的照明渲染,Vray表现最佳,也就是说做室内效果图渲染首选Vray。 3、在三种渲染器中,Arnold使用起来最简单,最容易上手,但要成为进阶用户需要不少渲染理论知识。 4、在三种渲染器中,Vray技术花样最多,但技术封闭性比较好(也就是很多用户不需要去理解Vray渲染背后所发生的事情)。 5、在三种渲染器中,Mentalray界面最不友好,操作最繁琐。 以上就是对于这个场景我所理解到的东西,希望对各位理解三种渲染器的GI技术有所帮助。 ----------------------------------------------------------------------------- 接下来我们讨论另一个关于GI的话题,就是物理算法(unbiased,无偏差算法)与模拟算法(biased,有偏差算法)的比较。 长话短说,我直接给我了解到的结论:
如果你在Mentalray中采用的是FG+GI的组合,对应到Vray中就是Irradiance Map+Photon Map的组合,也就是说FG与Irradiance Map是类似的技术,GI与Photon Map是类似的技术,遗憾的是Photon Map比较老旧,效果也不够好,已经被更好的Light Cache所取代,而mentalray还只能继续用Global Illumination。 Mentalray没有物理算法的GI技术,Vray既有物理算法又有模拟算法,Arnold只有物理算法。 Vray的Brute-Force(暴力准蒙特卡洛算法)与Arnold GI的算法是类似的,也就是说,如果在Vray中采取BF+BF的GI组合,得到的渲染结果与Arnold的渲染结果会更加相似(几乎一模一样),见下面4张图: 以上两张为Arnold与Vray中depth=3时,同时采取暴力算法的渲染图对比 以上两张为Arnold与Vray中depth=30时,同时采取暴力算法的渲染图对比
可以下载图片到nuke里认真比对,图片我上传的是无损png文件。 通过渲染测试数据我们可以发现,Vray采用BF+BF的GI算法的情况下,得到的渲染结果与Arnold几乎一模一样!在同样采取暴力算法的情况下,Arnold较Vray的渲染速度优势在于低depth的情况下,一旦depth变得很高的时候,Arnold的暴力算法会比Vray更慢。当然,我只是针对这个场景的测试结果说话,并不敢保证在所有场景渲染中都能得出这样的结论。 至此,Arnold是不是一个“那么神奇”的渲染器,我想认真的读者可能会在心里小小怀疑一下了! -----------------------------------------------------------------------------
在本文的所有用到Vray Light Cache渲染的图片中,LC的参数除了depth外都保持的是默认值。 以上的结论都是针对静帧渲染。动画渲染的结果会是怎么样?是不是各种GI技术会出现大跌眼镜的结果,也许我会另写一篇评测文章,还请继续关注我的博客,不用记地址,只要百度搜索“cg风火连城”或者“cg烽火连城”即可。
关于Mentalray: 关于Arnold: 关于Vray:
全文完
欢迎有不同见解,可以博客留言或者微博留言,也可以加Vray&Arnold渲染技术交流群:84745035 讨论。 对于网友留言的补充: 1、arnold的aiSky的颜色bug,在使用hdr与jpg贴图的时候,不存在,只有在直接赋予rgb颜色的时候,才有bug。 |
|