微博

QQ

浅析3D Max中的高级灯光技术-基于3D MAX5.0

2004-11-05 祁虹 潘剑 安庆电视台制作部 依马狮网


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

    3D MAX 的渲染功能一直比较薄弱,其效果远不如其他软件(例如Maya)那样逼真,这在很大程度上是因为3D MAX默认的灯光技术不够先进。
    在3D MAX中经常使用“光线追踪(Ray-Trace)”材质,与之相联系的就是光线追踪渲染算法。这种算法假设发出很多条光线,光线遇到物体时,被遮挡、反射或者折射,通过跟踪这些光线,就可以得到场景的渲染效果。但是这种方法有一个严重的缺点,就是不能反映现实生活中光的很多特性。例如,在现实生活中,灯光照射到物体后,每个物体都会发射一部分光线,形成环境光,从而导致没有被灯光直射的物体也能被照明,而不是完全出于黑暗状态。又如,把一个红色物体靠近白色的墙壁,那么墙壁靠近物体的地方会显出也带有红色。还有很多诸如此类的灯光效果,使用光线追踪算法都不能产生。
    为了解决这些问题,人们发明了更先进的算法来计算灯光的效果,这就是“光能传递(Radiosity)”算法。这种算法把光作为光量子看待(实际上更符合现代物理学),通过计算光量子的能量分布获得渲染结果。这种方法能够获得最逼真的照明效果,因此,通常将光能传递算法和光线追踪算法结合起来,以获得最佳的效果。3D MAX5.0新增的高级光照功能则包含了两个不同的系统:光能传递(radiosity)和光线追踪器(light tracer)。它所得到的结果非常接近对真实事物的再现。
    光线追踪器比较通用,也容易使用,使用它不需要理解许多技术概念,任何模型和灯的类型都适用。光能传递相对较复杂,需要为这种处理方式专门准备模型和场景。灯必须是光度控制灯,材质也必须仔细设计。但光能传递在物理上是精确的,对于建筑模型的精确设计是必须的,这一点非常重要,尤其当建模的目的是进行光照分析时。另外,光线追踪器的结果与视点无关,而光能传递不是这样的。光线追踪器在每一帧都计算光照。光能传递只会计算一次,除非场景中的物体移动了或灯发生了变化,或者是从另一个不同的视点渲染场景时。基本原则是光线追踪器更适用于有大量光照的室外场景、角色动画和在空旷的场景中渲染物体。光能传递更适合于使用了聚光灯的室内场景和建筑渲染。
    使用光线追踪器进行室内光照仿真时,为避免平坦表面上的噪波,可能需要相当高质量的设定和很长的渲染时间。光能传递则可以用更短的时间提供更好的效果。另一方面,光能传递用于有许多多边形的角色模型时,需要额外的细化步骤、过滤,甚至是Regathering(重新聚合)。而光线追踪器适用默认的设置一次渲染就可以得到更好的效果。

浅析3D Max中的高级灯光技术-基于3D MAX5.0
浅析3D Max中的高级灯光技术-基于3D MAX5.0
传统的渲染引擎值考虑直接光照
不考虑反射光,然而,反射光是
一个场景的重要组成部分。
对相同的场景使用全局光照渲染,
上图使用了光能传递(radiosity)
就可以得到一种真实的结果。
    光能传递是在一个场景中重现从物体表面反射的自然光线,实现更加真实和物理上精确的照明结果。如图所示。光能传递基于几何学计算光从物体表面的反射。几何面(三角形)成为光能传递进行计算的最小单位。大的表面可能需要被细分为小的三角形面以获得更精确的结果。场景中三角形面的数目很重要。如果数目不够结果会不精确,但如果太多时间又会太长。光能传递提供一种将大的三角形面自动细分的方法,同时也可以控制每个物体的细分和细化程度。光能传递依赖于材质和表面属性以获得物理上精确的结果。在场景中进行建模时必须牢记这一点。要使用光度控制灯,而且模型的几何结构应尽可能准确。
    1.单位
    要获得精确的结果,场景中作图单位是一个基础。如果单位是“英寸”,一个100×200×96单位的房间可以被一个相当于60瓦灯泡的光度控制灯正确照明,但如果单位是“米”,相同场景会变得非常暗。
    2.光能传递的解决方案
    光能传递是一个独立于渲染的处理过程,一旦解决方案被计算出来,结果被保存在几何体自己内部。对几何体或光照作改变将使原解决方案无效。解决方案是为整个场景全局计算的,这意味着它与视点无关。一旦计算出来,就可以从任何方向观察场景。当摄像机在一个固定场景中移动时,这将会节省时间。如果对几何体或灯作了动画,每一帧都必须计算光能传递。渲染菜单中的选项允许定义如何处理光能传递过程。
    3.工作流程
    基于物理光能传递的工作流程:
    当你使用光能传递去模拟现实光照场景时,务必注意以几点:(1)场景尺寸: 确认你的场景拥有正确的尺寸和一致的单位 (一盏灯光在一个120米高的房间里和在一个120厘米高的房间里是大不一样的)。(2)灯光: 你必须使用 Photometric lights,并确保这些灯的亮度在正确的范围内。(3)自然光: 要模拟自然光, 确定你使用的是 IES sun 和 IES Sky,它们能根据特定的地点、日期、时间,给出正确的光照信息。(4)材质反射度: 你必须保证场景中材质的 reflectance value 与现实中相一致。例如:一面漆有白色油漆的墙,它的反射度大概是80%。可是,一个纯白的材质 (RGB:255, 255, 255) 所拥有的反射度是100%。这时你就必须去手动的调节反射度。(5)曝光控制: 曝光控制相当于照相机的光圈。 你可以使用它去控制最后的渲染结果,优化渲染图像。 
    使用光度控制灯光基于物理的光能传递工作流程:
    (1)检查并调节场景中物体的尺寸符合其物理大小,调整材质的反射度符合其物理属性。(2)放置 photometric lights 到你的场景中,你能按照真实世界放置灯光的方法去放置你的虚拟灯光。(3)选择 Rendering 菜单 Environment 对话框,选择你想使用的曝光类型。(4)渲染场景预览灯光效果。在这一步光能传递并不进行处理,但你能快速地确定直接光的位置和强度,调节好直接光的位置强度等。(5)选择 Rendering 菜单 Advanced Lighting 对话框,在高级灯光选项中选择光能传递。(确定 Active 前的小方块打上了勾)(6)在Radiosity Parameters 卷展栏中,点击Start计算光能传递。当计算完成时,你就能在视图里看见效果了。灯光效果直接显示在几何体上,你能很方便的在视图中观察调整而不必重新计算。(7)再次点击渲染场景。渲染器计算直接光和阴影,完成渲染工作。
    你可以不使用基于物理属性的灯光去创建你的场景,但你必须注意以下几点:(1)灯光:因为光能传递计算是基于物理属性,在计算中 Standard lights 被解释为 Photometric lights。例如:一盏 multiplier=1.0 的聚光灯将被转换为1500烛光亮度的灯光。而标准灯光的光线衰减,不论你如何设置,都将按照光能传递的内部算法进行,而不理会你的设置。(2)自然光照: 如果你不想使用基于物理的灯光类型去模拟自然光,你可以使用Direct Light 去模拟太阳光,使用skylight 去模拟天光。(3)曝光控制:因为标准灯光不是基于精确物理学的灯光, 所以你需要只能对光能传递的结果进行调整而不影响直接光照。使用 Logarithmic Exposure Control,打开仅影响

视听科技视频号 广告
发表评论