DGL
https://delphigl.com/forum/

3D Textur Generator
https://delphigl.com/forum/viewtopic.php?f=13&t=4331
Seite 1 von 1

Autor:  Mars [ So Jul 10, 2005 10:15 ]
Betreff des Beitrags:  3D Textur Generator

Im Zuge eines Generators für virtuellen Landschaften (bis dieser präsentabel ist, dauert es allerdings noch etwas), stellte sich die Frage, wie man Heightmaps, ob direkt gespeichert oder in Echtzeit synthetisch generiert, möglichst schnell texturieren könnte, ohne jetzt aber großartig "händisch" irgendwo herumpinseln zu müssen.
Eine mögliche Antwort sind 3D Texturen, die zudem den Vorteil haben, dass man praktisch beliebig viele "Landschaftsschichten" übereinanderstapeln kann und dennoch nur eine einzige Textureinheit "verbrät", wodurch der Rest frei bleibt - etwa für ein Straßennetz oder diverse Effekte.
3D Texturen kann man entweder direkt über die Höhe der Heightmap "aufspannen", alternativ kann man auch zwei Heightmaps verwenden - eine für die tatsächliche Darstellung, die andere als vertikale Komponente in die 3D-Textur - im zweiten Fall ist man dann überhaupt sehr flexibel. Ein weiterer Vorteil ist, dass die Koordinatengenerierung für die Textur auch in einem Shader extrem einfach ist.

Nachteile sind natürlich der hohe Speicherverbrauch - und dass es sehr wenige Programme gibt, mit denen man solche Texturen generieren kann - und auch kein einheitliches Speicherformat (allenfalls Direct3D kann 3D Texturen speichern, aber das klassifiziere ich jetzt auch mal als proprietär).

Beiden Problemen soll der 3D Textur Generator zumindest teilweise (zumindest für meine Zwecke) abhelfen: der Speicherverbrauch kann gering bleiben, weil sich die Texturen aus mathematischen Formeln synthetisieren lassen und als Textdatei speicherbar sind - und die 3D-Textur Daten werden in einem so einfachen Format abgelegt, dass es für niemanden ein Problem sein sollte, diese auch wieder zu laden. Durch die jüngste Aktualisierung des Generators um Boolesche Operatoren und Noise Sampler ist das Programm auch direkt brauchbar geworden.

Das Programm kann ganz unten heruntergeladen werden, zu beachten ist, dass für "Gras" und "schneebedeckter Fels" leicht unterschiedliche Sampler verwendet wurden (das "Gras" weist mehr hochfrequente "Störungen" auf, die über einen booleschen Operator ab einer bestimmten vertikalen Position aktiv werden).
Der Quelltext für die gezeigte Textur ist dabei - wenn jemand Lust hat zu experimentieren, bin ich an den Ergebnissen sehr interessiert.

Das Format der gespeicherten Texturen (auch beim Download dabei):
Das Format für 3D Texturen:

Bytes

0..4095 .... die ersten 4096 Bytes sind eine Vorschau der Textur
(32x32 RGBA Werte) und können übersprungen werden
4096..4099 ... Integer (4 Byte) Breite der Textur
4100..4103 ... Integer (4 Byte) Höhe der Textur
4104..4107 ... Integer (4 Byte) Tiefe der Textur
4108..???? ... Breite * Höhe * Tiefe * 4 Bytes, RGBA Werte des Texturinhalts

Dateianhänge:
Dateikommentar: Eine einfache Landschaft mit 3D Textur
screen2.jpg
screen2.jpg [ 28.47 KiB | 4760-mal betrachtet ]
Dateikommentar: Das Programm in Aktion
screen1.jpg
screen1.jpg [ 22.84 KiB | 4760-mal betrachtet ]
Dateikommentar: Download des Programms
tex3d.zip [216.47 KiB]
605-mal heruntergeladen

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/