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 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
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
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
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
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ää:
- Kasvata kasveja Houdinissa
- 8 silmiinpistävää esimerkkiä fraktaalista
- 15 suosituinta Houdini-vinkkiä