Bump mapping [1] — метод текстурного отображения в компьютерной графике для имитации неровностей и морщин на поверхности объекта. Это достигается путем возмущения нормалей поверхности объекта и использования возмущенной нормали во время расчетов освещения. Результатом является явно неровная поверхность, а не гладкая, хотя поверхность лежащего в основе объекта не изменяется. Bump mapping был введен Джеймсом Блинном в 1978 году. [2]
Нормальное отображение является наиболее распространенной вариацией рельефного отображения. [3]
Bump mapping — это метод в компьютерной графике, позволяющий сделать визуализированную поверхность более реалистичной, имитируя небольшие смещения поверхности. Однако, в отличие от offset mapping , геометрия поверхности не изменяется. Вместо этого изменяется только нормаль поверхности, как если бы поверхность была смещена. Затем измененная нормаль поверхности используется для расчетов освещения (например, с использованием модели отражения Фонга ), создавая видимость деталей вместо гладкой поверхности.
Bump-картирование выполняется намного быстрее и потребляет меньше ресурсов при том же уровне детализации по сравнению с дисплейсмент-картированием, поскольку геометрия остается неизменной.
Существуют также расширения, которые изменяют другие характеристики поверхности в дополнение к увеличению ощущения глубины. Картографирование параллакса и картографирование горизонта — два таких расширения. [4]
Основное ограничение при использовании bump mapping заключается в том, что оно возмущает только нормали поверхности, не изменяя саму лежащую под ней поверхность. [5] Таким образом, силуэты и тени остаются неизменными, что особенно заметно при больших моделируемых смещениях. Это ограничение можно преодолеть с помощью методов, включая offset mapping, когда к поверхности применяются выпуклости, или с помощью изоповерхности .
Существует два основных метода выполнения bump-картирования. Первый использует карту высот для имитации смещения поверхности, что дает измененную нормаль. Это метод, изобретенный Блинном [2] , и обычно его называют bump-картированием, если не указано иное. Шаги этого метода суммируются следующим образом.
Перед тем, как выполнить расчет освещения для каждой видимой точки (или пикселя ) на поверхности объекта:
Результатом является поверхность, которая, кажется, имеет реальную глубину. Алгоритм также гарантирует, что внешний вид поверхности меняется при перемещении источников света в сцене.
Другой метод заключается в указании карты нормалей , которая содержит измененную нормаль для каждой точки на поверхности напрямую. Поскольку нормаль указывается напрямую, а не выводится из карты высот, этот метод обычно приводит к более предсказуемым результатам. Это упрощает работу художников, делая его наиболее распространенным методом рельефного отображения на сегодняшний день. [3]
Программисты 3D-графики в реальном времени часто используют вариации этой техники для имитации рельефного отображения с меньшими вычислительными затратами.
Одним из типичных способов было использование фиксированной геометрии, что позволяет использовать нормаль поверхности карты высот почти напрямую. В сочетании с предварительно вычисленной таблицей поиска для расчетов освещения метод можно было реализовать с помощью очень простого и быстрого цикла, что позволяло получить полноэкранный эффект. Этот метод был распространенным визуальным эффектом, когда впервые было введено отображение рельефа.