Fahrgeschäftsanimation

Willkommen in der OMSI-WebDisk!
Als Gast kannst du nur Inhalte in deiner ausgewählten Sprache sehen. Registrierte Nutzer können die Sichtbarkeit anderer Sprachen in ihrem Kontrollzentrum aktivieren, weitere Infos hier.
Alle Themen sind in den Foren mit einer Sprachflagge gekennzeichnet: = Englisch [EN], = Deutsch [DE], = Französisch [FR]. Wenn du die angegebene Sprache nicht beherrschst, schreibe auf Englisch!
  • Moin in die Runde,

    ich bin aktuell in Blender ein Fahrgeschäft in 3D am bauen. Könnt Ihr euch gerne Hier anschauen : )

    Außerdem habt Ihr hier mal ein Video zu dem Fahrgeschäft um den Fahrtablauf zu sehen:

    Externer Inhalt youtu.be
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Vielleicht könnt Ihr euch denken worauf ich hinaus möchte. Ich möchte es gerne so animieren das es ein Fahrprogramm hat was

    einmal animiert wurde und dann via Script quasi alle 5 Minuten ausgeführt wird. *1


    Bevor ich mich als unerfahrener Animationsmodder oder wie auch immer man das nennen mag versuche, interessieren mich noch ein paar Fragen vorab:

    - Kann man sowas überhaupt exakt so animieren in Blender?

    - Ist es möglich das so wie oben beschrieben in Omsi 2 umzusetzen?*1

    - Worauf muss ich in Blender beim bauen achten? (Objektaufteilung)

    - Habt ihr noch Vorschläge oder Wünsche oder Ideen die man umsetzen kann bei so einem Objekt? (Lichtspiele, Nebel etc.)


    Angenommen das funktioniert tatsächlich bräuchte ich Hilfe bei dem Teil zum animieren und scripten, wobei ich aktuell versuche viel selber zu scripten.


    Ich bin gespannt auf eure Antworten :)

  • Das ist an sich ohne Probleme möglich. Du musst nur alles, was sich separat dreht/bewegt einzeln als Objekt exportieren. Am Ende brauchst du also:

    • 1 Grundplatte (blau)
    • 4 "Füße" (rot)
    • 16 Aufhängungen (orange)
    • 16 Gondeln (grün)

    Das ganze einmal von oben betrachtet:



    In Blender ist es nur wichtig, den Origin (Ursprungspunkt) richtig zu setzen, damit man später dies nicht unnötig mit Koordinaten nachtragen muss.

  • Moin Leute,

    ich hab ein kleine aber scheinbar schweres Problem,


    Standardposition der Drehscheibe ( Y Achse rotiert um 3.2 Grad)

    Position sobald man die Drehscheibe auf der Z Achse rotiert


    Die Drehscheibe sollte natürlich immer geneigt sein nach unten von der Y Achse aus. Ich habe jetzt vieles versucht aber es möchte nicht.

    Eventuell weiß jemand von euch die Lösung dieses Problems.


    Ich bin gespannt auf eure Lösungen :"D

  • Solche Dinge werden dann später in der Modelldatei definiert, da dreht sich das Objekt automatisch um die lokale Achse (eben mit der abweichenden Rotation von 3,2°).


    Code
    [newanim]
    origin_from_mesh
    origin_rot_y
    -90
    anim_rot
    <VARIABLE IHRES VERTRAUENS>
    <WERT DER WEISHEIT>



    Rot wäre die Drehscheibe ohne Rotation, und orange wäre mit Rotation. Und du siehst den orangenen Pfeil, der rotiert sich entsprechend mit.

  • Vielen Dank für deine Antwort, ich hab tatsächlich eine Lösung gefunden in Blender das so zu haben wie ich das im Kopf hatte. Und

    zwar mit STRG + A und dann "All Transforms to Deltas" das hat aufjedenfall das gemacht was ich brauche. Außerdem interessiert mich

    jetzt noch was die Animation angeht, ich habe mir einen Plan erstellen lassen von Chat GPT der folgender Maßen lautet:

    Ist das tatsächlich eine gute Idee oder eventuell eher doch nicht? Des weiteren muss ich noch wissen wie ich die Gondeln und Gondelhalterungen physikalisch schwingen/drehen lassen kann. Eventuell gibts da eine Möglichkeit? Ich denke wenn man alles
    von den Überschlägen etc. einzeln mit Keyframes macht sieht es bestimmt sehr künstlich aus.


    Und die aller wichtigste Frage, die Animation die ich in Blender erstelle, muss die in OMSI in der .sco datei oder via. Script noch bearbeitet werden oder

    muss man nur noch via. Script die Dauer etc. einstellen?


    Das dürften erstmal alle Fragen gewesen sein die mir im Kopf geblieben sind.


    Ich freue mich auf eure weitere Hilfe :"D :)

  • Und die aller wichtigste Frage, die Animation die ich in Blender erstelle, muss die in OMSI in der .sco datei oder via. Script noch bearbeitet werden oder

    muss man nur noch via. Script die Dauer etc. einstellen?

    Die in Blender erstellten Animationen bringen dir in OMSI nichts! Bitte mach dir da jetzt keine große Mühe! ^^

    Das wird alles per Scripte gesteuert. In Blender baust du, in OMSI scriptest du.

  • Jedes "Ding" was sich rotiert, sollte erstmal eine Variable bei dem Animationseintrag bekommen, damit man dies später einzeln ansteuern kann:

    Die Gondel wäre das einzige Objekt, was sich auf zwei Achsen drehen würde/könnte, deswegen zwei Einträge. Die Objekte müssen zudem mittels [animparent]-Einträgen an die vorherigen Teile gekoppelt werden:


    Du kannst den Objekten auch die Variablen mehrmals vergeben, dann bewegen die sich aber zusammen exakt gleich. Würde vielleicht bei den Gondeln nicht unbedingt auffallen.


    Wichtig wäre sanftes beschleunigen und bremsen. Das wäre jetzt mal ein dahingerotztes Script, ob's klappt keine Ahnung xD

    Code
    ' Antrieb Grundplatte, sanftes Anfahren bis maximal 300 Grad/Sekunde
    (L.L.Grundplatte_Modus)
    {if}
        (L.L.Antrieb_Grundplatte) (L.S.Timegap) 1 + 300 min (S.L.Antrieb_Grundplatte)
    {else}
        (L.L.Antrieb_Grundplatte) (L.S.Timegap) 1 - 0 max (S.L.Antrieb_Grundplatte)
    {endif}
    
    ' Position Grundplatte, nach 360 Grad (= 1 Runde) Reset auf 0, beginnt von vorn
    (L.L.Grundplatte) (L.S.Timegap) (L.L.Antrieb_Grundplatte) * + 360 % (S.L.Grundplatte)

    Über die Variable Grundplatte_Modus wird entschieden, ob sich das Ding dreht oder nicht. Probiers einfach mal aus ^^

  • Hmm okay das klingt seltsam, ich dachte die ganze Zeit das man das alles im Blender macht was ziemlich kompliziert ist aber okay, ich denke mal Du hast da mehr Erfahrung als ich. Gibts eventuell ein Tutorial dazu für die Omsi Script Variante? Denn jetzt wüsste ich tatsächlich nicht wo ich nach dem bauen weitermachen soll. Also klar bei den Scripten aber wie? Das überschreitet meine Wissensgrenze :"D Eventuell könntest du mir dabei helfen wenn das zeitlich und Interessenhalber passt. Ich bin aufjedenfall offen das ganze zu lernen so viel sei gesagt.


    Die Nachricht hat sich wohl überschnitten 😅

  • Ein Tutorial für die Scripts gibt es nicht direkt. Dafür gibt es "nur" einen Wiki-Eintrag, welcher aber durchaus alles beinhaltet, was man braucht. Wie gesagt, der erste Schritt ist, die sco-Datei (also die Modelldatei) deines Fahrgeschäfts zu vervollständigen. Dazu gehören die oben genannten [newanim]-Einträge bei den Objekten. Die sagen dem Objekt, wie/wo/wann es sich bewegen/rotieren soll. Dann müsste man auch noch die Scripte dafür eintragen. Dazu diesen Abschnitt oben mit einfügen:


    Ich hab das Script auch nochmal überarbeitet:

    Code: fahrgeschaeft_var.txt
    Fahrgeschaeft_start
    Fahrgeschaeft_dauer
    Grundplatte


    Diese Dateien fügst du einfach in den Scriptordner ein. Dateiname und Inhalt ist ja ersichtlich. Es würde sich testweise jetzt erstmal nur die Grundplatte drehen, nix weiter.


    Um dir die Constfile etwas näher zu bringen, das ganze funktioniert wie ein Koordinatensystem. Anhand von einzelnen, definierten Punkten errechnet OMSI alle anderen Punkte die dazwischen liegen und kann diese ausgeben. In unserem Fall gibt es die beiden Punkte Zeit in Sekunden und Geschwindigkeit. Die erste Zahl gibt also die Zeit an. Ich hab jetzt mal 300 Sekunden (5 Minuten) genommen.

    Code
    [pnt]
    0
    0

    Bei Sekunde 0 soll sich das Ding also um 0°/Sekunde drehen.

    Bei 10 Sekunden soll es sich bereits mit 250°/Sekunde drehen.

    Code
    [pnt]
    10
    250

    Und das ganze geht bis zur Sekunde 300 so weiter, mit diversen Werten:

    Code
    [pnt]
    285
    300
    
    [pnt]
    300
    0

    Bei Sekunde 285 soll es sich noch mit 300°/Sekunde drehen und bis zur Sekunde 300 soll es dann auf 0°/Sekunde abgebremst werden.


    Diese Werte können bei Bedarf erweitern/gelöscht/hinzugefügt/geändert werden, bis es dir passt.

    Probier das einfach mal aus, zu Debug-Zwecken startet die Animation, sobald du das Objekt platzierst bzw. bewegst. Das automatische Starten (bspw. alle 10 Minuten) müssen wir dann ggf später einbauen.

  • Vielen Dank für den ganzen Code. Ich habe mich jetzt mal durchgelesen, und verstehe so langsam die Struktur sag ich mal. Ich werde morgen berichten und hoffentlich mit Erfolg.


    Eine Frage am Rande, hast du das jetzt alles selbst so schnell geschrieben?

  • Joar... ^^ Wie gesagt, ob das klappt, weiß ich allerdings nicht. Aber sobald man versteht, wie Script funktionieren, erledigt sich der Rest wie von Zauberhand.

  • Vielen Dank aufjedenfall nochmals.

    Ich hab bis jetzt relativ wenig Kenntnisse was programmieren angeht, aktuell bin ich bei der Sprache C dran, also denk mal das ist typisch am Anfang. Und ich erkenne halt das ein oder andere wieder. Omsi ist doch eine eigenständige Programmiersprache oder?


    Bitte nicht explodieren wegen meinen ganzen Fragen :"D, ich interessiere mich nur für die Programmierung in Omsi.

  • Ob das irgendwelche Vorteile bringt, weiß ich nicht. OMSI-Scripte nutzen die sog. "umgekehrte polnische Notation".

    Aus 1 + 2 wird also 1 2 +.


    Somit gibt es bei OMSI auch keine Klammerrechnung:

    (1 + 2) * (6 + 7) wird zu 1 2 + 6 7 + *.


    Zahlen können auch durch Variablen (und umgekehrt) ersetzt werden:

    1 (L.L.Variable_test) +

  • Oke das ist natürlich auch mal was ganz neues für mich. Aber sehr interessant zu wissen.


    Ich habe die Scripte jetzt mal eingebaut und erhalte folgende Fehlermeldung:


    Ich habe dann erstmal versucht "Grundplatte_speed" in die Varlist zu packen als Variabel aber bringt nichts.

    Außerdem zeigt die LogFile mir eine seltsame Nachricht an:

    Zitat


    1029 09:17:45 - - Error: Fehler in Konstantendatei Sceneryobjects\PP_KirmesObjekte_V2_Set\Shake and Roll (Schaefer)\\Script\fahrgeschaeft_const.txt, Befehl 1

    Was mich wundert warum sich da 2x \ befindet das ist doch falsch oder?

    Einmal editiert, zuletzt von Pixel Phantom () aus folgendem Grund: Ein Beitrag von Pixel Phantom mit diesem Beitrag zusammengefügt.