GAMES202 6 Real-time Enviroment Mapping 2
Background Knowledges 一些理解:
Product-integral=滤波=卷积=加权平均:
- 卷积 $\int_{\Omega}f(x)g(x)dx$
- 滤波 考虑傅里叶变换,先乘积再积分和频域上的滤波结果相同
- 加权平均,把 $f(x)$ 看成权重函数, $g(x)$ 看成被积函数
Fourier Transfer 傅里叶变换:
- 低频信号:分布在频域图中间,表示的是模糊
- 高频信号:分布在周围,表示的更多是图像的边界
Basis Function 基函数:
- 可以类比于线性空间的标准正交基。傅里叶级数的每个项都是标准正交基
- 可以用一套基函数的线性组合来表达该函数空间中的任何函数,比如说三角函数代表的傅里叶展开,以及幂级数代表的泰勒展开。
Real Time Environment Lighting (& global illumination)
Spherical Harmonics 球面谐波函数(SH)
What 是什么:
- 一系列 定义在球面上的 二维 函数 $B_i(\omega)$
- 另外一个理解:一维情况下的傅里叶函数
- 长得和电子云波函数一样卧槽,每层是l,每层有m=2l+1个基函数。(本质上和电子云波函数概率波长得一样,至少数学上是相通的)
- 每一个SH基函数都对应着一个Legendre多项式
How 怎么用:
- 一个好的性质:SH基函数的系数 $c_i=\int_{\Omega}f(\omega)B_i(\omega)d\omega$ (是Product Integral的形式)求 $c_i$ 的过程叫投影(Projection)
- 用这个基函数的线性组合(当然是Truncated过的)来重组(Reconstraction)想要表达的函数 $f(x)$
- Truncating(也就是只取前几项)的过程,同时也是取低频信号,丢掉高频信号的过程。一举两得。
- 并且diffuse物体其实本来就是一个低通滤波,BRDF一般不超过3阶(9项)。进一步可以写成一个二次型
SH’s Properties 球面谐波函数的性质
- Orthonormal 正交性
- Ez Projection 简单投影
- 套用Product Integral形式的公式 $c_i=\int_{\Omega}f(\omega)B_i(\omega)d\omega$
- Ez Rotation 简单旋转
- 旋转后的基函数,都能被同阶SH基函数来线性表达
- Ez Convolution 简单卷积
- Few Basis funcitons = Low Freqs 低阶就是低频
Precomputed Radiance Transfer (PRT)
Diffuse Case:
- $L(o)=\rho\int_{\Omega}L(\mathbf{i})V(\mathbf{i})max(0,\mathbf{n\cdot i})d\mathbf{i}$
- 在场景(物体都不能动,因为V不能变)、机位不发生变化的情况下(只考虑光照发生变化),对环境光照进行展开
- $\approx \rho\sum l_i\int_{\Omega}B_i(\mathbf{i})V(\mathbf{i})max(0,\mathbf{n\cdot i})d\mathbf{i}$
- 其中积分项只与光照方向有关,即可以与计算出来,相当于一个向量
- $\approx\rho\sum l_i\mathbf{T_i}$
- 如果光源发生旋转,可以根据SH的性质,直接对系数进行变换操作,代替预计算结果的变化,实现旋转的效果。
Glossy Case:
- $L(o)=\int_{\Omega}L(\mathbf{i})V(\mathbf{i})\rho(\mathbf{i,o})max(0,\mathbf{n\cdot i})d\mathbf{i}$
- 麻烦的是Glossy的T是o的函数,会比Diffuse的情况多一维。现在的T变成了一个矩阵(不是Diffuse的向量了)对每一个o,都预计算一个向量,合起来作为T
- 带价就是计算量大,并且消耗的存储空间也很大
- 用Glossy的SH一般要用到4阶5阶,不然看上去还是很diffuse
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Chuan 川 Charles!
评论