Как работает функция шума перлина, используемая для создания ландшафта?

Я могу обернуть свою голову, используя функцию 2D Perlin noise, чтобы генерировать значение высоты, но я не понимаю, почему будет использоваться функция шума 3D Perlin. В Notch blog он упомянул использование трехмерной функции шума Perlin для генерации местности на Minecraft. Кто-нибудь знает, как это будет сделано и почему это было бы полезно? Если вы проходите x, y и z значения не означает, что у вас уже есть высота?

Ответы

Ответ 1

Ну, Minecraft - это Мины. Итак, что Нотч пытался решить, было: "Как мне получить дыры/выступы в моем мире?"

Поскольку 2D-шум perlin генерирует приятные/гладкие холмы, 3D-шум perlin будет генерировать приятные/гладкие холмы и приятные отверстия в вашей 3D-сетке вокселей.

Реализация может быть найдена здесь (в то время как это N-мерное решение).

В других случаях использования компонент Z 3D-шума perlin устанавливается на текущее время. Таким образом, вы получите плавный переход между различными 2d-перлиными шумами и которые могут быть использованы в качестве основы для жидких текстур.

Ответ 2

В статье точно сказано, почему он использовал 3D-шум:

Я использовал 2D-карту высоты шума Perlin...... но недостатком скорее скучный. В частности, для этот метод генерирует любые выступы.

Итак, я переключил систему на аналогичная система основана на 3D Perlin шум. Вместо отбора проб "земля" height ", я рассматривал значение шума как" плотность", где все ниже чем 0, будет воздух, и что угодно выше или равно 0, будет земля.

Ответ 3

Вы должны посмотреть на источник Minetest, особенно на файлы noise.cpp и map.cpp.