ние се опитваме да генерираме 3d свят, използвайки 2d perlin шум (с recorsive/fractal техника). Генерирахме планини и долини доста добре, но сега имаме проблеми с пустиня и дюни, защото работихме само върху постоянство и октави и не можем да направим класическата форма на дюната. Някой вече изпитвал ли е това? Някакво решение, евентуално все още използващо perlin noise или други алгоритми, които ви позволяват да направите това?
Пустинен фрактал OpenGL
Отговори (3)
Бихте могли да опитате мултифрактала с ръбове на Musgrave. Той дава хубави ръбести структури и можете да използвате вашите съществуващи шумови алгоритми за него.
Референтната реализация на C за него е тук
Дюните са лобирани: .='\ напречно сечение... може да искате да използвате първоначална форма от този вид
Правилни са, като вълни в морето. не напълно шум
те са удължени към вятъра
Не използвах първото условие, но направих страхотни дюни чрез умножаване на 2 1d perin шума заедно или дори 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 пъти по-дълги от широките и това е като когато две прави водни вълни се срещнат под почти еднакъв ъгъл, плюс променлива на несигурност, използваща шум за ъгъла.
Може би турбуленцията все още е достатъчна за това, от което се нуждаете... Опитайте се да играете с турбуленцията, като използвате абсолютната стойност на върнатите стойности на октавите вместо нормалните стойности. Можете също така да оцените поотделно и да комбинирате вашия шум и вашата турбуленция, за да смесите и двата ефекта в някои области.