3D Map Formen mit Unity

Grafik, Musik, Sound, Spieledesign, Spielmechanik, Story Writing und sonstiger kreativer Kram, der nichts mit Programmieren zu tun hat.
vf-studio
Beiträge: 18
Registriert: 28.10.2016, 00:43

3D Map Formen mit Unity

Beitrag von vf-studio »

Hallo ihr lieben,
Ich habe für mein Projekt eine kartographische Karte erstellt und möchte diese mit Unity in ein 3D Terrain umwandeln. Jetzt kommt mir die Frage ob es einfacher geht als 1:1 nach zu bauen.
Ich hatte an die Idee gedacht meine kartographische Karte als Textur auf eine Plain zu legen und mit dem Sculpt Tool dann nachzubauen. Aber dies erweist sich dann leider doch als etwas schwieriger da man die Konturen doch nicht so hin bekommt damit das Verhältnis passt.

Jetzt stelle ich euch mal frecher Weise die Frage wie macht ihr so etwas? Gibt es andere Techniken um um seine Map zu digitalisieren ?

Ich habe natürlich schon von Hightmaps usw gelesen aber ich hätte eben gerne eine 1:1 Karte von meiner gezeichneten Idee.

Ich bedanke mich schon mal
Liebe Grüße
Benutzeravatar
Schrompf
Moderator
Beiträge: 4996
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: 3D Map Formen mit Unity

Beitrag von Schrompf »

Könnte helfen, es in ein Vektorgrafik-Programm zu importieren, damit Polygone draus werden. Und die könntest Du dann im Code extrudieren oder ein Programm finden, was das tut. Geht sicher irgendwie mit nem Blender-Addon, wenn das jemand bedienen kann.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4272
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: 3D Map Formen mit Unity

Beitrag von Chromanoid »

Kannst Du mal ein Beispiel posten? Also damit man ungefähr weiß wie Deine Karte aussieht.
Tiles

Re: 3D Map Formen mit Unity

Beitrag von Tiles »

Hi VF-Studio,

Hm, über ein Vektorprogramm / 3D Programm würde ich nur gehen wenn du mit einem Polygonterrain arbeiten willst. Geht natürlich auch. Aber das Unity Terrain kann so viel ich weiss immer noch nur Heightmaps. Und bei einem Polygonobjekt würdest du die ganzen Terraintools verlieren. Bäume und Gras müsstest du dann zum Beispiel einzeln von Hand pflanzen, und kannst sie nicht mehr einfach so aufs Terrain malen.

Eine Heightmap ist ein einfaches Bitmap Graustufenbild. Und auch in Unity wirst du da wohl nicht direkt zum Ziel kommen. Da könntest du ja nur von Hand nachmalen, das was du schon probiert hast. Und dafür bieten die Unity Terrain Tools zu wenig Kontrolle. Die nötige Heightmap erstellst du besser ausserhalb.

Zuerst mal wie so eine Heightmap funktioniert: die dunklen Stellen werden in deiner Heightmap die Täler. Die hellen Stellen werden die Berge. Das heisst du bewegst dich zwischen Schwarz, ganz tief, und Weiss, ganz hoch.

Und genau so musst du nun deine Karte ummalen. Wo du einen Berg haben willst machst du die Karte hell, wo du ein Tal haben willst machst du die Karte dunkel. Das kannst du zum Beispiel in Gimp tun.

Und wenn du die Heightmap fertig hast kannst du sie einfach in ein Unity Terrain laden :)

LG

Tiles
vf-studio
Beiträge: 18
Registriert: 28.10.2016, 00:43

Re: 3D Map Formen mit Unity

Beitrag von vf-studio »

Ohhh hey, so viele Antworten und keiner dabei der mir sagt was für ein Noob ich bin? Ich glaube ich habe endlich mal ein super Forum gefunden! Das freut mich wirklich sehr!!!

ALso ich zeige euch mal hier meine Kartographische Map.


Bild

