1. 前提知识
在讲解光照模型之前,我们先来回顾光学的零碎简单的常识。
1、几种常见光源:
- 环境光:没有位置的概念,由光线经过周围环境表面多次反射后形成的。
- 太阳光:定向光源,在无穷远出发射光线,光线是平行的,强度不会随着距离衰减。
- 点光源:在有限空间内某个点上发出的光线,光线强度会随着距离衰减。
- 聚光灯:一种具有锥形效果的光源,该光源拥有产生光的方向和角度,有主照射方向,光线强度会随着距离,延着中心向外衰减(例如手电筒,舞台灯)。
2、阴影
- 软阴影:阴影边界柔和,渐变,没有锯齿,常见而又普通。
- 硬阴影:边界锐利,通常出现在在和物体的交替处或者是光打下来离物体比较近的地方。
3、两种基本反射
- 漫反射:入射光与物体表面法向量的夹角越小则越亮。
- 镜面反射:反射光与视线方向的夹角越小则越亮。
4、散射和吸收
光线射到物体表面后,只有两种结果:散射(scattering)和吸收(absorption)。
- 散射:包括内部散射和外部散射。
- 内部散射:折射(refraction)和投射(transmission)。
- 外部散射:反射(reflection),主要是漫反射和镜面反射。
- 吸收:物体吸收光的能量,导致光能的衰减。
5、各向同性(isotropic)与各向异性(anisotropic)
- 各向同性:在固定光源方向和视角仅旋转物体的表面的情况下,反射不会发生改变。
- 各向异性:在固定光源方向和视角仅旋转物体的表面的情况下,反射发生改变。
6、直接光照(DirectLight)和间接光照(IndirectLight)
- 直接光照:是光源直接照射上去的光,例如太阳光。
- 间接光照:是一次或者多次反射后的光,例如月光。
2. 光照模型
光照模型是描述光照射到物体上发生散射、吸收等光学现象,并进入人视觉系统(或视觉传感器)的模型。
其中,我们在渲染中常常提到的着色(shading) 就是指根据材质信息、光源信息,用特定的光学模型去计算沿某个观察方向的出射度的过程。
我们先来介绍两个最基础的光学模型。
2.1 基础光学模型
2.1.1 Phong 光学模型
冯氏光照模型(Phong)的主要结构由3个元素组成:
- 环境光
- 漫反射
- 镜面光照
2.1.2 Blinn-Phong 光学模型
在Phong 光照算法中,镜面反射是采用入射光与物体表面法向量的夹角来建模的,如下图所示。这种方式存在一个问题,就是在计算机计算中,会出现夹角大于90°的情况,但这种情况在物理上往往是不存在的,例如人在地面下观察的情况。
Blinn-Phong模型是Phong模型的拓展,与Phong模型非常相似,只是对镜面光模型的处理上有一些不同,它不再依赖于反射向量,而是采用了所谓的半程向量(Halfway Vector),即光线与视线夹角一半方向上的一个单位向量,当半程向量与法线向量越接近,镜面光分量就越大,如下图所示。这样就保证了不论观察者向哪个方向看,半程向量与表面法线之间的夹角都不会超过90度。
2.2 BRDF 模型
BRDF 就是光照模型中,用于描述计算当光线从某个方向照射到一个表面时,反射的光强和方向的,其中 BRDF 全称为双向反射分布函数(Bidirectional Reflectance Distribution Function),在图形学中大多使用一个数学公式来表示,并且提供了一些参数来调整材质属性,之前提到的 Phong 光照和 Blinn-Phong 光照就是两个最基础的 BRDF。
光学模型总体可以分为两种:
- 经验模型:不符合实际,但易于计算,前面提到的Phong模型及其扩展都是基于经验的模型,这种模型无法表示很多重要的物理现象,比如菲涅尔反射。
- 物理模型:基于物理的光照(PBR),接近真实。