Отображение рельефа - Bump mapping
Рельефное отображение - это метод наложения текстуры в компьютерной графике для имитации неровностей и морщин на поверхности объекта. Это достигается за счет изменения нормалей поверхности объекта и использования возмущенной нормали при расчетах освещения. В результате получается явно неровная поверхность, а не гладкая, хотя поверхность нижележащего объекта не изменяется. Рельефное отображение было введено Джеймсом Блинном в 1978 году.
Отображение нормалей - это наиболее распространенный вариант отображения рельефа.
Принципы
Рельефное отображение - это метод компьютерной графики, позволяющий сделать визуализированную поверхность более реалистичной за счет имитации небольших смещений поверхности. Однако, в отличие от карты смещения , геометрия поверхности не изменяется. Вместо этого изменяется только нормаль к поверхности, как если бы поверхность была смещена. Затем измененная нормаль к поверхности используется для расчетов освещения (с использованием, например, модели отражения Фонга ), создавая видимость деталей вместо гладкой поверхности.
Сопоставление рельефа выполняется намного быстрее и требует меньше ресурсов для того же уровня детализации по сравнению с сопоставлением смещения, поскольку геометрия остается неизменной.
Существуют также расширения, которые изменяют другие особенности поверхности в дополнение к увеличению ощущения глубины. Parallax отображение и отображение горизонта два таких расширений.
Основное ограничение с отображением рельефа заключается в том, что оно нарушает только нормали поверхности, не изменяя при этом саму нижележащую поверхность. Таким образом, силуэты и тени остаются неизменными, что особенно заметно для больших смоделированных смещений. Это ограничение можно преодолеть с помощью методов, включая отображение смещения, когда к поверхности наносятся выпуклости, или с помощью изоповерхности .
Методы
Есть два основных метода выполнения карт рельефа. Первый использует карту высот для имитации смещения поверхности, приводящей к измененной нормали. Это метод, изобретенный Блинном, и обычно его называют рельефным картированием, если не указано иное. Шаги этого метода резюмируются следующим образом.
Перед выполнением расчета освещения для каждой видимой точки (или пикселя ) на поверхности объекта:
- Найдите высоту на карте высот, которая соответствует положению на поверхности.
- Вычислите нормаль к поверхности карты высот, обычно используя метод конечных разностей .
- Объедините нормаль к поверхности из шага 2 с истинной ("геометрической") нормалью к поверхности, чтобы объединенная нормаль указывала в новом направлении.
- Рассчитайте взаимодействие новой «неровной» поверхности с источниками света в сцене, используя, например, модель отражения Фонга .
В результате поверхность имеет реальную глубину. Алгоритм также обеспечивает изменение внешнего вида поверхности при перемещении источников света в сцене.
Другой метод - указать карту нормалей, которая содержит измененную нормаль непосредственно для каждой точки на поверхности. Поскольку нормаль указывается напрямую, а не выводится из карты высот, этот метод обычно приводит к более предсказуемым результатам. Это упрощает работу художников, что делает его наиболее распространенным методом отображения рельефа на сегодняшний день.
Методы отображения рельефа в реальном времени
Программисты трехмерной графики в реальном времени часто используют вариации этого метода для моделирования рельефного отображения с меньшими вычислительными затратами.
Один из типичных способов - использовать фиксированную геометрию, которая позволяет почти напрямую использовать нормаль к поверхности карты высот. В сочетании с предварительно вычисленной таблицей поиска для расчетов освещения этот метод может быть реализован с помощью очень простого и быстрого цикла, обеспечивающего полноэкранный эффект. Этот метод был обычным визуальным эффектом, когда впервые было введено отображение рельефа.
Смотрите также
использованная литература
внешние ссылки
- Затенение выпуклостей для объемных текстур , Max, NL, Becker, BG, Computer Graphics and Applications, IEEE, июль 1994 г., том 14, выпуск 4, страницы 18-20, ISSN 0272-1716
- Простое создание векторов на пиксель в градациях серого для работы карты рельефа и т. Д.
- Пример рельефного отображения ( Java-апплет )