Я внедрил камеру первого лица в OpenGL, но когда я приближаюсь к объекту, он начинает исчезать, поэтому я хочу установить вблизи плоскости близко к нулю, чтобы я мог приблизиться к объектам. Поэтому, если кто-нибудь может сказать мне, что это лучший способ сделать это. Спасибо.Установка вблизи плоскости в OpenGL
ответ
Так что если кто-нибудь может сказать мне
Вопрос в том, как дать хороший первый параметр gluPerspective – Calvin1602
@ Calvin1602: Отрицательный. Первым параметром gluPerspective является FOV. Что не имеет никакого отношения к znear и исчезающим объектам. – SigTerm
Кто знает, что означает параметр zNear? – Luca
Ближайшая плоскость устанавливается, когда вы устанавливаете матрицу проекции с помощью glFrustum или glOrtho. Одним из параметров является ближайшая плоскость. Обратите внимание, что расстояние до ближайшей плоскости должно быть> 0.
У вас не так много вариантов.
- Cast некоторых лучи от камеры (например, в 4-х углах и в центре), кратчайший минус эпсилон, прикрепленный к приличному значению> 0. 0.1f будет делать.
- Просто запретите камеру быть здесь, в первую очередь! Для этого вы можете связать его с сферой в вашем физическом движке, проверить, не пересекается ли что-то, и что он делает, переместите его (как и куда двигаться, это ваша проблема, поскольку для большей части игрового процесса подумайте о Super Mario Galaxy)
Никогда не устанавливайте слишком мало вблизиPlane. Вы будете сталкиваться с проблемами точности с вашим z-буфером. FarPlane может быть довольно большим. Значения типа (0,1, 1000) могут быть в порядке в зависимости от вашей заявки
Фактически, дело в том, что отношение между ближним и дальним. Он напрямую связан с точностью Z-буфера. – Bahbar
Да, но это означает, что небольшое изменение в zNear принесет вам гораздо большую точность, чем то же изменение в zFar. Итак, как правило, вы вообще хотите увеличить zNear. (0,2/1000 намного лучше 0,1/999,9) – Calvin1602
Другие ответы сосредоточены на использовании перенасыщения. Глют не рекомендуется для профессионального или даже современного развития, и OP ничего не говорит об использовании избыточного раствора - просто OpenGL. Таким образом, я буду звонить в:
Немного предыстории
zNear
, расстояние от начала координат до ближайшей плоскости отсечения, является одним из параметров, используемых для построения матрицы проецирования:
Проекция Матрица
Где
SYMBOL MEANING TYPICAL VALUE
------ -------------- -------------
fov vertical field of view 45 – 90 degrees
aspect Aspect ratio around 1.8 (frame buffer Width/Height)
znear near clip plane +1
zfar far clip plane. 10
SYMBOL MEANING FORMULA
---------- ------------------------------- --------------
halfHeight half of frustum height at znear znear∗tan(fov/2)
halfWidth half of frustum width at znear halfHeight×aspect
depth depth of view frustum zfar−znear
(Более красиво отформатированная версия на http://davidlively.com/programming/graphics/opengl-matrices/perspective-projection/)
Когда перспектива разрыв происходит - между вершинными и фрагментными шейдерами - вершины преобразуются в нормализованные координаты устройства (NDC), в " клип ». В этом пространстве будет отображаться все, что помещается в поле 2x2x1 (x, y, z). Любые фрагменты, которые не помещаются в поле с углами (-1, -1, 0) - (+1, +1, +1), будут обрезаны.
Практическая Upshot Being
Это не имеет значения, что ваши zNear
и zFar
значения, до тех пор, как они предлагают достаточное разрешение & точность и zFar является> zNear.
Ваша система обнаружения столкновений & отвечает за то, что камера не находится слишком близко к геометрии. «Слишком близко» - это функция ваших zNear и границ геометрии. Даже если у вас есть zNear 1E-9, геометрия будет обрезана, когда она станет слишком близкой к месту происхождения клипа.
Итак: устраните обнаружение столкновений и перестаньте беспокоиться о своем zNear.
- 1. Установка плоскости в 2D-массив
- 2. Поиск координат плоскости изображения OpenGL
- 3. Рисование сцены в плоскости xz opengl
- 4. Проблемы с созданием плоскости OpenGL из треугольников
- 5. Дальше выведенный объект перед вблизи объекта (OpenGL)
- 6. Установка равномерны в OpenGL
- 7. Поиск/замена границ координатной плоскости OpenGL ES
- 8. Провести произвольную плоскость из уравнения плоскости, OpenGL
- 9. OpenGl es 2.0 Вращение 2D-плоскости
- 10. OpenGL - Вращение плоскости вокруг определенной оси?
- 11. Opengl ES - рисование плоскости с несколькими вершинами
- 12. Мерцающие плоскости
- 13. Установка фона в OpenGL android
- 14. Установка размера окна в OpenGL
- 15. Как узнать, сколько единиц в плоскости экрана в OpenGL
- 16. Как определить нормальный вектор в плоскости зрения в OpenGL?
- 17. Установка OpenGL для Qt
- 18. В Eclipse установка классов как просмотреть список сил вблизи
- 19. В Opengl, недалеко от плоскости и плоскости изображения то же самое?
- 20. OpenGl И мерцание
- 21. Каков правильный способ рисования искаженной плоскости в OpenGL?
- 22. Эффективный рендеринг окклюзионного поля плоскости зрения в OpenGL
- 23. Рисунок 3d-плоскости в opengl с учетом двух векторов
- 24. Уравнение плоскости плоскости MATLAB
- 25. Внутренние плоскости в кубе видны под некоторыми углами
- 26. Установка OpenGL 4.0 на OSX
- 27. установка максимальных кадров в секунду в openGL
- 28. Установка OpenGL на Ubuntu 13.10
- 29. Гомография от плоскости 3D до плоскости, параллельной плоскости изображения
- 30. Установка библиотек OpenGL/Glut в Ubuntu
Другое решение этого вопроса. Сделайте свой ограничивающий прямоугольник большим, чем плоскость ближнего обзора. –