Kreuzungsbau: Unterschied zwischen den Versionen

Aus OMSIWiki
Wechseln zu:Navigation, Suche
(Hinzufügen von Inhalten)
(Hinzufügen von Inhalten)
Zeile 194: Zeile 194:
 
Moskauer.o3d
 
Moskauer.o3d
 
</pre>
 
</pre>
 +
 +
Damit ist die Objektdatei komplett. Wenn alles richtig funktioniert hat, können wir die Kreuzung im Editor schon platzieren.
  
 
=== Pfade ===
 
=== Pfade ===
 +
 +
Jetzt fehlen uns nur noch die Pfade. Um überhaupt eine Basis zu bekommen, an der wir die Pfade einpassen können, öffnen wir die Kreuzung wieder in Blender, um die Position der Splines herauszubekommen. An jedem herausgehenden Strang markieren wir jeweils den Mittelpunkt der Spline (liegt dieser genau zwischen zwei Punkten, markieren wir beide Punkte, die Koordinaten bestehen dann aus dem Mittelpunkt) und schreiben uns die '''globalen''' x- und y-Koordinaten auf '''(Abb. 16)'''.
 +
 +
Um den Winkel herauszufinden, erstellen wir ein Dreieck um die Kante, indem wir einen Punkt der Eckkante auf der x-Achse extruieren (E -> X) und eine Fläche darüber erstellen (F), und wählen unter ''Mesh Display'' aus, dass für Flächen der Winkel angezeigt werden '''(Abb. 17)'''. Den Winkel notieren wir uns ebenfalls.
 +
 +
----
 +
 +
Nun fahren wir mit dem Kreuzungs-Editor fort. Die Bedienungsweise sollte man sich vorher angeeignet haben, da hier nur die unmittelbaren Schritte erklärt werden. Gemäß der vorher aufgeschriebenen Daten kann man nun die Lokalisierung der ''Spline Templates'' bestimmen. Stimmt die Drehung nicht, experimentiert man mit den Werten. Es kann z.B. sein, dass man, um den korrekten Wert für die Rotation zu bestimmen, zum ursprünglichen Wert 180 addieren oder subtrahieren muss, oder ein Minus hinzuzufügen.
 +
 +
Sind nun alle Werte korrekt, können die Pfade hinzugefügt werden, Blinker und ggf. auch Ampelschaltungen gesetzt werden und die Kreuzung wird fertig gespeichert.
  
 
[[Kategorie:Tutorials für Addon-Entwickler]]
 
[[Kategorie:Tutorials für Addon-Entwickler]]

Version vom 28. Juni 2015, 09:54 Uhr

Straßen- und Kreuzungserstellung

© 2016

Abb. 1
Abb. 2
Abb. 3a
Abb. 3b
Abb. 4
Abb. 5
Abb. 6
Abb. 7
Abb. 8
Abb. 9
Abb. 10
Abb. 11
Abb. 12
Abb. 13
Abb. 14
Abb. 15
Abb. 16

Hinweis: Dieser Artikel befindet sich noch im Aufbau!

In diesem Tutorial soll es um den Bau von Kreuzungen gehen. Ich werde verschiedene Methoden aufzeigen, Vor- und Nachteile erläutern, und euch an Hand eines Beispieles erklären, wie ich meine Kreuzungen komplett in Blender baue. Ich verwende die Version 2.71 von Blender, es kann aber auch jede andere Version genutzt werden, somit auch die aktuelle.

Vorarbeit

Als erstes braucht man das, wo die Kreuzung anliegt: Splines. In diesem Tutorial wird eine Kreuzung auf Basis von eigenen Splines und Texturen gebaut, die in einer Karte eine Anwendung findet. Was bei größeren Kreuzungen noch hilfreich ist, sind Vorzeichnungen und Skizzen von der Kreuzung, wie sie später aussehen soll.

Methoden

Es gibt viele unterschiedliche Methoden, Kreuzungen zu bauen. Bevor man sich überhaupt an eine Kreuzung setzt, sollte von vornherein entschieden werden, ob man sich mit Blender auseinandersetzt oder nicht. Im folgenden sind grundlegend 4 Methoden aufgelistet

