A Radiosityről
Egy egyszerű jelenet Kezdjük egy (az ábrán is látható) egyszerű tér létrehozásával – szoba 3 ablakkal.
Van néhány pillér és beugró, melyek érdekes árnyékhatást tudnak produkálni. Válasszuk ki a felületek közül az egyiket és nézzük ezen a világítást! A kiválasztott felületet – a képen is látható, az egyik oszlop ablak felé néző oldala - az eljárás felosztja kisebb területekre. Ezen kicsi terület a patch, magyarul folt. Bízom benne, hogy az írás végén a kedves olvasó (felhasználó) is érteni fogja a „folt” fogalmát. Nade haladjunk tovább… A felosztott felület foltokból épül fel, és most megpróbáljuk ezeknek a foltoknak a szemszögéből nézni a világot.
Kiválasztottunk egy foltot. … és most képzeld el, hogy te vagy ez a folt! Gondold végig… ebben a helyzetben mit látsz a világból?
A Radiosityről
Kilátás a foltból! (remélhető, hogy a kedves olvasó is valami hasonlót képzelt el még az előző oldalon leírtak után – megj.: a fordító) Tehát a foltból való „kinézéskor” ezt látjuk. A szoba nagyon sötét, mert fény még nem lépett be sehonnan. Az élek láthatósága nem része a jelenetnek, csak azért látszik a fehér körvonal, hogy jobban érthető legyen a vizuális információ. A folt szemszögéből jól látható majd a teljes fénymennyiség, amit ki tudunk számolni, egészen addig, míg a fény el nem éri a foltot. Azt a fényt, amit a folt láthat, TELJES BEESÉSI FÉNY-ként kell értelmezni. A folt a szobában most a külső sötétséget látja. Miközben a beeső fény összeadódik, láthatnánk, hogy az a foltot közvetlenül nem éri el. Ezt a foltot ilyenkor „sötéten meggyújtottnak értelmezzük. Kilátás egy alacsonyabb foltból A pilléren, egy másik kiválasztott folt nézőpontjából már látható a fényforrás – hívjuk most az egyszerűség kedvéért Napnak – a középső ablak bal felső sarkában. Ekkor az összeadódó fény látható lesz, ami nagyon erős fényt jelent. Ezt a foltot ilyenkor „fényesen meggyújtottnak” értelmezzük.
Világítás a pilléren A foltok mindegyikénél értelmezett ismétlődő folyamat – a fény folyamatosan „jön” a fényforrásból - végeredményeként a beeső fény hatására látható, hogy milyen megvilágítást kap a pillér. (pontosabban a pillér felosztott egyes foltjai) Felfelé haladva látható, hogy mely foltok látják teljesen, melyek kevésbé teljesen és melyek egyáltalán a Napot. Azok a foltok, melyek elől az ablak szegélye valamely mértékben eltakarja a Napot, kevésbé lesznek „kigyújtva”, homályosnak értelmezzük. Ahogy az látható, a természetes árnyék létrejön a jelenetben, annak függvényében, hogy a felosztott felület – maga a folt – milyen mértékben látja a fényforrást.
A Radiosityről
A teljes szoba kigyújtása – először A szobában lévő, összes foltra kiterjedő ismétlődő eljárás adja a jelenetet. Minden sötétnek látszik, kivéve azokat a felületeket, melyek a Naptól kaptak fényt. Tehát megállapíthatjuk, hogy ez nem éppen a legszebben létrehozott jelenet a bevilágítás és renderelés szempontjából. Figyelmen kívül hagyja, hogy a világítás ilyenkor nehézkes, de javíthatunk a helyzeten, ha több felosztást – foltot – alkalmazunk. Összefoglalva: a lényeg, hogy a szoba sötét, kivéve azokat a területeket, melyek látják a Napot. Nade ezzel itt nincs vége… Nézzük a továbbiakat!
Kilátás a foltból az első verzió után. Látható, hogy az a folt, ami eddig nem látta a napot, most lát olyan, más foltot (foltokat), amiket a Nap kigyújtott. Ebben a folyamatban ez a folt – amiből most „kinézünk” – kissé világosabb lesz.
A teljes szoba kigyújtása – másodszor Amikor a beeső fény minden folton „kiszámítódik”, látható, hogy az eddig sötét folt (foltok) kigyújtódnak. A szoba elkezd valószerű megjelenést ölteni. Ennek oka, hogy a beeső napfény visszaverődik egyrészt a padlóról, másrészt a falakról vagy más felületekről. (pillér, beugró)
A Radiosityről
A teljes szoba kigyújtása: harmadszor A harmadik folyamat szemlélteti, hogy a beeső fény kétszeresen verődik vissza a felületekről. A folyamat így halad lépésről lépésre, ami lassúnak tűnhet, de a jelenet már így is látható, hogy világosodik. A 16. lépésnél már ekkora változás nem tapasztalható. A radiosity eljárás lassan halad a végső kialakítás felé. Minden számítás után csak kissé változik a jelenet. Ez függ a jelenet „bonyolultságától”,
a
felszínektől.
A
számítások
egymásutánisága tarthat néhányszor, de lefuthat több ezerszer is. Rajtad áll, hogy mikor állítod le a folyamatot és tekinted a jelenetet befejezettnek.
A hatodik lefutás után
A tizenhatodik lefutása után
A leíró algoritmus részletesebben (és remélem érthetően is): A FOLTOK Emission: A világban – értsd: a valóságban - néhány tárgy fényt bocsát ki és bizonyos mértékig fényt nyel el. Egy jelenetben meg kell különböztetnünk ilyen tárgyakat, amik „fénykibocsátók”. Vagyis vannak foltok, amik fényt bocsátanak ki, de a legtöbbjük nem. Ezt a folt-tulajdonságot nevezzük emissziónak. Reflectance: Amikor a fény egy tárggyal találkozik, akkor annak egy részét elnyeli (ezt a radiosityben elhanyagoljuk), a többit visszatükrözi. Ezt a fénymennyiséget visszaverődési együtthatónak nevezzük. Fontos megemlíteni két dolgot: mennyi fény esik a foltra, és mennyi hagyja el. A beeső fényt incident_light-nak a visszaverődő fényt excident_light-nak nevezzük. Most, hogy tudjuk a folt(ok) tulajdonságainak fogalmát, ideje, hogy – hacsak leíró nyelven is – meghatározzunk egy foltot. Structure PATCH emision reflectance incident excident end structure
(A leírás programozási részének fordításától itt eltekintek – a fordító)
A Radiosityről
A Radiosity megvalósítása: Az első dolog, amivel a radiosityben foglalkoznunk kell, meg kell oldania annak a problémáját, hogy megnézzük a világot mindegyik folt nézetének a pontjáról. Használhatunk egy un. halszem-objektív nézetet, hogy lássuk, mit lát a folt a jelenetben. Ez viszont nem nagyon gyakorlatias.
The Hemisphere – A Félgömb A hely, amit a folt lát, egy félgömb belső felületén, perspektivikusan így néz ki. (Szokták halszem-optikának is hívni, most nem térek ki a látott és a valódi halszem-optika közötti különbségre) A fekete vonalak a horizontális és vertikális felezőt mutatják. Ha a jelenetben egy kamerát helyeznénk el (lásd vörös folt), és képet alkotnánk a folt szemszögéből, valami ilyet látnánk. Ennek a módszernek egyik hátránya, hogy a beeső fény – beleértve a foltra és a foltról visszaverődő fényt is - kiszámítása matematikai értelemben elég körülményes Félgömb nézet
Renderelt kép
Tehát keresni kell egy másik módszert, ami a számítást gyorsabban és pontosabban elvégzi. Ez pedig a HemiCube – Félkocka eljárás. A Félkocka eljárásba helyezett kamera renderelt képe pontosan megegyezik a Félgömb módszerrel létrehozott renderelt képpel.
A Radiosityről
Képzeld el, hogy a Félkockát „szétnyitod”. Mit is látnál? Segítek – nézd meg a lenti képet!
Ezzel azonban felmerül egy újabb probléma. A kiterítés azokon a tárgyakon, amik a bal/jobb/lent/fent területre kerülnek bizonyos torzulások keletkeznek. Ha arra használtad a Félkockát, hogy kiszámítsad a teljes beeső fényt, ami egy foltra esik, és együtt adtad össze ezeket az értékeket, ami pixelként jelentkezik a képalkotásban, a Félkockában torzulás jön létre a tárgyakon, amik a sarkokban helyezkednek el. Hogy ezt kiküszöböljük, szükséges elhalványítani a pixeleket az éleknél és sarkoknál, annyira, hogy minden tárgy egyformán kerüljön a beeső fénybe. Tudom, nem könnyű megérteni, de nézd meg a lenti ábrát magyarázatul.
Jól látható a fentebb leírt jelenség. A zöld gömb, a kamera látómezőjében nem szenvedett torzulást, de a másik két gömb (piros és kék színű) nem a való képet mutatják. Ezt a jobboldali képen ábrázolt módon lehet kompenzálni. A felszín fényessége függ a kamera nézőpontja és a sík által bezárt szög koszinuszától. (Ezen fordítás nem tér ki a módszer tárgyalására, de a lényeget Lambert koszinusz törvénye jelenti. Vagyis: Egy felszín látszólagos ragyogása arányos a felszín normálisa, és a fény iránya által bezárt szög koszinuszával – megjegyzés: a fordító) Ennyit arról a matematikai és egyéb háttérről, amivel reményeim szerint érthetőbbé vált ennek az eljárásnak az alapja, de nézzünk egy gyakorlati példát a fentebb leírtakra:
A Radiosityről
Indítsuk el a Blendert és hozzuk létre a képen látható jelenetet.
A Radiosityről
A második képen Edit Mode-ban látható a felületek normálja, ami fontos lesz a későbbiekben! Lássuk, az egyes beállításokat. Az egyik legfontosabb, a mennyezeten lévő kis négyzetek. Ezek lesznek a fényforrások, vagyis amikor létrehozzuk őket, adjunk nekik emit értéket, ami az ábrán látható:
Az asztal felett látható egy fekete vonal, ami valójában egy plane. Fontos, hogy ő nem vesz részt a jelenet radiosity számításában, egyetlen szerepe a fény/árnyékhatás módosítása. Normálja felfelé álljon. (Az emittáló tárgyak, amikor kibocsátják a fényt, az nem megy át tárgyakon, hanem visszaverődik róluk, halad tovább és egészen addig „él”, míg energiája el nem fogy, vagy ameddig a számítás m űveletét meg nem szakítjuk.) Amikor készen vagyunk, joinoljuk (egyesítsük – [Ctrl+J]) az előbb említett plane kivételével az összes objektumot. Nem kell megijedni, ilyenkor az egész jelenet egy objektum, vagy ha úgy tetszik tárgy lesz, 0.246 emit
értékkel.
Váltsunk
át
radiosity
nézetre
ezzel a kapcsolóval.
Collect Meshes: A látható mesh-eket konvertálja foltokká Replace Meshes: Lecseréli a régi jelenetet a kiszámított jelenettel Add new Meshes: A kiszámított jelenetet hozzáadja a régihez A zöld gombok a megjelenítés minőségére vannak hatással ElMax/ElMin: A felosztandó elem méretének max/min beállítása PaMax/PaMin: A foltok méretének max/min beállítása Limit Subdivide: a foltok alfelosztása (kisebb rész(ek)re) Click a Collect Meshes gombra:
Go: indítja a számítást SubSh Patch/Element: hányszor tesztelje a környezetében érzékelt folto(ka)t/elemeket Subdiv Shoot Element: újabb felosztásért, magas energia érzékelésének változtatása és új felosztás (Elemek/Foltok) MaxEl: Elemek max beállítható értéke Face Filter: Extra simítás Element Filter: a szűrő elemeiről eltávolítja az élsimítást Remove Doubles: duplák eltávolítása Lim: a duplák eltávolításának értéktartománya Nos nézzük, mit látunk, ha a GO-ra kattintunk:
A Radiosityről
A fentebb említett zöld gombbal most megmutatom, hogy mit is osztott fel az eljárás Wire:
A Radiosityről
Solid
Nos nincs más hátra, választani kell, hogy a létrejövő jelenetet megtartva és a régit „eldobva” folytatjuk a munkát: Replace…, de megtarthatjuk a régi jelenetet és hozzáadhatjuk az újat az Add… gombbal. Ne feledjük a következőt: Bármelyik módszert is választjuk, ez a jelenet 1 objektum. (az egészből újabb részeket képezni sem ördöngősség, de nem része a tutorialnak) Kilépni a Radiosity-ből a Free Radio Data gombbal lehet. Tartozom még egy megjegyzéssel: Ez az eljárás nyugodtan alkalmazható (UV) textúrázott jelenetekben is. Mivel a foltok létrehozása során a számítás „hozzányúl” ezekhez a koordinátákhoz, az utólagos korrekció szinte megoldhatatlan, de nem lehetetlen. Viszont a jól feltextúrázott objektumokhoz utólag nem kell hozzányúln i. Saját tapasztalatom és korábbi, ehhez az eljáráshoz kapcsolódó leírások, fórumok ajánlata szinte egybehangzó volt, mégpedig abban, hogy sok-sok kísérlettel tapasztalható ki az alapértelmezett beállítás. Kiindulásnak javaslom, hogy a jelenet face számának a kétszerese esetleg majdnem háromszorosa is beállítható MaxEl értékének. Tisztában vagyok, hogy nem beszéltem a Radiosity panel Radio Render részéről (a legtöbb esetben az alapértelmezett beállítások is kielégítő eredményt adnak), és sok egyébről, azonban bízom benne, hogy ennyi segítséggel a kezdeti nehézségen hamar túllendülhet a kedves olvasó. Figyelem: a beállításoktól függően a számítás hosszú időt is igénybe vehet, de az eredmény kárpótólni fog mindenkit. Csak javasolni tudom akár a Blender belső renderelője, akár a Yafray kiegészítőjeként ezt az eljárást. Lássunk néhány képet az elmondottak illusztrálására:
A Radiosityről
Forrás: a http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm – Fordította: stewet as Szabó István