作者:小小光08 引言: 一个光源会在三维空间以及角度空间中随机产生光线分布。比方说,一个点光源的发出位置不变,而光线方向按照余弦来均匀分布。当进行渲染时,必须发出足够多个光线,才能精确描述这个点光源。 光线的随机产生通常使用随机数产生器,随机数产生器的目标是制造一系列互相无关的随机数,然后追踪大量的随机光线,在运算量较小的情况下获得尽可能高的渲染结果。 所有基于现代 CPU 的随机数生成算法都是伪随机的(quasi-random)。它们受限于一个周期。当超过周期后就会重复出现,而不再是相互无关的随机数。这个周期的最终限定是由电脑的位数来决定的,因此,没有一个内建的随机数是“真正”随机的。 Sobol 采样使用了不同的方式来采样。比起随机数,Sobol序列着重于在概率空间中产生均匀的分布。但这并不是单纯的使用网格来填满,而是使用一个本质上随机,但是巧妙的方法去“填满”概率空间,即之后产生的随机数会分布到之前没有采样到的区域。 NSC 3D Layout,如下图: 上图中,上半部分(蓝色)为Sobol采样,下半部分(绿色)为随机采样。 从上图可以看出,Sobol采样和随机采样的差别不大。 从上图可以看出,Sobol采样和随机采样的差别就比较大了。 107: 108: 109: 不管追迹光线数较少(104条),还是追迹光线数较多(109条)时,Sobol采样的追迹结果都是相似的。因此,Sobol采样在“最有效区域(sweet-spot)”最有用。 但是,注意Sobol采样并不是一个灵丹妙药(Magic Bullet)。在这种情况下,我们知道光源的辐照度是均匀的。我们对预期分布的先验知识允许我们声称Sobol采样在这种情况下是“更好的”。然而,在任何蒙特卡罗模拟中,最终都没有比使用真正的随机数生成器生成多个样本更准确的方法了。出于这个原因,ZEMAX允许你在对象属性的source选项卡中选择Sobol采样方案,或者使用ZEMAX的长周期随机数生成器,如下图所示: |