Da wo manche Wege aufhören usw sind normalerweise noch die Points of Interest wie Dungeoneingänge und Städte usw. diese habe aber ausgeblendet.
Das Grau was bei manchen Teilen drumrum ist sind auch Berge bzw Felswände. Ich weiss ja nicht ob sich hier Jemand mit Ultima Online auskennt. So hatte man dort auf jeden Fall auch die Karten gemalt. Je nach Farbe hat das System dann Terrain daraus gemacht. Gelblich war Sand und Strand, das Grau waren Felswände und Berge usw.
Ich hatte schon versucht die Karte als Textur auf die Plane zu legen und mit den Terraintools einfach anzuheben was Berg ist usw wie man eben Terrains sculptet. Aber das wird zu ungenau.

Zur Heightmap. Damit bin ich mal so überhaupt nicht bewandert. Ich hatte mal eine in Unity importiert nur zum testen. Und hatte dann lauter Spitzen und ein wirklich hässliches Terrain, ich hatte sicher was Falsch gemacht. ABer ich wüsste halt nun echt nicht wie ich daraus ne Hightmap erschaffe welche dann so Original wie möglich ist. Mit Gimp komme ich zum beispiel auch gar nicht klar. Ich nutze lieber Photoshop wenn ich was machen muss.

Wie verhält sich das mit der Polygonmap? Davon habe ich auch noch gar nix gehört. Die terraintools zum Automatischen SPawnen wäre jetzt nicht so schlimm. Was sich als Problem darstellen wird ohne Tools wäre dann das Texturepainting welches ich als wichtig erachte. Das Baum und Gras setzen würde man mit ProGrids und Octave Link: https://www.assetstore.unity3d.com/en/#!/content/45021 hinbekommen. In UO hat man auch das meiste per Hand gespawnt.
Das wichtigste ist die Karte die fast 1:1 sein soll von den Regionen her. Eine schöne Weitläufige Karte.

Ich bedanke mich wirklich nochmal für die zahlreichen Antworten! Ich bin richtig Froh dass es hier besser zu geht als in anderen Foren.
Tiles

Re: 3D Map Formen mit Unity

Beitrag von Tiles »

Anfänger waren wir alle mal ;)

Hui, da hast du ja was vor. Egal mit welcher Methode, du wirst da ganz schön Probleme bekommen das Bild hier wirklich eins zu eins in eine Heightmap umzuwandeln.

Bevor wir hier weitermachen musst du dich erst mal entscheiden welchen Weg du gehen willst. Heightmap oder Mesh. Das sind zwei grundverschiedene Methoden. Ich würde dir als Anfänger raten erst mal mit der Heightmap anzufangen. Beim Mesh müssten wir vermutlich sonst bei Adam und Eva anfangen ^^
Zur Heightmap. Damit bin ich mal so überhaupt nicht bewandert. Ich hatte mal eine in Unity importiert nur zum testen. Und hatte dann lauter Spitzen und ein wirklich hässliches Terrain, ich hatte sicher was Falsch gemacht. ABer ich wüsste halt nun echt nicht wie ich daraus ne Hightmap erschaffe welche dann so Original wie möglich ist. Mit Gimp komme ich zum beispiel auch gar nicht klar. Ich nutze lieber Photoshop wenn ich was machen muss.
Photoshop ist wie Gimp auch einfach ein Bildbearbeitungsprogramm. Photoshop ist hier sogar besser weil es 32 Bit Floats pro Channel kann. Gimp kannn nur 8 Bit pro Kanal. Siehe nächster Punkt.

Eine Heightmap ist wirklich nichts anderes als ein Graustufenbild. Wenn es zu treppenartig wird hast du vermutlich ein 24 Bit (8 Bit pro Kanal) Bild geladen. Das sind dann 256 Graustufen. Klar dass das stufig wird. Das kannst du aber in Unity mit dem Smoothpinsel nachbearbeiten.

