Glm :: rotate () не работает для матрицы просмотраC++

Программы на C++. Форум разработчиков
Anonymous
Glm :: rotate () не работает для матрицы просмотра

Сообщение Anonymous »

Я работаю над созданием матрицы представления для 3D -игрового двигателя. Это первый двигатель, который я сделал, и я не использую для OpenGL или матриц в целом. Я могу получить тот же код для работы для матрицы модели объекта, но когда я использую его для матрицы представления, все разрывается.

Код: Выделить всё

glm::mat4 getViewMatrix(Transform& camTransform) {

glm::mat4 view = glm::mat4(1.0f);
view = glm::rotate(view, glm::radians(camTransform.Rotation.x), glm::vec3(1, 0, 0));
view = glm::rotate(view, glm::radians(camTransform.Rotation.y), glm::vec3(0, 1, 0));
view = glm::rotate(view, glm::radians(camTransform.Rotation.z), glm::vec3(0, 0, 1));
view = glm::translate(view, -camTransform.Position);

return view;
}
Transform содержит 3 Glm :: Vec3 положение, вращение и масштаб. Я думал, что так будет проще по сравнению с использованием Glm :: lookat () .
Основная проблема, с которой я столкнулся, заключается в том, что первые два вращения (независимо от того, являются ли они x, y или z), но последнее вращение работает только на глобальной оси, а не на местной оси. Мне действительно нужна помощь, потому что я смотрел по всему Интернету, и все они используют обзор без каких -либо установленных позиций или вращений и используют математику, которая меня смущает.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... iew-matrix

Вернуться в «C++»