Strona głównaArtykułySztuka Generatywna

Deformacja Domeny: Przekształcanie Płaskiego Szumu w Marmurowe, Przepływowe Pola

Podawanie szumu własnymi przesuniętymi współrzędnymi – iterowane dwa lub trzy razy – przekształca zwykły fBm w wirujące, marmurowe wyglądające pola, wykorzystywane w terenach, chmurach i shaderach marmuru.

mysimulator teamZaktualizowano — czerwiec 2026≈ 7 min czytania▶ Otwórz symulację

Zasilanie szumu własnymi współrzędnymi

Prosta fraktalna ruchoma ziarno (fBm) – sumowanie kilku oktaw Perlinowskiego lub prostokątnego szumu o rosnącej częstotliwości i malejącej amplitudzie – już wygląda organicznie, ale ma pewien znak rozpoznawczy: każde zjawisko wciąż jest w przybliżeniu ułożone względem podrzędnej siatki, na której był pobierany szum, a całe pole wydaje się izotropowe i trochę statyczne. Zniekształcenie domeny, popularne dzięki Kenowi Perlinowi i później szczegółowo opisane przez Inigo Quileza, łamie to ułożenie dzięki jednej idei: przed próbkowaniem funkcji szumu w punkcie p, przesunięcie p odbywa się za pomocą innego pola szumu najpierw. Szum nie wie, że jego wejściowe współrzędne zostały wygięte – po prostu oblicza, gdzie mu powiedziano, aby to zrobił – co jest dokładnie przyczyną sukcesu tej sztuczki.

// single-level domain warp
q = p + noise2D(p)                 // warp the coordinate with a noise field
result = noise2D(q)                // sample the SAME (or a different) noise at the warped point
// the warp field can itself be fBm for richer, multi-scale distortion
demo na żywo · powiązana symulacja● LIVE

Iteracja zniekształceń

Jedna iteracja zniekształcenia już powoduje rozregulowanie siatki, ale kluczową decyzją Quileza było jej powielanie – podawanie wyniku jednego zniekształcenia jako wejścia do kolejnego zniekształcenia rekurencyjnie:

f(p) = fbm(p + f1) gdzie f1 = fbm(p + f2) gdzie f2 = fbm(p) // trzy wbudowane oceny tej samej funkcji szumu, każda z nich zniekształca przestrzeń współrzędnych, w której następna ocena jest próbkowana Każde kolejne poziomy wbudowania dodaje dalszy stopień dużoszkalnej koherentnej dyspersji na bazie poprzedniego – pierwsza iteracja zniekształcenia wygina pole w łagodne krzywe, druga iteracja zniekształcenia wygina te krzywe w wiry, a na trzecim poziomie otrzymujemy wygląd marmurkowy, burzliwy, jak chmury i dym, którego pojedyncza płaska funkcja fBm nie może osiągnąć, niezależnie od liczby stosowanych októw, ponieważ proste funkcje fBm októw są nadal oceniane w nienaruszonej przestrzeni i dlatego pozostają statystycznie izotropowe wszędzie.

f(p) = fbm(p + f1)
where f1 = fbm(p + f2)
where f2 = fbm(p)
// three nested evaluations of the same noise function, each one warping
// the coordinate space the next evaluation is sampled in

Dwa niezależne pokrętła: siła zniekształcenia i skala zniekształcenia

Siła zniekształcenia jest mnożnikiem skalarnym na przesunięcie – przy wartości zerowej otrzymujemy płaskie fBm dokładnie; małe wartości (0,1–0,5 w normalizowanych jednostkach szumu) dodają subtelne, organiczne drgania do granic; duże wartości (2+), mogą rozszczepić pole na silne wiry, tak że pierwotna struktura ledwo jest rozpoznawalna, przydatne do efektów płomieni i turbulentnego dymu. Skala zniekształcenia – częstotliwość pola szumu wykonującego zniekształcenie, niezależna od częstotliwości pola szumu, które jest zniekształcane – kontroluje rozmiar cech zniekształceń: niska częstotliwość zniekształcenia wygina całe pole w szerokich łukach (dobre do terenu i marmuru), a wysoka częstotliwość zniekształcenia na tym samym polu bazowym generuje drobne, szorstkie turbulencje (dobre do ognia i wirującego dymu). Te dwa pokrętła są naprawdę niezależne, a większość wizualnej różnorodności w sztuce zniekształconych domen pochodzi z eksplorowania ich kombinacji, a nie z modyfikowania podstawowej funkcji szumu.

