Developedia
Developedia
Fények és Skybox

Fények és Skybox

Az alábbiak megértéséhez erősen javasolt a Fény és az emberi látásFény és az emberi látás lecke alapos átolvasása.

A Unity Fény komponens

Ha meg szeretnénk világítani a számítógépes grafikában megjelenített renderelt testeket, egy vagy több virtuális fényforrást rendelhetünk a jelenethez:

Ezt egy GameObjet-hez adott Light komponenssel tudjuk elérni.

A Light komponens legfőbb beállítása, hogy milyen típusú fényt sugároz.

🌞 Directional Light

Egy irányú fény. A nap fényéhez hasonló hatású eredményt ad. A tér minden pontját megvilágítja egy irányból. A virtuális fénysugarak tökéletesen párhuzamosak egymással.

A fényforrást reprezentáló GameObject-nek ezért csak az iránya számít, a pozíciója nem.

💡 Point Light

Egy pontszerű fény. Egy villanykörte, vagy gyertyaláng egyenletes fényéhez hasonló eredményt ad, ám ezen virtuális forrás fénye egy kiterjedés nélküli pontból érkezik, ahonnan minden irányba egyenletese sugároz a komponens.

A fényforrást reprezentáló GameObject-nek ezért csak a pozíciója számít, az iránya nem.

🔦 Spot Light

Egy irányított, de pontból érkező fény. Egy zseblámpa fényéhez hasonló eredményt ad. Hasonló a Point Light-hoz, de ez a sugárzás iránya nem egyenletes.

A fényforrást reprezentáló GameObject-nek ezért az pozíciója és az iránya is számít.

🟨 Area Lights

Egy területről szétszóródó fény. Szórt, tompa, lágy fényt eredményez. Ez globális illuminációs technikák esetén működik. A globális illuminációról bővebben:

Renderelési stratégiákRenderelési stratégiák, Sütött fények (Hamarosan)Sütött fények (Hamarosan), Fény és tükröződés Probe-ok (Hamarosan)Fény és tükröződés Probe-ok (Hamarosan)

Fény komponensek egyéb fontos beállításai

  • Color / Szín: Milyen színű legyen a fény.
  • Intenzity: A fény erőssége. Minél nagyobb, annál jobban érvényesül, annál erősebb a fény.
  • Intenzity Multiplyer: Mennyit veszít egy indirek fényforrás az erősségéből egy visszaverés esetén. Egyedül globális illuminációs technikák esetén van jelentősége.
  • Range: Milyen távolságban legyen érvényes a pontszerű és spotlight fényforrás hatása.
  • Ezen hatás hagyományos Unity renderer (mem SRP) esetén lineárisan csökken a távolsággal a megfelelő sugáron belül.

    A fényforráshoz közel maximális az intenzitás.

    A Range-en (sugáron) kívül nulla.

    A kettő között lineárisan, arányosan csökken. Tehát egy ponton a fény erőssége = Max intenzitás * (1 - (pont és fényforrás távolsága / Range))

  • Shadow Type: Vessen-e árnyékkot a fény és ha igen, akkor az puha vegy éles legyen.
  • Culling Mask: Milyen rétegekre hasson a fény. Rétegekről bővebben: Layer, Tag és Sorting LayerLayer, Tag és Sorting Layer

Fények megjelenése a felületen

Azt, hogy a fény hogyan jelenik meg a felületen azt nem csak a fényforrás és annak térbeli helyzete határozza meg, a felület materialja is számít.

