Comments 16
Было бы не плохо приложить результаты работы обоих алгоритмов в виде скриншотов, а то как-то не наглядно.
Какой смысл в ландшафте без деревьев и другого окружения?
(травы, кустах...)
(травы, кустах...)
А вот вам еще в копилку статья, может пригодится: habrahabr.ru/post/111538/
И еще одна, тоже любопытный алгоритм: sohabr.ru/post/222697/ (оригинал: www.playfuljs.com/realistic-terrain-in-130-lines/)
UFO just landed and posted this here
Как-то вы обидели шум Перлина. Его СИЛА при генерации ландшафта в применении нескольких разных шумов разного масштаба. Можно получать резкие острые скалы перемежающиеся долинами и т.п. На сколько мне известно, в Майнкрафте используются именно шумы Перлина. Да и вообще по запросу «шум Перлина» в Гугле вылезают потрясающие пейзажи. Так то конечно, если использовать только один шум, получится довольно однообразно.
Проблема с diamond square состоит в том, что «из коробки» он не очень подходит для генерации бесконечных ландшафтов. В тоже время, в случае шумов Перлина, мы сразу получаем возможность генерировать карты высот любого размера и разрешения, а если использовать более чем одну октаву то можно добиться вполне неплохих результатов, к примеру вот ландшафт сгенерированный с помощью 8-и октав:
Вообще если есть желание сделать очень-очень реалистичные горы — советую обратить внимание на алгоритм Diffuse Limited Aggregation, который правда обладает тем же недостатком (плохо подходит для генерации бесконечного ландшафта).
Вообще если есть желание сделать очень-очень реалистичные горы — советую обратить внимание на алгоритм Diffuse Limited Aggregation, который правда обладает тем же недостатком (плохо подходит для генерации бесконечного ландшафта).
Лучшие результаты дает эрозия совместно с многослойным шумом Перлина
http://oddlabs.com/download/terrain_generation.pdf
http://oddlabs.com/download/terrain_generation.pdf
Долго бился над такой проблемой по использованию кода из статьи: при некоторых размерах карты остаются не инициализированными все высоты в определённых столбцах или строках. Оказалось, код из divide
надо поменять на
if (w < 1.0f || h < 1.0f)
надо поменять на
if (w < 1.0f && h < 1.0f)
Sign up to leave a comment.
Генерация ландшафтов в Unity3d