3DS MAX中高级照明技术应用研究

2009-03-23 02:40张德发
计算机时代 2009年1期

张德发

摘要:高级照明技术是3DS MAX中提供的渲染功能,能够通过计算场物体彼此照明的相互影响来创建更为真实的照明环境。高级照明技术包含了光线跟踪(raytrace)和光能传递(radiosity)两种照明算法。光跟踪器能为明亮场景提供边缘柔和的阴影和颜色渗出,它通常用于模拟环境日光的天光对象。光能传递计算场景中所有曲面的强度,比光跟踪器更精确。文章主要讨论3DS MAX中光跟踪器和光能传递的基本工作原理、使用方法及经验。

关键词:光跟踪器;光能传递;高级照明;全局照明

0引言

3DS MAX中提供了两种照明技术:全局照明(GlobalIllumination)技术和局部照明(Local Illumination)技术。局部照明技术是一种非完全照明方法,它只考虑从光源照射出来的光线及单独曲面对光的反射或透射。全局照明考虑的是光在物体表面间相互传递产生的间接照明效果,如光照射到物体表面后,有些光线反射到其它对象(含自身)表面上,有些光线被表面吸收(使对象呈现不现色彩和质地),有些光线则透过表面而照射到其它对象表面等。全局对象比局部照明算法要复杂得多。在3DS MAX中使用两种全局照明技术:光跟踪器和光能传递。

1光跟踪器

我们知道,自然界中物体能在人脑中形成图像,是人的眼睛接受物体表面反射的光子(直接反射或表面多次反射的光子)后形成的。计算机中用摄像机来模拟人的眼睛,屏幕上的像素表示人眼的感光系统。光跟踪器的工作过程为,先从摄像出发,通过监视器上的像素,做一条射线,直到它与一个曲面相交(即光子遇见对象表面),根据对象材质决定该点的亮度(亮度计算要反向追踪一次)、颜色等,这就完成了一次光跟踪,如果相交的曲面有光泽的或透明,这时光跟踪器会在反射或透射方向上再执行光跟踪,如果光线遇到的另外曲面仍有光泽的或透明,则重复光跟踪过程。光跟踪器算法实际上是一种对光线采样的过程。这种照明算法,对光线照不到的对象不会计算,因而存在不足。

光跟踪算法的应用非常广泛,因为它可以建立多种照明效果的模型,可以精确地实现直接照明的全局照明特性、阴影、镜面反射(比如镜子)以及通过透明材质的折射。光跟踪的主要不足在于即使对中等复杂的环境它也可能处理得非常慢。在3Ds max中,光跟踪有选择的用于使用光跟踪材质的对象上,这些材质将光跟踪指定为其着色选项。光跟踪也可以指定为渲染光源投射阴影的方法。

2光能传递

光能传递是解决场景照明的另一种算法,是一种与视点无关(view-independent)的全局照明(global illumination)算法,它模拟场景中漫反射表面间的光能传递过程。假定所有到达物体表面(surface)的光线都会被反射回场景中,场景中所有可见的物体都能发出光线或反射光线,光能在场景的表面间可以互相传递。光能传递算法的原理是,将场景细分成大量的小多边形,从未射出光能最大的一个小多边形开始,把它射出的光能加到其它所有的小多边形上,之后把未射出光能的小多边形中光能次大的小多边形射出的光能加到其它所有的小多边形上,反复执行这一过程,直到达到指定的精度,光能传递的最终值就记录在各小多边形中。

物体表面间光的能量传递遵循以下光能传递方程:

Bi=Ei+Pi∑BjFji其中:Bi表示表面i的辐射度,Bj表示表面j的辐射度;

Ei表示表面i的发射率,Pi表示表面i的反射率;

Fji表示表面j相对于表面i的形状因子。

现在光能传递技术都是建立在Stochastic Relaxation ren-dering(简称为SRR)技术基础上的,常用的有progressive ra-diosity和wavelet radiosity。

光线跟踪和光能传递算法优点和不足比较见表1。

3光跟踪器与光能传递的使用方法

3.1光跟踪器的使用方法

根据前述分析,由于光跟踪器只对光线进行追踪采样,因此对场景的要求不高,只需按常规方式建立场景和模型,添加标准灯光(也可加光度学灯光)。

具体步骤如下:

(1)打开“渲染”(Rendering)菜单中“高级照明”(Advanced Light)下的“光跟踪器”(Light Tracer),打开“渲染场景:默认扫描线渲染器”对话框,在“选择高级照明”(SelectAdvanced Light)卷展栏中,选取“光跟踪器”(Light Tracer)选项。

(2)设置必要的参数(其中增加“反弹”、“向下细分至”两个选项的值,可大大提高渲染效果,但也会降低渲染的速度),进行渲染测试,查看渲染情况。

(3)根据渲染情况,调整追踪参数,反复调试,直到得到满意效果。

3.2光能传递的使用方法

光能传递由于要把场景分成很多小多边形,因此场景中对象的尺寸就非常重要,最好按实际尺寸来建立。光能传递可分为人工模拟和仿真现实两种。仿真现实是指场景中的灯光使用基于物理的光度学灯光(Photometric lights),自然光要使用IES Sun和IES Sky,场景中的材质设置应与现实中的一致。

下面仅以仿真现实为例说明使用光能传递的具体步骤:

(1)在场景中设置光度学灯光,设置曝光类型并渲染场景,调节灯光的位置、强度等。

(2)打开“渲染”(Rendering)菜单中“高级照明”(Advanced Light)下的“光能传递”(Radiosity),打开“渲染场景:默认扫描线渲染器”对话框,在“选择高级照明”(SelectAdvanced Light)卷展栏中选择“光能传递”。

(3)“光能传递”的调节参数较多,其中常用的有“初始质量”、“优化迭代次数”、“对数曝光控制”、“网格尺寸”、“重聚集间接照明”等参数。“重聚集间接照明”用于根据全部光源计算明暗色调,纠正黑斑和光线渗漏。使用这种方式能够产生最好的渲染效果,但需耗费较长的渲染时间。

(4)在“光能传递处理参数”(Radiosity Parameters)卷展栏中,单击“开始”(Start)按钮,系统开始光能传递计算,当计算完成时就能在视图里看到计算结果。

(5)单击“渲染”按钮,对场景进行最终渲染,根据渲染情况,调整“光能传递”的调节参数,反复调试,直到得到满意效果。

4结束语

由于光跟踪器不考虑场景真实的物理数据和尺寸,对模型没有什么要求,一般用来制作室外照明效果,而且渲染速度也较快。使用光跟踪器照明,不适宜制作室外动画,因为会使画面产生闪烁。

光能传递比较适宜室内照明,因为室内场景较小,易于分解;室内光照要细腻、清晰、真实,而光能传递是基于物理方式的照明方法,可以真实再现室内光线照明效果。