Splines parallel versetzt verlegen

Willkommen in der OMSI-WebDisk!
Als Gast kannst du nur Inhalte in deiner ausgewählten Sprache sehen. Registrierte Nutzer können die Sichtbarkeit anderer Sprachen in ihrem Kontrollzentrum aktivieren, weitere Infos hier.
Alle Themen sind in den Foren mit einer Sprachflagge gekennzeichnet: = Englisch [EN], = Deutsch [DE], = Französisch [FR]. Wenn du die angegebene Sprache nicht beherrschst, schreibe auf Englisch!
  • Hallo,


    ich habe eine Anfängerfrage zum Thema Splines. Viele Karten sind ja so gebaut, dass Straßen aus getrennten Splines für Fahrbahnspuren, Gehwege, Markierungen etc. zusammengesetzt sind. Da ergibt sich doch automatisch die Notwendigkeit, einen Spline parallel zu einem anderen versetzt zu bauen.


    Dafür gibt es m.W. keine Funktion im Editor, oder übersehe ich etwas?

    Wie löst man das Problem dann am besten? Gibt es eine einfache Methodik, die ihr dafür nutzt?

  • Moin,


    direkt ganz sauber aneinander legen kannst du Splines im Editor nicht.

    Der einzige Weg, über den sich Splines (und Objekte) aneinander ansnappen lassen, sind tatsächlich Pfade bzw. das Meter-Raster. Dabei kann man (standardmäßig mit der Strg+Taste gedrückt) die Splines an einem größeren Raster (von 1x1 Meter) platzieren. Das funktioniert aber auch nur solange die Splines irgendwie ganzzahlige breiten haben und eine Rotation, wie exakt 0, 90, 180 oder 270 grad haben.


    Ansonsten ist das tatsächlich einfach meist nach Augenmaß gearbeitet. Wenn du dir deshalb solche Maps mal ganz genau anschaust, siehst du daher auch oft, dass die Splines garnicht perfekt aneinander liegen, sondern kleine Lücken aufweisen oder sich (meist eher) minimal überlagern.


    Beim legen von Kurven ist es oft ratsam, die Länge eines Kurvensegments nicht über die Length-Box festzulegen, sondern über den Angel (Winkel) zu definieren. So können alle Teilsplines (z.B. Gehweg und Fahrbahn) gemeinsam den exakt gleichen Winkel haben, sodass auch die Folgesegmente noch genau parallel liegen.

    Mit dem Radius muss man dann ggf. etwas ausprobieren oder tatsächlich einfach rechnen, wenn man die Splinebreite kennt.


    Genauer bzw. sauberer geht es leider nicht.

    Die cleane Variante ist mMn. daher deshalb eher, halt einen Gesamtspline zu haben, bzw. bei komplexeren Verkehrsführungen (mit häufigen Einmündungen, Verkehrsinseln, was auch immer) ganze Straßenabschnitte in Blender zu modellieren und mit Pfaden auszustatten. Da kann man mMn., wenn man sich einmal in Blender reingefuchst hat, viel entspannter und vor allem sauberer bauen, da sich natürlich alles miteinander perfekt verbinden und ansnappen lässt.


    Ich hoffe, das hilft dir. :)

  • Danke für die ausführliche Antwort!

    Du hast natürlich recht, dass das die sauberste Variante ist. Der Nachteil ist halt, dass du für jede kleine Änderung neben der eigentlichen Fahrbahn wie anderes Gehwegpflaster, Randsteine, Bordsteine, Parkbuchten usw. einen neuen Spline und ggf. Verbindungsstücke als Objekt erstellen musst.


    Ich habe in der Zwischenzeit etwas nachgedacht und herumprobiert, dabei bin ich auf folgende Lösung gekommen.


    Ich habe eine Straße mit einer etwas krummen Rotation und einem Radius:


    Daran möchte ich nun parallel einen 15 cm breiten Randstein-Spline anschließen. Da dieser jedoch keinen Pfad besitzt und ich die Snap-Funktion und die vorliegenden Informationen zu den Pfadpunkten nutzen will, verwende ich einen Spline mit einem Pfad als Hilfsmittel, hier den invis_street.


    Zuerst erstelle ich davon ein neues Segment, das ich mit Strg an den Anfangs-Pfadpunkt der Fahrbahn snappe. Der hat nun eine Rotation von 227,1249°, weil er in entgegengesetzter Richtung zur Fahrbahn liegt. Ich weiß, dass der Pfadpunkt der Fahrbahn 1,25 m vom rechten Fahrbahnrand liegt (kann man notfalls in der sli-Datei nachschauen). Mein Randsteinspline ist 0,15 m breit, d.h. von dem Snap-Punkt liegt der gesuchte Punkt 1,25+0,075=1,325 m weiter rechts. Den angesetzten Hilfs-Spline muss ich also auf diese Länge setzen und um 90 Grad rotieren, indem ich die 90 von 227,1249 subtrahiere: 137,1249°. Ergebnis:


    Am anderen Ende mache ich nun dasselbe mit dem Endpunkt des Fahrbahn-Pfades. Dann erstelle ich von den neben der Fahrbahn liegenden Endpunkten meiner Hilfssplines jeweils einen weiteren Hilfsspline (also mit Strg auf die Endpunkte snappen lassen), die ich beide wieder um die 90 Grad zurück rotiere - die Länge ist diesmal egal:


    Die zuerst erstellten kurzen Hilfssplines lösche ich danach zuerst. Nun nutze ich "Complete to", um das Ende des unteren Splines auf den Anfang des oberen zu setzen. Falls keine Lösung gefunden wird hilft glaube ich ggf., dem unteren Spline erst einen Radius zu geben, ich hab den Radius beispielsweise auf 60 Meter gesetzt.

    Der untere Hilfsspline liegt nun genau richtig, d.h. man muss nur den korrekten Spline-Typ für diesen auswählen und den anderen Hilfsspline kann man löschen. Ergebnis:




    Für die andere Seite habe ich einen anderen Weg genutzt, der etwas einfacher ist:

    1. Irgendein Sceneryobject (ich habe den Haltestellen-Helper genommen) platzieren, mit "to Spline" an den Fahrbahnspline hängen. Dessen Länge ist bekannt, bei mir 45 m, also Distance und Range auf 45 setzen, damit jeweils an Start und Ende ein Objekt platziert wird. Die xyz-Werte unter "Object Properties" beziehen sich nun auf die Mitte des Fahrbahn-Splines, also setze ich y und z auf 0 und x auf -3,325, da die Fahrbahn 6,5m breit ist und der gewünschte parallele Spline 0,15m (6,5/2 + 0,15/2), negativer Wert weil der Spline links liegen soll.
    2. Jetzt wieder einen Spline mit Pfad als Hilfsspline nutzen. Erst mal irgendwo ein Stück platzieren. Die Start-Rotation der Fahrbahn ist bekannt, man kann sie also einfach übernehmen, d.h. kopieren und beim Hilfsspline einfügen. Dann den Spline mit "Align Start to Obj." und Klick auf das Sceneryobject am Start des Fahrbahnsplines setzen.
    3. Den zweiten Hilfsspline füge ich am Ende der Fahrbahn mit Strg an den Fahrbahnpfad an, damit der die gewünschte Rotation erhält. Danach auch bei diesem "Align Start to Obj." nutzen, diesmal für das Sceneryobject am Ende der Fahrbahnspline.
    4. Jetzt kann man wie beim anderen Vorgehen "Complete to" nutzen, um den ersten Hilfsspline mit dem zweiten zu verbinden.

  • Hallo Hallo...


    Ich finde das viel zu kompliziert wie du es beschreibst...


    Wenn du Kurven parallel setzen möchtest gebe ich meinen Vorrednern komplett Recht... Gehe nicht nach der Länge der Splines... Sondern nach dem Winkel... Denn auch die einfache Mathematik besagt je enger der Radius desto geringer die Strecke...


    Ich greife Mal dein Beispiel auf... Dazu erstmal etwas vorab... Prinzipiell ist es ja möglich eine Spline in eine andere zu verändern nachdem man sie gelegt hat...


    Du legst nun also deine Grundspline mit einem Radius von 58,45m und einen Winkel von 47,125°.

    Deine Spline hat eine Breite von 6,5m... Also in der Hälfte von 3,25m... Da ich nicht weiß wo auf dieser sollte die Pfade liegen mittel ich das einfach Mal und lande bei 1,625. Dein Randstein hat eine Breite von 0,15m also gemittelt 0,075m.


    An den Start deines Straßensplines snapst du dir einen Hilfsspline... Bspw invis_streets... Die Mitte deines Randsteinsplines ist von da aus nun 1,7m entfernt. Den invis_spline krümmst du nun mit einem Radius von -0.85 (das Minus um ihn nach links zu lenken und den Wert da 2x Radius = Durchmesser und demzufolge Distanz der Punkt des Beginns der Splines ist) und einem Winkel von 180°. Nun bist du genau an dem Punkt an dem die Randsteinspline starten wird.

    Als nächstes heftest du dort eine weitere invis_street an Hund krümmst die um 3,325m weniger (Abstand Mittelpunkt zum Rand der Straßenspline + Abstand Mittelpunkt Randsteinspline zu deren äußeren Rand) auf 55,125m. Zusätzlich gibst du wieder einen Winkel von 47,125° an.

    Abschließend veränderst du die invis_street in deine Randsteinspline.


    Mit der äußeren Spline machst du es genauso nur das du den Radius der Spline nicht verringerst sondern erhöhst...


    Danach kannst du sämtliche Hilfssplines wieder löschen...


    LG... Tim

  • Interessanter Ansatz, Danke dafür! Einen kleinen Fehler gibt es allerdings in deiner Beschreibung, oder du hast meine falsch verstanden:

    Der Winkel 47,125° ist der Rotationswinkel am Startpunkt, nicht der des Kreisbogens. Wenn man den Bogenwinkel des Fahrspursplines (in meinem Fall 44,11138°, s. erster Screenshot) verwendet, dann passt es.


    Am wenigsten Rechenarbeit hat man aber beim Ansatz mit den Sceneryobjects.

  • Du nimmst die Hälfte der Spline Breite und addierst bzw. subtrahierst je nachdem wie die Kurve liegt und wo du den zweiten spline anbringen möchtest. Bspw. Terrain-Spline ist 10 Meter Breit - 40 meter radius - 45 Grad, dann für Innenliegend 35 meter radius und für außenliegend 45 Meter Radius und jeweils 45 Grad). Bei kleinst sachen ist es natürlich immer ein bisschen frickel arbeit mit millimetern aber das ist so das Grundsätzliche