Seite 1 von 1
3D-Outdoor-Leveldesign ohne Heightmap
Verfasst: 10.09.2009, 15:12
von shadow
Hallo,
wie könnte Outdoor-Leveldesign ohne Heightmap funktionieren?
Darüber würde gerne ein wenig Brainstormen, Diskutieren etc... oder gibt es Spiele, die das bereits gutaussehend praktizieren?
Hintergrund: Ich suche gerade nach einer Idee, wie ich unser 2D-ISO-Spiel auf 3D umstellen kann. Vorher wurde das Terrain tilebased erstellt, auch die Figurenbewegung war auf Tiles beschränkt. Dies ist nun nicht mehr so. Weder das Terrain noch die Figuren sollen ab jetzt auf die Tiles beschränkt werden. Die Perspektive soll relativ ähnlich bleiben, also schräg von oben.
Objekte wie Figuren, Bäume, Gebäude, etc. sind Meshes, erstellt von unserem Grafiker. Jetzt ist da noch unser Leveldesigner, der diese Objekte in ein Level verbauen soll. Was aber dazu noch fehlt ist Terrain...
Erster Gedanke: Terrain mit Heightmap realisieren. Allerdings gefällen mir Heightmaps nicht wirklich. Ok, das ist jetzt eine Geschmacksfrage, aber ich bin halt immer auf der Suche nach alternativen Lösungen, wenn mir was nicht gefällt... deshalb dieser Thread.
Zweiter Gedanke: Tiles. Also auch in 3D zumindest den Boden mit Kacheln bauen. Dann bin ich aber auf eine Ebene reduziert und es geht wieder das stückeln los... fühl ich mich auch nicht gut dabei.
Dritter Gedanke: Den Rest vom Level (außer den Bäumen, Gebäuden etc.) auch von Hand modellieren. Problem: Erstens klingt das sehr aufwändig. Viel größeres Problem bei uns: 3D-Designer und Leveldesigner sind bei uns zwei unterschiedliche Personen. Der 3D-Designer soll keine Levels bauen, der Leveldesigner soll keinen Modeller bedienen müssen, sondern lediglich einen Level-Editor.
So, das sind jetzt drei wahrscheinlich recht gängige oder denkbare Verfahren, und alle drei passen mir nicht :D .
Dann ging das Grübeln los: Wie kriegt man in einer schräg-von-oben-3D-Landschaft ein gutaussehendes Terrain ohne Heightmap oder starre Tiles hin, und ohne dass der Leveldesigner modeln muss.
Ich dachte schon an viele Terrain-Bausteine, also vielleicht ein paar m² steinigen Boden als simple Textur. Also schon eine Art Tile, nur viel größer. Am Rand kann der Leveldesigner Steine hinsetzen. Er kann aus verschiednen Steinsorten auswählen, in allen Größen und Formen. Wenn es dann beispielsweise bergauf gehen soll, könnte man ja wieder die Bodentextur nehmen, sie ein paar Grad rotieren, dass es eben bergauf geht. Nur sieht man dann genau den Schnittpunkt dieser zwei Boden-Texturen. Vielleicht kann man dies irgendwie kaschieren? Grasbüschel auf diese "Schnittstelle" vielleicht? Oder fällt das dann auf?
Fällt euch da was ein?
Re: 3D-Outdoor-Leveldesign ohne Heightmap
Verfasst: 10.09.2009, 15:33
von Schrompf
Ich hätte der Einfachheit wegen 3D-Tiles genommen - also praktisch nur vorgebastelte statische Modelle, die zusammensteckbar sind. Die Texturierung an solchen Neigungs-Übergängen ist ein klassisches Problem - eine nur von oben projezierte Textur streckt sich, je senkrechter die Oberfläche ist. Der übliche Weg ist es, weitere Texturen passend zu projezieren und per AlphaBlending mit den anderen Texturen zu mischen. Diese Technik heißt offiziell Terrain Splatting und funktioniert mit allen Arten von Geometrie, auch wenn die meisten es nur mit Height Maps benutzen.
Crysis geht von einer HeightMap aus und ermöglicht dann über Marching Cubes die Editierung des Volumens. Den selben Weg minus die Ausgangs-HeightMap geht auch NVidias Cascade-Demo - beide benutzen dann Drei-Ebenen-Texturierung, um das Ergebnis einfach texturieren zu können. Der Weg über Dichte-Volumen und Meshkonstruktion scheint mir für Euch auch der geeignetste, da ihr durch die Iso3D-Perspektive kaum Detailreduktion oder sonstige großformatige Organisation braucht.
Re: 3D-Outdoor-Leveldesign ohne Heightmap
Verfasst: 11.09.2009, 09:10
von kimmi
Zugegeben ein veralteter Ansatz, aber: Voxel terrain engines:
http://www.codermind.com/articles/Voxel ... rrain.html
Nur der Vollständigkeit halber hier von mir aufgeführt.
Gruß Kimmi
Re: 3D-Outdoor-Leveldesign ohne Heightmap
Verfasst: 11.09.2009, 09:40
von shadow
Schrompf hat geschrieben:Ich hätte der Einfachheit wegen 3D-Tiles genommen - also praktisch nur vorgebastelte statische Modelle, die zusammensteckbar sind.
Inwiefern zusammensteckbar? Auch alle die gleiche Größe, quadratisch etc... dann bin ich ja bei meinem zweiten Ansatz, oder?
Schrompf hat geschrieben:Die Texturierung an solchen Neigungs-Übergängen ist ein klassisches Problem - eine nur von oben projezierte Textur streckt sich, je senkrechter die Oberfläche ist.
Das ist ja jetzt eher ein Heightmap-Problem. Wenn ich mir wie in dem Beispiel eine Bodentextur lade und bergauf neige, dreht sich die Textur ja mit.
Terrain Splatting hab ich auch schon mal gesehen, das is ist mir aber vorerst zu hoch. Erst mal wieder was lauffähiges hinbekommen.
Schrompf hat geschrieben:Der Weg über Dichte-Volumen und Meshkonstruktion scheint mir für Euch auch der geeignetste, da ihr durch die Iso3D-Perspektive kaum Detailreduktion oder sonstige großformatige Organisation braucht.
Was genau meinst du mit "Dichte-Volumen und Meshkonstruktion"? Ist mit "Detailreduktion" LoD gemeint?
kimmi hat geschrieben:Voxel terrain engines
Ich steh total auf Voxel, ehrlich. Für hier jetzt aber wohl eher nix...
Re: 3D-Outdoor-Leveldesign ohne Heightmap
Verfasst: 11.09.2009, 10:20
von Schrompf
shadow hat geschrieben:Schrompf hat geschrieben:Ich hätte der Einfachheit wegen 3D-Tiles genommen - also praktisch nur vorgebastelte statische Modelle, die zusammensteckbar sind.
Inwiefern zusammensteckbar? Auch alle die gleiche Größe, quadratisch etc... dann bin ich ja bei meinem zweiten Ansatz, oder?
Eigentlich entspricht das Deinem zweiten Ansatz, nur ohne die Einschränkungen: Du kannst doch Tiles mit beliebigen Ansatzkanten bauen, solange die Sachen zusammenpassen. Also z.B. auch 45°-Kanten, an die dann Gänge angesetzt werden, die z.b. sehr viel länger als breit sind... Du bist da nicht auf quadratisch gleichgroße Segmente begrenzt.
Schrompf hat geschrieben:Die Texturierung an solchen Neigungs-Übergängen ist ein klassisches Problem - eine nur von oben projezierte Textur streckt sich, je senkrechter die Oberfläche ist.
Das ist ja jetzt eher ein Heightmap-Problem. Wenn ich mir wie in dem Beispiel eine Bodentextur lade und bergauf neige, dreht sich die Textur ja mit.
Terrain Splatting hab ich auch schon mal gesehen, das is ist mir aber vorerst zu hoch. Erst mal wieder was lauffähiges hinbekommen.
Nein, Du übersiehst da was: Die Texturierung von gekrümmten Oberflächen ist ein grundsätzliches Problem, egal auf welche Art die zugrundeliegende Geometrie entstanden ist. Texturen werden gestreckt, je weiter die Oberflächenneigung von der Projektionsebene entfernt ist. In der 3D-Modellierung gibt es dafür Unwrapping-Tools, wo der Grafiker bestimmt, welche Flächengruppen zusammenhängend auf der Textur platziert werden und wo man absetzt und eine neue Gruppe beginnt. Für größere Welten oder automatisch erzeugte Geometrie ist das natürlich keine Option - es entspräche einer manuellen Modellierung der kompletten Szene. Die Gothic-Teile haben das bisher gemacht, HalfLife arbeitet so, ansonsten machen das aber nicht viele. HeightMaps zähle ich hier als "automatisch erzeugte Geometrie", aber es betrifft auch andere Methoden, Geometrie zu erzeugen. Unser Terrainsystem benutzt z.B. einen riesigen Freiform-Mesh, der vom Landschaftsgenerator erzeugt wird - keine HeightMap, trotzdem die selben Probleme, passende Texturen darauf zu verteilen.
Für all das gibt es Terrain Splatting. Du kannst natürlich erstmal eine einzige Textur nehmen und die meinetwegen bodenbasierend projezieren. Dann streckt sich die Textur halt extrem an senkrechten Wänden, aber für den Anfang ist das ok. Auf Dauer brauchst Du dann aber bessere Methoden. Und dann bietet sich entweder der 3-Ebenen-Sampler aus NVidias Cascade-Demo an (aus drei Texturen mit 3 Projektionsebenen samplen und dann anhand der Normale das passende Sample auswählen) oder halt Terrain Splatting. Letzteres benutzen wir, mit ebenso 3 Texturen und 3 Projektionsebenen als Ausgangsbasis.
Schrompf hat geschrieben:Der Weg über Dichte-Volumen und Meshkonstruktion scheint mir für Euch auch der geeignetste, da ihr durch die Iso3D-Perspektive kaum Detailreduktion oder sonstige großformatige Organisation braucht.
Was genau meinst du mit "Dichte-Volumen und Meshkonstruktion"? Ist mit "Detailreduktion" LoD gemeint?
Der Marching Cubes-Algorithmus arbeitet auf einem 3D-Dichtefeld. Also ein 3D-Array aus floats oder schlicht bools, das angibt, wo das Volumen "dicht" ist und wo "leer". Der Algorithmus kann aus so einem 3D-Feld dann eine Polygon-Hülle entlang der Grenzen erzeugen. Die Editierung eines solchen Felds ist dann eine Freude :-) Man kann richtig schön mit einem Volumenpinsel Höhlen graben oder Materie dranpappen. Ingrater hier aus dem Forum hat mal eine OpenGL-Demo gebaut, bei der das komplett in der Grafikkarte lief.
Die so erzeugten Meshes sind dann aber etwas mühsam zu lodden. Für Dein Iso3D-Szenario wäre das kein Problem, weil man nie wirklich weit schauen kann. Für ein Spiel aus der Ego-Perspektive wäre das allerdings ein Problem geworden.
Re: 3D-Outdoor-Leveldesign ohne Heightmap
Verfasst: 11.09.2009, 12:00
von Chromanoid
metaballs könnte man auch für terrain benutzen. das müsste auch recht gut zu editieren sein... weiss aber nicht genau wie das dann mit der texturierung aussieht. die größte frage ist wohl, inwiefern das terrain auch nach dem ein designer es entwickelt hat im spiel verändert werden können soll. letztendlich wäre es ja beispielsweise möglich einfach ein großes terrainmesh zu bauen. Das könnten die designer zum Beispiel mit Bryce oder so editieren... Wie man dann ein vernünftiges LOD Verfahren macht ist natürlich eine andere Frage :)
es gab mal auf gamedev einen typen, der hat metaballs benutzt um eine dreidimensionale bitmap abzubilden... das sah ziemlich stark aus
Nachtrag: irgendwie hab ich übersehen, dass es um ein Vogelperspektiven Spiel geht :). Da sind metaballs vielleicht nicht so geeignet für. Ebenfalls ein riesiges Mesh würde nur Sinn machen, wenn ihr wirklich jedes Level per Hand machen wollt. Aber ich wollte schon immer mal ein RTS in Höhlensystemen, Bergkuppen und Himmelsinseln spielen :)...
Re: 3D-Outdoor-Leveldesign ohne Heightmap
Verfasst: 11.09.2009, 22:42
von Zudomon
Hey, wollte bei der Gelegenheit mal ein paar Bilder von meinem "Metaball"-Terrain zeigen.
Weitere Informationen dazu auf Anfrage ;)
Re: 3D-Outdoor-Leveldesign ohne Heightmap
Verfasst: 12.09.2009, 10:44
von Schrompf
Das würde eigentlich eher in Deinen Projektthread gehören... aber es sieht schon geil aus. Wie gezielt kann man damit Landschaft formen? Um eine natürliche Landschaft umzusetzen, müsste man ja sehr weitreichende Eingriffsmöglichkeiten haben.
Wie genau funktioniert das? Du erstellst ein 3D-Array aus den Metaballs und triangulierst dessen Oberfläche dann mit Marching Cubes?
Re: 3D-Outdoor-Leveldesign ohne Heightmap
Verfasst: 12.09.2009, 14:01
von Lord Delvin
Re: 3D-Outdoor-Leveldesign ohne Heightmap
Verfasst: 12.09.2009, 17:56
von Zudomon
Schrompf hat geschrieben:Das würde eigentlich eher in Deinen Projektthread gehören...
Also momentan hat das nichts mehr mit meinem Projekt zu tun, da es aus einer alten Engine ist. Da hier von Metaball-Terrain die Rede war, dachte ich, es wäre sinnvoll dazu auch ein Bilder zu haben, statt nur Worte.
Schrompf hat geschrieben:Wie gezielt kann man damit Landschaft formen?
Also das zugrunde liegende Grid war 96x64x96. Im Hintergrund oben in der Höhle sieht man so einige Zapfen, da ist etwa auch die Auflösungsgrenze erreicht, detailierter geht es über das Grid nicht.
Schrompf hat geschrieben:Um eine natürliche Landschaft umzusetzen, müsste man ja sehr weitreichende Eingriffsmöglichkeiten haben.
Also man kann Grid-Punkte setzen und wieder löschen in einem bestimmten Kugelradius. Deswegen ist es auch eigentlich kein Metaball, weil diese die schlechte Eigenschaft haben, dass sie die Oberfläche bei jedem zusätzlichen Metaball etwas dicker machen. Das kommt daher, weil jedes Metaball wie bei Punktlichtern, zwar auf quadratisch schwächer, aber nie ganz 0 werden. Dadurch bekommt man bei jedem neuen Metaball wenigstens einen ganz kleinen Wert mit auf die Gridpunkte.
Schrompf hat geschrieben:Du erstellst ein 3D-Array aus den Metaballs und triangulierst dessen Oberfläche dann mit Marching Cubes?
Wie gesagt, wie Gridpunkte werden gesetzt oder ebend nicht, und danach per Marching Cubes trianguliert. Anschließend wird das Mesh noch gesmoothed, damit es nicht diese typischen Marching Cube Artefakte bildet.
Texturiert wird über diese 3-Ebenen, die du schon im Zusammenhang mit der NVidia-Demo nanntest.
Lord Delvin hat geschrieben:Die Bilder hab ich schon mindestens zweimal gesehen...
Bilder aus der Engine selbst hab ich hier schon mehrmals gepostet, aber im Zusammenhang mit Stencil vs Shadowmaps. Bin mir nicht sicher, ob ich aber schon Bilder von dem Terrain gepostet hatte. Ich habe zumindest gedacht, dass es gut hier rein passen würde. Falls es unerwünscht ist, überall seine Screens hinzuposten, dann sagt mir das bitte, dann werde ich das natürlich unterlassen.
Ansonsten rührt es daher, das Speziell du Lord Delvin die Bilder schonmal gesehn hast, dass ich sie dir schon im ICQ gezeigt habe. ;) Aber ich glaube, die Allgemeinheit hier kennt sie noch nicht.
@Shadow
Ich kann mir nicht wirklich vorstellen, wie du das am Ende haben möchtest. Aber wenn das ganze nur aus einer Perspektive sichtbar ist, dann müsste man da bestimmt auch gut tricksen können, indem man einfach den Untergrund vertikal streckt und so ein abfallendes Gelände simuliert. Das anordnen von Gegenständen bzw. Sprites wäre dann einfach ein verschieben in der Y-Achse. Wenn sich dann noch die Helligkeit ändern würde, je nachdem, ob das Gelände nach links oder nach rechts hin abfällt, dann sollte das eigentlich schon sehr nach 3D-Gelände aussehen.
Re: 3D-Outdoor-Leveldesign ohne Heightmap
Verfasst: 14.09.2009, 10:52
von shadow
Also vielen Dank erstmal für die vielen Antworten!
Ich glaub, ich red demnächst mal mit unserem Leveldesigner, was der dazu meint.
Re: 3D-Outdoor-Leveldesign ohne Heightmap
Verfasst: 14.09.2009, 17:13
von Seraph
Ich habe den Thread mal ins richtige Forum verschoben. :)
Steckbare 3D-Tiles erinnern mich an Dungeon Siege. :)
Es kann sein, dass ich es ueberlesen habe, aber was mich noch interessieren wuerde ist, was genau Du vor hast. Kann man das Terrain auch aus weiter Entfernung sehen, hast Du vor Hoehlen zu integrieren, wie steht es um Dungeons generell, etc.?
Re: 3D-Outdoor-Leveldesign ohne Heightmap
Verfasst: 14.09.2009, 22:40
von Akustikkoppler
Ein "Vector Field Terrain" wie es in Halo Wars benutzt wird wäre vielleicht auch eine Möglichkeit.
Die Präsentation von der GDC '09 findest du hier:
http://tech-artists.org/forum/showthread.php?t=388
Re: 3D-Outdoor-Leveldesign ohne Heightmap
Verfasst: 16.09.2009, 19:50
von Virus
Wenn du nur nen normales Hügelterrain machen willst, kannst du auch Bezier-Flächen einsetzen. Als level-designerand ann mit einem flachen terrain an und kann gewisse ANkerpunkte (z.b. alle 50m auseinder) beliebig in der Höhe verändern und so eine wunderbare Hügellandschaft erzugen. EInfach in der handhabung und sehr speicherschonend, allerdings nicht so flexibel (da alles reltiv weich wird).