我正在用C ++编写一个简单的光线跟踪器。我有大部分核心完整但不了解如何检索图像平面上像素的世界坐标。我需要这个位置,以便我可以将光线投射到世界。
目前我有一个带有位置的摄像头(也就是我的透视参考点),一个未标准化的方向(矢量)。方向长度表示图像平面的中心以及摄像机面向的方向。
相机还有其他值,但它们不相关。
我的图像坐标范围为-1到1,视角(焦距)将根据与相机关联的方向的距离而改变。
我需要从像素坐标(比如每边256像素的图像中的[0,256])到我的世界坐标。
我还想对其进行编程,以便无论相机放置在何处以及它的定向位置,我都能找到世界坐标中的像素。 (目前相机几乎总是以原点为中心,向下看负z轴。我想用未来的改变来编程。)知道这个代码是否应该被压入我的内容也很重要。线程代码也是如此。否则它将由主线程计算,然后光线将用于线程代码。
Example of general idea http://campar.in.tum.de/twiki/pub/Students/SepStetter/PinholeCam.gif
我没有制作这张图片,只是在那里想出我需要的东西。
如果您需要任何其他信息,请留下评论。否则我想要一个简单的理论/代码示例来做什么。
答案 0 :(得分:1)
基本上你必须做V * MVP的逆过程,它将点转换为单位立方体维度。查看以下网址以获取编程帮助 http://nehe.gamedev.net/article/using_gluunproject/16013/ https://sites.google.com/site/vamsikrishnav/gluunproject