Press "Enter" to skip to content

Hogyan készítsünk animációt az Unreal Engine 4-ben

Az eljárási párbeszéd animációjának létrehozása Unreal Engine 4-ben

Tehát a felhasználók, akik 30 évesnél idősebbek éltek, az élet egynegyedének gyors válságát érezték, és meggyújtották a határozatot, hogy megszüntessék a szomorú munkát, és ahelyett, hogy a Soviet Entoura-i Skyrim-et hozták létre? Ebben az esetben nem tehetsz párbeszéd animációs karakterek nélkül.

Mivel a cikk nagyon nagy lenne, két részre törtem. Az első a párbeszéd tárolására és kitermelésére szolgál. A második – és ő természetesen a főbb – mondja a szegények karaktereinek animációiról. Volt egy másik harmadik rész a párbeszédek integrációjára a játékban, de úgy döntöttem, hogy nem írom meg.

Továbbá sok technikai dörzsölés lesz. Nem fogom megállítani részletesen, hogyan kell megvalósítani egy vagy egy másik funkciót: van dokumentáció (és API). Csak azt mondom, hogy mit kell tennie, és milyen irányba ásni. Ezért, ha csak elkezdi megismerni az irreális motort, valószínűleg nem alkalmas az Ön számára. Nincs semmi szörnyű ebben: Mindezek, ez a téma nem túl releváns az orosz Gamedeva számára.

Ezenkívül az osztályok típusainak és nevének meghatározásakor a szintaxisot használom++. Például a színész összetevő helyett írok . Tehát egyetértek, tisztábbak.

Párbeszédek létrehozása

Az első dolog, amire szüksége van a párbeszédablakok létrehozásához, egy szkript. Vannak különleges szerkesztők, amelyek több válasz opcióval rendelkeznek az elágazó párbeszédablakok rögzítéséhez, de elsősorban az információkat a számítógép-olvasható formára átadják. A szkript könnyebb és kényelmesebb dolgozni egy szöveges dokumentummal. Kényelem, valójában nagyon rokon, mert az elágazás vizuális megjelenítéséhez a színjelzést és a táblázatot kell használnia. Sok, sok tabuláció. Nincs semmi kényelmes.

A párbeszédablak megírása után a játékmotorra formalizálni kell, és ezért meg kell határozni, hogy mely információkat kell megadni a párbeszédre, amire szükségünk lesz. A legtöbb esetben így fog kinézni:

  • ÉN CSINÁLTAM;

  • Replica id;
  • Válaszolási másolat;
  • Az Audio Asset ID (ID);
  • olyan feltételek listája, amelyek egy replika rendelkezésre állnak;
  • Az események listája, amelyeknek meg kell hívniuk ezt a másolatot;
  • aktiválási paraméterek;
  • minden további ellenőrzési paraméter.

Ha nem nagyon ismeri az adatbázisokat, akkor nem lesz kis magyarázat. Feladatunk az, hogy illeszkedjen a párbeszéd “fa” -hoz egy lapos asztalnál. Jellemzően a fa illeszkedik az asztalhoz azáltal, hogy hozzáadja az egyes sorokat a szülővonalhoz. A mi esetünkben nem szükséges, hogy ne hagyja le a gyökeret az ágból, de éppen ellenkezőleg, mozoghat a levelekből a gyökerekből (a párbeszéd kezdetétől -, hogy bármelyik lehetséges döntőbe kerüljön), így mindegyikben A vonal nem a szülőelem azonosítója (az a vonal, amelyre ez a tétel felelős), és a válaszok azonosítója.

Ha minden világos, akkor leereszkedik az alábbiakban, ha nem – lásd a példát:

Most foglalkozunk az asztal további oszlopaival. A teljes listából három pontra vonatkozó magyarázatok szükségesek. Az első az audio eszközök azonosítója. Akkor közvetlenül a mutatót a hangfájlt, de azt javasoljuk, hogy az információ a hang külön táblázatban. Ennek oka egyszerű: elméletileg senki sem tiltja meg az egyik mondat (mondjuk, igen, vagy nem kell) a különböző párbeszédablakokban. Ha a kifejezés információ közvetlenül a párbeszédablakokban tárolódik, akkor ismételten meg kell ismételnie a feliratokat és más paramétereket. És ez ellentmond valamilyen alapelv az építési adatbázisok, és általában helytelen.

