【问题标题】:Sampling a hemisphere using an arbitary distribtuion使用任意分布对半球进行采样
【发布时间】:2013-06-13 09:05:03
【问题描述】:

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

1) 我推导出了一种在 p Image

以上的立体角(由 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 是一个统一的随机数

这很有效,我对此非常满意。但我的问题是,如果我不想要均匀分布会发生什么。

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

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

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

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

【问题讨论】:

    标签: graphics random raytracing sampling montecarlo


    【解决方案1】:

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

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

    【讨论】:

    • 我认为你是对的。我一直在沿着这些思路思考,但不能完全制定它。 “样本结果”是什么意思。你知道其他方法吗?像接受拒绝?据我了解,这些用于从分布中抽取样本。就我而言,我能够做到这一点。我现在需要将这些样本“映射”到该点上方的半球——这就是我正在努力解决的问题。
    • “采样结果”是指,例如,沿采样方向传入的辐射。这完全取决于您要采样的内容。如果您还没有,我建议您购买并阅读pbrt.org 书。这是一个经典的文本,所有这些问题都被面对和解释。
    猜你喜欢
    • 2017-06-06
    • 2014-02-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 2014-09-08
    • 2021-06-16
    • 2018-09-07
    • 2016-01-10
    相关资源
    最近更新 更多