Камера OpenGL с 3 векторами - PullRequest
       40

Камера OpenGL с 3 векторами

3 голосов
/ 24 сентября 2011

Хорошо, поэтому я следовал этому руководству, чтобы помочь мне сделать камеру в OpenGL: http://nehe.gamedev.net/data/articles/article.asp?article=08

Итак, я последовал этому, и после некоторой борьбы, наконец, нашел решение, где у меня теперь было 3 вектора, которые представляли 3 оси моей камеры.

Проблема, хотя? Я не могу понять, как использовать эту информацию, чтобы действительно получить правильные вращения / переводы! Я попытался использовать gluLookAt, используя положение камеры для первых параметров, затем ось Z камеры для цели и ось Y для параметров вверх. В результате камера никогда не перестает смотреть на одну точку, независимо от того, двигаюсь ли я вверх / вниз / влево / вправо, а повороты ведут себя еще более странно ...

Я полностью ошибаюсь? Я рассмотрел использование кватернионов для вычисления необходимых мне преобразований, но не могу понять, как получить нужные мне параметры / как начать ... по сути, я просто хочу начать с простой FPS-подобной камеры где я могу передвигаться и смотреть вверх / вниз и в стороны (раньше у меня это было в основном работает, за исключением того, что когда я смотрел вверх, а затем поворачивался, вращение облажалось ...)

Общая или конкретная помощь будет высоко ценится! Потому что я работаю над этим часами, а ситуация просто не улучшается ...

Подводя итог ... Мне нужна помощь в создании камеры, которая может поворачивать / наклонять / вращать ... не зацикливаясь на одной точке.

EDIT: Итак, очевидно, что вращение в правильном порядке действительно может помочь! Дурак я. Несмотря на это, мне все равно было бы интересно узнать, как, если бы я мог использовать три оси своей камеры, чтобы сформировать кватернион для моих преобразований.

1 Ответ

0 голосов
/ 24 сентября 2011

Я пытался использовать gluLookAt, используя положение камеры для первых параметров, затем ось Z камеры для цели и ось Y для параметров вверх.

Второй набор параметров - не направление взгляда, а позиция взгляда . Вам нужно взять положение камеры и сместить ее по оси Z, чтобы получить положение взгляда в том направлении, в котором вы хотите смотреть.

Несмотря на это, мне все равно было бы интересно узнать, как, если бы я мог использовать три оси своей камеры, чтобы сформировать кватернион для моих преобразований.

Да. Вы превращаете их в матрицу, а затем конвертируете матрицу в кватернион. Есть много интернет-ресурсов, которые объясняют процесс преобразования матрицы вращения в кватернион.

...