Webgl 光照的理解

一个物体最终呈现给人的是什么效果取决于一下几个方面:

1、入射光的方向及颜色,其中颜色包含了光照的强度信息

2、物体表面固有的颜色以及物体反射光的特性。

一、光照对物体的影响:

1、根据光源和光线的方向,物体表面的明暗程度是不一样的

2、物体会产生阴影

Webgl 光照的理解 

光源的类型:分为平行光、点光源光、环境光。图更直接。

Webgl 光照的理解 

其中:

平行光用一个统一方向和颜色来定义,物体不同位置,光线方向相同。

点光源光用方向和颜色定义,但其方向得根据光源位置和物体位置来计算,物体不同位置,光线方向不同。 

环境光只需定义颜色即可。

注:上面提到的颜色包含了光照强度信息。

只知道光源的相关信息还不行,还得知道反射的相关信息,这样才能更好的计算出物体各个位置的最终效果。

二、反射的类型:

1、漫反射:反射光在各个方向上都是均匀的,这是针对大多数表面粗糙的材质的。

Webgl 光照的理解

反射光颜色的计算公式:

Webgl 光照的理解

2、环境反射:环境反射是针对环境光才会产生的。默认以什么角度射入就以什么角度反射出去。

Webgl 光照的理解

当两种颜色同时存在时,物体最终的颜色就是两者相加:

Webgl 光照的理解 

 

三、以下列举以下几种不同光源、不同反射类型的效果:

1、平行光下的漫反射

计算公式如上:Webgl 光照的理解

其中入射光的颜色及表面基底色均为rgb格式的颜色,故可直接相乘。

Webgl 光照的理解

针对大多数情况下我们是不可能知道那个入射角度的,所以我们一般根据表面法线和入射光线构成的向量来计算出角度。单位向量的点乘:

Webgl 光照的理解 此公式中的光线方向和发现方向均为单位向量。

故上面的计算公式为:

Webgl 光照的理解

以上讲的都是静止物体的光照效果及相关计算方法。后面会计算移动物体的光照效果。