Sütik

Sütiket használunk a tartalom személyre szabására és a forgalom elemzésére. Kérjük, határozza meg, hogy hajlandó-e elfogadni weboldalunkon a sütiket.

Oldal tetejére
Bezárás
Zengo - Unreal Engine 5.2, avagy a procedurális környezetépítés korszaka
Kategória:

Unreal Engine 5.2, avagy a procedurális környezetépítés korszaka

Zengo - óra7 perc olvasási idő
2023. 04. 23.

Hamarosan megjelenik az Unreal Engine legújabb 5.2 verziója. A frissítés megannyi újdonságot tartalmaz, amelyek közül van, ami előre láthatóan nagy hatással lesz a piacra. A 2022-ben megjelent 5-ös verzió rengeteg újítást hozott be a játékmotorba, mint például a Lumen és a Nanite. Többek között ezek is frissülnek, továbbá egy teljesen új keretrendszer is bevezetésre kerül: a PCG, avagy a Procedural Content Generation Framework. Ebben a blogposztban az utóbbiról lesz részletesen szó, a két egyéb területet csak röviden nézzük át.

Nanite

Az egyik, talán legnagyobb újítása az 5-ös verziónak a Nanite bevezetése volt, ami egy virtualizált mikropoligon geometriai rendszer. A technológia lehetővé teszi, hogy úgynevezett high-poly (magas részletességű) modelleket használjunk fel a projektünkben, ezáltal hatalmas élszámú, rendkívül részletes modelleket tudunk importálni Unreal Engine-be, legyen szó ZBrush modellekről low poly-zás nélkül, vagy photo scannelt modellekről.

Így akár felhasználhatjuk a Quixel Megascan könyvtárban található film minőségű modelleket a játékunkban anélkül, hogy jelentős teljesítményromlást tapasztalnánk.

A Nanite az objektumok geometriájának és alakjának megértése érdekében a hálókat csoportokra osztja, és így megfelelő számítást végez a megjelenítési igényekhez mérten, adott időpontban. Minden elem csoportokra, majd további részcsoportokra van osztva. Ez az alakzat bonyolultságától függ, és legfeljebb 128 részcsoportra bontható. Ezen kívül a Nanite figyelembe veszi a képernyőn lévő pixelek számát is annak meghatározásához, hogy milyen bonyolultságot kell megjeleníteni a legjobb renderelési minőség eléréshez. Hasonlóan kell elképzelnünk a LOD-ok (Level of Detail) létrehozásához, azonban hatalmas különbség, hogy ezt nem egy modellezőnek kell elkészítenie, hanem automatikusan generálódik a geometria csoportjainak topológiai bonyolultsága szerint.

Ezen a téren is érkeznek újítások, amelyek leginkább a technológia továbbcsiszolására szolgálnak.

100%

Lumen

Mi a Lumen? Egy globális, teljesen dinamikus megvilágítási megoldás, amelynek a segítségével élethű pályákat és környezeteket tudunk létrehozni. Az indirekt fények menet közben alkalmazkodnak a közvetlen megvilágításhoz vagy a geometriák változásaihoz. Gyakorlatban ez azt jelenti, hogy ha például megváltoztatjuk a nap dőlésszögét, vagy egy másik pontforrást kapcsolunk be, akkor azt látni fogjuk az Unreal Editor-on belül úgy, ahogyan a végső megoldás is kinézne. Nincs szükség lightmappek égetésére, könnyedén tudunk létrehozni és beállítani fényforrásokat az Editoron belül.

Ez a technológia megannyi minőségbeli és teljesítménybeli újítást kap az 5.2-es verzióval. A teljesség igénye nélkül az alábbi újítások érkeznek:

  • Magas minőségű tükröződések áttetsző anyagokon most már támogatják az anyag érdességét is.
  • Jobb közelítés másodlagos visszatükröződéseknél Hardveres Ray Tracing (HWRT) találati világítás esetén.
  • Kétoldalú foliage támogatás HWRT találati világítás esetén.

