材质模型

物体的材质是指物体表面对光的吸收、反射和透射的性能。由于是简单光照模型,所以只考虑材质的反射特性来建立物体的材质模型。

同光源一样,材质也由环境色、漫反射色和镜面反射色等分量组成,分别说明了物体对环境光、漫反射光和镜面反射光的反射率。


材质决定物体的颜色:

     在进行光照计算时,材质对环境光的反射率与光源的环境光分量相结合,

                                                  对漫反射光的反射率与光源的漫反射光分量相结合,

                                                  对镜面反射光的反射率与光源的镜面反射色分量相结合。

由于镜面反射光影响范围很小,而环境光是常熟,所以物体的颜色由材质的漫反射光反射率决定的。

设物体材质的漫反射光反射率的RGB值为(mr=1.0,mg=0.5,mb=0.0),表面它反射全部红光,反射一般绿光,不反射蓝光。

现在假定有一个点光源的漫反射光的RGB值为Ir=1.0,Ig=1.0,Ib=1.0

常用物体的材质属性:如

金材质的环境光反射率的红绿蓝分量为:0.247,0.20,0.075

金材质的漫反射光反射率的红绿蓝分量为:0.752,0.606,0.226

金材质的镜面反射光反射率的红绿蓝分量为:0.628,0.556,0.366

一般还存在一个高光指数,描述镜面反射光的会聚程度,这个指数一般是使用试验的方法确定。


环境光模型:Le=Ka*La,0<=Ka<=1;   La表示来自周围环境的光强;Ka为材质的环境光反射率。

漫反射光模型:Lambert余弦定律,一个理想漫反射体表面上反射出来的漫反射光强同入射光与物体表面法线之间夹角的余弦成正比。

漫反射模型:Ld=Kd*Ld*cosθ,0<= θ <=π/2 且 0<=Kd<=1;

当入射角θ在0~90度之间,点光源才能照亮物体表面;

当入射角θ大于90度时,点光源位于P点的背面,对P点的光强共享应取为0.当入射角为0时,漫反射光最强。

在简单光照模型中,只能通过设置物体的漫反射光反射率Kd来改变物体的颜色。

cosθ=L·N,且L即L·N为负值值,应取为零。

d=Kd*Ld*MAX(L·N,0)

镜面反射光模型: 用余弦函数的幂次方来模拟镜面反射光光强的空间分布,称为Phong 反射模型。

镜面反射光的光强:Ls=Ks*Lp*cosθ*cosθ*……*cosθ。及*cosθ的N次方。

Phong反射模型:cosθ=R·V,R V为单位矢量,可改写为: Ls=Ks*Lp*{(R·V)N次方}

从式中不难看词,镜面反射光光强依赖于光源与视点的相对位置。只有视点位置比较合适,才可以观察到物体表面某些区域呈现出的高光。

Blinn提出,R·V≈H·N 其中H取单位矢量L和V的平方矢量:H=(L+V)/(L+V)

Blinn-Phong反射模型: Ls=Ks*Lp*{(H·N)N次方},由于L V都是常量,H只需要计算一次,节省了计算时间。

同理:考虑H·N取值为负值时,应赋值为零,故: Ls=Ks*Lp*{MAX(H·N,0)N次方}

综合考虑环境光、漫反射光、镜面反射光且只有一个点光源的简单光照模型为:

L=Le+Ld+Ls=Ka*La+Kd*Ld*MAX(L·N,0)+ Ks*Lp*{MAX(H·N,0)N次方}


入射光的光强随着光源与物体之间距离的增加而减弱,强度则安之光源到物体距离(d)的1/(d*d)进行衰减。

因此,在计算真实感图形时,光照模型中应加入计算光强的衰减。

对于点光源,常远的d的二次函数的倒数来衰减光强。

f(d)=min(1,1/(c0+c1·d+c2·d·d))

考虑光强衰减的单光源简单光照模型为:

L=Le+Ld+Ls=Ka*La+f(d){Kd*Ld*MAX(L·N,0)+ Ks*Lp*{MAX(H·N,0)N次方}}

如果场景中有多个点光源,简单光照模型表示为

L=Le+Ld+Ls=Ka*La+∑f(di){Kdi*Ld,i*MAX(Li·N,0)+ Ks*Lp,i*{MAX(Hi·N,0)N次方}}

∑i,表示第i个源,有n个光源。


这些模型只考虑光的强度,没有考虑光的颜色,故也称为明暗模型。

由于计算机中采用的是RGB颜色模型,因此要为颜色的红绿蓝三个分量分别建立光照模型。

LR=Ler+Ldr+Lsr=Ka*La+∑f(di){Kdi*Ld,i*MAX(Li·N,0)+ Ks*Lp,i*{MAX(Hi·N,0)N次方}}

LG=Leg+Ldg+Lsg=Ka*La+∑f(di){Kdi*Ld,i*MAX(Li·N,0)+ Ks*Lp,i*{MAX(Hi·N,0)N次方}}

LB=Leb+Ldb+Lsb=Ka*La+∑f(di){Kdi*Ld,i*MAX(Li·N,0)+ Ks*Lp,i*{MAX(Hi·N,0)N次方}}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值