基于前向的光线追踪器

Forward based ray tracer in C++

本文关键字:光线追踪 于前      更新时间:2023-10-16

我正在用c++制作一个光线追踪器,需要它是基于向前的(源到检测器)而不是基于向后的(检测器到源)。我需要它,因为我用它来模拟特定的材料及其与光相互作用时的特性。

有很多光线跟踪教程可用于向后方向,这是可以理解的,因为它在为图形目的编写光线跟踪时更有意义,但我找不到任何好的向前方向跟踪(光源到检测器)

有没有人知道任何好的基于前向的教程,或者有一个基于前向的光线追踪器,他们不介意我建立在非营利目的?

我曾经写过一个光线追踪器,有一个简单的原因,即向前光线追踪器不可能(或大多数肯定不可能)编写。如果场景很复杂,你就没有办法知道在哪里发射光线来照射探测器上的每一个像素。

你可以做的是做反向光线追踪,然后,当你已经知道光线将跟随的路径时,做正向追踪来计算一些额外的数据。

这是一个优化的问题,光线追踪器能够在太阳变成红巨星之前追踪到一个场景。盲目地对一个复杂的场景进行前向光线跟踪需要跟踪很多光线,直到生成图像。基本上,你不能保证选定的"源"光线会提前到达图像,所以你必须不断尝试新的光线,直到你幸运地填充了图像。

我不太明白为什么前进的方向是一个要求。当光线从图像中的一个像素跟踪到一个源时,您可以根据需要简单地在向前方向遍历该光线。

看我的回答这个问题,如何处理折射时,光线开始在一个嵌套的对象。在这篇文章中,我描述了模拟光子在介电材料中的传播所需要的步骤。我讨论如何,

  • 为光线追踪设计一个很好的API(如果你使用面向对象的方法),
  • 处理连接两个电介质的接口之间棘手的边界问题,
  • 和应用反射和反射和接口。

还有一个Python项目。