Arnold室内布光示范

2018-12-13  本文已影响215人  shimmery

这一讲我们用一个范例来讲讲使用Arnold渲染的时的基本布光原则及操作规范。


准备场景

我们的使用的场景是一个破败的办公室场景,这个场景模型本身其实有很多值得吐槽的地方,但本文只是那它过来做白模打光测试,就不管那么多了。

首先要做的,是确定场景比例。

我假定这个房间净空高3.5米,所以创建了一个350×350×350的方盒子来做参考。

在场景中添加渲染用摄影机,调整到合适的机位,锁定移动和旋转属性以避免不小心改变了机位。

请大家改掉直接使用persp摄影机当渲染摄影机的习惯!

如果预想的机位其实是在墙壁的另一边,可以提高摄影机的Near Clip Plane值将遮挡的墙壁给“裁掉”。

如果因为场景的尺寸很大导致在摄影机中出现这种显示错误的问题,也可以通过适当增加摄影机的Near Clip Plane值来解决。

给整个场景添加一个aiStandardSurface材质,设置其为灰色纯漫反射材质(无高光、无透明),然后删除掉场景中的多余材质节点。


最典型最简单的白天室内照明

典型的白天室内照明由两大光源:天光(用以提供整体全局光照亮度)和阳光(用以塑造阴影形状,产生明暗对比),那么在Arnold中就是一个Skydome Light加一个Directional Light

因为使用Skydome Light通过窗口照亮室内场景,所以需要为每个窗口创建一个Light Portal

这样照明质量会明显好一些,同时还不会增加渲染时间。

因为是最早的白模打光测试,所以我们保持场景的简单统一,先不使用HDRI天空贴图,直接用纯白色天光和纯白色阳光来建立最基本的亮度分布。

我们可以使用Light Editor(灯光编辑器)来快速“关闭”或“单独显示”某个灯光的照明效果。每个灯光单独调节有利于我们准确判断各个灯光的实际效果,避免互相影响。

在Light Editor的面板中我们可以直接调节灯光的一些关键参数,比如颜色、亮度、曝光度、取样值等等。

单独天光 单独平行光

由于我们现在这个场景主要是被间接光照照亮的,所以Diffuse Ray Depth就很重要了。增加Diffuse Ray Depth对于渲染时间的影响还是很大的,要注意在渲染效果及渲染效率两边的平衡。

场景照明亮度分布调整好之后,再针对噪点问题进行测试。增加Sample的顺序一般为:

  1. 增加天光、面积光、物体光之类会产生模糊阴影的灯光Sample,一般不超过4
  2. 增加Camera (AA) 采样值到2或者3,然后再逐步增加Diffuse Sample,消除间接漫反射带来的阴影(建议在diffuse_indirect分层通道里查看间接漫反射照明效果)

这张图我最后的参数是4/6/0/0/0,也就是Camera (AA) = 4,Diffuse = 6,并没有完全消除干净间接漫反射噪点,但整体效果是满意的。

渲染时间:7分43秒

关闭IPR渲染的“渐进式渲染(Progressive Rendering)”可以稍稍加快渲染速度,或者将所有CPU进程都分配给渲染器,但这样会导致我们在渲染过程中基本上不能操作Maya了。

添加光色

我们可以将Skydome Light上贴一张HDRI天空图,然后修改直接光照的光色来匹配一个不一样的照明环境。

还可以将地板材质换成一个略有反光的材质。

因为场景中有一个疑似“镜子”的物体,所以我决定做一个镜面反射的效果。

将这个物体的“镜面”提取出来成为一个独立的几何体,单独指定一个aiStandardSurface材质。

漫反射颜色改为黑色,高光Roughness改为0,最重要的是需要大幅度提高IOR值才能获得比较“明亮”的反射图像。

IOR = 3 IOR = 15 渲染时间:9分28秒

将白天室内照明修改为夜晚

