A háromdimenziós grafika - Animáció előkészítése: Riggelés

Háromdimenziós modelleket többféle módon animálhatunk. A leggyakrabban alkalmazott módszer a  csontokkal történő mozgatás. Ehhez a modell számára létre kell hoznunk egy csontvázat, a csontokat a modell bizonyos darabjaihoz hozzá kell rendelnünk, és végül ezeket a csontokat forgatva, mozgatva animálhatjuk a modellt. Ezt az előzőekben elkészített szék modellen fogjuk demonstrálni, habár elég valószínű, hogy ritkán lesz szükségünk széket ilyen módon mozgásra bírni.

Először is le kell fektetnünk a riggelés alapjait. A riggelés az armature modellhez illesztését jelenti, tehát értelemszerűen szükségünk van hozzá egy modellre és egy armature-re (csontváz). Egy armature egy vagy több csontból (bone) áll. A csontok a térben megadott hosszúsággal, pozícióval és mérettel rendelkező vonalak, amikhez vertexeket tudunk hozzárendelni. Ezeket a csontokat minden szoftver másféle módon jeleníti meg - a Blenderben például jelenleg öt különböző megjelenítési mód közül választhatunk. Ezek használata teljesen ízléstől függ, a működést nem befolyásolja egyik megjelenítési forma sem.

Magát a háromdimenziós modellt térben tudjuk mozgatni, forgatni, méretezni, és ezeket animációban rögzíteni is, de ahhoz, hogy a modell deformálódjon is (például megrázza a lábait külön-külön, vagy ugorjon egyet), csontokat kell használnunk. Minden olyan résznek, amit a többitől függetlenül akarunk mozgatni, szükséges csontot készíteni. Jó példa erre a kézmozgás: a régebbi játékokban maximum a kézfej mozgott külön a kartól, a mostani játékokban pedig többnyire minden ujjpercnek saját csont jut, így lehetővé téve a bonyolult, precíz mozgást.

01Kezdésképpen hozzunk létre egy csontot. Object mode-ban nyomjuk meg a [shift + A]
billentyűkombinációt, és a megjelenő menüből válasszuk ki az Armature -> Single Bone-t.

02Létrejött a csont, viszont egyelőre semmilyen hatással nincsen a modellre. Ez jó is így, először fejezzük be a csontvázat, és csak utána rendeljük a modellhez.

03_2Mi a B-bone megjelenítési módot használjuk a csontváz létrehozása alatt.
Ezt az első csontot hagyjuk a helyén. A [Tab] gombbal léphetünk be az edit módba, mint a mesheknél is. Ha kiválasztjuk a csont végét a jobb egérgombbal (mint a vertexeknél is), az [E] (extrude) gombbal létrehozhatunk egy ebből a pontból kiinduló új csontot.

A csontok hierarchikus felépítésűek, így az elsőként létrehozott csont a felmenő (parent), és az abból létrehozott csont az utód (child). Ha a felmenő csontot mozgatjuk, minden utódja vele együtt mozog, pont, mint az emberi csontváznál például a felkar és az alkar kapcsolata - ha a felkar megmozdul, az alkar és az ujjak nem maradnak hátra.

Ebben az esetben nem szeretnénk, ha a csontok végei érintkeznének, szóval szedjük ki a Properties -> Bone - Relations alatt a "Connected" kockából a pipát. Így szerkesztéskor egymástól függetlenül mozgatható a két csont, de a hierarchia megmarad, tehát az utód megkapja a felmenő összes mozgását, de tartja az eredeti
távolságot.

connected
A csontot igazítsuk a szék ülőkéjéhez, és állítsuk be a hosszát az eddigiekben megismert mozgatási technikákkal.

A csont hossza és rotációja tulajdonképpen lényegtelen, de érdemes logikusan és átláthatóan beállítani, hogy könnyebb dolgunk legyen animációk készítésekor. A különböző forgatások mindig az eredeti helyzethez képest fognak számítani animálás közben.

Itt már problémát okozhat, hogy a mesh kitakarja a csontokat, és a sötétben tapogatózunk. Ezt egyszerűen orvosolhatjuk: a Properties ablakban -> Armature fül -> Display -> X-Ray dobozát pipáljuk be, így a csont mindenen átlátszik.

04Extrudáljuk az ülőke csontját, állítsuk az új csontot is disconnectedre, és igazítsuk a szék jobb első lábához (ami szemből nekünk a bal). Érdemes a csont végét pontosan a padlóhoz igazítani (Z tengely: 0). A csont kiindulópontja az, ami körül forog maga a csont, szóval úgy igazítsuk be a láb kezdetébe, hogy hihető legyen. A pontosság érdekében használjuk a 3D kurzort.

05A kurzor menüjét a [shift + S] gombokkal tudjuk előhozni. Itt tudjuk a kurzort a kijelölt vertexekhez igazítani, vagy a középpontba (x0, y0, z0) küldeni. Az alsó eszköztáron beállíthatjuk a 3D kurzort pivot point-nak, ettől minden transzformáció középpontja a 3D kurzor helyzete lesz. Így igazíthatunk csontokat pontosan a kívánt helyre, vagy akár középpontosan tükrözhetjük is őket.

3dcursoraspivot
Ha megvan a csont az egyik lábban, a legegyszerűbb az, ha letükrözzük a másik oldalra. Jelöljük ki a csontot és [shift + D]-vel duplikáljuk le. Helyezzük a 3D kurzort a középpontba, és állítsuk be pivot-nak.

Kezdjük el méretezni a kijelölt csontot az [S]-sel. Ha utána begépeljük, hogy "-1", gyakorlatilag áttükrözzük a  3D kurzoron. De mivel most nem ez a célunk, írjuk utána a tengely betűjelét, ami elválasztja a két lábat - esetünkben az [X]. Ezzel az X tengelyre tükrözzük le a csontot, pontosan a másik lábba. Szóval, a lenyomandó billentyűk: [S] [X] [-][1] és [Enter].

Ha kész vagyunk, ne felejtsük el visszaállítani a pivot point-ot median point-ra. A 3D kurzort ugyanígy alkalmazhatjuk modellek szerkesztésekor, csak figyeljünk, mert a modellek kifordulnak türközéskor.

06Jelöljük ki a két lábcsontot, és duplikáljuk őket. Az új csontokat toljuk hátra a két hátsó lábba, igazítsuk őket oda pontosan.

07Már csak a támla csontjai maradtak, ezeket a két hátsó láb csontjaiból duplikáljuk. Forgassuk el a másolatokat 180 fokkal az X tengelyen, majd igazítsuk őket a támla két oldalsó lécére.

Ha kész a csontváz, nevezzük el a csontokat. Ehhez jelöljünk ki egy csontot, és a jobb oldali viewport eszköztárban az Item kategóriában írjuk át a nevét.

A nevek azért fontosak, mert a programok mindent ezekhez kötnek. Érdemes még azelőtt túlesni ezen, hogy bármi komoly feladatot adnánk a csontoknak.

08eA centernél elhelyezkedő csont a gyökércsont (root bone). Ez jobb, ha animációkor nem mozog, mivel ehhez viszonyul az összes többi csont. Nem kötelező root bone-t használni, de a tapasztalatunk az, hogy sokkal stabilabban használják így a különböző motorok az animációkat.

A nevek legyenek logikusak, például: Láb1, Láb2, stb. vagy: JobbElsőLáb, BalElsőLáb, stb... Az angol nevek sokszor rövidebbek, kézreállóbbak. A legfontosabb viszont az, hogy ki lehessen rajtuk igazodni.

09

Ezek után ideje megnézni, hogy rendesen mozognak-e a csontok. Állítsuk át az edit mode-ot pose mode-ra, így a csontváz kék körvonalat kap. Teszteljük le, hogy működik-e a hierarchia, rendesen mozgatják-e a felmenők a leszármazottakat. Egyelőre a modellre még nincs hatással a csontváz, de ha nem tapasztalunk hibát, ugorhatunk is a következő lépésre!

10Lépjünk át object mode-ba. Jelöljük ki a széket, majd a [shift] nyomvatartása mellett az armature-t is (legkönnyebb a root bone-ra kattintani, mert az nincs takarásban). Ha jól csináltuk, a széket narancssárga, a csontokat sárga körvonal veszi körül. Nyomjunk [ctrl + P]-t, ami megnyitja a parent menüt. Válasszuk ki ebben az Armature Deform alatt a With Envelope Weights-t.

15Ha minden jól ment, az armature-t hozzáparenteltük a székhez, és már kezdetleges súlyozása is van. A vertexsúly egy nullától egyig terjedő érték, ami meghatározza, hogy egy csont milyen mértékben befolyásolja egy vertex helyzetét (0: egyáltalán nem, 1: a vertex teljesen a csonttal együtt mozog). Minden csonthoz létrejött egy Vertex Group, ami tartalmazza a befolyásolt vertexeket. Most már átválthatunk pose mode-ra, és ha forgatjuk a csontokat, láthatjuk, ahogy deformálódik a mesh. Az alap súlyozás egyértelműen nem túl pontos, de ezen most javítunk.

12Helyezzük vissza pose mode-ban az elforgatott csontokat eredeti állásukba ([alt + G] - visszaállítja a pozíciót, [alt + R] - visszaállítja a forgatást). Állítsuk át a pose mode-ot weight paint-re. Ettől a szék átvált kékbe, ez a szín a vertexsúlyokat reprezentálja.

13Kattintsunk például a jobb első láb csontjára. A színek átváltanak pirosra, narancsra, sárgára, zöldre a csont körül. A piros jelenti az egyes súlyértéket, a kék a nullást, a zöld és sárga pedig a köztes értékeket. Ha két csont mozgatja ugyanazt a vertexet, mindkét csont kimozdulása hat az adott vertexre. Ha az egyik csonton a vertex súlya például 0.7, a másodikon pedig 0.3, akkor a 0.7-es csont fogja jobban mozgatni, de a 0.3-masnak is van némi beleszólása.

A súlyokat festhetjük kézzel ("ecsettel"), ez nagyon részletes modelleknél kifizetődő, viszont esetünkben egyszerűbb lesz az értékeket állítgatni, mert kevés a vertex. Maradjunk weight paint mode-ban, és nyomjunk egy [tab]-ot, amivel átugrunk edit mode-ba. Itt a Properties ablakban keressük meg a Data fület. Alatta megtaláljuk a Vertex Group-okat, amik közt már ki is van jelölve az adott csont group-ja. Itt tudunk vertexeket hozzárendelni a csonthoz, vagy eltávolítani őket tőle.

A súlyozáshoz a csontmegjelenítés módját átváltottuk stick-re, hogy jobban látható legyen a
mesh.

14Jelöljük ki a szék ülőkéjét. Egy gyors mód erre az, hogy kijelölünk a felületen egy vertexet, és [ctrl + L]-lel a vertexhez csatlakozó összes többi vertexet is kijelöljük. Ha ez megvan, a vertex groups ablakban nyomjunk a remove gombra. A csont innentől nem fogja ezeket a vertexeket mozgatni. Ugyanezt csináljuk meg az összes többi lábon, mivel nem szeretnénk, hogy bármelyik láb csontja mozgassa az ülőkét.

removevertexes
Ennek az ellentétét tegyük meg az ülőke csontjával - onnan távolítsunk el minden lábhoz tartozó vertexet. Emellett viszont assign-oljuk hozzá az egész ülőkét 1.0-es súllyal, mivel annak nem kell deformálódnia, csak egy az egyben mozognia. Ugyanígy 1.0-es súllyal hozzáadhatjuk a párna alatti léceket is az ülőke csontjához.

A [tab] billentyűvel lépünk ki az edit mode-ból. Súlyozás közben rendszeresen ellenőrizzük a csontok mozgását.

Vannak még problémák, bár mivel egy szék csont alapú riggelése nem éppen kőbe vésett eljárás, vitatható, hogy hogyan is kéne kinéznie a végső változatnak. Azt viszont még meg kell oldanunk, hogy ne látszódjanak lyukas, üres részek a modell mozgatása közben, márpedig a szék lábának a teteje ilyen.

16A láb legfelső vertexeiről le kell vennünk a lábcsontok súlyait nullára, majd hozzáadni őket az ülőke csontjához 1.0-ás súllyal. Így a láb nem fog kicsúszni az ülőkéből.

A hátsó lábak súlyozása kicsit komplikáltabb, mivel egyben vannak a támlával. Az ülőke magasságában levő vertexekre 0.75-ös súllyal kell hatással lennie a lábcsontnak és a támlacsontnak is.

17A támla vízszintes deszkáira átmenetet kell alkotnunk a két támlacsont között. A támlán lefele a vertexgyűrűk súlyozása lehet 1.0, 0.5 és 0.25, de nyugodtan próbálkozhatunk más értékekkel is.

tamlaweightsSúlyozás közben érdemes mozgatni néha a csontokat, hogy lássuk, milyen a modell mozgás közben az adott súlyokkal.

Utolsó lépésként még nézzük át, hogy van-e hibás, rosszul mozgó rész, illetve hosszabbítsuk meg egy kicsit az ülőke alatt lévő vízszintes deszkákat, hogy ne tudjanak kicsúszni a lábakból.

Kész is a rig, a következő postunkban pedig elkezdjük az animációkat!

MEGOSZTÁS:
Meshmag