Нужно ли 3D движку анализировать все объекты карты перед рендерингом?
Нужно ли 3D-движку анализировать каждый объект на карте, чтобы увидеть, будет ли он визуализирован или нет. Насколько я понимаю, что линия от центра проекции до пикселя в плане вида, движок найдет ближайший план, который пересекается с ним, но не значит ли это, что для каждого пикселя движок должен анализировать все объекты в карта, есть ли способ ограничения анализируемых объектов.
Спасибо за вашу помощь.
1 ответ
Такая процедура называется алгоритмом отсечки.
Вы также можете найти больше информации об этом здесь: -
- https://en.wikipedia.org/wiki/Viewing_frustum (вики)
- http://www.lighthouse3d.com/tutorials/view-frustum-culling/
- http://www.cse.chalmers.se/~uffe/vfc.pdf (лучше, но трудно читать)
ИМХО, эта последняя ссылка похожа на ту, что упоминал Нико Шертлер в комментарии.
Помните, что вы ищете не то же самое, что " выборка окклюзии" (другая связанная ссылка " Самый эффективный алгоритм для уровня сетки, оптимальная выборка окклюзии?)", Которая является еще одной оптимизацией, когда объект полностью скрыт за другим.
Обратите внимание, что большинство игровых движков рендерится по объектам (пакет из множества треугольников - через вызовы отрисовки, грубо говоря), а не путем отслеживания каждого пикселя ( трассировка лучей), как вы, возможно, понимаете.
Трассировка лучей слишком дорога в большинстве приложений реального времени.