为何说在gpu上进行光线追踪踪是一种全局照明方法

当前位置 & &
& 抛弃LED灯吧!为什么说OLED才是照明的未来
抛弃LED灯吧!为什么说OLED才是照明的未来
11:27:30&&出处:&&作者:
编辑:雪花 &&)
让小伙伴们也看看:
阅读更多:
好文共享:
文章观点支持
当前平均分:0(0 次打分)
[04-28][04-27][04-16][04-13][04-12][04-09][04-09][04-08][04-03][03-27]
登录驱动之家
没有帐号?
用合作网站帐户直接登录Chapt1. Why to write a RayTracing Render
提到Computer Graphics,众所周知的是如OpenGL、Direct3D这样非常流行的光栅化渲染器。事实上,这些大部分应用于游戏制作的API主要为实时渲染(Real-time Rendering)而设置,而它们所采用的光栅化(Rasterization)的渲染方式,通过渲染大量的三角形(或者其他的几何图元种类(Primitive types)),是与本文介绍的光线跟踪相对的一种渲染方式。这种基于光栅化的渲染系统,往往只支持局部照明(Local Illumination)。局部照明在渲染几何图形的一个像素时,光照计算只能取得该像素的信息,而不能访问其他几何图形的信息。
该图片出自《孤岛惊魂》,尽管看似水面显示出了远处山峰的倒影,却不能渲染植被、船骸等细节。
理论上,阴影(Shadow)、反射(Reflection)、折射(Refraction)均为全局照明(Global Illumination)效果,所以在实际应用中,栅格化渲染系统可以使用预处理(如阴影贴图(shadow mapping)、环境贴图(environment mapping))去模拟这些效果。
栅格化的最大优势是计算量比较小,适合实时渲染。相反,全局光照计算量大,一般也没有特殊硬件加速(通常只使用CPU而非GPU),所以只适合离线渲染(offline rendering),例如3D Studio Max、Maya等工具。其中一个支持全局光照的方法,称为光线追踪(ray tracing)。光线追踪能简单直接地支持阴影、反射、折射,实现起来亦非常容易。
Chapt2. Principles of RayTracing
由光源发出的光到达物体表面后,产生反射和折射,简单光照明模型和光透射模型模拟了这两种现象。在简单光照明模型中,反射被分为理想漫反射和镜面反射光,把透射光模型分为理想漫透射光和规则透射光。由广元发出的光成为直接光,物体对直接光的反射或折射成为直接反射和直接折射,相对的,把物体表面间对广德反射和折射成为间接光、间接反射、间接折射。光线在物体之间的传播方式是光线跟踪算法的基础。
最基本的光线跟踪算法是跟踪镜面反射和折射。从光源发出的光遇到物体的表面,发生反射和折射,光就改变方向,沿着反射方向和折射方向继续前进,知道遇到新的物体。但是光源发出光线,经过反射与折射,只有很少部分可以进入人的眼睛。因此实际光线跟踪算法的跟踪方向与光传播的方向是相反的(反向光线跟踪),称之为视线跟踪。由视点与像素(x,y)发出一根射线,与第一个物体相交后,在其反射与折射方向上进行跟踪,如图2所示
在光线跟踪算法中,我们有如下的四种光线:
视线是由视点与像素(x,y)发出的射线;阴影测试线是物体表面上点与光源的连线;反射光线;折射光线
当光线 V与物体表面交于点P时,点P分为三部分,把这三部分光强相加,就是该条光线V在P点处的总的光强:
a) 由光源产生的直接的光线照射光强,是交点处的局部光强,可以由下式计算:
b) 反射方向上由其它物体引起的间接光照光强,由IsKs' 计算,Is通过对反射光线的递归跟踪得到c) 折射方向上由其它物体引起的间接光照光强,由ItKt' 计算,It通过对折射光线的递归跟踪得到
现在我们来讨论光线跟踪算法本身。我们将对一个由两个透明球和一个非透明物体组成的场景进行光线跟踪(图3)通过这个例子,可以把光线跟踪的基本过程解释清楚。
在我们的场景中,有一个点光源L,两个透明的球体O1与O2,一个不透明的物体O3。首先,从视点出发经过视屏一个像素点的视线E传播到达球体O1,与其交点为P1。从P1向光源L作一条阴影测试线S1,我们发现其间没有遮挡的物体,那么我们就用局部光照明模型计算光源对P1在其视线E的方向上的光强,作为该点的局部光强。同时我们还要跟踪该点处反射光线R1和折射光线T1,它们也对P1点的光强有贡献。在反射光线R1方向上,没有再与其他物体相交,那么就设该方向的光强为零,并结束这光线方向的跟踪。然后我们来对折射光线T1方向进行跟踪,来计算该光线的光强贡献。折射光线T1在物体O1内部传播,与O1相交于点P2,由于该点在物体内部,我们假设它的局部光强为零,同时,产生了反射光线R2和折射光线T2,在反射光线R2方向,我们可以继续递归跟踪下去计算它的光强,在这里就不再继续下去了。我们将继续对折射光线T2进行跟踪。T2与物体O3交于点P3,作P3与光源L的阴影测试线S3,没有物体遮挡,那么计算该处的局部光强,由于该物体是非透明的,那么我们可以继续跟踪反射光线R3方向的光强,结合局部光强,来得到P3处的光强。反射光线R3的跟踪与前面的过程类似,算法可以递归的进行下去。重复上面的过程,直到光线满足跟踪终止条件。这样我们就可以得到视屏上的一个象素点的光强,也就是它相应的颜色值。
上面的例子就是光线跟踪算法的基本过程,我们可以看出,光线跟踪算法实际上是光照明物理过程的近似逆过程,这一过程可以跟踪物体间的镜面反射光线和规则透射,模拟了理想表面的光的传播。
虽然在理想情况下,光线可以在物体之间进行无限的反射和折射,但是在实际的算法进行过程中,我们不可能进行无穷的光线跟踪,因而需要给出一些跟踪的终止条件。在算法应用的意义上,可以有以下的几种终止条件:
该光线未碰到任何物体。该光线碰到了背景光线在经过许多次反射和折射以后,就会产生衰减,光线对于视点的光强贡献很小(小于某个设定值)光线反射或折射次数即跟踪深度大于一定值
Chapt3. Rasterization & RayTracing
了解了光线跟踪的原理之后,再来看一下在计算机上的实现。
光栅化渲染,简单地说,就是把大量三角形画到屏幕上。当中会采用深度缓冲(depth buffer, z-buffer),来解决多个三角形重叠时的前后问题。三角形数目影响效能,但三角形在屏幕上的总面积才是主要瓶颈。
光线追踪,简单地说,就是从摄影机的位置,通过影像平面上的像素位置(比较正确的说法是取样(sampling)位置),发射一束光线到场景,求光线和几何图形间最近的交点,再求该交点的著色。如果该交点的材质是反射性的,可以在该交点向反射方向继续追踪。光线追踪除了容易支持一些全局光照效果外,亦不局限于三角形作为几何图形的单位。任何几何图形,能与一束光线计算交点(intersection point),就能支持。
上图显示了光线追踪的基本方式。要计算一点是否在阴影之内,也只须发射一束光线到光源,检测中间是否存在障碍物。
Chapt4. Source Code
1. Base Class
本例代码尝试使用基于物件(object-based)的方式编写
struct Vector {
float x, y,
Vector(float x_, float y_, float z_) : x(x_), y(y_), z(z_) {}
Vector(const Vector& r) : x(r.x), y(r.y), z(r.z) {}
float sqrLength() const {
float length() const {
return sqrt(sqrLength());
Vector operator+(const Vector& r) const {
return Vector(x + r.x, y + r.y, z + r.z);
Vector operator-(const Vector& r) const {
return Vector(x - r.x, y - r.y, z - r.z);
Vector operator(float v) const {
return Vector(v
Vector operator/(float v) const {
float inv = 1 /
return this
Vector normalize() const {
float invlen = 1 / length();
return this
float dot(const Vector& r) const {
r.x + y
r.y + z
Vector cross(const Vector& r) const {
return Vector(-z
r.y + y
r.x + x
static Vector zero() {
return Vector(0, 0, 0);
inline Vector operator(float l, const Vector& r) {return r }
这些类方法(如normalize、dot、cross等),如果传回Vector对象,都会传回一个新建构的Vector。这些三维向量的功能很简单,不在此详述。
Vector zero()用作常量,避免每次重新构建。值得一提,这些常量必需在prototype设定之后才能定义。
即为光线类,所谓光线(ray),从一点向某方向发射也。数学上可用参数函数(parametric function)表示:
当中,o即发谢起点(origin),d为方向。在本文的例子里,都假设d为单位向量(unit vector),因此t为距离。实现如下
struct Ray {
Vector origin,
Ray(const Vector& o, const Vector& d) : origin(o), direction(d) {}
Vector getPoint(float t) const {
return origin + t *
球体(sphere)是其中一个最简单的立体几何图形。这里只考虑球体的表面(surface),中心点为c、半径为r的球体表面可用等式(equation)表示:
如前文所述,需要计算光线和球体的最近交点。只要把光线x = r(t)代入球体等式,把该等式求解就是交点。为简化方程,设v=o - c,则:
因为d为单位向量,所以二次方的系数可以消去。 t的二次方程式的解为
struct Sphere : public Geometry {
float radius, sqrR
Sphere(const Vector& c, float r, Material m = NULL) :
Geometry(m), center(c), radius(r), sqrRadius(r
IntersectResult intersect(const Ray& ray) const {
Vector v = ray.origin -
float a0 = v.sqrLength() - sqrR
float DdotV = ray.direction.dot(v);
if (DdotV &= 0.0) {
float discr = DdotV * DdotV - a0;
if (discr &= 0.0) {
float d = -DdotV - sqrt(discr);
Vector p = ray.getPoint(d);
Vector n = (p - center).normalize();
return IntersectResult(this, d, p, n);
return IntersectResult();
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4019次
排名:千里之外
转载:111篇
(2)(34)(25)(52)  本文对于渲染师或者渲染爱好者来说是一道技术大餐,但你要有耐心,跟着笔者的思路从头到尾看完,除了看图之外更要看字,这道大餐才算是能真正吃上。在进行渲染测试以及撰写本文的时候,我尽量站在严谨、客观的角度去看待、和这三款常用。
  写这篇文章最初的想法源于这篇帖子:《》,里面讨论的内容有所受教,但关于“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?
  场景的模型和材质非常简单,全部的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通道,见下图:
  aiSky渲染的颜色和之前在maya中指定的颜色&&0.8,0.9,1.0&&完全一样,bug得以解决。
  上图是使用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的渲染效果对比:
  通过上图可以看到gi的反弹次数对于间接照明的效果影响有多大。
  那么我们回过头来看看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设置为多高,都不会明显减慢渲染速度。
  看上图,如果我把这个Depth设置为3,那渲染效果就和Arnold diffuse ray depth=3的效果一样了,下图见分晓:
  从上图我们也能找到些许ar和vr在全局照明技术上的共通点。
  所以这也解释了为什么渲染室内效果图大部分人都选择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的结果我就不上图了。
  最终我们基本统一了arnold、vray、mentalray三种渲染器渲染同一个室内场景的效果,见下图:
  如果arnold的depth开到100,效果应该会更好一点,但是渲染速度基本接受不了。
  最终统一渲染效果的结论:
  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 GI的物理算法+模拟算法的混合模式(hybrid GI)。在Vray中,采用混合模式的组合就是BF与IR、LC、Photon map的组合搭配,比较常见的组合有:
  Irradiance Map+Brute Force(目前没发现这个组合有什么好的地方)
  Brute Force+Light Cache(有效减少BF+BF的噪点问题)
  下面上测试渲染图对比(注意观察噪点情况):
  不得不服,用Vray的Light Cache技术去计算二次GI照明,配合Brute Force去计算一次GI照明,无论是画面质量还是渲染时间都远远优于纯暴力算法。
  在本文的所有用到Vray Light Cache渲染的图片中,LC的参数除了depth外都保持的是默认值。
  以上的结论都是针对静帧渲染。动画渲染的结果会是怎么样?是不是各种GI技术会出现大跌眼镜的结果,也许我会另写一篇评测文章,还请继续关注我的博客,不用记地址,只要百度搜索“cg风火连城”或者“cg烽火连城”即可。
  作为本文的扩展,来说说个人目前对这三款渲染器的认识:
  关于Mentalray:
  1、俗话说得好:不怕不识货,就怕货比货。只要你用过Arnold或者Vray,你就不想再回到Mentalray的世界,因为在不带二次开发的情况下,他的界面不友好,不亲切,不好用(相对而言)。
  2、Mentalray的硬伤在Global Illumination这个技术上,虽然现在新出了个什么Irradiance Particles技术,但好像是用来取代FG的,GI仍然没有改变。也就是说,你用Mentalray很难得到高细节的全局照明渲染效果。
  3、Mentalray的另一个硬伤在于同时开启FG+motion blur,速度能慢十倍以上,基本不能用。在可以预见的未来这几年,直接开运动模糊渲染的片子应该会越来越多,而Mentalray基本不能让你这么干。
  4、总而言之,mentalray已经老了,不怎么进步了。我的意见是你想用arnold或者vray就去用吧。
  关于Arnold:
  1、Arnold是目前逼格最高的商业渲染器。最好入门,界面最简单。看起来就像是深刻了解了家不喜欢看大量参数的特点,因此参数不多,但如果要深入了解Arnold或者在实际工作中碰到了问题的话,Arnold也需要不少的渲染器理论知识才能顺利解决问题。
  2、Arnold的IPR非常优秀,交互性非常好,这点上完胜Vray和mentalray。Vray的IPR是另一套模式,那套独有的IPR模式居然不支持3s材质,导致Vray IPR的实用性打了折扣。
  3、Arnold在实际生产使用过程中,一定要学会节约计算资源,也就是说,你要懂场景为何渲染慢了,慢在diffuse、glossy、 reflection还是透贴?怎么提速?如何寻求效果与质量的平衡点?否则你有可能碰到慢的惊人的情况,如果你不懂优化,说不定你会开始怀念Mentalray。
  4、Arnold的暴力算法决定了它的渲染时间与场景精度设置几乎呈线性关系,也就是说你场景中每像素的采样光线如果是100的话,那么你的采样光线增加到1000的时候,渲染速度恰好慢十倍。关于这个知识点我有空再写一篇博文。
  5、采用了暴力算法的渲染器(arnold与使用brute-force模式的Vray),噪点只能随着精度的提升而减少,永远无法消除,颗粒感永远伴随着你,只是精度高了可能会看不出来。
  6、Arnold的暴力算法没有传的那么神,速度也没有多快,没错低精度确实很快,但精度开高了也真能慢的你服气。在高GI反弹次数的时候,渲染效率甚至不如Vray使用BF+BF。
  关于Vray:
  1、在三款渲染器中,Vray是商业化程度最高的一款,UI设计非常人性化,各种模块分布也让你能感觉出来这款渲染器充分考虑到了用户的需求和使用习惯。Arnold的界面设计倾向于简单粗暴,Vray的界面设计倾向于贴心,而Mentalray的界面设计让你感觉“你爱用不用,不用拉到”。
  2、Vray同时拥有模拟GI算法与物理GI算法,还可以混合使用,在技术选择上十分灵活,但灵活的代价就是你要掌握更多的GI技术知识才能用好它。
  3、你也许没听说过,但Vray和Arnold一样,可以同时开间接照明+置换+景深+运动模糊,只要选择好gi引擎,渲染也不算太慢。
  渲染器说白了就是对像素进行数学运算的工具,是纯理性的玩意儿,要说“mentalray能实现的渲染风格arnold就实现不了”,或者“只有arnold能做写实风格,其他都不行”等观点,本人无法苟同。在把工具用好的基础之上,渲染效果上的差距只在于渲染师的艺术功底。
  调节好的场景文件:
  文件版本分别是:
  maya2013 64位
  maya to arnold 1.0.0.1
  vray for maya 2.30.01
  mentalray for maya 2013.0 &#.1.4(maya2013自带)
  作者:风火连城,用他自己的话说:一个热爱CG,热爱动画的青年。(刚刚升级为超级奶爸。)
  博客:
喜欢我们的文章请您与朋友分享:
相关文章:
专注于精致的视觉特效,一个热爱CG的伪艺术青年。}

我要回帖

更多关于 光线追踪技术 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信