# Voxel

Voxel (analog zu Pixel aus dem Englischen volume und el von element) bezeichnet in der Computergrafik einen Gitterpunkt („Bild“punkt, Datenelement) in einem dreidimensionalen Gitter. Dies entspricht einem Pixel in einem 2D-Bild, einer Rastergrafik. Wie bei Pixeln wird bei Voxeln üblicherweise die Position nicht explizit gespeichert, sondern implizit aus der Position zu anderen Voxeln hergeleitet. Im Gegensatz dazu werden bei Punkten oder Polygonen die Positionen der Eckkoordinaten gespeichert. Eine direkte Konsequenz dieses Unterschiedes ist, dass man mit Polygonen eine 3D-Struktur mit viel leerem oder homogen gefülltem Raum effizient darstellen kann. Voxel hingegen sind gut bei der Repräsentation eines äquidistant gesampelten Raums, der nicht homogen gefüllt ist.

## Beschreibung

Voxel bezeichnet zwei Dinge:

### Räumlicher Datensatz

Bei einem räumlichen Datensatz, der in diskretisierter Form in kartesischen Koordinaten vorliegt, bezeichnet Voxel den diskreten Wert an einer XYZ-Koordinate des Datensatzes. Bei dieser Definition handelt es sich um das dreidimensionale Äquivalent eines Pixels, somit hat ein Voxel keine bestimmte Form. Man spricht hier auch vom isotropen Voxel oder „Volumenpixel“. Häufig handelt es sich bei den in Voxelgittern enthaltenen Daten um Farbwerte, die mit den Mitteln der Volumengrafik zur Visualisierung bestimmt sind. Anwendungen findet diese Form der Datenrepräsentation vor allem in den bildgebenden Verfahren der Medizin, hier können die diskreten Werte als Dichte (Knochen, Fettgewebe) aufgefasst werden und entsprechend visualisiert werden.
Für die Darstellung dieser Voxel gibt es spezialisierte Algorithmen. Der Marching-Cubes-Algorithmus erlaubt das Umwandeln von Voxeldaten in Polygone. Dazu bedarf es allerdings eines Schwellenwerts, weil die Polygone üblicherweise nicht transparent sind. Eine andere Methode ist das direkte Rendering der Voxeldaten. Dies kann mit Raycasting geschehen, indem man einen Strahl durch das Voxelgitter wirft und die Farbwerte verrechnet. Abgebrochen wird, falls Opazität erreicht wird.

### Raytracing

In anderen Fällen bezeichnet ein Voxel eine quaderförmige Zelle innerhalb eines regelmäßig aufgeteilten Quaders oder unbegrenzten Raumes. Am häufigsten wird diese Bedeutung bei bestimmten Techniken zur Beschleunigung von Raytracing verwendet. Da sie sich allerdings nicht an die lokalen Gegebenheiten anpasst, ist diese Methode nicht sehr effizient. Besser ist es, eine Beschleunigungsstruktur wie den k-d-Baum zu verwenden.

## Verwendung

Üblicherweise werden Voxel in der Medizin oder bei der Darstellung von Landschaften in Computerspielen und Simulation eingesetzt. Voxelterrain wird statt eines Höhenfelds (Heightmap) eingesetzt, weil es Überhänge, Höhlen, Bögen und andere 3D-Merkmale einer Landschaft darstellen kann. Diese konkaven Merkmale können mit einem Höhenfeld nicht repräsentiert werden, weil es nur die oberste Ebene der Landschaft speichert und alles darunter als gefüllt angenommen wird.

## Computerspiele

Zu den voxelbasierten Computerspielen gehören:

### Voxelbasiertes Rendering

Spiele, bei denen einzelne Objekte oder die gesamte Spielwelt als Voxel gerendert werden:
* 1997: Shadow Warrior und Blood nutzten eine spätere Version der Build-Engine, die Voxel-Objekte verwendet.
* 2008: Voxelstein 3D verwendet Voxel, um eine vollständig zerstörbare Umgebung zu ermöglichen. Das Spiel basiert auf Ken Silvermans Voxlap-Engine.
* 2020: Teardown verwendet Voxel ähnlich wie Voxelstein 3D.

### Voxelobjekte innerhalb isometrischer Welten

Spiele mit isometrischer Perspektive, bei denen Objekte aus Voxeln bestehen:
* 1999: Command & Conquer: Tiberian Sun und Command & Conquer: Alarmstufe Rot 2, Fahrzeuge und Gleiter werden mit Voxelgrafik dargestellt.
* 1999: Sid Meier’s Alpha Centauri, Strategiespiel, nutzt Voxel-Modelle, um Einheiten zu zeichnen.

### Voxel als Grafikstil

Spiele, die Voxel als Grafikstil aber Polygone zur Darstellung verwenden.
* 2009: 3D Dot Game Heroes, voxelbasierte Welt
* 2009: Minecraft, voxelbasiertes Open-World Sandbox
* 2011: Minetest, ähnlich Minecraft
* 2011: Castle Story, ein Echtzeit-Strategiespiel
* 2012: Ace of Spades, ein Open-World-Ego-Shooter
* 2014: Planets³, Rollenspiel
* 2015: Trove MMORPG
* 2017: Castle Story
* 2019: Cube World
* 2020: The Sandbox, ähnlich Minecraft mit NFTs

### Heightmap Raycasting

Um den hohen Gebrauch an Speicherplatz und CPU-Leistung von vollständigen Voxelwelten zu minimieren und somit eine dreidimensionale Darstellung von Umgebungen zu Laufzeit zu ermöglichen, vereinfachten Entwickler die auf Raytracing basierenden Rendering-Algorithmen so weit, dass lediglich ein Höhenfeld dargestellt wird. Durch den deutlichen reduzierbaren Rechenaufwand war somit eine Darstellung von dreidimensionalen Umgebungen in Echtzeit möglich und dabei lediglich Speicherplatz für zweidimensionale Karten mit Höhen- und Farbinformationen nötig. Dies entspricht zwar keinen Voxeln im eigentlichen Sinn, wurde aber von verschiedenen Herstellern trotzdem als Voxel-Grafik beworben. Die Darstellung von überhängenden Gebilden ist so nicht möglich. Objekte innerhalb der Spielwelt wurden deshalb mit Sprites oder Polygonen dargestellt.
* 1992: Comanche, eine Reihe von Helikopterflugsimulationen, benutzt eine frühe Implementierung von Heightmap Raycasting
* 1998: Delta Force, Ego-Shooter, nutzt ebenfalls die Voxel-Space-Engine
* 1999: Outcast, ein Spiel des belgischen Entwicklers Appeal, das das Höhenfeld-Terrain mit einer sogenannten Voxel-Engine rendert. Objekte in der Spielwelt bestehen allerdings aus Polygonen.

### Weitere

* 2007: Crysis, verwendet eine Kombination von Höhenfeld und Voxel für sein Terrain-System.
* 2013: Space Engineers verwendet eine Kombination aus auf Voxeln und Polygonen basierenden Strukturen
* 2014: Rising World, Open-World-Sandbox-Spiel
* 2015: Empyrion - Galactic Survival, ähnlich Space Engineers
* 2016: Dual Universe Sci-Fi-MMO. Ein Universum für alle Spieler gleichzeitig. Die Welten und von Spielern gebaute Konstrukte sind aus editierbaren Voxeln.
* 2005: C4 Engine, eine Spieleengine die Voxel zur Darstellung des Terrains verwendet. Zum Editieren gibt es einen Voxeleditor innerhalb des Leveleditors.