Положение объектов переворачивается при использовании функции glm::lookat()C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Положение объектов переворачивается при использовании функции glm::lookat()

Сообщение Anonymous »

Я пишу игровой движок на OpenGL и C++ и только начинаю работать с элементами управления камерой.
Я пытался использовать родительско-дочерний подход со стандартной матрицей модели для матрицы представления. Эта модельная матрица представляет собой плечо камеры и объект камеры, являющийся родительским элементом. Мне нужна камера в стиле RTS, которая вращается вокруг точки, поэтому, если вы повернете основание камеры, камера будет вращаться вокруг основания камеры. По какой-то причине она не работает должным образом, поэтому я решил использовать что-то другое — функцию в glm, которая называется Lookat.
Функция работает отлично. Мой объект все еще находится в центре, когда я поворачиваю камеру, чего я и хочу. Однако есть огромная проблема... Координаты всех моих объектов перевернуты. То, что было справа, теперь оказалось слева, а текстура также перевернута.
Я недостаточно разбираюсь в математике, чтобы понять, что происходит.
Вот мой взгляд на строку:

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

camera->view = glm::lookAt(
camera->lens->transform->position->ToGLM(),
camera->transform->position->ToGLM(),
glm::vec3(0.0f, 1.0f, 0.0f));
Для нахождения вектора взгляда требуется основание камеры (0,0,0) и объектив камеры (0,0,-10).
Я не думаю, что сделал что-то смешное в этой строке, и без этой линии все не инвертируется.
Я попробовал инвертировать матрицу, но ничего не получилось.
Просто скажу еще раз, используя матрицу мировой модели для камеры и объектива не сработало, так как вращение основания камеры, казалось, просто вращало объектив на месте. функция просмотра работает, но все перевернуто.
Обновление > Я думаю, что все просто визуализируется сзади, и я перевернул положение камеры на +10 и повернул ее на 180, и она показала мне перевернутое изображение при использовании обычной матрицы.
Почему-то функция просмотра работает неправильно, кто-нибудь знает, как повернуть этот вектор вспять, чтобы он указывал в другом направлении?
Как я могу это исправить? это?
Нормальная матрица и не перевернутая
Посмотрите на перевернутую функцию

Подробнее здесь: https://stackoverflow.com/questions/798 ... t-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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