В компьютерной графике карта высот или поле высот — это растровое изображение , используемое в основном как дискретная глобальная сетка во вторичном моделировании высот . Каждый пиксель хранит значения, такие как данные о высоте поверхности , для отображения в трехмерной компьютерной графике . Карту высот можно использовать в рельефном отображении для расчета того, где эти трехмерные данные создадут тень в материале, в отображении смещения для смещения фактического геометрического положения точек по текстурированной поверхности или для рельефа, где карта высот преобразуется в трехмерную сетку.
Карта высот содержит один канал, интерпретируемый как расстояние смещения или «высота» от «пола» поверхности и иногда визуализируемый как яркость изображения в оттенках серого , где черный цвет представляет минимальную высоту, а белый — максимальную высоту. При визуализации карты дизайнер может указать величину смещения для каждой единицы канала высоты, что соответствует «контрастности» изображения. Карты высот могут храниться сами по себе в существующих форматах изображений в оттенках серого, со специализированными метаданными или без них , или в специализированных форматах файлов, таких как документы Daylon Leveller, GenesisIV и Terragen .
Можно также использовать использование отдельных цветовых каналов для повышения детализации. Например, стандартное 8-битное изображение RGB может отображать только 256 значений серого и, следовательно, только 256 высот. Используя цвета, можно сохранить большее количество высот (для 24-битного изображения можно представить 256 3 = 16 777 216 высот (256 4 = 4 294 967 296, если также используется альфа-канал)). Этот метод особенно полезен, когда высота немного варьируется на большой площади. При использовании только значений серого, поскольку высоты должны быть сопоставлены только с 256 значениями, визуализированная местность выглядит плоской, со «ступенями» в определенных местах.
Карты высот обычно используются в географических информационных системах , где они называются цифровыми моделями рельефа .
Карты высот можно создавать вручную с помощью классической программы рисования или специального редактора рельефа. Эти редакторы визуализируют рельеф в 3D и позволяют пользователю изменять поверхность. Обычно существуют инструменты для поднятия, опускания, сглаживания или эрозии рельефа. Другой способ создания рельефа — использование алгоритма генерации рельефа. Это может быть, например, функция двумерного симплексного шума [1] или агрегация с ограниченной диффузией . [2] Другой метод — реконструкция карт высот из данных реального мира, например, с помощью радара с синтезированной апертурой . [3]
Карты высот широко используются в программном обеспечении для рендеринга рельефа и современных видеоиграх . Карты высот являются идеальным способом хранения цифровых высот рельефа; по сравнению с обычной полигональной сеткой они требуют существенно меньше памяти для заданного уровня детализации. Большинство современных программ трехмерного компьютерного моделирования способны использовать данные из карт высот в виде карт рельефа , нормалей или смещений для быстрого и точного создания сложных рельефов и других поверхностей.
В самых ранних играх, использующих программный рендеринг, элементы часто представляли высоты столбцов вокселей, визуализированных с помощью ray casting . В большинстве новых игр элементы представляют координаты высоты полигонов в сетке .
Хотя термины heightmap и heightfield часто неотличимы друг от друга, все же есть небольшая разница в терминах. Heightmap происходит от математического термина 'map', а heightfield происходит от математического термина 'vector field'. Heightmap — более правильное описание, поскольку большинство heightfields не являются (векторными) полями в математических терминах, но они всегда являются картой (как в математических терминах, так и в визуальном представлении).