Erősen leegyszerűsítve a mögöttes fizikát, három féle módon árnyalhat egy fény egy felületet: Diffúz, Spekuláris, és Ambiens módon. Ezek technikai megvalósítása és minősége nagyban függ a renderelési algoritmustól: Lásd: Renderelési stratégiákRenderelési stratégiák

  1. Diffúz árnyalás: Diffúz árnyalás esetén feltételezzük, hogy nincsen kapcsolat aközött, hogy milyen irányból esik be a fény az anyagra és, hogy ez a fény milyen irányba verődik vissza. Ennek oka, hogy a diffúz felület mikroszkopikus szinten nagyon erősen barázdált, recés és az egyes fényrészecsék ezen a egyenetlen felületen megjósolhatatlan, milyen irányba verődnek vissza.
    1. Diffúz árnyalás erőssége egy felület pontján csak attól függ tehát, hogy mennyi fényt érkezik rá, a megfigyelő betekintésének szöge nem számít. Ez a erősség kiszámolható, a következők alapján:

    2. Távolság a fényforrástól - Pontszerű és spotlight (zseblámpa típusú) fényforrás esetén az azonos területre érkező fénymennyiség csökken a távolság növekedésével. A messzi gyertya nem sokat ér. A fénymennyiség fordítottan arányos a távolság négyzetével. (Ennek nincs jelentősége irányított fénynél.)
    3. Beesési szög - Bármely típusú fény esetén számít, hogy milyen szögben érkezik be a fény a felülethez képest, hiszen alacsony beesés esetén az egységnyi fény nagyobb felületen oszlik el. Ezért is van különbség a tél és a nyár közt. nyáron a nap magasabb szögben delel.
    4. A fénymennyiség egyenesen arányos a beesési szög szinuszával.

       Irányított fény elosztása alacsony és magas beesési szög mellett
      Irányított fény elosztása alacsony és magas beesési szög mellett
  2. Spekuláris árnyalás / Specuar lighting:
  3. Legegyszerűbben úgy lehetne ezt az árnyalást köznapira fordítani, hogy a spekuláris fény a “tükröződés” vagy “becsillanás” effektet jelenti.

    Mikor egy felület nem annyira komplikált, hogy a visszaverés iránya ne függjön a beeső fény szögétől, hanem részben vagy teljesen megjósolható a kimenő irány, akkor spekuláris árnyalásról beszélünk.

    A felület egy pontjától a kamera, valamint a fény irányába mutató sugarak közti szöget kell ekkor felhasználni a számításhoz. Minél tompább ez a szög annál erősebb a becsillanás mértéke.

  4. Ambiens fény
  5. A valóságban nem csak közvetlenül fényforrásokból érkezik fény egy felületre, hanem a fény részecskéi változatosan pattognak a tér felületein mielőtt szemünkbe jutnak. Emiatt ritkán látunk teljesen sötét felületeket, még akkor sem, ha közvetlenül nem jut rájuk fény egy fényforrásból. Bővebben: Fény és az emberi látásFény és az emberi látás

    Bizonyos esetekben valami módon megpróbáljuk szimulálni ezt a “pattogást, ám ez valós időben nehézkes lehet. Gyakran csak “odacsaljuk” ezt a fényt egy egyszerű színértékkel, amit a felület minden pontja egyformán megkap. Bővebben: Renderelési stratégiákRenderelési stratégiák

image

Globális fénybeállítások, Skybox

Egész Scene-re nézve is vannak lehetőségein fénybeállításokra, amikkel a környezet színét és a globális ambiens fényeket adhatjuk meg. Ezen beállítások a következő módon érhetők el:

Felső menüsáv / Window / Rendering / Lighting / Environment

Az ezen menüben történt módosítások a megnyitott Scene-re érvényesek.

Egy fontos ilyen globális beállítás a Skybox. Ez azt adja meg, hogy végtelen távolságban milyen színe legyen a környezetnek. Tehát, ha a kamera előtt valamilyen irányban nincsen semmi, akkor annak a pixelnek a színét a SkyBox adja meg.

A Skybox egy speciális material, amit elképzelhetünk úgy mint egy hagyományos mesh-en használatos materiált, amit egy tökéletesen gömbölyű labda modellre tennénk. Ez a material valami módon megadja a gömb felszínének színét minden egyes pontban. Most képzeljük el, hogy nem kívülről nézünk rá a labdára, hanem összezsugorodunk annak sugarához képest elhanyagolhatóan kicsire, és bekerülünk ezen gömb közepébe. Ekkor bármerre nézünk azt a színt látjuk, ami a gömb felszíne az adott pontban.

Tehát egy gömb és az ég ilyen formán megfeleltethető egymásnak. Mivel 3D grafikában a material tudja megadni bármilyen alakzat felszínét, ezt használhatjuk Skybox-ként is.

Az ebben a példában vett gömb, helyett néha kockát használunk. Innen a Skybox név.

Úgy hozzuk létre a Skybox materialt, mint bármely másikat. Először létrehozunk egy szimpla materialt és aztán annak beállításai közt kiválasztjuk a shaderek közül azt, ami képes skybox-ként viselkedni.

Négy ilyen beépített Skybox shader van Unity-ben.

Cubemap:

Kocka alakú vetítés, ahol az ég minden pontja egy textúrában van benne megfelelő elrendezésben:

image

Ezzeh a textúra beállítása a következő kell legyen

Texture type: Default Texture Shape: Cube

6 oldalú kocka:

Hasonló a Cubemap-hoz, de az egyes oldalak külön texturában vannak eltárolva.

Panoráma:

Gömb alakú vetítés, ahol az ég minden pontja egy textúrában van benne megfelelő elrendezésben:

image
image

Procedurális:

Az ég minden pontjának színe procedurálisan van kiszámolva textúrák használata nélkül.

Logo

Főoldal

Blog

Elmélet

3D Studio

Adatvédelmi nyilatkozat

GY.I.K.

Házirend

Szerző: Marosi Csaba / marosi.csaba@3d-studio.hu

DiscordGitHubLinkedIn