真实性渲染技术 Photo-realistic rendering
文章目录
1. 真实性渲染技术的概念
1.1 基本概念
Photo-realistic rendering is some techniques that is intended to realistically insert virtual object in the real-time physical environment in AR applications, These techniques include methods for light source acquisition through image-based lighting or sampling,registering and estimationg the lighting conditions, and composition of global illumination1.
1.2 真实性渲染技术与pbr(Physical-based rendering)的关系
真实性渲染 强调其输出的外观,而不是产生这种效果的具体技术。只要最终的图像看起来真实,什么技术手段都可以。在光源或表面反射率上没有使用物理上真实的值。
这种方式通常让用户轻松快速地得到结果,而不必担心繁琐的细节,比如把光源放在哪里,用什么来反射。除了无意义的值之外,还需要付出代价,那就是外观伪造的图像。你是否注意到这些渲染图总是看起来柔和和发光?你看到的是相当于调幅收音机的视觉效果。
基于物理的渲染2,尽可能地遵循光的物理行为,以努力“预测”设计的最终外观。这不再是一个艺术家的构想,它是一个数值模拟。光源在计算中以特定的分布发射,模拟计算表面之间的反射直到解收敛。这种计算最流行的技术通常被称为“辐射”,或通量转移,它通过将所有的表面分割成块,在一个封闭的系统内交换光能来实现这一点。这种类型的计算大部分局限于具有漫射表面的简单场景,其中可见性计算和求解矩阵是可管理的。
1.3 与Non-photorealistic rendering的关系
Three-dimensional NPR is the style that is most commonly seen in video games and movies. The output from this technique is almost always a 3D model that has been modified from the original input model to portray a new artistic style.
The input to a two dimensional NPR system is typically an image or video. The output is a typically an artistic rendering of that input imagery (for example in a watercolor, painterly or sketched style) although some 2D NPR serves non-artistic purposes e.g. data visualization.
Artistic rendering3 is the application of visual art styles to rendering
总结来说,npr其实就是不追求真实,而是通过类似于印象风格的形式进行艺术化的加工,输出加工过的图像内容。
2. 辐射基本概念与渲染方程
在计算机图形学领域,渲染方程(Rendering equation)456是一个积分方程,描述的是光能在场景中的流动。根据光学的物理学原理,它在理论上给出了一个完美的结果,它是所有全局照明方法的理论基础(光线跟踪,路径跟踪,辐射度等)。各种各样的渲染技术,只是这个理想结果的一个近似。在计算机图形学中,真实感渲染的目标就是求解这个方程。
渲染方程于1986被吉姆·卡吉雅7 与 David Immel et al.8同时提出。
2.1 光学原理:辐射度量学相关概念
-
辐射能量(Radiant energy),
Radiant energy is the energy of electromannetic radiation. It is measured in units of joules, and denoted by the the symbol:
Q[J=Joule] -
辐射通量(Radiant flux):
Randiant flux(power) is the energy emitted, reflected, transmitted or received, per unit time.
Φ = d Q d t , [ W = w a t t ] \varPhi=\frac{dQ}{dt},[W=watt] Φ=dtdQ,[W=watt]
具体来说一般偏向用radiant flux来衡量光线的亮度,因为我们更关心的是单位时间的效果,事实上也是这么做的,想想在说白炽灯泡的时候也是说60W亮度,80W亮度
- 辐射强度(Radiant intensity):
the radiant intensity is the power per unit solid angle emitted by a point light source.
I ( ω ) = d Φ d ω [ W s r ] I(\omega)=\frac{d\Phi}{d\omega}[\frac{W}{sr}] I(ω)=dωdΦ[srW] - 辐照度(irradiance,flux density):
the irradiance(flux density) is the radiant flux(power) per unit area incident on a suirface point
E = d Φ d A [ W m 2 ] E = \frac{d\Phi}{dA}[\frac{W}{m^2}] E=dAdΦ[m2W]
辐照度即物体单位表面积接受的入射(incident)辐射通量。 - 辐射亮度(radiance):9
the radiance (luminance) is the power emitted, reflected, transmitted or received by a surface, per unit solid angle, per unit area(perpendicular area).Or the irradiance per solid angle.
L = d E d ω = d 2 Φ d ω d A c o s θ L = \frac{dE}{d\omega}=\frac{d^2\Phi}{d\omega dAcos\theta} L=dωdE=dωdAcosθd2Φ
辐射亮度是每单位立体角,每单位垂直面积的功率,它同时指定了光的方向与照射到的表面所接受到的亮度。
需要注意的是,辐射亮度强调的是单位垂直面积是指垂直于入射光线的照射面积。而 d A dA dA是物体的表面积,因此存在一个入射角度 θ \theta θ,因此需要乘 c o s θ cos\theta cosθ转为垂直面积。
通过对L进行积分,可以得到辐照度,
观察一下积分后的式子, E ( p ) E(p) E(p)就是点p的irradiance,其物理含义是上文所提到过的点p上每单位照射面积的功率,而 L i ( p , ω ) L_i(p,\omega) Li(p,ω)指入射光每立体角、每垂直面积的功率,因此积分式子右边的[公式]解释了面积上定义的差异,而对[公式]积分,则是相当于对所有不同角度的入射光线做一个求和,那么该积分式子的物理含义便是,一个点(微分面积元)所接收到的亮度(irradiance),由所有不同方向的入射光线亮度(radiance)共同贡献得到。
2.2 双向反射分布方程(BRDF,bidirectional reflectence distribution function )
- 光与表面的相互作用10:
光通过物体表面时,可能会发生如下几种情况:- 吸收
- 反射
- 镜面反射
- 漫反射
- 折射
- 定向折射
- 漫折射
- 散射
- 弹性散射
- 非弹性散射
光的传播示意图:
1.镜面反射 2. 漫反射 3. 定向透射 4. 漫透射 5. 背反射 6. 吸收
光在不均匀介质中发生散射:
- 双向反射分布函数(Bidirectional reflectance distribution function, BRDF)
在不考虑散射的情况下,光从入射方向 Ψ \Psi Ψ入射到表面的点 p p p,会通过漫反射和镜面反射从该点出反射到各个方面。BRDF就是来描述这一物理特性的函数。定义如下:
一个点(微分面积元)在接受到一定方向上的亮度 d E ( ω i ) dE(\omega_i) dE(ωi)之后,再向不同方向把能量辐射出去( d L r ( ω r ) dL_r(\omega_r) dLr(ωr))
从直观的理解来说,不同物体表面材质自然会把一定方向上的入射亮度(
d
E
(
ω
i
)
dE(\omega_i)
dE(ωi))反射到不同的方向的光线上(
d
L
r
(
ω
r
)
dL_r(\omega_r)
dLr(ωr)),如理想光滑表面会把入射光线完全反射到镜面反射方向,其它方向则完全没有。如理想粗糙表面会把入射光线均匀的反射到所有方向。因此所谓BRDF就是描述这样一个从不同方向入射之后,反射光线分布情况的函数,定义如下:
上图中下方的式子即为BRDF,它接收两个参数,入射光方向[
ω
i
\omega_i
ωi],反射光方向[
ω
r
\omega_r
ωr],函数值为反射光的radiance与入射光的iiradiance的比值(从某个方向接受到的光能有多少反射到另外一个方向)。
- 反射方程
由BRDF,可以得到反射方程如下:
即摄像机所接受到的[公式]方向上的反射光,是由所有不同方向上入射光线的irradiance贡献得到的(即图中式子的 L i ( p , ω i ) c o s θ i d ω i L_i(p,\omega_i)cos\theta_id\omega_i Li(p,ωi)cosθidωi),而不同方向入射光线的irradiance对反射方向KaTeX parse error: Undefined control sequence: \omgea at position 1: \̲o̲m̲g̲e̲a̲_r的贡献程度则由物体表面材质决定,所以乘上了一个BRDF函数。
2.3 渲染方程
渲染方程的物理基础是能量守恒定律。在一个特定的位置和方向,出射光 Lo 是发射光 Le 与反射光之和,反射光本身是各个方向的入射光 Li 之和乘以表面反射率及入射角。
根据能量守恒定律,在某点的特定出射方向上的总出射辐射亮度是发射的辐射亮度和该点表面反射的辐射亮度的总和。
设出射的辐射亮度为
L
(
p
,
ω
o
)
L(p,\omega_o)
L(p,ωo), 该点的发射的辐射亮度为
L
e
(
p
,
ω
o
)
L_e(p,\omega_o)
Le(p,ωo), 该点表面发射的辐射亮度为
L
r
(
p
,
ω
r
)
L_r(p,\omega_r)
Lr(p,ωr), 则有:
L
(
p
,
ω
o
)
=
L
e
(
p
,
ω
o
)
+
L
r
(
p
,
ω
r
)
=
L
e
(
p
,
ω
o
)
+
∫
Ω
+
L
i
(
p
,
ω
i
)
f
r
(
p
r
,
ω
i
,
ω
o
)
(
n
ω
˙
i
)
d
ω
i
L(p,\omega_o) = L_e(p,\omega_o)+L_r(p,\omega_r)=L_e(p,\omega_o)+\int_\Omega^+L_i(p,\omega_i)f_r(p_r,\omega_i,\omega_o)(n\dot\omega_i)d\omega_i
L(p,ωo)=Le(p,ωo)+Lr(p,ωr)=Le(p,ωo)+∫Ω+Li(p,ωi)fr(pr,ωi,ωo)(nω˙i)dωi
对该方程进行线性算子抽象,可的如下方程:
L
=
E
+
K
L
L=E+KL
L=E+KL
进而通过线代变换,可得:
I
L
−
K
L
=
E
,
(
I
为
单
位
矩
阵
)
IL-KL = E, \ (I为单位矩阵)
IL−KL=E, (I为单位矩阵)
(
I
−
K
)
L
=
E
(I-K)L=E
(I−K)L=E
L
=
(
I
−
K
)
−
1
E
L = (I-K)^{-1}E
L=(I−K)−1E (尚未证明其可逆)
由诺依曼级数展开12:
L
=
E
+
K
E
+
K
2
E
+
K
3
E
+
.
.
.
L=E+KE+K^2E+K^3E+...
L=E+KE+K2E+K3E+...
分析该方程可知:
2.4 球谐函数(SH,spherical harmonics)
要进行全局光照求解,至少进行一次积分,这也具有一定的难度13。
Chen X, Wang K, Jin X. Single image based illumination estimation for lighting virtual object in real scene[C]//2011 12th International Conference on Computer-Aided Design and Computer Graphics. IEEE, 2011: 450-455. ↩︎
Kajiya, James T., The rendering equation (PDF), Siggraph 1986, 1986: 143–150, ISBN 978-0-89791-196-2, doi:10.1145/15922.15902 ↩︎
Immel, David S.; Cohen, Michael F.; Greenberg, Donald P., A radiosity method for non-diffuse environments (PDF), Siggraph 1986, 1986: 133, ISBN 978-0-89791-196-2, doi:10.1145/15922.15901 ↩︎
由广义二项式定理11: ( 1 − x ) − n = ∑ 0 ∞ C n r x r (1-x)^{-n}=\sum_0^{\infty}C_n^rx^r (1−x)−n=∑0∞Cnrxr,展开: ↩︎