首页 > 办公 > Maya > 正文

Maya设计实例:Mental ray - 3 - OUTDOOR SCENES & Men

2024-09-04 21:27:32
字体:
来源:转载
供稿:网友
mental ray - 3 - outdoor scenes & men
     当物体在曝露在白天的户外的话,它们主要可能受到两种光照的影响,即蓝色的天光和金黄色的太阳光(天光是由于阳光穿过空气的过程中被气流多次折射并且被空气中的细微悬浮物漫放射所形成的),阳光可以通过简单的光源来模拟,天光可以通过一个包围场景的巨大球体来模拟,不过我们怎样让这个巨大的球体来对物体产生照明效果呢?方法就是利用 final gather 算法,并且让球体的材质带有一定的自发光。 稍后我们可以看到这种方法的效果。某些情况下,也许我们只用 final gather 就足以照亮我们的场景,但如果场景中有些部分不能够被天光和阳光直接照射到的话,只单独使用 final gather 也许会有问题。 mr 的 final gather 和其他一些同样拥有全局照明能力的渲染器相比有个缺点,那就是你不能设置场景中 final gather 光线的强度(译注: fg 的强度和材质的属性有关,但你不能单独设置 fg 的强度),由于这个原因,我们必须借助于 global illumination (译注:这里说必须太夸张了,为了速度着想,很多情况下我们可以用补光或补负灯光的方法)。

现在,我们可以开始工作了,在这个场景中,我们可以看到一个简单的寺庙模型

    首先,我们创建两个球体包围着寺庙的模型,内圈的球体将用来作为光源并且它是不可见的,外圈的球体是可见的,它对场景没有照明作用,仅仅为渲染结果增加一个蓝天背景(译注:如果你想带 alpha 渲染,是不需要这个球体的), ok ,先创建第一个球体,并且缩放为 40 40 40 ,打开 hypershade 窗口,创建一个 lambert shader 并且指定给这个球体,接着进入球体材质的属性编辑器,将 diffuse 值调为 0 ,并且将 incandescence 值调为天蓝色 —— 我调的是 r0.269 g0.38 b0.537 ,注意不要使用太亮的颜色,否则它的 fg 效果会将场景照的过亮,为了管理方便,可以将材质命名为类似 inner_sphere 之类的名字。之后,在视图中选择球体并且打开它的属性编辑器 (ctrl+a) ,展开在 attribute editor > nurbssphereshape1 选项卡中的 render stats 栏,关闭 cast shadow 、 receive shadow 、 primary visibility 、 visible in refraction 和 visible in reflection 这几个选项,这样,该球体是不会在渲染结果中被渲染出来的,但是 final gather 的计算仍然会把它作为光源来计算照明。

在你创建完第一个球体后,再创建另一个球体并且缩放为 41 41 41 ,接着创建另一个 lambert shader 并且赋予这个球体,在该材质的属性编辑器中将 diffuse 和 color 值调为 0 ,并选择你想要的 incandescence 颜色。这个球体是能够被渲染的,不过它不对场景产生照明作用。你也许会问为什么创建两个球体,用一个球体既让它产生光照又让它作为天空背景不就好了吗?这样做是因为用两个球体的话我们可以有更大的控制余地,我们可以通过调节第一个球体的 incandescence 来控制 fg 的效果,而通过调节第二个球体的 incandescence 来控制天空背景的颜色但却不影响的 fg 的照明效果
此时渲染的话,应该会得到该图的渲染结果(译注:怎么可能是这个结果, maya 有默认灯光的说,作者老兄可能忘了)

我们应该怎样让我们创建的球体变成光源呢?解决办法就是 final gathering ,按照前面几课学到的知识,进入 renderglobals(mentalray) > quality ,点击 renderquality 旁边的小按钮创建 mentalrayoptions1 ,展开 mentalrayoptions1 的 final gather 栏并且勾选 final gather ,为了能够快速的调节和预览,将 final gather rays 降低为 100 并且渲染场景。渲染后你将会看到天光所产生的效果了(译注:你渲染的结果可能会比这张图亮得多,前面我已经提到过,这是由于现在场景中没有创建任何灯光,故 maya 的默认灯光会参与渲染,导致结果过亮,为了排除 maya 默认灯光的影响,你可以创建一盏强度为 0 的灯光,在稍后创建了阳光的光源后就可以把它删除或隐藏了)。

接下来,我们创建太阳光, to do this ,创建一盏 spotlight 。你也许会问为什么不使用和太阳光更为相似的 directional light ?我这样做的目的是因为 directional light 不能够用于计算 global illumination ,但我们这里要用到 gi ,所以我们必须找到另外一个解决方法,那就是使用 spotlight (译注: directional light 是能够用于计算 gi 的,不知是不是作者搞错了)。由于我们使用的是 spotlight ,故我们应该将其放置在离寺庙模型很远的地方以使它的照明特点更接近于 directional light 。

当我们创建 spotlight 之后,把它放到远离寺庙靠近内圈球体的地方 (x-18.6 y23.23 z15.58) ,并且让它朝着寺庙进行照射,之后进入 spotlight 的属性编辑器并且将灯光的颜色调为接近阳光的亮黄色,例如 r1 g0.87 b0.571 ,将 intensity 值调为 0.75 ,将 cone angle 调为 90 度, 勾选 shadow > raytrace shadow attributes 栏下的 use raytrace shadow 。现在如果渲染场景的话将会得到与该图类似的结果

刚才渲染所得到的结果看上去不能令人满意,我们需要将影响 final gather 品质的相关数值调得再高一些,不过我们稍候再调节,现在,回想一下我之前说过的关于 fg 的缺点 ——mr 的 final gather 和其他一些同样拥有全局照明能力的渲染器相比有个缺点,那就是你不能设置场景中 final gather 光线的强度,这个缺点在我们刚才渲染的那种图中可以看到,寺庙内部的区域的照明不够强,这使得画面看上去不太真实,这也是我们为什么需要 global illumination 帮助的原因。
to setup the global illumination ,打开 spotlight 的属性编辑器并且在 mental ray > caustics and global illumination 栏下勾选 emit photons 选项,并且,在 render globals (mentalray) > mentalrayoptions1 > caustics/global illumination 栏勾选 global illum 选项,之后,我们来做一下测试渲染,你会发现现在的渲染结果和没有打开 gi 前没有多大的区别,这是因为 global illumination 的强度不够所造成的,为了让 gi 的效果更明亮一些,在 spotlight 的属性编辑器并且把 exponent 的数值调为 1.6 ,之后渲染,如图所示

这正是我们想要的

[1] [2] 下一页  

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表