PC Press
O nama
O nama
Pretplata
O nama
Postanite saradnik PC-ja
Kontakt sa redakcijom
PC Press
Novi broj
Novi broj   
Pretrazivanje
Arhiva
Arhiva   
PC Online
PC Plus   
Specijalna izdanja
Softver Softver
PC #195 : Januar 2013 Knjiga 50 godina racunarstva u Srbiji

 Naslovna  Sadržaj 
Stevan Josimović  

(De)LuxRender

Ako se bavite 3D dizajnom ili animacijama, znate koliko je bitan renderer. Često morate da ga dokupite pored svog standardnog 3D paketa, pri čemu renderer može biti skuplji od 3D aplikacije. Možda da probate besplatni softver, recimo LuxRenderer.

Napredna optička simulacija transparentne supstance – voda. Autor: Areandres
(kliknite za veću sliku)

Open source zajednica nudi odličnu alternativu komercijalnim 3D paketima: Blender. Iako on nije udoban u svim segmentima primene kao svoji vlasnički takmaci, sa Blender‑om se mogu postići vrhunski rezultati. Sada se taj hrabri alternativni talas open source zajednice proširio i na ponudu LuxRender‑a, rendering engine‑a zasnovanog na algoritmima usklađenim sa zakonima fizike, koji spada u grupu nepristrasnih (unbiased) algoritama. To znači da ova rendering tehnika ne pravi sistematsku grešku u radiance aproksimaciji; jedina greška kod nepristrasnih renderera se javlja zbog varijanse, i manifestuje se kao visokofrekventni šum u renderovanoj slici. Šum se postepeno smanjuje s brojem semplova u renderu, ali ćete ovde biti primorani na ne baš prijatan kompromis: da biste prepolovili šum, moraćete da učetvorostručite broj render uzoraka. Dakle, vreme renderinga po frejmu raste eksponencijalno, što u praksi (i na današnjem hardveru) može značiti i više od desetak sati. Biased rendereri smanjuju visokofrekventni šum unošenjem određene „pristrasne“ greške u vidu zamućenja slike (blur‑a).

LuxRender je fork projekat PBRT‑a (PBRT.org), ali pošto je PBRT više akademski projekat, tvorci LuxRender‑a uvideli su prostor da PBRT prerade i ponude ga u formi koja više odgovara 3D umetnicima. Ovaj renderer stvoren je na fizički valjanim jednačinama koje modeliraju prenos svetla kroz scenu, što mu omogućava da simulira razne optičke efekte koji se teško postižu s drugim render engine‑ima.

Tradicionalni rendereri operišu s bojama izraženim u RGB komponentama, a LuxRender vodi računa o čitavom spektru talasnih dužina. To znači da će razni efekti, poput disperzije ili boje odbijenog svetla, biti precizno generisani i da će, između ostalog i zbog toga, render izgledati foto‑realističnije. Pošto se renderovani podaci ne svode na RGB, nije teško pogoditi da je podrška koju LuxRender ima za HDR (high dynamic range) rendering potpuna.

Optimizovano... kada je moguće

Jednostavan i efikasan korisnički interfejs sa interaktivnim kontrolama
(kliknite za veću sliku)

Neki render parametri povezani sa scenom ne mogu se menjati unutar LuxRender aplikacije. Tu pre svega mislimo na Surface i Volume integrator ili tip semplera. Ukoliko želite da promenite neki od ovih parametara, moraćete da skočite do 3D aplikacije i, koristeći plug‑in ili skript, tu promenu ubeležite u izvezeni .lxs fajl, što nije baš najudobniji način za eksperimentisanje. Zbog toga je bitno da se upoznate s tim šta koji od ovih parametara znači i kada se koristi.