Erster Schritt wäre mal aus deiner gemalten Map ein Bild zu machen mit dem man wirklich arbeiten kann. Das bauen wir dann nach und nach auf eine Heightmap um. Und das bedeutet dass zum Beispiel das Wasser einfarbig sein sollte. Am Besten Schwarz weil es am tiefsten liegt. Was es hier grade tierisch schwierig macht ist dass das Bild in grossen Bereichen so krieselig ist. Das stört.
Tiles

Re: 3D Map Formen mit Unity

Beitrag von Tiles »

Ich habe mir mal eben den Spass gegönnt ... .

Step 3, das erste in der Liste da unten, könntest du jetzt bereits in ein Unity Terrain laden. Wenn es quadratisch wäre. Heightmaps müssen quadratisch sein, und Power of Two. 256x256, 512x512, 1024x1024 sind gängige Grössen.

Ist natürlich alles quick and dirty. Und hat auch Stufen weil in Gimp gepinselt. Ich will dir ja nicht die Arbeit abnehmen, sondern zeigen wie es geht :)

Je sauberer du da arbeitest um so besser natürlich das Resultat. Ich würde den Rest dann in Unity erledigen. Die Treppeneffekte kannst du wie gesagt mit dem Smooth Tool beseitigen.
Dateianhänge
step3.jpg
step2.jpg
step1.jpg
Zuletzt geändert von Tiles am 03.12.2016, 10:15, insgesamt 4-mal geändert.
vf-studio
Beiträge: 18
Registriert: 28.10.2016, 00:43

Re: 3D Map Formen mit Unity

Beitrag von vf-studio »

So in etwa ? Na dann versuch ich mich mal im Heightmapping :D das schwarze wasser habe ich schonmal gemacht das sieht ungefair so aus :)

Bild

;) lg
Tiles

Re: 3D Map Formen mit Unity

Beitrag von Tiles »

Ah, crossposting.

Japp. Du bist auf dem richtigen Weg. siehe oben :)
vf-studio
Beiträge: 18
Registriert: 28.10.2016, 00:43

Re: 3D Map Formen mit Unity

Beitrag von vf-studio »

Ahh okay also wie mache ich das jetzt damit es nicht zu hoch oder zu tief wird ? Man müsste ja vorher wissen "welches Grau" welche höhe dann in der Engine hat.
Oder seh ich das falsch?
Tiles

Re: 3D Map Formen mit Unity

Beitrag von Tiles »

Das kannst du in Unity nachregeln. Die Höhe des Terrains. Wichtig ist zu wissen dass Schwarz der tiefste Punkt ist, und Weiss der höchste Punkt.

Du kannst dir auch in Photoshop mal einen Farbverlauf von Schwarz nach Weiss anlegen. Dann siehst du ungefähr welche "Farbe" da welche Höhe ergibt.
Zuletzt geändert von Tiles am 03.12.2016, 10:19, insgesamt 1-mal geändert.
vf-studio
Beiträge: 18
Registriert: 28.10.2016, 00:43

Re: 3D Map Formen mit Unity

Beitrag von vf-studio »

Okay dann mach ich den rest mal grundgrau :) Damit meins so aussieht wie deins :D melde mich gleich.

Ach und fals man schneller kommunizieren möchte bin ich auch unter Mail : thirias@vf-studio.de zu erreichen oder aber im Discord unter https://discord.gg/NS8P5FN
Tiles

Re: 3D Map Formen mit Unity

Beitrag von Tiles »

Woah, ich hab auch noch anderes zu tun, sorry ^^
vf-studio
Beiträge: 18
Registriert: 28.10.2016, 00:43

Re: 3D Map Formen mit Unity

Beitrag von vf-studio »

Ja verständlich aber danke trotzdem vielmals ich mach den rest jetzt in nem grau und dann Poste ich hier wieder :)

Danke vielmals!!
vf-studio
Beiträge: 18
Registriert: 28.10.2016, 00:43

Re: 3D Map Formen mit Unity

Beitrag von vf-studio »

