免责声明:我不知道环境地图采样中的最新技术水平。实际上,我对此主题知之甚少。因此,这不是一个完整的答案,但我将通过数学公式来解决问题并进行分析。我主要是为我自己做这件事,因此我很清楚自己的意思,但我希望OP和其他人会发现它有用。
我们要计算一个点的直接照度,即我们想知道积分
的值
,其中是BSDF函数(我明确声明依赖于法线,以后会),是环境图的辐射度,并且是余弦术语连同可见性(即什么是),即如果
I=∫S2f(ωi,ωo,n)L(ωi)(ωi⋅n)+dωi
f(ωi,ωo,n)L(ωi)(ωi⋅n)++(ωi⋅n)+=0(ωi⋅n)<0
我们通过针对概率密度函数生成样本 来估计该积分,估计量为
Nω1i,…,ωNip(ωi)
I≈1N∑k=1Nf(ωki,ωo,n)L(ωki)(ωki⋅n)+p(ωki)
问题是:我们如何选择pdf,以便能够在可接受的时间内生成样本,并且上述估计量的方差很小。p
最好方法挑选正比于积
但大多数时候它是根据此pdf生成样本非常昂贵,因此在实践中没有用。p
p(ωi)∼f(ωi,ωo,n)L(ωi)(ωi⋅n)+
OP建议的方法:
方法一:选择正比于余弦项
方法二:选择正比于EM
p
p(ωi)∼(ωi⋅n)+
pp(ωi)∼L(ωi)
根据提到的论文的名称,我可以部分猜测它们的作用(不幸的是,我现在没有时间和精力来阅读它们)。但是在讨论他们最有可能做的事情之前,让我们先讨论一下幂级数:D
如果我们具有一个实数变量的函数,例如。然后,如果行为良好,则可以将其扩展为幂级数
其中是常数。这可以被用于近似通过在一些步骤截断总和
如果是足够高的,则误差是非常小的。f(x)
f(x)=∑k=0∞akxk
akfn
f(x)≈∑k=0nakxk
n
现在,如果我们在两个变量(例如具有函数,则只能在第一个参数进行扩展
其中 仅是中的函数。也可以在两个参数
中进行扩展,
其中是常量。因此,具有实参的函数可以扩展为该参幂的和。对于球体上定义的函数,可以执行类似的操作。f(x,y)
f(x,y)=∑k=0∞bk(y)xk
bk(y)yf(x,y)=∑k,l=0∞cklxkyl
ckl
现在,让我们在球上定义一个函数,例如。这样的函数还可以类似于一个实参函数的方式扩展,
其中是常数,而是球形谐波。球谐函数通常由两个索引来索引,并在球坐标中作为函数编写,但这在这里并不重要。重要的是可以写成一些已知函数的和。f(ω)
f(ω)=∑k=0∞αkSk(ω)
αkSk(ω)f
现在,在球上需要两个点的函数,例如只能在其第一个参数中展开
或其两个参数
f(ω,ω′)
f(ω,ω′)=∑k=0∞βk(ω′)Sk(ω)
f(ω,ω′)=∑k,l=0∞γklSk(ω)Sl(ω′)
那么,这一切有用吗?
我提出了 CMUNSM(疯狂的无用的无采样方法):假设我们对所有函数都有扩展,即
如果将其插入积分得到
f(ωi,ωo,n)L(ωi)(ωi⋅n)+=∑k,l,m=0∞αklmSk(ωi)Sl(ωo)Sm(n)=∑n=0∞βnSn(ω)=∑p,q=0∞γpqSp(ωi)Sq(n)
I=∑k,l,m,n,p,q=0∞αklmβnγpqSl(ωo)Sm(n)Sq(n)∫S2Sk(ωi)Sn(ω)Sp(ωi)dωi
实际上,我们不再需要蒙特卡洛,因为我们可以预先计算积分,然后求和(实际上近似于总和,我们只将前几项相加),便得到了理想的结果。∫S2Sk(ωi)Sn(ω)Sp(ωi)dωi
这一切都很好,但是我们可能不知道BSDF或环境图的扩展,或者这些扩展收敛得很慢,因此我们必须在总和中使用很多术语才能获得合理准确的答案。
因此,我们的想法不是扩大所有论点。一种可能值得研究的方法是忽略BSDF并仅扩展环境图,即
这将导致pdf:
p (ω 我)〜ķ Σ Ñ = 0 β Ñ 小号Ñ(ω 我)(ω &CenterDot;&Ñ )+
L(ωi)≈∑n=0KβnSn(ωi)
p(ωi)∼∑n=0KβnSn(ωi)(ω⋅n)+
我们已经知道如何针对此操作,这只是方法一。我的猜测是,它是针对较高的论文之一完成的。KK=0K
进一步扩展。您可以在不同的参数中扩展不同的函数,并执行与上述类似的操作。另一件事是,您可以在不同的基础上进行扩展,即,不使用球谐函数,而是使用不同的函数。
因此,这是我对主题的看法,希望您至少发现了一点点帮助,现在我可以上GoT睡觉了。