Введение

Метод отображения окружения в компьютерной графике

В компьютерной графике, кубическое отображение — это метод отображения окружения, использующий шесть граней куба в качестве формы отображения. Окружение проецируется на грани куба и сохраняется в виде шести квадратных текстур или разворачивается в шесть областей одной текстуры. Кубическая карта создается путем первоначального рендеринга сцены шесть раз с одной точки обзора, при этом поле зрения определяется усечённой пирамидой в 90 градусов, представляющей каждую грань куба. Либо, если окружение изначально рассматривается как проекция на сферу, то каждая грань куба является её гномонической проекцией. В большинстве случаев кубическое отображение предпочтительнее более старого метода сферического отображения, поскольку оно устраняет многие проблемы, присущие сферическому отображению, такие как искажение изображения, зависимость от точки обзора и вычислительная неэффективность. Кроме того, кубическое отображение обеспечивает значительно большую возможность поддержки рендеринга отражений в реальном времени по сравнению со сферическим отображением, поскольку сочетание неэффективности и зависимости от точки обзора серьёзно ограничивает применимость сферического отображения при постоянно меняющейся точке обзора. Варианты кубического отображения также широко используются в 360-градусной видеопроекции.

История

Картирование куба впервые было предложено в 1986 году Недом Грином в его статье «Картирование окружения и другие применения мировых проекций», спустя десять лет после того, как картирование окружения было впервые представлено Джимом Блинном и Мартином Ньюэллом. Однако аппаратные ограничения на одновременный доступ к шести изображениям текстур делали невозможным внедрение картирования куба без дальнейшего технологического прогресса. Эта проблема была решена в 1999 году с выпуском Nvidia GeForce 256. Nvidia представила картирование куба в аппаратном обеспечении как революционную функцию повышения качества изображения GeForce 256, которая позволит разработчикам создавать точные отражения в реальном времени. Ускоренное аппаратное картирование окружения кубом позволит разработчикам раскрыть свой творческий потенциал при использовании отражений и зеркального освещения для создания интересных и захватывающих окружений. Сегодня картирование куба по-прежнему широко используется в различных графических приложениях как предпочтительный метод картирования окружения.

Преимущества

Кубическое картирование предпочтительнее других методов картирования окружения из-за его относительной простоты. Кроме того, кубическое картирование даёт результаты, аналогичные тем, которые получаются при трассировке лучей, но гораздо более эффективно с вычислительной точки зрения – умеренное снижение качества компенсируется значительным увеличением производительности. До появления кубического картирования, сферическое картирование имело множество существенных недостатков, делавших его непрактичным для большинства приложений. Сферическое картирование зависит от точки обзора, то есть для каждой точки обзора требуется отдельная текстура. Следовательно, в приложениях с изменяющейся точкой обзора необходимо динамически генерировать новое сферическое отображение для каждой новой точки обзора (или предварительно генерировать отображение для каждой точки обзора). Кроме того, текстура, наложенная на поверхность сферы, должна растягиваться и сжиматься, что напрямую приводит к искажениям и деформациям (особенно по краям сферы). Хотя эти дефекты изображения можно уменьшить, используя определённые приёмы и техники, такие как "предварительное растяжение", это лишь добавляет ещё один уровень сложности к сферическому картированию. Параболоидное картирование обеспечивает некоторое улучшение по сравнению с ограничениями сферического картирования, однако требует двух проходов рендеринга, а также специальных операций по деформации изображения и более сложных вычислений. В отличие от него, кубическое картирование требует только одного прохода рендеринга и, благодаря своей простоте, легко понимается и создаётся разработчиками. Кроме того, кубическое картирование использует всё разрешение текстурного изображения, в отличие от сферического и параболоидного картирования, что также позволяет использовать изображения с более низким разрешением для достижения того же качества. Хотя обработка швов кубической карты является проблемой, разработаны алгоритмы для управления поведением швов и получения бесшовного отражения.

Недостатки

Если в сцену добавлен новый объект или изменено освещение, или если какой-либо объект, отражающийся в ней, перемещается или изменяется, то отражение меняется, и карту окружения необходимо перерисовать. Если карта окружения привязана к движущемуся объекту в сцене, то карту окружения также необходимо перерисовать с новой позиции этого объекта.

Стабильные спекулярные выделения

