转换3D - > 2D坐标

时间:2012-02-14 20:34:18

标签: 3d

我正在制作一个光线追踪器,并提出了一些我认为可能非常新颖的东西,但我正在努力将Vector3映射到它相应的2D屏幕坐标。我已经搜索过并发现了几个不同的主题,但他们总是给我错误的结果。

假设:

透视相机(由位置,向上,向右和向左的向量组成) 表示空间中3D点的矢量我想要映射回屏幕

有:

我有一个带(x,y)坐标和一个Camera对象的函数,它给了我一个Vector(x,y,z)

需要: 反向执行的功能 - 即获取3D世界坐标和相机并返回(x,y)坐标作为回报......

我已经尝试了几种方法来执行此操作,并且所有方法都返回了错误的数据。

谢谢!

2 个答案:

答案 0 :(得分:0)

您正在寻找的是一个投影矩阵。您可以将此矩阵乘以一些3D点,将其投影到某个2D观察面上,在我们的例子中是计算机屏幕。

我知道你没有使用OpenGL,但这个链接确切地概述了OpenGL如何构建这样一个矩阵:

http://www.songho.ca/opengl/gl_projectionmatrix.html

答案 1 :(得分:0)

我之前回答过几个问题,你可能会觉得它们很有用。如果不是我的答案,那么其他用户也会发表评论!