基于BRDF的光照模型

知识预备


光亮度是物体表面某方向单位投影区域单位立体角的光流量
沿着某条光线的光亮度是常数,但光通量随距离增大而衰减(实际是二次衰减,但在计算机图形学中采用线性衰减效果比较好)

光强度是单位立体角的辐射能量
辐射度是单位面积流出的光通量
辐照度是单位面积流入的光通量

它们的关系:
光强度=光亮度*单位面积*入射角余弦
辐照度=光亮度*入射角余弦*单位立体角
辐射度=光亮度*入射角余弦*单位立体角(但方向不同)


BRDF(Bi-directional Reflection Distribution Function)的含义


光和物体相交,会产生三种情况产生,反射,被吸收,折射, 即是

light incident at surface = light reflected + light absorbed + light transmitted

对于理想固体来说,折射不会产生,就只剩下前两项。

BRDF就是用于描述光与物体相交,光是如何反射的。

BRDF通常用一个数学表达式来表示,来看下它和哪些变量有关。

首先是光的波长 λ ,不同的光产生的反射不同。

其次对于物体的材质,如果不是均一分布的话,BRDF也不同,记材质坐标为u,v。

最后,还和入射光线与出射光线的角度有关。这里角度用球坐标来表示,分别记为


则有:


已知上面的变量,就可以求出BRDF了


在实际计算中, λ ,u,v通常省略,这样参数就只剩下四个,最后计算的结果是一个三维向量,表示颜色的RGB。



笛卡尔坐标和球坐标的转换



假设向量是经过单位化的



Differential Solid Angles

对于描述光的出射和入射,通常并不是简单的一个光想来表示,比较适合的是用"光量"来表示。

对于一个单位圆,Differential Solid Angles的计算如下


在一个单位圆中,球坐标为θ和Φ,dw为Differential Solid Angles



最后求出的值的单位是弧度的平方,也称为steradians。


BRDF的定义

BRDF规定的是辐照度和光亮度的关系:
对于入射Differential Solid Angles 和出射的Differential Solid Angles ,BRDF就是上的光量比上上的射出的光子总量。



BRDF = 出射辐照度 / 入射光亮度



入射光亮度转换成辐照度,得到


BRDF值只和材质有关,与入射光线无关。


两种类型两个性质

有两种类型的BRDF,isotropic和anisotropic。左边是isotropic,右边是anisotropic。



在真实世界中,大部分的材质都是偏向于各向同性加上一点点的各向异性。


基于物理的BRDF的需要遵循两个性质:reciprocity 和 conservation of energy

reciprocity 指的是交换性,出射角和入射角互换,BRDF不变,即:



conservation of energy指所有出射光的量的总和小于入射光的总和。数学表达式如下

用半球面积分如下



光照方程

在有多个光源的情况下,光照方程如下


在只有一个光源的情况下,光照方程如下


连续的描述如下



获取BRDF

有三种方法,一种是基于经验公式来获得,比如Lambert和Phong,另一种是基于物理的数值分析模型,它们的形式就是一个数值函数,另一种是Data-Driven的方式,通过实验的方式获取,通过一些光照采集设备。这种方式得到的结果通常是一张表示BRDF的图片。实验的方式如下图。





常用的BRDF特征如下



参考

An Introduction to BRDF-Based Lighting 

Bidirectional reflectance distribution function Wiki

Physically Based Shading in Theory and Practice
知乎 - 如何正确理解 BRDF (双向反射分布函数)


你可能感兴趣的:(计算机图形学)