Коллекция алгоритмов окклюзии - PullRequest
7 голосов
/ 27 марта 2009

Алгоритм окклюзии необходим в САПР и игровой индустрии. И они разные в двух отраслях, я думаю. Мои вопросы:

  1. Какие алгоритмы окклюзии применяются соответственно в двух отраслях?
  2. а в чем разница?

Я работаю над разработкой программного обеспечения САПР, и алгоритм окклюзии, который мы приняли, - это установить идентификатор объекта в качестве его цвета (целое число), а затем визуализировать сцену, наконец, прочитать пиксель, чтобы найти видимые объекты. Производительность не очень хорошая, поэтому я хочу получить несколько хороших идей здесь. Спасибо.


После прочтения anwsers, я хочу уточнить, что алгоритмы окклюзии здесь означают «отбраковка окклюзии» - выясните видимую поверхность или объекты перед отправкой их в конвейер.

В Google я нашел алгоритм на gamasutra . Любые другие хорошие идеи или выводы? Благодаря.

Ответы [ 4 ]

5 голосов
/ 27 марта 2009

В играх окклюзия осуществляется за сценой с использованием одной из двух 3D-библиотек: DirectX или OpenGL. Чтобы разобраться в деталях, окклюзия выполняется с использованием буфера Z . Каждая точка имеет компонент Z, точки, которые находятся ближе, перекрывают точки, которые находятся дальше.

Алгоритм окклюзии обычно выполняется аппаратно с помощью специального чипа для обработки 3D-графики, который реализует функции DirectX или OpenGL. Игровая программа, использующая DirectX или OpenGL, будет рисовать объекты в трехмерном пространстве, а библиотека OpenGL / DirectX визуализирует сцену с учетом проекции и окклюзии.

3 голосов
/ 27 марта 2009

Меня удивило, что большинство ответов пока только обсуждают окклюзию порядка изображений. Я не совсем уверен в САПР, но в играх окклюзия начинается на гораздо более высоком уровне, с использованием деревьев BSP, октановых деревьев и / или рендеринга портала для быстрого определения объектов, которые появляются в пределах области просмотра.

2 голосов
/ 27 марта 2009

Вы должны искать термин удаление скрытой поверхности .

Рендеринг в реальном времени обычно использует один простой метод удаления скрытой поверхности: отбор задней поверхности. Каждая поли будет иметь точку «нормали поверхности», которая предварительно рассчитывается на заданном расстоянии от поверхности. Если вы проверите угол нормали поверхности относительно камеры, вы поймете, что поверхность обращена в сторону, и, следовательно, визуализация не требуется.

Вот некоторые интерактивные демонстрации и объяснения на основе флэш-памяти .

1 голос
/ 27 марта 2009

Аппаратная Z-буферизация пикселя - безусловно, самая простая техника, однако в объектных сценах с высокой плотностью вы все равно можете пытаться рендерить один и тот же пиксель несколько раз, что может стать проблемой производительности в некоторых ситуациях. - Вам, безусловно, нужно убедиться, что вы не отображаете и не текстурируете тысячи объектов, которые просто не видны.

В настоящее время я думаю об этой проблеме в одном из моих проектов, и я нашел, что это стимулировало несколько идей: http://www.cs.tau.ac.il/~dcor/Graphics/adv-slides/short-image-based-culling.pdf

...