Программы автоматизированного проектирования (CAD) используют зеркальные блики в качестве визуальных подсказок для передачи ощущения кривизны поверхности при рендеринге 3D-объектов. Однако многие CAD-программы испытывают трудности с дискретизацией зеркальных бликов, поскольку вычисления спекулярного освещения выполняются только в вершинах сетки, используемой для представления объекта, а интерполяция применяется для оценки освещения по всей поверхности. Проблемы возникают, когда вершины сетки недостаточно плотны, что приводит к недостаточной дискретизации спекулярного освещения. Это, в свою очередь, приводит к появлению бликов с яркостью, пропорциональной расстоянию от вершин сетки, что в конечном итоге ухудшает визуальные подсказки, указывающие на кривизну. К сожалению, эту проблему нельзя решить простым увеличением плотности сетки, так как это может значительно снизить эффективность рендеринга объектов. Кубические карты предоставляют относительно простое и эффективное решение для рендеринга стабильных зеркальных бликов. Несколько зеркальных бликов могут быть закодированы в текстуру кубической карты, к которой затем можно получить доступ, интерполируя вектор отражения поверхности для получения координат. По сравнению с вычислением освещения в отдельных вершинах, этот метод обеспечивает более четкие результаты, которые точнее отражают кривизну. Еще одним преимуществом этого метода является его масштабируемость, поскольку дополнительные зеркальные блики можно закодировать в текстуру без увеличения стоимости рендеринга. Однако этот подход ограничен тем, что источники света должны быть удаленными или бесконечно удаленными, хотя, к счастью, это обычно так в CAD-программах.

Скайбокс

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

Освещение потолка

Карты кубов могут быть полезны для точного моделирования наружного освещения. Простое моделирование солнечного света как единого бесконечного источника света чрезмерно упрощает наружное освещение и приводит к нереалистичному результату. Хотя значительная часть света исходит от солнца, рассеяние лучей в атмосфере заставляет всё небо действовать как источник света (часто называемое рассеянным освещением). Однако, используя карту кубов, можно захватить диффузный вклад рассеянного освещения. В отличие от карт окружения, где используется вектор отражения, этот метод обращается к карте кубов на основе вектора нормали поверхности, чтобы обеспечить быстрое приближение диффузного освещения от рассеянного света. Единственным недостатком этого метода является то, что вычисление карт кубов для корректного представления рассеянного освещения – очень сложная задача; одним из последних подходов является вычисление сферической гармонической базы, наилучшим образом представляющей низкочастотное диффузное освещение из карты кубов. Тем не менее, было проведено значительное количество исследований для эффективного моделирования рассеянного освещения.

Динамическое отражение

Основные карты окружения используют статическую карту куба, хотя объект может быть перемещен и искажен, отраженная среда остается неизменной. Однако текстуру карты куба можно последовательно обновлять, чтобы отображать динамически меняющуюся среду (например, деревья, качающиеся на ветру). Простой, но затратный способ генерации динамических отражений заключается в создании карт куба во время выполнения для каждого кадра. Хотя это значительно менее эффективно, чем статическое отображение из-за дополнительных этапов рендеринга, его все еще можно выполнять с интерактивной скоростью. К сожалению, этот метод плохо масштабируется при наличии нескольких отражающих объектов. Обычно для каждого отражающего объекта требуется уникальная динамическая карта окружения. Дополнительные сложности возникают, если отражающие объекты могут отражать друг друга – динамические карты куба могут быть рекурсивно сгенерированы, аппроксимируя эффекты, обычно создаваемые с помощью трассировки лучей.

Глобальное освещение

Алгоритм вычисления глобального освещения в интерактивном режиме с использованием структуры данных в виде кубической карты был представлен на ICCVG 2002.

Текстуры проекции

Еще одно применение, получившее широкое распространение в видеоиграх, — проекционная текстурная проекция. Она использует кубические карты для проецирования изображений окружения на окружающую сцену; например, точечный источник света привязывается к кубической карте, которая представляет собой панорамное изображение, снятое изнутри фонаря или оконной рамы, сквозь которую проникает свет. Это позволяет разработчикам игр добиться реалистичного освещения, не усложняя геометрию сцены и не прибегая к дорогостоящим вычислениям объемов теней в реальном времени.