Ich hoffe Doppelposts sind nicht so schlimm. Auf jeden Fall hab ich es schon mal soweit :
Bild

Wie müsste ich da jetzt weiter machen ?
Tiles

Re: 3D Map Formen mit Unity

Beitrag von Tiles »

Bevor du weitermachst, mach das Bild Quadratisch. Und in eine Power of 2 Grösse. 1024x1024 zum Beispiel.

Und dann musst du schlicht die Berge reinmalen :)

Hm, du könntest dir einen entsprechenden Bergpinsel erstellen, in deiner gewünschten Form. Das würde die Sache deutlich vereinfachen. Für Photoshop habe ich aber noch keine Pinsel gebaut.

Andere Möglichkeiten wären schon existierende Pinsel mit einem Fallof zum Rand hin. Wolkenpinsel zum Beispiel. Ich selber habe mit meiner quick and dirty Methode schlicht einen weissen Strich entlang der Bergkette gezogen, und dann mit dem Wischtool kleine Erosionskanäle reingemalt.

Was du auf jeden Fall tun musst ist die Heightmap ab und zu in ein Unity Terrain zu importieren um nachzusehen ob das von der Form her passt.
vf-studio
Beiträge: 18
Registriert: 28.10.2016, 00:43

Re: 3D Map Formen mit Unity

Beitrag von vf-studio »

Ich werde mich daran mal ausprobieren und hier ab und an meine Zwischenstände Posten. Ich bedanke mich herzlichst für die Tips und die Hilfestellungen.

Wünsche ein tolles Wochenende euch allen :)
Benutzeravatar
xq
Establishment
Beiträge: 1585
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: 3D Map Formen mit Unity

Beitrag von xq »

Ganz wichtige Sache, die Tiles noch nicht erwähnt hat:
Deine Karte ist eine perfekte (orthographische) Draufsicht auf die Welt. Wenn du also einen Berg in der seitlichen perspektive hast, wie auf deiner bisherigen Karte, wird dein Berg im Spiel nacher komisch aussehen. Die Details zu der Gipfelspitze machst du über einen Farbverlauf zur Spitze hin, nicht in dem der Berg perspektivisch dargestellt wird ;)

Grüße
Felix
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
Tiles

Re: 3D Map Formen mit Unity

Beitrag von Tiles »

Guter Hinweis. Ich bin davon ausgegangen dass vf-studio das weiss. Aber man soll ja nie zu viel voraussetzen :)
vf-studio
Beiträge: 18
Registriert: 28.10.2016, 00:43

Re: 3D Map Formen mit Unity

Beitrag von vf-studio »

Mhh okay da muss ich doch nochmal nachhaken. Wie genau meinst du das mit dem Verlauf also dass ich immer mehr ins graue bis zum weiß gehe ? Oder gibts da andere Tricks?

Liebe Grüße und schönen Dank :)
Tiles

Re: 3D Map Formen mit Unity

Beitrag von Tiles »

Ich denke ein Bild sagt mehr als tausend Worte. Lad das mal in ein Unity Terrain und schau dir das Ergebnis an :)

Beim grossen Berg habe ich nach einer Heightmap gegoogelt und mir einen Berg daraus freigestellt. Wenn man mal die Form kennt kannn man das aber auch freihand malen. Und immer dran denken, du kannst das auch in Unity noch weiterbearbeiten. Das gemalte Bild muss nicht schon komplett perfekt sein.
Dateianhänge
heightmap.jpg
heightmap.jpg (9.39 KiB) 8940 mal betrachtet
vf-studio
Beiträge: 18
Registriert: 28.10.2016, 00:43

Re: 3D Map Formen mit Unity

Beitrag von vf-studio »

Hallöchen,

also ich hab meine Hightmap mal Importiert und auch deine Berge getestet. Jetzt habe ich mal ein Screen gemacht und habe folgendes Problem.

Meine Map ist im Unity Spiegelverkehrt.


