В компьютерной графике картирование окружающей среды , [1] [2] [3] или отображение отражений — это эффективный метод освещения на основе изображения , позволяющий аппроксимировать внешний вид отражающей поверхности с помощью предварительно вычисленной текстуры . Текстура используется для хранения изображения удаленной среды, окружающей визуализируемый объект.
Было использовано несколько способов сохранения окружающей среды. Первой техникой было сферическое картографирование , при котором одна текстура содержит изображение окружающей среды, отраженное в сферическом зеркале . Его почти полностью превзошло кубическое отображение , при котором окружающая среда проецируется на шесть граней куба и сохраняется в виде шести квадратных текстур или разворачивается в шесть квадратных областей одной текстуры. Другие проекции, обладающие некоторыми превосходными математическими или вычислительными свойствами, включают отображение параболоида , отображение пирамиды , отображение октаэдра и отображение HEALPix .
Отображение отражений является одним из нескольких подходов к рендерингу отражений , наряду, например, с отражениями в экранном пространстве или трассировкой лучей , при которой точное отражение вычисляется путем отслеживания луча света и его оптического пути . Цвет отражения, используемый при вычислении затенения в пикселе, определяется путем расчета вектора отражения в точке объекта и сопоставления его с текселем на карте среды. Этот метод часто дает результаты, внешне похожие на результаты, полученные с помощью трассировки лучей, но он требует меньше вычислительных затрат, поскольку значение яркости отражения получается путем расчета углов падения и отражения с последующим поиском текстуры, а не с последующим отслеживанием луча. относительно геометрии сцены и вычисления яркости луча, что упрощает нагрузку на графический процессор .
Однако в большинстве случаев отображаемое отражение является лишь приближением реального отражения. Картирование окружающей среды основано на двух предположениях, которые редко выполняются:
Картографирование окружающей среды, как правило, является самым быстрым методом рендеринга отражающей поверхности. Чтобы еще больше увеличить скорость рендеринга, рендерер может вычислить положение отраженного луча в каждой вершине. Затем положение интерполируется по полигонам, к которым прикреплена вершина. Это устраняет необходимость пересчета направления отражения каждого пикселя.
Если используется отображение нормалей , каждый многоугольник имеет множество нормалей граней (направление, в котором обращена данная точка многоугольника), которые можно использовать в тандеме с картой окружения для создания более реалистичного отражения. В этом случае угол отражения в данной точке многоугольника будет учитывать карту нормалей. Этот метод используется для того, чтобы плоская поверхность выглядела текстурированной, например, гофрированный металл или матовый алюминий.
Сферное картирование представляет сферу падающего освещения так, как если бы она рассматривалась в отражении отражающей сферы через ортогональную камеру. Изображение текстуры может быть создано путем аппроксимации этой идеальной настройки, использования объектива «рыбий глаз» или путем предварительного рендеринга сцены со сферическим отображением.
Сферическое отображение страдает от ограничений, которые снижают реалистичность получаемой визуализации. Поскольку сферические карты хранятся в виде азимутальных проекций окружающей среды, которую они представляют, в отражении от объекта видна резкая точка сингулярности (эффект « черной дыры »), где цвета текселей на краю карты или вблизи него искажаются из-за недостаточное разрешение для точного представления точек. Сферическое картографирование также приводит к потере пикселей, которые находятся в квадрате, но не в сфере.
Артефакты сферического картографирования настолько серьезны, что оно эффективно только для точек обзора, близких к точке обзора виртуальной ортогональной камеры.
Отображение куба и другие отображения многогранников устраняют серьезные искажения карт сфер. Если кубические карты созданы и отфильтрованы правильно, они не имеют видимых швов и могут использоваться независимо от точки зрения часто виртуальной камеры, снимающей карту. Кубические и другие многогранные карты с тех пор заменили сферические карты в большинстве приложений компьютерной графики, за исключением получения освещения на основе изображения . Освещение на основе изображения можно реализовать с помощью кубических карт с коррекцией параллакса. [4]
Обычно при отображении куба используется тот же скайбокс , что и при визуализации на открытом воздухе. Отражение с отображением куба осуществляется путем определения вектора , по которому просматривается объект. Этот луч камеры отражается от нормали к поверхности того места, где вектор камеры пересекает объект. В результате получается отраженный луч , который затем передается на карту куба для получения текселя , который обеспечивает значение яркости, используемое при расчете освещения. Это создает эффект отражения объекта.
Отображение среды HEALPix похоже на другие отображения многогранников, но может быть иерархическим, что обеспечивает единую основу для создания многогранников, которые лучше аппроксимируют сферу. Это позволяет снизить искажения за счет увеличения объема вычислений. [5]
Предшествующая работа в области картографирования текстур была начата Эдвином Кэтмаллом , а уточнения для изогнутых поверхностей - Джеймсом Блинном в 1974 году. [6] Блинн продолжал совершенствовать свою работу, разработав картирование окружающей среды к 1976 году. [7]
Джин Миллер экспериментировал с картографированием сферической среды в 1982 году в MAGI Synthavision.
Вольфганг Гейдрих представил параболоидное картографирование в 1998 году. [8]
Эмиль Праун представил картографирование октаэдра в 2003 году. [9]
Мауро Штайгедер представил пирамидальное картирование в 2005 году. [10]
Тянь-Цин Вонг и др. представил существующее отображение HEALPix для рендеринга в 2006 году. [5]