Neue Gleise für EEP

(Dokumentversion: 22.02.2019)

"Tell me all of your secrets"
- The Smashing Pumpkins

EEP bot bisher eine Gleiskurve mit einiger Flexibilität; es lassen sich alle Kurvenformen wie etwa bei den Modelleisenbahnen damit darstellen und zusätzlich Biegungen in der dritten Dimension, sowie Gleisüberhöhungen. In realen Verkehrswegesystemen werden allerdings auch Kurvenformen verwendet, welche EEP bislang nicht handhaben konnte: so wird etwa bei der Eisenbahn möglichst nicht ein gerades Stück Gleis an ein gekrümmtes Gleis mit konstantem Kurvenradius gesetzt, da beim Übergang zwischen beiden das Fahrzeug einen Ruck durch den plötzlichen Kraftwechsel erfahren würde. Im Sinne des Fahrgastkomforts und des störungsfreien Betriebs wird möglichst eine Gleisform gewählt, die kontinuierlich von einer Krümmung Null auf die dann im weiteren Verlauf konstante Kurvenkrümmung führt, etwa eine sogenannte Klothoide. Auch weitere Kurvenformen sind im Verkehrswegebau üblich, denn grundsätzlich gibt es eine unbegrenzte Zahl an Möglichkeiten einen Weg durch den dreidimensionalen Raum festzulegen.

Die neuen Gleise der Trax-Bibliothek funktionieren mit beliebigen Kurven, so dass eine Vielzahl von Kurvenformen bereit gestellt werden kann, die sich zukünftig auch noch erweitern lässt. Damit lassen sich dann reale Verkehrswegesysteme nachbauen.


EEP nutzt eine Physik-Engine bisher ausschliesslich für die Verladung von Gütern. Der eigentliche Anwendungsbereich für solch eine Engine wäre aber, die Dynamik der Zugbewegung zu berechnen. Wie das funktioniert kann man sich etwa in der EEPTSM - Reihe ansehen. Nicht nur können wir hier die Zugbewegung sehr viel realistischer berechnen, wir können auch Einflüsse der Umgebung auf den Zug einbeziehen; etwa kann ein Kranarm einen Waggon anschieben. Eine Voraussetzung dies einmal in EEP einzuführen sind die neuen Gleise, bzw die Trax-Bibliothek, welche sie implementiert.


Auf die spezielle Kurvenform abgestimmte Editoren lassen präziseres Editieren zu. Typische Aufgaben im Editor sind das Verlängern eines Gleises bis zu einem bestimmten End- oder Anfangspunkt oder das Verbinden zweier Punkte, wobei jeweils bestimmte Bedingungen für die Tangenten an den Endpunkten gelten sollen. Durch den Einsatz geeigneter Kurvenformen lassen sich solche geometrischen Probleme nun besser lösen.


Die Neuimplementation der Gleislogik im Rahmen der Trax-Bilbliothek ermöglicht es uns alte Erblasten loszuwerden und aus Fehlern der Vergangenheit endlich einmal auch die richtigen Schlussfolgerungen zu ziehen. Wir sind zuversichtlich, dass dies die Weiterentwicklung in Zukunft beschleunigen und flexibler machen wird.


Abwärtskompatibilität zu den Vorgängerversionen von EEP ist gegeben. Mit diesen Versionen erstellte Anlagen können geladen und betrieben werden, die neuen Gleise entstehen erst beim Editieren mit der neuen EEP Version; mit Vorgängerversionen hingegen lassen sich diese neuen Formate im Allgemeinen nicht laden. Aufgrund der umfangreichen Überarbeitung des Quellcodes können kleinere Abweichungen und Inkompatibilitäten gerade bei bislang undefinierten oder seltenen Situationen nicht ausgeschlossen werden. Man kann eine Software nicht verbessern, ohne sie zu verändern.


In der Alphaphase wollen wir einmal frühzeitig das neue System einem interessierten Publikum vorstellen. Es sind zu diesem Zeitpunkt noch nicht unbedingt alle Funktionen verfügbar, auch geht es weniger darum Fehler aufzuspüren, als vielmehr darum, das neue System der Nutzergemeinschaft zur Diskussion zu stellen um Anregungen und Verbesserungsvorschläge zu erhalten; beziehungsweise gibt es auch unter den Entwicklern unterschiedliche Vorstellungen etwa bei der Gestaltung mancher Dialoge oder dem Design von Editorfunktionen. Hier wäre etwas Feedback hilfreich.

