2001 · Perlin sam się poprawiaKOSZT · n+1 kontra 2ⁿ narożnikówUŻYCIE · displacement, wolumetriaSERIA · Perlin 4/4
Wykład: Perlin Noise — część 4 z 4

Simplex noise i praktyka

W 2001 roku Ken Perlin sam wrócił do własnego wynalazku i poprawił mu dwie realne wady. Ten ostatni rozdział wykładu pokazuje, co poprawił — i gdzie w tej książce ten cały temat już się przewijał.

TL;DR
Pass: Problem skalowania

Czemu klasyczny Perlin noise nie wystarczał

Algorytm z części 2 potrzebuje 4 narożników w 2D. W 3D (potrzebnym do prawdziwej tekstury proceduralnej na powierzchni w przestrzeni) to już 8 narożników — sześcian. W 4D (przestrzeń + czas, do animowanego szumu) to 16. Koszt rośnie jak 2ⁿ — wykładniczo z liczbą wymiarów. Do tego klasyczny Perlin noise ma subtelne, ale wykrywalne artefakty skierowane wzdłuż osi siatki (bo siatka jest kwadratowa/sześcienna, uprzywilejowuje pewne kierunki).

Square.grid.vs.simplex.grid4 corners vs 3 corners (2D)
KLASYCZNY PERLIN: SIATKA KWADRATOWA SIMPLEX: SIATKA TRÓJKĄTNA 4 narożniki na komórkę 3 narożniki na komórkę
W 3D to różnica między 8 narożnikami sześcianu i 4 narożnikami czworościanu — simplex wygrywa jeszcze bardziej.

Mechanika simplex noise jest analogiczna do części 2 — wciąż gradienty, wciąż iloczyny skalarne, wciąż funkcja fade — tylko podzielona przestrzeń nie jest kwadratami, a trójkątami (w 2D) czy czworościanami (w 3D). Mniej narożników do sprawdzenia na próbkę, i brak uprzywilejowanych osi, bo siatka trójkątna nie ma „kierunków kwadratu”.

Pass: Synteza

Gdzie to już widziałeś w tej książce

Noise.everywhereconnections across the book
NOISE R.9 tekstury proceduralne Dodatek I displacement R.18 wolumetria — gęstość dymu R.21 atmosfera — kształt obłoków
Jeden algorytm z części 2, cztery zupełnie różne zastosowania w tej samej książce.

Gęstość dymu w Rozdziale 18 to zwykle fBm z tego wykładu, próbkowany w każdym kroku ray marchingu. Kształt obłoków w Rozdziale 21 to ta sama funkcja, tylko w większej skali. Displacement z Dodatku I najczęściej używa fBm jako mapy wysokości. To nie jest cztery różne techniki — to jedna funkcja, użyta cztery razy w czterech miejscach.

Z praktyki

Node „Noise Texture” w Blenderze ma dropdown z opcją 4D — to właśnie po to, żeby dodać czas jako czwarty wymiar i animować szum płynnie, bez „przeskakiwania” między niezależnymi klatkami. Houdinim VEX ma zarówno noise() (klasyczny Perlin) jak i xnoise()/warianty simplex — w praktyce różnica bywa niezauważalna wizualnie, ale odczuwalna w czasie renderu przy dużej liczbie próbek na piksel.

Słowniczek
Simplex noise
Ulepszona wersja Perlin noise (2001) na siatce symplicjalnej.
Simplex (trójkąt/czworościan)
Najprostszy możliwy kształt wypełniający przestrzeń n-wymiarową, n+1 narożników.
Artefakt osiowy
Subtelna preferencja kierunków siatki kwadratowej/sześciennej w klasycznym Perlin noise.

To zamyka czterorozdziałowy wykład o szumie Perlina — od idei gradientu w 1985 roku, przez pełny, zweryfikowany numerycznie algorytm, oktawy i fBm, po simplex noise i to, gdzie ta jedna funkcja matematyczna chowa się w kilku różnych rozdziałach tej książki.

Koniec wykładu o Perlin Noise