我正在制作一个光线追踪器,并提出了一些我认为可能非常新颖的东西,但我正在努力将Vector3映射到它相应的2D屏幕坐标。我已经搜索过并发现了几个不同的主题,但他们总是给我错误的结果。
假设:
透视相机(由位置,向上,向右和向左的向量组成) 表示空间中3D点的矢量我想要映射回屏幕
有:
我有一个带(x,y)坐标和一个Camera对象的函数,它给了我一个Vector(x,y,z)
需要: 反向执行的功能 - 即获取3D世界坐标和相机并返回(x,y)坐标作为回报......
我已经尝试了几种方法来执行此操作,并且所有方法都返回了错误的数据。
谢谢!
答案 0 :(得分:0)
您正在寻找的是一个投影矩阵。您可以将此矩阵乘以一些3D点,将其投影到某个2D观察面上,在我们的例子中是计算机屏幕。
我知道你没有使用OpenGL,但这个链接确切地概述了OpenGL如何构建这样一个矩阵:
答案 1 :(得分:0)
我之前回答过几个问题,你可能会觉得它们很有用。如果不是我的答案,那么其他用户也会发表评论!