Я пытался использовать родительско-дочерний подход со стандартной матрицей модели для матрицы представления. Эта модельная матрица представляет собой плечо камеры и объект камеры, являющийся родительским элементом. Мне нужна камера в стиле RTS, которая вращается вокруг точки, поэтому, если вы повернете основание камеры, камера будет вращаться вокруг основания камеры. По какой-то причине она не работает должным образом, поэтому я решил использовать что-то другое — функцию в glm, которая называется Lookat.
Функция работает отлично. Мой объект все еще находится в центре, когда я поворачиваю камеру, чего я и хочу. Однако есть огромная проблема... Координаты всех моих объектов перевернуты. То, что было справа, теперь оказалось слева, а текстура также перевернута.
Я недостаточно разбираюсь в математике, чтобы понять, что происходит.
Вот мой взгляд на строку:
Код: Выделить всё
camera->view = glm::lookAt(
camera->lens->transform->position->ToGLM(),
camera->transform->position->ToGLM(),
glm::vec3(0.0f, 1.0f, 0.0f));
Я не думаю, что сделал что-то смешное в этой строке, и без этой линии все не инвертируется.
Я попробовал инвертировать матрицу, но ничего не получилось.
Просто скажу еще раз, используя матрицу мировой модели для камеры и объектива не сработало, так как вращение основания камеры, казалось, просто вращало объектив на месте. функция просмотра работает, но все перевернуто.
Обновление > Я думаю, что все просто визуализируется сзади, и я перевернул положение камеры на +10 и повернул ее на 180, и она показала мне перевернутое изображение при использовании обычной матрицы.
Почему-то функция просмотра работает неправильно, кто-нибудь знает, как повернуть этот вектор вспять, чтобы он указывал в другом направлении?
Как я могу это исправить? это?
Нормальная матрица и не перевернутая
Посмотрите на перевернутую функцию
Подробнее здесь: https://stackoverflow.com/questions/798 ... t-function
Мобильная версия