Za pomocą funkcji szumów można generować losowe wysokości. Najprostszym z nich jest szum wartości, który działa dokładnie tak, jak opis: generujesz losowe wysokości całkowite, a następnie interpolujesz wysokości między nimi. Najczęściej stosowaną metodą interpolacji jest odwzorowanie sześciennej krzywej S:
Załóżmy, że masz wysokość h0
w punkcie x0
i wysokość h1
w punkcie x1
. Następnie, aby uzyskać wysokość w dowolnym punkcie x
( x0<=x<=x1
), używasz
t = (x-x0)/(x1-x0); // map to [0,1] range
t = t*t*(3 - 2*t); // map to cubic S-shaped curve
h = h0+t*h1;
Wysokości uzyskane w ten sposób będą gładkie, losowe, ale niezbyt interesujące. Aby poprawić swój teren, możesz użyć fraktalnego hałasu . Działa to tak: załóżmy, że wygenerowałeś funkcję, h(x)
która zwraca wysokość przy danej współrzędnej (używając powyższej metody). Ta funkcja ma częstotliwość określoną przez częstotliwość pierwotnych wysokości intergerów. Aby zrobić z niego fraktal, łączysz funkcje z kilkoma częstotliwościami:
fbm(x)=h(x) + 0.5*h(2*x) + 0.25*h(4*x) + 0.125*h(8*x);
W tym przykładzie łączę cztery częstotliwości - oryginalną, podwójną, 4-krotną i 8-krotną oryginalną, przy czym wyższe częstotliwości mają mniejszą wagę. Teoretycznie fraktale sięgają nieskończoności, ale w praktyce wymaga tylko kilku określeń. fbm
We wzorze oznacza ułamkowego ruchu Browna - jest to nazwa tej funkcji.
To jest potężna technika. Możesz grać z mnożnikiem częstotliwości, z wagami o różnych częstotliwościach lub dodawać funkcje zniekształcające hałas. Na przykład, aby uzyskać bardziej „wypukłe” odczucie, h(x)
można zmienić na 1-abs(h(x))
(zakładając -1<=h(x)<=1
)
Jednak chociaż wszystko to jest miłe, technika ta ma poważne ograniczenia. Dzięki podejściu opartemu na „linii wysokości” nigdy nie możesz mieć „nawisów” terenu. I wyobrażam sobie, że będą to bardzo fajne funkcje w grze podobnej do „Moon Buggy”.
Dodawanie ładnych zwisów jest trudnym zadaniem. Jedną rzecz, o której mogę myśleć - możesz zacząć od fraktalnej „linii wysokości” i „mozaikować” ją w serię splajnów lub krzywych Beziera. Następnie linia terenu zostanie zdefiniowana przez kilka „kluczowych punktów”. Zastosuj drgania w tych kluczowych punktach - spowoduje to przypadkowe odkształcenie terenu, prawdopodobnie tworząc ciekawe kształty. Jednak samo skrzyżowanie terenu może stać się problemem przy takim podejściu, szczególnie przy dużych wahaniach.