Das Buch mit Sieben Siegeln
Die Node im Straßen-Editor
!!! Achtung !!!
Es wird in kürze eine komplett überarbeitete Version erscheinen
Grund: Der zusammen Hang zwischen den Meshes (3D-Objekte) Segmente und Nodes.
Ja Ihr lieben Leute, mal wieder ein neues Buch aus meiner reihe "Das Buch mit Sieben Siegeln", mit dem Update/DLC Green-Cities gibt es nun einen neuen Editor im Spiel, den Straßen-Editor, dieser ist sehr umfangreich und komplex, eine komplett neue Straße zu erstellen mit allem was dazu gehört ist nicht gerade leicht.
Was wird mindestens gebraucht um eine komplett neue Straße zu erstellen?
Es werden 2 3D-Objekte benötigt, eins für das Segment (die eigentliche Straße) und ein 3D-Objekt für die sogenannte Node (Knoten / Kreuzung), dazu kommen noch diverse Texturen für die Straße und auch für die Kreuzung.
Aber möchte man bei einer Straße auch die Haltebuchten für die Busse haben, so muss man zusätzlich 3 weitere 3D-Objekte erstellen, also braucht man für eine Straße quasi schon 4 verschiedene 3D-Objekte und eins für die Kreuzung, also insgesamt 5 verschiedene 3D-Objekte.
Was aber auch geht, bestehende Straßen aus dem Spiel zu ändern, z.B. andere Bäume oder eine andere Geschwindigkeit für diese neue Straße, das kann man jederzeit ohne großen Aufwand anpassen und Speichern.
In diesem Buch wird es aber erst mal um die Thematik der Nodes gehen, also was man bei so einer Kreuzung beachten muss.
Werde auch später ein Buch schreiben in der es um die Erstellung einer kompletten Straße geht in dem ich auch versuchen werde auf alle Parameter und Einstellungen einzugehen, aber leider sind viele dieser Parameter und Einstellungen noch nicht ganz so schlüssig wie es eigentlich sein sollte.
Ja Ihr lieben Leute, mal wieder ein neues Buch aus meiner reihe "Das Buch mit Sieben Siegeln", es erklärt zwar noch nicht alle Geheimnisse des "Straßen-Editors" aber die eine oder andere Problematik vor der man stehen kann und dann nicht mehr weiter weißt.
Idee stammt von dem Moderator Gun155, er wie auch andere bekommen das nicht auf die reihe wie das Ganze mit den Nodes funktioniert, ja das kann auch verwirrend sein, hatte da auch meine Probleme.
Es gibt eine erste Frage, was unterscheidet ein Node von einem Segment oder umgekehrt? Das Ganze ist schnell erklärt.
Segmente, das ist die eigentliche Straße selber, denke das haben die meisten auch alle schon verstanden, aber warum benutzt man ein Segment auch als Node?
Was ist eine Node überhaupt? Eine Node ist ein Verbindungsknoten, dieser Knoten verbindet die einzelnen Segmente miteinander.
Warum wird für eine Node das gleiche 3D-Objekt verwendet was man für ein Segment benutzt? Dazu komme ich nun.
Aller Anfang ist schwer und oder verwirrend.
Bild 1
Hier sind zwei Test-Objekte zur Visuellen Darstellung, sie symbolisieren 2 Straßen, man sieht links eine Orangene und rechts eine Weiße Linie, diese Unterteilung eines Segments/Nodes ist wichtig, ohne diese Unterteilung durch die Z-Achse, kann die Node die Straßen nicht korrekt miteinander verbinden, die Folge ist das es zu Darstellungsfehlern kommt.
Was aber auch sehr Wichtig ist, ist die Unterteilung entlang der Z-Achse, die Frage die dabei wichtig ist, wie viele Unterteilungen? Nun das kann man nicht immer korrekt benennen.
Man muss hier wieder eins bedenken, wie Arbeitet CSL überhaupt.
Viele haben sich schon gefragt, warum diverse Fahrzeuge nicht sehr Detailliert sind, nun umso mehr Details ein Objekt hat, umso mehr Speicher beansprucht es auch, und es verbraucht auch mehr Leistung sowohl vom Prozessor als auch von der Grafikkarte, was zur Folge hat das die Bildrate sinkt, unter 25 Bilder pro Sekunde wird eine Bewegung nicht mehr als flüssig angesehen.
Details kann man aber nicht nur durch ein Objekt darstellen, sondern auch durch Texturen, aber auch diese können nicht beliebig groß sein, denn umso größer eine Textur ist umso mehr Speicher belegt sie, und diese Daten müssen dann auch in den Speicher der Grafikkarte damit sie dann die Objekte entsprechend darstellen kann.
Deshalb, so wenige Polygone/Faces/Tris(Dreiecke) verwenden wie es nur geht.
Bei der Erstellung von Objekten sollte man immer mit dem sogenannten Low-Mesh beginnen, also dem LOD-Objekt, ja CSL berechnet in den meisten Fällen es selber, aber diese sehen nicht immer schön aus und der Straßen-Editor kann dies zurzeit überhaupt nicht, auch wenn man es oben rechts angezeigt bekommt.
Aber kommen wir zum 1. Bild zurück
Wie verbindet eine Node diese beiden Straßen-Segmente miteinander.
In dem Beispiel haben beide Enden die gleiche Anzahl an Vertex (zu Deutsch Scheitel, also der Scheitelpunkt, im weiteren Punkt genannt).
Es muss immer darauf geachtet werden das am Ende einer Node & Segment keine weiteren Punkte zwischen der Fahrbahn und dem Gehweg existieren, da es sonst zu Darstellungsfehlern kommen kann, aber dazu später mehr.
Die Verbindung zwischen 2 Punkten wird immer mit einer geraden Linie gemacht.
In CSL gibt es 2 verschiedene Nodes, wobei man hier nicht wirklich von einer Node reden kann, es gibt in den Einstellungen für Segmente eine Option die nennt sich „Disable Bend Nodes“, diese ist deaktiviert, dies bedeutet das ein Segment für die Biegung zuständig ist, jedenfalls habe ich das bis jetzt so verstanden.
Wenn man diese Option aktiviert, dann wird für das Biegen eine Node-Objekt benötigt, das kann man dann unter den Einstellungen für die Node speziell aktivieren.
Nimmt man eine Straßen-Vorlage und erstellt mit dieser eine L-Form und aktiviert dann die Option „Disable Bend-Nodes“ erscheinen an der Stelle dann 2 Zebrastreifen, denn die Biegung ist dann eine Kreuzung.
Also man kann Nodes nicht nur für Kreuzungen verwenden, sondern auch für Biegungen (Englisch Bend), keine Panik man braucht das nur selten umzustellen, außer man möchte so was wie ein Feldweg erstellen, so wie es im Workshop einer gemacht hatte, der Ersteller hatte da das Problem mit dieser Biegung gehabt, aber das konnte er beheben, als ich im geschrieben habe, dass er eben diese Einstellung nutzen muss.
Es gibt an viele stellen diverse Einstellungen für das Bending (zu Deutsch Biegen), aber wie die genauen Wechselwirkungen sind, das habe ich auch noch nicht alles raus.
Hier sieht man wie die Node die beiden Segmente miteinander verbindet, da das Node-Objekt keine Unterteilungen hat, entsteht diese Ecke.
Dieses Beispiel ist nicht 100% identisch mit der Art wie das Spiel es macht, oder die Engine die das Spiel verwendet.
Hat eine Node aber genug Unterteilungen, dann wird die Verbindung gebogen, das gleiche gilt natürlich auch für ein Segment.
Was hat es sich mit diesem Bild auf sich? Nun in den Einstellungen einer Straße gibt es den Parameter „Min Corner Offset“ dieser steht eigentlich auf „0“ (Null), diese Einstellung sagt dem Spiel wie stark diese Biegung der Straße erfolgen soll, ein Wert von „0“ entspricht dem vorherigen Bild, ein höherer Wert lässt die Biegung Sanfter verlaufen, so wie hier im letzten Bild, aber Achtung, dieser Wert sollte nie größer als 40 sein, da sonst die Kollisionsabfrage nicht mehr korrekt arbeiten kann.
Hier eine Typische T-Kreuzung, nun es soll mal eine werden.
Bei einer Straße mit Biegung ist ja noch alles bestens, aber bei einer Kreuzung geht das nicht so einfach.
Hier sieht man nun, warum die Unterteilung durch die Z-Achse wichtig ist, damit die eine Hälfte der Straße nach links verbunden werden kann und die andere Hälfte nach rechts, das Loch was dabei entsteht, wird automatisch auch miteinander verbunden.
Da die Node keine Unterteilung hat, außer durch die Z-Achse, kommt es zu dieser Eckigen T-Kreuzung.
Die Frage auch hier, wie viele Unterteilungen benötigt man denn so?
Hier das Ergebnis des 3D-Objekts im Spiel, die Node hat gerade mal 12 Tris (Dreiecke) und keine Unterteilung entlang der Z-Achse
Hier hat das Node-Objekt entlang der Z-Achse 1 Unterteilung, es sind nun 24 Tris (Dreiecke).
Es geht direkt weiter.