蒙特卡罗算法或方法,是渲染器中最重要的计算方法,当前没有任何一款渲染器,能够离开蒙特卡罗算法的,而且它们一般使用的都是修改过的蒙特卡罗算法。 在V-Ray渲染器中,使用蒙特卡罗方法进行计算的有,图像采样器、反射模糊、折射模糊、阴影模糊、运动模糊、景深模糊、发光贴图间接照明渲染引擎、确定性蒙特卡罗间接照明渲染引擎。 蒙特卡罗算法可以说是渲染器中最核心的算法,如果我们没有搞懂蒙特卡罗算法的工作原理,即使我们天天使用渲染器,或者已经都成为了渲染高手,这也只能说明是在凭经验进行渲染,并没有真正的驾驭渲染器。 10.1 蒙特卡罗算法的来历 蒙特卡罗方法或算法(Monte Carlo method/algorithm),有的也把它翻译为蒙特卡洛,也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。 20世纪40年代,在John von Neumann,Stanislaw Ulam和Nicholas Metropolis在洛斯阿拉莫斯国家实验室为核武器计划工作时,发明了蒙特卡洛方法。因为Ulam的叔叔经常在蒙特卡洛赌场赌博,而且概率论就是在赌博的基础上发展越来的,所以把这种计算方法称为了蒙特卡罗方法。 蒙特卡罗是一种随机算法,与它对应的是确定性算法。 蒙特卡罗方法在金融工程学,宏观经济学,生物医学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。 10.2 以蒙特卡罗方法求圆的面积 看到上面蒙特卡罗方法的应用领域,大家可能会感到奇怪,使用用蒙特卡罗方法,还能求出圆的面积? 是啊,蒙特卡罗方法真是太强大了,下面我就给大家讲解一下使用它求出圆的面积的方法,通过此方法,大家会对蒙特卡罗方法恍然大悟,原来如此简单! 假如你感兴趣的话,也可亲自实践,方法如下: 1. 找个长宽都为1米的纸板背景涂上蓝色,居中绘制一个直径1米的红色的圆,如下: [attach]749[/attach] 2. 将此纸板挂在墙上,找一张白纸将整纸板开满覆盖住。 3. 找一把飞镖,一张用来记录数据的纸及一只笔。 4. 最好把你的眼睛蒙上,现在站在纸板的前面,向纸板投掷飞镖,有个条件,每次都要投掷到纸板上,而且位置越乱越好! 5. 将每飞镖所扎到位置的颜色记录下来,分别将它们累计到红色或蓝色的总次数中。 [attach]751[/attach] 6. 进行计算:圆的面积 = 红色总数/(红色总+蓝色总数)。 7. 大家试想,随着投掷飞镖次数的增加,按上面的方法计算的圆的面积,就会越来越准确。 8. 蒙特卡罗方法的总结: 1) 对于每次所投掷的飞镖,它的位置是不确定的,是随机的,所以它被称为随机算法,不确定算法。每次所投掷的飞镖也称为采样。 2) 它的计算是在对采样的统计的基上完成的,所以也称为统计算法。 3) 当采样数量少时,它计算的结果可能存在较大的误差,但随着采样数量的增加,结果会越来越精确,最后趋于恒定值。 举个极端的例子,对于上面求圆的面积的方法,如果我们仅投掷了1枚飞镖,如果恰巧落入到了圆的内部,那么圆的面积就是1平方米,如果落入了圆的外部,那么圆的面积就为0,这显然是不正确的;但是,如果我们投掷了1万枚飞镖,这时圆的面积就会趋于恒定值,再多投掷一枚飞镖,对结果的影响也仅有万分之一。 以上就是蒙特卡罗方法的精髓,对于我们使用渲染器来说,知道这么多,也就足够了! |
GMT+8, 2025-5-2 23:02 , Processed in 0.049434 second(s), 6 queries , Gzip On, Redis On.
Powered by TOPRENDER X3.5
© 2001-2024 Toprender.