Tehát két különböző típusú táblázatot kapunk: táblázatok a párbeszédek és táblázatok a hangeszközökről. A párbeszéd egyes reprodukcióját egy azonosító rögzíti, amelyhez egy karakterláncot találhat a hangos Assts táblázatában. A jövőben a párbeszédasztal eleme egy replika, és a hangtábla elem a kifejezés.

A második dolog megmagyarázza – ezek az aktiválási paraméterek. Hogyan lehet a játékos (ha ez nem replika NPC, természetesen) választhatja ki a választ. Ez magában foglalja a fajta aktiválási (egyszerű szöveges link, vagy egy gyors akció gombot, vagy valami eredeti, ami jön a játék a gameDizainer), itt kell lennie egy rövid leírást a replika, ha nem tervezi, hogy mutat az egész játékosnak, a replika elhelyezkedésének (pontszáma a listában, ahol a “kerék”, hogy rajzoljon) és hasonlók.

Végül a “paraméterek kezelése” marad. Ezen szavak alatt olyan zászlókat értek el, amelyek rugalmasabbá teszik az asztal használatát. Ez az állítás a beszélgetés befejezéséhez vezet? Vagy talán csak a kifejezés része, és befejezése után folytatnia kell a beszédet a következő elemből, és nem, hogy átadja a szót a beszélgetőpartnerhez? Az egyes zászlók külön mezője nem szükséges, a zászlók egy számban tárolhatók, és bit maszkkal olvashatók. Jól, vagy használja a szövegmező kódszavakat, nem élünk egy évvel. Ha komplex párbeszédeket hoz létre ilyen finomságokkal, még mindig szembe kell néznie, így jobb, ha előre biztosítaná őket.

Például, ki akarja, amikor a hangot elrendeli, a kifejezés kettős leolvasásához, amely csak a végéig különbözik? Könnyebb osztani egy indításra és két Replicas végződésre, amelyek a fő mondat után automatikusan játszanak, bizonyos feltételek függvényében.

