1 Wo werden Animationen definiert?
Das Basisgerüst setzt bei der animations-Tabelle von Modeldateien (*.mdl), Meshdateien (*.msh) und Groupdateien (*.grp) an. Ohne Animation sieht diese wie folgt aus (oder wurde der Einfachheit halber einfach weg gelassen):
Es können darin beliebig viele Animationen definiert werden.
2 Basisgerüst
Die Definition einer Animation beginnt mit der ID der Animation (Zeile 1, name), mit der später per Event die Animation referenziert wird. Die Tabelle params beinhaltet die Parameter für die Animation (Keyframes, etc.), welche vom Animationstyp type abhängen.
3 Animationstypen
Es sind (mir) drei verschiedene Animationstypen in Train Fever bekannt:
Animationstyp: | KEYFRAME | KEYFRAME_MATRIX | FILE_REF |
Verwendung: | Von Hand erstellte Animationen | Von Scripts erstellte Animationen | große Animationen |
Beispiel: | Fahrzeugtüre | Pleulstangen | Personen |
Methode zur Definition der Keyframes | Eulerwinkel und lineare Transformation | Transformationsmatrix | Transformationsmatrix |
Was jedoch man selber verwenden möchte ist dem eigenen Geschmack überlassen. Da der "KEYFRAME"-Typ der am leichtesten Verständliche ist - es gibt hierfür am Meisten Beispiele (quasi jede Fahrzeugtüre) - empfehle ich diesen zu benutzen.
3.1 KEYFRAME
Das Basisgerüst sieht bei diesem Animationstyp folgender Maßen aus:
name = {
params = {
keyframes = {
.
.
.
},
origin = { 0, 0, 0, },
},
type = "KEYFRAME",
},
Display More
origin = { x, y, z} gibt dabei den Punkt (im Koordinatensystem des zu drehenden Objektes, Angaben in Metern) an, um den die Rotation ausgeführt wird. Die Tabelle keyframes muss aus mindestens zwei Keyframes des folgenden Formates bestehen, dabei muss der erste Keyframe die Zeitpunkt '0' (Null) besitzen:
Die Werte besagen folgendes:
- time: Zeitpunkt des Keyframes in Millisekunden
- rot = {z,y,x}: Gibt die Rotation gegenüber der Lage ohne Animation an. Es handelt sich dabei um Eulerwinkel (in Grad) nach der z, y′, x″-Konvention.
- transl = {x,y,z}: Translatorische Verschiebung des Objektes (bzgl. Lage ohne Animation, in Metern), welche nach der Drehung angewendet wird.
3.2 KEYFRAME_MATRIX
Das Basisgerüst sieht bei diesem Animationstyp folgender Maßen aus:
Die Tabelle keyframes muss aus mindestens zwei Keyframes des folgenden Formates bestehen, dabei muss der erste Keyframe die Zeitpunkt '0' (Null) besitzen:
Die Werte besagen folgendes:
- time: Zeitpunkt des Keyframes in Millisekunden
- transf = {Transformationsmatrix}: Transformationsmatrix (bzgl. Lage ohne Animation) entsprechend den Matrizen zur Objektplatzierung in Model- und Group-Dateien.
Ein Hinweise noch: Jeder Punkt/Vertex bewegt sich auf einer geraden Bahn zwischen zwei Keyframes! Rotierende Objekte werden also - je nach Auflösung der Bewegung - gestaucht und gestreckt bei der Bewegung.
Im Anhang ein Beispiel. In der Modliste taucht es als "Forumsbeispiel Animation Matrix" auf.
3.3 FILE_REF
Das Basisgerüst sieht bei diesem Animationstyp folgender Maßen aus:
id = "Datei.ani" referenziert dabei auf die Animationsdatei (*.ani) relativ zum Pfad res/models/animation/
3.4 Beispiel mit allen Typen
animations = {
keyframeAnimation= {
params = {
keyframes = {
{
time = 0,
rot = {0,0,0},
transl = {0,0,0},
}, {
time = 1000,
rot = {360,0,0},
transl = {0,0,10},
}
},
origin = { 1, 2, 0, },
},
type = "KEYFRAME",
},
keyframeMatrixAnimation = {
params = {
keyframes = {
{
time = 0,
transf = {
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1,
},
},
{
time = 5000,
transf = {
1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 5, 1,
},
},
},
},
type = "KEYFRAME_MATRIX",
},
fileRefAnimation = {
params = {
id = "man01_idle_lod_2/_root.ani",
},
type = "FILE_REF",
},
},
Display More
Dieser Eintrag wurde mit größter Sorgfalt erstellt. Es kann aber nicht ausgeschlossen werden, dass sich Fehler eingeschlichen haben .