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

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

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

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

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

alt text http://www.blind-games.com/highlevelnoise.jpg

Уменьшено:

alt text http://www.blind-games.com/closeinnoise.jpg

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

Ответ 1

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

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

Ответ 2

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