前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Monte Carlo与Light Equation

Monte Carlo与Light Equation

作者头像
Peter Lu
发布2019-10-14 14:49:06
4900
发布2019-10-14 14:49:06
举报
文章被收录于专栏:LET

Monte Carlo的数学推导

为什么Monte Carlo可以求解积分

期望值定义:

如果一个函数h,我们可以找到它在[a,b]之间的概率密度函数f (w = h / f),则该积分等同于w的期望值。

而LLD(Law of Large Numbers 大数定理)告诉我们,只要有足够多的样本,万物都难逃被统计的宿命。基于LLD, Monte Carlo方法实现了一种以离散的方式解决积分的办法,可以让i无限接近I。这种思路非常实用,比如一个复杂函数的积分,而且简单易用,具有通用性。

如上,比如[a,b]区间对函数f求面积,首先,x方向在[a,b]之间是均匀分布的,所以pdf(概率密度函数)是1 / (b-a),因此,最终是求E(f* (b-a)),对应的数学公式如下,公式中的h对应上图中的f,而公式中的f是pdf函数。为了节约时间,直接找现成的图片,凑合看吧:

改善Monte Carlo采样方法

举个栗子,你打算找一个伴侣,给你三个选择,a) github,b) 梦境里,c)千山万水,给你三次机会,你会如何分配?除了对三次都选A的同学表达我的敬意外,这里的问题是,有多大的概率,才能说出“原来你也在这里”。从ABC三个选择来看,这似乎是一个悲剧,那我们换一个问题,如何量化结果和理想的这种差距呢?这就是方差Variance。

假设对一个函数f取常数c,设置该函数对应的pdf为cf(x):

此时,f(x) / pdf = 1/c,常数,方差为零。换句话说,如果我们能够知道函数f对应的pdf,基于该概率的采样,收敛最佳,换句话说,最少的次数可以达到较好的期望。

然而,很多时候,pdf函数很复杂,或者不存在,我们需要选择一个近似的,简单的函数来模拟该pdf,这就是Importance Sampling的思路。

如上,我们无法获取函数f,则用函数g来取代,如下图,我们可以证明,期望值仍然是I

基于方差公式V = E(X^2) – (E(X))^2 = E(X^2) - I^2,可以看到,当g趋近于f时,方差越小,就好比无数折线拟合的圆,看似平滑却充满了纤细而深邃的裂痕。

Importance Sampling在光线追踪中是很重要的优化手段,不知道是我们不满足还是这个世界确实不完美,面对光线的千变万化,很多时候,很难用一个简单的函数来拟合pdf,比如室外和室内的灯光差异等。为了更高效的提高光线追踪的收敛速度,Eric Veach在那篇旷世论文《ROBUST MONTE CARLO METHODS》中提到了MIS(Multiple IS)方法,思路很简单,我们提供多个曲线来拟合pdf,然后找到一个标准,来判断在某一个区间中这些曲线之间的权重。比如有a和b两种采样策略,保证在任意区间,w(a) + w(b) = 1,找到一个评价标准p,谁的策略好,谁的权重大,动态的调整。注:Veach因为这篇论文对电影行业的贡献拿到了奥斯卡奖。

如上,Wi对应不同的采样策略,Ni对应该策略下对应的采样次数,p是IS中对应的pdf函数。Sum(Wi)和为1,证明期望值不变。

这里,有一个限定条件Sum(Wi) = 1,求方差最小。典型的Lagrangemultiplier求解λ。在论文9.A proof中给出了证明,为了保证阅读体验,我们直接给出结果,此时的方差最小:

如上,我们结束了MonteCarlo知识点的相关整理。算是光线追踪中数学部分的完美证明,然后我们再看看物理世界中,是如何糟蹋这些公式的(approximation)

Light Transport

首先,祭出光学公式,考虑到有些人可能没看之前我写的Ray Tracing文章,耐心解释一下:Wi是入射角度,比如光源,Wo是射出角度,比如相机,该积分的意思是所有可能的入射角累计的光源辐射强度E,对应irradiance, 然后转化为射出角度下对应的L,radiance。F是B*DF转换函数,简单说就是一个转换比例,G是几何函数,对应Wi两端和法线的夹角和距离,这里留一个小疑问,如何推导A到Ω的过程?

