灯光
AmbientLight
环境光,没有方向,无法产生阴影。
环境光其实就是简单地给物体添加颜色,公式为:
// 这里的颜色计算是 RBG 通道上的值分别对应相乘
// 例: rgb(0.64,0.64,0.64) = rgb(0.8,0.8,0.8) * rgb(0.8,0.8,0.8) * 1
color = materialColor * light.color * light.intensity;
环境光作用不是那么大,它主要是让物体看起来不那么黑。
HemisphereLight
半球光,有两个方向的光源,一个从天空照射下来,一个从地面照射上来。
物体的法线朝上则会接受天空的光源,朝下则会接受地面的光源,其他方向会使用这两者的渐变。
半球光可以作为环境光的替代。
DirectionalLight
常用来模拟阳光。
DirectionalLight
一般会设置 position
属性和 target.position
属性,来确定光源的方向。
可以把 DirectionalLight
看做一条线,position
和 target.position
是这条线的两端。
通过设置这两端的位置,可以确定光源的方向。
PointLight
点光源,从一个点向四周发射光线。
可以看做成 DirectionalLight
的升级版,DirectionalLight
是从一点到另一个点,而 PointLight
是从一个点到其他所有点。
SpotLight
聚光灯,从一个点向一个方向发射光线,像手电筒一样。
聚光灯实际上有 2 个锥形,一个内锥形,一个外锥形:
内锥形是聚光灯的实际照射范围,外锥形是聚光灯的照射范围的边缘。
penumbra
定义了内锥形和外锥形之间的过渡区域。
RectAreaLight
矩形区域光,类似于家里天花板上的长条形日光灯。