高效光线跟踪的算法有那些?

2021-11-04 科技 184阅读
浅析3DMax中的高级灯光技术

摘要:3DMax在3D制作软件中渲染功能一直比较薄弱,使其只甘居Maya等3D制作软件之下。为弥补这一缺陷,在5.0版中3DMax增加了高级灯光技术,拥有光能传递、光线追踪器两个全局照明系统,在渲染功能上有了非常显著的改善。本文主要介绍新的光能传递算法。

关键词:渲染全局照明光能传递

3DMAX的渲染功能一直比较薄弱,其效果远不如其他软件(例如Maya)那样逼真,这在很大程度上是因为3DMAX默认的灯光技术不够先进。

在3DMAX中经常使用“光线追踪(Ray-Trace)”材质,与之相联系的就是光线追踪渲染算法。这种算法假设发出很多条光线,光线遇到物体时,被遮挡、反射或者折射,通过跟踪这些光线,就可以得到场景的渲染效果。但是这种方法有一个严重的缺点,就是不能反映现实生活中光的很多特性。例如,在现实生活中,灯光照射到物体后,每个物体都会发射一部分光线,形成环境光,从而导致没有被灯光直射的物体也能被照明,而不是完全出于黑暗状态。又如,把一个红色物体靠近白色的墙壁,那么墙壁靠近物体的地方会显出也带有红色。还有很多诸如此类的灯光效果,使用光线追踪算法都不能产生。

为了解决这些问题,人们发明了更先进的算法来计算灯光的效果,这就是“光能传递(Radiosity)”算法。这种算法把光作为光量子看待(实际上更符合现代物理学),通过计算光量子的能量分布获得渲染结果。这种方法能够获得最逼真的照明效果,因此,通常将光能传递算法和光线追踪算法结合起来,以获得最佳的效果。3DMAX5.0新增的高级光照功能则包含了两个不同的系统:光能传递(radiosity)和光线追踪器(lighttracer)。它所得到的结果非常接近对真实事物的再现。

光线追踪器比较通用,也容易使用,使用它不需要理解许多技术概念,任何模型和灯的类型都适用。光能传递相对较复杂,需要为这种处理方式专门准备模型和场景。灯必须是光度控制灯,材质也必须仔细设计。但光能传递在物理上是精确的,对于建筑模型的精确设计是必须的,这一点非常重要,尤其当建模的目的是进行光照分析时。另外,光线追踪器的结果与视点无关,而光能传递不是这样的。光线追踪器在每一帧都计算光照。光能传递只会计算一次,除非场景中的物体移动了或灯发生了变化,或者是从另一个不同的视点渲染场景时。基本原则是光线追踪器更适用于有大量光照的室外场景、角色动画和在空旷的场景中渲染物体。光能传递更适合于使用了聚光灯的室内场景和建筑渲染。

使用光线追踪器进行室内光照仿真时,为避免平坦表面上的噪波,可能需要相当高质量的设定和很长的渲染时间。光能传递则可以用更短的时间提供更好的效果。另一方面,光能传递用于有许多多边形的角色模型时,需要额外的细化步骤、过滤,甚至是Regathering(重新聚合)。而光线追踪器适用默认的设置一次渲染就可以得到更好的效果。

传统的渲染引擎值考虑直接光照

不考虑反射光,然而,反射光是

一个场景的重要组成部分。对相同的场景使用全局光照渲染,

上图使用了光能传递(radiosity)

就可以得到一种真实的结果。

光能传递是在一个场景中重现从物体表面反射的自然光线,实现更加真实和物理上精确的照明结果。如图所示。光能传递基于几何学计算光从物体表面的反射。几何面(三角形)成为光能传递进行计算的最小单位。大的表面可能需要被细分为小的三角形面以获得更精确的结果。场景中三角形面的数目很重要。如果数目不够结果会不精确,但如果太多时间又会太长。光能传递提供一种将大的三角形面自动细分的方法,同时也可以控制每个物体的细分和细化程度。光能传递依赖于材质和表面属性以获得物理上精确的结果。在场景中进行建模时必须牢记这一点。要使用光度控制灯,而且模型的几何结构应尽可能准确。

1.单位

要获得精确的结果,场景中作图单位是一个基础。如果单位是“英寸”,一个100×200×96单位的房间可以被一个相当于60瓦灯泡的光度控制灯正确照明,但如果单位是“米”,相同场景会变得非常暗。

2.光能传递的解决方案

光能传递是一个独立于渲染的处理过程,一旦解决方案被计算出来,结果被保存在几何体自己内部。对几何体或光照作改变将使原解决方案无效。解决方案是为整个场景全局计算的,这意味着它与视点无关。一旦计算出来,就可以从任何方向观察场景。当摄像机在一个固定场景中移动时,这将会节省时间。如果对几何体或灯作了动画,每一帧都必须计算光能传递。渲染菜单中的选项允许定义如何处理光能传递过程。

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com