Войти
ПрограммированиеФорумГрафика

Процедурная генерация материков (шейдеры)

Страницы: 1 2 Следующая »
#0
8:49, 15 авг. 2013

Привет, друзья!

Тут возник глубоко теоретический вопрос, как бы сгенерить процедурно материки, да так, чтобы это был не просто шум в большом количестве,
но отдельные большие материки, и иногда - иногда! - островки поменьше ( как тут )
Изображение

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

ЗЫ Также не повредит, если вдруг у кого есть, алгорит облачков, таких как тут


#1
9:09, 15 авг. 2013

Mephisto std
> Перлин таких результатов ожидаемо не дает - там более однородно все.
Результат Перлина возвести в квадрат, потом подобрать уровень моря.
Так же подобрать спектр для регулировки количества мелких деталей.

#2
10:15, 15 авг. 2013

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

Или я что-то не понимаю?

#3
10:27, 15 авг. 2013

> Или я что-то не понимаю?
Mephisto std, сложи или умножь два перлина с разным масштабом. И с результатом уже работай.

#4
11:37, 15 авг. 2013

Сгенери большие части перлином а поверх наложи RidgedMulti для цепочек островов и детализации ландшафта. (http://nsws.ru/sites/default/files/images/ridgedmulti.preview.jpg)

#5
13:06, 15 авг. 2013

Что такое "материки"? Есть материалы.

#6
14:38, 15 авг. 2013

slava_mib
> сложи или умножь два перлина с разным масштабом. И с результатом уже работай.
Складывать нет большого смысла, шум Перлина - это и так сумма гармоник разного масштаба.
Вот умножение имеет смысл, даже самого на себя, что я и писал в п.1, тогда, считая ШП хейтмапом, степень неровности получается зависимым от высоты - чем выше, тем более изрезан ландшафт, что примерно соответствует реальному рельефу.
Одно уточнение - перед умножением диапазон значений ШП должен быть -1..1, а не 0..1, к примеру.
Пример:

+ Показать

Это пока не хребты, но уже материки и острова, хребты тоже делаются не сложно.

Вот код генерации этих изображений на TFScript (см. в моём профиле):

+ Показать

#7
14:39, 15 авг. 2013

zlos
Материк — крупный участок суши, то же, что континент [1].
Материк в геологии — подпочвенный, ненасыпной, ненаносный пласт земли [2].
Материк в археологии — слой почвы, располагающийся под культурным слоем, не содержащий остатков деятельности человека [3].
Материк в заболоченных местностях Сибири — менее обводнённый участок суши, располагающейся выше окружающей местности [4]

#8
14:46, 15 авг. 2013

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

Мне кажется, чтобы правильно генерить материки, нужно использовать не перлин, а какие-то итерационные алгоритмы, то же размытие, например, только без потери интенсивности, разумеется.
Например, поставить на карте плюх и поразмывать их с десяток раз - вот это как раз должно получиться норм материки.

А перлином можно потом пробежаться, подавить уже существующие умножением (чтобы ноль нулем остался)

#9
14:50, 15 авг. 2013

Mephisto std
> оставшиеся участки получаются слишком неоднородны
Так это как бы дно, ты отсеки уровень, скажем, ниже 0.1, то есть залей водой.
Но естественно, до идеала тут далеко, в идеале нужно эмулировать геологические процессы горообразования.

#10
15:34, 15 авг. 2013

Mephisto std
ohshi~

#11
15:57, 15 авг. 2013

К описанному Mikle добавить curves на перлин - сплющить отдельные участки диапазона - станет более похоже. Можно еще совместить с джулией какой-нибудь.

#12
16:09, 15 авг. 2013

контуры можно сделать например так. это джулия с дисплейсом по перлину

материки | Процедурная генерация материков (шейдеры)
материк, перлин+джулия+линии | Процедурная генерация материков (шейдеры)
#13
8:34, 16 авг. 2013

f0xx
да, вот это неплохо, стоит попробовать

#14
12:08, 16 авг. 2013

SImplex Noise с октавами (штук 5) и всё будет ок. Добавить возведение в квадрат для некоторых областей (диапазон [0.5; 1.0] например) и будет еще круче.

Страницы: 1 2 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.