您的位置:首页 > 编程语言

三种光照模型的计算

2015-11-07 00:24 507 查看

镜面反射(Specular)

镜面反射又称高光,是指由光源直接经物体表面反射入眼睛的光线。镜面反射使物体看上去有光泽,粗糙表面因反射率不高,所以缺乏此效果。镜面反射的强度取决于物体,光源和观察者。



n为表面法向量
v 指向观察者
l 指向光源
r 为"镜像"向量,即l对n镜像的结果。
θ rv的夹角,由r·v给出。描述镜像的方位性。

以上所有向量均为单位向量。

下列等式给出给出镜面反射的Phong模型。



mgls为材料的光泽度,也称为Phong指数。它控制"亮斑"的范围,小的mgls带来大而平滑的光滑的光斑,大的值带来小而亮的光斑。
mspec为材料的反射颜色,控制光斑的强度。强反射面有,有较大的mspec值,粗糙些的表面则有较小的mspec值。
Sspec是光源的镜面反射颜色,控制光本身的色彩和强度。常与光的漫反射颜色Sdiff

由n是变化的,导致r需要频繁计算,在观察者离物体的距离远大于物体的尺寸的情况下,可以尽量避免计算r值。

下面介绍一下Blinn模型



Blinn模型通过计算一个稍微不同的角度来避免计算,使用的是h,表示v,l的中间向量,由标准化的v,l的平均值求得,计算如下:



Blinn模型和Phong模型类似,注意θ表示是nh的夹角。



漫反射光照(Diffuse)

漫反射是物体粗糙表面散开的随机方向上的反射。

漫反射光照服从Lambert法则:反射光强正比于法向量与光线夹角的余弦,用点乘来计算余弦,公式如下:



n为表面法向量,l为指向光源的单位向量,mdiff为材料的散射色,即多数人认同的物体颜色,Sdiff为光源散射色,一般和光源镜面色Sspec

环境光照(Ambient)

镜面反射和漫反射都是刻画光源经物体反射后直接进入眼中的光线。对于光线经常经过多次反射进入眼睛的反射,称为环境光。例如,黑暗的厨房打开冰箱,整个房间会亮些,尽管箱门(或身体)挡住了大部分直线光。环境光取决于材质和全局环境光,下面的公式计算环境光:



mamb为材质的环境光分量。它总是等于漫反射分量。gamb为整个场景的环境光照值。

光照衰弱(Attenuation)

从物理学上来说,光照强度的衰弱为光源的光照强度除以当前距离的平方。公式如下:



其中是I0距离光源d=1时的光照强度。

但对于3D图形编程来说,一般不使用这公式,选择下面的公式较多,而且便于控制效果。



其中a0a1a2衰减参数。通过调整这个三个参数的大小可以实现不同的光强衰减的效果。

结合光照模型,会有如下公式:


其中D为漫反射的光强,S为高光的光强,k为相应的参数的系数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  3d 图形 编程