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