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 ответ

Решение

Использовать 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);

Обратите внимание, что вам нужно будет добавить однородную координату к вашему вектору, чтобы он работал.

Другие вопросы по тегам