Suche Dokumentation für [newanim]

Das Forum befindet sich im reduzierten Betrieb. Die Addon- und Supportforen bleiben weiterhin verfügbar.
Bitte beachte, dass OMSI nicht mehr weiterentwickelt wird. Ein Teil der Entwickler widmet sich inzwischen der Entwicklung eines neuen Simulators. Weitere Informationen zum LOTUS-Simulator findest Du hier.
  • Hallo,


    ich habe bereits die Foren- und Google-Suche bemüht, bin aber immer nur auf Problemlösungen für konkrete Fälle gestoßen.
    Gibt es irgendwo eine vernünftige Dokumentation für [newanim], wo die gegebenen Möglichkeiten und Unmöglichkeiten für Animationen in OMSI richtig erklärt werden?


    Mein konkretes Problem ist eher von geringer Dringlichkeit, weil ich es auch mit zwei getrennten newanim-Einträgen lösen konnte:
    Ich will ein Objekt in zwei Richtungen verschieben, z.B. Y- und Z-Achse. Ich bin davon ausgegangen, dass ich das mit einem newanim-Einträg folgender Struktur machen kann, aber dann wird nur die zweite Verschiebung durchgeführt.


    verschiebung_Y soll in negative Y-Richtung verschieben.
    verschiebung_Z soll in positive Z-Richtung verschieben.


    Sichtbar ist nur die Z-Verschiebung. Anders ist es bei Aufteilung auf zwei newanim-Einträge:


    Und ich würde gerne verstehen, warum das so ist und ob ich das auch in einem Eintrag erledigen kann. Ohne Dokumentation für Animations-Anfänger in OMSI kaum möglich.

  • wo die gegebenen Möglichkeiten und Unmöglichkeiten für Animationen in OMSI richtig erklärt werden?


    Soetwas wird niemand erstellen, weil die Möglichkeiten einfach zu umfangreich sind.
    Ein kurze Erklärung wäre es für jeden Bedarf einzeln anzupassen.


    Ich will ein Objekt in zwei Richtungen verschieben, z.B. Y- und Z-Achse. Ich bin davon ausgegangen, dass ich das mit einem newanim-Einträg folgender Struktur machen kann, aber dann wird nur die zweite Verschiebung durchgeführt.


    Dein Denkfehler liegt in der Überlegung in einer Dimension. Du möchtest aber in zwei Dimensionen verschieben. Also mußt du auch die Achse entsprechend ausrichten. Die kürzeste Verbindung zwischen 2 Punkte ist die Gerade und nicht der Umweg. In der von dir vorgegebenen Variante führt Omsi beide bewegungen aus. Allerdings hättest du das auch mit einer Bewegung machen können.
    Zuerst solltst du festlegen, wo der Objektursprung liegt:


    [newanim]
    origin_from_mesh


    Hier wird der Objektursprung in Blender ausgerichtet.


    [newanim]
    X-Koordinate
    Y-Koordinate
    Z.Koordinate


    Hier legst du fest wo sich der Objektursrung genau befindet. Dann folgen die Einträge für die Verschiebung, indem du die Achsenausrichtung verdrehst:


    origin_rot_y
    90
    origin_rot_z
    90
    anim_trans
    verschiebung_Y
    0.001


    Sollte in etwa so aussehen, auch wenn die Werte so keinen Sinn ergeben, denn eine Rotation um die Y-Achse und dananch um die Z-Achse von jeweils 90° ist das selbe wie eine einzige drehung um -90° auf der Z-Achse, weil die X-Achse in beiden Fällen nach hinten gedreht wird. Sinnvoll sind beispielsweise Werte von 1 bis 89°. Soetwas findest du in jedem Bus, mit schrägen Analoginstrumenten. Hier nutzt man die Rotation des Objektursrungs in zwei Winkeln.
    Praktisches Beispiel:
    Nimm einen Würfel und lege ihn so vor dir, dass die 1 nach links zeigt. Drehe nun den Würfel so um 90° das die 1 nach oben zeigt und anschließend nocheinmal um 90°, damit die 1 zu dir zeigt. Hättest du das nicht auch mit einer 90°-drehung hinbekommen? Das ist wie die Aussage: Ich bin nicht unpünktlich!
    Heißt für deine Animation:
    Du möchtest nach hinten (-Y) und nach Oben (+Z) verschieben. Dann mußt du auch beides eintragen und nicht über zwei Um-Wege einen Weg ausführen:


    origin_rot_x
    -45
    origin_rot_y
    90


    anim_tranz
    Verschiebung
    0.001314


    Wenn du überall 90° einträgst, ist es das selbe wie eine drehung gegen 90°. Also sind hier andere Werte erforderlich. Nur dann ergibt es auch einen Sinn.Ein Eintrag von 3x 90° ergibt eine Drehung um 3 Winkel in die ausgangslage. Also totaler Unfug.
    WICHTIG: Omsi kann immer nur eine einzige Animation ausführen. Diese Animation wird generell nur über die X-Achse ausgeführt. Also muß der Objektursprung entsprechend verdreht werden!
    Im zweiten Beispiel bedeutet es, dass dein Objekt erst um 90° nach hinten und um 45° oben verschoben wird. Die Entfernung erhöht sich. Somit würde der Würfel auf einer Kante stehen. Die Werte mußt du nun genau anpassen und auch die Ausrichtung.
    Eine Verschiebung um 1 mm ist aber auch sehr gering. In Omsi kaum feststellbar. Die Werte beziehen sich auf 1 meter mit 7 Stellen nach dem Komma. Solche Millimeter oder µm machen nur bei der Festlegung von Rotationen Sinn, damit das Objekt nicht eiert.


    Ohne Dokumentation für Animations-Anfänger in OMSI kaum möglich.


    Kommt drauf an, wo man hinschaut. Ein Vorderrad hat 3 einzelne verschiedene Animationen, die unterschiedlich ablaufen, also voneinander getrennt:
    Lenkung - ohne Federung und ohne Fahrt
    Fahrt - ohne Federung und ohne Lenkung
    Ferderung - ohne Fahrt oder Lenkung
    Das erfordert drei unterschiedliche Bewegungen, die unabhängig voneinander ausgeführt werden können.
    Möchtest du also zwei Wege in einer Animation ausführen, dann mußt du natürlich auch die Winkel entsprechend anpassen.
    Anders ist es mit einer Tachonadel. Hier werden zwei Rotationen des Objektursprungs, in einer Bewegung ausgeführt, damit später eine Animation ausgeführt werden kann (hier natürlich eine Rotationsbewegung). Aber damit sich die Nadel realistisch dreht, muß man hier zwei Drehungen von insgesamt weniger als 180° ausführen.


    Soweit Verstanden?


  • Soetwas wird niemand erstellen, weil die Möglichkeiten einfach zu umfangreich sind.
    Ein kurze Erklärung wäre es für jeden Bedarf einzeln anzupassen.


    Ich will ja nicht jede Möglichkeit erklärt haben, aber die möglichen Befehle und ihre Bedeutung würden mir schon reichen:

    • origin_from_mesh
    • origin_rot_x, origin_rot_y, origin_rot_z
    • anim_trans
    • anim_rot
    • anim_scale (falls es das geben sollte?)
    • ...(hab in manchen CFGs noch was anderes gesehen, kann mich aber nicht dran erinnern)...


    Und dann eben zusätzlich der generelle Aufbau und das Konzept (alles auf X-Achse bezogen und so weiter). Dabei könnte auch die Frage beantwortet werden, ob ich in einem [newanim] ein anim_trans, dann ein anim_rot und darunter wieder ein anim_trans packen kann oder nicht.
    Würde das Wiki funktionieren, könnte ich dort Beiträge editieren und würde ich mich auskennen, dann würde ich selbst zum Beispiel wenigstens versuchen, eine solche grobe Doku dafür zu erstellen. Dass das nicht jedem blutigen Anfänger hilft, der keinen Plan von Scripting hat, mag ja sein. Aber wer das Skriptsystem verstanden hat, der versteht eben noch lange nicht das Konzept von newanim.


    Jedenfalls sahen nicht alle [newanim]-Einträge so aus:
    [newanim]
    (origin_... oder XYZ mit Wert)
    anim_(trans/rot)
    Variable
    Wert


    Was macht zum Beispiel das hier aus Morphis Citaro FL?


    Dein Denkfehler liegt in der Überlegung in einer Dimension. Du möchtest aber in zwei Dimensionen verschieben. Also mußt du auch die Achse entsprechend ausrichten. Die kürzeste Verbindung zwischen 2 Punkte ist die Gerade und nicht der Umweg. In der von dir vorgegebenen Variante führt Omsi beide bewegungen aus. Allerdings hättest du das auch mit einer Bewegung machen können.


    Geht nicht, weil ich die Werte der Verschiebungs-Variablen nicht kenne und diese unabhängig voneinander sind. Nun kann ich mir natürlich kompliziert daraus einen Vektor machen und mir mit den trigonometrischen Funktionen den Winkel ausrechnen sowie die Länge des Vektors, damit ich das in einer origin_rot-Geschichte unterbringen kann (falls die auch Variablen statt Werte nehmen, ist ja nicht dokumentiert?). Oder ich verschiebe gleich komponentenweise, was deutlich einfacher machbar sein sollte. Das Ergebnis ist ja dasselbe.


    origin_from_mesh


    Hier wird der Objektursprung in Blender ausgerichtet.


    Hier frag ich gleich mal ganz blöd: Welchen Objektursprung habe ich denn sonst noch? origin_from_world? Oder nur die Angabe XYZ? Was an einem Bus hängt, das ist ja erst mal immer auf dasselbe Bezugssystem konstruiert bzw. wird von OMSI so interpretiert. Für meine Verschiebungen brauche ich beides eigentlich nicht, der Ursprung soll in (0,0,0) liegen.


    Heißt für deine Animation:
    Du möchtest nach hinten (-Y) und nach Oben (+Z) verschieben. Dann mußt du auch beides eintragen und nicht über zwei Um-Wege einen Weg ausführen:


    Wie gesagt, ich will das von zwei Variablen abhängig haben. verschiebung_X soll in negative Y-Richtung wirken und verschiebung_Y in positive Z-Richtung. Das ist sozusagen Vorgabe und daher passt dein Beispiel leider nicht.


    WICHTIG: Omsi kann immer nur eine einzige Animation ausführen. Diese Animation wird generell nur über die X-Achse ausgeführt. Also muß der Objektursprung entsprechend verdreht werden!


    Was heißt das genau? Dass es nur einen anim_trans oder anim_rot oder anim_wasesimmersonstnochgebenmag pro newanim geben kann?


    Eine Verschiebung um 1 mm ist aber auch sehr gering. In Omsi kaum feststellbar. Die Werte beziehen sich auf 1 meter mit 7 Stellen nach dem Komma. Solche Millimeter oder µm machen nur bei der Festlegung von Rotationen Sinn, damit das Objekt nicht eiert.


    Da sind doch noch die Variablen. Wenn in einer davon 500 steht, dann wird das Objekt um einen halben Meter verschoben, weil 0.001 Meter x 500 = 0.5 Meter.


    Soweit Verstanden?


    Ich glaube zumindest verstanden zu haben, dass ich nur ein anim_... pro newanim verwenden darf. Richtig?

    :)


    Danke für deine Erklärungen! Einen Überblick über die Möglichkeiten vermisse ich jedoch immer noch. Das zitierte Beispiel aus dem Citaro FL etwa zeigt ja, dass es noch mehr gibt als origin und anim.

  • aber die möglichen Befehle und ihre Bedeutung würden mir schon reichen:


    origin_from_mesh
    origin_rot_x, origin_rot_y, origin_rot_z
    anim_trans
    anim_rot


    Alles kenne ich natürlich auch nicht, aber das meiste weiß ich. Ich muß aber leider deinen Beitrag zusammen würfeln:

    Welchen Objektursprung habe ich denn sonst noch? origin_from_world? Oder nur die Angabe XYZ?


    Also ein origin_from_world ist natürlich Quatsch, weil ein Objekt im Bus, auch im Bus bleiben soll. In Omsi gibt es nur zwei "Orte". Einmal den Bus und einmal die Map (bestehend aus Kacheln). Somit ergibt sich für Omsi zwei Objektgruppen:
    - unbewegliche Objekte und
    - bewegliche Objekte
    Eine Schranke ist ein unbewegliches Objekt, weil die Schranke nirgendwo hingeht. Aber sie hat eine Animation. Das ist in Omsi etwas anderes, als eine "Bewegung". KI-Fahrzeuge, Menschen, Busse, Sonne, Wolken bewegen sich. An einem bus, KI-Fahrzeug oder Passanten gibt es noch seperate Animationen.


    Ein Objekt besteht immer aus zwei Teilen:
    - Polygone (mit Texturen, Texturebenen) und
    - dem Objektursprung.
    Der Objektursprung muß nicht immer im Objekt selber sein. Wo dieser liegt, wird in Blender festgelegt. Das ist wichtig, wenn es darum geht WO das Objekt im Bus sein soll und WO die Animationsachse liegen soll. Hier beginnt das Problem, weil es nur Theorie ist ...


    X ist der Objektursprung des Busses (0, 0, 0) also die Basis. Der Stern ist der Objektursprung vom grünen Rad, was das Objekt ist. Grundlegend befindet sich der Objektursprung im Objekt. Bei dem Rad idealerweise im Mittelpunkt. Setzt du das Objekt so in die model.cfg ein, befindet sich das Rad zur Hälfte in der Straße im Nullpunkt des Busses (Basis). Also mußt du das Rad verschieben (in Blender oder per Daueranimation). Der Objektursprung bleibt in der Basis des Busses. (2. Bild). Somit würde das Rad im Bus richtig sitzen, da wo es hingehört. Allerdings würde es sich um seinen eigenen Objektursprung drehen. Hier würde es eiern. Also muß ich in Omsi den Objektursprung einstellen:
    [newanim]
    origin_trans
    X-Achse
    Y-Achse
    Z-Achse


    Somit dreht sich das Rad an der richtigen Stelle genau wie geplant, wenn ich die Koordinaten richtig einstelle.
    Die zweite Möglichkeit wäre dann, ich verschiebe das Objekt zusammen mit dem Objektursprung. Nun schiebe ich (origin_trans) den Objektursprung in Blender dahin, wo die Animation ablaufen soll. Hierbei verschiebt sich das Rad noch weiter weg (Theorie). In Omsi, wird das Rad an die richtige Position gesetzt (wie in Bild 2) und die Animationsachse ist aber auch richtig gesetzt. In der Model.cfg steht dann:
    [newanim]
    origin_from_mesh


    -------------------------------------------------------------------------------------------------------------------------------------------


    Wie das Objekt aussieht ist irrrelevant. Fakt ist, das ein Objekt (hier schwarz) immer einen Objektursprung hat. In diesem Beispiel liegt der Objektursprung in der Objektmitte. Der kann aber auch überall woanders liegen.
    Hierbei gilt:
    Rot ist die seitliche Ausrichtung auf der X-Achse (links) oder Minus X (rechts).
    Grün ist die Ausrichtung nach Vorn oder nach hinten (-Y)
    Blau ist die Höhe nach oben oder nach unten (-Z)
    Soll sich das Objekt drehen anim_rot dann dreht sich das Objekt immer nur um die X-Achse. Möchte ich es verschieben anim_trans, dann kann ich nur über die X-Achse verschieben. Also nach links oder nach rechts. Andere Animationen über die Y-Achse oder die Z-Achse gehen in Omsi nicht. Eine Tür mit Hubverriegelung kann nicht hoch und runter gehen und gleichzeitig aufschwenken, denn hierfür sind Animationen über zwei Achsen mit 2 Variablen notwendig. Da ist Omsi am Ende. Also kann eine Tür nur hoch und runter gehen anim_trans oder aufschwenken oder zuschwenken anim_rot. Das es Außenschenktüren mit zwei Animationen in Omsi möglich sind, geht nur, weil ich zwei Animationen umsetzen kann. Nacheinander oder gleichzeitig (je nachdem wenn die Variable aktiv ist). Hierfür benötige ich 2 getrennte Animationen.
    Zuerst soll die Tür hoch und runter gehen. Dazu muß ich die Achse X aber drehen.
    origin_rot_y
    90
    dreht den Objektursprung so, dass über die Y-Achse gedreht wird. Dabei dreht sich der Objektursprung so, dass die X-Achse nach oben geht. Nun kann ich die Verschiebung der Tür ausführen lassen. Aber nur hoch oder runter. Das ist eine Animation. wo der Objektursprung dabei ist, ist vollkommen egal. So kann der Objektursprung auch in der Busmitte (Basis) liegen. Das geht aber nur bei Verschiebungen anim_trans. Für die Rotation der Tür, muß der Objektursprung am Drehpunkt der Tür sein. Aber ich drehe die Tür wieder über die X-Achse. Die ist zufällig gerade nach oben ausgerichtet. Also kann der Objektursprung so bleiben und ich kann die Tür öffnen anim_rot.


    anim_trans
    Hubverriegelung
    0.1


    anim_rot
    Tür_0
    80


    Heißt folgendes:
    Wenn die Variable "Hubverriegelung" aktiv ist, wird die Verscheibung ausgeführt.
    Wenn die Variable "Tür_0" aktiv ist, wird die Türrotation ausgeführt.
    In der model.cfg steht dann wie weit etwas animiert wird. Im Script steht, wann es gemacht wird. So kann ich zwei Bewegungen gleichzeitig ausführen lassen oder nacheinander.
    Mit der Weite -1 wird die Animation vom Script festgelegt (Siehe Tachonadel, Räder, etc.), dann steht die Bewegungsweite in der Konstantendatei drin. Das ist wichtig, wenn etwas nicht linear bewegt werden soll (siehe Motortemperatur, Tachonadel oder ähnliches). Das hat etwas mit der Skalierung der Texturen zu tun.


    Außerdem kann ich noch eine Animationsgeschwindigkeit festlegen:
    maxspeed
    300
    Somit kann ich eine Tanknadel sehr träge laufen lassen.
    maxspeed
    -1
    sagt aus, dass die Geschwindigkeit vom Script ausgeführt werden soll. Dann steht im Script wieder eine Konstante aus der constfile.txt.


    -------------------------------------------------------------------------------------------------------------


    Viele Animationen kann man so sehr leicht einrichten. Türen, Klappen, Rollos, etc. Aber nicht immer. Eine Tachonadel ist nicht gerade im Bus sondern läuft in einem ungeradem Winkel, weil der Tacho geneigt ist. Hier muß ich dann mehrere Drehungen des Objektursprungs vornehmen:
    origin_rot_x
    10


    origin_rot_y
    45


    origin_rot_z
    -27


    ==========================================================================


    Kurz zusammen gefasst:
    Origin_ .... bedeutet ich bewege den Objektursprung ohne das Objekt!
    rot .... ist eine Rotation
    trans ... ist eine Verschiebung
    origin_rot_.... Rotation des Obejktursprungs
    anim_rot Rotation des Objektes
    origin_trans ... Verschiebung des Objektursprungs
    anim_trans .... Verschiebung des Objektes.


    ---------------------------------------------------------------------------------------------------------------


    Das ganz wirkt ersteinmal sehr unübersichtlich. In der Model.cfg wirkt es noch schlimmer, weil man mit leeren Zeilen arbeiten kann, aber nicht muß.
    origin_rot_x
    0
    kann man schreiben, muß man aber nicht, man kann diese beiden Zeilen auch weglassen. denn Null bleibt Null.


    ----------------------------------------------------------------------------------------------------------------


    [newanim]
    setzt einen neuen Animationsbefehl. Jede einzelne Animation kann nur eine einzige Variable haben. Eine zweite Variable benötigt einen weiteren [new_anim] Befehl. Denn das ist eine neue Animation. Aber man kann beide Animationen gleichzeitig ausführen lassen. Beispiel: Hubverriegelung im MAN ÜL, MB O407 - hier werden zwei Animationen nacheinander ausgeführt. Ikarus 250 von CCV-520 - hier wird die Hubverriegelung mit der Türöffnung gleichzeitig gestartet. Die Hubverriegelung endet nur früher oder beginnt beim schließen der Tür später.


    Da du zwei Variablen nutzen möchtest, mußt du zwei Animationen einstellen. Hierfür kannst du den Objektursprung immer wieder neu einstellen. Achtung, nicht umstellen, sondern von Grund auf neu einstellen!


    Das ist eine einzige Animation und ist genauso aufgebaut wie alle anderen auch. Zuerst wird der Objektursprung eingestellt. Dann die Objektanimation, dann die Animationsweite. Das delay weiß ich gerade nicht genau, wofür das steht.
    die andere Schreibweise dafür wäre:


    Ist genau das selbe wie oben. Nur habe ich jetzt sinnlose Teile eingetragen, die garnicht notwendig sind. Und ich habe mir die Leerzeilen gespart. Somit sieht es etwas unübersichtlich aus.
    Ein Rad am Bus hat 3 Animationen nacheinander.
    Es gibt eine Rotation womit der Rad um sich selbst dreht,
    eine zweite Rotation für die Lenkung,
    und eine dritte Rotation für die Federung.


    Dabei könnte auch die Frage beantwortet werden, ob ich in einem [newanim] ein anim_trans, dann ein anim_rot und darunter wieder ein anim_trans packen kann oder nicht.


    Kommt drauf an, ob du zwei Variablen hast. Pro animation nur eine Variable.


    Für meine Verschiebungen brauche ich beides eigentlich nicht, der Ursprung soll in (0,0,0) liegen.


    Das ist richtig, siehe oben.


    Was heißt das genau? Dass es nur einen anim_trans oder anim_rot oder anim_wasesimmersonstnochgebenmag pro newanim geben kann?


    Ob man in einer Animation gleichzeitig eine Objektverschiebung und eine Objektrotation machen kann, weiß ich garnicht. Aber solange du zwei Variablen hast, egal ob diese gleichzeitig und unabhängig voneinander, oder nacheinander ausgefürht werden, brauchst du zwei Animationen.


    Das zitierte Beispiel aus dem Citaro FL etwa zeigt ja, dass es noch mehr gibt als origin und anim.


    Nein mehr gibt es aber nicht. Du kannst den Objektursprung drehen oder / und verschieben und das Objekt selbst. Alles weitere unter der Weite sagt nur aus, wie die Animation gemacht werden soll.


    Weitere Fragen?

  • Erst einmal danke für deine ausführlichen und bebilderten Erklärungen. Die Geschichte mit der X-Achse und dem Objektursprung hatte ich bereits verstanden.


    Hier hakt es mit meinem Verständnis: Ich habe einen Objektursprung im 3D-Modell (o3d- oder x-Datei). Wenn ich das Objekt in den Bus einsetze, liegt der Objektursprung zwangsweise immer dort, wo alle anderen Objekte auch ihren Ursprung haben, bei einem Bus also sozusagen in dem Bus-Ursprung, also dem (0,0,0) des Bus-Koordinatensystems (BKS). Nun kann ich das Rad direkt an der richtigen Stelle im BKS exportieren oder mit seinem Ursprung in der Mitte des Rades. Im ersteren Fall muss ich mit origin_trans den Ursprung für die Drehanimation dann verschieben. Im zweiten Fall muss ich erst dafür sorgen, dass das Rad an der Stelle landet, wo die Achse ist. Das geht offenbar nur per Daueranimation. Da brauche ich dann ein origin_rot_ und ein anim_trans darunter. Für die Drehung müsste ich dann ein zweites newanim einfügen und in diesem kann ich origin_from_mesh benutzen, weil dieser sich dann auf den durch die Daueranimation verschobenen Ursprung des Rad-Objektes bezieht. Habe ich das richtig verstanden?


    Mit der Weite -1 wird die Animation vom Script festgelegt (Siehe Tachonadel, Räder, etc.), dann steht die Bewegungsweite in der Konstantendatei drin. Das ist wichtig, wenn etwas nicht linear bewegt werden soll (siehe Motortemperatur, Tachonadel oder ähnliches). Das hat etwas mit der Skalierung der Texturen zu tun.


    Das verstehe ich nun überhaupt nihct mehr. Welcher Wert soll -1 sein? Und das Script bestimmt doch sowieso den Wert der Variablen. Da gibt es noch die curves, meinst du so etwas?


    Außerdem kann ich noch eine Animationsgeschwindigkeit festlegen:
    maxspeed
    300


    Eine Geschwindigkeit ist eine physikalische Größe Weg pro Zeit. Was bedeuten die 300? Meter pro Sekunde? Kilometer pro Stunde? Grad pro Minute?


    Jede einzelne Animation kann nur eine einzige Variable haben. Eine zweite Variable benötigt einen weiteren [new_anim] Befehl. [...] Da du zwei Variablen nutzen möchtest, mußt du zwei Animationen einstellen. Hierfür kannst du den Objektursprung immer wieder neu einstellen. Achtung, nicht umstellen, sondern von Grund auf neu einstellen!


    Danke für die Klarstellung!


    Nein mehr gibt es aber nicht. Du kannst den Objektursprung drehen oder / und verschieben und das Objekt selbst. Alles weitere unter der Weite sagt nur aus, wie die Animation gemacht werden soll.


    Schon, aber das ist ja nicht ganz irrelevant. Sonst gäbe es das nicht.

    ;)
  • Hier hakt es mit meinem Verständnis:


    Du beginnst immer wieder von vorn.


    Wie man die dritte Möglichkeit in Blender umsetzt ist mir nicht bekannt, weil ich ja mit zModeler baue. Da wird das so eingestellt, wie im dritten Bild. Omsi setzt das Objekt richtig ein, weil der Objektursprung auf BKS gestellt wird und für die Animation, wird die Position des Objektursprungs genutzt.


    Für die Drehung müsste ich dann ein zweites newanim einfügen und in diesem kann ich origin_from_mesh benutzen, weil dieser sich dann auf den durch die Daueranimation verschobenen Ursprung des Rad-Objektes bezieht. Habe ich das richtig verstanden?


    Nein!!! Mit jeder Animation [newanim] mußt du den Objektursprung immer wieder neu einstellen und positionieren. Wenn du in Blender nicht die dritte Möglichkeit benutzt hast, dann taucht der Befehl "origin_from_mesh" nie auf. Aber egal wieviele Animation du hast, du beginnst immer wieder mit jeder weiteren Animation von vorn, als hätte es die verherigen nie gegeben.


    Beim Beispiel Rad habe ich zwei Koordinatenpunkte für die Animationen, wo der Objektursprung sein muß. Einmal für die Fahrrotation, das Rollen, so wie auf dem linken Bild. Auf der rechten Seite gibt es zwei Punkte für die Animationen. Der linke Punkt ist für die Lenkung. Hier kann ich dann "origin_from_mesh" nutzen, wenn ich die dritte Möglichkeit von oben nutze. Für die Federung muß ich den Animationpunkt aber verschieben, weil das Rad sonst einen zu großen positiven und negativen Radsturz aufweist, wenn das Rad einen großen Federweg ausführt (besonders bei älteren Fahrzeugen). Der Radsturz soll aber gleich bleiben oder nur sehr gering ausfallen, das Rad soll nur hoch oder runter gehen. In Omsi nutzt man für die Federung eine Verschiebung, was allerdings falsch ist. Richtig wäre es, den Rotationspunkt zu verschieben und für die Federung eine Rotation auszuführen. Hierfür muß der Objektursprung dann verschoben werden. Würde ich eine weitere Animation einsetzen (verstellbarer Radsturz). Muß ich wieder vom originalen Objektursprung einstellen. Das selbe gilt auch für die Rotation des Objektursprungs. Für das Rollen wird der Objektursprung nicht verdreht, für das Lenken von von der Seitlichen Ausrichtung nach oben gedreht und für die Federung wird wieder von der seitlichen Ausrichtung, dieses mal nach vorn gedreht.
    Nutzt man von Oben die mittlere Möglichkeit, wird der Objektursprung für jede Animation immer wieder vom BKS aus neu verschoben.


    Das verstehe ich nun überhaupt nicht mehr. Welcher Wert soll -1 sein? Und das Script bestimmt doch sowieso den Wert der Variablen. Da gibt es noch die curves, meinst du so etwas?


    Wie schon gesagt, steht in der model.cfg, wie weit eine Animation ausgeführt werden soll. Also soll die Tür 45° öffnen, oder 90° oder sogar 180°.


    Bei nichtlinearen Bewegungen passt das nicht. Das Tacho steht im Stillstand bei 7-8km/h. Würde der Zeiger linear verlaufen, würde die Ungenauigkeit zu groß werden. Der Temperaturzeiger steht bei unter 60°C. Ein linearer Temperaturverlauf ist garnicht möglich. Also wird der Animationswert auf -1 gesetzt.
    Im Script steht eigentlich nur, wann die Animation ausgeführt weren soll, aber nicht wie weit. Sonst würde der Temperaturzeiger mehrere Runden rotieren. Das wird dann mit curves eingestellt. Das selbe gilt auch für die Animationsgeschwindigkeit im Bus, beispielsweise die Türgeschwindigkeit.


    Was bedeuten die 300?


    In diesem Beispiel bedeutet es nur die Zeit. Wie du schon sagst, ist die Geschwindigkeit immer eine variable Entfernung pro fester Zeit. Der Weg wurde ja schon festgelegt und steht unter der Animationsvariable. Was fehlt ist nur die Zeit, die in diesem Beispiel wohl Millisekunden sein soll.


    Schon, aber das ist ja nicht ganz irrelevant. Sonst gäbe es das nicht.


    Das ist ersteinmal recht verwirrend, weil der Weg meist in der Model.cfg eingetragen wird. In der model.cfg steht also meist nur wie weit ein Objekt drehen oder geschoben werden soll, im Script nur wann. Darum gibt es für die Animation nur die 4 Befehle für die Positionierung und die Animation. Alles was mit origin_ anfängt ist für den Objektursprung und was mit anim_ anfägt ist für der Objekt selbst. Mehr gibt es also nicht. Der Rest ist für die Verschiebung oder Rotation des Objektes oder des Objektursprungs nicht mehr relevant. Danach folgt nur die Variable WANN die Animation ausgeführt werden soll, wie weit und wie schnell.
    Mit "mehr gibt es nicht" meinte ich, das was ich vorher schon aufgezählt hatte, alles war. Es gibt Animationseinträge die sind kurz und es gibt welche die sind sehr lang. Was nicht gebraucht wird, wird nicht geschrieben (z.B. origin_rot_x = 0). Schreibt man alles auf und dazu noch leerzeilen für die Übersicht, dann wirkt es sehr voll, überladen und umfangreich. Aber es gibt ebend nicht so viele Befehle die man unter [newanim] schreiben kann.