转换3D->;二维坐标

转换3D->;二维坐标,3d,3d,我正在研究一种光线跟踪器,我认为它可能非常新颖,但我正在努力将一个矢量3映射到它对应的2D屏幕坐标。我已经搜索并找到了一些关于这个主题的不同观点,但它们总是给我错误的结果 鉴于: 透视摄像机(由位置、上、右、左矢量组成) 表示空间中我要映射回屏幕的3D点的向量 拥有: 我有一个函数,它将获取一个(x,y)坐标和一个摄影机对象,它将返回一个向量(x,y,z) 想要: 一个功能,做反向-即采取一个三维世界坐标和相机,并给我回(x,y)坐标作为回报 我尝试了几种方法来实现这一点,但都返回了不正确的数据

我正在研究一种光线跟踪器,我认为它可能非常新颖,但我正在努力将一个矢量3映射到它对应的2D屏幕坐标。我已经搜索并找到了一些关于这个主题的不同观点,但它们总是给我错误的结果

鉴于:

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

拥有:

我有一个函数,它将获取一个(x,y)坐标和一个摄影机对象,它将返回一个向量(x,y,z)

想要: 一个功能,做反向-即采取一个三维世界坐标和相机,并给我回(x,y)坐标作为回报

我尝试了几种方法来实现这一点,但都返回了不正确的数据


谢谢大家!

你要找的是投影矩阵。将某个3D点乘以该矩阵,将其投影到某个2D观察面上,在本例中为计算机屏幕

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


我回答了之前关于这方面的几个问题,您可能会发现它们很有用。如果不是我的答案,那么其他用户的评论也是


您的
相机
对象是否提供透视矩阵,或FOV和纵横比?