GLES20如何在平移和旋转顶点后获得顶点的全局位置

时间:2016-07-14 09:22:51

标签: android gles20

我有一个顶点(我不会在场景中显示/渲染)

float vertex[] = {
            1.0f, 1.0f, 1.0f,
};

我有一个网格,我用它翻译和旋转:

Matrix.translateM(World.mModelMatrix, tmOffset, globalPositionX, globalPositionY, globalPositionZ);


Matrix.rotateM(World.mModelMatrix, rmOffset, globalRotationZ, 0, 0, 1);
Matrix.rotateM(World.mModelMatrix, rmOffset, globalRotationY, 0, 1, 0);
Matrix.rotateM(World.mModelMatrix, rmOffset, globalRotationX, 1, 0, 0);

如何将这些平移和旋转应用于顶点,并在其后获取其全局位置(x,y,z)?

1 个答案:

答案 0 :(得分:0)

使用Matrix.multiplyMV方法:

float vertex[] = { 1.0f, 1.0f, 1.0f, 1.0f };
float result[] = { 0.0f, 0.0f, 0.0f, 0.0f };

Matrix.multiplyMV(result, 0, matrix, 0, vertex, 0);

请注意,您必须向矢量添加一个齐次坐标才能使其正常工作。