1
(二)
苏 小 红
哈尔滨工业大学计算机科学与技术学院
2
光照模型 (1/6)
?Illumination Model
? 根据光学物理的有关定律
? 计算景物表面上任意一点投向观察者眼中

? 光亮度的大小和色彩组成的公式
?隐面消除算法
?光照模型计算亮度和色彩
3
光照模型 (2/6)
?来自光源和周围环境的入射光
照在物体表面上时, 可能被
? 吸收 —— 吸收的入射光能转化为热能
? 反射
? 透射 不仅取决于景物表面的 表面特性
还取决于入射光能的光源的 照明特性
4
光照模型 (3/6)
?表面特性
? 景物表面的 材料
?反射系数 —— 决定入射光中有多少光线被反射
?透明性 —— 决定有多少光线从物体后面透射过来
?反射光和透射光的光谱分布 —— 决定了景物表面呈
现的颜色
?反射光和透射光的强弱 —— 决定了景物表面的明暗
程度
? 景物表面的 朝向
? 景物表面 与光源的相对位置
5
光照模型 (4/6)
?照明特性
? 光源的性质
?几何性质:点光源, 线光源, 面光源, 体光源
?色彩 ( 光谱分布 )
?强度
?方向
? 点光源
? 向周围辐射等强度的光
6
光照模型 (5/6)
?局部光照模型
? 只考虑光源直接照射在景物表面所产生的光照效果
? 景物表面通常被假定为不透明, 均匀反射率
?整体光照模型
? 考虑周围环境对景物表面的影响
? 不仅能模拟
?连续的明暗色调, 镜面高光, 阴影
? 还能模拟
?镜面映像, 光的折射, 相邻景物表面之间的色彩辉映等较为复
杂精致的效果
7
光照模型 (6/6)
?基本光照模型
? 环境光模型
? Lambert漫反射模型
? 镜面反射和 Phong模型
8
环境光模型 (1/4)
ambient light
也称背景光,或 泛光
? 从周围环境的各个方向投射来的光
? 没有空间或方向上的特征
? 均匀地照射在物体的各个不同的表面上
? 等量地向各个方向反射
分布光源
精确模拟很耗时
9
环境光模型 (2/4)
近似模拟的环境光模型
?? IkI ?
10
环境光模型 (3/4)
特点
? 物体表面对环境光反射的强度
? 与 … 无关
入射光的 入射方向
观察者的 观察方向
物体 表面的朝向
? 仅与 … 有关
环境光强度
物体表面对环境光的 反射系数 (材质属性)
11
环境光模型 (4/4)
缺点
? 物体各个面具有同样的亮度
只能为景物表面产生一个平淡的明暗效果
观察者很难辨别景物各个面的层次
? 不真实,不实用
绘制三维场景时很少仅考虑环境光的作用
通常至少要用一个点光源来照射物体
? 在调试阶段可节省不必要的明暗度计算
调试变换、投影、求交、消隐程序
12
漫反射模型 (1/3)
diffuse reflection
? 可看成光穿过物体表面层被部分 吸收后重新发射
出来的光
? 自然界中的绝大多数景物为 理想漫反射体
粗糙、无光泽表面,如纸张、石灰粉刷的白墙等
13
漫反射模型 (2/3)
Lambert余弦定律
? 理想漫反射体
在点光源照射下的光的反射规律
? 漫反射光强度
同入射光与物体表面法向之间夹
角的余弦成正比
?c o sld IkI ?
)( LN ?? ld IkI
景物表面在被照射点处的漫反射光的光强
14
漫反射模型 (3/3)
特点:
?对光线沿各个方向作同等光强的散射
?各点反射光的强度只与 … 有关
?点光源强度、入射角
?物体表面的反射系数
?物体各面的朝向
?而与 … 无关
?观察者的观察位置
15
镜面反射模型 ( 1/9)
Specular Reflection
? 是物体外表面对入射光的 直接反射
非漫反射体
? 有光泽的表面,如光滑的塑料、擦亮的金属等
高光 区域
? high light
? 物体表面越光滑,高光区越小,越亮
16
理想的反射体(纯镜面)
? 入射光严格遵循光的反射定律单向地反射出去
一般光滑表面
? 在微观上物体表面面元是由许多朝向不同的微小平面组成
? 其镜面反射光分布于物面镜面反射方向的周围
理想镜面反射
L
N
P
R
V
L
N
P
R
粗糙表面的镜面反射一般光滑表面 镜面反射
L
N
P
R
镜面反射模型( 2/9)
17
镜面反射模型( 3/9)
镜面反射光特点
? 空间分布具有一定方向性
? 光强不仅取决于入射光和表面材料,还 与观察方向
有关
? 具有与入射光相同的性质
L
N
P
R
镜面反射
18
镜面反射模型( 4/9)
1973年,Phong Bui Tuong(博士论文)
提出
Phong镜面反射模型
? 简称 Phong模型
? 计算镜面反射光光强的经验公式
19
镜面反射模型( 5/9)
Phong模型
采用余弦函数的幂次模拟一般光滑表面的镜面
反射光光强的空间分布
?nls IkI c o s?
nls IkI )( RV ??
20
镜面反射模型( 6/9)
?镜面高光指数
?用于模拟镜面反射光在空间的会聚程度
?由物体表面材质的光滑程度决定
21
镜面反射模型( 7/9)
?镜面高光指数
?较光滑的物体表面(如金属、玻璃等)
?光强的空间分布较集中,高光范围较小
?宜取较大的值(大于 100或更大)
?粗糙的物体表面(如纸张、木材、粉笔等)
?光强的空间分布较分散,高光范围较大
?宜取较小的值(小于或接近于 1)
22
镜面反射模型( 8/9)
Phong光照明模型
为计算方便,镜面高光分量可改写成
]V)(RkL)(N[kIkII nsdlaa ?????
漫反射分量泛光 镜面高光分量
Li
N
Ri
V
?i
θi θi
P
Hi
H)(NIkI nlss ?? 2 VLH ??
23
真实感图形学中提出的第一个有影响的光照
明模型
存在问题
? 显示出的物体(如塑料)没有质感
? 环境光是常量,没有考虑物体之间相互的反射光
? 镜面反射的颜色是光源颜色,与物体的材料无关
? 镜面反射的计算在入射角很大时会产生失真
镜面反射模型( 9/9)
24
简单透明模型( 1/5)
透明物体
? 如玻璃杯、花瓶、水
? 不但会反射光,还会 透射光
? 可通过它看到它背后的物体
折射的几何定律
? Snell定理
折射的几何定律示意图
入射光线
表面法线
反射光线
透射光线
交界面
媒质 1
媒质 2
rrii ????? s i ns i n
25
简单透明模型( 2/5)
折射对视觉产生的影响
? 折射导致光的传播方向发生改变
? 会影响到物体的可见性
折射现象对视觉产生的影响
a
b
1
2
3
4
3
4
26
简单透明模型( 3/5)
精确模拟折射现象
? 需要大量计算,很费时
简单透明模型
? 不考虑折射的影响
? 假设各物体间的 折射率不变
? 折射角总是等于入射角
好处
? 加速了光强度的计算
? 对较薄的多边形表面也可生成合理的透明效果
27
简单透明模型( 4/5)
简单透明模型
? Newell和 Sanche提出
21 )1( ITITI pp ???
不考虑折射的简单的透明模型
透明物体
I1 I2
28
简单透明模型( 5/5)
若第二个物体表面也是透明面
? 上述算法可以递归地进行下去
? 直到遇到一个不透明面或背景时为止
适应性
? 线性近似算法不适用于曲面物体
? 因为在曲面的侧影轮廓线上,材料的厚度减少
了透明度
29
多边形表示的明暗处理( 1/7)
问题的提出
? 用多边形网格来逼近和表示曲面时
? 曲面光照效果就呈现不连续的光亮度跳跃变化
解决方法
? 用尽可能小的多边形来逼近和表示曲面,使光照效果中存
在的不连续的光亮度跳跃变化小于人类视觉的分辨率
? Gouraud明暗处理
? Phong明暗处理
30
Gouraud明暗处理
? 多边形内部各点颜色的获得
对顶点颜色双线性插值
亮度双线性插值
扫描线
x
2
3
1
y
p
a b
4
2
21
1
1
21
2 I
yy
yyI
yy
yyI aa
a ?
??
?
??
2
23
3
3
23
2 I
yy
yyI
yy
yyI bb
b ?
??
?
??
b
ab
ap
a
ab
pb
p Ixx
xxI
xx
xxI
?
??
?
??
多边形表示的明暗处理( 2/7)
31
Gouraud明暗处理步骤
对多边形网格中的每一个多边形:
1)计算多边形的单位法矢量;
2)计算多边形顶点的单位法矢量;
3)利用光照模型计算顶点的颜色;
4)在扫描线消隐算法中
对 多边形顶点颜色 进行 双线性插值
获得位于多边形内扫描线上各点的颜色
多边形表示的明暗处理( 3/7)
32
优点
? 简单易行
缺点
? 只适用于简单的漫反射光照模型
? 线性光强度插值引起的 Mach-band效应
多边形表示的明暗处理( 4/7)
33
Phong明暗处理
? 多边形内部各点法矢量的获得
对顶点法矢量双线性插值
多边形表示的明暗处理( 5/7)
34
Phong明暗处理 步骤
1)计算多边形的单位法矢量;
2)计算多边形顶点的单位法矢量;
3)在扫描线消隐算法中
对 多边形顶点法矢量 进行 双线性插值
获得位于多边形内的扫描线上各点的法矢量;
4)利用光照模型计算各点的颜色
多边形表示的明暗处理( 6/7)
35
优点
? 绘制的图形比 Gouraud方法更真实
缺点
? 计算量远大于 Gouraud方法
多边形表示的明暗处理( 7/7)
36
半色调技术( 1/15)
Halftone
? 在 光强等级范围较小的输出设备 上输出图像
? 将多灰度级图像数据转换成能反映其灰度变化
的黑白二值图像
? 通过将多个像素单元组合起来表示一种强度值
目的
? 获得较多的灰度等级数目
? 提高图像的视觉分辨率
37
半色调技术( 2/15)
原理
? 基于生理现象
? 当我们观察一个包含几个像素的小区域时
? 眼睛通过取整或将细节取平均而得到一个总体的灰度效果
输出设备(打印机)
? 利用这种视觉效果来再现多灰度级图像
? 半色调图像
应用
? 色染、纺织、彩色打印、印刷等领域
38
半色调技术( 3/15)
模式单元法
? halftone patterns
? 用 矩形区域中像素的不同排列模式 来代表不同
的像素灰度等级
? 用 点的稀密程度 来表现明暗
39
半色调技术( 4/15)
可显示的灰度等级数目取决于
? 矩形模式单元中所包含的像素数目
? 系统能显示的等级数目
? 在二级灰度系统中,若每个单元中包含 n?n个像素,则可
表示 n2+1种灰度等级。
二级灰度系统中表示 5个灰度等级的 2× 2像素网格
灰级 0 灰级 1 灰级 2
灰级 3 灰级 4
二级灰度系统中表示 10个灰度等级的 3× 3像素网格
灰级 0 灰级 1 灰级 2 灰级 3 灰级 4
灰级 7 灰级 8灰级 6 灰级 9灰级 5
40
半色调技术( 5/15)
设置像素模式的原则
? 从中心向外扩展
? 不使用水平或垂直的点列
? 避免分散、孤立
不好的设置模式
(a) (b) (c) (d) (e)
41
半色调技术( 6/15)
缺点
? 图像视觉分辨率的改善以牺牲图像的空间分辨
率为代价
? 只有在图像分辨率低于输出设备分辨率时,这
种结果才是可以接受的
42
半色调技术( 7/15)
抖动
? Dithering
? 在 不降低图像空间分辨率 的情况下
? 提高图像的视觉分辨率
两类
? 模式抖动 ( pattern dithering)
? 误差扩散 ( error diffusion)
43
半色调技术( 8/15)
模式抖动
? 以固定模式的抖动噪音添加于像素之上以柔化
其灰度运算
? 在图像中引入一个随机误差,在每一像素的灰
度与所选阈值比较之前,将这一误差加到该像
素的灰度值上
44
半色调技术( 9/15)
有序抖动矩阵方法
? Jarvis提出
? 将误差模式看成一个矩阵
? 被称为抖动矩阵
抖动矩阵的构造
? 矩阵中的相邻元素的值相差越大越好
? 矩阵中每个元素的值之出现一次
45
半色调技术( 10/15)
n?n抖动矩阵
? 再现 n2个灰度等级
递归生成
?????? ?? ??
nnnn
nnn
n UDUD
UDDD
434
244
2
? ?01 ?D
??????? 13 202D
?
?
?
?
?
?
?
?
?
?
?
?
?
513715
91113
614412
10280
4D
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
2153296123553163
37545133974715
2557174927591951
4193314311353
2254306220522860
38646143644412
2658185024561648
4210342408320
8
D
46
半色调技术( 11/15)
Jarvis抖动处理步骤
? 把原位图的个像素的灰度值变换到 [0,n2]范围

