9、事例九:OpenGL的光照模型


1)、OpenGL的光照模型
OpenGL的光, 可以分解为红,绿,蓝3种分;对于物体表面的材质则可以使用其在各个方向反射的红,绿,蓝光的比例来描述.
OpenGL的光照模型将光照分为4个独立的部分:
环境光(ambient light) -- 被照物体,靠近背面处
漫射光(diffuse light) -- 被照物体,两处(亮暗)中间
镜面反射光(specular light) -- 被照物体,最亮处(最近直射处)
发射光(emitted light) -- 光源
这4种光分别计算,然后被叠加起来.
1.1 - 环境光(ambient light)
环境光是场景中的基本光源。如果你进入一个漆黑的屋子,环境光通常是零,但走到外面时,总是有光能让你看到。
环境光没有方向(所以也将其称为“全局光照模型”).在室内, 环境通常是经环境散射无法确定方向的光, 就好像来自四面八方的光.
1.2 - 漫射光(diffuse light)
实际看看周围的桌面,墙面,太阳照射到上面的时候,我们就能看到光,大多数情况下,我们看到的多数光源是漫射光传播到我们的眼睛。
1.3 - 镜面反射光(specular light)
就是平时我们看到的一个光滑球面会发出的耀眼光点。金属表面,塑料,玻璃,瓶子等容易观察到这种镜面反射光.
关于镜面反射光的几点说明:
1 球面容易看到镜面反射光,是因为球面的法线向外扩散,让看到高亮光的区域更大,那么就更加容易看到镜面反射光了。
2 镜面表面很平滑,那么镜面反射光就会很集中,虽然看到的区域小,但是因为高亮的强度很大,那么就可以很清晰的看到镜面反射光了。
3 其实镜面反射光可以发生在任何物体和任何表面上。
4 粗糙的表面镜面反射光效果很弱或者甚至看不到镜面反射光
1.4 - 发射光(emitted light)
这种光是一种材质发出来的光,用来模拟物体发出来的光, 在3dsmax中,被称为自发光材质.
比如一个场景中有个白炽灯泡, 那么这个为这个灯泡就可以赋上"自发光材质"

2)、法线向量
法线向量简称法线。是垂直于表面的向量。对于一个平面, 所有顶点的法线都是一样的。
对于曲面,各个顶点的法线方向可能不同。
法线在3dsmax里面还决定了某个面是否可见, 法线正方向的面你的眼睛可见, 法线反方向的面,
你的眼睛就看不见这个面了。而在OpenGL中,OpenGL是使用法线向量来确定一个物体表面的某个顶点
所接受的光照的。如果不想使用OpenGL的光照功能,就可以免去为顶点指定法线向量这个步骤的。

猜你喜欢

转载自www.cnblogs.com/lotuses/p/11358012.html