Höhenverformung//Crossing-Heightdeformation

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!
  • Moin,


    ich hätte eine grundsätzliche Frage zur Funktionsweise bei der Arbeit mit einem Höhenmesh bzw. damit verbunden der Arbeit mit realen Höhen. Es geht darum, dass ich momentan versuche eine reale Strecke mit zugehörigen Höhendaten nachzubauen. Der Bau der Straßenobjekte erfolgt dabei bisher ausschließlich in Blender. Die Höhendaten kommen dabei über das Geoportal des Land NRW und werden "per Hand" zusammen mit passender Luftaufnahme für den Verlauf der Straße in Blender eingetragen.


    Das sieht dann momentan beispielsweise so aus:



    Das führt natürlich auch dazu, dass beispielsweise KI-Pfade nur sehr umständlich im Kreuzungseditor verlegt werden können. Jetzt bin ich heute auf das Thema mit dem Höhenmesh in diesem Thread (Steigungen im Kreuzungseditor) gestoßen. Für meinen Anwendungsfall hat sich das prinzipiell interessant angehört und könnte, falls ich es richtig verstanden habe, mir einen Teil der Arbeit zumindest vereinfachen. Zusätzlich wird das Verfahren ebenfalls im Aachen-Addon verwendet, in dem meiner Meinung nach, die Höhenverläufe recht gut gelungen sind.


    Da ich noch nicht zu 100% das Prinzip dahinter verstanden habe, nun zu meinen Fragen:


    Wie ist der Aufbau dieses Höhenmeshs zu verstehen bzw. wie könnte/würde das Mesh anhand von meiner Beispielkreuzung grob in Blender erstellt werden?


    Verstehe ich die grundsätzliche Reihenfolge richtig, dass zuerst in Blender die Kreuzung/das Straßenobjekte flach erstellt wird (mit zugehöriger Texturierung und Exportieren ins .o3d Format) und dann in einem zweiten Schritt das Höhenmesh ebenfalls in Blender erstellt wird, anhand dessen OMSI dann die Kreuzung "verbiegt". Die KI-Pfade werden dann normal im Kreuzungseditor anhand der flachen Kreuzung verlegt und werden ebenfalls in OMSI "verbogen". Ist da meine Denkweise richtig?


    Ich hoffe mein Problem ist verständlich und bedanke mich im vorraus für mögliche Antworten.

  • Wie ist der Aufbau dieses Höhenmeshs zu verstehen bzw. wie könnte/würde das Mesh anhand von meiner Beispielkreuzung grob in Blender erstellt werden?

    Das Höhenmesh ist nur eine Fläche Plane. Befindet sie sich auf der Z-Höhe 0, so wird die Höhe des Meshs nicht verändert.

    Wenn du im Editor mit realen Höhendaten arbeitest, könntest du auch diese Kachel vom Editor exportieren und in Blender als Höhenmesh nutzen. Das musst du dann nur etwas hin- und herschieben, bis es passt.


    Machst du es manuell (du kannst dich damit ja erstmal austesten), könntest du ein extra Mesh erstellen, dass eine leichte Biegung nach oben hat. Nun, sofern in die sco eingetragen, setzt OMSI die Höhe aller Vertices, die sich (von oben gesehen) auf der Plane befinden, auf die der Plane.


    Würdest du das Beispiel so machen, hättest Du am Ende deine Kreuzung leicht gebogen. Wenn du willst, kann ich dir auch Mal gerne eine Kreuzung, wo ich die Straße an einen Deich "angelegt", gebogen habe, privat schicken. Dann wird das ganze eventuell etwas klarer. :)

  • Verstehe ich die grundsätzliche Reihenfolge richtig, dass zuerst in Blender die Kreuzung/das Straßenobjekte flach erstellt wird (mit zugehöriger Texturierung und Exportieren ins .o3d Format) und dann in einem zweiten Schritt das Höhenmesh ebenfalls in Blender erstellt wird, anhand dessen OMSI dann die Kreuzung "verbiegt". Die KI-Pfade werden dann normal im Kreuzungseditor anhand der flachen Kreuzung verlegt und werden ebenfalls in OMSI "verbogen". Ist da meine Denkweise richtig?

    Genau so funktioniert es. :)

    Wenn du im Editor mit realen Höhendaten arbeitest, könntest du auch diese Kachel vom Editor exportieren und in Blender als Höhenmesh nutzen. Das musst du dann nur etwas hin- und herschieben, bis es passt.

    Das Problem dabei ist, dass die Verformung meist ungleichmäßig ist - Straßen sind jedoch in der Regel gerade. Besonders in bergigen Regionen oder wenn die Höhendaten ungenau sind, wird das zum Problem.


    Ich habe es bei meinem einen Projekt wie folgt gemacht und damit ganz gute Ergebnisse hinbekommen:

    1. Zunächst die Kreuzung "flach" gebaut (liegt Dir ja bereits vor)
    2. Anschließend im OMSI-Editor die angrenzenden Splines auf die passende Höhe gebracht inklusive Neigung.
    3. Die Splines dann aus dem Editor exportiert (gibt dazu eine Funktion) und in Blender importiert.
    4. Zwischen die Splines ein plane-ähnliches Polygon gespannt, das jeweils auf der Höhe der Straße verläuft
      (alternativ könnte man wenn man keine lineare Steigung hat die Linien anhand einer Curve ausrichten)
    5. Die Verformung wird "sanfter", wenn sowohl das Kreuzungsmesh als auch das Plane-Mesh gleichmäßig kleine Faces haben, dazu ggf. das Round-Messer aktivieren (STRG+R oder so ähnlich...)

    Meine Blender-Kenntnisse sind schon etwas eingerostet, aber so hab ich es immer gemacht.

  • Vielen Dank für eure Antworten, die helfen schonmal ungemein. Ich habe zwar darüber nachgedacht, direkt aus OMSI die Kacheln mit zugehörigen DEM Höhendaten für das Höhenmesh zu exportieren, nur wie @Lµkas auch schon schrieb, erschienen die mir zu ungenau bzw. ungleichmäßig mit vielen Sprüngen.


    Ich würde auch das Angebot eine Beispielkreuzung mit Höhenmesh mal zu sehen, gerne wahrnehmen @Bamp


    Danke auch für die Tipps wie man Vorgehen könnte @Lµkas, ich würde nur die Schritte mit den Splines überspringen, da ich bisher alle Kreuzungen/Straßen als Objekt gebaut habe.


    Ich nehme auch mal an, dass das Höhenmesh den gleichen Koordinatenursprung haben muss, wie die Kreuzung?

  • Ich nehme auch mal an, dass das Höhenmesh den gleichen Koordinatenursprung haben muss, wie die Kreuzung?

    Nee, das ist unwichtig.

  • Nee, das ist unwichtig.

    äh - warum sollte das unwichtig sein?

    Du willst ja dass der Höhenpunkt A auch Punkt A in der Höhe verändert und nicht Punkt C an der anderen Kreuzungsseite?!


    Was es noch zu beachten gibt, das Höhenmesh sollte an jeder Seite etwas über die eigentliche Kreuzung hinausragen, ansonsten passiert es dass Pfade am Rand der Kreuzung nicht korrekt verformt werden.

  • äh - warum sollte das unwichtig sein?

    Ich bin davon ausgegangen, dass mit "Koordinatenursprung" der Objektursprung, Origin, Pivot Point gemeint ist. Der kann auf (0|0|0) oder auch auf (23894|923832|293048) liegen. Das ist völlig egal. Klar ist aber natürlich, dass das Mesh an sich auf der Höhe des Objektmesh liegen sollte.

    Mal angenommen, das Deformmesh befindet sich auf der Höhe (x|y|20). Wenn dann der Objektursprung des Szenerieobjektes in OMSI auf (x|y|0) wäre, dann würde man das Objektmesh 20 Meter höher vorfinden.

  • Ich empfehle übrigens meine "Pfusch"-Taktik:


    Da ich gerne selber direkt den Einfluss auf die Höhenverformung nehme, baue ich die Kreuzung inklusive Höhenverläufe. Mein Heightmesh spanne ich dann nur über die Fahrbahn, und ziehe sie mit Doppel-G etwas von der Bordsteinkante weg, sodass unter keinem der Verticies der Originalkreuzung sich ein Stück des Deformationmeshes befindet. Somit werden nur die Pfade, nicht aber das Mesh selber verformt.


    Das ganze erfordert etwas Übung, aber ich bin mit dem Ergebnis sehr zufrieden, weil die Höhenverformung sehr gezielt im Mesh erfolgt. Nur die Fußgängerpfade müssen von Hand in der Höhe variiert werden, aber da die Fußgänger sich die Laufhöhe aus dem Mesh nehmen, kann man da sehr grob vorgehen.

    Anders geht es mit etwas Probiererei allerdings natürlich auch.


    Grüße

  • Ich habe die Methode jetzt einmal an einer neuen Kreuzung für die Karte ausgetestet und dabei sowohl positive als auch negative Ergebnisse erzielt. Zwar hat soweit die Höhenverformung gepasst, aber ich hatte vor allem Probleme mit den zugehörigen Straßenmarkierungen. Man muss jedoch hierzu sagen, dass diese als separates Objekt über der Fahrbahn hinzugefügt worden sind. Als Problemlösung habe ich versucht, dass Mesh feiner zu unterteilen, was aber nur teils geholfen hat. Daher werde ich wenn versuchen bei der nächsten Kreuzung die Markierungen "einzumeshen" und hoffen, dass das Problem nicht mehr besteht.






    Noch zwei Fragen die meinerseits aufgekommen sind:


    Kann man pauschal sagen, dass für diese Kreuzung inklusive Markierungen und Höhenmesh 2857 Tris viel sind oder lässt sich das so nicht behaupten?


    Zusätzlich noch die Frage von wo man, natürlich auf legalem Weg, Texturen für u.a. Straßenmarkierungen und Gehweg nutzen kann?

  • Kann man pauschal sagen, dass für diese Kreuzung inklusive Markierungen und Höhenmesh 2857 Tris viel sind oder lässt sich das so nicht behaupten?

    Wie groß ist sie denn? :)


    Zusätzlich noch die Frage von wo man, natürlich auf legalem Weg, Texturen für u.a. Straßenmarkierungen und Gehweg nutzen kann?

    https://www.textures.com/

  • Meine (die ich dir geschickt habe) ist in etwa auch so lang, hat etwas weniger Polygone, die hat aber auch fast keine Fahrbahnmarkierungen. Daher würde ich sagen, das passt völlig. ;-)

  • Zusätzlich noch die Frage von wo man, natürlich auf legalem Weg, Texturen für u.a. Straßenmarkierungen und Gehweg nutzen kann?

    Hier befinden sich auch ein paar Texturen:

    Kann man pauschal sagen, dass für diese Kreuzung inklusive Markierungen und Höhenmesh 2857 Tris viel sind oder lässt sich das so nicht behaupten?

    Ich würde pauschal (bin aber immer vorsichtig mit solchen Aussagen...) sagen, dass bis zu 4000-5000 Tris für eine Kreuzung in Ordnung ist. Der Knackpunkt bei Kreuzungsobjekten ist ja, dass sie in der Regel nur einmal vorkommen, Standardkreuzungen (bspw. einfache T-Einmündungen) insb. wenn sie im Hintergrund sind und vom Spieler nicht befahren werden, können dann ein bisschen spartanischer sein.


    Wichtiger als das Mesh sind aber erfahrungsgemäß die Texturen: Unbedingt ein 2n Format benutzen, also beispielsweise 256x512, 64x64, 1024x2048 usw. Außerdem ist das DDS-Format tendenziell besser was Performance angeht - komprimiert allerdings auch. Was die Texturgröße angeht, ist man sich etwas uneinig, ich finde beispielsweise, dass man bei "langweiligen" Asphalttexturen es bei 256px² belassen kann, 512px² kann man dann bei Platten/Kopfstein/... machen, wo es mehr gibt als eine Farbe oder Riffelungen - andere schwören auf 1024px² oder maximal komprimierte Texturen, die sich wiederholen und beispielsweise gespiegelt sind (da kommen dann Exotiker wie 64x512px raus).

  • @Lµkas Vielen Dank auch dafür, die Texturen nutze ich tatsächlich schon unter anderem für die Fahrbahn. Ich gucke dann aber nochmal drüber, vllt. nutze ich davon dann auch noch andere.


    Unter Umständen versuche ich mich auch noch daran, selber die Texturen zu fotografieren und zu recht zu schneiden. Da war ich nur bisher nicht so zufrieden mit.

  • Die Polyzahl ist ganz unterschiedlich, diese hier z.B. hat 945 (allerdings ohne Markierungen)


    Eine Kreuzung wie du sie hast würde ich ohne Markierungen auf ca. 600 ansetzen. Allerdings habe ich auch schon Monster mit >7000 gebaut, allerdings mit Straßenbahngleisen & Weichen, die natürlich die Zahl extrem in die Höhe schießen lassen.


    Edit:

    Hier sind aber auch so Späße mit dabei wie Spurrillen an der Haltestelle und weiße Pflastersteine als Straßenmarkierung in der Seitenstraße. Ohne diese müsste sie ca. bei 700 liegen