将3D坐标转换为2D坐标

4
我正在开发一个光线追踪器,并想到了一些可能很新颖的东西,但我在将Vector3映射到相应的2D屏幕坐标时遇到了困难。我搜索并找到了几种不同的方法,但它们总是给我错误的结果。
已知:
透视相机(由位置、上、右和左向量组成)
表示要映射回屏幕的三维空间点的向量
现有:
我有一个函数,它会接受一个(x,y)坐标和一个相机对象,并返回一个向量(x,y,z)
期望:
编写一个反向函数 - 即接受3D世界坐标和相机,并返回(x,y)坐标...
我尝试了几种方法来做到这一点,但它们都返回不正确的数据。
谢谢!

你的 Camera 对象提供透视矩阵还是视场角和宽高比? - cmannett85
2个回答

0
你需要的是投影矩阵。通过将某个3D点乘以该矩阵,可以将其投影到某个2D视图表面上,例如计算机屏幕。
我知道你没有使用OpenGL,但是这个链接详细介绍了OpenGL如何构建这样的矩阵:

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


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接