【问题标题】:How to calculate screen Cordinates from modelview and projection matrix?如何从模型视图和投影矩阵计算屏幕坐标?
【发布时间】:2017-11-02 13:23:47
【问题描述】:

我有投影、模型视图和模型视图投影矩阵...我的 opengl 对象渲染也可以很好地处理值。

现在我想将其转换为屏幕坐标...如何从该矩阵中获取屏幕坐标?

float[] modelView = target.getViewMatrix();
float[] projection = target.getProjectionMatrix();
float[] modelViewprojection = target.getModelViewProjectionMatrix();
int[] view = {0,0,(int)screenWidth, (int)screenHeight};
float x = screenWidth/2, y = screenHeight/2, z = 0.01f;
float[] pos = new float[4];
GLU.gluProject(x, y, z,
        modelView, 0,
        projection, 0,view, 0,
        pos, 0);
float xpoint = convertPixelsToDp(pos[0],this);
float ypoint = convertPixelsToDp(pos[1],this);

我尝试了上面的代码,它给了我 x 和 y 点,但它们波动太大

有没有其他方法可以在屏幕上获得稳定的 x 和 y 点?

【问题讨论】:

  • > "我想把这个转换成屏幕坐标" 你说的这个是什么意思,你到底想做什么?
  • 嗨@rotoglup 这意味着我有模型视图、投影和模型视图投影矩阵和顶点...我想从中获取屏幕点(屏幕上的 x、y 位置)
  • 只是为了确保:您的意思是在模型坐标系中转换点,使用您的 MVP 矩阵 to 以像素为单位的屏幕坐标?不确定,因为您似乎将“像素坐标”作为输入传递给 gluProject

标签: android opengl-es


【解决方案1】:

您的 API 调用看起来有问题。

GLU.gluProject(x, y, z, modelView, 0, projection, 0,view, 0, pos, 0);

参数顺序看起来不一样:

https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluProject.xml

你用的是什么库?

【讨论】:

  • 嗨...我正在使用本机 android OpenGLES public static int gluProject(float objX, float objY, float objZ, float[] model, int modelOffset, float[] project, int projectOffset, int [] view, int viewOffset, float[] win, int winOffset) 这是我正在使用的函数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
  • 2023-03-11
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
相关资源
最近更新 更多