Website powered by

Fractals with Blender Geometry Nodes (part 1)

W latach 90dziesiątych trafiłem na genialną książkę noblisty R.Penrosa "Nowy umysł Cesarza". Po raz pierwszy natknąłem się tam z pojęciem struktury Mandelbrota, jako rzeczywistej konsekwencji jednostki urojonej, która sama nie występuje w rzeczywistości. Struktura ta była między innymi promowana przez Penrosa jako jeden z dowodów na platońską koncepcję realności matematyki - bytu rzeczywiście istniejącego i odkrywanego, a nie wymyślanego przez ludzi. Niedawno idee te wróciły do mnie podczas lektury książki profesora M. Hellera, w której poznałem zarysy koncepcji wieloświata matematycznego M. Tegmarka (Mathematical Universe Hypothesis (MUH)) - dość szalonej hipotezy rozszerzenia realności multiversów o wszechświaty wyższych rzędów, bazujących wyłącznie na strukturach matematycznych (na przykład wszechświaty o zmiennej logice, jak się rozpisywał sam Heller).
Wracając teraz do Mandelbrota. Pomimo, że od dawna wiedziałem jak stworzyć program obliczający zbieżność jego ciągu (to zasadzie bardzo łatwe i każdy to może zrobić), zawsze brakowało mi interfejsu graficznego do jego wizualizacji. Dziś jako grafik 3D mogę operować narzędziami takimi jak Blender (dla geometrycznej wizualizacji struktury (co jest pewnym novum)) czy na przykład pixel procesory w Substance Designer (dla wizualizacji opartej na pixelach (co zostawiam na kiedy indziej)).
Wprowadzone do Blendera zarysy programowania wizualnego i wyjściowa przestrzeń 3D pozwalająca umieścić jego rezultaty, pozwoliły mi wreszcie stworzyć swoją własną strukturę Mandelbrota. Na tym etapie można ją już badać do zadowalających mnie powiększeń, dając obrazy na tyle niesamowite, by można już było w dyskusjach "przy piwie" dostarczać namacalnych dowodów na potwierdzenie tak bliskiej mi platońskiej koncepcji matematyki.
Obecne obrazy to zero-jedynkowy wynik zbieżności i do tego na razie jedynie w płaszczyźnie XY. W następnym rzucie spróbuję dołączyć również wyniki tempa zbieżności, a potem dołączyć trzeci wymiar, co dopiero pozwoli ocenić dobrodziejstwo użycia interpretacji geometrycznej w przestrzeni 3D. Docelowo może nawet uda mi pomiędzy takimi strukturami umieścić kamerę i wykonać projekcję sferyczną tego co ona tam zobaczy. W ostatecznej fazie i dalekiej przyszłości chciałbym przenieść taki obraz 3D do wirtualnej rzeczywistości VR.

Struktura Mandelbrota w całości. Zero-jedynkowy warunek zbieżności.

Struktura Mandelbrota w całości. Zero-jedynkowy warunek zbieżności.

Lekkie powiększenie. 10k x 10k punktów z 50 iteracjami sum każdy.

Lekkie powiększenie. 10k x 10k punktów z 50 iteracjami sum każdy.

Dalsze powiększenie przy utrzymanym setupie próbkowania.

Dalsze powiększenie przy utrzymanym setupie próbkowania.

Fragment wykazujący "pasiatą" zmienność zbieżności sum.

Fragment wykazujący "pasiatą" zmienność zbieżności sum.

Fragment z ciekawymi obszarami zatokowych granic zbieżności.

Fragment z ciekawymi obszarami zatokowych granic zbieżności.

quasi-samopodobny kształt głównego zarysu zbioru, znaleziony na jednej z jego "odnóg".

quasi-samopodobny kształt głównego zarysu zbioru, znaleziony na jednej z jego "odnóg".

Dalsze powiększenie poprzedniego.

Dalsze powiększenie poprzedniego.

Kolejne powiększeni poprzedniego.

Kolejne powiększeni poprzedniego.

Delikatna zmiana warunków zbierzności. Obraz potencjału budowania gradientów (nie zero-jedynkowej wizualizacji) bazującej na zmianie warunków zbieżności.

Delikatna zmiana warunków zbierzności. Obraz potencjału budowania gradientów (nie zero-jedynkowej wizualizacji) bazującej na zmianie warunków zbieżności.

Viewport Blendera z punktami próbkującymi. Poniżej setup iteracyjny GN (Geometry Nodes).

Viewport Blendera z punktami próbkującymi. Poniżej setup iteracyjny GN (Geometry Nodes).