Vector 如何将三维空间坐标转换为二维空间坐标?

Vector 如何将三维空间坐标转换为二维空间坐标?,vector,3d,2d,transform,space,Vector,3d,2d,Transform,Space,我使用的是luaapi。我正在尝试将三维空间坐标转换为二维空间坐标。我问过谷歌,但除了使用OpenGL函数的代码片段外,我找不到任何东西。我不需要源代码或任何东西,只要一个简单的方法就可以了?我可以获取相机的透视图、要变换的原始位置、窗口大小和纵横比(如果有帮助的话)?提前感谢您的建议:)如果您正在谈论将世界空间(x,y,z)坐标转换为屏幕空间(u,v)坐标,那么基本方法是: u = x / z; v = y / z; 如果相机不在原点,则在投影矩阵之前通过视图矩阵变换(x、y、z)。您可能还

我使用的是luaapi。我正在尝试将三维空间坐标转换为二维空间坐标。我问过谷歌,但除了使用OpenGL函数的代码片段外,我找不到任何东西。我不需要源代码或任何东西,只要一个简单的方法就可以了?我可以获取相机的透视图、要变换的原始位置、窗口大小和纵横比(如果有帮助的话)?提前感谢您的建议:)

如果您正在谈论将世界空间(x,y,z)坐标转换为屏幕空间(u,v)坐标,那么基本方法是:

u = x / z;
v = y / z;
如果相机不在原点,则在投影矩阵之前通过视图矩阵变换(x、y、z)。您可能还需要调整相机透视、纵横比等,在这种情况下,我会参考


如果您正在查找我不熟悉的Lua API的特定内容,我深表歉意。

要查找哪个空间中的2D坐标?对不起,我是想键入屏幕坐标。请注意,这不是真正的透视投影,而是所谓的“弱透视投影”,这对我来说毫无意义。当z接近0时,x和y接近无穷大。因此,世界空间中的一个向量(1,1,0),如果给定适当的相机设置,它应该是屏幕空间中的(1,1),最终将是(无穷大,无穷大)。@DavidCoombes为什么它没有意义?如果相机位于原点,沿z方向看,它将永远看不到相机上方或右侧的物体,因此x和y应为无穷大。当我想想象它时,我总是使用这个例子:当标志离你越来越近(z越来越接近零),x和y越来越大,标志飞出屏幕。