Пустынный фрактал OpenGL

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


person Kroj    schedule 07.07.2014    source источник


Ответы (3)


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

Эталонная реализация C для него находится здесь

person Dawnkeeper    schedule 07.07.2014

Дюны неравнобокие: .='\ поперечное сечение... вы можете использовать исходную форму такого типа

Они регулярны, как волны в море. не совсем шум

они вытянуты к ветру

Я не использовал первое условие, но я сделал отличные дюны, перемножив 2 1d шума перина вместе или даже 2 функции sin/parabol, где они обе выровнены по одной оси. то есть Z, и они имеют небольшой низкочастотный Sin или шум, раскачивающий их вдоль оси X, поэтому они не выровнены.

попробуй это:

dunes = sin ( X + 1dperlin(Z) *.2 ) * sin ( X + 1dperlin(Z+432) *.2 );

otherwise to test it:

dunes = sin ( X + sin(Z) *.2 ) (plus or times or devided by) sin ( X + sin(Z+432) *.2 );

0,2 делает дюны в 10 раз длиннее, чем в ширину, и это похоже на то, когда две прямые волны воды встречаются почти под одним и тем же углом, плюс переменная неопределенности, использующая шум для угла.

person DeltaEnfieldWaid    schedule 23.08.2014

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

person Community    schedule 17.08.2014