Процедурная местность с ребристым фрактальным шумом


Я реализовал билинейный интерполированный белый шум, чтобы процедурно генерировать рельеф.

Я могу получить такой результат:

Введите описание изображения здесь

Я хотел бы реализовать ребристый фрактальный шум, чтобы получить более реалистичную местность, такую как:

Введите описание изображения здесь

Однако я не могу найти хороший учебник для ребристого фрактального шума. Вы можете объяснить мне, как это сделать?

1 6

1 ответ:

Ребристый шум Перлина на самом деле довольно легко сделать - вам просто нужно АБС() либо конечная карта высоты, либо некоторое подмножество слоев шума (а затем инвертировать результирующие Значения карты высоты, чтобы убедиться, что гребень происходит при высоких значениях).

Пример: Введите описание изображения здесь (основной шум Перлина с трилинейной интерполяцией с последующим АБС и инвертированием всего поля высот). (Инвертировать означает "умножить на -1".)

Я настоятельно рекомендую экспериментировать с различными конфигурациями фрактальные шумовые слои и основные математические / логические операции.

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

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

Для получения некоторой информации об этом я рекомендую эти две статьи (вы можете игнорировать часть GPU, алгоритмы прекрасно работают на CPU, хотя по моему опыту моделирование займет минуту или около того для изображения 1000x1000 px):

  1. Мэй, Син, Декоден, Филипп и Ху, Бао-Ган. Быстрое моделирование и визуализация гидравлической эрозии на графическом процессоре. 2007 год.
  2. быстрая гидравлическая и термическая эрозия на графическом процессоре. Яко, Балаш. 2011 год. 15-й Центральноевропейский семинар по компьютерной графике.

Правка:

Давайте уточним, что я имею в виду под "применить АБС на поле высоты".

Вы просто берете числовое значение высоты в каждом пикселе карты и применяете к нему функцию ABS (), отбрасывая ее знак.

, который предполагает, что генератор шума Перлина генерирует значения в диапазоне (или другом диапазоне с центром в 0). Ожидается, что ~50% пикселей будут иметь значение больше 0 и Ожидается, что значение ~50% будет меньше 0.

АБС приводит к созданию острых гребней там, где 0, так как вся билинейная/трилинейная интерполяция гарантирует, что раньше был гладкий наклон, проходящий через значение 0.

Рассмотрим этот образ:

Введите описание изображения здесь

Он показывает две функции COS (x), одна из которых была модулирована функцией ABS (я добавил небольшое смещение, чтобы убедиться, что обе линии видны отдельно). А теперь представьте, что фиолетовая линия переворачивается вертикально - вы заканчиваете двумя горами с острыми хребтами и долиной между ними:)