Methode Vorteile Nachteile
Terrain Splines Die Kreuzung wird komplett aus Splines gebaut. Die Pfade kommen mit Invis-Splines dazu.

Diese Methode ist die einfachste.

  • Keine Blender-Kenntnisse erforderlich
  • Die einfachste Möglichkeit
  • Flackern von übereinanderliegenden Splines
  • Keine Kollision von Fahrzeugen untereinander
  • Nur begrenzt Ampelschaltungen möglich
  • Meist viele Splines nötig
Splines vorbauen & Import in Blender Es wird zuerst ein Grundgerüst (z.B. der Gehweg) gebaut. Dieser wird in Blender importiert, und anschließend wird die Kreuzung vervollständigt.

Die Methode ist zwar unpopulär, liefert aber auch ein angemessenes Ergebnis.

  • Keine tiefen Blender-Kenntnisse erforderlich
  • Ampelschaltung mit Pfaden möglich
  • Schnelles Einpassen der Kreuzung in die Splines
  • Exportieren als "Ganzes"
  • Hohe Anzahl an Vertices
  • Viel Arbeitsaufwand
Kreuzungs-SDK Es wird mit den Vorlagen aus dem Kreuzungs-SDK gebaut.

Die Methode ist vorwiegend für rechtwinklige Kreuzungen auf Original-Spline-Basis geeignet, da die vorhandenen Stücke schon fertig angepasst vorliegen.

  • Kein Beschäftigen mit Texturen, da schon vorhanden
  • Nur wenig Blenderkenntnisse erforderlich
  • Ampelschaltung mit Pfaden möglich
  • Arbeitsaufwand gering
  • Export als "Ganzes"
  • Unflexibel
  • Feste Texturen
Blender komplett Die komplette Kreuzung wird in Blender gebaut.

Das ist die schwerste Methode, bei Beachtung einzelner Punkte wird aber ein hervorragendes Ergebnis geliefert.

  • Liefert bestmöglichstes Ergebnis
  • Schont die Performance
  • Voll flexibel (Alle Möglichkeiten stehen offen)
  • Ampelschaltung mit Pfaden möglich
  • Objekt wird als "Ganzes" exportiert
  • Tiefe Blender-Kenntnisse erforderlich
  • Sehr hoher Arbeitsaufwand
  • Fehlerpotential sehr hoch, da sehr schwierig

Bauen der Kreuzung in Blender

Der folgende Teil stellt ein Bautagebuch einer Kreuzung aus einer realen Karte mit Erklärung dar.

Bist du bereit?

Wenn du den folgenden Fragen zustimmst, bist du bereit, und weißt genügend über die Materie, um eine Kreuzung zu bauen.

  • Ich kann mit Blender ein Objekt bauen und fehlerfrei in OMSI einbinden.
    • Ich weiß, wie Blender arbeitet und kenne die grundlegenden Tastaturkürzel.
    • Ich habe Blender soweit eingerichtet, dass es .x-Dateien im- und exportieren kann. (s. Anleitung).
    • Ich weiß, wie Ordner von Objekten und .sco-Dateien aufgebaut sind.
  • Ich habe das inoffizielle SDK-Handbuch (Datei Kreuzungen_1_02.pdf) ab Seite 19 sowie das Vorwort gelesen.
  • Ich kenne die Funktionsweise des Kreuzungs-Editors.

Um Differenzen beim Basiswissen auszugleichen, kann man sich Rat im Forum holen, eine Suchmaschine befragen oder sich auf Video-Tutorials ansehen.

Modell

Bevor das Modellieren der Kreuzung beginnt, brauchen wir zuerst die Basis. Diese besteht wie im gezeigten Bild (Abb. 1) aus Splines, die auf gleicher Höhe liegen. Nun wird im Editor auf den Reiter Spline-Export geklickt und wir wählen alle an der Kreuzung beteiligten Splines aus (Abb. 2). Keine Sorge, so riesig wird die Kreuzung nicht, aber wir benötigen zum nahtlosen Anschluss an die Straße die weiterführenden Splines. Anschließend werden mit einem Klick auf Export die gewählten Splines gesammelt in eine .x-Datei exportiert, deren Pfad man frei wählen kann.

