1.辐射测量学和四个基本量
辐射度学是什么?
本篇博客在理论基础上加入自己的初步理解,致力于形象结束辐射度学相关概念.
如果看完还是觉得不清楚,可以访问个人博客:https://zhaishengfu.github.io查阅辐射度学更细致的介绍.
了解PBR就必须明白辐射度学。辐射度学提供了许多想法和工具来描述光的传播和反射。辐射度学并不是从光的物理特性里面推导来的,而是在空间中流动的粒子中建立的抽象光的概念上建立起来的。可以理解为辐射度学是基于光的粒子特性建立的。光具有波粒二象性,辐射度学并没有考虑波的特性。正因为这样,所以一些波特性带来的效果没有办法用辐射度学的方法描述,例如光的偏振。假定几何光学可以充足描述光和光的散射,那么光就会具有以下特性:
- 线性:光学系统中两个输入的混合效果等价于每个输入的单独效果之和
- 能量守恒:从表面散射的能量不可能大于到达表面的能量
- 没有偏振:光所有特性都有波长分布来决定
- 没有磷光或者荧光:这导致不同波长之间的行为互不干扰。
- 稳定状态:环境中的光假定均到达稳定状态,所以辐射分布不会随时间变化。现实场景中这几乎在一瞬间完成。
采用几何光学模型最大的损失是衍射和干涉现象不能很容易的实现。例如在衍射和干涉中,通过两个区域的整体光通量并不一定等于在每个区域接受到的功率之和。(光通量下面会看到,就是功率的一种)
辐射度学中的基本量
辐射度学有四个基本量对于渲染至关重要:光通量,辐射照度,光强和辐射亮度(个人翻译,对应英文分别是flux, irradiance, intensity, radiance)。不要被这些名词吓坏,实际非常简单。他们都可以从能量关于时间,面积和方向的极限中推导出来。通常来说这四个值都和波长有关。
1.能量
让我们从能量开始。能量中学就学过了,单位是焦耳( J J J)。光源向外发射光子,每个光子都有特定的波长,并携带了一定的能量。所有上面的四个基本量都是有效衡量光子能量的方法。能量和波长的关系是:
Q = h c λ Q=\frac{hc}{\lambda} Q=λhc
其中c是光速,h是普朗克常量。
2.光通量
能量描述的是一段时间内做的功。然后渲染中我们更关心某个时刻内光的特性,也就是功率。光的功率就是光通量,也就是单位时间内通过某个区域的总能量。可以通过对能量进行时间的微分来获取光通量;
Φ = lim Δ t → 0 Δ Q Δ t = d Q d t \Phi ={\lim_{\Delta t \to 0}}\frac{\Delta Q}{\Delta t} = \frac{\mathrm{d}Q}{\mathrm{d}t} Φ=Δt→0limΔtΔQ=dtdQ
光通量的单位是瓦特
W
W
W。
反过来,如果知道了光通量关于时间的函数,我们可以对时间进行积分球的整体能量:
Q = ∫ t 0 t 1 Φ ( t ) d t Q=\int_{t_0}^{t_1}\Phi(t)\mathrm{d}t Q=∫t0t1Φ(t)dt
光源的总辐射一般用光通量来表达。下图中正中间的光源在两个球上面的光通量是一样的。但是经验告诉我们,二者在该光源下表现出来的亮度等特性是不一样的。所以光通量还不足以表达光的足够信息。注意到实际上两个球的面积是不一样的。
3.辐射照度
从上面我们可以看出来我们还需要光的能量关于面积的衡量,这就是辐射照度。辐射照度的定义是:给定有限区域 A A A, 辐射照度 E E E是:
E = Φ A E=\frac{\Phi}{A} E=AΦ
实际有两种辐射照度:一种我们用E表示(注意这个E不是上面的辐射照度), 表示到达表面的辐射照度,可以叫做“辐射入射度”;另一种是离开表面的辐射照度,可以叫做“辐射出射度”(radiant exitance), 用M表示。其他地方可能看到
E
E
E同时用来表示入射度和出射度,但是我们为了清晰分开表达。
再看上图的例子,虽然两个球的辐射通量是一样的,但是外球的辐射入射度E比内球的E要小。如果光源在所有方向均匀照射的话,那么对于半径为
r
r
r的球来说,他的辐射辐射度是:
E = ϕ 4 π r 2 E=\frac{\phi}{4\pi r^2} E=4πr2ϕ
所以辐射照度可以解释为什么外球上的一个点接受到的光的能量更少。并且可以知道这种衰减是正比于和光源之间的距离的平方的。
更一般的,对于某个点p,我们可以通过去p点功率关于面积的微分来定义辐射照度:
E ( p ) = lim Δ A → 0 Δ Φ ( p ) Δ A = d Φ ( p ) d A E(p)={\lim_{\Delta A \to 0}}\frac{\Delta \Phi(p)}{\Delta A} = \frac{\mathrm{d}\Phi(p)}{\mathrm{d}A} E(p)=ΔA→0limΔAΔΦ(p)=dAdΦ(p)
我们同样可以对一定区域的辐射照度进行积分求导光通量;
Φ = ∫ A E ( p ) d A \Phi=\int_{A}E(p)\mathrm{d}A Φ=∫AE(p)dA
理解了辐射照度之后,我们就可以更好的理朗伯定律。朗伯定律说明到达某个表面的光的能量正比于光的方向和表面法向量之间的余弦值
关键一点是:这里是从辐射照度的角度来考虑表面能量,也就是单位面积的功率。如果从能量角度来说,实际上
A
1
A_1
A1和
A
2
A_2
A2的总能量是一样的,总功率也是一样的。但是二者还是展现出来不同的光学现象(想象右图
θ
\theta
θ为
90
°
90\degree
90° ,那么A的光几乎照不到平面上,可以类比凌晨时候的太阳。而左图相当于正午时候的太阳。这种类比并不严谨。另外一个更好的类比是,你可以尝试用手电筒在晚上照射某个区域。当垂直照射的时候,此时照亮的区域少,但是非常明亮;但是当你倾斜角度,例如照射很远的区域,这个时候整体亮度就会很低,但是光覆盖的范围很大。实际上两种情况下所有照亮区域的总光能是一致的,但是由于倾斜手电筒的时候面积更大,导致单位面积内的光的能量降低。)所以这里朗伯定律的描述并不严谨,因为到达整个照亮表面的能量和方向无关,应该描述成:到达某个表面每个点的光的能量正比于光的方向和表面法向量之间的余弦值。实际上也就是辐射照度。具体推导请读者自己推导。
立体角和光强
好了,上面的辐射照度是不是足够用来描述常见的光学现象了呢??并没有。现在把你想象成一个空间中的一个光子大小(想象吃了爱丽丝的缩小饼干变得很小)。这个时候你会发现一些微观光学现象的震撼:光子在不断震动携带能量、在空间中不同介质中间不断发生作用、吸收释放等等。好扯远了,现在把你放在某个观察点观察照到某个面积上的光,很大概率在不同观察点你会观察到不同的的光亮度(也就是各向异性,真正理想的各项同性的表面我觉得现实生活中是不存在的,或多或少都会有各向异性,只是明显程度不同而已。)。另外一个例子是金属表面的高光,会随着你不同观察方向位置发生变化。这一类现象告诉我们,很多光学现象与观察角度有很大关系,即使其他条件完全一样的情况下。为此,辐射度学引入了“立体角”(Solid angle)和光强的概念。
立体角是2D平面的角度在三维球体上面的拓展。下图是二维角度的示意。单位圆上面物体
c
c
c的投影弧长
s
s
s就是弧度,单位是
r
a
d
i
a
n
s
radians
radians
现在考虑以p为中心的单位球,如下图,这个时候某个物体
c
c
c在球上会有一个投影表面积
s
s
s。
s
s
s的面积就是物体
c
c
c的立体角,单位是
s
t
e
r
a
d
i
a
n
s
steradians
steradians。所以很容易就能知道,整个球体的立体教师4
π
\pi
π sr。
考虑单位球上面的任意一点k, 从中心点p到k的单位向量可以用来表述方向,我们用
ω
\omega
ω来表示这个单位方向向量。
现在考虑一个无穷小的光源在散发光子,如果我们将这个光源防止在上面的球中心处,我们可以计算光源某个角度的发射功率,这个量就是光强I,单位是W/sr。整个球体的光强是:
I = Φ 4 π I=\frac{\Phi}{4\pi} I=4πΦ
这计算的是平均,并且假定这个理想光源在所有方向上面都是完全均匀发散的,也就是上面提到的理想各项同性光源。更一般的,取光通量在方向上面的微分可以获取某个方向的光强:
I = lim Δ ω → 0 Δ Φ Δ ω = d Φ d ω I={\lim_{\Delta \omega \to 0}}\frac{\Delta \Phi}{\Delta \omega} = \frac{\mathrm{d}\Phi}{\mathrm{d}\omega} I=Δω→0limΔωΔΦ=dωdΦ
一样的,反向去积分就可以获取光通量:
Φ = ∫ Ω I ( ω ) d ω \Phi=\int_{\Omega}I(\omega)\mathrm{d}\omega Φ=∫ΩI(ω)dω
可以看到,光强和辐射照度二者是没有关系的,是从不同角度对光通量进行描述的。二者均可以与光通量进行微积分操作上的转化。
辐射亮度
终于到了最重要的基本量,辐射亮度 L L L。辐射照度给了p点光通量在面积上的微分,但是并不能区分不同方向的光通量。举个例子,考虑两个手电筒,二者口径不一样。大的手电筒A垂直照射地面B,小的手电筒C倾斜45 ° \degree °照射地面D,通过辐射照度公式我们可以使得B和D的辐射照度完全一样,但是我们选定某个观察方向观察照射平面会有不同光学现象。这种不同有一方面原因就是由于观察方向的不同。辐射亮度衡量的是辐射照度在立体角上的微分,定义是:
L ( p , ω ) = lim Δ ω → 0 Δ E ω ( p ) Δ ω = d E ω ( p ) d ω L(p, \omega)={\lim_{\Delta \omega \to 0}}\frac{\Delta E_{\omega}(p)}{\Delta \omega} = \frac{\mathrm{d}E_{\omega}(p)}{\mathrm{d}\omega} L(p,ω)=Δω→0limΔωΔEω(p)=dωdEω(p)
这里要注意的一点是,
E
ω
E_\omega
Eω表示的是垂直于方向
ω
\omega
ω的表面的辐射照度。如果你还记得上面的朗伯定律,你会发现这种这种垂直的表示抵消了朗伯定律里面的cos
θ
\theta
θ。那么应该如何理解辐射亮度呢??因为确实现实生活中我们观察到的照射亮度是和角度有关系的,也就是郎伯定律是宏观可见的性质,但是如果按照辐射亮度的理解,那么相同光源以不同方向照射平面,平面上某点某方向的辐射亮度是一样的!!那么这个辐射亮度对应的是什么宏观光学现象呢??这里我的理解是未必正确:辐射亮度不是针对宏观现象提出来的量,它本身就是针对微观层面的微分的。考虑照射的表面无穷小,这个时候光源某个方向就成了一个理想的光束,照射的是一个理想的点,那么这个单独点上面的辐射亮度确实是一样的!!但是宏观的亮度确实有不一样,为什么呢?我认为是密度的问题。当垂直照射,由于照射区域紧凑,导致相同区域有更多的光子照射,而倾斜的时候照射表面区域变大,虽然辐射亮度一样,但是到达一定区域的光子的密度更少,也就是光子要照亮的区域更大,所以会变暗。注意这里描述的是“一定区域”,也就是又变成了宏观层面。因为人眼看到的只能是“一定区域”。上面只是我个人猜想。如果错误欢迎指正。
言归正传,辐射亮度当然也可以定义为光通量在垂直面积和立体角上的微分:
L = d Φ d ω d A ⊥ L= \frac{\mathrm{d}\Phi}{\mathrm{d}\omega \mathrm{d}A^\perp} L=dωdA⊥dΦ
好了,到达辐射亮度的级别基本足够用了。当辐射亮度已知后,其他三个辐射度学基本量都可以根据积分公式获取。这也是为什么辐射亮度最经常使用的一个重要原因。另外一个原因就是辐射亮度在真空中光线传输过程中保持恒定。
好了,辐射度学的基本知识讲解完毕。之后我们将讲解辐射度学在这四个基本量上如何描述复杂而真实的光学现象。
上一篇: 辐射算法原理
下一篇: 辐射能、辐照度、辐射亮度
推荐阅读
-
1.辐射测量学和四个基本量
-
什么是数据库事物?为什么需要数据库事物,事物有哪些特征?事物的隔离级别是什么?-1.什么是数据库事务? 1.事务是作为一个逻辑单元执行的一系列操作。一个逻辑工作单元必须具备四个属性,即ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为事务: 原子性 2.事务必须是一个原子工作单元;它的数据修改要么全部执行,要么全部不执行。 一致性 3.事务完成时,所有数据必须保持一致。在相关数据库中,所有规则都必须适用于事务的修改,以保持所有数据的完整性。事务结束时,所有内部数据结构(如 B 树索引或双向链接表)必须正确无误。 隔离 4.并发事务的修改必须与其他并发事务的修改隔离。一个事务会在另一个并发事务修改之前或之后查看某一状态下的数据,而不会查看中间状态下的数据。这就是所谓的可序列化,因为它允许重新加载起始数据和重放一系列事务,从而使数据最终处于与原始事务执行时相同的状态。 持久性 5.事务完成后,它对系统的影响是永久性的。即使在系统发生故障的情况下,修改也会保留。 2. 为什么需要数据库事物,事物有哪些特征? 事物对数据库的作用是对数据进行一系列操作,要么全部成功,要么全部失败,防止出现中间状态,确保数据库中的数据始终处于正确、和谐的状态。 特征:原子性、一致性、隔离性、持久性,以及其他特征 原子性(Atomicity):所有操作在事务开始后,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出现错误时,会回滚到事务开始前的状态,所有操作就像没有发生一样。也就是说,事务是一个不可分割的整体,就像化学中的原子一样,是物质的基本单位。 一致性(Consistency):在事务开始之前和结束之后,数据库的完整性约束都没有被破坏。例如,如果 A 转钱给 B,A 不可能扣除这笔钱,但 B 却没有收到这笔钱。 隔离:在同一时间内,只允许一个事务请求相同的数据,不同事务之间没有干扰。例如,甲正在从一张银行卡上取款,在甲取款过程结束之前,乙不能向这张卡转账。 持久性(耐用性):事务完成后,事务对数据库的所有更新都将保存到数据库中,无法回滚 3.事务的隔离级别有哪些? 数据库事务有四种隔离级别,从低到高分别是未提交读取(Read uncommitted)、已提交读取(Read committed)、可重复读取(Repeatable read)、可序列化(Serializable)。此外,事务的并发操作中可能会出现脏读、不可重复读、幽灵读等情况。事务并发问题 脏读:事务 A 读取事务 B 更新的数据,然后事务 B 回滚操作,那么事务 A 读取的数据就是脏数据。 不可重复读取:事务 A 多次读取同一数据,事务 B 在事务 A 多次读取期间更新并提交数据,导致事务 A 多次读取同一数据时结果不一致。 幻影读取:系统管理员 A 将数据库中所有学生的具体分数改为 ABCDE 等级,但系统管理员 B 在此时插入了具体分数的记录,当系统管理员 A 更改结束后发现仍有一条记录未被更改,仿佛发生了幻觉,这称为幻影读取。 小结:不可重复读和幻读容易混淆,不可重复读侧重于修改,幻读侧重于增删。解决不可重复读问题只需锁定满足条件的行,解决幻读问题则需要锁定表 MySQL 事务隔离级别