Настройка системы координат для просмотра в перспективе?

Я понимаю концепцию системы просмотра Frustrum; он имеет форму пирамиды, и когда объекты приближаются к центру, они уменьшаются до тех пор, пока, наконец, не обрезаются. Однако при использовании проекционного просмотра, скажем, OpenGL (заголовок: я не использую устаревшие функции), вы настраиваете свою систему координат следующим образом:

orthoExample (слева, справа, снизу, сверху, близко, далеко);

Это все хорошо, но когда дело доходит до перспективы, вещи становятся немного странными.

перспективный пример (field_of_view_y, аспект, ближний, дальний);

Как мне настроить систему координат с помощью такой функции?!? Это не позволяет мне указывать левую, правую, нижнюю, верхнюю части и т. Д. Я знаю, что перспектива - это всего лишь разновидность проекции с усечением...

1 ответ

Решение

Код, найденный здесь, должен прояснить для вас.

Ось Z принимается за центр проекции. tan(fov_y)*near дает вам верх (и минус, низ). аспект - это отношение ширины к высоте, поэтому умножение сверху на аспект дает вам право, а отрицание - слева.

Другие вопросы по тегам