Dieser Thread soll klären was die BoundingBox ist und welche Funktion sie hat.
Die BoundingBox ist sozusagen ein Quader, in dem sich die Lok befindet. Er wird sichtbar, indem man die Tasten STRG und Plus (Nummerntastatur) gleichzeitig drückt.
Die Maße der BoundingBox findet man in der SD-Datei, die sich im Trainset-Ordner zusammen mit der entsprechenden ENG- bzw. WAG-Datei befindet.
In ihr steht folgender Eintrag:
ESD_Bounding_Box ( -1.529 0.954 -10.964 1.521 5.440 11.186 )
Die 6 Werte legen jeweils die Abmessung entlang der X-, Y- und Z-Achse fest.
Die Breite wird durch den ersten und den vierten Wert definiert:
ESD_Bounding_Box ( -1.529 0.954 -10.964 1.521 5.440 11.186 )
Sie erstreckt sich von der Mitte des Gleises ausgehend nach rechts bzw. nach links. Das negative Vorzeichen kennzeichnet den Teil der Breite, der sich in Fahrtrichtung nach links erstreckt. In diesem Fall ist das Fahrzeug nach links 1.529 Meter breit und nach rechts 1.521 Meter; folglich insgesamt 3.05 Meter.
Die Höhe wird durch den zweiten und den fünften Wert festgelegt:
ESD_Bounding_Box ( -1.529 0.954 -10.964 1.521 5.440 11.186 )
Vor allem der fünfte Wert ist hier ausschlaggebend, denn er legt die Oberkante des Quaders fest. Ein negatives Vorzeichen gibt es hier nicht, da sich beide Werte oberhalb des Bodens befinden. Ein negatives Vorzeichen würde in diesem Fall einen Wert unterhalb des Erdbodens bestimmen. Der zweite Wert hat im Spiel keinen Einfluss. Die BoundingBox wird immer vom Erdboden aus angezeigt.
Die Länge wird durch den dritten und den sechsten Wert festgelegt:
ESD_Bounding_Box ( -1.529 0.954 -10.964 1.521 5.440 11.186 )
Sie erstreckt sich von der Mitte des Fahrzeugs ausgehend nach hinten (negatives Vorzeichen) und nach vorne.
Diese Werte sind vor allem wichtig, wenn man nicht Kuppeln kann, denn die BoundingBox darf nicht grösser als das Shape (3 dimensionales Objekt) der Lok sein.
Der MSTS benötigt die BoundingBox hauptsächlich um das Fahrzeug zu bewegen, denn das Programm erkennt es nicht als solches. Im Shape definiert man die animierten Objekte (z.B. die Achsen) und weitere Informationen hat der MSTS nicht. Prinzipiell werden programmtechnisch gesehen also Quader umhergeschoben.
Man bemerkt dies deutlich, wenn man den BoundingBox-Eintrag aus einer SD-Datei entfernt. Man kann mit der Lok beschleunigen, aber sie kommt nicht von der Stelle, da das Programm die Box nicht erkennt und somit nichts vorwärts bewegen kann.
Je schneller das Fahrzeug, also der Quader wird, desto schneller werden die Achsen animiert. Wie schnell das geschehen muss, gibt man in der ENG- bzw. WAG-Datei durch den Eintrag WheelRadius() vor. Je grösser die Räder desto langsamer die Animation.
Die US Güterwagen haben aber, was die Kupplung betrifft, ein ganz anderes Aussehen als die europäischen Wagen, die Puffer an den Wagenenden besitzen.
Wo legt man nun die Kupplung fest, wenn das Fahrzeug nur ein Quader ist?
Dazu dient die BoundingBox. Sie sollte für den MSTS den Wagenkasten festlegen.
Am besten sieht man es bei den amerikanischen Güterwagen.
Die überstehenden Kupplungen werden dann durch r0 festgelegt. r0 wohl deswegen, da die Wagen diese Wegstrecke zur Verfügung haben, um während der Fahrt vor und zurück zu schaukeln.
In der ENG- bzw. WAG-Datei gibt man bei Size() u.a. die Länge des Wagens an und innerhalb des Coupling()-Eintrages den Wert für r0. Dabei gilt
Size() + R0(erster Wert) = Länge des Fahrzeuges
Nicht irritieren lassen, man kann bei einem Fahrzeug zwei Kupplungen, also zwei r0()-Werte definieren. Ist nur ein Coupling()-Eintrag vorhanden, so existiert auch nur ein Wert für r0. Sobald diese beiden Werte grösser sind als das Shape des Fahrzeuges, dann ist im Stillstand zwischen den Puffern der Fahrzeuge etwas Luft.
Die BoundingBox selbst hat ein etwas merkwürdiges Verhalten. Da sie einen Wagenkasten simulieren soll, muss sie eine harte Oberfläche darstellen.
Man erkennt dies deutlich, wenn man an ein Fahrzeug mit zu langer BoundingBox ankuppeln möchte. Die zwei Zugverbände reagieren dann wie zwei gleichpolige Magnete und stossen sich gegenseitig ab. Ganz anders sieht die Sache jedoch innerhalb eines Zugverbandes aus. Wenn die BoundingBoxen zweier Fahrzeuge dort überlappen, wirken diese wie zwei unterschiedlich gepolte Magnete und ziehen sich gegenseitig an.
Wenn man aber nun mit einem Wagen um eine Kurve muss, kommen sich die Innenseiten der BoundingBoxen der Fahrzeuge sehr Nahe. Es würde stören, wenn sie nun eine abstossende Kraft ausüben würden. Daher wirken innerhalb eines Zugverbandes keine abstossenden Kräfte.
Man sieht dies deutlich bei engen Kurvenfahrten mit verbreiterten BoundingBoxen:
Es wird allgemein empfohlen die BoundingBoxen zu verkürzen, wenn Fahrzeuge in engen Kurven stecken bleiben und nicht weiterkommen. Dies ist zwar hilfreich, packt das Problem aber nicht bei seiner Ursache an. Die Kupplungen sind vor allem verantwortlich, wenn es klemmt.
Was ist nun die BoundingBox: fest oder durchlässig?
Da ist sich der MSTS selbst nicht ganz logisch. Generell gilt, dass innerhalb eines Zugverbandes die BoundingBoxen durchlässig sind (siehe obige Bilder). Anderen Zugverbänden gegenüber sind sie jedoch fest.
Dies zeigt ein Versuch mit verbreiterten BoundingBoxen bei zwei sich begegnenden Zugverbänden. Erwartungsgemäss kommt es zum Aufprall sobald die beiden Quader aneinanderstossen:
Im obigen Beispiel waren es zwei unterschiedliche Loks, die aufeinander prallten. Im zweiten Versuch wurde nur die BoundingBox einer Lok verbreitert. Nun waren die Zuglok des einen Zugverbandes und die hintere Schublok des anderen zu breit. Es kam diesmal jedoch nicht zu einem Aufprall. Die BoundingBoxen identischer Fahrzeuge in unterschiedlichen Zugverbänden durchdringen sich:
Dies war ein Test mit Loks, also ENGs. Wie verhält es sich nun mit Wagen?
Nun fuhren zwei Güterzüge aufeinander zu. Das jeweils hintere Ende bestand aus den identischen Wagen mit verbreiterten BoundingBoxen. Auch hier durchdrangen sie sich. Bitte nicht durch die identisch aussehenden Dächer irritieren lassen.:
Und wie sieht es nun mit anderen Streckenobjekten aus?
Bei allen anderen Streckenobjekten sieht man keine BoundingBox, wenn man sie sich anzeigen lässt. Sie ist bei diesen Objekten scheinbar nicht von Bedeutung.
Ein Versuch hat gezeigt, dass bei einer Fahrt mit verbreiterten BoundingBoxen diese alle Objekte am Fahrbahnrand durchdrangen. Als Beispiel hier mal ein Baum:
Daher behaupte ich nun, dass die BoundingBox niemals an etwas hängen bleibt. Schliesslich hat eine Veränderung des zweiten Wertes, also die Unterkante des Quaders, keinen Einfluss. Egal ob man hier den Boden angibt oder 4 Meter in der Höhe. Die Box wird immer gleich angezeigt: