"Fake radiosity"
2001 nyarán azzal foglalkoztam - csak úgy, a magam szórakoztatására, hogy hogyan lehet a Maya renderer-je segítségével globális illuminációs képeket készíteni. A módszer amit használtam nem teljesen újszerű, de az alkalmazásnál merültek fel olyan problémák, amelyeket saját trükkökkel oldottam meg. A tapasztalatokat a 2001-es TDK konferencián magyarul és a 2002-es CESCG konferencián angolul publikáltam. Az alapvető probléma amit megcéloztam az, hogy a matt felületek közötti fényvisszaverődéseket is meg tudjunk jeleníteni a képeken. A Maya - és sok más program - által alkalmazott sugárkövetés (ray tracing) csak a tökéletesen tükröző felületeket kezeli. Az alapötlet - amely nem tőlem származik a következo: a matt felületeket közelítsük olyan "rücskös" tükrözo felületekkel, melyeken sűrű, apró hepehupák vannak. Ezek a felületek tényleg úgy viselkednek mint diffúz felületek, hiszen a fényt minden irányba szétszórják Ezeket a felületi egyenetlenségeket beépített, procedurális (brownian) bump map-ek segítségével hoztam létre. A bump map erőssége - azaz a buckák mélysége- határozza meg, hogy a felület mennyire lesz csillogós vagy matt hatású.
Különböző erősségű bump map hatása.
Látható, hogy létrejöttek a felületek közötti fényvisszaverődések, matt hatásúak a felületek, elmosottak az árnyékok. A módszer fizikailag - többé kevésbé - korrekt módon számítja ki a fényvisszaverodéseket, és látható hogy a tökéletesen tükröző anyagoktól a teljesen matt felületekig mindent kezel. Ezért van a címben a "fake radiosity" idézőjelek között, hiszen a radiosity CSAK a matt felületeket kezeli. (És igazából az sem igaz, hogy fake, mert nem csalunk, hanem kiszámítjuk a fény útját) Ha a fenti ötlet segítségével szeretnénk képeket eloállítani némileg el kell térni a hagyományos módszerektől. Amegvilágítást ugyanis nem a szokásos pont ill. irányfényekkel hozzuk létre, hanem olyan felületekkel, amelyek anyaga önfénnyel (self illumination / incandescence) rendelkezik. Ezek a fények azért fognak világítani, mert látszódnak a tükröződésben. (ez nem olyan meglepő, hiszen a valóságban is ez történik) Így lehetőségünk van kiterjedt fényforrások használatára is. A régi, pontszerű fények nyilván nem működnek, hiszen azok nem látszanak a trükröződésben. Az anyagokat sem a hagyományos módon kell elkészíteni: saját fényük teljesen fekete, csak a tükröződés színével állítjuk a felület színét. A tükröződés erőssége a felület fényességével arányos, a bump map pedig nagy frekvenciás zaj kell legyen. A bump erőssége - mint arról már szó volt - az anyag csillogósságát állítja.
A módszer alkalmazása különböző bump map erősség mellett. A fényforrás egy önfénnyel rendelkező félgömb.
A renderelés a legproblémásabb lépés. Ha hagyományos beállításokat használunk valami ilyesmit kapunk:
Ez azért van, mert minden pixel színének meghatározásához 1-2 mintát (sugarat) használunk. Ahhoz, hogy valószerű képet kapjunk rengeteg sugarat kell minden képpontból kilőni, hogy a felületet elérve minden lehetséges irányba tovább verődjön. Mivel a Maya maximmum 32 mintával hajlandó dolgozni ki kellett találni valamit, hogy ennél több sugarat bocsáthassunk ki a kamerából. Az általam javasolt megoldás az volt, hogy ugyan abból a kamerából készítsünk több képet és ezeket átlagoljuk ki. Nyilván akkor nyerünk valamit, ha minden képen máshova eznek a minták. Mivel nem tudhatjuk, hogy a Maya hogyan "sorsolja" ki az új minták helyét a bump map mozgatása a célravezeto. Ha ugyanis képről képre mozgatjuk a nagy frekvenciás bump textúrát azt a hatást érjük el, mintha a minták lennének más helyen. Ezzek a módszerrel tetszolegesen nagy számú minta/pixel érheto el.
A módszer produkciós környezetben sajnos nem állja meg a helyét, hiszen a legutolsó kép kiszámításához 1 napra volt szükség... További részletek a dolgozatokban.
|