光照模型( illumination model ),也称为明暗模型,用于计算物体某点处的光强(颜色值)。从算法理论基础而言,光照模型分为两类:一种是基于物理理论的,另一种是基于经验模型的。基于物理理论的光照模型,偏重于使用物理的度量和统计方法,比较典型的有 ward BRDF 模型,其中的不少参数是需要仪器测量的,使用这种光照模型的好处是 “ 效果非常真实 ” ,但是 “ 计算复杂,实现起来也较为困难 ” ;经验模型更加偏重于使用特定的概率公式,使之与一组表面类型相匹配,所以经验模型大都比较简洁,效果偏向理想化。其实两者之间的界限并不是明确到 “ 非黑即白 ” 的地步,无论何种光照模型本质上还是基于物理的,只不过在求证方法上各有偏重而已。从使用角度而言,光照模型分为局部光照模型和全局光照模型。所谓局部光照模型,是将光照的种类进行分解,在计算时只考虑其中的一种;而全局光照模型则是考虑到所有的光照种类。一个比较类似的例子是物理力学,牛顿力学最初是考虑理想状态下的运动方式,无摩擦力;然后慢慢的会在力的条件中考虑到摩擦力因素;接着会学习弹性系数。总之是将一个原本复杂的过程分解为各种子过程,然后渐进叠加。多说一句,光照模型的英文缩写 IM 最好还是记住,在 openGPU 网站上注册时,会被要求填写该英文缩写。
当光照射到物体表面时,一部分被物体表面吸收,另一部分被反射,对于透明物体而言,还有一部分光穿过透明体,产生透射光。被物体吸收的光能转化为热量,只有反射光和透射光能够进入眼睛,产生视觉效果。通过反射和透射产生的光波(光具有波粒二相性)决定了物体呈现的亮度和颜色,即反射和投射光的强度决定了物体表面的亮度,而它们含有的不同波长光的比例决定了物体表面的色彩。所以,物体表面光照颜色由入射光、物体材质,以及材质和光的交互规律共同决定。光与物体最基本的交互方式就是反射,遵循反射定律:反射光与入射光位于表面法向两侧,对理想反射面(如镜面),入射角等于反射角,观察者只能在表面法向的反射方向一侧才能看到反射光。 不过世界上并不存在真正的理想反射体,正如物理学中绝对的匀速状态是不存在的。
光源
环境光 (Ambient Light): 从物体表面所产生的反射光的统一照明,称为环境光或背景光(计算机图形学第二版 389 页)。例如房间里面并没有受到灯光或者太阳光的直接照射,而是由墙壁、天花板、地板及室内各物体之间光的多次反射进行自然照明。通常我们认为理想的环境光具有如下特性:没有空间或方向性;在所有方向上和所有物体表面上投射的环境光强度是统一的恒定值。
由于环境光给予物体各个点的光照强度相同,且没有方向之分,所以在只有环境光的情况下,同一物体各点的明暗程度均一样,因此,只有环境光是不能产生具有真实感的图形效果
环境光是对光照现象的最简单抽象,局限性很大。它仅能描述光线在空间中无方向并均匀散布时的状态。真实的情况是:光线通常都有方向。点光源是发光体的最简单的模型,光线由光源出发向四周发散。还有一种是平行光,即光线都从同一个方向照射。通过模拟方向光和物体表面的交互模式,可以渲染出具有高真实感(明暗变化、镜面反射等)的三维场景
漫反射与 Lambert 模型
粗糙的物体表面向各个方向等强度地反射光,这种等同地向各个方向散射的现象称为光的漫反射( diffuse reflection )。产生光的漫反射现象的物体表面称为理想漫反射体,也称为朗伯( Lambert )反射体。
粗糙的物体表面向各个方向等强度地反射光,这种等同地向各个方向散射的现象称为光的漫反射( diffuse reflection )。产生光的漫反射现象的物体表面称为 理想漫反射体,也称为朗伯( Lambert )反射体。
对于仅暴露在环境光下的朗伯反射体,可以用公式(9-1)表示某点处漫反射的光强:
其中I 表示环境光强度(简称光强),
k (0<k <1)为材质对环境光的反射系数,
I ambdiff是漫反射体与环境光交互反射的光强。
即使一个理想的漫反射体在所有方向上具有等量的反射光线,但是表面光强还依赖于光线的入射方向(方向光)。例如,入射光方向垂直的表面与入射光方向成斜角的表面相比,其光强要大的多。这种现象可以用 Lambert 定律进行数学上的量化。即,当方向光照射到朗伯反射体上时,漫反射光的光强与入射光的方向和入射点表面法向夹角的余弦成正比,这称之为 Lambert 定律,并由此构造出 Lambert漫反射模型:
I 是点光源强度, θ 是入射光方向与顶点法线的夹角,称为入射(0≤ θ ≤90°),ldiff I 是漫反射体与方向光交互反射的光强。入射角为零时,说明光线垂直于物体表面,漫反射光强最大;90°时光线与物体表面平行,物体接收不到任何光线。若 N 为顶点单位法向量, L 表示从顶点指向光源的单位向量(注意,是由顶点指向光源,不要弄反了),则 cos θ 等价于 N 与 L 的点积。所以公式(9-2)可以表示为公式(9-3):
镜面反射与 Phong 模型
Lambert 模型较好地表现了粗糙表面上的光照现象,如石灰粉刷的墙壁、纸张等,但在用于诸如金属材质制成的物体时,则会显得呆板,表现不出光泽,主要原因是该模型没有考虑这些表面的镜面反射效果。一个光滑物体被光照射时,可以在某个方向上看到很强的反射光,这是因为在接近镜面反射角的一个区域内,反射了入射光的全部或绝大部分光强,该现象称为镜面反射。故此, Phong Bui Tuong 提出一个计算镜面反射光强的经验模型,称为 phong模型,认为镜面反射的光强与反射光线和视线的夹角相关,其数学表达如公式(9-5)所示:
k 为材质的镜面反射系数,n 是高光指数, V 表示从顶点到视点的观察方向, R 代表反射光方向。高光指数反映了物体表面的光泽程度。n 越大,反射光越集中,当偏离反射方向时,光线衰减的越厉害,只有当视线方向与反射光线方向非常接近时才能看到镜面反射的高光现象,此时,镜面反射光将会在反射方向附近形成亮且小的光斑;n 越小,表示物体越粗糙,反射光分散,观察到的光斑区域小,强度弱。反射光的方向 R 可以通过入射光方向 L (从顶点指向光源)和物体法向量 N求出:
所以有: