Überarbeitung Schienendarstellung

  • Moin, ich habe da eine Idee im Kopf bezüglich der anstehenden Überarbeitung der Gleisdarstellung im Loksim.


    Mir schwebt da folgendes vor: In einer Rail-Datei kann zusätzlich ein Schienenprofil ausgewählt werden, welches dann dargestellt wird anstelle der bisherigen Schienen mit rechteckigem Querschnitt. Die Schienenprofile sollten standardisiert in einem eigenen Ordner (bspw. \Rails\Profile\) im eigenen Dateiformat abgelegt sein, wobei zwar jeder auch eigene Profile erstellen kann, die Verwaltung aber, weil die Profile ja genormt sind, durch das Entwickler-Team geschehen sollte und möglichst viele Profile bereits mitgeliefert werden. In der Schienenprofil-Datei soll grundsätzlich nur der Querschnitt und die Texturen (ggf mehrere für neu, stark/schwach befahren, unbefahren, ...) angegeben werden, dabei einmal die "Highend-Variante", also die wirkliche Form mit Fuß, Steg und Kopf, ggf. Rille und eine "Low-Variante", ein rechteckiger Querschnitt, der in Höhe der gesamten Schiene und in Breite dem Kopf entspricht. Jeweils muss dann die Innenflanke (als Punkt auf der X-Achse) definiert werden, damit die Spurweite und die Seite der Schiene später richtig dargestellt wird. Die "High-Variante" soll dann nur dargestellt werden, wenn dies in den Optionen ausgewählt wurde.


    Wie bereits erwähnt wird dieses Schienenprofil dann im Rail verknüpft, erfolgt keine Verknüpfung, erfolgt die Darstellung wie bisher. Die Bettung wird weiterhin im Rail definiert.


    Für Rückfragen stehe ich gerne zur Verfügung.


    Gruß, Klaus

  • Hm, interessant.


    Ich hatte zwischenzeitlich mal die Idee, das ganze auf einer Nullrail mit Objekten darzustellen. Bin aber bisher noch nicht dazu gekommen.


    Aber zum Vorschlag: Bettung über Rail ist m.E. in Ordnung, die Schwellenlage wäre aber vielleicht auch eine zusätzliche Komplikation (im Sinne von: https://de.wikipedia.org/wiki/Komplikation_%28Uhrwerk%29).


    Gruss
    Uwe

    --
    Wenn du die Götter zum Lachen bringen willst, mach’ einen Plan.

  • Hallo Uwe,


    über die Schwellen hatten ich schon nachgedacht. Diese könnten als einzelnes L3D-Objekt abgelegt werden und im Rail das Objekt und deren Abstand (Standard 60cm?) festgelegt werden. Die Frage ist, wieviel Performance ein sich so oft wiederholendes Objekt frisst.


    Was mir auch dabei noch einfällt ist die Frage nach der Darstellung des Kleineisens, wenn der Schienenfuß in 3D ausgeformt dargestellt wird, dieses müsste dann über den Fuß greifen.


    Gleise sind in dem Zusammenhang doch eine recht komplexe Sache, der diverse Parameter zugrunde liegen. Zum Beispiel sind die Schienen normalerweise um 1:40 nach innen geneigt, bei Straßenbahnen (auch U-Bahnen) jedoch nicht. Allerdings ist das Gleis auch der Teil der Simulation, den man dauerhaft sieht. Da sollten wir tatsächlich mal überlegen, welcher Detaillierungsgrad angemessen ist, eine Ausformung der Schienenprofile gehört bei der Überarbeitung meiner Auffassung nach aber schon dazu.


    Gruß, Klaus

  • Hallo Klaus,


    ich habe zwischenzeitlich das Experiment gewagt. Einen Performanceeinbruch konnte ich jetzt so nicht feststellen. Ich denke auch, bei einer Umstellung der Graphikengine wird die Performance auch besser.


    Gruss
    Uwe

    --
    Wenn du die Götter zum Lachen bringen willst, mach’ einen Plan.

  • Hallo,


    das sind ja interessante Ansätze.
    Bei einer Überarbeitung der Schienen sollten aber auch die Weichen nicht vergessen werden. Ich hatte mir letzte Woche ein rail entwickelt mit Schienenfuss und Kleineisen. Als es dann über die erste Weiche ging, war alles auseinandergezerrt. Und bei der rail-Überarbeitung sollte man unbedingt mal geringere Längen als 10m angehen.


    Gruß
    Rainer

  • Hallo,
    die Idee von vordefinierten Profile finde ich prinzipiell recht gut.
    Allerdings gilt auch hier das geschriebene zum Thema Komplexität der Gleisgenerierung:
    http://www.loksimulatoren.de/i…m/?postID=96847#post96847


    Ich habe bei meiner Überarbeitung zB schon nachgedacht, einfach mal "nur" die bestehenden Gleise um 3D-Schwellen zu erweitern. Habe es dann am Ende auch wieder sein lassen, da auch dies schwierig ins bestehende System zu integrieren ist. Mit einer "Standardschwelle" kommt man nicht weit, da es Weichen gibt. Ohne Weichen wäre eigentlich alles einfach ;)


    Über die Performance muss man glaube ich schon nachdenken, denn schon jetzt sind Gleise ziemlich komplexe 3D-Objekte. Da kann es von Vorteil sein, wenn auch in Zukunft sehr viel vom Programm selbst generiert wird und keine beliebigen 3D-Objekte in Gleise eingebunden werden. Denn dann kann man im Programm theoretisch verdammt viel optimieren (LOD, Generierung der Gleise auf der Graphikkarte selbst,...).


    Alles in allem gilt aber immer noch: Gleisgenerierung sehr komplex, fürs erste hat mal anderes Vorrang. Martin hat aber auch Interesse angemeldet sich in Zukunft in diesem Bereich etwas austoben zu wollen :) Dann geht es eventuell schneller wie gedacht, wenn nicht alles davon abhängig ist wie lange ich noch für die neue Graphikengine brauche


    lg
    Lukas

  • Hallo,


    Bei einer Überarbeitung der Schienen sollten aber auch die Weichen nicht vergessen werden. Ich hatte mir letzte Woche ein rail entwickelt mit Schienenfuss und Kleineisen. Als es dann über die erste Weiche ging, war alles auseinandergezerrt.


    Wenn man Schwellen und Kleineisen getrennt darstellt, was ja jetzt leider noch nicht möglich ist, da alles zusammen auf der Bettungstextur landet, sollte das möglich sein, dieses Problem zu umgehen, in dem die Schwelle an sich einfach in den Weichen in die Breite gestreckt wird und das Kleineisen weiterhin entlang der Schienen an den Schwellenpositionen eingebunden wird. Wie dem Programm dann erklärt wird, wie die Schwelle auszusehen hat, ist dann ja scheinbar noch zu klären. Auch hier kann eigentlich nicht die einfache Quader-Form der altbewährten Holzschwellen angenommen werden, heute gibt es da vielfach andere Formen bei Biblock- oder auch Monoblick-Betonschwellen, ganz zu schweigen von Y-Stahlschwellen.



    Und bei der rail-Überarbeitung sollte man unbedingt mal geringere Längen als 10m angehen.


    Ich gehe davon aus, dass das Konsens ist, daher sprach ich das nicht mehr an. Ich hatte, so glaube ich, irgendwem schon mal den Vorschlag der "flexiblen Gleislänge" unterbreitet, bei der die Stücke entsprechen der Radien angelegt werden. Bei einem Radius von ∞ (Gerade) wäre das Gleisstück so lang wie das Gleis mit entsprechender Anzahl der Wiederholungen der Textur, in Bögen würden die Gleisstücke individuell dem Radius angepasst, so dass bspw. zwischen zwei Gleisstücken immer ein Winkel von 1° (ist nur ein Beispielwert) liegt, also in engen Bögen kürzere Stücke zur Anwendung kommen. Allerdings kann ich natürlich den Programmieraufwand dafür nicht einschätzen. Ich habe jetzt spontan auch keine Ahnung, wie sich andere Simulatoren im Bezug auf enge Bögen verhalten, bei Loksim liegt die "Kotzgrenze" in etwa bei einem Radius 100m (bzw. leicht darüber)



    Über die Performance muss man glaube ich schon nachdenken, denn schon jetzt sind Gleise ziemlich komplexe 3D-Objekte. Da kann es von Vorteil sein, wenn auch in Zukunft sehr viel vom Programm selbst generiert wird und keine beliebigen 3D-Objekte in Gleise eingebunden werden. Denn dann kann man im Programm theoretisch verdammt viel optimieren (LOD, Generierung der Gleise auf der Graphikkarte selbst,...).


    Ich denke, das sollte einfacher möglich sein, wenn man die Schienen ähnlich wie die Rails nur über ein Profil und die Texturen (pro Fläche allerdings sollte ein Texturbereich auswählbar sein - und die Anzahl der Flächen ist ja vom Profilabhängig!) definiert.


    Ein Freund von mir ist Gleisbauer, ich habe ihn bereits auf meine Idee angesprochen und gebeten, schon mal ein paar gängige Schienenprofile zu besorgen, soweit man diese nicht auch im Netz findet. Ich würde auch die Erstellung der Profile übernehmen. Ich denke, wir sollten da erstmal mit den gängigsten anfangen und können dann immer noch erweitern. S41, S49, S54, UIC60 und Ri60 hatte ich da erstmal im Auge, später dann auch kleinere Profile für Schmalspurbahnen (In diesem Bereich hat Loksim aber aufgrund der engen Radien ja leider noch Probleme).


    Mir kommt da auch gerade noch die Idee, dass man das Profil auch unabhängig vom Rail in der Streckendatei auf dem Gleis slbst auswählen könnte und das Rail dann nur noch als Bettung, Schwellen, Kleineisen dient, hier könnte dann sogar zusammen mit dem Profil die Spurweite festgelegt werden und das Kleineisen in der Bettung entsprechend angepasst dargestellt werden. In jedem Fall muss aber dafür gesorgt werden, dass bei einem Schienenprofilwechsel auf einem Gleis die Stirnflächen dargestellt werden, damit man nicht durch die Schiene durch sehen kann (wie das jetzt in bestimmten Fällen ist).


    Gruß, Klaus

  • Hallo Zusammen,


    ich bin dann mal so frei, Euch endgültig zu verwirren. ;-)


    Also Schienenprofil, Kleineisen, Schwellen und Bettung gehören zusammen und bilden ein System. Dieses System auseinander zureissen halte ich für kontraproduktiv. Damit haben wir jetzt vier Einzelkomponeten:


      [li]Bettung[/li]
      [li]Schwellen[/li]
      [li]Kleineisen[/li]
      [li]Schiene[/li]


    Diese können auf einer Linie relativ einfach dargestellt werden.
    Bei einer Weiche wird es dann schwierig, denn dort werden andere Schwellen, andere Kleineisen und weiteres Zubehör verwendet. Das Programtechnisch aus den vier obigen Komponeten herzustellen, stelle ich mir nahezu unmöglich vor.


    Ich stelle mir da einen anderen Weg vor:
    Da eine Weiche beim Vorbild gut definiert ist, sollte das für Loksim übernommen werden. Damit ist die Lage der Einzelteile weitgehend festgelegt. Für den Loksim könnten das heißen, das für jeden Weichentyp genau ein Loksimobjekt exisitiert, indem die entsprechenden Positionen der Einzelteile festliegt, sodas es möglich ist, die Weiche einzubauen und diese falls erforderlich entsprechend zu krümmen.


    Das ganze erfordert allerdings einen größeren Umbau der Gleisdarstellung, womit wir wieder beim Anfang wären.


    Gruss
    Uwe

    --
    Wenn du die Götter zum Lachen bringen willst, mach’ einen Plan.

  • Hallo Uwe,


    auch ich sehe es so, dass die Weichen vordefiniert werden. Da eine Weiche aber auch aus unterschiedlichen Schwellen, Kleineisen oder Schienenprofilen bestehen kann oder auch in unterschiedlichen Spurweiten ausgeführt werden kann (nur die Gleismitten sind m.W. in der Geometrie fest!), sollten diese irgendwo vordefiniert werden und dann in einer Dropdownliste aufgeführt werden, sodass man die Geometrie beim Einbau von Weichen festlegen kann. Der ganze Rest kommt wieder aus dem Rail/Profil (mit Ausnahme der Radlenker, glaube ich) und wird entsprechend dargestellt. Und da gibt es dann ja schon diverse Kombinationen:


    1. EW, DW (evtl. aus 2 EW darstellbar), IBW, ABW (beide vermutlich aus Bogen des Stammgleises generierbar), Kr, BKr, EKW, DKW, EBKW, DBKW
    2. Schienenform (kommt aus Rail)
    3. Radius (wird dann dort ausgewählt)
    4. Neigungsverhältnis (wird ebenfalls beim Einbau ausgewählt)
    5. Abzweigrichtung (wird auch bisher schon ausgewählt)
    6. Schwellen (aus Rail)
    7. Zunge (Gelenk-, Feder-, Federschienenzunge, siehe https://de.wikipedia.org/wiki/…Bahn%29#Zungenvorrichtung)
    8. Herzstück (unbeweglich oder beweglich?)


    Aus all diesen Parametern muss der Loksim dann die richtige Darstellung auswählen. Die Berechnung der Gleismittenverläufe bei Kreisbogenweichen ist ja noch relativ einfach, bei Klothoidenweichen wird es dann schon lustiger, ich hab da irgendwo letztens was zu gehabt, mal schauen, ob ich das wieder finde.


    Gruß, Klaus

  • Hallo,
    nur ein kurzer Einwurf: Wer "definiert" in der Realität zB Weichen? Die DB? Oder sogar EU-weit?
    Ich würde es ehrlich gesagt nur ungern sehen, wenn wir dann plötzlich ein Gleissystem hätten, dass zB bei anderen Spurweiten nicht mehr funktioniert oder bei Vorbildern von anderen Kontinenten. Ich glaube solche vordefinierten Einheiten wären also nur eine zusätzliche Möglichkeit, ein neues System sollte mE aber keinesfalls eingeschränkter sein wie das derzeitige. Zumindest nicht generell, dass aufgrund der langfristen Entwicklung zuerst nur ein Subset des derzeitigen Systems gibt, halte ich für fast unumgänglich in einem Freizeitprojekt


    Wie gesagt, das ganze ist komplexer als es im ersten Moment klingt. Und es klingt mE schon recht komplex am Anfang ;)


    lg
    Lukas

  • Hallo Lukas,



    nur ein kurzer Einwurf: Wer "definiert" in der Realität zB Weichen? Die DB? Oder sogar EU-weit?


    Nach meinem Kenntnisstand sind Weichen durch ihre Parameter generell einheitlich festgelegt. Die für die Ermittlung der Gleismittenverläufe relevanten Werte sind ohnehin nur Radius, Neigungsverhältnis und Abzweigrichtung. Durch die Auswahl von Radius und Neigungsverhältnis ergeben sich dann andere Parameter wie die Weichenlänge und der Abzweigwinkel. Genauer gesagt: Das Neigungsverhältnis ist ja der Tangens des Abzweigwinkels am Weichenende, dessen Abstand von den Zungenspitzen dann durch den Radius gegeben wird. An der Zungenspitze wird ein Kreis mit dem gegebenen Radius tangential zur Stammgleismitte angesetzt, an der Stelle, an der der Winkel zwischen einer weiteren Tangente ("Endtangente") am Kreis und der Stammgleismitte dem Abzweigwinkel entspricht, ist dann das Weichenende. Vergrößere ich den Abzweigwinkel bei gleichem Radius, wird die Weiche länger. So zumindest bei Kreisbogenweichen.


    [Blockierte Grafik: http://www.veb-verkehr.de/bilder/Weiche.PNG]


    Der tatsächliche Verlauf des Zweiggleises liegt auf dem blauen Kreissegment.


    Die für höhere Geschwindigkeiten im Zweiggleis eingesetzten Klothoidenweichen (oder auch Korbbogenweichen), bei denen sich kontinuierlich ändernde Radien im Zweiggleis (oder mehrere immer kleiner werden Radien nacheinander) trassiert werden, sind da schon schwieriger zu berechnen. Da müsste ich auch nochmal nachschauen, wie sich aus der Bezeichnung der genaue Verlauf ableiten lässt.


    Gruß, Klaus

  • Hallo,
    ah so war das gemeint. Ich hatte gedacht Ihr meint, dass wir mit einer bestimmten Anzahl an fix definierten Weichenobjekten auskommen wo zB nur die Textur oder kleinere Einzelteile ausgetauscht werden.
    Was wäre dann bzgl. Weichenberechnung der große Unterschied zu jetzt? Die Weichen werden schon jetzt anhand von Kreisbögen berechnet. Natürlich würde man bei einer Überarbeitung versuchen die bekannten Einschränkungen, zB kleine Radien, versuchen wegzubekommen.
    Klothoiden wären auch schön, schon zu lange her um hier ohne Recherche vernünftig was dazu sagen zu können ;)



    Ich hatte, so glaube ich, irgendwem schon mal den Vorschlag der "flexiblen Gleislänge" unterbreitet, bei der die Stücke entsprechen der Radien angelegt werden. Bei einem Radius von ∞ (Gerade) wäre das Gleisstück so lang wie das Gleis mit entsprechender Anzahl der Wiederholungen der Textur, in Bögen würden die Gleisstücke individuell dem Radius angepasst, so dass bspw. zwischen zwei Gleisstücken immer ein Winkel von 1° (ist nur ein Beispielwert) liegt, also in engen Bögen kürzere Stücke zur Anwendung kommen.


    Nur so nebenbei erwähnt: Die Anpassung der "Gleisstücke" ist schon vom Radius abhängig. Ansonsten wären auch Kurven mit großen Radien nicht wirklich rund, sondern verdammt eckig. Nur erfolgt derzeit die Positionierung/Erzeugung dieser Stücke in einem 10m Raster, was das Leben ungemein erleichtert.


    lg
    Lukas

  • Hallo Lukas,



    Was wäre dann bzgl. Weichenberechnung der große Unterschied zu jetzt? Die Weichen werden schon jetzt anhand von Kreisbögen berechnet. Natürlich würde man bei einer Überarbeitung versuchen die bekannten Einschränkungen, zB kleine Radien, versuchen wegzubekommen.


    Der Unterschied zu jetzt wäre, dass nicht nur der Winkel der Endtangente, sondern auch der Radius angegeben wird. Es gibt Standardweichen mit gleicher Endtangente, die einen unterschiedlichen Radius und damit auch eine unterschiedliche Entwicklungslänge haben, diese unterschiedlich im Loksim darzustellen ist derzeit nicht möglich (Bsp: EW-190-1:9 mit geradem Herzstück und EW-300-1:9 mit gebogenem Herzstück, weil Weichenende erst dahinter liegt)
    Außerdem stimmt ja auch das Überfahrverhalten aus der Führerstandsansicht nicht richtig. Dazu sind aber auch Parameter aus dem Fahrzeug selbst (Achsen-/Drehzapfenpositionen) notwendig.
    Für Bogenweichen gibt es da noch spezielle Festlegungen. Diese werden aus einfachen Weichen gebogen, wobei, glaube ich mich zu erinnern, das Neigungsverhältnis am Weichenende erhalten bleibt. Aus einer EW-500-1:12 wird beispielsweise durch Biegung zu einer Innenbogenweiche eine IBW-500-1:12 oder eine Außenbogenweiche ABW-500-1:12, wobei hier die Bezeichnung weder den Stammgleis- noch den Zweiggleisradius angibt! Dieser lässt sich aber berechnen:


    IBW: 1/Zweiggleisradius = 1/Radius der Grundform + 1/Stammgleisradius
    Der Radius der Grundform wiederum ist durch die o.g. Angabe bekannt (500), der Stammgleisradius ergibt sich aus dem Radius des Gleises, von dem die Weiche abzweigt an der Weichenposition im Streckeneditor. Setzen wir dafür bspw. 650m ein, liegt der Zweiggleisradius bei etwa 283m. Der Abzweigwinkel an der Endtangente liegt trotzdem bei 4,76°, allerdings ist das Weichenende nicht mehr so einfach durch "Hinsehen" erkennbar, da der Bogen ja darüber hinaus weiter geführt wird.


    ABW: 1/Zweiggleisradius = 1/Radius der Grundform - 1/Stammgleisradius
    Beispiel Stammgleisradius 1500m nach links, Zweiggleisradius 750m nach rechts.


    Es gibt natürlich auch Grenzwerte, wie weit Weichen gebogen werden können, das würde ich aber nicht näher ausführen wollen und in der Hand der Streckenbauer lassen, eine passende Grundform auszuwählen. Auswahlkriterien könnte ich zu gegebener Zeit in die Doku aufnehmen.



    Nur so nebenbei erwähnt: Die Anpassung der "Gleisstücke" ist schon vom Radius abhängig. Ansonsten wären auch Kurven mit großen Radien nicht wirklich rund, sondern verdammt eckig. Nur erfolgt derzeit die Positionierung/Erzeugung dieser Stücke in einem 10m Raster, was das Leben ungemein erleichtert.


    Für enge Bögen müsste die Positionierung eben in einem deutlich kleineren Raster geschehen. Bis hinunter zu einem Bogenradius von 20m, der so auch in Deutschland bei Straßenbahnen vorkommt, sollte die Darstellung schon ohne Lücken und Sprünge erfolgen. Auch hier liegt das Problem ja nicht nur in der Darstellung sondern eben auch im Überfahrverhalten, dort habe ich dann ja auch Sprünge statt den im Editor festgelegten Bogen.


    Gruß, Klaus

  • Hallo Klaus,
    danke für die Ausführungen. Ich glaube ich verstehe es jetzt besser, aber ohne intensive Beschäftigung damit traue ich mich nicht viel zu sagen ;)


    lg
    Lukas