第8章 光照模型与面绘制算法对物体进行透视投影,然后在可见面上产生自然光照效果,实现场景的真实感显示。
(彩图1.15,1.36 等)绘制真实感图形涉及物理学和心理学两个方面。
光(电磁能)经过和周围具体环境的互相作用后到达人的眼睛,刺激人的眼睛(在人的眼睛里,发生物理和化学变化),生成人脑所能感知的电脉冲,使我们“看见”物体。
一个光照明模型(illumination model)(明暗模型主要用于物体表面某点光强度的计算。
面绘制算法(surface-rendering algorithm)是通过光照模型中的光强度计算,确定场景中物体表面的所有投影象素点的光强度。
面绘制有二种方法:1. 将光照模型应用于每个可见面的每一点(如光线跟踪算法)2. 经过少量的光照模型计算,在面片上进行亮度插值(扫描线方法)图形学中的真实感成像包括两部分内容:1.物体的精确图形表示;2.场景中光照效果的物理描述,如:光的反射,透明性、阴影表面纹理等。
光照模型包含许多因素:1.物体类型:物体的透明度, 物体表面可以是光亮的、阴暗的;物体表面的纹理;2.物体相对于光源的位置;3.光源的属性:形状、颜色、位置;4.观察平面的位置和方向等。
光强度的计算量较大,如较精确的计算模型:辐射度算法,考虑场景中光源与物体表面间辐射能量的传递,计算强度。
大多数软件包采用简化的光照计算和经验模型(如phong模型,Gouraud 模型等)§1 光源观察一个不透明不发光的物体时,从物体表面得到反射光.(从光源发出的,或从周围物体获得的)光源:发光物体:灯泡、太阳;反射光源:房屋的墙壁。
有时一个光发物体,既是光源又是反射体,如:一个塑料球内放置一个灯泡,球表面上既发光也反射光。
光源分为:1.点光源:是发光体的最简单的模型。
如 太阳、小灯泡、 离场景足够远的光源、比物体小得多的光源。
光线由光源向四周发共用散。
2. 分布式光源:如:日光灯,与场景中面片比不足够小。
光线被投射到一个物体后会:1)被反射:反射光线的强弱由表面的材质类型决定;2)被吸收;3)被折射(透明物体)。
表面光滑的材质,反射较多的入射光,吸收较少的入射光;表面粗糙的物体往往将发射光向各个方向散射:—漫反射(光线的散射现象)。
反射包括:1) 漫反射; 粗糙的物体表面将反射光向各个方向散射=>从各个视角观察到的光亮度几乎相同。
物体的颜色实际上就是入射光线被漫反射后表现出的颜色。
如:一束白光照在一个蓝色物体-->蓝色被反射其它的被吸收;红光->蓝色物体,物体为黑色(红光被吸收)。
2) 镜面反射:磨光的物体表面上产生高光或强光。
§2、基本光照模型在基本光照模型中,假设所有的光源均为点光源,且已知其位置和光强度(颜色)。
它是一中简单有效的方法。
在基本光照模型中光线的计算,主要基于物体表面的材质,背景光线条件及光源。
1、 环境光一个物体表面即使不直接暴露于光源之下,只要其周围的物体被照明,它也可能看得见。
环境光(ambient light):或称背景光(泛光),是场景的基准光亮度。
特点:没有空间或方向上的特征,在所有方向上和所有物体表面上投射的环境光数量恒定不变。
表示:Ia ,表示场景中的环境光大小。
因而由环境光产生的反射光与观察方向和物体表面的朝向无关。
k a:环境光的反射常数(k a :0—1)由环境光产生的反射光强度:I ambdiff = k a * I a .2、 点光源漫反射k d:漫反射率(diffuse reflectivity)漫反射系数,表示入射光线被漫反射部分的百分比. 与物体各表面的材质属性有关。
是物体颜色的函数,设为常数。
理想漫反射体(Lambert反射体):光线被物体表面漫反射后向各个方向以等光强度发散,与观察方向无关.所以从表面上任意点所发散的光线可由朗伯余弦定律计算而得。
(P391图14.8)I ldiff = R d * I l cos(θ)I l :点光源强度;θ:入射角;θ:00--900光强度决定于它获得的幅射能.面片的光亮度依赖于它与光源的相对朝向,与入射光方向垂直的面片同一个与入射光方向成斜面的面片相比,其光亮程度要大得多(可看成入射光的强度不同).(P391图14.9)N:物体表面的单位法向量L:从表面上指向点光源的单位方向,则cos(θ)=N·L;由光源的漫反射光强为:I ldiff = k d * I l (N·L)所以物体的漫反射光强为:I ldiff = k a * I a + k d * I l (N·L).物体离光源近,强度大.物体离光源远,强度小.I ldiff = k a * I a + k d * I l (N·L)/(D+K).K为常数(使分母不为0).(例 P391,P392)3、 镜面反射和Phong模型当观察一个光照下的光滑物体表面,如磨光的金属,可能在某个观察方向上看到高光或强光----镜面反射。
在接近镜面反射角的一个会聚区域内入射光的全部或绝大部分成为反射光。
镜面反射时, 反射角=入射角(P393 图)对于理想的反射体,当φ=0时,才能观察到反射光线;(φ:观察方向与反射方向的夹角)对于非理想反射体系统,其镜面反射方向分布在R周围的有限范围内。
※ 光滑表面的镜面反射范围小,粗糙表面的镜面反射范围大。
Phong镜面反射模型:(Phong模型):镜面反射光强度与cos(φ)成正比.φ: 00--900镜面反射参数n s:由被观察的物体表面材质所决定.n s大:光滑表面 , n s >100, 理想的反射器 ns ->∞n s小:粗糙表面, n s<1,煤渣 n s≈1镜面反射的光强度主要由物体表面材质属性,光线入射角,入射光颜色等因素决定。
用镜面反射系数W(θ):近似表示镜面反射光强度的变化,它是入射角θ的函数。
θ:00--900I spec= W(θ)*I l*cos ns(φ) = W(θ,λ) *I l*cos ns(φ). λ:光的波长。
对于θ 的大部分范围,反射强度小于入射光的10% (P393图14.14)。
W(θ)或W(θ,λ)比较复杂,实用时常根据美学观点或实验数据用常数k s代替。
I spec= k s*I l*cos ns (φ) = k s*I l*(V·R) ns(P394图14.16)R+L=2(N·L)N , R=2(N·L)N -L .例 P395图14.17 ,对于不同的k s和n s的光照效果。
(彩图14.19)简化的phong模型:用cos(α) 代替cos(φ)计算(P395图14.18) cos(α)=N·H,H:方向L与V的角平分线方向,α为法线方向N与H的夹角。
※ 简化计算:1. 观察者与光源离物体表面足够远,且V与L均为常量,则H为常量,N·H比V·R计算量小(为了求R,需要先计算N)2. 对于给定的光源和视点,H方向是观察方向上产生最大镜面反射的面片的朝向,所以H有时为面片高光最大的表面的法方向(N=H)。
3. 若V与L、R、N共面,则α=φ/2; 否则α>φ/2(不共面时)φ +(θ-α) = θ+α4、 多光源漫反射和镜面反射的合并单个点光源,表面上某点处的漫反射和镜面反射为I = I ldiff + I spec= k a * I a + k d * I l (N·L) + k s*I l*(N·H) ns.若在场景中放置多个点光源I = I ldiff + I spec= k a * I a + I li (k d *(N·L) + k s*(N·H) ns).为了保证每个象素的光强度不超过某个上限,采取一些规范化操作。
1) 对光强度计算公式设置上限,超过上限,取上限(简单);2) 将各项除以最大项的绝对值;3) 计算出场景中各象素的强度,然后按比例变换到正常的光强范围内(复杂)。
5、 Warn模型Warn模型提供一仲模拟立体光照效果的方法,它是通过在多个方向上控制光强度来实现。
在Warn模型中,光源被表示为一个反射面上的许多点,对各点采用phong模型进行计算,通过设置phong模型中各项的值来控制不同方向上的光强度。
6、 强度衰减光线从一点光源出发在空间中传播时,它的强度按 1/d2 进行衰减(d为光线经过的路程长度).所以在真实感图形显示中, 光照明模型中必须考虑光强度的衰减。
如果不考虑光强度的衰减,二个有相同光学效果的平行表面互相遮挡时,它们将无法被区分开来,显示成为一张面。
但不可简单地用 1/d2作为衰减因子。
常用的二次衰减函数的倒数:f(d)=1/(a0+a1d+a2d2)调整a0、a1、a2的值,可得到场景中不同的光照效果。
a0的作用:防止d很小时, f(d)太大f(d)=min(1, 1/(a0+a1d+a2d2))基本光照模型:I= k a * I a + f(d i)I li (k d *(N·L) + k s*(N·H) ns).d i : 光线从点光源I i出发所经过的路程.7、 颜色在RGB描述中,场景中的每个颜色用R、G、B三个分量表示,用RGB 各分量来标识光源强度和物体表面颜色,并据光照模型来计算反射光线中的RGB分量。
1) 反射系数标识为三元分量k d =(k d R,k d G,k d B),物体为蓝色 0≤k d B≤1, k d R =0,k d G =0I B = k a B * I aB + f(d i)I lBi (k d B*(N·L) + k s B* (N·H) ns).2) 每个表面定义漫反射和镜面反射的颜色向量,将反射参数定义为单值常数;I B= k a*S d B*I aB +f(d i)I lBi(k d *S dB*(N·L)+k s*S sB* (N·H) ns).漫反射颜色分量:(S dR ,S d G, S dB)镜面反射颜色发量(S sR,S SG, S SB)2) 使用光谱波长入来表示彩色中的各分量(各种波长的光的反射系数不同)Iλ= k a*S dλ*I aλ+f(d i)I lλi(k d *S dλ*(N·L)+k s*S sλ*(N·H) ns).八 透明度透明物体的表面会产生反射光和折射光,折射光的相关贡献决定于表面的透明程度,(透明表面后是否有光源或表面)要表示一个透明表面时,将穿过表面的光线的贡献包括进去。
(彩图14.26)图P398 14.25折射率:定义为光线在真空中的速度与其在物质中速度之比率。