FORMUŁA · Σ amplituda·noise(freq·x)PERSISTENCE · spadek amplitudyLACUNARITY · wzrost częstotliwościSERIA · Perlin 3/4
Wykład: Perlin Noise — część 3 z 4

Oktawy i fractal Brownian motion

Jedna warstwa szumu z części 2 wygląda gładko, ale nienaturalnie jednorodnie. Prawdziwe tekstury — obłoki, marmur, teren — mają detal w wielu skalach naraz. fBm dokłada go, warstwa po warstwie.

TL;DR
Pass: Wzór

Suma warstw, nie jedna funkcja

fBm(x) = Σᵢ persistenceⁱ · noise(lacunarityⁱ · x), dla i = 0, 1, 2, …persistence — jak szybko amplituda spada z każdą oktawą (typowo 0,5); lacunarity — jak szybko rośnie częstotliwość (typowo 2)
Przykład — suma trzech oktaw dla naszego punktu P
Oktawa 1 (częstotliwość ×1, amplituda 1,0): n₁ = 0,586 — to nasz w pełni policzony wynik z części 2.
Oktawa 2 (częstotliwość ×2, amplituda 0,5): przyjmijmy dla przykładu n₂ = 0,21 (policzone tą samą metodą, na nowej, gęściej podzielonej siatce).
Oktawa 3 (częstotliwość ×4, amplituda 0,25): przyjmijmy n₃ = −0,15.
Suma: fBm = 1,0·0,586 + 0,5·0,21 + 0,25·(−0,15) = 0,586 + 0,105 − 0,0375 = 0,6535
Wynik fBm (3 oktawy): ≈ 0,654
Każda kolejna oktawa dodaje coraz mniejszy „szczegół” — n₃ ma zaledwie ¼ wpływu n₁, mimo że jej częstotliwość jest 4× wyższa.
Octave.stackingreal feTurbulence layers
OKTAWA 1 amp. 1,0 OKTAWA 2 amp. 0,5 OKTAWA 3 amp. 0,25 + SUMA (fBm, 4 oktawy)
Trzy prawdziwe, osobne warstwy szumu po lewej — i genuinalna suma wielu oktaw (feTurbulence numOctaves=4) po prawej.
Pass: Parametry

Persistence i lacunarity: charakter wzoru

Wysoki persistence (bliski 1,0) sprawia, że wysokoczęstotliwościowe oktawy wnoszą prawie tyle, co pierwsza — wynik jest szczegółowy, „poszarpany”, dobry na skały czy korę. Niski persistence (bliski 0,3) sprawia, że pierwsza oktawa dominuje — wynik jest gładki, miękki, dobry na obłoki czy delikatne przejścia koloru. Lacunarity większe niż standardowe 2 upakowuje detal gęściej przy każdej kolejnej oktawie.

Z praktyki

Node „Noise Texture” w Blenderze ma bezpośrednio pola „Detail” (liczba oktaw) i „Roughness” (persistence). VEX w Houdinim ma funkcję fbm() z tymi samymi parametrami pod tymi nazwami. To dokładnie ten wzór — żadna z tych implementacji nie robi nic innego niż suma z tego rozdziału.

Słowniczek
Oktawa
Jedna warstwa szumu o określonej częstotliwości i amplitudzie w sumie fBm.
fBm (fractal Brownian motion)
Suma wielu oktaw szumu, dająca detal w wielu skalach.
Persistence
Współczynnik spadku amplitudy między kolejnymi oktawami.
Lacunarity
Współczynnik wzrostu częstotliwości między kolejnymi oktawami.