Anschließend wird Blender geöffnet, den Editor brauchen wir zunächst nicht mehr und wird geschlossen. In Blender wird nun eine neue Datei angelegt und die vorher exportierte .x-Datei importiert. Sie steht im Ausgangszustand falsch, wir drehen das Objekt also einmal um 90°, sodass die Splines waagerecht liegen. Im Edit-Mode müssen zusätzlich noch die Normals umgedreht werden (W -> Flip Normals).

Texturen

Jetzt beginnt die eigentliche Arbeit. Geht man von der Solid-Ansicht in die Texture-Ansicht, präsentiert sich das Objekt noch komplett weiß und untexturiert (Abb. 3a und 3b). Das ändern wir nun:

Zunächst widmen wir uns der Einstellung der Texturen. Für jede Textur wird jeweils ein unabhängiges Material erstellt. Damit es keine unschönen Effekte gibt, nutze ich immer folgende Einstellungen (Abb. 4):

  • Diffuse-Farbe auf 1.0/1.0/1.0
  • Diffuse-Intensity auf 1.0
  • Specular-Intensity auf 0.0

Wie im oben verlinkten Artikel zu Blender verlinkt, bekommt jedes Material genau eine Textur (einen Reiter weiter). Die Einstellungen können belassen werden, jedoch wählt man als Type der Textur Image or Movie aus, unter Image -> Open (Abb. 5) wird die Textur ausgewählt. Diese Prozedur wird für alle Texturen wiederholt.


Nun haben wir in unserem Beispiel 4 Materialien mit je 1 Textur. Man sieht diese aber immernoch nicht auf dem Objekt. Dazu wechseln wir in den Edit-Mode. Zunächst können wir doppelte Punkte entfernen (W -> Remove Doubles) und die Dreiecke zu Rechtecken konvertieren (ALT + J).

Anschließend teilen wir das Fenster, indem wir die rechte obere Ecke (Abb. 6) in das Fenster ziehen. Links unten im neuen Fenster wählen wir nun UV/Image Editor aus und wechseln im großen Fenster auf die Sicht von oben (Numpad 7). Im Edit-Mode selektieren wir alle zu einer Textur zugehörigen Faces aus, wählen das passende Material aus und drücken Assign. Nun wählen wir im UV-Fenster noch die Textur aus. Die Kreuzung sollte sich jetzt wie in Abb. 7 zeigen. Diese Aktion wird abermals für alle Texturen und zugehörigen Faces wiederholt, sodass die Splines am Schluss vollständig texturiert sind (Abb. 8).

Modellierung

Nun können wir mit der Modellierung beginnen. Zunächst können wir einzelne Abschnitte, die nicht mehr benötigt werden, weil sie Überreste von den Spline sind, herauslöschen. In diesem Beispiel ist das unter anderem die Grünfläche zwischen den späteren Kreuzungsstücken, die nachher unter der Straße verschwindet, sowie der Randstein, da er in einer Kurve zur Einmündung verläuft (Abb. 9). Das aktuelle Objekt können wir nun mit dem Klick rechts oben auf das Auge verstecken, weil es bei der folgenden Arbeit zunächst im Weg steht. Um die Texturen brauchen wir uns vorerst nicht mehr zu kümmern, also wechseln wir wieder in die Solid-Ansicht.

Nun bauen wir Segmente für die Kurven. Für die spätere Verwendung ist es wichtig, die Höhen einzuhalten: Wir lösen uns nun von den Standardhöhen und bauen die folgenden Segmente 0.1m tiefer, sodass der Boden nun auf -0.1m; die Straße auf 0.00m und der Gehweg auf 0.15m Höhe liegt. Da auf der rechten Seite der Gehweg mit Randstein um die Kurve gehen soll, brauchen wir zunächst eine Plane, die wir nach und nach zum vollständigen Gehweg erweitern, sodass am Ende ein gerades Segment von 1m Länge vorliegt. (Hinweis: Hier im Beispiel kann natürlich auch das Original kopiert und gekürzt werden.) Wichtig ist dabei, dass das Segment am Nullpunkt von einem Fixpunkt (z.B. die rechte oder linke Ecke) startet, der an einer Kante liegt. Das Segment wird in Richtung der x-Achse vom Nullpunkt aus gebaut (Abb. 10).

Dies wiederholen wir wieder mit allen möglichen Segmenten (hier im Beispiel noch die Kante ohne Gehweg für die linke Kurve).


Uns liegen nun die Segmente vor, diese sind aber noch einzeln und ohne Kurve. Um überhaupt mit Kurven zu arbeiten, brauchen wir eine Kurve, die den Verlauf vorgibt. Wir fügen also zwei Bezier-Curves hinzu, welche wir in die Splines einpassen (Abb. 11). Wichtig ist dabei, dass die Kurve nur im Edit-Mode verändert wird und die vorher festgelegten Fixpunkte verbindet (In unserem Beispiel die Ränder der Straße). Ansonsten ist die Curve beliebig anpassbar, man sollte die Resolution aber auf 64 stellen und Punkte nur verschieben, und nicht Radien & Co. verändern. Für die rechte Seite fügen wir analog dazu ebenfalls eine neue Curve hinzu.

Nun selektieren wir wieder ein Segment und gehen in den Reiter Modifier. Wir fügen zunächst einen Array-Modifier hinzu, anschließend einen Curve-Modifier. Die Einstellungen finden sich in Abb. 12 (C1 ist hierbei der Name der Bezier-Curve). Nun sollte das ganze wie eine Kurve aussehen (Abb. 12). Auch diesen Schritt wiederholen wir für andere Seiten pro Kurve.

Nun können wir beide Modifier von oben nach unten anwenden, heißt auf die Schaltflächen Apply drücken. Wieder zurück im Obect-Mode vereinigen wir alle Kurven mit dem Hauptmesh der Splines (STRG + J). Nun sollte das ganze wie in Abb. 13 aussehen. Wir können wieder doppelte Punkte entfernen und schauen uns nun die Kanten an, denn dort fehlt jeweils ein kurzes Stück bis zum Spline. Diesen können wir ganz einfach füllen, indem wir bei größeren Lücken die gegenüberliegenden Kanten zusammenfügen (F) oder bei kleineren Lücken die jeweiligen Eckpunkte an die gegenüberliegenden Punkte einrasten (Abb. 14).

Mit geschickter Hand füllen wir nun die Lücken (Abb. 15) und führen erneut die Remove Doubles-Funktion aus.


Nun zeigt sich der eben gebaute Teil wieder untexturiert. Deshalb wiederholen wir die Prozedur aus dem letzten Absatz vom Abschnitt Texturen (Abb. 6-8). Nun sind die Texturen aber verzerrt und falsch gemappt, das werden wir jetzt anpassen.

Wir markieren die Flächen des Asphalts, zoomen heran und mappen die Textur gemäß der Sicht einfach flach auf den Boden (U -> Project From View). Dies sollte man mit verschiedenen Zoomstufen wiederholen, bis die Textur optimal groß ist. Mit dem Rest machen wir das etwas anders. Zunächst markieren wir die Flächen des Randsteins und wählen als letzte Fläche eine angrenzende Fläche der Splines aus, die bereits schön gemappt ist. Nun wählen wir U -> Follow Active Quads -> Length und der Randstein präsentiert sich texturiert (Abb. 16).

Dies wiederholen wir nun mit allen restlichen Flächen.


Nun ist die gesamte Kreuzung fertig texturiert. Jetzt müssen wir nur noch die restlichen angrenzenden Spline-Stücke, die nicht mehr zur Kreuzung gehören, von unserer eigenen Kreuzung abtrennen. Das machen wir, indem wir mithilfe von den gängigen Auswahlwerkzeugen (Taste C für Kreisauswahl; Taste B für Rechtecksauswahl; ALT + RMT zum Markieren zusammenhängender Flächen) alle Flächen unserer Kreuzung markieren. Anschließend trennen wir sie vom Rest ab (P -> Selection).

