美文网首页
《WebGL 编程指南》笔记 —— 第八章 光照

《WebGL 编程指南》笔记 —— 第八章 光照

作者: fehysunny | 来源:发表于2017-10-09 20:25 被阅读54次
    1. 当光线照射到物体上时,发生了两个重要现象:
      (1)根据光源和光线方向,物体不同表面的明暗程度变得不一致。
      (2)根据光源和光线方向,物体向地面投下了影子
    1. 着色和阴影
      着色(shading):根据光照条件重建“物体各表面明暗不一的效果”的过程。
      阴影(shadowing):物体向地面投下影子的现象。

    2. 真实世界中的光的类型:
      (1)平行光(directional light),类似于自然中的太阳光。平行光线相互平行,具有方向,可以用一个方向和一个颜色来定义。
      (2)点光源光(point light),类似于人造灯泡的光。点光源光是从一个点向周围的所有方向发出的光,需要指定点光源的位置和颜色。光线的方向将根据点光源的位置和被照射之处的位置计算出来。
      (3)环境光(ambient light),模拟非直射光,也就是由光源发出后经过墙壁或其他物体反射后的光。环境光(间接光)是指那些经光源(点光源或平行光源)发出后,被墙壁等物体多次反射,然后照到物体表面上的光。环境光从各个角度照射物体,其强度都是一致的。环境光不用指定位置和方向,只需指定颜色即可。
      (4)聚光灯光(spot light),模拟电筒、车前灯等。

    1. 反射光的颜色,取决于:入射光(方向、颜色)和物体表面的类型。

    2. 物体表面反射光线的方式:

    (1)漫反射(diffuse relection)
    针对平行光或点光源,漫反射的反射光在各个方向上是均匀的。

    漫反射光颜色 = 入射光颜色 × 表面基底色 × cosa
    cosa = 光线方向 · 法线方向
    漫反射光颜色 = 入射光颜色 × 表面基底色 × (光线方向 · 法线方向)

    (2)环境反射(enviroment/ambient reflection)
    针对环境光,环境反射的反射光的方向可以认为是入射光的反方向。在各个方向均匀。

    环境反射光颜色 = 入射光颜色 × 表面基底色

    注:表面基底色是物体本来的颜色,也就是物体在白光下的颜色
    当漫反射和环境反射同时存在时,将两者加起来,就会得到物体最终被观察到的颜色

    表面的反射光颜色 = 漫反射光颜色 + 环境反射光颜色

    1. 归一化(normalization):将一个矢量的长度调整为1,同时保持方向不变的过程。

    2. 平面的法向量唯一,即平面上的任意一点都具有相同的法向量。

    3. 逆转置矩阵(inverse transpose matrx)
      变换后的法向量 = 法向量 × 模型矩阵的逆转置矩阵

    求逆转置矩阵的两个步骤:
    (1)求原矩阵的逆矩阵 Matrix4.setInverseOf(m)
    (2)将上一部求得的逆矩阵进行转置 Matrix4.transpose()

    相关文章

      网友评论

          本文标题:《WebGL 编程指南》笔记 —— 第八章 光照

          本文链接:https://www.haomeiwen.com/subject/ytapyxtx.html