5 Punkte von GN⁺ 2024-07-29 | 1 Kommentare | Auf WhatsApp teilen
  • Projektüberblick

    • Ich habe über mehrere Jahre hinweg an 3D-Szenen und Levels gearbeitet, die im Browser laufen
    • Anfangs begann alles mit einzelnen Demos, entwickelte sich aber nach und nach zu stärker miteinander verbundenen, spielähnlichen Projekten
    • Dabei habe ich prozedurale und generative Techniken eingesetzt, um bestimmte Elemente umzusetzen
  • Shaders + Textures

    • Die meisten Texturen sind nahtlos gestaltet, sodass selbst auf großen Flächen keine sichtbaren Muster entstehen
    • In Three.JS wurden benutzerdefinierte Shader erstellt, um zusätzliche Funktionen bereitzustellen
  • Triplanar Mapping

    • Ermöglicht das Aufbringen von Texturen auf Meshes ohne UV-Map und ist daher nützlich für prozedural generiertes Terrain
    • Lässt sich einfach implementieren und auf verschiedene Meshes anwenden
    • Mit der Funktion pow() werden Gewichtungen angepasst, um die Qualität zu verbessern und die Performance zu optimieren
  • Hex Tiling

    • Ein Algorithmus, der die Wiederholung nahtloser Texturen verbirgt
    • Wurde als eigenständige Bibliothek portiert, die sich leicht in Three.JS-Projekte integrieren lässt
    • Erfordert eine UV-Map und verursacht einen hohen Performance-Overhead
  • Depth Pre-Pass

    • Zur Performance-Steigerung wird die Szene zweimal gerendert, um die Tiefenwerte der Pixel aufzuzeichnen
    • In Szenen mit viel Overdraw kann das die Performance um mehr als 30 % verbessern
  • AI-Powered PBR Texture Synthesis

    • Mit AI-generierten Texturen wird die Qualität der Szene erhöht
    • DeepBump und Materialize werden verwendet, um PBR-Maps zu erzeugen
  • Volumetric Fog/Clouds

    • Es wurden Shader entwickelt, um der Szene Wolken oder Nebel hinzuzufügen
    • Mithilfe von LoD-Noise-Lookups wurden verschiedene zusätzliche Funktionen ergänzt
  • Meshes + Geometry

    • Es wurden Techniken untersucht, um Meshes zur Laufzeit zu erzeugen und zu verformen
    • Prozedural erzeugt werden dabei vor allem Dekorationen oder Hintergrundelemente
  • LoD Terrain

    • Terrain wird mit Noise-Funktionen erzeugt, wobei die Auflösung dynamisch an die Entfernung zur Kamera angepasst wird
  • Procedural Mesh Processing + Manipulation Pipeline

    • Es wurde eine Pipeline aufgebaut, um Low-Poly-Meshes prozedural zu unterteilen und zu verformen
    • Die Behandlung der Normalen erfordert dabei erheblichen Aufwand
  • Future Work

    • Geplant ist der Einsatz von Constructive Solid Geometry (CSG), um Meshes zusammenzuführen oder auszuschneiden
    • Außerdem ist eine Portierung nach Rust geplant, um ein tieferes Verständnis zu gewinnen

Zusammenfassung von GN⁺

  • Dieser Artikel stellt verschiedene Techniken und Tools vor, die für die prozedurale Spieleentwicklung nützlich sind
  • Texturierungstechniken wie Triplanar Mapping und Hex Tiling verbessern gleichzeitig Performance und Qualität
  • AI-gestützte Texturerzeugung sowie Volumetric Fog/Clouds-Shader erhöhen den Realismus der Szene
  • Zukünftige Arbeiten wie Constructive Solid Geometry bieten großes Potenzial für die Verformung von Meshes
  • Projekte mit ähnlichen Funktionen sind unter anderem Unitys ProBuilder und Houdini

1 Kommentare

 
GN⁺ 2024-07-29
Hacker-News-Kommentar
  • Habe in der Vergangenheit schon einmal mit prozeduraler Generierung experimentiert

    • Insbesondere habe ich versucht, beeindruckende Bäume zu erstellen
    • Ich hatte das Gefühl, dass es an einfachen Methoden mangelt, Geometrie miteinander zu verbinden
    • Zwei Zylinder zu erzeugen ist einfach, sie miteinander zu verbinden ist jedoch sehr schwierig
    • Theoretisch könnte CSG diese Lücke schließen, aber das ist schwierig, weil man in 3D-Formen modellieren muss
    • Ich habe versucht, eine Routine zu schreiben, die zwei Loops verbindet, aber sie hat nicht gut funktioniert
    • Später würde ich gern ein Spiel machen, in dem ein modulares prozedurales Generierungssystem von selbst funktioniert
  • Gute Terrain-Generierung ist nicht einfach

    • Sowohl im Maßstab einer ganzen Welt als auch auf Augenhöhe ist sie schwierig
    • Ein einfacher Ansatz erzeugt eine holprige Heightmap, die der Realität kaum ähnelt
    • Dwarf Fortress startet mit grundlegender Midpoint Displacement und ergänzt darauf viel kundenspezifische Arbeit
  • Ein großartiger Beitrag über prozedurale Techniken im Web

  • Ich habe gemischte Erfahrungen mit dem Einsatz eines Depth Pre-Pass gemacht

    • Bei einigen Versuchen habe ich auf Desktop-GPUs der mittleren bis oberen Klasse keinen großen Performance-Gewinn festgestellt
    • Ich bin mir nicht sicher, warum, aber es könnte daran liegen, dass durch Early-Z-Rejection bereits Pixel-Shader-Aufrufe eingespart wurden
    • Normalerweise rendere ich opake Meshes von vorne nach hinten
    • Fairerweise muss man sagen, dass meine Experimente im Kontext von CAD/CAM-Anwendungen und nicht von Spielen stattfanden
    • Die Szenen hatten im Gegensatz zu typischen Spielumgebungen nur minimale Texturen und Geometrie mit sehr hoher Polygonzahl
  • Als 3D-Artist war das ein sehr interessanter Artikel

    • Gute Artikel zu diesem Thema sind äußerst selten
    • Ich werde wohl einmal Three.js ausprobieren