第五章 光照和明暗绘制
-
光照的一些概念
–从光源照射到物体的光传递了反射(Reflective)光【包括漫反射(Diffuse)和镜面(Specular)反射】,透明(Transparent)光和吸收(Absorptive)光
-
照明模型
–局部照明模型(Local Lighting Model)中所有的光都来自场景中定义的光。模型中的可见光由三个部分组成:环境(Ambient)光、漫反射(Diffuse)光、镜面反射(Specular)光
A)环境光:总环境光A是场景定义的环境光照L0加上各个环境光的总和。各个光的贡献来自环境光LA和材料的环境光反射系数CA。公式如下:
A = L 0 + ∑ l i g h t s ( L A ∗ C A ) A = L_{0} + \sum_{lights}^{}(L_{A}*C_{A}) A=L0+lights∑(LA∗CA)
B)漫反射光:反射出去的光线强度既依赖于材质,也依赖于光源相对于表面的位置(根据Lambert定律,只有入射光线的垂直分量出对照明起作用)。各个光的贡献来自光LD和材料的漫反射系数CD。公式如下:
D = ∑ l i g h t s L D ∗ C D ∗ ( L ⋅ N ) D = \sum_{lights}^{}L_{D}*C_{D}*(L \cdot N) D=lights∑LD∗CD∗(L⋅N)
C)镜面反射光:依赖于眼睛向量V和反射光向量R的夹角,也依赖于材料的高光(Shininess)系数k。公式如下:
S = ∑ l i g h t s L S ∗ C S ∗ ( V ⋅ R ) k S = \sum_{lights}^{}L_{S}*C_{S}*(V \cdot R)^k S=lights∑LS∗CS∗(V⋅R)k
D)用到的四个向量:光源向量(I)、观察向量(V)、法向量(N)、反射向量(R)
– Blinn-Phong 光照模型
-
光照属性
–光源类型
A)平行光源:当光源距离更远时,s的变化变得不那么明显;光线的方向是从物体到光源。
B)聚光灯:定义定义聚光灯(点光源)需要光源位置P,光源方向D,cutoff ө,dropoff d(决定了发光强度随着Φ的增大而衰减的速度)
–光照衰减
-
着色(Shader)
–基本概念:
A)着色是计算图形对象(尤其是多边形)各部分的颜色
B)OpenGL提供均匀和平滑着色–着色类型:
A)均匀(Flat or Constant)着色:每个多边形只需要进行一次明暗计算,并且多边形上个所有点的颜色都相同。虽然这种方法高效,但表面粗糙
B)平滑(Smooth)着色:对多边形的每个顶点进行着色计算。对共用一个顶点的多边形的法向量取平均值,把归一化后的平均值定义为该顶点的法向量
C)Phone着色:在多边形内对法向量进行插值,公式和平滑着色相似,Color换成对应点的向量