• 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的光照功能,就可以免去为顶点指定法线向量这个步骤的。

  • 相关阅读:
    Hashtable,挺爽的一个东西,大家都用烂了吧,我再画蛇添足一下。
    今天你写控件了吗?ASP.net控件开发系列(八)
    Attribute在运行期赋值?
    整几个题给大家玩玩,看看“下盘功夫”怎样
    当stringFormat碰上{和}
    一句SQL语句解决倒序数据分页提取
    C#扩展一般用于linq
    字符串转日期类型
    Dispatcher与UI线程交互
    圆形进度条
  • 原文地址:https://www.cnblogs.com/lotuses/p/11358012.html
Copyright © 2020-2023  润新知