Egy modern 3D-s játék elképzelhetetlen lenne világítás (Lights) nélkül. A megfelelő bevilágítás alapvetően határozza meg a játékélményt, az egész játék világát. Gondoljunk csak például a Doom sorozatra, amely nagyon jól példázza a hangulathoz illő világítás fontosságát. Amilyen látványos, olyan számításigényes is tud lenni egy világítás és árnyékolás, de az optimalizálással majd a későbbiekben fogunk foglalkozni. A unityben a következő fénytípusok találhatóak meg: Directional Light, Area Light, Spotlight, Point Light.

Fény típusok

Directional Lights

A Directional Light a napsütéshez hasonló fényforrás létrehozására ideális. Gondoljunk erre a típusra úgy, mint egy nagyon távoli fényforrásra, amely végtelen távolságra ér el.

A fénysugarak párhuzamosak egymással, más fényforrásoktól eltérően nem válnak külön, ahogy távolodunk a forrástól. A fény eme tulajdonsága miatt az objektum árnyéka a fényforrástól viszonyított helyétől függetlenül mindig ugyanolyan lesz. Az ilyen típusú árnyékvetés leginkább külső helyszínek világításánál hasznos.

Directional Light

Mivel a Directional Light-nak nincsen pontszerű forrása, ezért bárhol el lehet helyezni a scene-ben anélkül, hogy megváltoztatnánk a fény hatása. A fényforrás elforgatása ellenben nagyon látványos tud lenni, ezzel érdemes kísérleteznünk.

A többi fényforrásnak, mint például a spotlight-oknak, van egy forráspontjuk, amely miatt változik az árnyék is, ahogyan a karakter elhalad a fényforrás mellett. Ha állandó árnyékirányt szeretnénk, a Directional Light fog nekünk ebben segíteni. Egy másik hasznos tulajdonsága ennek a típusnak, hogy az intenzitása nem gyengül a távolság növekedésével.

Mivel minden felülethez elér a scene-ben, ezért számításba kell vegyük az erőforrásigényét, ha Deferred Rendering path-ot használunk. Ha ezt a renderelési technikát használjuk, akkor a számításigény a megvilágított pixelek számától fog függeni. Bár költséges világítás, de konzisztensen változik a teljesítményigénye, ezért könnyebben állíthatjuk be optimálisan.

A scene-ek alapból tartalmaznak egy Directional Light-ot. A scene világítását a Lighting panelen (Lighting/Scene/Skybox) tudjuk állítani. Az alap Directional Light-ot törölhetjük is, és készíthetünk újat helyette vagy más gameobject-et is megadhatunk a Sun paraméternél (Lighting/Scene/Sun).

Az alap Directional Light forgatásával módosíthatjuk a Skybox-ot. Napnyugta effektet hozhatunk létre, ha elkezdjük forgatni a fényforrást úgy, hogy a sugarak párhuzamossá váljanak a talajjal. Amennyiben a fénysugarakat egyenesen felfelé irányítjuk, akkor az ég feketévé válik és beköszönt az éjszaka. Verőfényes napsütést akkor csinálhatunk, ha a sugarakat merőlegesen irányítjuk a talajra.

Point Lights

A Point Light egy klasszikus fényforrás. Nagyon egyszerű koncepció alapján működik. A fényforrás minden irányban világít. Ez a típusú világítás égőkhöz, gyertyákhoz, fegyver villanásához vagy robbanásokhoz ideális, mivel ezen esetekben a fénynek minden irányban el kell indulnia.

A fényerő a távolság növekedésével csökken. Középen teljes intenzitású fény a Range paraméterben megadott távolságnál éri el a nullát. A távolság és a fényerő között négyzetes az arány, ez azt jelenti, hogy a való világot modellezi az intenzitás effajta csökkenése.

Point Lights

Point Lights

Lehetőségünk van bekapcsolni a Point Light árnyékvetését, de ez igen számításigényes, ezért megfontoltan használjuk. Az árnyékokat hatszor kell renderelni a hat alapirányhoz és ez egy lassabb hardveren elfogadhatatlanul lassú lehet.

Tetszett a cikk? Érdekel a játékfejlesztés? Jelentkezz iskolánkba!

Nagyon fontos megjegyezni, hogy ez a fajta fény nem verődik vissza. Ez azt jelenti, hogy fény addig folytatja az útját, amíg el nem éri a Range-ben megadott távolságot. Ahhoz, hogy megelőzzük, hogy a fény a nem kívánt helyeken vagy falakon is átmenjen, körültekintően kell elhelyeznünk a világítást és beállítani a Range-et.

Spotlight

A spotlight egy irányított fényforrás. A megvilágítás szélességét a Spot Angle, míg a sugarát a Range határozza meg. A Spot Angle növelésével a tölcsért szélesítjük ki, de ezzel az úgynevezett penumbra mérete is nő.

Spotlight lights

Spotlight lights

A Spotlight kiválóan használható például utcai világításhoz, zseblámpákhoz. Mivel a fény precízen kontrollálható, ezért nagyon hasznos, ha például egy karaktert akarunk fókuszba helyezni egy drámai scene-ben.

Spotlight lights

Spotlight lights

A Spotlight sem verődik vissza, ha Precomputed Realtime GI-t használunk. A Point Light-hoz hasonlóan a fény itt is áthatol a falakon, ezért jobban oda kell figyelnünk az elhelyezésre.

Area Lights

Az Area Light egy négyzet, amely az egyik oldalából kiindulva minden irányban fényt sugároz. Az Area Light távolságát itt nem szabályozhatjuk, de az intenzitás itt is négyzetesen csökken, ahogy távolodunk a forrástól.

Area Light

Ez a típusú fényforrás a könnyed fényeffektek készítéséhez javasolt. A fény minden irányban terjed a kezdeti felületről, emellett diffúz fényeket is létrehozhatunk vele. Eme tulajdonsága miatt elég teljesítményigényes és a bake-elési időt is nagyban megnöveli. Megfelelő használat esetén azonban nagyon realisztikussá tudja tenni a scene-t, és ilyenkor az extra teljesítményigény bevállalható. Bake-elt világítás esetén természetesen ez sem fogja lassítani a játékunkat.

Forrás: Unity3D

Skeldar