假设我有一个3D物体的位置,以及相机的位置和旋转矩阵。
如何将此转换为屏幕上的二维位置?这样我可以画出3D对象吗?
你知道,我使用的引擎只允许使用3D Env + 2D Gui,所以我不能按照常规方法绘制3D,而是按比例放大。
我需要2D平面上物体的X / Y位置。
顺便说一句,在lua中,但这并不重要,因为如果需要,我可以将数学转换为lua。
谢谢偷看, SilentC
答案 0 :(得分:4)
在数学上,这称为Projection ...
谷歌搜索找到有趣的算法和实现......
答案 1 :(得分:2)
您还需要相机的视野。
让我们说北方是你的2D投影。从您的视轴(沿光轴的线),您将扫描一个北/南组件和一个东西组件。这些角度与平面中的像素位置有关:
X / tan(A)= x / tan(a)
其中X和x是从中心像素测量的,A是以弧度表示的视场(或其一半),a是以弧度表示的x方向的偏差。
Y方向相同。
要从北方旋转,您需要旋转平面中的点。
无论如何都是这样的。 ;)