Community-Tutorials (Source)

Model Import Tutorial 3 - Animierte Models

Model Import Tutorial 3 – Animierte Models

Vorraussetzungen: Man sollte wissen, wie man normale Models importiert und ein bisschen Grundwissen sollte in Max vorhanden sein.
Benötigt wird: Cannonfodders Model Exporter in der neusten Version und 3D Studio Max

Macht alles, wie ihr es bei Static Models auch macht bis zu dem Punkt an dem ihr das Model exportieren wollt. Jetzt müsst ihr die Bones platzieren, um eine Animation zu erstellen.

Platzieren der Bones

Über Create – Systems – Bones IK Chain könnt ihr Bones einfügen. Es ist egal wie viele oder wie sie aussehen. Das größte Problem, das ihr jetzt habt, ist WO setzte ich die Bones hin.
Da das kein Tutorial über Rigging ist werde ich darauf jetzt nicht so genau eingehen.

Hier mal ein Screenshot wie es bei mir aussieht

colo036.jpg

Die Bones rechts und links sind für die Bewegung des Greifarms zuständig. Die Zwischenbones verhindern, dass sich die gegenüberliegende Seite mitbewegt, sobald man die eine Seite bewegt.
Wie man sehen kann ist Bone Anordnung nicht optimal. Um das ganze schöner zu machen, müsste man noch jeweils ein Bone an den Hydraulikpumpen rechts und links platzieren.
Außerdem kenne ich mich nicht so gut mit Animationen aus… Hauptsache die Animation sieht einigermaßen passabel aus. :D

Ihr könnt mit diesem kleinen Button, der sich rechts oben befindet, auch Bones verlinken.

colo037.jpg

Einfach auf dem Button klicken und das 1. Bone selektieren. Der Cursor verändert sich und diesen Cursor müsst ihr dann auf den nächsten Bone schieben ohne die Maustaste loszulassen.
Jeder Bone hat einen Pivot und eine Richtung in die er zeigt. Darauf müsst ihr aus achten.
Aber das könnt ihr alles noch in den Tutorials weiter unten durchlesen.

Spielt ruhig ein bisschen mit den Bones rum um genau zu wissen, wie ihr die und die Animation hinbekommt. Im Handbuch virtuellen Handbuch steht alles über Animationen mit Bones im Verzeichnis Charakter Animation -> Charakter Animation Without Biped

Hier noch Links dazu:
http://67.15.36.49/team/Tutorials/bonestut/Bonestut.asp
http://67.15.36.49/team/Tutorials/makingofshark3/animating_shark_01.asp

Anmerkung: Jedes Animierte Teil eines Models muss min. 1 eigenes Bone bekommen und das nicht Animierte „Hauptteil“ auch. Sonst wird die Animation nicht angezeigt. Also nur mit der Verschiebung von Vertices können keine Animationen erzeugt werden.

Edit envelopes

So wenn ihr alle Bones angepasst habt (das müsst ihr testen… bei einer Kamera muss man mit einer Drehung des Bones an der Kamera die Kamera drehen können aber nicht den Bone an der Halterung der Kamera) müssen wir die Bones natürlich noch mit dem eigentlich Model verbinden.
Dazu wählt ihr das gesamte Model aus ( alle Teile des Models müssen mit „Attach“ zusammengefügt werden) und belegt es mit dem Skin Modifikator.
Ihr werdet nun dieses Fenster sehen:

colo038.jpg

Mit Add (1) müsst ihr ALLE Bones in den Modifikator laden. (Alle dir ihr nicht geladen habt, werden nach dem kompilieren nicht angezeigt)
Mit edit envelopes müsst ihr nun den Bones die Vertices zuordnen.

Als erstes macht ihr ein Häkchen bei Vertices (2) um auch Vertices den Bones zuordnen zu können. Jetzt selektiert ihr das gewünschte Bone im kleinen Fenster rechts (3). Danach müsst ihr alle Vertices, die mit dem jeweiligen Bone animiert werden sollen selektieren. Das kann ein bisschen Zeit beanspruchen aber es sollte gewissenhaft gemacht werden, da sonst beim Animieren ein paar Bones an ihrem Platz bleiben obwohl sie sich eigentlich bewegen sollten.
Für den nächsten Schritt selektiert lassen!

Um die Vertices zuzuweisen müsst ihr im Unterfenster Weight Properties den Regler Abs. Effekt auf 1 schieben. (Bei einem niedrigereren Wert bewegen sich die Vertices nicht ganz genau mit dem Bone. Das ist bei Lebewesen nützlich.) Ist der Wert auf 1 gestellt, färben sich die zugewiesenen Vertices Rot.

Das macht ihr jetzt mit allen Bones, die ihr Animieren wollt. Bones, die ihr in keiner Animation bewegt müsst ihr keine Vertices zuweisen. Genauso müsst ihr nicht alle Vertices eines Models zuweisen sondern nur die, die sich mit dem Bone bewegen werden.

colo039.jpg

Überblick

Ihr habt nur eurem Model Bones zugewiesen. Jetzt solltet ihr dieses Model abspeichern unter einem Namen, den ihr gleich nicht mehr überschreiben dürft. Das ich sehr wichtig, da ihr sonst später Probleme bekommt. Im späteren Tutorial werde ich es reference_Model nennen.

Animation erstellen

Es gibt sicher viele Tutorials zum Animieren von Model die alle Möglichkeiten erläutern. Ich werde nur eine einfach und schnell Möglichkeit erklären.

