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