Benutze immer SemaphorePos(0) / SemaphorePos(1) für Signale mit 2 Begriffen in der sigcfg.dat Datei!

Aber warum finde ich in manchen sigcfg.dat Dateien SemaphorePos(1) / SemaphorePos(2) Einträge?

  

Die in Open Rails kritischen SemaphorePos(1)- and SemaphorePos(2)-Einträge in der sigcfg.dat findet man leider unter anderem in den folgenden MSTS Strecken:

EuroTS_Ahrtal • LzSuO • PT_Berlin_Dresden_PT05 • PT_Berlin_Rostock_PT9 • PT_Berlin-Hamburg_PT04_TSP • PT_Berlin-Hannover_PT08 • PT_Karwendelbahn • PT_Nürnberg_Frankfurt_Spessartrampe_PT07 • PT_RR • VFL

 

In den original MSTS-Strecken findet man nur SemaphorePos(0) und SemaphorePos(1) in den sigcfg.dat. Dabei bezeichnen die 0 und die 1 die Frame-Indexe in der Animationssequenz der Signal-Shape-Dateien.

 

 

Animationssequenz der Signal-Shape-Datei "UKSemaphore1.s" der MSTS-Route "EUROPE1": 

                               animation ( 1 25

                                               anim_nodes ( 2

                                                               ...

                                                               anim_node HEAD1 (

                                                                              controllers ( 2

                                                                                              tcb_rot ( 3

                                                                                                              tcb_key ( 0 0 0 -0.34202 0.939693 0 0 0 0 0 )

                                                                                                              tcb_key ( 1 0 0 0 1 0 0 0 0 0 )

                                                                                                              tcb_key ( 2 0 0 -0.34202 0.939693 0 0 0 0 0 )

                                                                                              )

                                                                                              linear_pos ( 2

                                                                                                              linear_key ( 0 -0.069311 4.67425 -0.092896 )

                                                                                                              linear_key ( 2 -0.069311 4.67425 -0.092896 )

                                                                                              )

                                                                              )

UKSemaphore1.s

 

 

Animationssequenz der Signal-Shape-Datei "OESignal03.s" der MSTS-Route "EUROPE2":

                        ...

                                                                              controllers ( 2

                                                                                              tcb_rot ( 3

                                                                                                              tcb_key ( 0 0 0 0 1 0 0 0 0 0 )

                                                                                                              tcb_key ( 1 0 0 -0.382683 0.92388 0 0 0 0 0 )

                                                                                                              tcb_key ( 2 0 0 0 1 0 0 0 0 0 )

                                                                                              )

                                                                                              linear_pos ( 2

                                                                                                              linear_key ( 0 0.05937 5.80925 -0.026609 )

                                                                                                              linear_key ( 1 0.05937 5.80925 -0.026609 )

                                                                                              )

                                                                              )

OESignal03.s

 

Es fällt auf, dass die Rotations-Keys (tcb_key) 3 Frames haben, jeweils 0,1 und 2. Die Linear-Keys hingegen haben nur 2-Frames, wobei beim oberen Signal ein Linear-Key mit dem Index 2 statt mit 1 indiziert ist

Mag sein, das dies eine Unaufmerksamkeit von MSTS (Kuju) ist. Trotzdem funktionieren beide Signale unter MSTS einwandfrei wenn SemaphorePos(0) und SemaphorePos(1) in der sigcfg.dat verwendet werden.

 

 

Da die Semaphoren meist nur 2 Stellungen haben, kommt man nun als Signalbauer eventuell zu dem Schluss, auch die Anzahl der Rotations-Keys (tcb_key) auf 2 zu reduzieren. Jeweils eine der 2 Stellungen entspricht dann SemaphorePos(0) bzw. SemaphorePos(1) in der sigcfg.dat.

MSTS zeigt die Stellungen der Semaphoren bei nur-2-frame-Signalen aber nicht immer korrekt an. Eine solche Animationssequenz ... 

                               animation ( 1 25

                                               anim_nodes ( 2

                                                               ...

                                                               anim_node HEAD1 (

                                                                              controllers ( 2

                                                                                              tcb_rot ( 2

                                                                                                              tcb_key ( 0 0 0 0 1 0 0 0 0 0 )

                                                                                                              tcb_key ( 1 0 0 -0.382683 0.92388 0 0 0 0 0 )

                                                                                              )

                                                                                              linear_pos ( 2

                                                                                                              linear_key ( 0 -0.069311 4.67425 -0.092896 )

                                                                                                              linear_key ( 1 -0.069311 4.67425 -0.092896 )

                                                                                              )

                                                                              )

 

 

...hat zwar Frame 0 und Frame 1, führt aber dazu, dass die Semaphore des Signals auf dem Frame 0 "liegen bleibt", wenn das Signal geladen wird, selbst wenn die anzuzeigende Signalstellung Frame 1 "Fahrt frei" verlangt. Erst bei der Vorbeifahrt eines Zuges am Signal springt die Semaphore kurz zu Frame 1, um dann sofort wieder in die Ausgangstellung Frame 0 zurück zu gehen. (Man beachte die Signal-Lichter im Video.)

 

Dieser unschöne Effekt führte wahrscheinlich bei einigen Signalbauern dazu, ihre 2-Frame-Signale mit SemaphorePos(1) und SemaphorePos(2) statt mit SemaphorePos(0) und SemaphorePos(1) zu steuern. Denn tatsächlich funktionieren 2-frame-Signale in MSTS dann auch fast richtig, was natürlich verwirrend ist, da nun SemaphorePos(1) das Frame 0 und SemaphorePos(2) das Frame 1 setzt!.

 

(Fast richtig in MSTS nur deshalb, weil sich die Semaphoren nur dann stellen, wenn man "hinsieht". Fährt man an einem solchen Signal in der Führerstandsansicht vorbei und blickt erst nach dem Passieren des Signals zurück, steht die Semaphore immernoch auf "Fahrt frei", also Frame 1, obwohl das rote Licht "HALT" signalisiert. Die Semaphore wird dann nicht in die Ausgangslage auf Frame 0 zurückgestellt. Wenn man es ganz genau nimmt, ist dies sogar etwas realitätsnäher, denn Semaphorensignale werden erst bis zu mehreren Minuten nach dem Passieren des Zuges durch den Fahrdienstleiter auf "HALT" zurückgestellt. Dieses dann aber immer, und nicht nur wenn man hinsieht :-)

 

 

Fazit: Ideal für MSTS und OpenRails

-in der sigcfg.dat nur SemaphorePos(0) und SemaphorePos(1) verwenden

-Signal-Shapes haben immer 3 Frames (0,1,2)

 

Beispiel einer idealen Animationssequenz für MSTS und OpenRails:

 

                animations ( 1

                               animation ( 3 30

                                               anim_nodes ( 2

                                                               anim_node SIGNAL (

                                                                              controllers ( 0

                                                                              )

                                                               )

                                                               anim_node HEAD1 (

                                                                              controllers ( 2

                                                                                              tcb_rot ( 3

                                                                                                              tcb_key ( 0 0 0 0 1 0 0 0 0 0 )

                                                                                                              tcb_key ( 1 0 0 -0.34202 0.939693 0 0 0 0 0 )

                                                                                                              tcb_key ( 2 0 0 0 1 0 0 0 0 0 )

                                                                                              )

                                                                                              linear_pos ( 3

                                                                                                              linear_key ( 0 0 10.0001 -0.1 )

                                                                                                              linear_key ( 1 0 10.0001 -0.1 )

                                                                                                              linear_key ( 2 0 10.0001 -0.1 )

                                                                                              )

                                                                              )

                                                               )

                                               )

                               )

                )

 

 

 

 

Bekannte Tolleranzen in MSTS und Open Rails

-in der Zeile: "animation ( 3 30 " muss in MSTS trotz der 3 Frames keine 3 stehen. Die Zahl ist egal. Die 30 ist allerdings ein Muss. In OpenRails sind beide Zahlen egal.

-es reicht, wenn nur bei einem controller 3 Keys angegeben sind.

-die Bezeichnung der keys ist in MSTS egal, z.B. kann statt "tcb_key" kann auch "blabla" oder nur ein einzelnes beliebiges Zeichen stehen. OpenRails hingegen erwartet exakte Bezeichnungen: tcb_key, slerp_rot, linear_key, tcb_pos etc.

 

 

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

 

Schließlich sei noch der seltene Fall erwähnt, dass Semaphoren mehr als 2 Positionen signalisieren können, also mehr als 3 Frames haben. Veranschaulichungshalber habe ich ein Signal mit einer Semaphore mit 6 Phantasie-Positionen gebaut. Dieses Signal hat also 7 Frames (7 Keys - Key 1 und Key 7 sind ja wertemäßig gleich). Wenn die Semaphore diese Signals von Position 0 auf Position 6 gestellt wird, werden in MSTS alle ZwischenPositionen durchlaufen:

 

 

 

 

 

 zugehörige Animationssequenz: 

                                                               anim_node HEAD1 (

                                                                              controllers ( 2

                                                                                              tcb_rot ( 7

                                                                                                              tcb_key ( 0 0 0 0 1 0 0 0 0 0 )

                                                                                                              tcb_key ( 1 0 0 -0.382683 0.92388 0 0 0 0 0 )

                                                                                                              tcb_key ( 2 0 0 0 1 0 0 0 0 0 )

                                                                                                              tcb_key ( 3 0 0 0.382683 -0.92388 0 0 0 0 0 )

                                                                                                              tcb_key ( 4 0 0 0 1 0 0 0 0 0 )

                                                                                                              tcb_key ( 5 0 0 0.382683 0.92388 0 0 0 0 0 )

                                                                                                              tcb_key ( 6 0 0 0 1 0 0 0 0 0 )

                                                                                              )

                                                                                              linear_pos ( 7

                                                                                                              linear_key ( 0 0.05937 5.80925 -0.026037 )

                                                                                                              linear_key ( 1 0.05937 5.80925 -0.026037 )

                                                                                                              linear_key ( 2 0.05937 5.50925 -0.026037 )

                                                                                                              linear_key ( 3 0.05937 5.20925 -0.026037 )

                                                                                                              linear_key ( 4 0.05937 4.90925 -0.026037 )

                                                                                                              linear_key ( 5 0.05937 4.60925 -0.026037 )

                                                                                                              linear_key ( 6 0.05937 5.80925 -0.026037 )

                                                                                              )

                                                                              )

                                                               )