В чем смысл карт высот?

Я некоторое время размышлял над этим вопросом... многие 3D-движки поддерживают расширенный рендеринг местности с использованием деревьев квадрантов, LOD... все функции, которые вы ожидаете. Но каждый движок, который я видел, загружает данные о высоте из карт высот... растровых изображений в градациях серого. Я просто не могу понять, как это полезно - каждая точка на карте высот может иметь одно из 256 значений. Но что, если вы хотите смоделировать гору Эверест? с детализацией 1 метр, а то и больше? Это далеко за пределами диапазона 256. Конечно, я понимаю, что вы можете реализовать свой собственный формат ландшафта для достижения этого, но я просто не понимаю, почему карты высот так широко используются, несмотря на их большие ограничения.


person Jake Petroules    schedule 10.06.2010    source источник
comment
использование всех четырех цветовых каналов дает вам 32-битную точность или ~ 4 миллиарда различных значений высоты.   -  person Dave O.    schedule 12.06.2010


Ответы (6)


С точки зрения отображения графики наибольшая точность, которая обычно имеет значение, — это (просто говоря) один пиксель в конечном отображении1. Учитывая разрешение типичного текущего монитора, иметь еще пару или три бита для карты высот было бы неплохо, но для большей части геометрии в этом нет необходимости. В частности, даже несмотря на то, что один пиксель в значительной степени определяет наибольшую точность, от которой вы часто пользуетесь, рисование горы Эверест так, что ее высота на самом деле неверна на два или три пикселя, на самом деле не является серьезной проблемой для большинства людей. время.

Все сводится к следующему: мысль о том, что вы хотите использовать точность в один метр для карты высот горы Эверест, является просто ошибкой — необходимость (или даже использование) такого уровня точности вполне оправдана. граница между редким и несуществующим. В то же время использование относительно плотного формата, такого как один байт на пиксель, обычно означает совсем немного — меньше места для хранения и меньшая пропускная способность, что приводит к более быстрому отображению.

  1. Технически со сглаживанием субпиксельное разрешение может и действительно что-то значит, но хотя оно имеет большое значение для таких вещей, как сглаживание линий, которые в противном случае выглядели бы довольно неровными, для чего-то вроде определения высоты горы, оно не имеет значения. значит почти так много. На самом деле, насколько большинство людей заботятся большую часть времени, это совершенно бессмысленно.
person Jerry Coffin    schedule 10.06.2010
comment
Надеюсь, вы не возражаете, если я прокомментирую этот пост четырехлетней давности. Но у меня есть небольшой вопрос, и я не думаю, что он стоит отдельного поста. Так почему бы не поместить эти детали высоты в саму модель? Почему мы должны создавать карту высот, которая должна быть назначена первой? - person Andy; 20.03.2014
comment
@Энди: В основном для скорости. Карта высот в основном берет высоты из меша и сама преобразует их в очень плотный формат, поэтому вам не нужно просматривать все другие данные меша, чтобы добраться до высот. - person Jerry Coffin; 20.03.2014

Карты высот очень легкие, очень быстро загружаются и могут быть легко сгенерированы процедурно. Они также используют довольно небольшой объем памяти.

Они часто используются, потому что они просты и быстры и хорошо справляются со многими сценариями. При этом они полезны не для каждого сценария и не являются полностью обобщенным форматом ландшафта.

person Reed Copsey    schedule 10.06.2010
comment
и их можно загрузить с помощью кода обработки изображений, который вы уже включили в свое 3D-приложение. Вам не нужно включать дополнительный код для загрузки другого формата данных - person Jay; 11.06.2010

Плюсы карты высот:

  1. Посмотрите, как реальная местность издалека.
  2. Очень легко вычислить высоту при любых x, y, предполагая, что z находится вверху. Это полезно для движущихся игроков, обнаружения столкновений и физики.
  3. Легко редактируется в программе для рисования.

Минусы карты высот:

  1. Неэффективно используйте память при наличии больших плоских областей (постоянной высоты).
  2. Неэффективно используйте оборудование для рендеринга при наличии больших плоских областей.
  3. Не может отображать крутые или нависающие ландшафты.
  4. Может представлять только квадратные области.
person bbudge    schedule 10.06.2010
comment
Какую структуру вы бы использовали для изображения крутых или нависающих ландшафтов? - person Jake Petroules; 11.06.2010
comment
В игре, несомненно, будет возможность рендерить произвольные треугольные сетки для персонажей, транспортных средств и строений. Произвольные сетки ландшафта могут быть встроены в поле высот таким же образом. - person bbudge; 11.06.2010

Но что, если вы хотите смоделировать гору Эверест?

Вы бы использовали что-то другое. Ясно, что если каждый движок, с которым вы сталкивались, использует карты высот, то он отлично работает для них. Не нужно ничего усложнять, если простое решение вам подходит.

person ceejayoz    schedule 10.06.2010

Еще один плюс карт высот заключается в том, что в целом они позволяют избежать проблем с нависанием, которые усложняют аспекты физики и движения. Но даже с картой высот у вас может быть другая геометрия, которая может создавать нависания.

Кроме того, текстурирование может быть проще, если высота не слишком сильно меняется, вызывая растяжение.

person Torlack    schedule 10.06.2010

Преимущество карт высот в том, что они имеют прямую аппаратную поддержку (текстурирование), и их можно рисовать с помощью существующих инструментов рисования (даже специализированных).

Конечно, в зависимости от формата информации, хранящейся в карте высот, некоторый рендеринг выглядит не так, как должно быть, а потому, что карты высот на самом деле используются в неправильной ситуации.

В качестве улучшения пиксели карты высот могут храниться в виде 16-битного числа с плавающей запятой (половинное число с плавающей запятой) или 32-битного числа с плавающей запятой, что позволяет иметь более высокие диапазоны и точность, разрешенные для 8-битного пикселя с фиксированной точностью.

person Luca    schedule 10.06.2010