PCG (Procedural Content Generation)

Most, hogy tudjuk, mi az a Lumen, és a Nanite technológiával milyen minőségi produktumokat tudunk létrehozni, térjünk rá a blogposzt főszereplőjére, a PCG-re, mely az 5.2-es verzió egyik legnagyobb újítása lesz.

A PCG egy keretrendszer saját procedurális tartalom létrehozására az Unreal Engine-en belül. A PCG lehetővé teszi a művészek számára, hogy gyors és iteratív módon tudjanak tartalmakat készíteni, legyen az egyszerű, összetett vagy akár kifejezetten komplex. Létrehozhatunk erdőket, mezőket, utcákat, a kisebb terektől kezdődően egészen a teljes világokig.

A keretrendszer bővíthetőségre és interaktivitásra van építve, így könnyen integrálható meglévő munkafolyamatokba is, hatékonyan elmosva a határokat a hagyományos és a procedurális munkafolyamatok között.

100%

Procedurális környezetépítés

A blogposzt megjelenésekor még csupán az 5.2 preview verzió érhető el az Epic Games Launcher-en belül. Ahhoz, hogy használhassuk - vagyis jelenleg kipróbálhassuk - a keretrendszert, a plugin fülön engedélyeznünk kell a Procedural Content Generation Framework-ot. Kipipálása után az Engine újraindul, és már használhatjuk is az új technológiát. Először is létre kell hoznunk egy PCG-gráfot ahhoz, hogy elkezdhessük a munkát a procedurális környezetépítés terén. Ez a gráf fogja leírni, hogy mit szeretnénk csinálni. A gráfot a jól megszokott Blueprint programozással tudjuk alakítani kedvünkre.

De miért is jó, vagy más ez, mint a hagyományos workflow? Amennyiben a megszokott folyamatokat nézzük, és mi magunk helyezzük el a kívánt helyre az asset-jeinket, úgy sok mindent kell figyelembe vennünk.

A procedurális munkafolyamattal ellentétben, hagyományos pipeline esetén nekünk kell elhelyeznünk mindent a landscape-re.

Figyelnünk kell ezek orientációjára, hogy biztosan minden realisztikus legyen, a méretekre, a változatosságra. Ha belelóg valami, akár egy épület egy fába, akkor onnan azokat kézzel el kell távolítani. Ismétlődő elemekből felépíteni valamit sokszor körülményes, vegyünk például egy kerítést. Kézzel létrehozni egy hosszabb falat sokszor időigényes. Erre eddig is léteztek procedurális megoldások, programozhattuk magunknak ezeket, a PCG azonban ebben is segítségünkre tud lenni és, használata megkönnyíti a munkát.

A PCG segítségével gyakorlatilag egy szabályrendszert tudunk megalkotni, ezzel definiálva, hogy hogyan viselkedjen az adott PCG tartalma. Ez gyakorlatban azt jelenti, hogy ami a PCG-gráf hatókörében van, ott a fenti kód alapján kerülnek megjelenítésre az objektumok. Be tudjuk állítani, hogy milyen méret mentén skálázódjanak az asset-ek, milyen szögben fordulhatnak el, ezzel biztosítva a változatosságot. Definiálhatjuk, hogy a különböző objektumok ne tudjanak egymásba lógni, hiszen nem szeretnénk, ha egy fa egy kőből nőne ki. Alkothatunk egyedi spline-okat, amivel még testreszabhatóbbá tehetjük a munkánkat.

Több ilyen gráf képes egymással kapcsolatba lépni. Például, ha szeretnénk megalkotni egy folyót, melynek alja apró kavicsos, széle nagyobb kövekkel és nádassal határolt, tegyük meg. A létrehozott folyót akár átvezethetjük egy erdőn, amelyet úgyszintén egy gráffal hoztunk létre. Így ahol a folyót elvezetjük, automatikusan idomul hozzá a környezet. Nem kell egyesével kitörölnünk a fákat, amelyek immár a vízből törnének az ég felé.

100%

