Kuinka tehdä Mandelbulb

Mandelbulb on kolmiulotteinen fraktaali, josta on tulossa yhä suositumpi 3D-taide ja VFX. Tässä artikkelissa käyn läpi, kuinka tehdä Mandelbulb nopeasti Houdini , käyttämällä SDF: ää (allekirjoitettu etäisyyskentän tilavuus).

Jokaisessa vokselissa SDF tallentaa etäisyyden lähimpään pintaan. Houdini osaa tulkita nämä etäisyydet ja visualisoida johdetun pinnan 3D-geometriana. Tämä on erittäin kätevää, koska useimmat fraktaalikaavat ovat 'etäisyyden estimointitoiminnon' muodossa - kun annetaan piste avaruudessa, funktio palauttaa etäisyyden lähimpään fraktaalin implisiittisen pinnan pisteeseen. Tämä tarkoittaa, että voit laittaa fraktaalitoiminnon tulokset suoraan jokaiseen vokseliin ja se vain toimii!

01. Luo tyhjä tilavuus

Luo tyhjä äänenvoimakkuuden työkalurivi



Napsauta oikeassa yläkulmassa olevaa kuvaketta suurentaaksesi kuvaa

Luo ensin tyhjä tilavuus (Volume SOP) täyttämään etäisyysarvot - anna sille nimi 'pinta'. Hyvä testattava fraktaali on Mandelbulb, ja oletuksena se on noin 2,5 yksikköä leveä, joten aseta äänenvoimakkuudeksi 2,5, 2,5, 2,5. Voit muuttaa äänenvoimakkuuden tarkkuutta vaihtaaksesi nopeutta laatuun; hyvä lähtökohta voisi olla yhdenmukaisen näytteenoton asettaminen koon mukaan jakokoon 0,01. Oletustila Houdinin äänenvoimakkuuden visualisointiin on sumuvolyymi, mutta voit muuttaa sen näyttämään kovana rajapintana vaihtamalla näyttötilaksi Isosurface (Ominaisuudet-välilehdessä).

02. Lisää koodi

Lisää koodityökalurivi

Napsauta oikeassa yläkulmassa olevaa kuvaketta suurentaaksesi kuvaa

Sitten on kyse vokselien täyttämisestä etäisyysarvoilla. Käytä tätä VEX-koodia Volume Wrangle SOP -ohjelmassa Mandelbulb-kaavan suorittamiseksi per vokseli:

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. Esitä parametriviitteet

3D-fraktaali

Napsauta oikeassa yläkulmassa olevaa kuvaketta suurentaaksesi kuvaa

Houdinin avulla voit lisätä omia mukautettuja varaparametreja yksittäisen solmun käyttöliittymään. VEX-koodimme sisältää parametriviitteet ( chf () funktiot), jotta voimme hallita kaavan ominaisuuksia parametreilla käyttöliittymässä. Näitä parametreja ei ole oletusarvoisesti, mutta voit luoda ne painamalla koodiikkunan oikealla puolella olevaa Luo varaparametrit -painiketta.

Tällöin Iterations-parametri ohjaa Mandelbulbin yksityiskohtien tasoa - aloita 5 tai 6: lla. Power ohjaa Mandelbulbin muotoa - tyypillinen muoto syntyy Power 8.0: n ympärillä.

04. Muunna polygoneiksi

muuntaa polygoneiksi

Napsauta oikeassa yläkulmassa olevaa kuvaketta suurentaaksesi kuvaa

Muunna pinta polygoneiksi seuraamalla Volume Wrangle with Convert Volume SOP -ohjelmaa. Käytä käänteistilaa, koska se tulkitaan allekirjoitetuksi etäisyyskentäksi, ja saat yksityiskohtaisen fraktaalin muodon silmukan monikulmion muodossa. Käänteinen-tila kääntää tehokkaasti pinnan normaalit ja monikulmioiden käämityssuunnan.

05. Tee Mandelbulb

mandelbulb-renderöinti

Napsauta oikeassa yläkulmassa olevaa kuvaketta suurentaaksesi kuvaa

Sen jälkeen voit tehdä sen samaksi kuin muissakin verkoissa, mutta koska se on niin yksityiskohtainen, et voi purkaa sitä UV-valossa - harkitse menettelytapojen käyttämistä sen pintaan, esimerkiksi varjostusta sen kaarevuuden perusteella.

Tämä artikkeli julkaistiin alun perin 3D-maailma , maailman myydyin lehti CG-taiteilijoille. Ostaa numero 237 tai tilaa .

Lue lisää: