Objektum vázlatának kiválasztása ue4-ben

Objektum vázlatának kiválasztása ue4-ben

Ebben a cikkben megmutatom, miként hozhat létre kontúrkijelzőt az UE4-ben. A fejlesztők jellemzően két különböző módon használatosak erre:

  • Kétszer adja át a rácsot. Ebben az esetben először egy rács (normál anyaggal), majd a második (kissé kibővített skála és emissziós anyag)
  • A kontúrfelismerés algoritmusa használatos. Ez utófeldolgozási anyagként definiálható

Alapvető lépések

A kontúrnak az utófeldolgozó anyag formájában történő körvonalazásának hatása több lépcsőben valósul meg:







  • Készítsen utófeldolgozó anyagot, amely kiemeli az objektumok körvonalát, ha a Render Custom Depth opció engedélyezve van.
  • Adja hozzá ezt az utófeldolgozási anyagot a Blendables listához, amely a Post Process Volume blokk paramétereiben található.
  • A Render Custom Depth paraméter engedélyezése minden olyan csontváz és statikus rács esetében, amelyre kontúrot szeretne kiválasztani

Mélység térkép

Az UE4-ben van egy kiváló funkció, amely lehetővé teszi, hogy az egyes rácsokat külön mélységi térképre állítsa, majd felhasználja az anyagokban. Ez a mélységi térkép tartalmazza az egyes képpontok távolságát - mind a világ koordinátáiban, mind a fényképezőgép területén. Egy tipikus mélységi térkép így néz ki:

Objektum vázlatának kiválasztása ue4-ben

A mélységi térképünk hasonlónak tűnik, kivéve, hogy csak olyan objektumokat jelenít meg, amelyeken a "Render Custom Depth" beállítás be van kapcsolva:

Objektum vázlatának kiválasztása ue4-ben

Anyag létrehozása

A legnehezebb szakasz. Olyan anyagot fogunk létrehozni, amelyben a Sobel üzemeltetője megvalósul, egy egyedi mélységi térképgel összeomlik. Más szavakkal, egy kontúrérzékelő szűrőt alkalmazunk az egyéni mélységi térképre.

Kezdjük a konvolúciós algoritmussal. Ez meglehetősen kifinomult matematikán alapul, de valójában mindent néhány egyszerű lépésre enged

  • Vegyük a P pontot
  • A pixel P-hez közel 8 pixeles pixelét veszünk
  • Szorozzuk össze az értékeket P és PN képpontokban a konvolúciós kernelben lévő értékekkel (azaz 9-szeresítéssel)
  • Adja hozzá a kapott értékeket
  • Az eredmény visszaadása

Objektum vázlatának kiválasztása ue4-ben

Először mélységi térképet kell használnia. Ez egyszerűen elvégezhető: add hozzá a Scene Texture csomópontot, és csatlakoztassa az Emissive Color anyaghoz. Ezenkívül állítsa be a Scene Texture ID beállítást CustomDepth értékre.

Objektum vázlatának kiválasztása ue4-ben






Most használja a szomszédos képpontokat. Ehhez a Scene Texture csomópont UV-paramétereit használhatja. De a probléma az, hogy az UV-paraméterek textúra koordinátákon dolgoznak, azaz. értékének felhasználásával „0.0” (a bal felső sarkában a textúra) a „1.1” (a jobb alsó sarkában a textúra). Ezért kell, hogy a fordított érték a magassága és szélessége a textúra, szorozzuk őket az eltolás a központtól a cella (-1, -1), majd hozzáadjuk az UV-koordinátái az aktuális képpont. Tehát kiválasztjuk a bal felső pixelt.

Objektum vázlatának kiválasztása ue4-ben

Most ugyanezt tesszük a fennmaradó hét szomszédos képpontnál. Ennek eredményeként az összes nyolc szomszédos képpont eltolásának kiszámítása így fog kinézni:

Objektum vázlatának kiválasztása ue4-ben

Tehát van egy sor UV-paraméter az összes szomszédos képpont számára, így most már használhatod az adatokat az egyéni mélységi térképből. Egy egyszerű anyagi funkciót hoztam létre: bemeneti paramétereként UV-koordinátákat kell követnie, majd visszaadja a feldolgozott képpont értékét.

Objektum vázlatának kiválasztása ue4-ben

Ha ezt a funkciót használja a szomszédos képpontok adatainak feldolgozásához, valójában rendelkezünk a szükséges adatokkal a körvonal felismeréséhez. Most hozzunk létre egy másik függvényt az anyaghoz, amely összekeveredik.

Objektum vázlatának kiválasztása ue4-ben

Tehát összegyűjtöttük az algoritmus összes darabját. Most csak a végső anyagon belül kell őket ötvözni.

Objektum vázlatának kiválasztása ue4-ben

A Sobel operátorban valójában két konvolúciós funkció van: függőleges és vízszintes. Valószínűleg észrevette, hogy az egyetlen különbség a konvolúciós kernel bemeneti adatai között.

Most vegyük össze ezt a két értéket.

Megjegyzés: Győződjön meg arról, hogy az anyag a tartomány Post Process, hanem a felület (ami azt jelenti, «anyag domén»; ez a paraméter, amely úgy van kialakítva, amelyre az adott anyagot kell használni). Ez megváltozhat az anyag tulajdonságaiban.

Jelenet beállítása

Most, hogy az anyag készen áll, hozzá kell adnunk a jelenet feldolgozás utáni hatások listájához. Válassza ki a "Post Process Volume" blokkot a jelenetből, és keresse meg a Blendables elemet. Adjon hozzá egy új összetevőt az Blendables listához, majd válassza ki a létrehozott anyagot a listából. Ha nem jelenik meg utófeldolgozó egység a jelenetben, akkor hozza létre. Győződjön meg róla, hogy a Post Process blokkban a Nem kötött tulajdonság értéke "true". Ellenkező esetben a játékos csak a húr hatását fogja látni, ha az a Post Process Volume-ben van.

Objektum vázlatának kiválasztása ue4-ben

Az eredmény ellenőrzéséhez helyezze el a rácsot a helyszínre, és kapcsolja be Render Custom Depth paraméterét.

Olyan módon állítottam fel a jelenetet, hogy a sztring hatása csak akkor jelenik meg a statikus rácson, ha a játékos a célpontra mutat. Úgy döntöttem, hogy a sablont az FPS-hez használom. Ezenkívül hozzáadtam a Trace funkciót a MyCharacter bluetooth-hoz. Ezt egy időzítő hívja, amely 0,1 másodpercenként ketyeg, és ellenőrzi, hogy a játékos a statikus rácsot néz. Ha úgy néz ki, a Render Custom Depth paraméter értéke "true". Ha a lejátszó megáll a rácson, akkor a Render Custom Depth változó értéke "false" értékre változik. Tekintse meg, hogyan működik ez mindegyik, a fájlban megtalálhatja az alábbi linket a "Letöltések" részben.

  • Itt letöltheti az anyagot a kontúr kiválasztásával, melyet ennek a kézikönyvnek az alapján készített.
  • Itt letölthet egy olyan projektet, amely ezt a hatást használja.

Itt olvasható az eredeti.