Ukoliko je brzina rendera daleko važnija od apsolutne preciznosti osvetljenja scene, najbolje je da posegnete za nekom od photon mapping tehnika. Kod klasičnog path tracing‑a prati se realna putanja svetlosnih zraka kroz scenu i promene koje nastaju u intenzitetu svetla/energije. Taj proces se ponavlja mnogo puta sve dok renderovana slika ne bude čista. Proces je vrlo precizan i daje odlične rezultate, ali je spor. Kod mapiranja fotona postoje dva prolaza. U prvom, foton prolazu prate se zraci svetla od izvora i na mestu gde udare, postavljaju se markeri koji čine fotonsku mapu. Različiti markeri se postavljaju u zavisnosti od toga da li je foton sleteo direktno sa izvora svetlosti ili je odbijen od neke površine ili je prošao kroz transparentni materijal. Kada se unapred zadani broj fotona obeleži na sceni, prelazi se na drugi prolaz, tradicionalni ray‑trace s malom promenom. Umesto da zraci iz kamere traže izvore svetla, koristiće markirane fotone u kontaktu s geometrijom u sceni i pročitaće iz te mape koliko svetla dati marker nosi. Ovaj proces predstavlja neku vrstu varanja, ali su rezultati blizu preciznoj raspodeli svetla u sceni, a dobici u brzini su toliki da se metod ne sme ignorisati.

Bez obzira na to što spada u grupu nepristrasnih renderera, LuxRender 1.1 nudi dve opcije za smanjenje šuma, odnosno skraćenje render vremena: GREYCStoration i Chiu. S njima možete da eksperimentišete i dok je render proces u toku, ali sigurno je da ove tehnike neće moći potpuno da zamene veliki broj render uzoraka.

Svetlom kroz kameru

Kontakt volumenskih objekata: staklo, tečnost i led. Autor: Areandres
(kliknite za veću sliku)

LuxRender podržava emiterske izvore svetla, kao i izvore svetla iz okruženja. Svi svetlosni izvori mogu imati konstantnu boju, teksturu ili korisnički definisan spektar. Za foto‑realistične projekte ne preporučuje se upotreba tačkastih izvora svetlosti ili reflektora – treba koristiti objekte (geometriju) sa scene kao izvore svetla. Kao izvori svetla iz okruženja mogu se koristiti HDR slike, sun/sky simulator, udaljene ili beskonačne lampe kao generičko sunce i nebo.

LuxRender ima još jedan sjajan alat: svetlosne grupe (Light Groups). Ukoliko sva svetla na sceni podelite u više svetlosnih grupa, možete u istom renderu čuvati različite svetlosne modele za svoju scenu, možete ih kombinovati ili potpuno isključivati. Još lepše, svetlosnim grupama možete menjati intenzitet i temperaturu svetla i bez ponovnog rendera. Svetlosne mahinacije možete izvoditi u toku rendera s minimalnim usporenjem jer je LuxRender multithreaded aplikacija.

Pored sveprisutnih kamera koje prikazuju scenu u perspektivi, LuxRender podržava ortografske i environment kamere. Ortografske kamere su veoma zgodne kada renderovani objekat treba da se pojavi na tehničkom crtežu u jednoj ili sve tri ortogonalne projekcije pa će ih arhitekte i dizajneri često koristiti. Environment kamera služi za izradu kružnih panorama (do 360 stepeni) ili za pripremu HDR environment mapa koje se koriste za osvetljenje scene u drugim 3D programima ili samom LuxRender‑u.

Pošto se u ovom sjajnom rendereru za distribuciju svetla primenjuju jednačine iz optike, nije teško pretpostaviti da će slično biti i kad je u pitanju način rada kamere. Zbog toga se motion blur generiše automatski, kako u pokretu kamere tako i za pokret objekata. Kontrole su takođe fizički parametri iz realnog sveta pa ćete motion blur potpuno kontrolisati brzinom svojih objekata i dužinom ekspozicije. Čak će se generisati i lučni motion blur, jer će LuxRender u nekoliko međukoraka definisati kretnju i prema njoj generisati motion blur. To je moguće jer se pokret objekata opisuje u apsolutnim vremenskim intervalima, a ne parovima koordinata u vremenskim trenucima u kojima se pojavljuju frejmovi. Slično tome, dubinu polja ćete kontrolisati žižnom daljinom, otvorom blende i brojem listića blende. Rezultati impresioniraju, ne zaostajući za bokeh efektom koji se dobija na modernim DSLR uređajima.

Materijali, teksture i volumeni

LuxRender u modernoj gaming industriji. Autor: Silverball Studio
(kliknite za veću sliku)

