1.辐射度学以及四个基本量
辐射度学是什么?
本篇博客在理论基础上加入自己的初步理解,致力于形象结束辐射度学相关概念.
如果看完还是觉得不清楚,可以访问个人博客:https://zhaishengfu.github.io查阅辐射度学更细致的介绍.
了解PBR就必须明白辐射度学。辐射度学提供了许多想法和工具来描述光的传播和反射。辐射度学并不是从光的物理特性里面推导来的,而是在空间中流动的粒子中建立的抽象光的概念上建立起来的。可以理解为辐射度学是基于光的粒子特性建立的。光具有波粒二象性,辐射度学并没有考虑波的特性。正因为这样,所以一些波特性带来的效果没有办法用辐射度学的方法描述,例如光的偏振。假定几何光学可以充足描述光和光的散射,那么光就会具有以下特性:
- 线性:光学系统中两个输入的混合效果等价于每个输入的单独效果之和
- 能量守恒:从表面散射的能量不可能大于到达表面的能量
- 没有偏振:光所有特性都有波长分布来决定
- 没有磷光或者荧光:这导致不同波长之间的行为互不干扰。
- 稳定状态:环境中的光假定均到达稳定状态,所以辐射分布不会随时间变化。现实场景中这几乎在一瞬间完成。
采用几何光学模型最大的损失是衍射和干涉现象不能很容易的实现。例如在衍射和干涉中,通过两个区域的整体光通量并不一定等于在每个区域接受到的功率之和。(光通量下面会看到,就是功率的一种)
辐射度学中的基本量
辐射度学有四个基本量对于渲染至关重要:光通量,辐射照度,光强和辐射亮度(个人翻译,对应英文分别是flux, irradiance, intensity, radiance)。不要被这些名词吓坏,实际非常简单。他们都可以从能量关于时间,面积和方向的极限中推导出来。通常来说这四个值都和波长有关。
1.能量
让我们从能量开始。能量中学就学过了,单位是焦耳(JJJ)。光源向外发射光子,每个光子都有特定的波长,并携带了一定的能量。所有上面的四个基本量都是有效衡量光子能量的方法。能量和波长的关系是:
Q=hcλQ=\frac{hc}{\lambda}Q=λhc
其中c是光速,h是普朗克常量。
2.光通量
能量描述的是一段时间内做的功。然后渲染中我们更关心某个时刻内光的特性,也就是功率。光的功率就是光通量,也就是单位时间内通过某个区域的总能量。可以通过对能量进行时间的微分来获取光通量;
Φ=limΔt→0ΔQΔt=dQdt\Phi ={\lim_{\Delta t \to 0}}\frac{\Delta Q}{\Delta t} = \frac{\mathrm{d}Q}{\mathrm{d}t}Φ=Δt→0limΔtΔQ=dtdQ
光通量的单位是瓦特WWW。
反过来,如果知道了光通量关于时间的函数,我们可以对时间进行积分球的整体能量:
Q=∫t0t1Φ(t)dtQ=\int_{t_0}^{t_1}\Phi(t)\mathrm{d}tQ=∫t0t1Φ(t)dt
光源的总辐射一般用光通量来表达。下图中正中间的光源在两个球上面的光通量是一样的。但是经验告诉我们,二者在该光源下表现出来的亮度等特性是不一样的。所以光通量还不足以表达光的足够信息。注意到实际上两个球的面积是不一样的。
3.辐射照度
从上面我们可以看出来我们还需要光的能量关于面积的衡量,这就是辐射照度。辐射照度的定义是:给定有限区域AAA, 辐射照度EEE是:
E=ΦAE=\frac{\Phi}{A}E=AΦ
实际有两种辐射照度:一种我们用E表示(注意这个E不是上面的辐射照度), 表示到达表面的辐射照度,可以叫做“辐射入射度”;另一种是离开表面的辐射照度,可以叫做“辐射出射度”(radiant exitance), 用M表示。其他地方可能看到EEE同时用来表示入射度和出射度,但是我们为了清晰分开表达。
再看上图的例子,虽然两个球的辐射通量是一样的,但是外球的辐射入射度E比内球的E要小。如果光源在所有方向均匀照射的话,那么对于半径为rrr的球来说,他的辐射辐射度是:
E=ϕ4πr2E=\frac{\phi}{4\pi r^2}E=4πr2ϕ
所以辐射照度可以解释为什么外球上的一个点接受到的光的能量更少。并且可以知道这种衰减是正比于和光源之间的距离的平方的。
更一般的,对于某个点p,我们可以通过去p点功率关于面积的微分来定义辐射照度:
E(p)=limΔA→0ΔΦ(p)ΔA=dΦ(p)dAE(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)
我们同样可以对一定区域的辐射照度进行积分求导光通量;
Φ=∫AE(p)dA\Phi=\int_{A}E(p)\mathrm{d}AΦ=∫AE(p)dA
理解了辐射照度之后,我们就可以更好的理朗伯定律。朗伯定律说明到达某个表面的光的能量正比于光的方向和表面法向量之间的余弦值
关键一点是:这里是从辐射照度的角度来考虑表面能量,也就是单位面积的功率。如果从能量角度来说,实际上A1A_1A1和A2A_2A2的总能量是一样的,总功率也是一样的。但是二者还是展现出来不同的光学现象(想象右图θ\thetaθ为90°90\degree90° ,那么A的光几乎照不到平面上,可以类比凌晨时候的太阳。而左图相当于正午时候的太阳。这种类比并不严谨。另外一个更好的类比是,你可以尝试用手电筒在晚上照射某个区域。当垂直照射的时候,此时照亮的区域少,但是非常明亮;但是当你倾斜角度,例如照射很远的区域,这个时候整体亮度就会很低,但是光覆盖的范围很大。实际上两种情况下所有照亮区域的总光能是一致的,但是由于倾斜手电筒的时候面积更大,导致单位面积内的光的能量降低。)所以这里朗伯定律的描述并不严谨,因为到达整个照亮表面的能量和方向无关,应该描述成:到达某个表面每个点的光的能量正比于光的方向和表面法向量之间的余弦值。实际上也就是辐射照度。具体推导请读者自己推导。
立体角和光强
好了,上面的辐射照度是不是足够用来描述常见的光学现象了呢??并没有。现在把你想象成一个空间中的一个光子大小(想象吃了爱丽丝的缩小饼干变得很小)。这个时候你会发现一些微观光学现象的震撼:光子在不断震动携带能量、在空间中不同介质中间不断发生作用、吸收释放等等。好扯远了,现在把你放在某个观察点观察照到某个面积上的光,很大概率在不同观察点你会观察到不同的的光亮度(也就是各向异性,真正理想的各项同性的表面我觉得现实生活中是不存在的,或多或少都会有各向异性,只是明显程度不同而已。)。另外一个例子是金属表面的高光,会随着你不同观察方向位置发生变化。这一类现象告诉我们,很多光学现象与观察角度有很大关系,即使其他条件完全一样的情况下。为此,辐射度学引入了“立体角”(Solid angle)和光强的概念。
立体角是2D平面的角度在三维球体上面的拓展。下图是二维角度的示意。单位圆上面物体ccc的投影弧长sss就是弧度,单位是radiansradiansradians
现在考虑以p为中心的单位球,如下图,这个时候某个物体ccc在球上会有一个投影表面积sss。sss的面积就是物体ccc的立体角,单位是steradianssteradianssteradians。所以很容易就能知道,整个球体的立体教师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ω
可以看到,光强和辐射照度二者是没有关系的,是从不同角度对光通量进行描述的。二者均可以与光通量进行微积分操作上的转化。
辐射亮度
终于到了最重要的基本量,辐射亮度LLL。辐射照度给了p点光通量在面积上的微分,但是并不能区分不同方向的光通量。举个例子,考虑两个手电筒,二者口径不一样。大的手电筒A垂直照射地面B,小的手电筒C倾斜45°\degree°照射地面D,通过辐射照度公式我们可以使得B和D的辐射照度完全一样,但是我们选定某个观察方向观察照射平面会有不同光学现象。这种不同有一方面原因就是由于观察方向的不同。辐射亮度衡量的是辐射照度在立体角上的微分,定义是:
L(p,ω)=limΔω→0ΔEω(p)Δω=dEω(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_\omegaEω表示的是垂直于方向ω\omegaω的表面的辐射照度。如果你还记得上面的朗伯定律,你会发现这种这种垂直的表示抵消了朗伯定律里面的cosθ\thetaθ。那么应该如何理解辐射亮度呢??因为确实现实生活中我们观察到的照射亮度是和角度有关系的,也就是郎伯定律是宏观可见的性质,但是如果按照辐射亮度的理解,那么相同光源以不同方向照射平面,平面上某点某方向的辐射亮度是一样的!!那么这个辐射亮度对应的是什么宏观光学现象呢??这里我的理解是未必正确:辐射亮度不是针对宏观现象提出来的量,它本身就是针对微观层面的微分的。考虑照射的表面无穷小,这个时候光源某个方向就成了一个理想的光束,照射的是一个理想的点,那么这个单独点上面的辐射亮度确实是一样的!!但是宏观的亮度确实有不一样,为什么呢?我认为是密度的问题。当垂直照射,由于照射区域紧凑,导致相同区域有更多的光子照射,而倾斜的时候照射表面区域变大,虽然辐射亮度一样,但是到达一定区域的光子的密度更少,也就是光子要照亮的区域更大,所以会变暗。注意这里描述的是“一定区域”,也就是又变成了宏观层面。因为人眼看到的只能是“一定区域”。上面只是我个人猜想。如果错误欢迎指正。
言归正传,辐射亮度当然也可以定义为光通量在垂直面积和立体角上的微分:
L=dΦdωdA⊥L= \frac{\mathrm{d}\Phi}{\mathrm{d}\omega \mathrm{d}A^\perp}L=dωdA⊥dΦ
好了,到达辐射亮度的级别基本足够用了。当辐射亮度已知后,其他三个辐射度学基本量都可以根据积分公式获取。这也是为什么辐射亮度最经常使用的一个重要原因。另外一个原因就是辐射亮度在真空中光线传输过程中保持恒定。
好了,辐射度学的基本知识讲解完毕。之后我们将讲解辐射度学在这四个基本量上如何描述复杂而真实的光学现象。
1.辐射度学以及四个基本量相关推荐
- PBR理论基础1:辐射度与BRDF
前置:UnityShader9:光照基础回顾 一.反射等式(Reflection Equation) 定义: :观察视角 :入射方向 :表面法向量 有基于物理的反射等式:,其为渲染方程的一个实例:其中 ...
- 辐射度算法(radiosity)原理
简单地说,辐射度算法就是:把场景细分到很细很细的面片(如1个像素那么大的三角形),分别计算它们接受和发出的光能,然后逐次递归,直到每个面片的光能数据不再变化(或者到一定的阀值)为止.因此,计算量很大( ...
- 计算机图形学【GAMES-101】11、渲染前沿技术介绍(双向路径追踪BDPT、MLT、光子映射、实时辐射度、外观建模)
快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...
- 3d游戏开发――辐射度算法
Hugo Elias 何咏 译 声明:本文原文由Hugo Elias 撰写,由何咏 翻译.本文仅供学习交流之用. 任何人未经本人同意不得私自转载,任何人不得将本文用于任何商业活动. 简 介:这篇文章是 ...
- 转:辐射度算法(radiosity)原理
转:辐射度算法(radiosity)原理 http://blog.sina.com.cn/s/blog_537cc4d90101iiil.html 简单地说,辐射度算法就是:把场景细分到很细很细的面片 ...
- 从零开始学设计模式(四):工厂模式(Factory Pattern)
作者平台: | CSDN:blog.csdn.net/qq\_4115394- | 掘金:juejin.cn/user/651387- | 知乎:www.zhihu.com/people/1024- ...
- PBRT笔记(4)——颜色和辐射度
SPD 光谱功率分布 CoefficientSpectrum 根据给定采样数表示光谱,为RGBSpectrum.SampledSpectrum的父类. 重载大量的基础代码,比较简单不做赘述.其中为了方 ...
- 利用辐射光谱计算温度 matlab,时间调制型FTIR光谱仪辐射度定标方法的研究
1引言近年来,由于时间调制型FTIR自身具有灵敏度高.光谱分辨率高和波数准确度高等优点,其在实际中的应用越来越多,无论是军用.工业应用还是民用,时间调制型FTIR都有着广阔的应用前景[1-5].辐射度 ...
- 光通量、照度、光强度、亮度、辐射度、色彩还原的概念
当我们想设计一个显示屏背光时,可能知道一些下面的知识,会让我们做的更好. 1.光通量 光通量指光源发出的光且被人眼感知的光亮. 备注1:当提到光源时,辐射功率通常用辐射通量代替. 备注2:通量指所有方 ...
最新文章
- 模型难复现不一定是作者的错,最新研究发现模型架构要背锅丨CVPR 2022
- Windows Phone 7 不温不火学习之《画图》
- PAT甲级题目翻译+答案 AcWing(数学)
- delphi 到出execl2010 文件损坏_Win7系统出现explorer.exe损坏的图像的解决方法是什么?...
- 【玩转cocos2d-x之八】精灵类CCSprite
- 第五人格pcmac_第五人格:未上线,勘探员已经让庄园内的CP乱了分寸,祭司最绝...
- java自动装箱和拆箱_关于java自动装箱和自动拆箱
- virtualbox安装android6.0并设置分辨率为1920x1080x32
- via浏览器下载路径_Via安卓浏览器(软件篇)
- TracKit-Ocean:目标跟踪网络(二) -- 运行问题及解决逻辑设计
- 应用架构、业务架构、技术架构和业务流程图详解
- SegNet 论文解析
- android之仿朋友圈程序,Android仿微信朋友圈添加图片的实例代码
- 解决网页内容无法复制的方法
- 郑轻oj1000-从今天开始入坑C语言
- html 字体图标不显示不出来了,h5页面字体图标显示不正常
- Android本地文件存储,机身和外置sd卡
- PDPS软件:机器人焊枪工具自动选取功能介绍与使用方法
- Linux系统卸载virtualbox,如何在Mac上卸载VirtualBox
- 手机音视频流媒体开发一些有用资料(2009.6.17更新)
热门文章
- 什么是活动分区?活动分区的标志是什么?
- ECALL Swtichless调用及tRTS端Swtichless初始化
- 【云驻共创】 JAVA常用的开发工具有哪些?
- unix cp 原理_Unix的工作原理:您都不敢问的一切
- do { } while(){ }
- (仿微信Android)聊天+红包+直播+朋友圈源码发布了
- argument encoding=“UTF-8“ is ignored in MBCS locales
- proUSB接口对接门锁技术分享
- 英特尔的低于服务器的作用是什么,什么是英特尔至强服务器,它和酷睿CPU服务器的区别是什么?...
- 2022年全球与中国偏光成像相机市场现状及未来发展趋势