Ampelsplines verschmelzen

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.
  • Ich habe mir einige Gedanken zu Ampelsplines und Omsi 2 gemacht. Ich selber habe mit Ampelsplines eigentlich keine Erfahrung, deshalb bin ich auf eure Hinweise angewiesen, sollte etwas falsch oder unverständlich sein!


    Ampelsplines und Omsi 2. Was ist eigentlich das Problem?
    In Omsi 2 werden die Kacheln erst während des Spiels geladen. Ampelsplines derselben Kreuzung verteilen sich aber manchmal über mehrere Kacheln. Das Ampelprogramm läuft ab dem Laden des Objekts, also hier zu unterschiedlichen Zeitpunkten. So kommt es, dass mehrere Verkehre gleichzeitig grün haben, obwohl sie sich kreuzen - das gibt Unfälle! Neu gebaute Strecken können ein wenig auf die Kachelgrenzen achten, bei bereits bestehenden Karten kann man das nicht nachträglich ändern. Marcel hat das Problem zwar schon lange erkannt, aber noch nicht behoben.


    Ampelsplines Omsi 2-kompatibel machen!
    Um die Ampelspline-Kreuzungen, die über mehrere Kacheln gehen, für Omsi 2 tauglich zu machen, müssen die Objekte "verschmolzen" werden. Diese Anleitung erklärt das Vorgehen Schritt für Schritt.


    1. Koordinaten notieren


    Zur Veranschaulichung habe ich eine einfache Kreuzung mit Ampelsplines ohne besonderen Schmuck gebaut. Das Bild ist (absichtlich) nach Norden ausgerichtet. Die gelbe Linie markiert die ungefähre Lage einer Kachelgrenze. Von jedem Ampelspline, also jedem blauen Kreuz müsst ihr jetzt die Koordinaten und die Drehung rausschreiben. Die Winkel sind in meinem Fall künstlich "gerade", dort sind üblicherweise ebenfalls Kommazahlen.


    2. Einheitliches Koordinatensystem
    Diese Koordinaten stammen aus dem Koordinatensystem der jeweiligen Kachel. Die Werte müssen nun auf ein einheitliches System gebracht werden. Man könnte dazu zum Beispiel das Koordinatensystem der linken Kachel benutzen. Ich entscheide mich dazu, den Koordinatenursprung im Punkt X=0 und Y=100 der rechten Kachel zu nehmen. Das heißt, ich rechne alle Y-Werte minus 100. Bei der linken Kachel muss ich außerdem den X-Wert Minus 300 nehmen.


    3. Pfade im Kreuzungseditor
    Diese Punkte wollen wir nun im Kreuzungseditor OmsiObjEditP.exe setzen. Dazu muss zunächst eine Datei erstellt werden, z.B. als Kopie des bisherigen Ampelsplines, mit neuem Namen und Anzeigenamen natürlich. Jetzt müssen zwei Dinge beachtet werden. Erstens, die Drehwinkel müssen -90° gerechnet werden, weil der Pfad der Ampelsplines nicht genordet ist. Zweitens möchten wir ja nicht den Mittelpunkt haben, sondern einen 3m langen Pfad erzeugen. Deshalb muss man von den umgerechneten Koordinaten aus einen 1,5m langen Pfad in die entgegengesetzte Richtung platzieren und von dort aus 3m in die ursprüngliche Richtung (den ersten Pfad anschließend löschen). Das macht man mit jedem Ampelspline, den man verschmelzen will (im Beispiel 4 Stück). Zur Kontrolle sollte man noch einmal schauen, ob die Pfade alle ins Kreuzungsinnere zeigen. Im Beispiel ist dies das Ergebnis:


    Jetzt habt ihr aus mehreren Ampelsplines 1 Objekt gemacht. Nun könnte man auch alle invis_Splines des Kreuzungsinneren in den Kreuzungseditor übernehmen, damit z.B. Abbieger auf Gegenverkehr warten. Aber das hatten wir vorher auch nicht und wir sind faul! Nun muss den Pfaden noch ihre Ampelphase zugeordnet werden oder die Ampelschaltung ganz angepasst werden, dazu aber später mehr.


    4. Austausch der Objekte
    Achtung, Backup des Map-Ordners erstellen, hier können Dinge ganz böse schief gehen!
    Das neu erstellte Objekt platziert ihr nun im Map-Editor, die Koordinaten entsprechen eurem gewähltem Ursprung und sollten von Hand eingegeben werden. Nun empfehle ich, die alten Ampelsplines in der Höhe zu verändern (z.B. +5m). Jetzt sind alle Abhängigkeiten neu zu setzen. Insbesondere das parent-to der Signalgeber muss geändert werden. Dabei aufpassen, dass die richtige Phase ausgewählt ist! Anschließend müssen die Fahrpläne angepasst werden, also die Tracks/Trips bzw. StationLinks. Erst dann dürfen die alten Ampelsplines gelöscht werden! Ein abschließender Blick auf die Verkehrsregeln schadet nicht. Die Kreuzung sieht jetzt so aus:


    Die "Lücken" in den Pfaden gehören zum neuen Kreuzungsobjekt. Ihr seid nun fertig. Das geht, besonders beim ersten mal, nicht sehr schnell. Aber meistens muss man nur ein paar kritische Kreuzungen bearbeiten.


    Exkurs Ampelschaltungen:
    Nach dieser Prozedur ist die Kreuzung nicht nur Omsi 2-kompatibel. Ihr habt eine vollwertige Kreuzung in einer separaten Datei. Damit stehen euch alle Möglichkeiten für Ampelschaltungen offen! Nun, eine Einschränkung gäbe es da noch. Da das Kreuzungsinnere weiterhin aus invis_street besteht, fahren Autos durcheinander statt aufeinander zu achten. Gesucht sind also Ampelschaltungen, wo keine "bedingt verträglichen" Ströme gleichzeitig freigegeben werden. Und genau da kam mir der zündende Gedanke ...
    Es gibt nämlich auch Spiele, die das mit den Abbiegeregeln nicht hinbekommen. Cities in Motion 2 hat da eine Besonderheit. Es erzeugt an bestimmten Punkten automatisch Ampeln. Die funktionieren, egal wie viele Zufahrten die Kreuzungen hat. Und da das Spiel einen Tag-Nacht-Zyklus hat, ist die Ampel auch für unterschiedlich starke Verkehrsmengen gerüstet. Das System kann man, vereinfacht und modifiziert, auf Omsi und Ampelsplines übertragen.


    Die überall einsetzbare Ampelschaltung
    Features:

    • Alle Zufahrten bekommen nacheinander grün
    • Gesichert geführte Abbieger
    • Länge der Grünphase 5-21 Sekunden, je nach aktueller Verkehrsstärke
    • Für kleine und große Kreuzungen, bis zu 5 Zufahrten
    • Kommt aus einer Zufahrt kein Auto, wird die Phase übersprungen
    • Kurze Wartezeiten, vor allem nachts
    • Kommt aus keiner Richtung ein Auto, bleiben die Fußgänger auf Dauergrün

    Ich schlage euch meine Ampelschaltung deshalb vor, weil sie oft besser als die bestehenden Schaltungen der Ampelsplines sind. Es kann ziemlich demotivierend sein, eine Minute vor einer Kreuzung zu stehen, obwohl aus der Seitenstraße gar kein Auto kommt. Bedingt kann auch eine ÖPNV-Priorisierung abgebildet werden. Hat man eine 4-armige Kreuzung und eine Busspur, wo der Bus vom rechten Rand nach links abbiegen soll, kann er die 5. Phase benutzen. Die kommt dann auch nur, wenn ein Bus dasteht. Außerdem kann man durch Änderung der approachdist die Priorisierung der Zufahrten ein wenig abändern. Als Standard-Wert sind 40m eingestellt, das entspricht einer 3-Sekunden-Lücke im Autostrom als Abbruch-Kriterium für die laufende Phase.
    Das Sicherheitsniveau entspricht für die meisten Kreuzungen den realen Anforderungen, da waren die Ampelsplines teilweise sehr abenteuerlich. Eine Besonderheit sind die Fußgänger, die an allen Stellen gleichzeitig grün haben. Die Länge der Räumzeit der Fußgänger ist abhängig von der Länge der Furt. Und weil ihr nicht nachmessen wollt, hat die Ampel (sinngemäß) eine Videoüberwachung, die den Autoverkehr so lange aufhält, bis alle von der Fahrbahn runter sind.


    Download: http://www.file-upload.net/download-10178741/Test1.sco.html


    Einbauhinweise:
    Entweder nehmt ihr die Datei und passt im Editor die Pfade an oder ihr nehmt eure fertige Kreuzung und ersetzt nur den langen Teil der Ampelschaltung in der .sco.
    Wie die Zufahrten nummeriert werden, ist eigentlich egal, ich empfehle im Uhrzeigersinn. Natürlich muss die Zuweisung im Kreuzungseditor mit den Einstellung im Map-Editor übereinstimmen. Wenn man außerdem will, dass die Autos vor der Kreuzung blinken, kann man das auch vorgeben, wenn der Ampelspline zu einer Abbiegespur gehört.



    Wahrscheinlich habt ihr nur Bahnhof verstanden, aber zusammen schaffen wir es vielleicht, dass die Erbauer ihre Maps anpassen.

  • Vielen Dank für dein Tutorial!
    Mir gefällt deine Erklärung sehr gut, auch wenn ich es vorziehe, gleich "ganze" Kreuzungen zu bauen

    :)


    Die Idee deiner universellen Ampelschaltung finde ich wirklich sehr gelungen, und die Erklärung ist aus meiner Sicht sehr schlüssig.


    Drei Fragen hätte ich noch:

    • Darf man die Ampelschaltung eingebunden in eigene Kreuzungsobjekte zusammen mit Maps veröffentlichen?
    • So, wie ich das jetzt verstanden habe, werden 1, 2, 3, 4 und 5 nacheinander angesteuert. Wenn man also gegenüberliegende Straßenseiten hat, die sich nicht kreuzen, kann man doch dann für die beiden 1 nehmen, und für den Rest 2 (also 1=Main und 2=Side, nach "altem" Prinzip)?
    • Ist es richtig, dass nicht vergebene Phasen, bzw. Phasen, die am theoretischen Anfang keine Anforderung haben übersprungen werden?
  • Mit der Ampelschaltung könnt ihr machen, was ihr wollt. Mir reicht, dass ich selbst weiß, dass ich es gemacht habe

    ;)

    .


    Gegenüberliegende Zufahrten kann man nicht zusammen schalten, außer es ist zufällig das Linksabbiegen verboten. Man könnte aber theoretisch 1 für Main-Gerade und 2 für Main-Links nehmen. Das setzt aber reine (nicht gemischte) Abbiegespuren voraus, deshalb habe ich es nicht als Empfehlung formuliert. Wahrscheinlich mach' ich noch eine Version, wo die Rechtsabbieger 2x grün haben (wie in Cities in Motion 2), aber das ist noch eine Spur aufwändiger zu erstellen und zu erklären.

    Zitat

    Ist es richtig, dass nicht vergebene Phasen, bzw. Phasen, die am theoretischen Anfang keine Anforderung haben übersprungen werden?

    Beides richtig!


    Edit: Nun mit Screenshot der Schaltung

  • Man braucht es nicht machen, wenn man die Kreuzung nur Omsi 2-kompatibel machen will. Mann kann es aber machen, um zusätzliche Funktionen (Vorfahrtsregeln, Blinken) zu bekommen.


    Wie man das hinbekommt: Im Normalfall musst du dann jeden invis-Spline 1:1 (Länge, Radius) in den Kreuzungseditor übertragen.

  • Das kann ich ja analog zum zum SDK machen. Das stellt auch kein Problem dar. Vielleicht habe ich momentan auch nur einen Denkfehler. Bei deinem obigen Beispiel haben wir ja die Ausgangspunkte definiert und als Splineteile im Editor erstellt. Den Rest machst du ja über invis-Street-Splines. Daher hast du die Endpunkte der Splines auf deiner Map auch definiert und könntest z.B. mit der Funktion "complete to" den Spline legen.
    Wenn ich aber nun die Splines im Editor legen will, um auch Blinker und Vorfahrtsregeln zu integrieren, wie kann ich mir da die gewünschten Endpunkte definieren? Da ist noch meine Denkblockade bzw. die fehlende zündende Idee (Blender ist mir zu aufwändig).

  • Complete-to machst du nur, weil du die nötigen Maße zum Verbinden zweier Punkte nicht erraten kannst. Diese Maße hast du, wenn du Complete-to auf der Map verwendest. Dann brauchst du es im Kreuzungseditor nicht noch einmal machen, weil du die Maße abschreiben kannst.

  • Mir fehlen ja die Maße der Endpunkte. Ich weiß nicht, wo der Spline aufhören soll. Kann ich mir da im Karteneditor auch Punkte wieder mit den Ampelsplines markieren, diese Koordinaten umrechnen, die Splinepunkte dann einsetzen und miteinander verbinden? Ich meine, wenn ich den Splines keine Ampelphase zuteile, dann hält dort doch auch kein Auto an, oder?

  • Ja, du hast definitiv eine Denkblockade. Ich kann mich nur wiederholen, wenn du die invis-Splines vom Kreuzungsinneren des Map-Editors in den Kreuzungseditor übernimmst, fehlt dir nichts.


    Ja, man könnte auch einen Endpunkt errechnen, aber das ist eben die komplizierte Variante und ich scheitere schon daran, dir die einfache Variante beizubringen. Außerdem kann die komplizierte Variante dazu führen, dass die Pfade im Kreuzungseditor anders als auf der Map verlaufen. Das ist blöd, wenn man schon Markierungen gesetzt hat.