Ssylka

Как Quake обеспечивал видимость сложных 3D-миров?

Quake использовал порталы для определения видимых областей. Сначала строится граф из порталов, соединяющих листья (пространства) карты. Затем выполняется грубая оценка видимости, чтобы определить, какие листья потенциально видны через каждый портал. Далее происходит более точная проверка. Она состоит в последовательном усечении видимых объёмов через цепочки порталов, что позволяет отбросить невидимые объекты.
Как Quake обеспечивал видимость сложных 3D-миров?
Изображение носит иллюстративный характер

Усечение выполняется путем создания разделительных плоскостей между исходным и проходным порталами. Плоскости строятся на основе комбинаций вершин и граней порталов. Целевой портал усекается этими плоскостями, пока не будет доказано, что он полностью невидим или пока не останется минимальный объем. Процесс повторяется для каждого портала, а затем результаты объединяются для каждого листа, чтобы создать PVS (potentially visible set), который показывает, какие листья видны из данного листа.

Используется рекурсивный обход графа порталов, где каждая итерация сужает область видимости. Обход начинается с портала, а затем продолжается через другие порталы, которые потенциально могут быть видимы из исходного. Массив видимых листьев (mightsee) уменьшается по мере прохождения по графу порталов. Если портал или лист больше не видим, ветка рекурсии завершается.

После определения видимости, данные сохраняются в файл BSP, который используется в игре. При этом данные сжимаются для уменьшения размера файла. Вычисления видимости проводятся один раз при компиляции карты, но этот процесс требует значительного времени. Для ускорения процесса можно использовать многопроцессорность, тесты ограничивающих сфер, кэширование плоскостей и другие оптимизации.


Новое на сайте

7756Эпоха пиксельной магии: 10 мультсериалов 90-х, покоривших сердца миллионов 7755Нужно ли спешить со Скрамом: какова основа успешного управления проектами? 7754Смогут ли три крошечных тигренка спасти свой вид от вымирания? 7753Почему Oracle JDBC так медленно работает и как это исправить? 7752Как справиться с разрастанием Makefile и монолитом в Go? 7751Какие настольные игры помогут изучить точные науки в 2025? 7750Как сплотить команду и развить организацию? 7749Холодная война, горячая кровь: загадка убийства Джорджа полка в Салониках 7748Как AI-инструменты экономят время и повышают качество работы? 7747Энергетические секреты: какие устройства безопасно оставить в розетке 7746Италия блокирует китайского AI гиганта DeepSeek из-за опасений о конфиденциальности данных 7745Какие альтернативы Swiper для карусели в 2025 году? 7744Какие роботы уже меняют нашу жизнь и чего ожидать в будущем? 7743Может ли «пупок» Юты быть метеоритом или вздутием соли?