Kann man das irgendwie lösen? Ich schau nebenbei schon Videotutorials aber die haben das Problem nicht so wirklich...

Als Test habe ich einen Berg von deiner Hightmap ausgeschnitten und auf meine Map mit platziert funt auch aber ist halt von der höhe nicht so richtig.

Rein Logisch gesehen hab ich in Photoshop meine % Zahl die ich von Schwarz nach Weiß gehen kann. Wenn ich 90% einstelle sollte die höhe ja dann ungefair 10 betragen oder etwa nicht?

Hier die Bilder:


Hier mit dem Berg aus der anderen hightmap ausgeschnitten und angepasst

Bild

Hier mal so halb komplett :D:D

Bild

und hier zum deutlich machen der höhe

Bild

liebe Grüße und nen schönen 2. Advent
Tiles

Re: 3D Map Formen mit Unity

Beitrag von Tiles »

Uha, ich habe ganz vergessen dass das dowe Unity Terrain immer noch nur RAW Heightmaps importieren kann. Das Letze Mal dass ich das gemacht habe war 2012 oder so. Und ich habe grade nichts installiert das meine Heightmap in das Unity RAW umwandelt -.-

Muss erst mal schaun mit welchem Programm ich das damals gemacht habe, Gimp kanns nicht.

Jedenfalls, die Höhe des Terrains, also wie hoch deine Berge werden, legst du in den Einstellungen fest. Terrain Height. Mach das mal auf 50 oder so.
Meine Map ist im Unity Spiegelverkehrt.
Spass mit dem RAW Format :D

Vor dem exportieren Mirroren bis es passt. Wenn ich mich noch recht erinnere war das in beide Richtungen geflippt :)
Dateianhänge
terrainheight.jpg
vf-studio
Beiträge: 18
Registriert: 28.10.2016, 00:43

Re: 3D Map Formen mit Unity

Beitrag von vf-studio »

So hier mal meine Tagesausbeute

Leider funktioniert das mit der Weitläufigkeit noch nicht so toll die " Meere" zwischen den Inseln sind nicht weit genug usw usw usw

da muss ich mir noch etwas einfallen lassen...

Aber alles in allem hab ich schonmal einiges ausgetestet. Und gelernt ich steig nur noch nicht ganz so toll dahinter warum ich bei Terrain und beim import der Heightmap width und height eingeben muss. Ich ralle da die Verhältnisse noch nicht. Aber ich habe einiges gelernt heute und bin minimal stolz auf mich.

Bild

So dann allen einen schönen Abend ich geh dann mal auf Nachtschicht ^^ bis Morgen
Tiles

Re: 3D Map Formen mit Unity

Beitrag von Tiles »

Na also, es geht voran :)

Für die Verhältnisse, dass die Inseln weit genug auseinander liegen, musst du selber sorge. Du wolltest das ja so genau wie möglich an der Karte dran ;)
Aber alles in allem hab ich schonmal einiges ausgetestet. Und gelernt ich steig nur noch nicht ganz so toll dahinter warum ich bei Terrain und beim import der Heightmap width und height eingeben muss.
Width und Lenth ist wie gross dein Terrain sein soll, in der Fläche. Und Height gibt an wie gross der Abstand zwischen dem tiefsten Punkt, also Schwarz auf deiner Heightmap, und dem höchsten Punkt, also Weiss auf deiner Heightmap, ist. Zwischen dem tiefsten Tal und dem höchsten Berg eben :)
Benutzeravatar
xq
Establishment
Beiträge: 1585
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: 3D Map Formen mit Unity

Beitrag von xq »

Was mir grade noch eingefallen ist, was das Problem mit den Insel lösen könnte:
Erzeuge für jede Insel eine eigene Heightmap+Terrain. Dann kannst du nacher in Unity die Inseln einfach durch die Gegend schieben und an die richtige Stelle packen und musst nicht immer die komplette Heightmap neu importieren, wenn sich eine einzige Insel ändert.
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
vf-studio
Beiträge: 18
Registriert: 28.10.2016, 00:43

