0

我正在编写一个光线追踪器,我希望根据某种分布将光线从点p发射到该点上方的半球。

1)我推导出了一种在p 图像上方的立体角(由 theta 定义)内均匀采样的方法

phi = 2*pi*X_1

alpha = arccos (1-(1-cos(theta))*X_2)

x = sin(alpha)*cos(phi)

y = sin(alpha)*sin*phi

z = -cos(alpha)

哪里X是统一随机数

那行得通,我对此很满意。但我的问题是,如果我不想要均匀分布会发生什么。

我从这里开始使用第 27 页的算法,我可以从分段任意分布中抽取样本。但是,如果我简单地说:

alpha = arccos (1-(1-cos(theta)) B1)

哪里B是从任意分布生成的随机数。它表现得不好......我做错了什么?提前致谢。我真的很需要帮助

附加: 也许我在问一个引导性问题。退后一步:有没有办法根据任意分布在半球上生成点。我有一种用于均匀采样半球的方法和一种用于余弦加权半球采样的方法。(pg 663-669 pbrt.org )

4

1 回答 1

1

通过均匀分布,您可以对样本结果进行平均并获得正确的结果。这相当于将每个样本结果除以样本概率密度函数 (PDF),在均匀分布的情况下,它只是 1 / sample_count(即,与结果的平均值相同)。

对于任意分布,您仍然必须将样本结果除以样本 PDF,但是 PDF 现在取决于您使用的任意分布。我假设你的错误在这里。

于 2013-06-14T08:06:49.490 回答