如上是该函数的物理解释,不管怎样,有了积分,我们就可以采用蒙特卡洛积分:

两种采样方式,从眼睛到光源的Importance Path,或从光源到眼睛的RadiancePath。两者的效果是一样的,只是这个承诺,需要一万年(∞)来证明。

这样,我们可以采用如上的某一个方法采样,实现渲染效果。当然,这只是direct light,光线只有一次反弹,而现实中光线在光源和眼睛之前会有无数次的反弹,只是每次能量会衰弱,但发生的事情总是存在的,看不见并不等于不存在,所以,通常我们会限定一个迭代次数。

不同场景下,两者的收敛效率是不一样的,比如室外阳光充分,从眼睛出发的射线,大概率会找到光源,环境光也是光源,概率较大,而室内暗淡的环境下,从光源出发,找到眼睛的概率会大一些。我们可以用某一种策略采样N次,用另一种采样M次,但也可以分区域采样,如上图,这就是NEE的思路,每次和物体相交,我们尝试向光源发送一条射线,如果可见,则该采样成功。当然,每次根据Wi获取对应的pdf,也就是IS的方法。

但这样有一个问题,如果眼睛出发的光线D,误打误撞的碰到光源,这个贡献是无效的,因为和C重复了,这就有点可惜,于是C和D商量一下,要不大家来一个分成,这就是MIS的策略。

NEE算是比较常见的光线路径模拟策略,但还是有遗憾,在光线路径中,只有最后一个光线是从光源出发的Explici t path,其他的都是基于材质的Random Walk。一些光学现象很难模拟,比如Caustic,或者灯光被某个透明材质包围,于是,便有了Photon Mapping策略,从光源出发。

这么多的光路策略,不同场景下各有优劣,Eric Veach提出了BDPT的路径,大概的思路是你从眼睛出发,我从光源出发,大家各自Random Walk,每走一步都看看是否能找到对方。这样,便有了很多不同的Path,采用基于面积的概率,给每一条Path设置对应的权重,MIS的思路,将所有光线叠加在一起,达到一个近似的最优解。如下图所示,原始的光线效果,以及MIS加权后的效果:

文章到这就结束了。从开始的认真写作,到中间发生了一个很伤悲的事情,最后麻木的写完,不知道读到这的人是否能感受到我情绪上的变化。我觉得自己挺矛盾的,作为工程师,思考问题要注重逻辑上的严谨和可证实,但有时候,也觉得自己很感性,会无缘由的做出一些非理性的选择,比如辞掉12年的工作,拒绝阿里的Offer而选择读书,这可能算是迄今为止我做过的最帅的选择。记得同事开玩笑说,表面上我是一个程序员,骨子里是一个诗人。当然,我没资格当诗人,因为诗人多数是渣男,只有帅哥才有资格渣。

作为工程师,我很满足,但当我审视这份满足感时,发现它是建立在两个基础上,第一,有无数待解决的问题满足好奇心,第二,这些问题必定可解。有时静下心来推一个数学公式,会被巧妙的推论折服,一霎那的兴奋后是毫无缘故的失落,觉得自己做的事情没意义,或者觉得这个世界并不如这些公式般可解,或者心里明白,所谓的快感,只是多巴胺的化学反应。于是,我开始每天跑步,因为我知道运动能产生内啡肽,可以感知幸福。我不愿意提及那些内心深处的遗憾,就算写,也只能找个角落,在吞与吐之间反反复复,觉得只要自己足够强大,可以接受那些遗憾,可不经意见听到的某首歌,还是会觉得落寞。想起了Mary and Max里的一句话,如果我在一个孤岛上,那么我就要适应一个人生活,只有椰子和我。可看看孤独这两个字,把它们拆开,还有瓜果还陪着蚊虫,不得不自嘲,至少我还可以选一首歌,大声唱过,再看天地辽阔。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 LET 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档