OpenGL -- 光照相关的一些常识 。。。

来源:互联网 发布:西安定家小酥肉淘宝店 编辑:程序博客网 时间:2024/06/05 00:35

《计算机图形学》(第四版)
Computer Graphics with OpenGL Fourth Edition


计算机图形学中真实感成像包括两部分

  1. 表面特性的精确表示

  2. 场景中光照效果的物理描述
    表面光照效果包括光的反射,透明度,表面纹理和阴影


光源

OpenGL可以同时为我们提供8个有效的光源。也就是说,我们最多可以同时启用8个光源。它们分别是GL_LIGHT0,GL_LIGHT1,GL_LIGHT2 ……
其中,GL_LIGHT0是最特殊的一个光源,我们可以为GL_LIGHT0指定环境光成分。在默认情况下,GL_LIGHT0光源的颜色为白光,其他7个光源在默认情况下是没有颜色的,也即为黑色。

光源种类

环境光

环境光是一种无处不在的光。环境光源放出的光线被认为来自任何方向。因此,当你仅为场景指定环境光时,所有的物体无论法向量如何,都将表现为同样的明暗程度。

点光源

由这种光源放出的光线来自同一点,且方向辐射自四面八方。

平行光

平行光又称镜面光,这种光线是互相平行的。从手电筒、太阳等物体射出的光线都属于平行光。

聚光灯

这种光源的光线从一个锥体中射出,在被照射的物体上产生聚光的效果。使用这种光源需要指定光的射出方向以及锥体的顶角α。

原文链接:http://www.jianshu.com/p/1da6ae890ef3


漫反射(diffuse reflection)

粗糙或颗粒状表面会将反射光向各个方向发散出去,这种发散为漫反射。
  • 非常粗糙,不光滑的物体的表面主要产生漫反射,因而从任何角度看表面的亮度均相同。

  • 当有各种颜色的光混合成的白色光时,对象的漫反射光的颜色成为该对象的颜色。
    例如,蓝色物体会吸收其他颜色的光,将蓝色光成分反射出去
    蓝色对象在红色光下观察,则它表现为黑色,因为所有入射光均被吸收

镜面反射(specular reflection)

有些反射光会集中成醒目的或明亮的一点,成为镜面反射。这种醒目效果在光亮表面发生得比灰暗表面多得多。
例如,在从特定角度观看照亮表面如抛光的金属,苹果或人的额头时,可以看到镜面反射。

场景光(background light) 或环境光(ambient light)

从得到照明的临近对象发出的反射光,使得并不直接暴露在光源下的表面仍然是可见的


透明的(transparent)

透过该物体,可以看到其后面的物体

不透明的(opaque)

透过该物体,可以看到其后面的物体

半透明的(translucent)

例如毛玻璃和某些塑料,透过该物体,透过的光在各个方向漫射,透过半透明材料观察到的对象常常是模糊的和辨认不清的

亮度(luminance)

亮度是颜色的另一特征,有时也称为光能量。亮度给出了颜色亮或暗的程度信息,是我们在观察光照时感知亮度变化的心理上的度量

0 0