一点背景
我正在用 C++ 编写一个简单的光线追踪器。我已经完成了大部分核心,但不明白如何检索图像平面上像素的世界坐标。我需要这个位置,以便我可以将光线投射到世界上。
目前我有一个带有位置(又名我的透视参考点)的相机,一个未标准化的方向(矢量)。方向长度表示图像平面的中心以及相机朝向的方向。
还有其他与相机相关的值,但它们不应该相关。
我的图像坐标范围从 -1 到 1,视角(焦距)将根据与相机相关的方向的距离而变化。
我需要什么帮助
我需要从像素坐标(例如图像中每边 256 像素的 [0, 256])到我的世界坐标。
我还想对此进行编程,以便无论相机放置在哪里以及指向哪里,我都可以在世界坐标中找到像素。(目前相机几乎总是以原点为中心,并且会向下看负 z 轴。我想在编程时考虑到未来的变化。)知道这段代码是否应该被推到我的线程代码也是如此。否则它将由主线程计算,然后在线程代码中使用射线。
(来源:in.tum.de)
我没有制作这个图像,它只是为了说明我需要什么。
如果您需要任何其他信息,请留下评论。否则,我想要一个简单的理论/代码示例来说明该做什么。