Loading... # Lec 14 ~ 16 Physicaly Based Rendering ## 0. 辐射度量学 Radiometry 为了正确描述光照的属性,需要引入辐射度量学 **辐射度量学**(Radiometry)是一个用于衡量光照的系统和单位,它能够准确的描述光线的物理性质,在物理上更准确地进行光照计算。 ### 0.1 辐射能量和通量 **辐射能量**(Radiant Energy): ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211102114104195.png?x-oss-process=image/resize,p_40) 辐射出来的电磁能量,单位为焦耳。 **辐射通量**(Radiant Flux): ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211102114131760.png?x-oss-process=image/resize,p_40) $$ \Phi \equiv \frac{\mathrm{d} Q}{\mathrm{d} t}\ [\rm{~W}=\mathrm{Watt}\ ]\ [\ \rm{lm}=\rm { lumen }\ ]^{*} $$ 辐射通量或者说**辐射功率**,其实就是在辐射能量的基础之上除以单位时间,也就是单位时间的能量。同样也可以用物理当中的功率来进行类比。**一般用辐射通量来衡量光照的强度**。 ### 0.2 辐射强度 **辐射强度**(Radiant Intensity)是每单位**立体角**上的功率 ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211102114218426.png?x-oss-process=image/resize,p_50) **立体角**(solid angle)是二维角度在三维上的拓展。 单位立体角定义如下: ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211102115412667.png?x-oss-process=image/resize,p_20) 立体角的定义: 将物体投影到以观测点为中心的**单位球面**(半径为1)上,其投影面积的量值即为物体对于观测点的立体角的大小。 因此,立体角是单位球面上的一块面积,这和 “平面角是单位圆上的一段弧长” 类似。 单位立体角即为一个点在单位球面上的投影 ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211108143413455.png?x-oss-process=image/resize,p_30) 立体角的国际制单位是球面度(steradian,sr)。立体角有一个非国际制单位 平方度,1*sr* = (180/π) *square degree* **一个球,所有封闭曲面,有**$4\pi$**的立体角**。 ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211102114946144.png?x-oss-process=image/resize,p_30) ### 0.3 辐照度 **辐照度**(Irradiance)是指 每单位照射面积的功率。 ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/20211103012047.png?x-oss-process=image/resize,p_50) 当然这里指的是垂直照射的功率。如果不是垂直,那么就需要进行一个投影(乘以入射向量与表面法向量夹角的余弦$\cos{\theta}$)。可以根据如下面积变化解释: 如下图所示,同样的面积 $A$ 照射过来的光,那么直立照射在表面上的面积是$A_1=A$,以偏离法向量 $\theta$ 角度斜着照射则是$A / \cos{\theta}$ 那么: $$ E_2 = \Phi / A2 = \frac{\Phi×\cos{\theta} }{A} = \Phi/A_1 ×\cos{\theta} = E_1 × \cos{\theta} $$ ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/20211103012243.png?x-oss-process=image/resize,p_70) 回想在Blinn-Phong模型中,我们提到的**Lambert定律**:`漫反射能量 = 光线能量 × cosθ `, 这便可以用上述辐照度来解释。 同时,光照能量随着距离平方衰减的规律也可以得到解释: 光源的**功率保持不变**,向四周均匀辐射。所以对于一个**完整的**球壳上的任意一点,其辐照度为$E'=\Phi/A=\Phi/4\pi r^2$ ,显然是以 $r^2$ 的量级缩小的。 此外,对球壳上的表面进行辐照度的定积分可得球壳上辐照度总和为:$E=\Phi/4\pi$,是一个恒定不变的值,与球壳半径无关。所以$E'=E/r^2$ ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/20211103013744.png?x-oss-process=image/resize,p_30) - 注:从这两例可以看出,之所以光线的能量在衰减,与所说的 **“强度”**(intensity) 其实无关,本质上是**辐照度**(irradiance)在衰减。 ### 0.4 辐射率 **辐射率**(radiance) 定义为**每单位立体角、每单位垂直面积的功率**,很像是Intensity和irradiance的结合。它同时指定了**光的方向**与**照射到的表面所接受到的亮度**,所以这个是最常用的。 ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211103181056403.png?x-oss-process=image/resize,p_35) - 注意**辐射率**相比较于**辐照度(irradiance)** 的一个区别, 指定是**垂直方向**上的面积,所以可以看到公式分母是 $\cos{\theta}$,自带一个余弦。这样也方便描述**光线本身的方向和能量**,不会因为照射面积的法线不同而发生变化 同时,辐射率与辐照度可以通过积分联系起来: ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211104160639516.png?x-oss-process=image/resize,p_38) 根据辐照度的公式与辐射率的公式,可以得到下图的第一个公式。 两边同时对立体角 $\rm{d}\omega$ 积分,可以得到 辐照度 $E$ 与辐射率 $L$ 的关系。其含义就是:将p点这一单位面积上的来自各种不同方向(立体角)的光照功率进行累加 *(形如下图右上角)*,得到:p点这一单位面积所接收到的所有光照功率,即为**辐照度**的定义。 ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211104155340134.png?x-oss-process=image/resize,p_38) ## 1. 双向反射分布函数 BRDF 了解了上述辐射学概念,我们可以这样理解反射:来自某一个方向的一个光线照射到物体表面上一单位面积点,能量 *(辐照度 irradiance)* 被表面**吸收**了,接着表面再将这能量以光线的形式 *(辐射率 radience)* 向着不同方向发射出去。 ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211104164342850.png?x-oss-process=image/resize,p_40) ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211104170549724.png?x-oss-process=image/resize,p_38) 描述这样一个 *从不同方向入射之后,反射光线分布情况* 的函数就是 **双向反射分布函数 (Bidirectional Reflectance Distribution Function)** ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211104171201303.png?x-oss-process=image/resize,p_45) 对于一个出射方向,我们可以将每一个入射方向 $\omega_{i}$的情况加起来,即可得到这个入射方向接收到的真实的光照。这便是 **反射方程**。其中积分的范围是一个半圆球面($H^2$),并不考虑表面下传来的光线 ![反射方程](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211104182108013.png?x-oss-process=image/resize,p_35) 当然,就像Whitted风格的光线追踪一样,一个光线可能不止弹射了一次,仍需要考虑递归的间接光照。这里暂时不做讨论。 ## 2. 渲染方程 我们需要考虑物体自发光的情况,所以在反射方程中添加了一个自发光项(Emission term),就得到了 **渲染方程** : ![渲染方程](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211104183752386.png) 这里需要注意:$\cos{\theta}$ 用 $n·\omega_{i}$ 代替。 同时,所有的出射光线都是朝向外的 - 以**单点光源**为例: 只有一个入射光线,所以没必要积分 ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211105110704682.png?x-oss-process=image/resize,p_42) - 以**多点光源**为例 将多个点光源累加即可 ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211105111441784.png?x-oss-process=image/resize,p_42) - **范围光照** 相当于无穷多个点光源的集合,只需要对 面光源所在的立体角范围进行积分,并且能够确定不同立体角方向的面光源的入射光辐射率radiance即可 ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211105112613511.png?x-oss-process=image/resize,p_42) - **存在其他物体交互的情况** 把物体反射出的光线也当做一个光源即可,不需做多余的修正 ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211105113656103.png?x-oss-process=image/resize,p_40) <br> <br> <br> 我们可以将渲染方程进行简写: ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211105114459403.png?x-oss-process=image/resize,p_38) 其中各项与原渲染方程中一一对应,(这里其实有数学严格推导,不过我们暂时不必在意这些推导)可以把该式子离散化写为线性代数的形式: ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211105114537832.png?x-oss-process=image/resize,p_38) 其中$L、E$是向量,$K$是光线变换矩阵。等式左右都包含 $L$,将其移到一边,可得: ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211105120831585.png?x-oss-process=image/resize,p_38) 其中 $I$ 为单位矩阵,再接着对 $(I-K)^{-1}$ 使用广义二项式定理得到: ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211105144124266.png?x-oss-process=image/resize,p_38) 其中,$E$ 对应表面自发光, $KE$ 对应直接光照,$K^2E$对应一次弹射过来的光照,$K^3 E$对应两次弹射过来的光照,以此类推。其中前两项之和就是光栅化当中着色所考虑的 ![](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211105144557426.png?x-oss-process=image/resize,p_48) ![不同弹射次数限制所呈现的场景](https://irimskyblog.oss-cn-beijing.aliyuncs.com/content/image-20211105151348948.png) 如上图所示,弹射次数越多,场景就越趋于真实,当然变化也就越小,越趋近收敛 注意一下图中上方的灯,在两次以下的弹射时,灯内是黑的;而从三次弹射开始,就变成透明的了。这是因为穿过两层透明的玻璃肯定至少需要2次的折射才能看到玻璃后的场景。 最后修改:2021 年 11 月 21 日 12 : 55 AM © 允许规范转载