第五章光学模型及其算法实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第五章光学模型及其算法实现
一、复习要求
1.简单光反射模型
2.增量式光反射模型
3.局部光反射模型
4.光源模型
5.简单光透射模型
6.光线跟踪显示技术
二、内容提要
1.简单光反射模型
(1)基本光学原理
①照度定律
普通物理学中的照度定律(Lambert余弦定律):
π
I=K f I L cosθ, θ∈ [0,
2
式中,反射常数K f与物体表面性质有关,也描述物体的颜色。
注意:按一般规定,入射光L是从表面上一点指向光源的矢量。
②材质分配
事实上,一个物体的颜色就是它所反射出的光的颜色,取决于光源的颜色和该物体对光的反射性。例如,将一个阳光下的红球放到只有黄灯照明的室内,它就变成黑的了,因为那里没有任何红色光可被反射,而所有黄色光都被吸收了。
在使用光照时,原有的“绘图颜色”概念已不能适用,而采用“材质”一词。
定义:材质(material)被定义为一个物体对环境光、漫反射光、镜面反射光的反射性。它们分别以一个对应的RGB值表示,称为材质的Ambient,Diffuse,Specular分量(即光学定律中的反射系数K a, K d, K s)。
材质还可以包括另一种辐射性,用于描述自身发光的物体,例如汽车尾灯或夜光表。通
111 / 13
常,灯具的表面也被看成是一个自发光体。
③ 折射和透射
Snell 正弦定律(或称折射定律)属于几何光学原理,用于确定两个物体间的入射角与折射角的关系:
1
2
21ηηθθ=sin sin
式中,θ1表示在物体1
表面处的入射角,而θ2表示在物体2内部的折射角;η1和η2分别是这两个物体的折射率。
如图5-1所示,除了从同侧光源射过来的反射光外,观察者还将会看到从另一侧光源穿过物体后射出的透射光:
图5-1 光的折射和透射
(2)简单光反射模型(Phong 模型)的导出
图5-2 光的反射
简单光反射模型只模拟物体表面对光的反射作用,并不考虑物体表面的透射和散射作用。在简单光反射模型中一个点光源照射到物体表面一点,再反射出来的光,可分为三部分:环境光(泛光)、漫反射光镜面反射光。
在Phong 模型中,物体表面的光照效果是环境反射光、光源的漫反射光和镜面反射光的
合成效果。
· 环境反射光(Ambient Light):从背景物体散射出来的光。可用下式计算:
I 1=K a I a
其中K a 为环境光系数 ·光源的漫反射光(Diffuse Light):从一个粗糙的、无光泽的表面反射出,它与入射角有关(即符合Lamber 定律)
I 2=K d I L cos θ
其中K d 为粗糙度
·镜面反射光(Specular Reflection):从一个光滑的、明亮的表面反射出(或称单反射光): I 3=K s I L cos n α
其中,K s 为单向反射率;n 控制反射光束的锥度,其值越大,光束越窄,表示该表面越明亮(如磨光金属面大理石)(较小可表示苹果、木质等)
当α=0(即视线位于反射方向上)时,将呈现一个高光点(hotspot)(如白光下的铜球上的亮白点)
根据Phong 模型的定义,在多边形所有的点处按下式计算光强: I=I 1+I 2+I 3=K a I a +K d I L cos θ+K s cos n α
注意:在具体计算中,反射系数K d 、K s 和K a 也可按RGB 分解成三个分量:(K dr ,K dg ,K db )、(K sr , K sg , K sb )和(K ar , K ag , K ab ),各分量范围均为0.0~1.0。
2.增量式光反射模型
(1)双线性光强插值法(Gourand Shading)
在图像空间中,Gouraud 光照模型(双线性光强插值法)计算各像素的光强如下: (1) 只在多边形的顶点处,按下式计算光强:
I=K a I a +K d I L cos θ(只考虑环境光和漫反射光)
而顶点的法矢等于各邻面法矢的平均值:
∑==n 1
i i A N n 1N ρρ
(2) 对于多边形边上和内部的各点(像素),用顶点明暗度的线性插值计算出:
图5-3 求法矢的平均值
113 / 13
令 ∆I AB =
A B A B y y I I --,∆I AD = A
D A
D y y I I --
故I S = I A + ∆I AB •∆y ,I T = I A + ∆I AD •∆y
对于多边形内部的各点(像素),用两边端点光强的线性插值法计算出: 令∆I ST =
S
T S
T x x I I --
故 I P = I S + ∆I ST •∆x
另一种计算多边形边上和内部的各点光强的改进方法是增量法,它利用扫描线的相关性来简化计算如下:
对于边上的点: I S, y+1 = I S, y + ∆I AB ,
I T, y+1 = I T, y + ∆I AD
对于内部的点: I x+1, P = I x, P + ∆I ST ,
Gouraud 算法优缺点:算法简单,计算量小。但不能再现高光。适用粗糙表面
(2)双线性法向插值法(Phong Shading)
在图像空间中,Phong 光照模型(双线性法向插值法)计算各像素的度如下:
顶点的法矢等于各邻面法矢的平均值,即∑=n 1
i i N n 1ρ
对于多边形上和内部的各点(像素),用顶点法矢的线性插值。计算公式如下: 令∆N S = B A B A y y N N --, ∆N T = D
A D
A y y N N --
故 N S, y+1 = N S, y + ∆N S , N T, y+1 = N T, y + ∆N T 令
∆N P =
S
T S
T x x N N --
故∆N x+1, P =∆N x, P + ∆N P
注意:这里,法矢Np 就是实际曲面上该点的切平面法矢的近似值
Phong 算法优缺点:真实感强,但计算量较大,适用光滑表面
目前大多数渲染软件采用Gouraud 和Phong 光照模型作为Quick(快速)和Full(完全) Rendering ,能满足一般真实感显示要求。 Gouraud 和Phong 光照模型两者比较如下:
GouraudShading Phong Shading
双线性光强插值法 双线性法向插值法 适用于漫反射光(粗糙表面) 适用于镜面反射光(特别是有高光的金属表面) 马赫带效应较重 马赫带效应较轻
图5-4 双线性亮度插值法
图5-5 双线性法矢插值法