将3D位置转换为2D?

时间:2009-10-14 19:04:03

标签: 3d 2d position relative

假设我有一个3D物体的位置,以及相机的位置和旋转矩阵。

如何将此转换为屏幕上的二维位置?这样我可以画出3D对象吗?

你知道,我使用的引擎只允许使用3D Env + 2D Gui,所以我不能按照常规方法绘制3D,而是按比例放大。

我需要2D平面上物体的X / Y位置。

顺便说一句,在lua中,但这并不重要,因为如果需要,我可以将数学转换为lua。

谢谢偷看, SilentC

2 个答案:

答案 0 :(得分:4)

在数学上,这称为Projection ...

谷歌搜索找到有趣的算法和实现......

答案 1 :(得分:2)

您还需要相机的视野。

让我们说北方是你的2D投影。从您的视轴(沿光轴的线),您将扫描一个北/南组件和一个东西组件。这些角度与平面中的像素位置有关:

X / tan(A)= x / tan(a)

其中X和x是从中心像素测量的,A是以弧度表示的视场(或其一半),a是以弧度表示的x方向的偏差。

Y方向相同。

要从北方旋转,您需要旋转平面中的点。

无论如何都是这样的。 ;)