Re: 3D Map Formen mit Unity

Beitrag von vf-studio »

Hey Tiles,

ja schon klar aber ich bestimme doch die Größe des Terrains auch in der Terrain einstellung warum also nochmal im importfenster der Hightmap?

Und ich meinte natürlich auch Width und Length ^^ Was das ist weis ich schon und auch die höhe verstehe ich bin ja nich ganz doof ^^
Wie gesagt ich ralle nur das mit dem doppelten Einstellungen nicht.

Ahh und ja danke MasterQ ;) Die Idee hatte ich Gestern auch schon und hab mich daran mal versucht bekomme da auch die größenverhältnisse nicht richtig hin. DIe inseln sind so ziehmlich klein sollten in der Dimension aber sehr Weitläufig sein. Was ich aber nicht so ganz hinbekomme ausser per stretchen in Photoshop. Aber da passt dann wieder anderes wieder nciht. Ich denke ich muss die Map neu malen im Photoshop und dann aber gleich auf die richtige Dimension und Göße.

Ich probier mich nun mal weiter :D
Benutzeravatar
xq
Establishment
Beiträge: 1585
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: 3D Map Formen mit Unity

Beitrag von xq »

Zu der Größe: Dein Terrain hat zum einen eine Größe in Quadraten (Länge, Breite) und in Ingame-Einheiten (Länge, Breite). Das erste gibt die Auflösung deines Terrains an, das zweite die tatsächliche Größe.
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
vf-studio
Beiträge: 18
Registriert: 28.10.2016, 00:43

Re: 3D Map Formen mit Unity

Beitrag von vf-studio »

Also ist die Hightmap einstellungen die In Game Größe ? Somit müsste ich ja theoretisch nicht jedesmal meine hightmap in Photoshop abändern sondern kann die Einstellungen einfach beim neu importieren ändern.

Ich bin mal gespannt ob ich das noch so hinbekomme wie ichs brauche.

Kann ich in Unity Terrain an Terrain schieben oder darf ich es auch überlappen? ALs beispiel ich habe ne 500x500 Terrainplain mit ne runden Insel darauf. Dann habe ich eine 2te mit 1024x1024 mit einem Kontinent. So da aber von der Terrainplain meistens immer noch unbearbeitetes Ground hat, macht es was aus wenn ich einfach die Plains so übernander schiebe dass die Insel nah genug am Kontinent ist ? Ich wis ich bin kein guter Erkläbärr :D

Dann habe ich noch ne Frage gibt es ne Möglichkeit Scene Items also irgendwelche Prefabs an die stelle zu setzen wo auch meine Maus sich befindet? Oder muss ich wirklich jedes Prefeb mit den Koordinaten oder den Pfeilern verschieben? Cool wäre doch anwählen taste drücken blubb ist es bei der Maus oder zumindest Da wo die Cam in der Sceneview ist ^^

So herzlichen Dank wieder :)
Tiles

Re: 3D Map Formen mit Unity

Beitrag von Tiles »

Also zum Ausprobieren würde ich das vielleicht machen. Aber mehrere Terrains würde ich da nicht unbedingt verwenden. Jedes Terrain schlägt ja gleich mal mit ein paar Drawcalls zu Buche, und da hast du noch nichts gemacht.

Überlappungen sollten aber kein Problem sein. Die sind ja unter Wasser wenn du die anderen Heightmaps für Inseln verwendest. Ausser du willst tauchen gehn. Dann sind diese Übergänge selbstverständlich zu sehen. Noch ein Grund für ein einziges Terrain.

Navigation, hmm. Wie schnell man doch die Hotkeys vergisst. Ich weiss grade gar nicht mehr wie das ging ^^

Aber das was du willst geht glaube ich nicht. Zumindest nicht nativ. Siehe Hotkeys: https://docs.unity3d.com/Manual/UnityHotkeys.html

Such mal im Asset Store. Vielleicht gibts da was brauchbares.
Antworten