Home
- POV-Ray Tutorial
- Modelleisenbahn u.
Eisenbahn-Modelle
mit POV-Ray
Inhaltsverzeichnis
- Mein Rail Track System
für POV-Ray
Gleis Elemente
- Geraden & Kurven
- Weichen
- Y- u. 3Wege-Weichen
- Kreuzungen
- Vereinfachte Anwendung
mit RT_System_00.inc
- Gleis Elemente
mit RT_System_00.inc
- An Modell-Maßstäbe
angepaßte Gleiselemente
- H0 Scale Gleise
- N Scale Gleise
- Z Scale Gleise
- Gleisplan-Design mit
skalierten Gleisen
- Verlegen von Gleisen
> Gleise rauf u. runter
- Gleisplan-Design Beispiele
- Einfach zyklisch
- Einfacher Achter
- Download
Rail Track System
|
|
Gleisplan-Design mit skalierten Gleisen
Gleise rauf u. runter
|
Demonstration mit Spur N Gleissystem von Geometrie Typ A:
1) Geraden und Kurven rauf u. runter
Gleise rauf u. runter durch Scherung mit dem Makro
Track_Up_00("NAME",STEP,GRADIENT_TYPE)
Hier:
NAME der Name des Gleiselements das geschert werden soll:
z.B.: T_222, T_115, T_111, T_107, T_058, T_055, T_028,
T_R1_45, T_R1_30, T_R1_15, T_R2_45, T_R2_30, ...
STEP der Wert der Höhendifferenz in Meter für Spur N Gleise.
GRADIENT_TYPE:
0 für einfach aufwärts (oder abwärts, falls negativer STEP)
1 für unterteiltes Anfangs-Aufwärts mit weichen Übergang (nur für T_222, T_115, T_111, T_107,
und Kurven der Winkel 45°, 30° und 15!.)
2 für unterteiltes End-Aufwärts mit weichen Übergang (nur für T_222, T_115, T_111, T_107,
und Kurven der Winkel 45°, 30° und 15!.)
Anmerkung: Die Verwendung einer Scherung anstelle einer Rotation ist
aus geometrischer Sicht natürlich nicht ganz genau.
Die senkrechte Projektion eines nach oben gedrehten Gleises auf die Grundebenen ist kürzer als das Gleis selbst (Pythagoras!)!
Aber diese Vereinfachung macht das Designen von Gleisplänen dramatisch einfacher, da man nicht irgendwelche veränderten Längen
berechnen muß.
Und für geringe Steigungen ist der Unterschied meistens kleiner als die Toleranz, welche man
bei wirklichen Modellbahngleisen hat.
//----------------------------------------------//
#local Step_1 = 0.02;
object{ Track_Up_00("T_111",Step_1,0)
translate<0*L111,0*Step_1*N,0>}
object{ Track_Up_00("T_111",Step_1,0)
translate<1*L111,1*Step_1*N,0>}
//----------------------------------------------// |
Harter und weicher Übergang:
Wenn man Steigungen mit scharfen Knicks am Anfang und am Steigungsende
macht, so ist dies nicht nur eine ästhetisch suboptimale Lösung,
es wird auch bei den Modellbahnzügen schwere Probleme hervorrufen.
Um dies bei POV-Ray-Gleisplänen zu vermeiden, kann man die Unterteilung
GRADIENT_TYPE 1 (start) und 2 (end of gradient)
mit ~ 1/2 der sonst verwendeten Steigung STEP verwenden.
//----------------------------------------------//
#local Step_1 = 0.0225;
object{ Track_Up_00("T_111", Step_1/2, 1)
translate<0*L111,0.0*Step_1*N,0>}
object{ Track_Up_00("T_111", Step_1 , 0)
translate<1*L111,0.5*Step_1*N,0>}
object{ Track_Up_00("T_111", Step_1/2, 2)
translate<2*L111,1.5*Step_1*N,0>}
//----------------------------------------------// |
|
Gleise geschert mit dem Makro
Track_Up_00("NAME",STEP,GRADIENT_TYPE)
|
Harter und weicher Übergang
|
|
2) Kurven rauf und runter.
Spezielles Problem dabei:
Es gibt keine Funktion in POV-Ray die ein Objekt spiralförmig verdreht!
Daher kann man keinen weichen Übergang für beide Schienen durch Rotieren und/oder Scherung der Gleise erhalten.
Lösung: Man kann die Kurvenelemente unterteilen um die Abweichung zu minimieren!
Anmerkung: Dies ist nur relevant bei den POV-Ray-Darstellungen von Steigungen in Kurven!
Wirkliche Modellbahngleise machen hier normalerweise keine Probleme!
Anstatt:
//----------------------------------------------//
object{ Track_Up_00("T_L1_45",Step_1,0)
Rotate_Around_Trans(<0,-0*45,0>,<0,0,R1>)
translate<0,0*Step_1*N,0>}
object{ Track_Up_00("T_L1_45",Step_1,0)
Rotate_Around_Trans(<0,-1*45,0>,<0,0,R1>)
translate<0,1*Step_1*N,0>}
//----------------------------------------------// |
Besser: Using curves splitted in smaller angles:
//----------------------------------------------//
object{ Track_Up_00("T_L1_15",Step_1,0)
Rotate_Around_Trans(<0,-0*15,0>,<0,0,R1>)
translate<0,0*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
Rotate_Around_Trans(<0,-1*15,0>,<0,0,R1>)
translate<0,1*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
Rotate_Around_Trans(<0,-2*15,0>,<0,0,R1>)
translate<0,2*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
Rotate_Around_Trans(<0,-3*15,0>,<0,0,R1>)
translate<0,3*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
Rotate_Around_Trans(<0,-4*15,0>,<0,0,R1>)
translate<0,4*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
Rotate_Around_Trans(<0,-5*15,0>,<0,0,R1>)
translate<0,5*Step_1*N,0>}
//----------------------------------------------// |
Anmerkung: Unterteilte Kurvengleise (GRADIENT_TYPE 1 oder 2)
gibtes nur bei den Kurvenwinkeln 45°, 30° und 15°.
Unterteilte gerade Gleise gibt es nur für die Geraden T_222, T_115, T_111, and T_105.
Für den weichesten Übergang in Kurven sollte man nur die 15°-Segmente von Kurven hierbei verwenden!
Für gebogene Gleise benötigt man oft eine Drehung des Gleises um einem Winkel um ein Rotationszentrum
unter Verwendung des Makros 'Rotate_Around_Trans( RotationVector, Center_of_Rotation )' aus der
Include-Datei 'transforms.inc'.
Man kann den langen Befehl
'Rotate_Around_Trans(<0, 1*15,0>,<0,0,-R1>)'
durch den kürzeren Ausdruck ersetzen,
wie etwa 'RTyz( 1*15, -R1 )'
indem man das folgende Makro deklariert:
//-----------------------------------------------//
#include "transforms.inc"
#macro RTyz( Y_Angle, Z_Distance )
Rotate_Around_Trans(<0,Y_Angle,0>,<0,0,Z_Distance>)
#end
//-----------------------------------------------// |
Damit wird obiger Text wesentlich kürzer:
//----------------------------------------------//
object{ Track_Up_00("T_L1_15",Step_1,0)
RTyz(-0*15,R1) translate<0,0*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
RTyz(-1*15,R1) translate<0,1*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
RTyz(-2*15,R1) translate<0,2*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
RTyz(-3*15,R1) translate<0,3*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
RTyz(-4*15,R1) translate<0,4*Step_1*N,0>}
object{ Track_Up_00("T_L1_15",Step_1,0)
RTyz(-5*15,R1) translate<0,5*Step_1*N,0>}
//----------------------------------------------// |
|
Kurvengleise geschraubt mittels Scherung in y - ohne weichen Übergang
|
Kurvengleise geschraubt mittels Scherung in y - mit weichem Übergang
|
Kurvengleise geschraubt mittels Scherung in y - mit weichem Übergang
|
|
2) Weichen und andere Gleiselemente rauf und runter.
Mit Weichen und Kreuzungen kann man 'Track_Up_00(...)' nicht verwenden!
Für solche Gleiselemente benötigt man direkt die Scherung mittels Matrix von POV-Ray.
Dies kann durch das folgende Makro vereinfacht werden,
welches ein Element der x-Länge 'Shear_Len' schert
um eine Schritthöhe von 'Step_Up'('+' oder '-' in Spur-N-Werten in Meter) in y-Richtung:
#macro Shear_Up(Shear_Len,Step_Up) //-----------//
matrix<1,Step_Up*N/Shear_Len ,0,
0,1,0, 0,0,1, 0,0,0>
#end // end of macro ---------------------------// |
Das Beispiel des nebenstehende Bildes:
//----------------------------------------------//
#declare TD = Track_Distance;
object{ SW_L( SD_1) translate< 0*L111,0,0>}
object{ T_R9_15
Rotate_Around_Trans(<0,-1*15,0>,<0,0, R9>)
translate< 0*L111,0,0>}
object{ T_111 translate< 1*L111,0,0>}
// tracks upward:
object{ Track_Up_00("T_111",Step_1,0)
translate<2*L111,0*Step_1*N,1*TD>}
object{ Track_Up_00("T_111",Step_1,0)
translate<2*L111,0*Step_1*N,0>}
object{ SW_R(SD_2) Shear_Up(L111,Step_1)
translate<3*L111,1*Step_1*N,1*TD>}
object{ Track_Up_00("T_111",Step_1,0)
translate<3*L111,1*Step_1*N,0>}
object{ Track_Up_00("T_111",Step_1,0)
translate<4*L111,2*Step_1*N,1*TD>}
object{ SW_R(SD_3) Shear_Up(L111,-Step_1)
rotate<0,180,0>
translate<5*L111,3*Step_1*N,0>}
//----------------------------------------------// |
|
Scherung von Weichen und anderen Gleiselementen
|
|