Hogyan készítsünk Mandelbulbot

A Mandelbulb egy háromdimenziós fraktál, amely egyre népszerűbb 3D művészet és a VFX. Ebben a cikkben áttekintem, hogyan lehet gyorsan elkészíteni a Mandelbulbot Houdini , egy SDF (aláírt távolsági térfogat) használatával.

Mindegyik voxelben egy SDF tárolja a felszín legközelebbi pontjához való távolságot. Houdini értelmezni tudja ezeket a távolságokat, és a származtatott felületet 3D geometriájaként jelenítheti meg. Ez nagyon kényelmes, mivel a legtöbb fraktálképlet „távolságbecslési függvény” formáját ölti - adott egy pont a térben, a függvény visszaadja a távolságot a fraktál implicit felületének legközelebbi pontjáig. Ez azt jelenti, hogy a fraktálfüggvény eredményeit közvetlenül az egyes voxelekbe teheti, és csak működni fog!

01. Hozzon létre egy üres kötetet

Hozzon létre egy üres kötet eszköztárat

Kattintson a jobb felső sarokban lévő ikonra a kép nagyításához

Először hozzon létre egy üres kötetet (Volume SOP), hogy kitöltse a távolságértékeket - adja meg a „felület” nevet. Egy jó fraktál, amellyel tesztelni lehet, a Mandelbulb, alapértelmezés szerint 2,5 egység széles, ezért állítsa a hangerő méretét 2,5, 2,5, 2,5 értékre. Megváltoztathatja a hangerő felbontását a sebesség és a minőség összehasonlítása érdekében; jó kiindulópont lehet az Egységes mintavétel beállítása méret szerint, 0,01 osztásmérettel. A kötet megjelenítésének alapértelmezett módja a Houdini-ban ködkötet, de ezt megváltoztathatja úgy, hogy kemény határfelületként jelenjen meg, ha a Megjelenítési módot Isosurface-re állítja (a Tulajdonságok lapon).

02. Adjon hozzá néhány kódot

Adjon hozzá néhány kód eszköztárat

Kattintson a jobb felső sarokban lévő ikonra a kép nagyításához

Aztán arról van szó, hogy megtöltsük a voksokat távolságértékekkel. Használja ezt a VEX kódot egy Volume Wrangle SOP-ban a Mandelbulb képlet futtatásához voxelenként:

vector p = v@P; float dr = 1; float r = 0.0; float power = chf(“power”); for (int i = 0; i 1.5) break; // convert to polar coordinates float theta = acos(p.z/r); float phi = atan(p.y, p.x); dr = pow( r, power-1.0)*power*dr + 1.0; // scale and rotate the point float zr = pow(r, power); theta *= power; phi *= power; // convert back to cartesian coordinates p = zr*set(sin(theta)*cos(phi), sin(phi)*sin(theta), cos(theta)); p += v@P; } f@surface = 0.5*log(r)*r/dr;

03. Mutasson be paraméterhivatkozásokat

3D fraktál

Kattintson a jobb felső sarokban lévő ikonra a kép nagyításához

A Houdini segítségével hozzáadhatja saját egyéni tartalék paramétereit az egyes csomópontok felhasználói felületéhez. A VEX kódunk paraméter hivatkozásokat tartalmaz (a chf () függvények), hogy vezérelhessük a képlet szempontjait az UI paramétereivel. Ezek a paraméterek alapértelmezés szerint nem léteznek, de a kódablak jobb oldalán található Tartalékparaméterek létrehozása gomb megnyomásával hozhatja létre őket.

Ebben az esetben az Iterations paraméter vezérli a Mandelbulb részletességét - kezdje 5-vel vagy 6-tal. A Power vezérli a Mandelbulb alakját - a tipikus alak a Power 8.0 körül jelenik meg.

04. Konvertálás sokszögekké

sokszögekké konvertálni

Kattintson a jobb felső sarokban lévő ikonra a kép nagyításához

A felület sokszögekké történő átalakításához kövesse a Hangerő-harcot a Hangerő átalakítása SOP-val. Használja az Invert módot, mert azt előjeles távolságmezőként értelmezik, és így a részletes fraktálalak sokszög formában hálózódik be. Az Invert üzemmód megfordítja a felület normális értékeit és a sokszögek tekercselési irányát.

05. Adja meg Mandelbulbjét

mandelbulb render

Kattintson a jobb felső sarokban lévő ikonra a kép nagyításához

Ezután ugyanolyan renderelheti, mint bármely más hálót, de mivel annyira részletes, hogy nem fogja könnyen UV-re bontani - fontolja meg eljárási technikák használatával a felületét, például árnyékolást a görbülete alapján.

Ezt a cikket eredetileg itt tették közzé 3D világ , a világ legkeresettebb magazinja a CG művészeinek. megvesz 237. szám vagy Iratkozz fel .

Olvass tovább: