局部光照模型概念总结

 闲的无聊,把局部光照模型的概念抄一遍 ,加深一下印象。(PS:从opengl "红宝书"中摘抄)


 OPENGL光照模型分为四种:环境光,漫反射光,镜面光,发射光。


局部光照模型满足叠加原理,所以有如下公式: 顶点的颜色 = 环境光 + 漫反射光 + 镜面光 + 发射光(如果是多光源,再对每个光源的结果进行叠加)

    环境光(ambient light): 这种光在场景中无处不再,它没有方向性,因此计算它与顶点法线无关。在OPENGL中可以设置全局环境光(与特定光源无关),每个光源的也有自己的环境光成分(它在计算需要根据衰减因子进行衰减)。
   
    漫反射光(diffuse light):从光源到顶点确定一个方向,该方向与顶点法线决定光照强度的衰减程度(当然还有其他衰减因子,eg:距离),但是对于视点在哪对最终的顶点颜色没有影响(当然顶点可见是前提条件^_^)


    镜面光(specular light):和光源到顶点,顶点法线,以及顶点到视点三个向量都有关。

    发射光(emissive color):物体自己产生的颜色,但是该颜色不对其他物体产生影响(也就是不作为光源)
 
    计算公式:
顶点颜色 = emission material + ambient light model * ambient material + {1 /(k c +k l d+k q d 2 )} *  (聚光灯效果) i * [ambient light * ambient material + (max{L·n,0}) * diffuse light * diffuse material + (max{s·n,0}) shininess   * specular light * specular material ] i
(注:s代表顶点指向光源的向量与顶点指向视点的两个向量之和,并且进行了归一化)

你可能感兴趣的:(图形学)