Уровень детализации Perlin Noise. Как увеличить пейзаж?

Я написал свою собственную реализацию Perlin Noise, и она работает хорошо. Я могу увеличивать и уменьшать масштаб, изменяя частоту, но по мере увеличения масштаба шум становится все более и более плавным.

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

При уменьшении масштаба я вижу континент и океаны, но я хочу, чтобы большие регионы были представлены в небольших областях.

Вот пример проблемы, с которой я сталкиваюсь (уровень континента):

alt text
(источник: игры вслепую .com)

Увеличено:

alt text
(источник: игры вслепую .com)

Как я могу по-прежнему получать богатые детали при увеличении области на карте? Любые примеры задействованных техник?


person Jason    schedule 18.07.2010    source источник


Ответы (2)


Вам нужно генерировать, используя шум на последовательно более высоких частотах, чтобы избежать плавности. Попробуйте http://www.arendpeter.com/Perlin_Noise.html, чтобы получить более четкое объяснение того, как манипулировать частотой шума. Октавы естественным образом сочетаются с реализацией уровня детализации (LOD), который, если вы поддерживаете генерацию «на лету», означает, что вам нужно генерировать больше деталей только по мере приближения к нему. Имейте в виду, что у генерации рельефа «на лету» есть недостатки, такие как усложнение генерации объектов, таких как реки и дороги, поэтому вы можете в конечном итоге предварительно сгенерировать ландшафт с фиксированным минимальным уровнем детализации (например, 64 км сетки квадратов). ), а затем на лету генерировать более подробные функции.

Я бы также рекомендовал взглянуть на симплексный шум, который требует меньше вычислительных ресурсов (см. https://en.wikipedia.org/wiki/Simplex_noise для более подробной информации).

person andrewdoull    schedule 20.06.2011

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

person Miles Gillham    schedule 11.05.2011