Как работает функция шума перлина, используемая для создания ландшафта?
Я могу обернуть свою голову, используя функцию 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.