OpenGL GLUT Перспектива - PullRequest
       3

OpenGL GLUT Перспектива

1 голос
/ 06 ноября 2011

Я строю масштабную модель зданий и ландшафта. Я использую openGL и GLUT и функцию gluperspective. Я знаю, что последние два параметра функции определяют путь z-отсечения и могут быть только положительными. Ну, у меня есть вещи, которые отображаются с отрицательным значением z. Ну, это становится обрезанным, что имеет смысл. Кто-нибудь есть предложение о том, как остановить это от обрезки моих вещей с отрицательным значением Z? Мой звонок в гиперперспективу ниже.

gluPerspective(50.0, (double)w / (double)h, 1.0, 300.0);

1 Ответ

2 голосов
/ 06 ноября 2011

Существует разница между значением zbuffer и значением z в трехмерном пространстве.Представьте, что у вас есть камера, и вы подносите ее к глазу.1.0 - это экран камеры (т. Е. Ближайший к вам объект), а 300.0 - самый дальний, который может видеть камера.Они определяют «диапазон» zbuffer (который устанавливает отсечение).

А что если у вас есть объект позади вас?Ну тогда z-VALUE (не z-буфер) отрицателен.Как вы это видите?Просто повернитесь (эффективно направляя камеру в новом направлении. Z-буфер остается прежним (т.е. объекты ближе 1.0 или дальше 300.0 не видны), но объект с отрицательным z-ЗНАЧЕНИЕМ не виден.

Итак, с помощью gluPerspective вы настраиваете матрицу перспективы (т. Е. Поле и поле обзора камеры). Затем, чтобы увидеть объекты позади вас, вам необходимо настроить матрицу вида (т. Е. Ориентацию камеры).

Редактировать : чтобы увидеть материал с отрицательным z-ЗНАЧЕНИЕМ (без поворота), переместите камеру назад (т.е. измените матрицу обзора, чтобы она была расположена дальше назад).

...