Jump to content
Unity Insider Forum

Voxel Terrain


Recommended Posts

Hallo an alle,

 

Ich habe mich etwas mit dem Begriff Voxel und der Darstellung von ihnen beschäfftigt und vor allem der Erzeugung von 3D Terrains in denen im Gegensatz zu Terrains aus Heightmaps wie in Unity auch Vorsprünge und Tunnel möglich wären.

Für alle die nicht wissen was Voxel sind, das sind sozusagen Pixel im 3D raum... volumetrische Pixel die durch eine Box dargestellt werden.

Meistens werden die heut zu tage im medizinischen Bereich verwendet um Beispilesweise 3D Tomographebilder darzustellen!

Aber auch in Spielen kam dies schon zum Einsatz, Delta Force zum Bleistift ....

 

Das Unity Voxel Grafik nicht beherrscht ist mir klar da diese ja kommplett anders gerendert werden als Polygone.. aber man kann ja Voxel-Daten in Polygon Form darstellen... der Algorithmus der mir dabei als erstes aufgefallen ist, ist der

Marching Cubes Algorithmus der eben aus Voxels Polygone errechnet!

Der LevelEditor von Crysis baut soviel ich weiß ebenfalls darauf auf, bzw. aus einem Mix zwischen heightmap und Voxel Terrain!

 

 

Im Assetstore gibt es schon für 100 euro so etwas zum Download, "VoxelForm" .. allerdings scheint man damit nicht im Editor Terrains erstellen zu können sondern nur InGame verändern was für mich nicht viel sinn macht, außerdem möchte ich gern selbst verstehen wies geht und wie man so etwas umsetzen könnte!

 

Das geniale an Voxel Daten ist auch das man sie einfach zur laufzeit verändern kann um beispielsweise zerstörbares Gelände zu erstellen..... verwendet auch in Minecraft

 

Jetzt zu meiner Frage,

hat schon irgend jemand hier mit Voxels gearbeitet und evtl. den Marching Cubes Algorithmus verwendet?

 

Was mich noch interessiert ist das speichern von Voxeldaten, wenn ich das richtig verstanden habe werden diese ja in 3 Dimensionalen Arrays gespiechert bzw. in 3 Dimensionalen Bilddateien wie .tiff ...wie könnte so etwas in Unity umgesetzt werden, denn so viel ich weiß kann man ja aus Unity heraus keine .tiff files schreiben und auslesen, png etc ja aber das bringt mir ja nichts wenn ich nicht 100te von files erzeugen will! Warscheinlich am einfachsten in eine Text oder XMl Datei schreiben?!

 

Gruß Stephan

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 7 months later...

Kurze Aufklärung: Der Marching Cubes Algorithmus benutzt KEINE Voxels. Er benutzt Punkte im 3D Raum und berechnet eine möglichst annäherndes Mesh das alle Punkte umschließt.

Zudem werden Voxels nicht als Boxen dargestellt. Dieser Schluss liegt zwar bei dem vergleich "Pixel" nahe, tatsächlich aber haben Voxel keine "Form". Sie haben lediglich eine abstrakte "Dichte".

Und noch eine kleine Berichtigung: Der Terrain-Editor aus Crysis überträgt einen Teil aus der importierten Heigthmap in ein seperates Mesh das dann freiliegend bearbeitet werden kann. Der Begriff Voxel-Terrain ist hierbei irreführend.

Link zu diesem Kommentar
Auf anderen Seiten teilen

das der Marching Cubes aus Voxeldaten ein Polygonmodel errechnet hab ich aber geschrieben, das keine Voxels benutzt ist mir klar :) das mit der Box ist natürlich käse da haste recht : P ....

 

ich bin da leider auch nicht weitergekommen, hatte dann doch anderes zu tun!

blame du scheinst dich ja aus zu kennen, hast du schon was in die richtung gemacht?

 

Gruß Stephan

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nein, ich habe mich nur ein wenig damit beschäftigt. Tatsächlich ist Voxel Rendering im Moment zumindest absolut ungeeignet für etwas aufwendigere Spiele. Die Datendichte ist einfach zu groß. Bis VoxelEngines wirklich all ihre Vorteile ausspielen können, müssen wir alle minimum 16 Gb RAM im PC haben.

Zudem ist immer noch nicht das Problem der Animationen gelöst. Würden wir das Keyframe Verfahren auf VoxelModelle übertragen, würden Animationsdaten teilweise in den 2Stelligen Gigabyte Bereich gehen, je nach ModelGröße.

(Btw: Ein normales Voxelmodelle (Baum) hat um die 8-9 Gigabyte)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ist ja gut, lass mich doch ein wenig herumspinnen :P

 

Klar wäre das Möglich. Ich kenn mich da jetzt nicht so gut mit dynamischer Mesherstellung in Unity aus (Kann ich Vertices einzeln per Code definieren und indexieren?), wenn das möglich ist sollte eine Umsetzung nicht all zu schwierig sein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 years later...

Hallo zusammen :)

 

Seit einer Weile beschäftige ich mich mit einem "kleinen" Problem welches hier bereits angesprochen wurde.

Und zwar geht es um die Berechnung der Dichte für ein Terrain mit dem MC Algorithmus... :wacko:

Zurzeit nutze ich in meinen Chunks Arrays welche mit SimplexNoise mit einem Float-Wert gefüllt werden, mit welchen ich das Terrain mit MC erstelle.

Mein Problem ist jedoch, dass die Berechnung sehr viel Ressourcen benötigt werden und es auch (je nach Sichtweite) meine RAM zum brennen bringt ^^

Mein Generator kommt bei der Berechnung der Werte immer wieder ins stocken, obwohl ich eine Warteschlange der Chunks welche erstellt werden gemacht habe und die Berechnung in Threads ausführe :(

 

Ich weis auch nicht ganz wie ich es am besten anstelle, dass ich ein "schönes" Terrain bekomme und nicht nur eine Höhlensystem...

 

Kennt sich jemand damit aus? :rolleyes:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hey, Noise verbraucht ja erstmal was, aber vielleicht liegt dein Problem schon beim Nutzen deines Noise Algorithmus.

 

und es auch (je nach Sichtweite) meine RAM zum brennen bringt ^^

Noise sollte ja fürs erste nur zur Generierung aufgerufen werden, eine ständige Neuberechnung der Dichte ist ja nicht nötig, falls du das tust.

Es sollten also, nach der Generierung, keine dermaßig lastigen Berechnungen mehr laufen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstell doch einen eigenen Thread dafür, statt einen 3 1/2 Jahre alten Thread wiederzubeleben :D

 

Ich bin übrigens auch an einem Voxel Generator dran (schon seit ein paar Monaten) und "kämpfe" mit ähnlichen Problemen ^^

Können uns ja mal unterhalten oder eben in einem anderen Thread drüber schreiben :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...