Nun können wir die Kreuzung auch frei auf der x- und y-Achse verschieben, denn in unserem Fall ist diese sehr weit entfernt vom Mittelpunkt entfernt, was zwar völlig in Ordnung und technisch einwandfrei ist, aber die folgenden Schritte etwas aufwändiger macht.

Export und Einbindung

Das Mesh ist nun soweit fertig. Jetzt müssen wir noch überprüfen, ob die Normalen alle in die richtige Richtung zeigen (→ Erklärung: Omsi stellt Flächen immer nur in eine Richtung dar, das ist vergleichbar damit, dass man in Häusern keine Wand von innen sieht.). Dazu gehen wir im Edit Mode in der rechten Leiste der 3D-Ansicht unter den Punkt Mesh Display. Unter Normals wählen wir hier aus, dass die Flächen angezeigt werden sollen. Jetzt sehen wir Linien, die aus den Flächen herausragen. Überprüft werden muss, ob die Richtung, in die die Striche zeigen, auch tatsächlich "oben", bzw. auf der Außenseite sind. Bei jeden Flächen, wo dies nicht der Fall ist, drücken wir W -> Flip Normals. Zeigen alle Normalen nach Außen, kann das Objekt gemäß der Anleitung in eine .o3d-Datei gespeichert werden (Bitte vor dem Export in Blender im Object Mode die Kreuzung anwählen, sodass nur diese orange umrandet ist!).

Nun erstellen wir unsere .sco-Datei. Im Folgenden lautet der Name der Model-Datei Moskauer.o3d, dieser kann wie der Name und die Gruppen natürlich frei gewählt werden.

[friendlyname]
Einmundung Moskauer Ring

[groups]
2
Wuerzburg
Kreuzungen

[rendertype]
surface

[LightMapMapping]

[fixed]

[absheight]

[surface]

[collision_mesh]
Moskauer.o3d

###################
     Model Data
###################

[mesh]
Moskauer.o3d

Damit ist die Objektdatei komplett. Wenn alles richtig funktioniert hat, können wir die Kreuzung im Editor schon platzieren.

Pfade

Jetzt fehlen uns nur noch die Pfade. Um überhaupt eine Basis zu bekommen, an der wir die Pfade einpassen können, öffnen wir die Kreuzung wieder in Blender, um die Position der Splines herauszubekommen. An jedem herausgehenden Strang markieren wir jeweils den Mittelpunkt der Spline (liegt dieser genau zwischen zwei Punkten, markieren wir beide Punkte, die Koordinaten bestehen dann aus dem Mittelpunkt) und schreiben uns die globalen x- und y-Koordinaten auf (Abb. 16).

Um den Winkel herauszufinden, erstellen wir ein Dreieck um die Kante, indem wir einen Punkt der Eckkante auf der x-Achse extruieren (E -> X) und eine Fläche darüber erstellen (F), und wählen unter Mesh Display aus, dass für Flächen der Winkel angezeigt werden (Abb. 17). Den Winkel notieren wir uns ebenfalls.


Nun fahren wir mit dem Kreuzungs-Editor fort. Die Bedienungsweise sollte man sich vorher angeeignet haben, da hier nur die unmittelbaren Schritte erklärt werden. Gemäß der vorher aufgeschriebenen Daten kann man nun die Lokalisierung der Spline Templates bestimmen. Stimmt die Drehung nicht, experimentiert man mit den Werten. Es kann z.B. sein, dass man, um den korrekten Wert für die Rotation zu bestimmen, zum ursprünglichen Wert 180 addieren oder subtrahieren muss, oder ein Minus hinzuzufügen.

Sind nun alle Werte korrekt, können die Pfade hinzugefügt werden, Blinker und ggf. auch Ampelschaltungen gesetzt werden und die Kreuzung wird fertig gespeichert.