Dlaczego wygląda jak przepływ płynu, a nie tylko ozdoba

Podobieństwo do rzeczywistego ruchu płynów nie jest powierzchowne. Pole przesunięcia zbudowane z koherentnego szumu jest w zasadzie gładkim polem wektorowym o dużym rozgałęzianiu – sąsiednie punkty są przesuwanie w podobnych kierunkach, co dokładnie odzwierciedla zachowanie jakościowe adwekcji w przepływie o niskim współczynniku Re, nawet jeśli nigdzie nie występuje równanie Naviera-Stokes. To jest sedno atrakcyjności: zginanie obszaru pozwala uzyskać 90% bogactwa wizualnego prawdziwej symulacji płynu, kosztem jedynie kilku ocen szumu na piksel, bez rozwiązywania ciśnienia, integracji pola prędkości i wszelkich obaw o stabilność numeryczną.

Praktyczne zastosowanie w terenach, chmurach i marmurze

Zniekształcanie pola wysokościowego z szumem fBm (budowanego z odzwierciedlonego |noise| wokół zera, produkującego ostre grzbiety) za pomocą niższej częstotliwości zniekształcenia jest standardowym sposobem generowania górskich maszyń, w których grzbiety łagodnie się zakrzywiają i rozgałęziają zamiast prowadzić idealnie proste linie przekątne. Zniekształcanie pola szumu wartościowego i kolorowanie na podstawie wyniku prostym gradientem dwu- lub trójkolorowym pozwala uzyskać przekonujące tekstury marmuru i drewna – klasowy shader z turbulencji + sinus marmur jest w rzeczywistości jednym wymiarowym cięciem tego samego pomysłu. Warstwowanie dwóch lub trzech oktaw zniekształcenia o różnych skalach na polu gęstości chmur, a następnie zastosowanie progu, generuje puszystego, niepowtarzalnego wyglądu kumulusów, wykorzystywanego w licznych shaderach proceduralnych nieba.

Frequently asked questions

Co dokładnie robi deformacja domeny w odróżnieniu od zwykłego fBm?

Zwykły fBm sumuje wiele oktaw szumu próbkowanego bezpośrednio w oparciu o współrzędne każdego piksela, co oznacza, że cechy pozostają statystycznie ułożone względem podgridu. Deformacja domeny najpierw przesuwa te współrzędne za pomocą oddzielnego pola szumu przed próbkowaniem, więc funkcja szumu nigdy nie widzi oryginalnych, grid-aligned danych wejściowych – to właśnie generuje wirujące, marmurkowe wygląd zamiast płaskiej, izotropowej tekstury.

Dlaczego iterowanie deformacji (wielokrotne jej wprowadzanie dwa lub trzy razy) wygląda tak inaczej niż pojedyncza deformacja?

Każda wbudowana deformacja zginana przestrzeń współrzędnych, z której następna ocena jest pobierana, więc zniekształcenia się kumulują. Jedna deformacja dodaje delikatną krzywiznę; zniekształcanie tej deformacji samo w sobie dodaje wiry na tych krzywych; trzeci poziom generuje marmurkowy, burzowy wygląd, którego nie można odtworzyć żadnym dodatkowym oktawami fBm przy stałych współrzędnych, ponieważ proste oktawy są zawsze oceniane w nienaruszonej pozycji.

Czy deformacja domeny rzeczywiście symuluje dynamikę płynów?

Nie – nie ma rozwiązania ciśnienia ani integracji prędkości, jest to czysty trik przesunięcia współrzędnych. Jednak spójne pole przesunięcia szumu zachowuje się jakościowo jak gładkie adwersja, dlatego wyniki wyglądają przekonująco jak płynne, przy minimalnym koszcie obliczeniowym w porównaniu z rzeczywistą symulacją Navier-Stokesa.

Wypróbuj na żywo

Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Domain Warping i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.

▶ Otwórz symulację Domain Warping

Co znalazłeś?

Dodaj kroki odtworzenia (opcjonalnie)