双向路径跟踪问题

时间:2016-03-02 02:14:06

标签: path raytracing tracing bidirectional

我正在用C ++为学校编写双向路径跟踪编码,我有一些问题(我在网上找不到有用的解释)

1)为什么EyePath还有一个顶点?

2)当我在EyePath创建过程中计算直接照明时,是否需要考虑前一个顶点的值?我问的是因为我在代码上看到了它但看起来很奇怪。

3)我不太了解如何连接两条路径。随机?每个人都和大家一起?目前我随机连接一个顶点和另一个顶点。

4)PBRT书根据Eyepath和LightPath长度实现贡献。我是否需要知道几何体中的所有物体都是漫反射的?

5)每次弹跳都会在半球中随机产生新光线吗?

所有对象都是漫反射的。

目前,我得到15个样本的结果。

enter image description here

1 个答案:

答案 0 :(得分:1)

  
    

1)为什么EyePath还有一个顶点?     那是你眼睛/相机上的位置样本。对于针孔摄像机,它是一个固定点,但对于有限孔径的薄镜头摄像机,需要进行采样。

         

5)每次弹跳都会在半球中随机产生新光线吗?     这就是BRDF的用途。如果你不在乎重要的采样,那么半球上的随机均匀是最简单的。无论如何,请阅读PBRT书中的蒙特卡洛抽样章节。

  

我猜你是蒙特卡洛射线追踪的新手。双向路径跟踪是基于路径跟踪,光跟踪和重要性采样的高级算法。因此,在进行双向编码之前,请确保您已经理解了这些技术〜

PS:刚刚找到了双向路径跟踪实现的详细解释(9部分系列):http://rendering-memo.blogspot.com/2016/03/bidirectional-path-tracing-1-kickoff.html