【问题标题】:Rendering equation for Photon Mapping光子映射的渲染方程
【发布时间】:2012-12-04 23:06:02
【问题描述】:

这篇文章有点长,感谢所有阅读本文的人!

因此,对于我自己的个人项目,我正在实现一个光子贴图以与我构建的光线追踪器一起使用,但我无法理解渲染方程。我已经编写了代码来分散一般光子和焦散光子,将它们存储在 KD 树中,并在树中有效地查找它们以用于渲染。

所以渲染方程为: Lr(x,w) = 积分( fr(x, w', w) * Li(x, w') cos(Theta i) * dw'i )

其中 x 是场景中的给定点,w' 是入射光的方向,w 是反射光,Theta_i 是入射角(我认为)。

第一个问题:

这涉及术语 fr(x, w', w),它是 BRDF(双向反射分布函数)。现在我不确定我是否理解正确,但基本上 BRDF 基本上是一个着色功能?也就是说,对于我的程序的基本光线追踪功能,我使用了 phong 反射模型来进行直接照明和反射。重新调整我的 phong 反射代码并用它来表示积分中的 BRDF 是否有效?

第二个问题: 我的另一个问题与我们何时将渲染方程分解为其组件有关。例如,为了计算漫反射,我们这样做:

漫反射 = Integral( fr,d(x, w', w), * Li,d(x,w') cos(theta_i) dw'i)

因此,在任何给定点上,我已经在其周围存储了一堆漫反射光子。根据我对这个方程的理解,我是否只需将每个光子的强度乘以 phong 模型的漫反射分量乘以角度的余弦并将它们全部加起来?

我为该特定段提供的代码如下所示:

Color result = Color(0,0,0) // r = g = b = 0;
for(int i = 0; i < # photons surrounding point x; i ++)
{
   result += Phong_Diffuse(photon_i, x, camera_ray) * photon_i.color * photon_i.angle
}

然后我将它添加到我从直接照明 ( Phong_DIFF_&_SPEC(light_source, x, camera_ray) ) 中获得的颜色和我从镜面反射中获得的颜色中。我在这里做的正确吗?

我似乎没有得到想要的效果。一个原因是因为如果我缩放我的光子以使每个光子具有 Light_source / num_Photons 的强度,那么即使每个位置有数百个光子,它也几乎不会对我的场景产生明显的影响,因为我总共有 500,000 个光子。如果我不缩放我的光子或捏造缩放,颜色仍然看起来不正确。

此外,当我在 Cornell_box 上进行测试时,即使使用漫反射,天花板仍然明显很暗,根据我看到的其他 Cornell 盒子的图片,它应该更亮。

我也不认为我存储光子的方式有问题,因为我尝试直接可视化我的光子(所以整个场景只是由光子所在的彩色点组成)而且它们看起来大致均匀分布并在正确的位置,当我测试我正在收集最接近给定点的光子时,这似乎也有效。

感谢所有费心阅读这篇冗长杂乱无章的文章的人,感谢任何花时间回复的人! =)

【问题讨论】:

    标签: math graphics 3d rendering raytracing


    【解决方案1】:

    对于您的第一个问题,答案是肯定的。 BRDF 只是一个概率分布,它描述了入射方向为i 的光子被反射到方向o(或被吸收)的概率。这也是您的 Phong 模型所描述的。

    对于您的第二个问题,我想您的问题在于比例因子。当您在半径为R 的邻域中收集光子时(无论R 是恒定的,还是随k 个最近的邻居而变化),您必须将您的累积能量除以半径为R 的圆盘面积(并且因此,如果该区域远小于 1,这将提高您的强度)。 Appart 由此看来,您的计算似乎是正确的:您拍摄所有光子及其方向,在 BRDF 中使用它们来查看它们被反射到相机的概率(或者说,当反射到相机时光子的剩余能量有多少) ),然后总结一切。我猜你的 Phong_Diffuse 包含一个漫反射组件(因此得名),如果是这样,那也是正确的。
    另一种可能性是您的漫反射太弱而无法产生可见的漫反射。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      • 2018-05-20
      • 2018-12-01
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多