参考课程:
https://www.bilibili.com/video/BV1X7411F744?p=15
一、Irradiance
1.Irradiance 定义
在单位时间内,每个单位面积上接受到的光照的能量。即power per unit area。
做一下对比,之前的Radiant Intensity是 power per unit solid angle
image.png
注:这个单位面积必须要和光线垂直,如果不垂直的话要把面积投影到垂直的方向上(图中没有写cos,暂时就一个dA)
类似之前的Biling - Phong里的内容
- 左图:单位面积和光线垂直,所以直接用Irradiance的计算式即可
- 中图:面积与光线不垂直,其投影只能接受到三根、一半的光线,所以要×1/2
- 右图:更普遍的情况,当单位面积与光线不垂直时,要×cos将其投影到垂直的方向上去。
上面的Lambert’s余弦定理就解释了地球为什么会出现四季变换:当北半球是夏天时,太阳光直射北半球,北半球的Irradiance更多,也就更热;而当北半球是冬天时,光线与地球的表面有一定的夹角,Irradiance减少,所以冬天就更冷。(如上图地球中黑色虚线处)
image.png
2.衰减
之前提到过,我们是假设能量集中在一个球壳上,随着球壳的增大,光的强度会有一个r平方的衰减;现在可以用Irradiance正确解释:
在最内部的单位球上, Irradiance(E) = φ/4π,单位面积上接受到的能量就是 φ/4π,
而在外部的球面上, Irradiance(E’) = φ/4πr^2,在单位面积上接受到的能量就是 φ/4πr^ ,所以就是r平方的衰减。
所以就可以知道,在这里衰减的并不是Radiant Intensity(往外走,单位立体角不会变),而Irradiance在衰减(往外走,面积越来越大)。或者不叫衰减,而是分布得更分散了。
如果从球心以一个立体角画一个锥形,就可以知道,随着球面越来越大,立体角的大小是不变的,而立体角对应单位面积的大小却越来越大,所以球面越大时,dA越大,Irradiance也就会越小。
image.png
二、Radiance
Radiance是描述环境中光的分布的基本场量(fundamental field quantity),它主要用来准确描述光线的一些属性。准确的光线追踪与radiance关系非常大,渲染就是在计算radiance。
1.定义
The radiance (luminance) is the power emitted, reflected, transmitted or received by a surface, per unit solid angle, per projected unit area.
定义:Radiant Flux(Power) 它在每个单位立体角、每个投影的面上有多少。也就是,某个单位面,往某个单位立体角方向上的发出的能量。
相当于进行了两次微分:
image.png
上图中的单位,闫老师没有仔细解释,但是对帮助理解概念是十分有用的。这里我来通过单位的角度,总结一下前面的概念。
2.单位
以单位的视角,先来从头回顾一下概念:
- energy:辐射能量,单位焦耳
- flux(power) :单位时间内辐射的能量,单位流明
- 立体角:三维尺度上角的大小。一个立体角张得越大,它在球面上的投影面积越大。
- intensity: 强度,单位时间内,单位立体角上辐射的能量。Power/4π
- Irradiance:对比理解,intensity是单位立体角上辐射的能量,Irradiance则是单位面积辐射的能量。
单位是流明除以平方米,lm/m^2=lux(拉克斯)。
注意这个面积必须和光线垂直,不垂直需要先投影。 - Radiance:缝合怪,综合了intensity和Irradiance,即单位立体角和单位面积上辐射的能量。
上面讲到强度时,闫老师同样没有解释单位,虽然课件的图上其实是有写的:
image.png
那么单位中的sr是啥呢,其实就是立体角的单位,叫球面度。百度百科中就有:
https://baike.baidu.com/item/%E7%90%83%E9%9D%A2%E5%BA%A6/4256270
而candela百度百科也有解释:
https://baike.baidu.com/item/%E5%9D%8E%E5%BE%B7%E6%8B%89/5471?fr=aladdin
坎德拉(candela)是发光强度的单位,国际单位制(SI)的7个基本单位之一。简称“坎”,符号cd。1cd是指光源在指定方向的单位立体角内发出的光通量。光源辐射是均匀时,则光强为I=F/Ω,Ω为立体角,单位为球面度(sr),F为光通量,单位是流明,对于点光源由I=F/4π 。光亮度是表示发光面明亮程度的,指发光表面在指定方向的发光强度与垂直且指定方向的发光面的面积之比,单位是坎德拉/平方米。对于一个漫散射面,尽管各个方向的光强和光通量不同,但各个方向的亮度都是相等的。电视机的荧光屏就是近似于这样的漫散射面,所以从各个方向上观看图像,都有相同的亮度感。
其实上面的百度百科,顺便就提到了光亮度的单位,即坎德拉/平方米,这个正是nit(尼特)。
参考https://baike.baidu.com/item/nit/9074153
nit (亮度单位尼特)1nit=1坎德拉/平方米(cd/m2)。
最后,再补充一下lx的百度百科:
https://baike.baidu.com/item/%E5%85%89%E7%85%A7%E5%BA%A6/2651022?fr=aladdin
光照度,可简称照度,其计量单位的名称为“勒克斯”,简称“勒”,单位符号为“lx”,表示被摄主体表面单位面积上受到的光通量。1勒克斯等于1流明/平方米,即被摄主体每平方米的面积上,受距离一米、发光强度为1坎德垃的光源,垂直照射的光通量。光照度是衡量拍摄环境的一个重要指标。
现在,参考百度百科,把所有的概念翻译一下,并且补上单位来理解:
- energy:辐射能量,单位焦耳
- flux(power) :单位时间内辐射的能量,单位lm流明
- 立体角:三维尺度上角的大小。一个立体角张得越大,它在球面上的投影面积越大。单位sr球面度。
- intensity: 翻译为光强度,单位时间内,单位立体角上辐射的能量。Power/4π。单位candela坎德拉。
- Irradiance:对比理解,intensity是单位立体角上辐射的能量,Irradiance则是单位面积辐射的能量。
单位是流明除以平方米,lm/m^2=lux(勒克斯)。
注意这个面积必须和光线垂直,不垂直需要先投影。
翻译为光照度。 - Radiance:缝合怪,综合了intensity和Irradiance,即单位立体角和单位面积上辐射的能量。单位nit尼特。
翻译为光亮度。
2.Radiance&Irradiance&Intensity之间的联系与区别
image.png这里按照二次微分的思想就得到以下结论:
- Radiance : Irradiance per solid angle(先单位面积,再单位立体角)
- Radiance : Intensity per projected unit area(先单位立体角,再单位面积)
上面的两条结论,也可以这样理解:
- 按照放射能量(Radiance)的解释(先单位面积,再单位立体角):Radiance表示 单位面积dA 把它接受到的能量 朝w的方向辐射出的能量。
- 反过来按照收到能量(Irradiance)的解释(先单位立体角,再单位面积):从w方向发射来的Radiance 到单位面积dA上 ,所有方向累计,单位面积dA一共接受得到的能量即 Irradiance。也就是 Irradiance 在w这个方向上的分量,就是Radiance。
视频剩下的部分,又仔细讲了两者的区别。经过上面从单位角度理解概念,听起来应该不成问题,这里仅仅把闫老师最后的结论放一下:
- Radiance是某个单位面向某个单位立体角辐射出去的能量
- Irradiance是某个单位面积上接受到来自四面八方的能量
- 把半球面上的所有Radiance积分起来得到的就是Irradiance
三、双向反射分布函数 Bidirectional ReflectanceDistribution Function,BRDF
根据上面Radiance和Irradiance的关系,来重新理解一下反射的概念。
我们之前说反射:如果从一个地方发出光线打到一个镜子,然后光线会反射到另一个方向去;如果打到漫反射物体,那么往四面八方都会去。我们需要有一个函数来描述这种性质:从某个方向进来,并且反射到某个方向去的能量是多少。
反射在我们之前的理解中,是一道光线到达一个表面,然后反射到其他的方向去。这个过程其实也可以看作是从某一个方向来的光线,到达物体表面后,被物体表面所吸收,然后再由物体表面发射到其他方向去。这也就是用到了Radiance和Irradiance来解释反射。
现在来看个例子
image.png
如上图,从wi来的光线,打到单位面积dA上,会在这里转化成能量,也就是power,表示为dE(wi):
image.png
现在问题就是,我们知道反射点要吸收来自某一个方向的Radiance的能量,把它变Irradiance,之后要反射到四面八方的立体角Radiance上。但是我们不知道反射到某个具体方向(wr)的Radiance会有多少能量。
所以我们就为此定义一个函数,专门来描述这样的一个概念:考虑一个微小的面积dA,从某一个微小的立体角dwi上接受到的Irradiance,会如何被分配到各个立体角上。这里其实求得就是一个比例,是什么比例?
这个比例是:
(对于任何一个立体角上发出去的 Radiance) / (单位面积 dA接收到的Irradiance)。
这就是BRDF的定义,它会告诉我们如何把表面上收集到的能量以某一种比例反射到其他的方向上去。
BRDF能表示从每个入射方向收集到的能量以某种比例反射到每个出射方向上的能量。即某个光线打到物体表面后,往不同方向反射的能量分布。
如果说是镜面反射,那么只有反射方向上会有能量,其他所有方向上都没有能量;如果是漫反射,这个进来的能量会被均等的分布到各个方向上。
忽略推导部分,其实BRDF就是描述了物体和光线之间的相互作用。正是由于BRDF的这种概念,决定了物体不同的材质到底是怎么一回事,也就是BRDF定义了材质。
这里参考一下弹幕:
- 光滑表面的BRDF,光线分布就很均匀;凹凸不平的则反过来。
- 镜面反射,可以当作漫反射的特例。
1.反射到渲染->反射方程
从上面的分析可以得到, 某个角度入射的能量 最后反射到某个方向上的能量。而在反射的过程,我们并不是只对单一的,来自某一个方向的能量进行反射,而是要将来自四面八方的能量都收集起来,然后反射到某一个角度上。
所以要得到最终的反射效果,应该是:通过BRDF计算出:每个方向接受的能量 它反射到wr方向上的能量是多少。然后把这些能量全部累加起来,得到的就是wr方向上反射的能量,可以用积分表示(H的平方表示的积分面积为整个半球面,下面的整个表达式就是反射方程)
在考虑反射方程的时候,我们还要注意到:反射点接受的能量(Irradiance)并不只是来自于光源,还会来自别的表面反射来的光(Irradiance)。从反射点反射出去的能量(Radiance)也并不只会反射到Camera或者人眼,还会作为Irradiance反射到其他的面上。所以反射方程的定义就成了一个递归的定义,也因此,光线反射的次数不同,得到的最终效果也就不会不同。但是我们目前先不考虑这些,把递归的思考先放在这里,做一个通用化。
2.渲染方程
渲染方程与反射方程相比,渲染方程只是多加了一个自己发光的能量。因为我们在考虑物体表面对光进行反射的时候,没有考虑物体自己发光的情况,所以渲染方程就加上了物体自身发光的能量。
渲染效果 = 反射光 + 自身 发光,渲染方程如下:
(我们假设所有方向都是朝外的)
image.png
3. Understanding the rendering equation
我们首先从反射方程来看,假设有一个点光源。它的反射光=自发光+入射光×BRDF×入射光与法线的夹角
image.png
如果有很多点光源,那么自然就是累加,把每一个点光源的照亮这个点的能量加起来。如果有面光源怎么办?面光源我们理解成点光源的集合,也就是进行积分。
image.png
但是如果不只是光源,还有其他物体的反射来的光,我们就把其他物体的反射面当成光源。也可以说是从这一点往某个方向辐射出去的Radiance也是依赖着其他的点辐射出来的Radiance,也就是递归过程。
image.png
4.全局光照 Global illumination
我们对方程进行简写,把 位置+角度 这两个变量用一个概括,变成u以及v,写成了积分的式子
image.png
继续把方程写成算子的形式
image.png
利用算子的运算性质(求逆以及泰勒展开)来解方程,解出L
image.png
于是渲染方程被拆解成以光的弹射次数为区分的很多项。把光线弹射的次数的项都加起来,也就是得到了全局光照
image.png
用渲染方程来理解光栅化,光栅化做的只有自发光以及直接光照
image.png
上面这一堆公式,就懵逼状态看完的……
网友评论