2

一点背景

我正在用 C++ 编写一个简单的光线追踪器。我已经完成了大部分核心,但不明白如何检索图像平面上像素的世界坐标。我需要这个位置,以便我可以将光线投射到世界上。

目前我有一个带有位置(又名我的透视参考点)的相机,一个未标准化的方向(矢量)。方向长度表示图像平面的中心以及相机朝向的方向。

还有其他与相机相关的值,但它们不应该相关。

我的图像坐标范围从 -1 到 1,视角(焦距)将根据与相机相关的方向的距离而变化。

我需要什么帮助

我需要从像素坐标(例如图像中每边 256 像素的 [0, 256])到我的世界坐标。

我还想对此进行编程,以便无论相机放置在哪里以及指向哪里,我都可以在世界坐标中找到像素。(目前相机几乎总是以原点为中心,并且会向下看负 z 轴。我想在编程时考虑到未来的变化。)知道这段代码是否应该被推到我的线程代码也是如此。否则它将由主线程计算,然后在线程代码中使用射线。

总体思路示例
(来源:in.tum.de

我没有制作这个图像,它只是为了说明我需要什么。

如果您需要任何其他信息,请留下评论。否则,我想要一个简单的理论/代码示例来说明该做什么。

4

1 回答 1

1

基本上你必须做 V * MVP 的逆过程,将点转换为单位立方体尺寸。查看以下网址获取编程帮助 http://nehe.gamedev.net/article/using_gluunproject/16013/ https://sites.google.com/site/vamsikrishnav/gluunproject

于 2013-10-06T07:46:45.237 回答