如何将3D空间坐标转换为2D空间坐标?

Con*_*ros 10 3d 2d space transform vector

我正在使用Lua API.我正在尝试将3D空间坐标转换为2D空间坐标.我问谷歌但除了使用OpenGL功能的片段之外我找不到任何东西.我不需要源代码或任何简单的方法如何做到这一点?如果有任何帮助,我可以获得相机的视角,要转换的原始位置,窗口大小和宽高比?在此先感谢您的任何建议 :)

Ret*_*zan 13

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

u = x / z;
v = y / z;
Run Code Online (Sandbox Code Playgroud)

如果相机不在原点,则在投影矩阵之前通过视图矩阵变换(x,y,z).您可能还想调整相机视角,宽高比等,在这种情况下,我会参考这篇维基百科文章.

如果您正在寻找Lua API特有的东西,我很抱歉,我不熟悉.

  • @DavidCoombes 为什么这没有意义?如果相机位于原点,朝 z 方向看,它将永远无法看到相机上方或右侧的物体,因此 x 和 y 应趋于无穷大。当我想想象它时,我总是使用这个例子:https://www.youtube.com/watch?v=_P00jYB81ZQ 当标志靠近你时(并且 z 接近零),x 和 y 变得更大,旗帜飞出屏幕。 (2认同)