Unreal Engine Terrain mit Google Maps Textur
In diesem kurzen Tutorial zeige ich wie man in der Unreal Engine ein Terrain mit Google Maps Textur erstellt und den Editor so einstellt, damit man damit gut arbeiten kann. Mit dem Setup kann man schnell realistische Umgebungen erzeugen.
Unreal Engine Terrain mit Google Maps Textur
Worum geht es? Ich möchte eine echte Rennstrecke in der Unreal Engine modellieren. Als Beispiel nehme ich Monza. Da ich die Strecke (die Fahrbahn) realistisch skaliert haben möchte, setze ich auf echte Daten. Google Maps bietet mir mit der Satelliten Ansicht genau was ich benötige. Ich positioniere mich also im Browser auf die Rennstrecke von Monza, skaliere die Ansicht damit die gesamte Strecke sichtbar ist und mache einen Screenshot. Das Ergebnis sieht wie folgt aus:
Glücklicherweise kann man die Beschriftungen der Karte deaktivieren, so bleibt neben den UI Elementen nur das Satellitenbild über. Wichtig ist, dass man den Maßstab mit am Bild hat. Aufgrund dessen habe ich mir die Dimensionen der Rennstrecke ca. mit 2,4 x 1,3 km ausgerechnet. Das wird später relevant.
Terrain
Im Unreal Engine Editor erstelle ich ein neues Level und dort ein neues Terrain. Die spannende Frage ist nun, welche Werte setzt man nun, damit das Terrain die korrekte Größe hat? Schließlich möchte ich mit meiner 1,8 Meter großen Spielfigur auch auf der Strecke herumlaufen, mir die Rennwagen ansehen oder auf der Tribüne Platz nehmen. Ich habe folgende Werte verwendet:
Bei meinen Erwägungen beziehe ich mich auf die offizielle Dokumentation. Der erste interessante Wert ist die Section Size. Ich kann 63×63, 126×126 oder 254×254 wählen. Dabei geht es darum wie fein eine Section unterteilt ist. Je mehr Quads eine solche Section enthält, desto feiner ist die Heightmap und desto feiner kann man das Terrain verformen. Da ich ein sehr großes Terrain erstelle, möglichst wenig Polygone rendern aber trotzdem das Terrain schön modellieren möchte habe ich mich für die gröbste Unterteilung, aber mit 2×2 Sections pro Component entschieden. Insgesamt wird das Terrain in 15 (5×3) Componenten unterteilt.
Man muss ein wenig mit den Werten herumspielen. Schlussendlich kam bei mir eine Overall Resolution von 631×379 heraus. Das entspricht 631 mal 379 Zentimeter. Viel zu klein, weshalb ich die Skalierung um den Faktor 400 vergrößert habe. Die Engine rechnet in Zentimeter, d.h. bei einem Scale von 100 habe ich Angaben in Metern, mit 400 das vierfache der Overall Resolution in Metern. Das entspricht in meinem Fall 2,5 mal 1,5 Kilometer. Da passt meine Rennstrecke genau hinein.
Genug gerechnet. Hat man das Terrain erstellt, erscheint dieses im Editor. Aufgrund der Größe ist es aber unmöglich mit dem Actor die Maße im simulierten Spiel abzuschätzen. Wir brauchen dazu mindestens eine Textur.
Textur
Mit dem Terrain habe ich folgendes vor:
- Rennstrecke mit dem Spline Tool hinzufügen
- Terrain mit Höhen ergänzen
- Terrain texturieren
Wie eingangs erwähnt möchte ich nun die Karte von Google Maps verwenden um die Rennstrecke exakt zu modellieren. Ich lege deshalb ein neues Material für das Terrain an und füge diesem das Bild als Textur hinzu.
Ohne Anpassung wird das Bild nun hunderte Male als winzige Tiles angezeigt. Ich möchte aber nur genau ein Bild skaliert auf das gesamte Terrain. Damit das klappt füge ich ein TexCoord Node hinzu und setze die UTiling und VTiling auf sehr kleine Werte. Man muss ein wenig probieren um die korrekte Größe zu finden. Meine Textur war zusätzlich auch noch um 90 Grad gedreht, weshalb ich zusätzlich noch einen CustomRotator hinzugefügt habe. Der dreht das Bild um 270 Grad (0,75 – Rotation Angle) damit das passt. Das fertige Ergebnis:
Mit diesem Ergebnis kann ich die Punkte er Spline für die Rennstrecke setzen und später auch mit dem Texturieren des Terrains beginnen. Für die Höhendaten werde ich wohl TV Bilder verwenden.
Navigation im Editor
Bei so enorm großen Terrains bringt einem Default Einstellung vom Unreal Editor wenig. Man zoomt ewig und bewegt sich mit der Kamera nur mikroskopisch weiter. Deshalb gibt es folgende hilfreiche Settings:
Mit dem skalierten Kamera Zoom und der besseren Scroll Geschwindigkeit navigiere ich recht schnell auf dem Terrain. Passt man zusätzlich auch noch die Geschwindigkeit der Kamera an, dann lässt es sich optimal arbeiten.
Fazit
Ich habe gezeigt wie man Screenshots aus Google Maps nutzt um ein Terrain in realistischen Dimensionen in der Unreal Engine erzeugt. Ich nutze diese Google Maps Textur um eine Rennstrecke des Formel 1 Kalenders auf den Meter genau nachzubauen. Mit UE5 sind so fotorealistische virtuelle Welten möglich.
Hallo,
wenn ich das Material als Landscape Material einsetze bleibt das Landscape grau.
Bei den Landscape Proxies kann ich das Material einsetzen, Woran liegt das?
Benutze UE 5.1.1