Tutorial 07 - Character models (part 2) - MAXELL's HOME

ID-Tech4 » Tutorial 07 - Character models

Chapters:

Jako další část si zapíšeme definici pro animovaný model postavy (viz definice na níže). Za klíčovým slovem „mesh“ následuje cesta k .md5mesh souboru obsahující náš model. Dále zapíšeme animační kanály „channel torso“ a „channel legs“ a za nimi v závorkách definujeme náležité kosti spadající do oblasti torza a nohou. Tím umožníme kombinování animací – např. nohy kráčí a ruce přehrávají animaci útoku. Zapsáním „*nazevkosti“ přiřadíme všechny kosti v hierarchii pod ní včetně jí samé. Přesného opaku – to znamená vyjmutí všech daných kostí včetně uvedené kosti z oblasti – dosáhneme zápisem „-*nazevkosti“.

Ve zbytku definice zapíšeme za klíčové slovo „anim“ typ animace a cestu, kde se nachází příslušný .md5anim soubor. Všimněme si definic zvuků (uvozené „sound_“), můžeme přesně určit, na kterém snímku animace se má zvuk spustit.

Tip: Ve většině případů je výhodnější použit .def soubor z některého podobného existujícího modelu ve hře a následně jej modifikovat. Zápisy jsou mnohdy velice podobné a liší se pouze použitou kostrou a cestami na specifický model a animace.

Sekce souboru „mag.def“ s definicí animovaného modelu postavy

model monster_mag {

mesh models/md5/monsters/mag/mag.md5mesh

channel torso ( *BaseSpine )
channel legs ( *root *origin -*BaseSpine )

anim af_pose models/md5/monsters/mag/initial.md5anim
anim ik_pose models/md5/monsters/mag/initial.md5anim

anim initial models/md5/monsters/mag/initial.md5anim

anim idle1 models/md5/monsters/mag/idle1.md5anim {
random_cycle_start
}

anim sight models/md5/monsters/mag/walk.md5anim {
frame 1 sound_voice snd_sight
}

anim walk models/md5/monsters/mag/walk.md5anim {
random_cycle_start
frame 4 rightfoot
frame 4 sound_body2 snd_footstep
frame 17 leftfoot
frame 17 sound_body2 snd_footstep

}

anim melee_attack1 models/md5/monsters/mag/attack1.md5anim {
frame 1 sound_voice snd_chatter_combat
frame 11 melee melee_zombie_maint_Right
}

anim pain models/md5/monsters/mag/pain_chest1.md5anim {
frame 1 sound_voice snd_pain
}

}

Zbývající část souboru „mag.def“ nalezneme opět o něco níže. V této části definujeme novou entitu – postavu nepřítele pro herní svět. Projdeme-li zběžně podle názvů atributů tuto definici, vidíme řadu na první pohled jasných nastavení. Zde můžeme nastavit vlastnosti jako výši zdraví nepřítele („health“), zda mají nepřátelé spolupracovat („team“), dosah útoku na blízko („melee_range“) apod. Jak můžeme vidět, názvy atributů mají velice výstižné anglické pojmenování, a proto je nebudeme sáhodlouze vysvětlovat. Raději si objasníme atributy méně zřejmé. Takovými jsou například atributy udávající zóny poškození („damage_zone“). Z následující definice vidíme, že podobným způsobem jako u animačních kanálů zapíšeme zóny pomocí částí kostry. Takto jednoduše definujeme rozdílné oblastí, kam nepřítele můžeme zasáhnout, a velikost poškození, které zásahem do dané oblasti způsobíme (poškození se odečítá od celkového zdraví, pokud je přesaženo, tak nepřítel umírá).

Konečná sekce souboru „mag.def“ s definicí entity postavy

entityDef monster_mag {

"inherit" "monster_default"
"scriptobject" "monster_zombie"
"model" "monster_mag"
"ragdoll" "monster_mag"
"editor_mins" "-50 -50 0"
"editor_maxs" "50 50 100"
"size" "48 48 40"
"use_aas" "aas48"
"team" "1"
"rank" "0"
"health" "300"
"melee_range" "75"
"attack_cone" "70"
"attack_accuracy" "0"

"damage_zone head" "*neck"
"damage_zone chest" "*BaseSpine -*neck -*Larm -*Rarm"
"damage_zone left_arm" "*Larm"
"damage_zone right_arm" "*Rarm"
"damage_zone legs" "*root -*BaseSpine"
"damage_scale head" "2"

"anim" "idle1"
"mass" "500"
"ragdoll_slomoStart" "0"
"ragdoll_slomoEnd" "0"

"ik_numLegs" "2"
"ik_footSize" "4"
"ik_waist" "root"
"ik_hip1" "Lhip"
"ik_hip2" "Rhip"
"ik_knee1" "Lknee"
"ik_knee2" "Rknee"
"ik_ankle1" "Lankle"
"ik_ankle2" "Rankle"
"ik_dir1" "LkneeA"
"ik_dir2" "RkneeA"
"ik_foot1" "Lball"
"ik_foot2" "Rball"

"snd_sight" "bernie_sight"
"snd_footstep" "monster_zombie_commando_footstep"
"snd_footdrag" "bernie_footdrag"
"snd_melee_attack_1" "bernie_attack"
"snd_melee_attack_2" "bernie_attack"
"snd_melee_attack_3" "bernie_attack"
"snd_chatter" "bernie_chatter"
"snd_chatter_combat" "bernie_chatter_combat"
"snd_pain" "bernie_pain"
"snd_death" "bernie_death"
"snd_thud" "monster_zombie_maint_thud"
"snd_swipe" "monster_zombie_maint_swipe"
"snd_ambient" "monster_zombie_ambient_burn"
}

Dalšími zajímavými a především velice užitečnými jsou atributy s předponou „ik_“. Těmito atributy určíme jednak počet končetin, velikost chodidel, ale i jednotlivé kosti končetin potřebné pro správné fungování již zmiňovaných IK animací končetin na nerovném povrchu. Pro správný ohyb končetin je třeba definovat „směrovou kost“ (viz obrázek č. 50 a 51) pomocí „ik_dirX“, kde X zastupuje číslo končetiny.

obrazek
Obrázek č. 50
obrazek
Obrázek č. 51


Chapters:
 Valid XHTML 1.0 Strict Valid CSS! RSS
IP: 98.84.25.165 CuteNews.ru TC: