【问题标题】:Raytracing the 'sunshape'光线追踪“太阳形状”
【发布时间】:2013-06-18 09:21:54
【问题描述】:

这是基于我提出的问题here,但我想我可能以错误的方式提出了这个问题。这是我的问题: 我正在写一个科学的射线追踪器。 IE。尽管概念相同,但不适用于图形。

我从水平面向抛物面发射光线,焦距为 100m(和完美的镜面反射)。我在菜的焦点上有一个目标。光线不是从平面垂直发射,而是受到一定角度的扰动,以模拟太阳不是点源而是天空中的圆盘这一事实。

然而,来自太阳的通量在太阳圆盘上并不是径向恒定的。中间比边缘更热。如果你曾经在朦胧的日子里看过太阳,你会看到太阳周围有一个环。

由于是抛物面,Target 上的反射图像应该是太阳的图像。即它应该在中间比边缘更亮(更热,更多通量)。这是由强度与强度的图表给出的。到中心的径向距离

有两种方法可以模拟这个。

首先:均匀采样:每条光线都以相等(均匀)的概率从 0 和太阳圆盘大小之间的角度射出。然后,我根据该角度对应的通量值缩放射线携带的通量。

二:任意采样:每条光线都是根据Intensity Vs的分布从平面射出的。径向距离。因此,朝向外边缘的光线将比中心内的光线。这对我来说似乎更有效率。但我无法让它工作。有什么建议吗?

这就是我所做的:

一致

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 是一个均匀随机数,theta 是太阳圆盘的对角。

任意抽样

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

其中B 是使用第 27 页 here 上的算法从任意分布生成的随机数。

我急于解决这个问题。

【问题讨论】:

  • 这永远不会真正问问题。
  • 我相信您正在尝试做的事情称为“重要性抽样”,是的,如果您可以让它发挥作用,它应该会更有效。

标签: graphics raytracing sampling montecarlo


【解决方案1】:

您的函数降至零,并且由于太阳不是表面光滑的物体,这可能是错误的。有可能在太阳的各个部分向各个方向发射光子。

但是:您的实际问题是什么?

【讨论】:

  • 如何对任意分布的半球进行采样。但我想我的路线问题是:“我如何生成光线,根据任意分布给它们一个方向”(这有意义吗?如果我的解释难以理解,我很抱歉。尽我所能使其易于理解。会图片帮助?)
【解决方案2】:

您正在寻找Monte-Carlo integration。 关键思想是:尽管您将在圆盘外采样较少的光线,但您将对这些光线进行更多加权,并且它们将对总和具有更高的重要性。

使用均匀采样时,您只需将强度值相加,而使用非均匀采样时,您将每个强度除以所发射光线的概率分布值(例如,对于均匀分布,该值是一个常数,不会改变任何东西)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多