Ich rede hier 2 Seiten lang von Animierten Models und wir haben immer noch keine Animation erstellt. Das wird sich gleich ändern.

colo040.jpg

In dem ihr auf das kleine Play Symbol (1) rechts unten rechtsklickt, öffnet ihr das Fenster.
Indem legt ihr die Frames der Animation (2) fest. Wenn die Animation mehr Frames hat, wird sie flüssiger. Allerdings verbraucht sie dann auch mehr Leistung.
Anmerkung: Die Nachladeanimation für die Pistole in CSS hat 65 Frames

Nachdem ihr einen optimalen Wert für die Anzahl der Frames gefunden habt, klickt ihr auf Auto Key. Ihr seid im Moment auf dem 1 Frame. Um eine Animation zu erstellen wählt z.B. das 30 Frame. Jede Bewegung der Bones (auch der Vertices also darauf achten, dass man NUR die Bones selektiert hat) wird jetzt gespeichert. Also schiebt ihr eure Bones ein wenig in eine gewünschte Richtung und klickt noch mal auf Auto Key. Jetzt schiebt ihr den Regler wieder auf den 1 Frame. Die Bones werden jetzt in gleichmäßiger Geschwindigkeit zu der Position geschoben, von der ihr mit der Animation begonnen habt. Jetzt könnet ihr noch mal das 30 Frame auswählen, auf Auto Key klicken, das und das letzte Frame auswählen um die Bones dann noch mal in eine andere Richtung zu schieben. Nun hättet ihr vom 1 bis zu letzten Frame zwei Bewegungen, die allerdings hintereinander ablaufen.

Für bessere Animation bei denen ihr gleichzeitig mehrer Bones bewegt empfehle ich euch wieder andere Tutorials und das Handbuch. Das Tutorial soll ja nicht zu lang werden.

Überblick:

Die Animation ist erstellt! Speichert die Szene unter einem anderen Namen. Ich werde sie mal Model_anim nennen.

Kollisionsmodel

Ladet euer Reference_Model und schmeißt den Skin Modifikator raus. Die Bones NICHT löschen. Wenn sie euch stören blendet sie einfach aus. Nun vereinfacht ihr das Model soweit es geht.
Selektiert ALLE Polygone und gebt ihnen die Smoothing Group 1 da es sonst einen Smoothing Group Error beim Kompilieren gibt.

Jetzt alle Objekte wieder mit Attach zusammenfügen und den Skin Modifikator drauflegen.
Die Bones, die noch am gleichen Platz sein müssen wieder in den Modifikator laden. Nun die Animierten Teile des Models wieder wieder mit edit envelopes den Bones zuweisen. (Bei meinem Model sind das die Greifarme) Das Kollisionsmodel muss nicht extra Animiert werden, da diese Bones auch auf die Animation zugreifen.

Überblick:

Speichern unter Model_col
Nun exportiert ihr die 3 Szenen
- reference_Model (Reference im Exporter auswählen)
- Model_anim (Skeletal Animation im Exporter auswählen)
- Model_col (Reference im Exporter auswählen)

Die .qc erstellen

Wie man kompiliert solltet ihr ja wissen und deswegen werde ich nur noch mal die .qc erläutern.

[PHP]// So wird die Datei später heißen
$modelname greifer.mdl

// Verzeichnis der Texturen
$cdmaterials models\Greifer

//Materialeigenschaften der Textur
$surfaceprop "metal"

//Scalierung des Models
$scale 1

//Name der .smd Datei
$body studio "./greifer"

//Standartsequenz die immer gespielt wird – nehmt das reference Model dazu
$sequence idle "greifer" fps 1
//Animationen
$sequence greifen "greifer_anim" loop ACT_RUN 2 fps 90.00 node idle
$sequence öffnen "greifer_anim2" loop ACT_RUN 2 fps 10.00 node idle

//Name des Kollisionsmodels und Gewicht
$collisionmodel "greifer_phys.smd"
{
// Mass in kilograms
$Mass 200
$concave
}
[/PHP]

Die Animationen werde ich noch mal genauer erklären:

$sequence greifen -> so heißt die Animation
"greifer_anim" -> Name der .smd
loop -> das sie immer wieder abgespielt wird
ACT Run -> sagt der Engine, dass sie die Animation abspielen soll
fps 90.00 -> sollte übereinstimmen mit den FPS in Max muss aber nicht. Wenn man mehr FPS angibt wird die Animation schneller als in Max; bei weniger langsamer als in Max

Hier könnt die Models jetzt mit einem prop_dynamic einfügen.

Hier noch ein Screen aus dem Model Viewer

colo041.jpg

$animation

Der Animation Befehl dient dazu eine Teilanimation aus einer smd zu extrahieren (das können mehrere Frames, 1 Frame, mehrere Frames bestimmter Bones oder 1 Frame bestimmter Bones sein).

$animation name "filename(.smd)" frame 0 15

Würde er aus eurer Animations Datei eine neue Animation erstellen, die vom 1. bin zum 15. Frame eurer Animationsdatei geht und "name" heißt.

oder

$animation name "filename(.smd)" numframes 40


würde eure Animation 40 frames haben lassen, auch wenn die Datei eigentlich nur 30 hat. Das letzte Frame wird dann 10x kopiert.

Es gibt noch viele andere Befehle für, die ihr hinter $animation schrieben könnt.
Sie stehen und new$animation commands

http://developer.valvesoftware.com/wiki/.QC_Commands

Thanks to Adrian_Broher