Уровень шума Perlin Noise. Как увеличить ландшафт? - PullRequest
12 голосов
/ 18 июля 2010

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

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

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

Вот пример моей проблемы (уровень Континента):

альтернативный текст http://www.blind -games.com / highlevelnoise.jpg

Увеличено:

альтернативный текст http://www.blind -игры.com / closeinnoise.jpg

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

Ответы [ 2 ]

6 голосов
/ 20 июня 2011

Вы должны генерировать, используя шум на последовательно более высоких частотах, чтобы избежать сглаживания. Попробуйте http://freespace.virgin.net/hugo.elias/models/m_perlin.htm для более ясного объяснения того, как манипулировать частотой шума. Октавы естественным образом сочетаются с реализацией уровня детализации (LOD), которая, пока вы поддерживаете генерацию на лету, означает, что вам нужно только генерировать больше деталей, когда вы приближаетесь к ней. Имейте в виду, что при создании ландшафта на ходу возникают препятствия, такие как усложнение создания объектов, таких как реки и дороги, поэтому вы можете получить предварительное изображение местности с фиксированным минимальным уровнем детализации (например, квадраты сетки по 64 км). ), а затем на лету генерация более подробных функций.

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

4 голосов
/ 11 мая 2011

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

...