Animationen: Aufbau

Willkommen in der Transport Fever Community

Welcome to the fan community of Transport Fever and Train Fever, the economic simulators of Urban Games. The community is free for you to share and inform yourself about the game. We cultivate a friendly and objective interaction with each other and our team will be happy to answer any questions you may have.

 

Registration and use is of course free for you.

 

We wish you a lot of fun and hope for active participation.

The Team of the 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 ;) .

Share