Die graphischen Elemente werden mit Hilfe von Bitmapgraphiken im dreidimensionalen Raum von „Mechanik EN57“ positioniert. Die verwendeten Graphiken kannst Du entweder aus dem umfangreichen Bestand der bereits vorhandenen Graphiken nehmen – oder selbst erstellen.
Wichtige Hinweise: Die Länge der Außenkanten aller Bitmapgraphiken muß 8 Pixel oder ein Vielfaches davon betragen – also beispielsweise 16 mal 16, 16 mal 32, 16 mal 128, 16 mal 256, 32 mal 16, 32 mal 32, 64 mal 64, 128 mal 256 etc.
Die Farbpalette ist sehr schwierig zu bestimmen, deshalb ist es empfehlenswert, für eigene Grafiken die Farbpalette aus einer vorhandenen Grafik zu übernehmen oder die eigene Grafik in die Zwischenablage zu kopieren, eine gleich große vorhandene Grafik aufzurufen, den Inhalt zu löschen und die eigene Grafik aus der Zwischenablage in die Originalgrafik zu kopieren: abspeichern und dann klappt es mit der Farbpalette.
Der dreidimensionale Raum wird im Programm durch die Achsen x, y und z definiert:
Die x-Achse läuft von links nach rechts; ihr Nullpunkt befindet sich in der Mitte des Triebfahrzeuges.
Die y-Achse läuft von oben nach unten; ihr Nullpunkt befindet sich in Augenhöhe des Triebfahrzeugführers.
Die z-Achse läuft in Fahrtrichtung; der Nullpunkt ist der augenblickliche Standort des Fahrzeugs.
Im Maßstab entsprechen 200 Pixel einem Meter in der Natur, d.h. 2 Pixel sind 1 Zentimeter und 100000 Pixel sind 500 Meter.
Weil die Fensteranordnung der Fahrerkabine in dieser Programmversion zur Zeit nicht verändert werden kann, gelten folgende Voraussetzungen: der Triebfahrzeugführer sitzt rechts, etwa 75 cm von der Fahrzeugmitte entfernt – der Nullpunkt der x-Achse ist also um 150 Pixel nach links verschoben.
Die Gleisgraphiken im Originalprogramm und in den zu „Mechanik de Luxe“ gehörenden Modulen sind 32 mal 32 Pixel groß. Sie müssen mit dem Faktor 25 vergrößert werden: 800 mal 800 Pixel = 4 mal 4 Meter – eine geringere Vergrößerung ist nicht möglich, beziehungsweise nicht zu empfehlen, da sonst der Lichtraumabstand zu gering ist.
Diese Gleisgraphiken weisen leider einen Fehler auf: sie haben einen Schienenabstand von 15 Pixeln; das bedeutet, daß die Spurweite bei einer Vergrößerung um den Faktor 25 genau 44 cm zu groß ist. Die in den folgenden Beispielen verwendeten Gleisgraphiken habe ich deshalb für mein Projekt „S-Bahn Berlin“ verändert: sie haben nur einen Schienenabstand von 12 Pixeln – was einer Spurweite von 1500 mm entspricht; sie ist also nur noch 6,5 cm zu breit.
Originalgraphik |
angepaßte Graphik |
Originalgraphik |
angepaßte Graphik |
Für dieses Beispiel werden zwei Graphiken verwendet, die in der tekstury.dat folgendermaßen definiert wurden:
1 gleis1.bmp 30 testpic.bmp
gleis1.bmp |
testpic.bmp |
Wenn die hier abgebildeten Bitmapgraphiken für eigene Experimente verwendet werden sollen, müssen sie vorher vom JPEG- in das BMP-Format umgewandelt werden.
Die Eckpunkte der Graphiken werden, beginnend mit der linken unteren Ecke, im Uhrzeigersinn gezählt:
links unten = x1, y1, z1;
links oben = x2, y2, z2;
rechts oben = x3, y3, z3;
rechts unten = x4, y4, z4.
Der Vergrößerungsfaktor (dlugosz) gibt an, wie oft die Bitmapgraphik vergrößert wird. Wenn eine Graphik von 32 mal 64 Pixel nicht vergrößert wird, nimmt sie auch die gleiche Fläche ein, bei einem Vergrößerungsfaktor von 2 müssen 64 mal 128 Pixel und bei einem Vergrößerungsfaktor von 3 müssen 96 mal 192 Pixel als benötigte Fläche vorgesehen werden.
Ist die durch die Werte von x1,y1,z1 bis x4,y4,z4 definierte Fläche kleiner oder größer als die benötigte Fläche, schneidet das Programm einen Teil der Bitmapgraphik ab oder wiederholt einen Teil der Graphik um die Fläche aufzufüllen.
Dabei besteht die für das Beispiel verwendete trasa.dat nur aus den folgenden 5 Zeilen:
wand links
#t | km | ile | x1 | y1 | z1 | x2 | y2 | |
#t | 000000 | 4 | -550 | 400 | 3000 | -550 | -240 | |
z2 | x3 | y3 | z3 | x4 | y4 | z4 | x5 | |
3000 | -550 | -240 | 4280 | -550 | 400 | 4280 | 0 | |
y5 | z5 | x6 | y6 | z6 | x7 | y7 | z7 | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
nr_0 | m_v | m_u | dlugosz | nr_t | JAKOSC | nr_konca | ||
1 | 1 | 1 | 20 | 30 | 4 | 9 |
querwand links
#t | km | ile | x1 | y1 | z1 | x2 | y2 | |
#t | 000000 | 4 | -550 | 400 | 3000 | -550 | -240 | |
z2 | x3 | y3 | z3 | x4 | y4 | z4 | x5 | |
3000 | -1830 | -240 | 3000 | -1830 | 400 | 3000 | 0 | |
y5 | z5 | x6 | y6 | z6 | x7 | y7 | z7 | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
nr_0 | m_v | m_u | dlugosz | nr_t | JAKOSC | nr_konca | ||
1 | 1 | 1 | 20 | 30 | 4 | 6 |
gleis
#t | km | ile | x1 | y1 | z1 | x2 | y2 | |
#t | 000000 | 4 | -550 | 400 | 0 | -550 | 400 | |
z2 | x3 | y3 | z3 | x4 | y4 | z4 | x5 | |
100000 | 250 | 400 | 100000 | 250 | 400 | 0 | 0 | |
y5 | z5 | x6 | y6 | z6 | x7 | y7 | z7 | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
nr_0 | m_v | m_u | dlugosz | nr_t | nr_konca | |||
1 | 1 | 1 | 25 | 1 | 6 |
wand rechts
#t | km | ile | x1 | y1 | z1 | x2 | y2 | |
#t | 000000 | 4 | 250 | 400 | 4280 | 250 | -240 | |
z2 | x3 | y3 | z3 | x4 | y4 | z4 | x5 | |
42800 | 250 | -240 | 3000 | 250 | 400 | 3000 | 0 | |
y5 | z5 | x6 | y6 | z6 | x7 | y7 | z7 | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
nr_0 | m_v | m_u | dlugosz | nr_t | JAKOSC | nr_konca | ||
1 | 1 | 1 | 20 | 30 | 4 | 6 |
querwand rechts
#t | km | ile | x1 | y1 | z1 | x2 | y2 | |
#t | 000000 | 4 | 250 | 400 | 3000 | 250 | -240 | |
z2 | x3 | y3 | z3 | x4 | y4 | z4 | x5 | |
3000 | 1530 | -240 | 3000 | 1530 | 400 | 3000 | 0 | |
y5 | z5 | x6 | y6 | z6 | x7 | y7 | z7 | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
nr_0 | m_v | m_u | dlugosz | nr_t | JAKOSC | nr_konca | ||
1 | 1 | 1 | 20 | 30 | 4 | 6 |
Die trasa.dat ist eine reine Textdatei, deren einzelne Zeilen jeweils mit 〈crlf〉 abgeschlossen werden. Zeilen, die nicht mit einer Objektidentifizierung (#t, #t_p, 'sem, 'o etc.) beginnen, werden vom Programm ignoriert – sie können zur Kommentierung verwendet werden. Die einzelnen Werte werden voneinander durch Zwischenräume getrennt – zur besseren Übersichtlichkeit dürfen auch Tabulatoren verwendet werden.
Wenn das Programm mit dieser trasa.dat gestartet wird, zeigt der Blick aus dem Führerstand des abfahrbereiten Triebwagenzuges EN57 diese Streckenansicht:
Ein paar kleine Änderungen in der Streckendatei (trasa.dat) haben bedeutende Auswirkungen. So sind im folgenden Beispiel für die linke Querwand nur die Werte von x1,y1,z1 und x4,y4,z4 sowie von x2,y2,z2 und x3,y3,z3 vertauscht worden, d.h. x1,y1,z1 steht rechts unten und die Werte werden entgegen dem Uhrzeigersinn gezählt.
Außerdem wurde bei der rechten Querwand der Vergrößerungswert von 20 auf 10 herabgesetzt: das Programm füllt deshalb die vorgesehene Fläche jeweils zweimal mit der Bitmapgraphik aus.