Most foglalkozunk a hangeszközökkel, az információ, amelyről külön táblázatban voltam. Mint ez:

  • Kifejezésazonosító;

  • mutató a hangfájlhoz;
  • feliratok; Az irreálisban ez határozottan egy típusú (és nem például, például a beépített lokalizációs eszközökhöz való csatlakozáshoz;
  • Animációs paraméterek.

Az utolsó tétel magyarázatot igényel, de a második fejezet előtt nem lesznek. A többiekkel úgy tűnik számomra, minden világos.

Tehát ebben a szakaszban úgy döntöttünk, hogy meg kell írni a motort, és hogyan kell megszervezni az információkat. Egy asztalnál van egy listát a hangfájlok listájával feliratokkal és karakter animációs paraméterekkel. Egy másik – “fa” párbeszédpanel. Most meg kell érteni, hogyan kell letölteni Barahlishko irreális.

Ehhez az UE4-ben sok pénz van. Van még egy meglehetősen népszerű plugin, amely lehetővé teszi, hogy töltse ki a párbeszédeket a motor belsejében lévő fa formájában. Úgy döntöttem, hogy elhagyom ezt az opciót, mert nagy párbeszédek létrehozásakor a láthatóság előnyeit a térség hiánya megszünteti. A legegyszerűbb lehetőség, amelyen leálltam, az adatasztalok (adatlap) használata. Lényegében teljes mértékben megfelelnek a névnek, azaz lehetővé teszik, hogy a táblázatokat szöveges () kulcsmezővel tárolhassa, ahol minden kulcsérték megfelel az asztali vonalnak. Egyszerűen tegyenek, hasonlóak az STL vagy UE4 tartályokhoz.

A probléma az, hogy nem teljesen alkalmas számunkra. Minden egyes replika NPC-n, a lejátszónak több válasz opció is lehet, ami azt jelenti, hogy az egyik kulcs több sornak felel meg. Szükségünk van, bocsássunk meg az Úrnak a fordításra, Multicart-ra. Utánozza az adat táblázatban nem nehéz. Csak add hozzá a Replika számát a kulcshoz, mint például a _1, _2 és így tovább. De akkor nem kell tárolni párbeszédet közvetlenül az asztalon, hanem a tmultimap.

Sajnos a Blumenints tmultimap tartály nem áll rendelkezésre. Azt is szem előtt kell tartani, hogy nem támogatja a hálózati replikációt. Tehát, ha nem akarja, hogy a C ++, akkor ellenőrizze a kulcsokat a ciklus keressen választ a kódot, és így tovább, amíg a keresést a keresési már nem ad pozitív eredményt.

A párbeszéd mechanizmusa, azt hiszem, érthető. Mindegyik replika tárolja a kódot válasz replikák, amelyhez megtalálja őket, és megjeleníti azokat. Amikor egy karakter befejezi a replika kifejezését, továbbítja a válasz replikák azonosítójának beszélgetőt. Az Interloctor NPC azonnal elkezdi kimondani a választ, de a játékos több replikát kínál az azonosító számára.

Első pillantásra úgy tűnik, hogy az NPC-nek csak egy válaszra van szükség, de ez nem. Lehet, hogy olyan helyzetek, amelyekben az NPC a játékos replika, a helyzet és a külső feltételek függvényében különböző válaszokat kell adnia.

Az UE4 behozatali táblázatok lehetnek JSON vagy CSV formátumokból, és töltse ki könnyebben az Excel-ben. Igen, ez a lecke nem kellemes, így jobb, ha a leginkább szeretett munkavállalót ültetni neki. Személy szerint kifejlesztettem egy ilyen rendszert a Replika kulcsának nevét magamnak: a játékos kódját előtagként használják, majd kövesse a szignifikáns szavakat a kifejezés elejétől, hogy a karakter megfelel. Például a Vasi és az ingyenes Petit Player párbeszéde (másik idő, egy másik hely, a másik univerzum).

Mint érted, a húrok azonosítóknak nem feltétlenül érthetőnek kell lenniük az embereknek. Meglehetősen egyszerűen automatizálható, ami félig megmenti Önt.

Az Excel képes fájlokat exportálni a CSV-re, de ha az UE4-ben lévő tömböket szeretné átutalni (és szeretnél), akkor problémái lesznek. Jobb, ha egy kis makrót írunk, amely a gomb megnyomásával letölti az asztalt az Excel-től a JSON-ban. Ez az, amit beléptem. És kifejezésekre, és replikákra.

Az NPC és PC párbeszédek feldolgozása különbözik, de ezek a különbségek nem olyan nagyok. Amikor a beszélgetőpartner befejezi a replika, meg kell jeleníteni a játék karakterének lehetséges válaszadatait, és az NPC-t – válasszon ki egy lehetőséget, és reprodukálja azt. A lejátszás akkor is eltérhet, ha van egy első személyi játék, és nem a harmadik (az első esetben, akkor nem kell reprodukálnia animációt a játék karakterén). Ezért a feldolgozás dialógusok is jobb, hogy egyetlen univerzális alkatrész (örökölt), amely csatlakoztatható az NPC, és a PC-hez.

Belül, a logikát mindkét lehetőségre végrehajtják – semmi bonyolult bonyolult. Csak menj le az asztalra, összpontosítva az aktuális replika azonosítójára és az interloktor válaszának azonosítására.

Ez a fejezet továbbra is két fent említett tárgyat kell megvitatnia: a párbeszéd feltételei és eseményei. Az én táblázatban az eseményeket ideiglenes jelekkel rendelkező tömbökként szervezik (a lejátszás kezdetétől) és nevek.

Rendezvények, az időzítő párbeszédablak kezdeményez hívást küldött, amelyben az esemény nevét küldi az asztalra. Vannak beépített események is, amelyek automatikusan végrehajtásra kerülnek. Az események többi részének feldolgozása a blopropra-ban van szükség, a nagyon küldötthez való csatlakozásra.

A feltételek lehetővé teszik, hogy ellenőrizze, hogy a megfelelő replika elérhető-e az aktiváláshoz a párbeszédablakban. Elrendezheti őket, ahogy tetszik. I, például nem bináris, és numerikus rendszert használok, azaz azt feltételezik, hogy a karakter és a világ státuszparaméterei 0-tól a 0-tól származhatnak, akkor a Replika rendelkezésre állása úgy néz ki, mintha vagy vagy .

Az állapotparaméterek rögzítéséhez használhatja a Gameplay Tag rendszert (), de nincs nagy szükség. Hasonló rendszert valósíthat meg egyszerű szövegkulcsokon, ha olyan kényelmes. Azonban a címkék nagyon jól segítenek a világ állapotának rendszerezésére, és ez az epikus játékrendszer fejleszteni kíván.

Tegyük fel például, a játékos állapotát a játékos a folyosón néz ki:

habparty = 1

Habesszased = 3

Ezután az a feltétel, amely a rendelkezésre álló párbeszéd másolatát teszi lehetővé:

Ha mindent helyesen hajt végre, akkor lehetősége lesz arra, hogy beléphessünk a játék elágazó párbeszédablakába. A Replika például megjeleníthető például a pop-up szövegbuborékokban, biztosítva a lejátszót azzal a képességgel, hogy kiválaszthatja a megfelelő választ a listában. De ez nem érdekes. Tehát a következő feladat a karakterek animálása, hogy a grafika érzése és kifejezése.

Animációs rendszer

Párbeszédablakok létrehozása – a munka meglehetősen egyszerű része. Ráadásul a fejlesztőknek gyakran nincs szükség többváltozós párbeszédfákra. De a karakterek párbeszéd animációja lesz szükség mindenkinek. Ahhoz, hogy hozzon létre két alapvetően eltérő megközelítés.

Első felvétel (Motion Capture AKA MOCAP), vagy létrehoz egy kulcsfontosságú személyzetet az egyes mondatokhoz és minden jelenethez. Ez alkalmas olyan játékokra, amelyek közül egy kis számú beszélgetés, vagy nagyon nagy költségvetési projektek mérsékelt számú macska jelenet. Még akkor is, ha Önnek van egy millió dolláros, órányi párbeszéd a kézi üzemmódban, akkor nem fog húzni.

Második megközelítés – eljárási animáció. Ez az opció, amely érdekel minket. Ajak animáció (ajak-szinkronizálás) valós időben automatikusan generálható, de nem gördül a gesztikulációval és az arc. Vagyis, hogy persze, természetesen tudsz, de akár tömeghatás is, andromeda, vagy teljes mértékben be kell venned a technológia fejlődését, ami önmagában tovább halad, és nem is kell törekednie a létrehozásával a játék.

Esetünkben az arckifejezések és a gesztusoknak szabványos sablon animációkat kell létrehozniuk, amelyek bármilyen mondatban jelenhetnek meg, amikor szükséges.

Itt van szükség ahhoz, hogy egy kis kitérőt, hogy beszélni a technológiai oldalon a karakter animáció. Ha minden világos a testtel – ez hajtja csontok, – akkor kétféle megközelítés létezik az egyének. Akkor szét az arc különböző izom kapcsolatos pontokat, és köti őket a legközelebbi csúcsai a fej modell. Lényegében ez lesz rendes csontok. Ezt az opciót a Mokamphoz használják. Sajnos az arc ICAP – az öröm drága és technikailag nagyon összetett. Második verzió – Morphing. Ha tudod, mi az, hagyja ki a következő bekezdést.

A morphing a modell csúcspontjainak lineáris interpolációja két vagy több pozíció között. Vegyünk egy semleges arcot. Ezután készítsen egy példányt, amelyből a szája mosolyogva van. A morphing létrehozásakor a számítógép a fejmodell minden csúcsának elmozdulását a “semleges” opció “és a” mosolygós “között tartja, amely után simán összekeverhetjük a két kifejezést, a csúcsokat 10% -kal mozgatva 50% vagy 90%. Vagy% – csak kétszer ugyanabba az irányban. Miért ne? Természetesen kiderül, szörnyű horror.

Ha beszélünk létre arc animáció, akkor a különbség Morph és csontok leírása a következő: amikor a keverő több morphs (Morph Targets, vagy Blend találkozóhelyek MAYA terminológia) megváltoztatja a modellek össze. De ha több csont animációt keverünk, átlagolt értéket kapunk.

Érthetőbb lesz, ha példát adsz. Vegyünk egy arcot, amely az “O” betűt, és a meglepetés érzelmével (szájnyílás, szemöldök emelt). Ha két ilyen morfót kivetít, a száj kétszeresen van kitöltve: és az “O” betűből és egy meglepett arcból. Most képzeljük el két előbeállítást a csontokon: ismét az “O” betű és egy komor arc egy zárt szájjal. Közvetlen keveréssel vagy nem ad jó eredményt: a helyzet a száj lesz átlag (félig nyitott), a szemöldök is komor csak a felét (elvégre az animáció „Ó” ők nem komor egyáltalán).

Szerencsére az animáció nem feltétlenül vegyes. Alkalmazhat egy előre beállítást a száj kockájára, a második pedig a szemöldök és az arcok csontjain. Majd a száj, és a szemöldök szemöldöke a helyén lesz. De bizonyos esetekben, találkozásánál az arc részei, animált külön (azaz a leletek előfordulhat találkozásánál a szájban és jack). A problémák a morph segítségével érhetők el. Ez megköveteli az érzelmek két készletét: csendes jellegű és a hangszóró számára. Ez utóbbi nem alkalmazhat erős torzulást a modell csúcsaira a száj körül.

Mit válasszon jobban? Ez csak a céljaitól, lehetőségeitől és személyes preferenciáitól függ.

Általában a csontok rugalmasabb eszköz. Velük valós időben böngészhet az arcod, míg a morphing lehetővé teszi, hogy előzetesen létrehozott opciókat keverje össze. A modern AAA projektekben nagyobb valószínűséggel inkább csontokat szeretne (az ICAP-t is használják a fő macska jelenetekhez). De a kis fejlesztők számára a Morph hozzáférhetőbb eszköz, mert egyáltalán nem szükséges a morphok testreszabása.

Van egy szoftver a “fejek” generációjához a kész morph (FaceGen), vagy egy szabványos fejet vehet fel Morph (Daz3d), és számolhatja meg Zbrush-ban (igen, jogilag, ha nem fogja elfelejteni, hogy megváltoztassa a Textúrák). A morphing meglehetősen tisztességes eredményt mutathat, ha nem jelentkezik az AAA-játék létrehozására.

Szóval, kitalálták. Van egy torzó a nyüzsgéssel és a fejünkkel, amely ugyanazt a csontvázat, amely több száz morphs-ot szenved, fonémákkal és különböző érzelmekkel (az animáció a csontokon is alkalmas, ez nem alapvetően). Most a gesztusokkal kell foglalkoznunk. Ez, ahogy a tapasztalatom megmutatta, sokkal fontosabb, mint a mimikum.

Kedvéért a kísérlet, tettem öt animációk bólogat különböző irányokba, a fej, a sok animációk kézmozdulatok és három animációk az egész testre root mozgás (lépés előre, lépés vissza, lépés előre és hátra). Nincsenek animátor tőlem, így minden esetben az IMA-t használták.

A root mozgás olyan megközelítés, amelyben az animáció maga mozgatja a karakter színészét, és nem állítja be a mozgó színészhez. Úgy néz ki, mint egy klasszikus megközelítés: a felhasználó megnyomja a W kulcsot, a karakter elkezd mozogni, és a 3D modell az animációt játssza le a megfelelő sebességgel, hogy szimulálja a felületet.

És így a megközelítés root mozgás néz ki: a felhasználó megnyomja a gombot, és a 3D-s modell kezd játszani az animációt a futás, ahol a váltás a gyökér kocka mozog a színész előre. Ebben az esetben a gyökérmozgás szükséges, mert a beszélgetés során lépést tettő karakternek ebben a helyzetben marad az animáció vége után. Ez az, amikor az animáció lejátszásakor nemcsak a 3D-s modellre, hanem az egész színészre is át kell váltani.

Ezenkívül szükségem volt a test lazab animációjára, amely különbözik a szokásos tétlen animációtól az a tény, hogy a fej enyhén rázza a beszéd tapintat. Kezdetben a test testének több dokkolt animációját terveztem, de nem voltak hasznosak. Azonban az eszközök számára az eszközök maradtak.

Továbbra is mondani néhány szót a Lipsinka-ról. A leggyakoribb eszköz a valós idejű ajak animáció létrehozásához – Facefx. Ehhez a programnak dollárnak kell adnia, és a jó értékesítéshez jogdíjat is ad. A FaceFX a legfontosabb eszköz a piacon, amelyet a legtöbb AAA-játékban használnak. Ha nem elégedett a feltételekkel, akkor a harmadik féltől származó programokkal (úgy tűnik, iclone lehet?) Animációs eszközök automatikus készítése és mentése a Lipsincom-szal az összes kifejezésre.

Most térjünk vissza a “mondatok táblázatába”, amelyet a kezdetben mondtak. Az első szakaszban nem magyaráztam meg, mi az “animációs paraméterek”. Teljesen a táblázat szerkezete így néz ki:

  • Kifejezésazonosító;
  • Mutató a hangeszközökre (ne feledje, hogy az UE4 beépített lokalizációját alkalmazzák, de nem ucundwave);
  • feliratok;

  • a test állandó animációjának címkézése;
  • az arc állandó kifejezésének címke;
  • További animációk. Array [Time Stick – Emotion tag].

A test állandó animációjának címke, amint azt fent említettem, mindig van egy. Az arckifejezési címke a mosóbánya, amely az arcon húzódik, és az elejétől és a mondat végéig marad. Minden gesztus, valamint a csomópontok, a “további animációk” külön sorában vannak. Ez így néz ki.

Őszintén elismerték, az animáció jól néz ki, és anélkül, hogy nagyszámú sorban töltenék fel ezt a masszátot. Az esetek túlnyomó többségében egy gesztus elegendő a kifejezés kezdetén, és az arcra elegendő kifejezés van az elejétől a végéig.

A diagram szoftver megvalósítása a szükséges értesítések hívásával elemi, de az animált reggeli szétszerelhető.

Az idő alatt lejátszandó animációk esetében az UE4-es réseket használják. Általában támadási animációkra használják őket, de gesztusok és rövid érzelmi animációk, ők is alkalmasak. Létre kell hoznunk a négy különálló arc slot, fejek, felső felében, a test és az egész karaktert (FaceSlot, Headslot, Upperbodyslot, FullbodySlot). Ne feledje, hogy az egyik csoportban lévő nyílások egyszerre nem lehetnek aktívak. Ha a fejek egy csoportjába helyez, akkor a fej új animációja megszakítja a korai arc animációt.

Az Állami gép (State Machine), amely a fenti képen az a név, mozgás, akkor is szükség van, hogy néhány változtatást. Legalább két dokkolt animációra lesz szükségünk a beszélgetés állapotához: csendes jellegű és beszélő karakter. Megkülönböztetik a fej és a kezek aktív mozgásainak fénymozgásait, amikor beszélnek. Ez fontos: túl különböző animációk vezetnek csúnya átmenetekhez az egyes mondatok elején és végén.

Amikor egy karakter beszélgetésbe kerül, át kell váltania a beszélt animációk lejátszására (a fenti képen felül a tétlen állapotból a beszédállapotról). Amikor a játékos elkezd mondani bármilyen kifejezést, el kell kezdenie a “Beszélő” animációt, a kifejezés végén – visszatér a “csendes”. Ha a karakter beszélhet a gyaloglás során, akkor el kell hagynia a mozgalom normál animációját a kifejezés kimondásához, és vigye a beszédfejét a nyakról. Mozdulatlanul, miközben jobb figyelmen kívül hagyja. Természetesen az egész test animációja is.

És itt van a műveink eredménye. Az éter hang mögött meg kell köszönni a hang API “Yandex” (valójában, minden nem olyan rossz, a Google szintetizálja az angolul nem jobb, mint a yandex – orosz).

# élmény # hosszú

Comments are closed, but trackbacks and pingbacks are open.