2.3 光照
2.3.1 环境光
环境光通常不是来自单个光源,而是来自散落在我们周围的许多光源,即使它们不是立即可见的。光的一个特性是它可以在许多方向上散射和反射,到达不在其附近的斑点; 因此,光可以在其他表面上反射并且对物体的照明具有间接影响。
2.3.2 漫反射光
环境照明本身并不会产生最有趣的结果,但漫射照明将开始对物体产生显着的视觉影响。漫射照明使得物体越靠近其光线与光源对准的光线就越亮。为了让您更好地了解漫反射照明,请查看以下图像:
在左边,我们找到了一个光源,其光线照射在我们物体的一个片段上。然后,我们需要测量光线接触片段的角度。如果光线垂直于物体表面,则光线影响最大。
2.3.3 镜面光
就像漫反射光一样,镜面反射是基于光的方向向量和对象的法向向量,但这次它也是基于视图方向,例如从玩家看片段的方向。镜面照明基于光的反射特性。如果我们将物体的表面看作镜子,那么无论我们在哪里看到光线反射在表面上,镜面光都是最强的。您可以在下图中看到此效果:
我们通过反射法线向量周围的光方向来计算反射向量。然后我们计算这个反射矢量和视角方向之间的角距离,它们之间的角度越近,镜面反射光的影响就越大。由此产生的效果是,当我们观察通过物体反射的光线方向时,我们会看到一些高光。
2.3.4 灯光的重要性
- 照明和阴影是使图形图像看起来更逼真,更易理解的重要工具
- 提供关于曲面的曲率和方向的关键视觉提示
- 使图形图像中的三维性显而易见
点亮和未点亮的球体
茶壶的例子
(a)线框茶壶
(b)用纯色绘制但没有照明或阴影的茶壶
(c)仅具有环境光和漫射光的平面阴影
(d)仅具有环境和漫反射的Gouraud插值
(e)具有环境光,漫反射和高光照明的平面阴影
(f)具有环境光,漫反射和高光照明的Gouraud阴影
2.3.5 VTK灯光
vtkLight是用于3D渲染的虚拟灯。它提供了定位和指向灯光,打开和关闭灯光以及设置亮度和颜色的方法。除了基本的无限远点光源属性外,还可以指定光衰减值和锥角。仅当光是位置光时才使用这些属性。默认为定向光(例如无限远光源)。
灯具有描述灯光相对于相机如何移动的类型。前照灯始终位于当前摄像机位置,并照亮相机的焦点。CameraLight也随相机一起移动,但可能与它不一致。CameraLights在标准化坐标空间中定义,其中摄像机位于(0,0,1),摄像机正在查看(0,0,0),并且向上是(0,1,0)。最后,SceneLight是场景本身的一部分,不随相机移动。(渲染器负责根据其类型移动灯光。)
灯具有一个转换矩阵,用于描述它们所处的空间。光的世界空间位置和焦点由它们的局部位置和焦点定义,由它们的变换矩阵(如果存在)变换。后面的章节将会详细讲解vtkLight类及其各个接口的作用。