Da EEP ein kommerzielles Produkt ist müssen wir den Zugang zur Alphaphase leider auf einen kleinen Kreis begrenzen. Es gibt allerdings keinen Grund die Neuerungen nicht auch in einem weiteren Kreis oder sogar öffentlich zu diskutieren.

Für die Alphatester findet sich am Ende dieses einleitenden Dokuments eine kleine Aufstellung der Änderungen im Vergleich zu den Vorgängerversionen von EEP.


Die zukünftige Entwicklung umfasst im Bereich der neuen Gleise sicherlich die Ergänzung des Kurvenrepertoirs um weitere praktische Kurven; der nächste grosse Schritt aber wäre der Übergang zur Berechnung der Fahrzeugdynamik mittels der Physik-Engine. Dies würde vermutlich als Auswahloption zwischen alter Dynamik und neuer Dynamik bereitgestellt.


Einige Kurven


Die Gerade ist der kürzeste Weg zwischen zwei Punkten im Raum. Trotz dieser beeindruckenden Eigenschaft ist sie an den Enden etwas unhandlich, genauso wie in der Mitte.


Als Giotto vom Papst um ein Muster seiner Handwerkskunst gebeten wurde, zeichnete er einen perfekten Kreis - und zwar freihändig. Der Kreisbogen wird von vielen Leuten als die schönste aller Kurven angesehen; andere preisen ihn wegen seiner Fähigkeit, Hindernisse zu umgehen. Der Kreisbogen kann zwei Punkte verbinden, selbst wenn eine der Tangenten vorgegeben wird, die zweite Tangente liegt dann allerdings fest - alle Schönheit leidet unter fehlender Flexibilität.

Da der Bogen eine ebene Kurve ist, ist er sehr unhandlich im Umgang mit drei Dimensionen.


Die Helix ist die erste Wahl, wenn es darum geht, von einer Ebene zu einer anderen zu wechseln, oder - wenn man sie kippt - einen Looping aufzubauen. Sie kann zwei nahezu beliebig gelegene Punkte verbinden, obwohl sie dann mit ihren Tangenten etwas restriktiv ist; eine vollständige Schleife hat an ihren Enden zwei parallele Tangenten - ein Merkmal, das in vielen Situationen sehr praktisch ist.


Die Cubic ist eine äußerst mächtige Kurve um zwei Punkte zu verbinden und beide Tangenten beizubehalten. Bei Eisenbahnen ist dies ein wichtiges Merkmal, wenn es darum geht, eine Lücke zu schließen oder einen sauberen Höhenwechsel vorzunehmen, besonders da es in allen drei Dimensionen funktioniert. Darüber hinaus gibt es zwei Parameter, welche die Feinabstimmung des exakten Kurvenverlaufs erlauben.

Weil die Cubic sehr eigenwillige Vorstellungen über die Nach-Oben-Richtung unterhält ist es notwendig sie zusammen mit einem Directional Twist zu verwenden.


Die Klothoide ist eine Kurve mit linear (in Bezug auf ihre Bogenlänge) variierender Krümmung. Das ist nützlich, wenn es darum geht, in Verkehrswegesystemen Übergänge zwischen Kurven verschiedener Krümmung herzustellen.

Da es sich bei der Klothoide um eine ebene Kurve handelt, ist sie etwas unflexibel, wenn es um mehr als zwei Dimensionen geht.


Der Rotator ist eine Kurve, deren Tangente sich (in Bezug auf ihre Bogenlänge) ständig in der Ebene und senkrecht dazu dreht. Seine starke Seite ist seine Fähigkeit, die Richtungen der Start- und Endtangenten zu bestimmen, sowie die Einfachheit des Konzepts. Er funktioniert vorhersehbar, vor allem wenn die Drehung in die Aufwärtsrichtung relativ klein bleibt.

Andererseits kann der Rotator eine sehr umständliche Kurve sein, wenn er für Aufgaben verwendet wird für die er nicht gemacht wurde.

Der Rotator wirft die Frage auf, ob Rotatoren aneinander angehängt werden können, so dass sich die Drehwinkel auf einfache Weise addieren. Leider ist die Antwort im Allgemeinen: nein. Die RotatorChain korrigiert das, indem sie eine Reihe von Rotatoren in Bezug auf die gleichen Drehachsen definiert.


Änderungen im Vergleich zu den Vorgängerversionen von EEP16