? 将误差模式以重复的棋盘格式加到图像中
将图像中每个像素的灰度值 I(x,y)与一个抖动矩阵中
的相应元素 D(i,j)进行比较
以决定显示的灰度值
47
半色调技术( 12/15)
优点
? 速度快
? 随着 n的增加,图像不丢失它的空间分辨率
缺点
? 处理效果不好,赝象 ( artifact)
48
半色调技术( 13/15)
误差扩散的原理
? 从单个像素的角度来理解
? 将一个给定像素的灰度值与显示像素灰度值之
间的误差分散到当前像素的右方或下方的像素
中去
49
半色调技术( 14/15)
Floyd-Steinberg filter
Floyd-Steinberg filter的误差扩散
3/16 5/16 1/16
7/16x
只需一次扫描即可将全部像素点亮
50
半色调技术 ( 15/15)
优点
? 处理的效果好,不会产生赝象
缺点
? 处理速度慢
51
表面纹理细节模拟( 1/2)
简单光照明模型的缺陷
? 只能模拟 光滑景物表面
只考虑了表面法向的变化
假设表面反射系数为一常数
52
表面纹理细节模拟( 2/2)
纹理分类
? 纹理定义域
二维纹理
三维纹理
? 纹理的表现形式
颜色纹理
? 呈现在物体表面上的各种花纹、图案和文字等
几何纹理
? 基于景物表面微观几何形状的表面纹理
过程纹理
? 表现各种规则或不规则的动态变化的自然景象
53
颜色纹理( 1/8)
颜色纹理
? 基于 二维纹理映射( texture mapping)技术 生成
定义方法
? 连续法
用数学函数解析地表达,函数的定义域就是纹理空间
? 离散法
用各种数字化图像来离散定义
纹理空间坐标系中表示光亮度值的一个矩形数组
? 程序生成
? 扫描输入
? 通过交互式系统绘制得到
54
颜色纹理( 2/8)
棋盘方格纹理
粗布纹理
))c os ()( c os (),( qvpuAvuf ??
A为 [0,1]上的随机变量,p,q为频率系数
55
颜色纹理( 3/8)
二维纹理映射的基本原理
? 确定景物表面上任一可见点 P在纹理空间中的对应位置 (u,v)
? 用 (u,v)处所定义的纹理值或颜色值 作为 P点的反射系数
? 或用 (u,v)处所定义的纹理值或颜色值 对反射系数调制
达到对物体原来的表面亮度或颜色值进行混合的效果
? 按照光照模型计算出 P点的亮度或颜色值
56
纹理映射的构造
从数学的观点来看, 映射 M可用下式描述
(u,v)= F(x,y,z)
(u,v)?TextureSpace
颜色纹理( 4/8)
57
参数曲面 (x,y,z) = F (u,v)
定义了二维参数空间到三维物体空间的映射关系
当 将参数空间和纹理空间等同 (两者之间关系由一仿射变
换确定)起来时,若 F 可逆, 则纹理映射关系等价于参数曲面
自身定义的逆映射
(u,v) = F-1 (x,y,z)
对复杂的高次参数曲面,其逆映射一般无法解析表达!
一般采用数值求解技术来离散求得
颜色纹理( 5/8)
58
例,高为 h,半径为 r 的圆柱面可用下面的参数形式来表达
x= r cosθ
y= r sinθ 0 ≤θ≤2 π,0 ≤ψ≤1
z= hψ
若通过下述线性变换将纹理空间 [0,1]× [0,1]与参数空间
[0,2π]× [0,1]等同起来
u =θ/ 2π
υ=ψ
则由该圆柱面的参数表达式, 容易得到 从景物空间到纹理空间
的纹理映射表达式
颜色纹理( 6/8)
59
r?
z
x
yh
0 2 ??
1
仿射变换 + T i l i n g
u
纹理空间参数空间
景物空间
颜色纹理( 7/8)
60
颜色纹理( 8/8)
缺陷,
? 只能在 光滑表面 上描绘各种事先定义的花纹图案
? 不能表现由于 表面的微观几何形状凹凸不平 而呈
现出来的粗糙质感
61
几何纹理( 1/4)
凹凸纹理
? bump mapping
? 1978年,Blinn提出
62
几何纹理( 2/4)
法向扰动法
? 对景物表面各采样点位置作微小的扰动
改变表面的微观几何形状
引起景物表面 法向量的扰动
? 景物表面光亮度是法向量的函数
法向量的扰动导致 表面光亮度的突变
产生表面凹凸不平的真实效果
难点
? 扰动函数 的选取
63
设景物表面由下述参数方程来定义:
Q = Q(u,v)
在景物表面每一采样点处沿其法向附加一微小增量,
从而生成一张新的表面,
Q′(u,v) = Q(u,v) + P (u,v) N
几何纹理( 3/4)
64
N
N ?
N N
N ?
Q
Q
u
Q
B
A D
B
A
? P
P
u
扰动后的法向量
N′= N + D = N + Pu A – Pv B
几何纹理( 4/4)
65
过程纹理 (1/6)
Procedure Texture Mapping
用过程式方法
? 将纹理空间中的值映射到物体表面
? 生成 三维纹理
66
过程纹理 (2/6)
木纹函数
? 采用一组 共轴圆柱面 来定义
? 位于相邻圆柱面之间的点的纹理函数值
交替地取为“明”和“暗”
? 景物内任意一点的纹理函数值
根据它到圆柱轴线所经过的面个数的奇偶性而取为“明”和
“暗”
? Peachey引入三个操作来避免规范
扰动 ( perturbing)
扭曲 ( twisting)
倾斜 ( tilting)。
67
过程纹理 (3/6)
涡流函数
? turbulence
? Perlin于 1985年提出
? 近似描述湍流现象的经验模型
? 用一系列 三维噪声函数的叠加 来构造
? 应用于大理石、火焰以及云彩等自然纹理的模拟
?
?
?
k
i
i
i Xn o is e
Xtu r b u le n c e
0 2
)2()(
68
过程纹理 (4/6)
用 turbulence函数模拟纹理的步骤
? 利用基本函数形式表示纹理的基本特征
? 用 turbulence函数来扰动 上述函数的一些参数,
以加入各种高阶纹理细节
69
Fourier合成技术
? 将一系列不同频率、相位的正弦(或余弦)波迭加
起来产生所需的纹理模式
既可在空间域中合成,亦可在频率域中合成
? 成功用于模拟水波、云彩、山脉和森林等自然景象
过程纹理 (5/6)
70
?
??
?
??
???
??????
n
i
zizii
n
i
yiyii
n
i
xixii
AxC
AxCAxCzyxT
1
0
1
0
1
0
])[ c o s (
])[ c o s ( ])[ c o s (),,(
??
????
1 ),c o s (
2
)c o s (
2
),c o s (
2
2,2,2
1),,(,
2
2
01,
1,1,
1,1,1,
11
??
??
???
??
?
??
???
?
Ay
xz
zyxTCCC
yiiz
xiiyziix
ziizyiiyxiix
ii
?
?
?
?
?
??
?
?
??????
使得选取
过程纹理 (6/6)
71
光线跟踪原理 (1/6)
光线投射( Ray Casting)
? 被跟踪的光线仅从每个像素到离它最近的景物为止;
光线跟踪 ( Ray-trace)
? Appel在 1968年提出
? 通过跟踪多条从视点发出的光线在场景中的路径,以
得到多个景物表面所产生的反射和折射影响;
? 是光线投射算法的延伸。
72
光线跟踪原理 (2/6)
主要思想
? 沿着 到达视点的光线的相反方向 跟踪
? 经过屏幕上每一象素
? 找出与视线所交的物体表面点 P0
? 继续跟踪,找出影响 P0点光强的所有的光源
? 算出 P0点上精确的光照强度
? 重复上述光线跟踪过程,直到满足下述任一条件时为止:
光线与光源相交;
光线与背景相交;
被跟踪的光线对首交点处的光亮度贡献趋近于 0。
73
光线跟踪原理 (3/6)
上述光线跟踪过程可以用
一棵二叉树(称为 光线树 )来表示
光线跟踪算法的原理示意图
P
P1
Pr Pt
ItIe
I
观察者
光线
投影面上的像素位置
R
z
N
V
T PtPr
P1
A
B C
P
(a) 光线跟踪过程示意图 (b) 光线树示意图
74
光线跟踪原理 (4/6)
光线与实体的求交
? 75%以上的工作量用于求交计算
光线跟踪方法实用的关键
? 线与面求交 算法的效率
75
光线跟踪原理 (5/6)
包围球 或 包围盒 方法
? 求交之前检测物体是否与光线相交
? 如果预测可能相交,再执行具体的线面求交算法
76
光线跟踪原理 (6/6)
优点
? 能模拟环境的镜面反射、规则透射以及透明体
阴影等复杂精致的光照效果。
缺点:
? 不能模拟环境的镜面反射和透射光引起的漫反
射效果
? 要生成一棵庞大的光线树而耗时很多,而且容
易引起图形的细节丢失等反走样现象