![]() |
|
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]()
|
|
| VАDIM |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 19.10.2010 Репутация: нет Всего: нет |
Всем добрый день. Есть у меня задача: сделать самодельное проецирование точки и установку камеры. Для проецирования у меня есть матрица CT[4][4] (current transformation). При помощи афиных преобразований я изменяю матрицу CT так: CT = CT * M - где М - овое преобразование, что добавляется к текущему. Тут все понятно. (и в моей проге все работает)
Но есть непонятки у установкой камеры матрицей моделиования вида. Как матрицей V установить позицию камеры в програме? Вот цитата из Френсис Хил OpenGL: "Функция glLookAt строит матрицу V и умножает ее справа на текущую матрицу", но куда помещается результат? Снова в СТ? Тоисть преобразование будет виглядеть так: CT = V * CT? Я все правильно понимаю? Преобразование V также дополняет текущее преобразование камеры, или устанавливает ее заново значениями записаными в СТ? Пожалуйста помогите разобратся, т. к. не получается сделать установку камери в програме. Кто сам пробовал делать установку камери в програме плиз помогите. Вот моя функция LookAt:
Вычисляю ее значения по формулах: n = eye - look; u = up x n; v = n x u; |
|||
|
||||
| VАDIM |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 19.10.2010 Репутация: нет Всего: нет |
Хм, проблема решилась, но как-то сама по себе. Посмотрел на последовалетьность функций OpenGl glMatrixMode(GL_MODELVIEV), glLoadIdentity(), и LootAt() и до меня дошло, что нужно сначало загружать еденичную матрицу, а потом уже устанавливать камеру. Нужно било всего то написать свою функцию LoadIdentity(). Матрица CT ведь единтвенная в конвеере OpenGl. + нужно било изменить функцию LookAt, ниже приводиться рабочий вариант.
|
|||
|
||||
![]()
|
| Вы можете найти полезным что... | |
|
|
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |