- Modely postav (část 1)
- Modely postav (část 2)
- Modely postav (část 3)
- Vytvoření normalmap pomocí programu ZBrush
Modely postav
V této kapitole se zaměříme na modely postav. Projdeme si postup, jakým dostaneme náš model postavy do Doom 3 enginu. Rovněž si ukážeme vytvoření normalmap pro tento model v programu ZBrush. Nakonec pak ve hře definujeme již zmiňované articulated figures, častěji označované „rag dolls“. Pro export modelů postav musíme použít starší verze programu Maya, a to 4.5, 5.0 nebo 6.0 (v současné době jediné podporované).
Doom 3 engine, na rozdíl od předchozích enginů od id Softwaru, používá skeletální animaci. Dříve byla používána vertexová animace, kdy pro každý vertex byla uložena pozice pro aktuální snímek. To však nebylo zcela výhodné. Proto také id Tech 4 engine přešel na skeletální animaci, kdy jednotlivé vertexy jsou vázány na kostru. Animace je pak uložena pro jednotlivé kosti. Výhodou je taktéž možnost za běhu modifikovat animace pomoci enginu. Pokud máme postavu, která kráčí po nerovném povrchu, engine dokáže upravit jednotlivé kroky tak, aby se nohy při došlapu dotýkaly tohoto povrchu a nenořily se nebo naopak nelevitovaly (využití IK animace).
Engine v Doomu 3 používá dva typy souborů pro animované modely, oba jsou ve formě ASCII.
.md5mesh – Soubor obsahující data tvořící model a kostru. Obsahuje celou geometrii, naváhování vertexů, hierarchii kostry.
.md5anim – Tento typ souborů obsahuje jednotlivé animace. Obsahem jsou souřadnice pozic kostry pro každý snímek animace.
- Doom 3 engine nabízí poměrně volné možnosti při tvorbě postav. Postavy nemusí obsahovat standardizovanou kostru nebo přesné anatomické uspořádání. Klidně tak můžeme tvořit různé trojnohé monstra s několika hlavami apod. Modely však musí obsahovat povinnou kost nazvanou „origin“ (obrázek č. 46, 47), podle které herní engine manipuluje s daným modelem. Jedná se v podstatě o hlavní kost – obrazně můžeme říct „úchyt pro neviditelnou ruku enginu“. Tato kost se nachází u modelů postav na úrovní plochy, po které se model pohybuje. Další důležitou, tentokrát však nepovinnou kostí/kostmi, jsou „směrové kosti“ (obrázek č. 46, 47), které indikují směr ohybu kloubů. Tím je docíleno ve hře za běhu IK animace končetin – již zmiňované úpravě pozic chodidel v závislosti na reliéfu povrchu. Kost s názvem „origin“ můžeme v Maye vytvořit v podobě lokátoru, který připojíme ke hlavní kosti skeletu. To učiníme příkazem „Constrain » Point“ se zachovaným posunem (maintaing offset) a omezením přenosu translací pouze pro osy X a Z (origin se pak pohybuje v ploše). Kosti pro určení směru ohybu končetin vytvoříme taktéž pomocí lokátorů. Tentokrát je však nepřipojíme pomocí constrainů. Každému takovému lokátoru přiřadíme v hierarchii za rodiče odpovídající kost končetiny.
- Před navázáním geometrie modelu na kostru je třeba mít vytvořené UV mapovaní pro textury a model musí byt převeden na trojúhelníkovou síť (to učiníme pomocí příkazu „Triangulate“ – obrázek č. 48 ). Jestliže máme tyto podmínky splněny, navážeme v režimu animace model na kostru pomocí příkazu „Skin » Bind Skin » Smooth Skin“. Následně pečlivě naváhujeme model postavy ke kostře, k tomu využijeme nástroj „Paint Skin Weights Tool“ a tabulkového zápisu v „Component Editoru“.
- Dále vytvoříme základní animace. Narozdíl od dřívějších id enginů v Doom 3 animujeme chůzi, běh, skok apod. v prostoru (obrázek č. 49). Ve starším herním titulu Quake 3 Arena byla animace postav prováděna na jednom místě – postava v 3D programu chodila, běhala na místě. Při hře pak celým modelem postavy pohyboval engine, což mnohdy způsobovalo „prokluzování“ nohou (pokud engine pohyboval modelem rozdílnou rychlostí, než na kterou byl animován). Výhodné je před započetím animací vytvořit jednotný soubor obsahující model s navázanou kostrou a animačními ovladači (tzv. rig), který dále budeme referencovat do dalších scén. V takto nareferencovaných scénách vytvoříme smyčku chůze, případně smyčku běhu. Kromě toho také animaci útoku, zásahu a „idle“ animaci, která se používá při nečinnosti modelu. Můžeme vytvořit více verzí jednotlivých typů animací, které engine náhodně obměňuje.
- Jakmile jsme dokončili animace, postoupíme blíže k jejich exportu do enginu. Všechny potřebné soubory ve formátech .mb nebo .ma s modelem postavy a animacemi si shromáždíme v jednom adresáři. Například v našem případě:
C:Doom3basemodelsmonstersmag
Nyní musíme vytvořit definici modelu s animacemi pro export. Do jednoho souboru taktéž zapíšeme definici, kterou určíme vlastnosti postavy ve hře jako jsou její dostupné animace, zvuky… Při exportu se někdy přihodí, že hierarchie kostry ve hře není rozložena podle našeho očekávaní. Pak musíme v definičním souboru vyjmenovat všechny požadované kosti za parametrem „-keep“, eventuálně upravit rodičovské vztahy pomocí parametru „-parent“. V našem případě vytvoříme soubor „mag.def“, do kterého zapíšeme definice na následujícím umístění:
C:Doom3basedef
Obsah definičního souboru „mag.def“ – první část (viz definice níže), ve které specifikujeme model a jeho animace pro export. Za uvozením „options“ v tomto případě následuje přiřazení, kde kost „origin“ po exportu bude rodičem kosti „root“. Dále je za parametrem „-keep“ seznam kostí, které se mají ponechat při exportu. Pokud je třeba, můžeme v této sekci model otočit („-rotate“) nebo libovolně měnit velikost („-scale“). Taktéž zde nastavujeme zdrojový adresář „-sourcedir“ (obsahující .mb nebo .ma soubory) a cílový adresář „-destdir“ (po exportu do něj uloží engine .md5mesh a .md5anim soubory). Pak již následuje sekce s výčtem použitých souborů – modelu s kostrou (uvozen „mesh“) a jeho animace (uvozeny „anim“). Všimněme si, že je také možné použít pouze úsek animace pomoci parametru „-range“.
Poznámka: Sekce se třemi tečkami „…“ značí zkrácení výčtu kostí pro přehlednost zápisu.
Sekce souboru „mag.def“ s definicí pro export modelu postavy
export mag {
options -parent root origin -keep origin skull neck Larm Lforearm Lwrist Lfgr2p1 Lfgr2p2 ... -rotate 90 -scale 19 -sourcedir models/monsters/mag -destdir models/md5/monsters/mag
mesh mag.mb
anim initial.mb
anim idle1.mb
anim walk.mb -range 1 26
anim attack1.mb
anim attack2.mb
anim pain_chest1.mb
}
Chapters: