Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.120.16] |
|
Сообщ.
#1
,
|
|
|
Хай ол.
Извините за тупой вопрос, но походу из головы у меня уже все геометрия выветрилась. В общем (поправьте если ошибаюсь) в OpenGL система координат левосторонняя, по соглашению ось Z смотрит вперед, X - влево, Y - вверх. Так почему когда рассчитывается видовая матрица через LookAt direction = (center - eye) инвертируется? То есть записывается с -directiuon? хотя up и side вектора рассчитываются с прямым direction? |
Сообщ.
#2
,
|
|
|
Цитата XandoX @ В общем (поправьте если ошибаюсь) в OpenGL система координат левосторонняя, по соглашению ось Z смотрит вперед, X - влево, Y - вверх. Как захочешь - так и будет. Цитата XandoX @ Так почему когда рассчитывается видовая матрица через LookAt direction = (center - eye) инвертируется? То есть записывается с -directiuon? хотя up и side вектора рассчитываются с прямым direction? Направление взгляда eye - center. Хотя я вообще слабо понял, о чем ты |
Сообщ.
#3
,
|
|
|
Цитата OpenGL @ Хотя я вообще слабо понял, о чем ты попробую на пальцах на картинке для камеры применялся lookAt(center={0, 0, 0}, eye={10, 10, 10}, up={0, 1, 0}) для маленькой системы координат inverse(lookAt(center={0, 0, 0}, eye={5, 0, 5}, up={0, 1, 0}) для большой ничего ос X - red, Y = green, Z = blue вот - по моим ощущениям для маленькой системы координат оси X и Z должны смотреть в обратные стороны, то есть Z - должна быть направленна в 0. Но почему-то не так. Вот это и смущает. Прикреплённая картинка
Добавлено Цитата XandoX @ inverse(lookAt(center={0, 0, 0}, eye={5, 0, 5}, up={0, 1, 0}) inverse тут нужен, потому что lookAt выдает видовую матрицу. Добавлено матрица проекции задается через perspective(60, aspect, 0.1, 20); Добавлено в общем экспериметальным путем выяснил, что все таки камера в OpenGL по умолчанию смотрит вдоль -Z (ну то есть в минус бесконечность она смотрит), и реализация lookAt заточена под это. |