как узнать текущие координаты всех вершин, используя OpenGL - PullRequest
0 голосов
/ 21 октября 2019

Я делаю программу с использованием Visual C ++ и OpenGL. Сначала эта программа загружает файл .obj (например, куб), а затем поворачивает этот объект на любой угол.

После поворота я хотел бы узнать новые координаты (x, y, z)всех вершин этого объекта.

Как я могу это сделать с помощью OpenGL?

Я просто хочу создать новый файл .obj, но с новыми значениями для всех вершин.

Новый файл .obj должен изначально показывать тот же объект, но с таким вращением.

РЕДАКТИРОВАТЬ: В этот момент я могу загрузить файл .obj, а затем повернуть этот объект безлюбая проблема. До этого момента все работало идеально. Однако я не знаю, как я могу прочитать новые координаты, достигнутые всеми вершинами после поворота.

1 Ответ

0 голосов
/ 21 октября 2019

Итак, у вас есть модель матрицы, связанная с вашим кубом. Когда вы поворачиваете матрицу модели, ориентация кубов изменится, но вы заметите, что это не влияет на положение вершин кубов. Простой способ получить эти новые повернутые вершины - это перебрать все ваши вершины, умножив матрицу модели на каждую позицию:

for (int i = 0; i < vertices.size(); i++)
{
    // first convert each vertex position to a vec4 to allow for matrix multiplication
    vec4 pos(vertices.at(i).Position, 1.0f);
    // multiply vec4 vertex by the model matrix (mul. order is important)
    vec4 modelPos = model * pos;
    // convert back to a vec3
    vec3 newPos(modelPos[0], modelPos[1], modelPos[2]);
    // store it in a new vector
    updatedVertices.at(i).Position = newPos; 

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...