Animationen: Aufbau

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


  • Dieser Eintrag befasst sich mit der Definition von Animationen

    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):

    Code
    animations = {},


    Es können darin beliebig viele Animationen definiert werden.


    2 Basisgerüst

    Code
    name = {
    	params = {
    		.
    		.
    		.
    	},
    	type = ...,
    },


    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:KEYFRAMEKEYFRAME_MATRIXFILE_REF
    Verwendung:Von Hand erstellte AnimationenVon Scripts erstellte Animationengroße Animationen
    Beispiel:FahrzeugtürePleulstangenPersonen
    Methode zur Definition der KeyframesEulerwinkel und lineare TransformationTransformationsmatrixTransformationsmatrix


    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:


    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:

    Code
    {
    	time = 0,
    	rot = {0,0,0},
    	transl = {0,0,0},
    },


    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:

    Code
    name = {
    	params = {
    		keyframes = {
    			.
    			.
    			.
    		},
    	},
    	type = "KEYFRAME_MATRIX",
    }


    Die Tabelle keyframes muss aus mindestens zwei Keyframes des folgenden Formates bestehen, dabei muss der erste Keyframe die Zeitpunkt '0' (Null) besitzen:

    Code
    {
    	time = 0,
    	transf = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, },
    },


    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:

    Code
    name = {
    	params = {
    		id = ...,
    	},
    	type = "FILE_REF",
    },


    id = "Datei.ani" referenziert dabei auf die Animationsdatei (*.ani) relativ zum Pfad res/models/animation/


    3.4 Beispiel mit allen Typen


    Dieser Eintrag wurde mit größter Sorgfalt erstellt. Es kann aber nicht ausgeschlossen werden, dass sich Fehler eingeschlichen haben ;) .

Teilen