3D-Asset-Pipeline: Vom Text-Prompt zum spielfertigen GLB (Schritt für Schritt)
Erstelle deine eigene 3D-Asset-Pipeline
Der gesamte Weg, den ein KI-generiertes 3D-Modell zurücklegt: Prompt, Mesh, Retopologie, UV, Textur, komprimiertes GLB — und die Kontrollpunkte, die verhindern, dass ein schlechtes Asset in deinem Spiel landet.
Eine 3D-Asset-Pipeline ist der geordnete Weg, den ein Modell von einer schriftlichen Beschreibung bis zu einer Datei zurücklegt, die dein Spiel laden kann: beschreiben, Mesh generieren, retopologisieren, UVs abwickeln und texturieren, prüfen, ein komprimiertes GLB exportieren. In Neta Studio endet dieser Weg in einem GLB, das der 3D Game Builder im Browser an Three.js übergibt. Jede Stufe muss deshalb etwas liefern, das ein Browser verkraftet — nicht nur etwas, das im Desktop-Viewport richtig aussieht.
Die meisten Pipelines scheitern nicht laut. Sie scheitern leise: Ein Modell, das im Editor korrekt aussah, kommt vierzigmal zu groß im Level an, oder eine Textur, die auf dem Oberkörper scharf war, ist auf den Stiefeln Matsch, weil die UV-Inseln mit unterschiedlicher Dichte gepackt wurden. Die unten beschriebenen Kontrollpunkte sind die günstigen — ein Wireframe-Durchgang, eine Auswahl nicht-manifolder Kanten, eine Messung der Bounding Box. Jeder dauert unter einer Minute, und jeder fängt eine Fehlerklasse ab, die einen ganzen Nachmittag kostet, sobald das Asset in der Szene steckt.
Kurzantwort: Was eine 3D-Asset-Pipeline ist
Eine 3D-Asset-Pipeline ist die geordnete Menge von Stufen, die aus einer Beschreibung eine Datei macht, die eine Game-Engine oder ein Browser laden kann. Es sind sechs: das Objekt in Worten beschreiben, das Mesh generieren, retopologisieren, wenn die Topologie unbrauchbar ist, die UVs abwickeln und die Oberfläche texturieren, Wireframe, Normalen und Material-Slots prüfen und schließlich ein komprimiertes GLB exportieren. Nichts auf dieser Liste ist für ein texturiertes Objekt optional, und jede Stufe hat ein Tor, das du prüfen kannst, bevor du weitergehst.
Die Reihenfolge ist wichtig, weil die Stufen Abhängigkeiten sind und keine Checkliste. Retopologie schreibt Vertex-Indizes neu, also wird jede UV-Map oder gebackene Textur, die vorher entstanden ist, weggeworfen. Texturen werden auf UVs hin erstellt, also bedeutet Abwickeln nach dem Texturieren, die Textur neu zu machen. Kompression ist verlustbehaftet und läuft zuletzt, also sind die Artefakte, die sie erzeugt, nicht von Fehlern zu unterscheiden, die du drei Stufen früher hättest finden sollen. Die Stufen in falscher Reihenfolge auszuführen kostet nicht nur Zeit; es entstehen Dateien, die die Prüfung bestehen und in der Szene trotzdem kaputtgehen.
Behandle jede Stufe als Produzenten mit einem Vertrag. Stufe 2 muss Stufe 3 ein einziges Mesh in Metern mit bekannter Dreieckszahl übergeben. Stufe 4 muss Stufe 5 ein Modell übergeben, dessen Inseln ein Texturset teilen. Stufe 6 muss der Laufzeit eine Datei unter einem Größenbudget übergeben, mit Materialien, die eins zu eins auf das passen, was der Renderer erwartet. Wenn ein Asset später Probleme macht, ist es meistens der Vertrag, der nie geschrieben wurde, der gebrochen wurde.
Die sechs Stationen auf einen Blick
Jede Station hat eine Ausgabe und einen typischen Fehler. Die Fehlerspalte ist die nützliche — sie sagt dir, was das Tor am Ende jeder Stufe prüfen muss, bevor du das Asset weiterziehen lässt.
| Stufe | Was sie erzeugt | Häufigster Fehler |
|---|---|---|
| 1. Beschreiben | Ein Prompt, der Silhouette, Material, Maßstab, Pose und Stil festlegt | Ein vager Prompt liefert ein verschmolzenes mehrteiliges Objekt in beliebiger Größe |
| 2. Mesh generieren | Ein dichtes Dreiecksnetz, typischerweise Zehntausende Dreiecke | Offene Hülle, Innenflächen, keine brauchbare Silhouette von der Seite |
| 3. Retopologisieren | Ein sauberes Mesh im gewählten Dreiecksbudget | Retopo nach dem Abwickeln ausgeführt, wodurch die UVs verloren gehen |
| 4. Abwickeln und texturieren | UV-Inseln in 0–1 gepackt plus ein Albedo/Roughness-Set | Ungleichmäßige Texeldichte, Nähte quer über sichtbare Wölbungen |
| 5. Prüfen | Bestätigte Normalen, Material-Slots und Wireframe | Umgedrehte Normalen und leere Material-Slots erst nach dem Export entdeckt |
| 6. GLB exportieren | Eine komprimierte .glb mit eingebetteten Texturen | Geometriekompression auf ein skinned Mesh angewendet, das danach Gewichte verliert |
Stufe 1: Das Objekt beschreiben
Ein Generierungs-Prompt ist eine Spezifikation, kein Wunsch. Fünf Felder erledigen die Arbeit: Silhouette, Material, Maßstab, Pose und Stil. Silhouettenwörter entscheiden über die Kontur, um die das Mesh gebaut wird. Materialwörter entscheiden über Albedo und Roughness. Maßstabswörter verankern die Proportion — schreibe 1,8 m hoch statt hoch, denn der Generator hat keine andere Möglichkeit zu wissen, ob er einen Tischschmuck oder ein Gebäude baut. Posewörter zählen für alles, was geriggt wird: Eine neutrale A-Pose oder ein gerader Stand erzeugt ein Mesh, an das ein Skelett angepasst werden kann, während eine Action-Pose die Gliedmaßen in eine Form backt, die sich nicht leicht neu riggen lässt.
Zwei weitere Klauseln lohnen sich jedes Mal. Nenne die Teilezahl — einzelnes Objekt oder getrennter Körper und Sockel —, denn verschmolzene Geometrie ist der häufigste Grund, warum ein generiertes Asset nicht animiert werden kann oder keine Materialien pro Teil bekommt. Und nenne, was weggelassen werden soll: kein Sockel, kein Hintergrund, keine Bodenebene. Generatoren füllen leeren Raum mit plausibel aussehender Geometrie, und jede zusätzliche Fläche, die du nicht verlangt hast, ist eine Fläche, die du später löschen musst.
- Schwacher Prompt"eine Steinlaterne" — kein Maßstab, kein Material, keine Pose, keine Teilezahl. Der Generator wählt Stil und Größe für dich, und du bekommst eine 9 m hohe Fantasy-Laterne mit leuchtendem Kristall in der Feuerkammer und einem mit dem Sockel verschmolzenen Podest, für dessen Entfernung du zwanzig Minuten brauchst.
- Starker Prompt"einzelne Steinlaterne, 1,8 m hoch, sechseckige Kappe, verwitterter grauer Granit mit Flechten in den Fugen, gerader vertikaler Stand, leere Feuerkammer, gedämpfter realistischer Stil, ein Objekt, kein Sockel, im Ursprung zentriert" — jede Klausel entspricht einer Entscheidung, die du dem Generator abgenommen hast. Der Maßstab ist festgelegt, das Material ist festgelegt, die Pose ist neutral, die Teilezahl ist eins.
Stufe 2: Das Mesh generieren
Die Mesh-Generierung ist entweder Text-zu-Mesh oder Bild-zu-Mesh. Bildeingabe gibt dir engere Kontrolle über die Silhouette, weil du eine Referenz mit den Proportionen liefern kannst, die du bereits willst; Texteingabe ist schneller für Objekte, deren Form konventionell ist. In beiden Fällen ist das Ergebnis Rohmaterial, kein versandfertiges Asset. Ein generiertes Mesh ist typischerweise viel dichter als nötig, mit unregelmäßigem Dreiecksfluss und ohne Gedanken daran, wie die Oberfläche für UVs aufgeschnitten wird.
Prüfe drei Dinge, bevor du irgendetwas anderes tust: ob das Mesh geschlossen ist, ob der Maßstab vernünftig ist und ob du dir die Dreieckszahl in der Szene leisten kannst, die du baust. Wenn die Antwort auf die dritte Frage nein ist und sich das Objekt nie verformt, ist ein Decimate-Modifier im Collapse-Modus mit erhaltener Silhouette eine legitime Antwort — er ersetzt keine Retopologie, aber für ein statisches Prop ist er oft der richtige Kompromiss.
01
Prüfung auf Wasserdichtheit: in Blender im Edit Mode → Select All by Trait → Non Manifold. Der erwartete Zähler ist null. Löcher unter einer Kappe oder entlang eines Gliedmaßes bedeuten, dass der Generator eine offene Hülle erzeugt hat; sie wirft falsche Schatten und lässt sich weder mit Booleans bearbeiten noch verdicken oder 3D-drucken.
02
Doppelte und innere Geometrie: Merge by Distance bei 0,0001 m, dann die Dreieckszahl erneut ablesen. Innenflächen überleben die Generierung überraschend oft und erscheinen unter einem normalen Render als dunkle Flecken.
03
Maßstab: lies die Bounding Box im N-Panel ab, nicht im Viewport. Ein Prop, das 0,4 m sein soll und 4 m misst, wird von demjenigen herunterskaliert, der es platziert, und sein Kollisionsvolumen ist um denselben Faktor falsch.
04
Dreiecksbudget: grob 500–3.000 Dreiecke für ein Prop, 5.000–15.000 für ein Hero-Objekt, unter 500 für Hintergrund-Set-Dressing. Ein rohes Mesh mit 200.000 Dreiecken ist für einen Generator normal; für ein versandfertiges Asset ist es das nicht.
Stufe 3: Retopologisieren, wenn das Mesh unordentlich ist
Saubere Quad-Topologie zählt, wenn die Oberfläche nach dem Export arbeiten muss. Das betrifft alles, was sich verformt — Charaktere, Stoff, Fahnen, Blattwerk —, weil Edge Loops entscheiden, ob ein Ellbogen sich biegt oder zusammenfällt. Sie zählt auch, wenn du unterteilen willst, wenn du High-Poly-Details in eine Normal Map backen willst (was gleichmäßig verteilte Quads und ein stabiles UV-Layout braucht), wenn jemand anderes später die Silhouette bearbeitet und wenn du vorhersehbare Varianten mit weniger Details desselben Objekts brauchst.
Sie zählt nicht für ein statisches Prop, das aus der Distanz gesehen wird, für ein Hard-Surface-Objekt, dessen Silhouette bereits stimmt, oder für alles, das am Ende unter etwa tausend Dreiecken landet. In diesen Fällen ist ein dezimiertes Mesh mit korrekten Normalen und sauberer Kontur die richtige Antwort, und eine Stunde in Quad-Flow zu investieren ist eine Stunde, die du im Render nie wieder hereinholst.
Die Reihenfolge ist fest: erst remeshen oder dezimieren, dann abwickeln. Blenders UV-Unwrap-Anleitung geht davon aus, dass das Mesh fertig ist, wenn du anfängst, Nähte zu schneiden, und genau das ist der Punkt — Retopologie verändert Vertex-Indizes und Edge Flow, also existiert eine vorher erstellte UV-Map im sinnvollen Sinne nicht mehr, und jede darauf gemalte Textur ist verschoben. Führe das Remesh aus, wende es an und folge dann der Unwrap-Dokumentation. Ein Voxel Remesh bei 0,01–0,02 m auf einem Objekt von einem Meter, gefolgt von QuadriFlow auf eine Ziel-Flächenzahl, ist der Standardweg; Decimate Collapse ist der schnelle Weg für statische Geometrie.
Stufe 4: Abwickeln und texturieren
Beim Abwickeln wird die Oberfläche in Inseln zerschnitten, jede mit möglichst wenig Verzerrung flachgelegt und in das UV-Quadrat 0–1 gepackt. Smart UV Project liefert in Sekunden eine tolerable Basis für Hard-Surface-Objekte. Charaktere und alles mit sichtbarer Wölbung verdienen von Hand gesetzte Nähte: an der Innenseite eines Gliedmaßes entlang, über den Rücken, hinter dem Ohr — nie quer durch die Mitte einer Form, die die Kamera von vorn sieht.
Die Texeldichte ist die Zahl, die entscheidet, ob das Modell konsistent aussieht. Sie ist die Texturauflösung pro Welteinheit: Eine 1024×1024-Map über einen Quadratmeter verteilt ergibt etwa 1.024 Pixel pro Meter. Wenn der Kopf deines Charakters 1.024 px/m bekommt und die Stiefel 300 px/m, sind die Stiefel im selben Bild sichtbar weicher, und kein Schärfen behebt das. Budgetiere die Dichte einmal, skaliere dann jede Insel passend dazu und halte die Inseln innerhalb von etwa 10–20 % zueinander.
Packen braucht Rand, nicht nur Effizienz. Lass 4 Pixel Padding bei 1024 und 8 bei 2048, damit Mipmapping und bilineare Filterung nicht benachbarte Inseln in eine Naht ziehen. Halte UVs für einen Web-Build strikt innerhalb von 0–1: UDIM-Kacheln werden von manchen Exportern unterstützt und von den meisten Browser-Loadern nicht, und ein zweites Texturset kostet einen zweiten Draw Call. Wenn ein Teil des Modells nie sichtbar ist, investiere seinen UV-Platz in die sichtbaren Teile, statt die Flächen zu löschen — fehlende Flächen sind später schwerer zu diagnostizieren als ein etwas geringer aufgelöster verborgener Bereich.
Stufe 5: Vor dem Export prüfen
Die Prüfung besteht aus drei getrennten Durchgängen, jeder sucht nach einer bestimmten Fehlerklasse. Mach sie in dieser Reihenfolge, denn ein Normalenproblem verdeckt ein Materialproblem, und ein Materialproblem verdeckt ein Wireframe-Problem.
Wireframe
Schalte auf Wireframe um und lies die Dreiecksverteilung. Du suchst lange dünne Splitter, die schlecht schattieren und noch schlechter verformen; N-Gons, die der glTF-Exporter selbst trianguliert und gelegentlich in eine Richtung, die du nicht gewählt hast; und Dichte an der falschen Stelle — eine flache Wand mit 6.000 Dreiecken, während die gewölbte Kappe 200 trägt. Die Dichte sollte der Wölbung und der Verformung folgen, nicht der Reihenfolge, in der der Generator Flächen ausgegeben hat.
Normalen
Recalculate Outside, dann betrachte das Modell unter einem einzigen gerichteten Licht mit aktiviertem Backface Culling. Umgedrehte Flächen erscheinen als schwarze Flecken oder verschwinden ganz. Prüfe auch harte Kanten: Ein Auto-Smooth-Winkel um 30° passt zu Hard-Surface-Objekten, 60° zu organischen, und benutzerdefinierte Split-Normalen sind das Erste, was bei einer Formatkonvertierung still verpfuscht wird. Wenn das Modell nur nach dem Export schwarz ist, exportiere erneut ohne Geometriekompression, um zu sehen, ob der Kompressor oder das Mesh schuld ist.
Material-Slots
Zähle die Slots. Generierte Meshes kommen regelmäßig mit sechs an, zwei davon leer und zwei weitere, die auf doppelte Kopien desselben Bildes zeigen. Jedes Material ist ein Draw Call, also konsolidiere auf ein Material mit einer Textur, wo das Objekt es erlaubt, lösche leere Slots und bestätige den Alpha-Modus: BLEND erzwingt Sortierung und kostet Füllrate, MASK ist günstiger und für Blattwerk und Geländer meist richtig. Prüfe auch das Double-Sided-Flag — bleibt es an, verdoppelt sich die schattierte Fläche ohne visuellen Gewinn.
Stufe 6: Ein komprimiertes GLB exportieren
Für einen Browser-Build legst du ein Größenbudget vor dem Export fest, nicht danach. Ein einzelnes Prop sollte unter etwa 1 MB landen, ein Hero-Charakter zwischen 2 und 4 MB, und eine ganze Szene unter grob 15–20 MB, wenn du erwartest, dass sie auf einem Mittelklasse-Laptop ohne sichtbaren Hänger lädt. Texturen dominieren dieses Budget: 512 px für Hintergrundobjekte, 1024 px für Props, 2048 px nur für etwas, dem die Kamera nahe kommt.
Kompression erledigt zwei verschiedene Aufgaben, und es lohnt sich, sie zu trennen. Geometriekompression — Draco oder Meshopt — quantisiert Vertex-Positionen, Normalen und UVs auf eine feste Bitzahl und ordnet den Puffer neu. Draco erzeugt meist die kleinere Datei; Meshopt dekodiert schneller, was auf Mobilgeräten zählt. Beide sind auf Präzisionsebene verlustbehaftet, und beide können Skin-Gewichte und Morph-Targets stören, wenn das Mesh von Anfang an nicht sauber war. Texturkompression über KTX2/Basis hält das Bild im GPU-Speicher komprimiert, statt es zu rohem RGBA zu dekodieren, auf Kosten einer Erweiterung, die dein Loader unterstützen muss — die glTF-Kernspezifikation garantiert nur PNG und JPEG.
Öffne die exportierte Datei immer in einem GLB-Viewer oder importiere sie in den 3D Game Builder, bevor du sie als fertig bezeichnest. Der Exporter ist der Ort, an dem Normalen kippen, Material-Slots zu einem zusammenfallen und der Maßstab driftet, weil ein Transform auf das Parent und nicht auf das Mesh angewendet wurde. Ein Test im Tool, das das Asset erzeugt hat, beweist nichts; ein Test im Loader, mit dem du tatsächlich auslieferst, beweist alles.
Wo Pipelines brechen und wie man es erkennt
Die folgenden Symptome decken das meiste ab, was schiefläuft. Beachte, dass vier der sechs in einem einzigen Prüfdurchgang sichtbar sind, und keines erfordert, dass du die Quelldatei öffnest, wenn du das exportierte GLB richtig testest.
Warum Fehler in der 3D-Asset-Pipeline sich auf zwei Stufen konzentrieren
Generierung und Export erzeugen die meisten Fehler, aus entgegengesetzten Gründen. Die Generierung ist ungebunden — dem Modell wurde nicht gesagt, was es sein muss, also erfindet es Maßstab, Teilezahl und Innenflächen. Der Export ist destruktiv — er ist der erste Punkt, an dem die Daten quantisiert, neu geordnet und in eine einzige Datei gepackt werden, sodass jedes latente Problem im Mesh auf einmal sichtbar wird. Die Stufen 3 bis 5 existieren, um Fehler aus dem destruktiven Ende der Kette heraus an eine Stelle zu bringen, an der du sie noch klar sehen kannst.
| Symptom | Ursache | Lösung |
|---|---|---|
| Modell rendert im Szenenbild komplett schwarz oder unsichtbar | Umgedrehte oder fehlende Vertex-Normalen, manchmal erst beim Export entstanden | Vor dem Export Recalculate Outside; ohne Kompression erneut exportieren, um die Ursache einzugrenzen |
| Objekt ist im Level viel zu groß oder zu klein | Einheitenfehler — in Zentimetern erstellt, in Metern erwartet, oder Maßstab nie angewendet | Bounding Box messen, Maßstab anwenden, Szeneneinheit vor dem Export auf Meter setzen |
| Textur ist auf dem Oberkörper scharf und auf den Stiefeln verschwommen | Ungleichmäßige Texeldichte über die UV-Inseln | Nach Dichte im Weltraum neu packen und Inseln auf 20 % zueinander bringen |
| Das GLB hat zig Megabyte und der Tab hängt | Unkomprimierte Geometrie plus 4096-px-PNG-Texturen | Auf 1024/2048 reduzieren, Draco oder Meshopt anwenden, ungenutzte Materialien und versteckte Flächen entfernen |
| Das Mesh reißt beim Animieren am Ellbogen | Retopologie nach dem Rigging ausgeführt oder nicht verschweißte Vertizes entlang einer Naht | Vor dem Rigging retopologisieren; Merge by Distance und Skin-Gewichte erneut prüfen |
| Helle Linien oder Leuchten entlang der UV-Nähte | Kein Padding an den Inselrändern, sodass Mipmaps die benachbarte Insel abtasten | 4–8 px Rand bei 1024 hinzufügen, mit Rand backen, Inseln innerhalb von 0–1 halten |
Betritt die Welt, zu der es gehört
Ein Sprite ist ein Charakter ohne Ort zum Stehen. Der letzte Schritt ist der, den sonst niemand bietet: Nimm das Sheet, das du gerade gebaut hast, und setze es in eine Welt, in der jemand herumlaufen kann — eine kleine Insel, einen Planeten, eine regnerische Straßenecke. Jede Welt auf dieser Seite wurde aus einer einzigen schriftlichen Beschreibung gemacht und als spielbare Seite veröffentlicht.
FAQ
Was ist eine 3D-Asset-Pipeline? +
Die geordnete Menge von Stufen, die aus einer Beschreibung eine ladbare Datei macht: beschreiben, Mesh generieren, retopologisieren, abwickeln und texturieren, prüfen, ein komprimiertes GLB exportieren. Die Reihenfolge ist durch Abhängigkeiten festgelegt — Retopologie zerstört UVs, Texturen hängen von UVs ab, und Kompression verdeckt früher entstandene Fehler.
Warum GLB statt FBX oder OBJ? +
GLB ist ein einzelner binärer Container, der von der glTF-Spezifikation definiert wird: Geometrie, Materialien, Texturen und Skinning in einer Datei, die Three.js und die meisten Engines ohne Konverter lesen. OBJ trägt keine Material- oder Animationsdaten, und FBX braucht ein proprietäres SDK. Für einen Browser-Build ist GLB das einzige Format, das kein zweites Werkzeug in der Kette erfordert.
Brauche ich Retopologie? +
Nur wenn die Oberfläche nach dem Export arbeiten muss: Verformung, Unterteilung oder das Backen von High-Poly-Details in eine Normal Map. Ein statisches Prop mit korrekter Silhouette kann dezimiert ausgeliefert werden. Retopologisiere vor dem Abwickeln und vor dem Rigging, nie danach.
Wie viele Dreiecke sind zu viele? +
Budgetiere nach Bildschirmabdeckung und Anzahl der Instanzen statt nach einer einzelnen Zahl. Grob 500–3.000 Dreiecke passen zu einem Prop, 5.000–15.000 zu einem Hero-Objekt und unter 500 zum Hintergrund-Set-Dressing. Ein Objekt, das einen kleinen Teil des Bildschirms füllt und fünfzigmal erscheint, sollte in Pixeln budgetiert werden, nicht in Dreiecken.
Kann ich das UV-Unwrap überspringen? +
Nur wenn das Objekt flache Farben oder einen prozeduralen Shader verwendet, der keine UVs braucht — und dieser Shader überlebt den Export nicht, weil glTF gebackene PBR-Texturen trägt, keine Node-Graphen. Alles mit einer gemalten oder gebackenen Albedo braucht ein echtes UV-Layout, also wickle ab, bevor du texturierst.
Wo sollte ich ein GLB testen? +
In dem Loader, mit dem du tatsächlich ausliefern wirst. Importiere es in den 3D Game Builder oder öffne es in einem eigenständigen glTF-Viewer und prüfe vier Dinge: den Maßstab gegen eine bekannte Referenz, die Normalen unter einem einzigen Licht, ob Material und Alpha-Modus erhalten geblieben sind, und die Dateigröße über das Netzwerk bei deaktiviertem Cache.
Zurück zum 3D Game Builder
Alle 31 fertigen 3D-Welten, Spiele und Szenen leben auf einer Seite — jede einzelne spielbar.