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ść h0w punkcie x0i wysokość h1w 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ń. fbmWe 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.