Kao i većina drugih renderera, LuxRender podržava opšte definicije materijala kao što su matte ili glossy. Da bi se podržali drugi moduli koji poštuju optičke zakone i da bi se održao visok nivo foto‑realističnosti renderovanih slika, neki materijali su osnaženi fizikom, pa su se među njima našli metal, staklo i, neočekivano, auto‑boja. Od neuobičajenih ali neophodnih karakteristika za materijale LuxRender donosi: apsorpciju, disperzivnu refrakciju i tanki premaz (thin film coating). Materijale možete mešati i menjati u teksturama, čak i rekurzivno. Podržane su proceduralne ali i bitmap teksture, koje se mogu izvaditi iz standardnih bitmap formata ali i iz HDR‑a.

LuxRender donosi razne novitete na polju materijala, ali oni nisu dovoljni da se vizuelizuju baš sve supstance. Zbog toga ovaj renderer ima moćan volume sistem koji precizno simulira apsorpciju i rasipanje (scattering) svetla. Volume sistem se bazira na objektima iz scene – objekti svojom geometrijom ograničavaju supstance koje se simuliraju.

Interfejs LuxRender plug‑in‑ova zahteva da ručno prevedete (ili podešavate) materijale u formu koju očekuje renderer. Zvuči logično, ali taj način rada nije baš najudobniji, pogotovo ako radite na kompleksnim scenama.

Na sve tri platforme, složno

Bump mapa i svetlosno rešenje sa optimalnim brojem render uzoraka. Autor: Areandres
(kliknite za veću sliku)

LuxRender ima i gomilu drugih mogućnosti, recimo subdivision i displacement tehnike koje su standardizovane u prethodnih pet godina. Pored klasičnog, za sitnije detalje možete da koristite i micropolygon displacement koji će se generisati u trenutku kada zrak stigne do geometrije. Za razliku od klasičnog pristupa u kome se sva displacement izračunavanja događaju pre rendera i zauzimaju pozamašan prostor u memoriji, micropolygon displacement ne zahteva dodatnu memoriju, a obezbeđuje interesantne efekte. Moderni rendereri se ne mogu zamisliti bez instanciranja, pa vam u LuxRender‑u i to stoji na raspolaganju.

Sve ove korisne opcije i alate ugrožava LuxRender‑ova najtanja karika – brzina renderovanja. Svi znaju da se za najkvalitetnije algoritme i beskompromisni foto‑realizam mora izdvojiti adekvatno vreme, ali ono može predstavljati glavnu branu za LuxRender na kompleksnijim komercijalnim projektima. Kao odgovor na ovu korisničku dilemu, LuxRender nudi kooperativni, multiplatformski mrežni render koji može da renderuje niz animacionih sekvenci ili jedan jedini frejm. Mašine koje koristite u mrežnom renderu mogu biti ispod stola, pored vaše leve noge ili na drugom kontinentu – LuxRender neće mariti za to sve dok znate njihove IP adrese. Prednost u odnosu na neke vlasničke 3D pakete je u tome što je broj render klijenata i njihovih jezgara praktično neograničen. To znači da ćete uz skromna sredstva ili donaciju prijatelja u neiskorišćenim CPU taktovima lako doći do potrebne snage da taj projekat izgurate do kraja.

Sledeća inovativna opcija je mogućnost da pauzirate renderovanje i da trenutno stanje snimite u fajl, tako da možete da ga nastavite kasnije, na istom ili drugom računaru. To vas oslobađa čekanja na završetak sekvence ili frejma, a pozajmljene resurse ćete moći da vratite u nekoliko sekundi bez gubitaka. Pošto ovaj odlični renderer radi na sve tri popularne platforme (Microsoft Windows, Linux i Apple OS X), nema potrebe da na dodatnom hardveru pokrećete virtuelne mašine i time ga značajno usporavate. Konačno, u eksperimentalnoj fazi je paralelna upotreba CPU i GPU u render zadacima. Baziran na OpenCL tehnologiji, ovakav render je u prvim testovima i preko deset puta brži nego tradicionalni CPU render.

LuxRender i njegov izvorni kod su objavljeni pod GNU GPL v3 licencom onako kako je propisuje Free Software Foundation. Besplatna upotreba, dinamični ritam razvoja i predana korisnička zajednica daju vam sigurnost da u turbulentnim finansijskim vremenima nećete ostati bez osnovnog alata za rad. A pri tom LuxRender nudi kvalitet rada koji svakako treba isprobati.