Der Gleisvervielfältigungsdialog im 2D Modus hat eine Überarbeitung erfahren. Es stehen fünf Vervielfältigungsoptionen bereit, für die jeweils noch ein Seitenwechsel-Modus existiert. Abhängig vom Kurventyp werden einige dieser Optionen dasselbe Ergebnis produzieren. Manche Kurvenformen lassen keine echten Parallelgleise zu.


Vertauschen von Anfang und Ende eines Gleises über das Kontextmenü im Planfenster, bzw per Doppelklick auf den inneren Bereich eines markierten Gleises bei gehaltener Hochstelltaste. Jedes Tool, welches nur am Ende oder Anfang eines Gleises zur Verfügung steht kann damit auch auf das andere Ende angewandt werden.


Die Streckung der Endpunkte von Gleisen im Planfenster muss für neue Kurvenformen u.U. anders funktionieren als gehabt; etwa können für Cubics beide Tangenten konstant gehalten werden, oder kann für Cubics beim Ankuppeln des Endes die Kurvenform so angepasst werden, dass kein Knick mehr entsteht.


Die Variation der Kurvenparameter im Planfenster hat ein eigenes Symbol bekommen: einen Stab am Gleisende, der parallel zu der Richtung weist, in der der Endpunkt bei einer Variation wandert. Für den Arc wird die Länge des Gleises beibehalten, die Krümmung variiert; für die Helix bleiben die Länge und die Höhe des Endpunktes konstant, wärend Krümmung und Torsion variieren. Das Tool arbeitet nun präziser.


Die Variation der Gleislänge im Planfester über den Pfeil am Endpunkt wurde überarbeitet. Das Tool arbeitet nun präziser. Einige Kurven haben technisch bedingte Begrenzungen ihrer Länge, sie lassen sich dann ggf nur verkürzen. Die Gesamtlänge eines Gleises wurde auf 120m begrenzt. Über das Vertauschen von Anfang und Ende kann die Länge auch am Anfang eines Gleises verändert werden.


Cubics können im Planfenster aus andern Kurventypen erzeugt werden, indem man die Spitze des Endpfeiles verschiebt. Sowohl ein Ändern der Richtung der Tangente, als auch ein Verlängern des Pfeiles sind möglich, was sich auf die Form der Cubic auswirkt. Über das Vertauschen von Anfang und Ende kann das Tool auch am Anfang eines Gleises verwendet werden. Bei gehaltener Shift-Taste wird die Länge des Pfeiles auch auf den Anfang des Gleises übertragen; bei gehaltener Alt-Taste wird ein Wert automatisch berechnet.


Das Gleislücke - schliessen Feature wurde überarbeitet. Es wird jetzt eine Cubic benutzt, um die beiden offenen Punkte zu verbinden, so dass die Tangenten übereinstimmen. Es entstehen nicht mehr viele kurze Gleisstücke, sonder Cubics, die leicht weiter bearbeitet und angepasst werden können.


Der Gleiseigenschaftendialog gestattet die Kurvenform anhand expliziter Parameter zu bearbeiten, sowie die Kurventypen ineinander umzuwandeln.


Gleisüberhöhungen (Twists) sind massiv überarbeitet worden. Trotzdem sollen sie ungefähr genauso zu handhaben sein, wie bisher.


Der 2D Editor allgemein hat Änderungen an vielen Stellen erfahren, oft mit dem Ziel die alte Funktionalität zu erhalten.


Der 3D Editor allgemein hat Änderungen an vielen Stellen erfahren, oft mit dem Ziel die alte Funktionalität zu erhalten.


Das XML Anlagenformat wurde erweitert, um die neuen Kurvenformen beschreiben zu können. Drittanbier werden ihre Tools ggf anpassen wollen; dafür liegt eine Schemadefinition vor, die zukünftig angepasst und erweiterert werden soll. Sie enthält auch Dokumentation, die mit XML-Tools wie XML Notepad angezeigt werden kann.


Die Abwärtskompatibilität zu Bestandsanlagen kann zwar nicht zu 100% erreicht werden, ist aber ein erklärtes Ziel (im Sinne eines Punktes am Horizont).



Baustellen


Eine Reihe von Funktionen befinden sich zur Zeit in der Überarbeitung, bzw Anpassung und sind deshalb nicht oder nicht voll funktionsfähig. Diese Funktionen sollen beim Alphatest zunächst nicht beachtet werden:

Hinterzarten, den 19.1.2019, Marc-Michael Horstmann