可以简单地对Skydome Light的HDRI天空贴图的Color Balance栏中的参数进行调整,将其修改成夜晚的光照效果,当然其照明亮度也需要大幅度降低。这里我修改了Color Gain为比较暗的灰蓝色。

Directional Light的亮度和色温也要相应进行修改。这里我还增加了Angle值以增加阴影的模糊程度。

渲染时间:10秒

可以看到,低分辨率(50%)和低取样值(2/3/2)下,渲染速度还是非常快的,这样我们在调试的时候不至于需要浪费很多时间等待渲染。这是我对Arnold渲染器最满意的地方。

添加人造光源

在这个场景中,我想要使用3盏吊灯来作为人造光源。我们可以有很多种选择:1. 将灯泡物体转换成Mesh Light;2. 用点光源替换灯泡物体来模拟;3. 用聚光灯替换灯泡物体来模拟。方案2可以通过调节点光源的高度来调整其照亮范围,方案3可以让我们精确控制灯光的照明范围(完全不被灯罩模型所限制),但我们这个范例中使用最简单的方案1。

Mesh Light默认不显示灯的外观,只显示其照明效果。因为场景很大,且Normalize被勾选,所以需要较高的亮度(Exposure = 13)才能照亮场景。

为了控制这盏灯直接照明的范围(比如我们需要灯泡很亮很显眼但不想它过份照亮整个场景),我们可以给这盏灯添加一个Light Decay

双击添加进Light Filter里的Light Decay,我们可以修改Far StartFar End来设定这个灯光的亮度从什么距离(Start)开始强制性衰减,以及达到什么距离(End)时完全没有照明效果。

最好根据diffuse_direct通道来修改Light Decay,因为它影响的是直接光照,而直接光照是反映在diffuse_direct中的。也就是说,在Far End距离以外的场景其实也会受到这盏灯的照明影响,但不是被直接照亮,而是被间接照亮(比如地面的反弹光线)。

同理设置好另外两盏吊灯:

最终照明效果如下:

渲染时间:27秒,取样值2/3/2

添加灯光雾

在渲染设置的Environment栏中,给Atmosphere属性添加一个aiAtmosphereVolume节点,并设置aiAtmosphereVolume的参数。

Density这个参数非常敏感,稍大点数值就可能产生非常强烈的灯光雾效,而且会影响我们对于灯光亮度的判断。所以,我建议在没有灯光雾效的时候先把灯光颜色测试好,然后再添加灯光雾,调节Density值以匹配我们想要的效果。

另外要注意的是,Environment中设置的不论是aiAtmosphereVolume灯光雾也好,还是aiFog场景雾也好,都不算做Arnold的“Volume”,不会出现在“Volume”相关AOVs通道中,也不受Volume Sample的数值影响!

最终渲染的结果如下:

渲染时间:28分29秒

我个人对于这个渲染时间和渲染质量并不是特别满意,真的是太久了。而且这3盏人造灯源在间接漫反射中产生的噪点几乎遍布整个场景。

我们可以使用一些办法来改善这种问题。一方面,我们可以用分通道渲染再合成的方式将diffuse_indirect单独提取出来做降噪处理,但这需要保证不会出现“漏光”的区域;另一方面,我们锁定Sample Pattern,将噪点当做场景贴图纹理的一部分,有噪点没关系,只要动画时噪点不会出现闪烁就好。


我个人电脑的基本配置是AMD R5 2600 + 16G DDR4 3000内存,并不是一个特别有利于渲染的配置。目前Arnold渲染器主要还是依赖CPU在做计算,所以CPU越快渲染速度就越快。

从单帧渲染时间上来讲,Arnold并不比Mental Ray慢,但Mental Ray可以保存GI光子图、FG灯光图等缓存数据,在渲染动画序列帧的时候,Arnold的渲染时间就慢很多了(因为不能取巧了……)。算是牺牲最终渲染速度来换取制作时的便捷性吧


上一篇下一篇

猜你喜欢

热点阅读