Уровень детализации Perlin Noise. Как увеличить ландшафт?
Я написал свою собственную реализацию Perlin Noise, и она работает хорошо. Я могу увеличивать и уменьшать частоту, меняя частоту, но при увеличении шум становится более плавным и плавным.
Предположим, у меня есть пейзаж, который отображает континент. Я хочу уменьшить масштаб до размера города (или ближе), но все еще иметь детализацию. Я думаю, что мне нужно заново сгенерировать ландшафт при более детальной детализации, но я не уверен, есть ли какие-либо реализации, которые могут помочь с этим?
Уменьшенный, я вижу континент и океаны, но я хочу, чтобы большие регионы были представлены в небольших областях.
Вот пример проблемы, с которой я столкнулся (уровень Континента):
http://www.blind-games.com/highlevelnoise.jpg
Увеличено в:
http://www.blind-games.com/closeinnoise.jpg
Как я могу получить детальную информацию при увеличении области на карте? Какие-нибудь примеры техник?
2 ответа
Вы должны генерировать, используя шум на более высоких частотах, чтобы избежать сглаживания. Попробуйте http://freespace.virgin.net/hugo.elias/models/m_perlin.htm для более четкого объяснения того, как управлять частотой шума. Октавы естественным образом сочетаются с реализацией уровня детализации (LOD), которая, пока вы поддерживаете генерацию на лету, означает, что вам нужно только генерировать больше деталей, когда вы приближаетесь к ней. Имейте в виду, что при создании ландшафта на ходу есть препятствия, такие как усложнение создания объектов, таких как реки и дороги, так что вы можете получить предварительную генерацию ландшафта с фиксированным минимальным уровнем детализации (например, квадраты сетки по 64 км).), а затем на лету генерация более подробных функций.
Я бы также порекомендовал посмотреть на шум Simplex, который требует меньших вычислительных затрат (см. https://en.wikipedia.org/wiki/Simplex_noise для более подробной информации).
Предполагая, что вы генерируете файлы карт статически, а не на лету, я думаю, что самое простое решение - создать всю карту с максимально высоким разрешением, которое вам требуется. В результате вы уменьшаете масштаб и возвращаетесь к этому уровню детализации. Это дороже в вычислительном отношении и даст большие файлы карт. В зависимости от вашей реализации для средства просмотра вы можете использовать один файл карты или создать несколько файлов с расширенным разрешением для большего просмотра.