我正在使用C ++制作Ray Tracer,并且需要它是基于前向的(源到检测器)而不是基于后向的(检测器到源)。我需要这个,因为我在使用它来模拟特定材料及其与光相互作用时的属性。
有许多Ray Tracing教程可用于向后方向,这是可以理解的,因为在为图形目的编写光线跟踪时更有意义,但我找不到任何好的前向跟踪(光源到探测器)。 )
有没有人知道任何好的前瞻性教程,或者有一个基于前瞻性的光线追踪器,他们不会因为非营利目的而建议我这样做?
答案 0 :(得分:1)
我曾经写过一次光线跟踪器,这是一个简单的原因,前向光线跟踪器不能(或者大部分肯定不是)可以写入。如果场景很复杂,你无法知道,在哪里拍摄光线来击中探测器上的每个像素。
您可能要做的是进行后向光线跟踪,然后,当您已经知道光线将跟随的路径时,请执行前向跟踪以计算一些其他数据。
答案 1 :(得分:1)
这是一个优化的问题,光线追踪器能够在太阳变成红巨星之前追踪一个场景。盲目地使用一些复杂的场景进行前向光线追踪需要跟踪许多光线,直到生成图像。基本上你不能保证选定的“光源”光线最终会在图像上结束,所以你必须继续尝试新光线,直到你很幸运能够填满图像。
我不太理解为什么前进方向是必需的。当光线从图像中的像素跟踪到光源时,您可以根据需要简单地沿正向移动该光线。
答案 2 :(得分:1)
请参阅我对此问题的回答How to deal with refraction when the rays start inside of a nested object。在其中,我描述了模拟介电材料中光子传播所需的步骤。我讨论如何,
还有一个合作的Python项目。