从opentk中的3d坐标检索投影的2d坐标

时间:2014-06-30 02:02:36

标签: projection opentk

我的C#示例代码发布于: opentk pitch rotation deforms the shape

正如您在代码中看到的,我可以绘制和旋转3d对象。 我想做的是: 给定一个三维坐标(x,y,z),如何得到投影的2d坐标(x,y)?

这是我到目前为止所做的:

    int[] viewport = new int[4];
    Matrix4 modelViewMatrix, projectionMatrix;
    GL.GetFloat(GetPName.ModelviewMatrix, out modelViewMatrix);
    GL.GetFloat(GetPName.ProjectionMatrix, out projectionMatrix);
    GL.GetInteger(GetPName.Viewport, viewport);
    // [x, y] = vec * modelViewMatrix * projectionMatrix * viewport

1 个答案:

答案 0 :(得分:0)

你很亲密。您注释掉的行只包含[x,y]。假设你已经正确地计算了所有的矩阵(假设'vec'是一个三维向量),你可以按照你的注释进行乘法,除了你的结果将是另一个三维向量,你只需忽略你的z值。您的z值通过这些矩阵乘法进行变换,但在图形上它们无法看到(在观察XY平面时)。话虽这么说,取决于你如何看待事物(移动相机VS移动物体),物体被观察的角度可以将3D改变为“2D”转换。