Továbbá hatalmas előnye a PCG-nek, hogy real-time (azaz valós időben) láthatjuk a változásokat. Rengeteg beépített operátort kapunk a munkához, de bármikor hozzányúlhatunk a munkánkhoz kézzel is. A Landscape-eken és spline-okon túl többek között használhatóak vele Niagara-effektek, geometria scriptek és Blueprintek is.

Programozzunk

Ha megvan, hogy mit szeretnénk megalkotni, és rendelkezünk a megfelelő assettekkel, akkor tovább léphetünk a következő feladatra: valósítsuk meg azt! Egy gráf létrehozása hasonlóan működik, mint ahogyan az Unreal Engine egyéb területein is használandó Blueprint programozás esetén.

100%

A fenti képen láthatunk egy egyszerű PCG-gráfot. Rendelkezik egy Input-tal (Bemenettel), valamint egyOutput-tal (Kimenettel). Ami számunkra érdekes, az a két végpont közötti kód. Tegyük fel, hogy létre szeretnénk hozni egy erdőt. Szükségünk lesz fákra, kövekre, növényzetre, továbbá egy tájra (Landscape), amin elhelyezzük mindezt. Ezzel már tudjuk is, hogy az input node Landscape paraméterére van szükségünk.

A Surface Sampler node segítségével helyezhetjük a landscape felszínére a kívánt objektumokat. Itt adhatjuk meg, hogy milyen sűrűn helyezkedjenek el az assetek, milyen seeddel tegyék azt. Természetesen debuggolni is van lehetőségünk, ebben az esetben kockák fognak megjeleni, amelyek azt jelzik, hol fognak elhelyezkedni az általunk letenni kívánt static mesh-ek. Transform Points node segítségével állíthajuk be a méretarányt (Scale), valamint az objektum elforgatását (Rotation). Meg tudjuk adni X, Y és Z tengely mentén ezek minimum és maximum értékeit, ezáltal biztosítjuk, hogy ne legyen a level-ünk repetitív.

Ezután a Static Mesh Spawner-rel megadjuk az általunk használni kívánt static mesh-t. Egy ilyen node-on belül többet is definiálhatunk, ezáltal ezek variációji fognak megjelenni. Ezért látható csupán egyetlen ilyen fákra vonatkozó node, holott többféle fa is meg fog jelenni a szinten. Abban az esetben, ha több mindent szeretnénk megjeleníteni, egyetlen PCG gráfon belül megtehetjük, ahogyan az a kódban is látható. Ilyenkor azonban előjöhet egy kis probléma, ugyanis könnyen lehet, hogy több különböző objektum egyazon koordinátára fog leképződni. Ezt ki tudjuk küszöbölni a Bounds Modifier és a Difference node-ok segítségével.

100%

Egyéb felhasználási lehetőségek

Nem csupán természetes környezetekhez, erdőkhöz és folyópartokhoz hívhatjuk segítségül a PCG keretrendszert. Könnyen látható, hogy a technológia sok lehetőséget hordoz magában. Ha például egy zsúfolt utcát akarunk koszossá tenni, szemetet akarunk elhelyezni, eldobott üvegeket, csikkeket akarunk megjeleníteni, könnyedén megtehetjük egy gráf megírásával, majd annak használatával. Spline-ok segítségével készíthetünk procedurális kerítést, kábeleket. A technológiában megannyi lehetőség van, és egy-egy gráf újrafelhasználhatósága is érdekesnek tűnik, hiszen könnyedén kicserélhetünk egy static mesh-t egy másikra, és ezáltal akár egy nyári erdőből könnyedén alkothatunk egy havas, téli verziót.

Összességében izgalmas újdonságok várhatóak a 5.2-es verzióval. Reméljük, hamarosan nem csupán a preview verzió lesz elérhető, hanem élesben is kipróbálhatjuk. Mi már nagyon várjuk!

Ha bővebben is érdekel a Blueprint programozás, kövessetek minket, a következő Unreal Engine cikkben erről olvashattok majd. ;)

A cikket írta: F. Tamás