Проекционные матрицы OpenGL - PullRequest
1 голос
/ 10 марта 2009

У меня есть вопрос о том, как взять зрителя и плоскость его проекции и как точно рассчитать проецируемую точку, которая должна быть создана.

EX. Зритель в начале координат, смотрит в отрицательном направлении Z. Плоскость проекции при z = -2. Точка (-6,1, -4).

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

Я бы предположил, что точка зрения моего зрителя видится как она в начале координат (0, 0, 0, 1). Когда я ищу матрицу перспективной проекции, я нахожу сайт, который устанавливает такую ​​матрицу.

1 0 0 0
0 1 0 0
0 0 0 0
0 0 1 0

Но поскольку точка зрения моего зрителя, насколько я могу судить, находится в точке (0, 0, 0, 1), тогда проекция не имеет смысла относительно того, как она учитывает уравнение. Эту матрицу также необходимо настроить в соответствии с формулой, чтобы настроить ее на этом сайте:
http://www.cs.nps.navy.mil/people/faculty/capps/iap/class2/viewing/projection.html

Мне просто нужна небольшая помощь в выяснении этого, и то, что мы обсуждали в классе, использовало только похожие треугольники, что не имеет смысла для меня ...

Ответы [ 3 ]

3 голосов
/ 13 марта 2009

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

Преобразование камеры достигается путем применения обратного преобразования камеры в качестве первой матрицы в стеке моделей.

Расширенное программирование графики с использованием openGL

Преобразование OpenGL

0 голосов
/ 21 сентября 2010

Я подробно рассказываю о выводе матрицы проекции (opengl) на моем сайте. Вы можете посмотреть здесь

http://divineabomination.blogspot.com/2009/12/derivation-of-perspective-matrix-part-1.html

и вторая часть доступна там же из меню справа.

0 голосов
/ 10 марта 2009

Подумайте о том, чтобы прочитать матрицы OpenGL, используя функции glGet...(), и самостоятельно запустить вершину через соответствующие матрицы. Сначала прочитайте, конечно, детали конвейера преобразования, чтобы вы знали, как применять матрицы, как всегда важен порядок.

...