3DMAX灯光的研究
3DMAX灯光的研究
当白色光通过三棱镜时被折射成七色光,七色光是白光光谱中可见光部分,分别为红 、橙、黄、绿、蓝、靛、紫,简写为ROYGBIV,这些颜色中,红、绿、蓝是原色,故光的颜色模型为RGB模型。
计算机屏幕产生颜色的机理也可认为是RGB模型,在大多数绘图程序中(包括3D Studio MAX)都提供了RGB颜色选择模式。下图表示了RGB颜色模型,应当注意的是:光的颜色具有相加性,而颜料颜色具有相减性。所谓相加性是指混合的颜色越多,颜色越淡,而相减性则相反,这一点学过色彩绘画的人应该很清楚。
RGB颜色模型。有趣的是,将RGB颜色的Multiplier值由1改为-1,颜色就会变成原来的补色,即成右边的CYM色。
在3DSMAX的世界里你所见到的场景取决于你照明的方式,呈现出的场景完全由发光对象的颜色和位置决定。事实上要创建一种氛围,很少只使用白光照明的。若使用颜色成分少的人造灯光会使场景毫无生气。在剧场里一般使用纯红、绿、蓝、黄、绛红及蓝绿等的多种组合,使某些区域以及许多光柱看起来色彩绚丽斑斓。高饱和度的灯光用起来要十分小心,因为用它来照明常会歪曲事实,例如在煤油灯黄光照明下就分不清土黄和柠檬黄。
3DSMAX的灯
程序中的灯光都是模拟真实世界的灯光模式,如Target Spot是手电筒或探照灯模型,Omni模拟烛光或太空中的太阳光;Directioal Light模拟自然界直射平行太阳光。这些灯都能打开或关闭,改变它们的大小、形状和位置,改变颜色,打开或关闭影子,设置影子边缘的柔度,设置哪些物体被所有的光照明,甚至在某些范围里使用特别暗的光“吸取”多余的光。
Exlude功能是MAX灯光的第一个特性。它可设定场景中哪些物体受此灯光的影响,哪些不受影响。在一个复杂场景中,有些人为追求效果架设几十盏灯光,势必造成某些物体受光过度甚至丢失阴影。将它们排除在一些灯光影响之外可以保持原效果。
Multiplier(倍增器)类似于灯的调光器。值小于1减小光的亮度,大于1增加光的亮度。当值为负时,光实际从场景中减去亮度。“负光”通常用来模拟局部暗的效果,一般仅放在内部的角落,使其变暗,以在场景中产生用一般的光很难获得的效果。
倍增器可以维护场景中一系列光使用相近的颜色(下图)。而如果将RGB值相应增加或减小会使样本颜色不易辨认。
R=255,G=10, B=10,从左至右分别为Multiplier=1; Multiplier=5. Multiplier=10. Multiplier=20. Multiplier=26.
是否使用衰减(attenuatioin)是许多场景成败的原因之一。MAX的灯光默认是不衰减的,这通常意味着场景将很快变得过亮。记住,在进行室内照明的时候,除了最暗的辅光,所有其他光都要使用衰减。而在实际生活中由于光能量在传播过程中的散失,光随距离减弱。需要指出的是在自然界,光按距离平方比的倒数进行衰减,例如在10m处灯光亮度为X,则在20M处亮度为X/4。但在大部分计算机程序中(包括3DSMAX),光的衰减是以线性方式进行的,意即刚才的灯光在20m处亮度为X/2。
光的打法及影响
在3DSMAX中,默认的照明是-X,-Y,+Z与+X,+Y,-Z处的两盏灯,一旦你在场景中建立了灯光,这两盏灯自动关闭。
摄影上有几种照明类型,可以为MAX所用。
三角形照明是最基本的照明方式,它使用三个光源:主光最亮,用来照亮大部分场景,常投射阴影;背光用于将对象从背景中分离出来,并展现场景的深度,常位于对象的后上方,且强度等于或小于主光;辅光常在摄影机的左侧,用来照亮主光没有照到的黑区域,控制场景中最亮的区域与最暗区域的对比度。亮的辅光产生平均的照明效果,而暗的辅光增加对比度。
一个大的场景不能使用三角形照明时,可采用区段照明法照明各个小的区段,区段选择后就可使用基本的三角形照明法。
对于具有强烈反射的金属感材质,有时需要用包围法将灯光打在周围以展现它的质感,这是比较少用的方法。
光的性质对场景产生强烈影响。刺目的直射光来自点状光源,形成强烈反差,并且根据它照射的方向可以增加或减低质地感和深度感。柔和的光产生模糊昏暗的光源,它有助于减少反差。光的方向也影响场景中形的组成。柔和的光没有特定的方向,似乎轻柔地来自各个方向,刺目的直射光有三个基本方向:正面光、侧光和逆光。
正面光能产生非常引人注目的效果,当它形成强烈的反差时更是如此。然而这种光会丢失阴影,使场景缺乏透视感。
侧光能产生横贯画面的阴影,容易显示物体的质感。
逆光常常产生强烈的明显的反差,清晰地显示物体的轮廓。
昏暗、偏冷、低发差的灯光适用于悲哀、低沉或神秘莫测的效果。预示某种不详之事的发生。换成高发差的灯光可用于酒吧、赌场这样的场面,在这里可以强调主要对象或角色,而将其他的虚化。
明艳、暖色调、阴影清晰的灯光效果适于表现兴奋的场面,而换成偏冷色调则是种恬静的气氛。
灯光特效
3DSMAX中的灯光功能虽然强大,但对一些特殊效果诸如体光、霓虹灯效果、眩光等需要另外的程序或插件来完成。
体光:体光是中常见的现象,电筒光,探照灯,夜晚雾气中的路灯都是体光的具体例子。体光由光线被空气中的灰尘粒子散射而形成。在计算机三维世界里,只有“真空”而没有灰尘粒子。在Enviornment中可以创建体光的效果。
LumaObject效果
霓虹灯或激光的发光效果不可用灯光来创建,虽然某些情况下可用自发光材质代替,但严格来讲并不真实。你需要为自发光材质增加Glow效果(Video Post/ Glow)。
眩光实际是摄像机镜头产生的光斑,在某种程度上可增加场景的真实性。使用刺目的逆光是拙劣的做法。LensFlare、RealLens以及GensisVFX提供了真实眩光的创建和灵活控制。(LensFlare[MAX自带]和GensisVFX作为Video Post插件,RealLens以Helper物体形式出现)
光源形状:3DSMAX不支持真正的线性光源,这意味着做荧光灯照亮时比较困难。使用MAX灯光可以模拟荧光灯照明效果,但效果还不是令人满意。RealLens提供了一个LumaObject功能,LumaObject使用自发光物体作为光源,并可控制光线衰减,在某种程度上实现了辐射度(radiosity)效果。上图即是将荧光灯作为LumaObject发光体的效果。注意,这里只用了一个LumaObject,而且渲染速度极快。事实上LumaObject可使用任何形状的几何体或粒子系统作为光源。
阳光模拟:MAX中有个阳光模拟器,在这里你可以指定具体的经、纬度、时间、季节等创造当地的日照情况。对建筑设计、城市规划、光照分析有其特殊价值,并且参数可动画以模拟日出日落的一日光照情况。
光线运算
3DSMAX的渲染是种线性扫描渲染,当你为场景设置一个灯光时你会发现这与现实相差地有多远。在这种渲染方式下,光线不被物体反射或折射,因此不象真实世界里通常一盏灯能照亮一间卧室,很多人制作一个场景要打几十盏灯,而制作动画时灯光数更是吓人。
同时,MAX提供的Grouraud和Phong浓淡处理算法也是不太准确的,它们估算落在表面上的光,而非准确地计算它。要想完全精确,就需要光线跟综。
光线跟踪(ray trace)渲染在表面之间追踪射线,射线不断被某些对象表面反射到其他对象表面,直到从场景中消失。光线跟踪追踪从观察点到各个表面的射线矢量。若反射面是镜面,就会有辅助射线被反射以捕捉反射光的可见部分,若射线遇到另一个镜面,便又被反射直至射线被弹出场景或被非镜面吸收。这是典型的光线跟踪映象重反射的生成过程,因此虽然渲染出来的图像可能很漂亮,但这也是光线跟踪渲染慢的原因。
辐射度(radiosity)渲染方法的效果绝佳,但计算量相当大,要比光线跟踪所用时间都长。光线跟踪反射只取一个观察点,被反射的射线最终找到一个结束点,而辐射模型中的反射能量在场景中不断反弹,能量逐级减弱。在亮光下将一个红球靠近白墙,在白墙上出现红色,这就是辐射度效果。
RadioRay是一种结合了光线跟踪和辐射的渲染器,其真实的光线计算创建专业的照明效果。可用于建筑设计、灯光设计、展示设计等多个领域。