3D-программирование

Был бы признателен за хорошее объяснение Frustum Culling в программировании 3D-графики, пожалуйста. Мне нужно изучить 3D (до этого момента я никогда серьезно не занимался графическим программированием), и мне немного трудно понять некоторые термины, используемые в руководстве и книгах, с которыми я работаю.

В настоящее время я пытаюсь прочитать спецификации Java 3D API, так как книги кажутся такими же, как и эта.


person user272671    schedule 20.06.2012    source источник
comment
Вам нужно реализовать это или просто хотите узнать об этом?   -  person Dan W    schedule 20.06.2012


Ответы (2)


  • Ваша камера смотрит в каком-то направлении, давайте назовем это вперед.
  • Есть объекты, которые есть везде.
  • Объекты, которые не находятся перед камерой, не нужны для рендеринга.
  • Объекты слишком далеко не будут видны.
  • Объекты слишком близко будут вести себя плохо (заполнять весь экран и т.д.).

Решение: Удалите все объекты, которые не находятся в поле зрения, находятся слишком близко или слишком далеко. Форма включенной области — «усеченный конус, а вы — «выбраковывать все, что не находится внутри него.

person zebediah49    schedule 20.06.2012

«Усеченная пирамида» — это область 3D-сцены, за пределами которой ничего не рисуется. Это усеченная пирамида, ограниченная границами видимости экрана с 4 сторон, а также границами «ближней» и «дальней» видимости (обычно перпендикулярными направлению взгляда), которые также определяются матрицей камеры.

Графические примитивы, отрисовываемые с помощью 3D API, обрезаются до усеченной плоскости: отображается только та часть примитива, которая находится внутри усеченной пирамиды. Примитивы, находящиеся полностью за пределами усеченного конуса, вообще не появятся.

Однако, даже если ваш примитив не появляется на экране, попытка нарисовать его не бесплатна: каждый примитив, отправленный на аппаратное обеспечение, требует времени. И, поскольку примитивы, полностью находящиеся за пределами усеченной пирамиды, вообще не появляются, это напрасная трата времени.

Таким образом, отбраковка усеченной пирамиды — это предварительная сортировка либо примитивов, либо (что более экономично) целых объектов, чтобы определить, полностью ли они находятся за пределами усеченной пирамиды видимости. Когда он определяет, что объект или примитив находится за пределами усеченной пирамиды, отбраковка усеченной пирамиды экономит время, поскольку вообще не пытается его отрисовать.

person comingstorm    schedule 20.06.2012