KĂĽnstliche Intelligenz
So funktioniert die Text-zu-3D-KI-Generierung: Meta 3D Gen, OpenAI Shap-E und mehr

By
Aayush Mittal mittal
Die Möglichkeit, 3D-Digital-Assets aus Texteingabeaufforderungen zu generieren, stellt eine der spannendsten Entwicklungen in der KI und Computergrafik dar. Da der Markt für 3D-Digital-Assets voraussichtlich von 28.3 Mrd. USD in 2024 bis 51.8 Mrd. USD in 2029, Text-zu-3D-KI-Modelle werden voraussichtlich eine wichtige Rolle bei der Revolutionierung der Inhaltserstellung in Branchen wie Gaming, Film, E-Commerce und mehr spielen. Aber wie genau funktionieren diese KI-Systeme? In diesem Artikel tauchen wir tief in die technischen Details hinter der Text-zu-3D-Generierung ein.
Die Herausforderung der 3D-Generierung
Das Generieren von 3D-Assets aus Text ist eine wesentlich komplexere Aufgabe als das Generieren von 2D-Bildern. Während 2D-Bilder im Wesentlichen Pixelraster sind, müssen bei 3D-Assets Geometrie, Texturen, Materialien und häufig Animationen im dreidimensionalen Raum dargestellt werden. Diese zusätzliche Dimensionalität und Komplexität macht die Generierungsaufgabe viel anspruchsvoller.
Zu den wichtigsten Herausforderungen bei der Text-zu-3D-Generierung gehören:
- Darstellung von 3D-Geometrie und Struktur
- Erzeugen einheitlicher Texturen und Materialien auf der gesamten 3D-Oberfläche
- Sicherstellung der physikalischen Plausibilität und Kohärenz aus mehreren Blickwinkeln
- Gleichzeitige Erfassung feiner Details und globaler Strukturen
- Erstellen von Assets, die einfach gerendert oder im 3D-Druckverfahren gedruckt werden können
Um diese Herausforderungen zu bewältigen, nutzen Text-zu-3D-Modelle mehrere wichtige Technologien und Techniken.
SchlĂĽsselkomponenten von Text-zu-3D-Systemen
Die meisten modernen Systeme zur Text-zu-3D-Generierung verfĂĽgen ĂĽber einige gemeinsame Kernkomponenten:
- TextentschlĂĽsselung: Umwandeln der Eingabeaufforderung in eine numerische Darstellung
- 3D-Darstellung: Eine Methode zur Darstellung von 3D-Geometrie und Erscheinungsbild
- Generatives Modell: Das zentrale KI-Modell zur Generierung des 3D-Assets
- Wiedergabe: Konvertieren der 3D-Darstellung in 2D-Bilder zur Visualisierung
Lassen Sie uns jeden einzelnen Punkt genauer untersuchen.
TextentschlĂĽsselung
Der erste Schritt besteht darin, die Eingabeaufforderung in eine numerische Darstellung umzuwandeln, mit der das KI-Modell arbeiten kann. Dies geschieht normalerweise mithilfe groĂźer Sprachmodelle wie BERT oder GPT.
3D Darstellung
Es gibt mehrere gängige Möglichkeiten, 3D-Geometrie in KI-Modellen darzustellen:
- Voxelgitter: 3D-Arrays von Werten, die Belegung oder Merkmale darstellen
- Punktwolken: Sätze von 3D-Punkten
- Meshes: Eckpunkte und Flächen, die eine Oberfläche definieren
- Implizite Funktionen: Kontinuierliche Funktionen, die eine Oberfläche definieren (z. B. vorzeichenbehaftete Distanzfunktionen)
- Neuronale Strahlungsfelder (NeRFs): Neuronale Netzwerke zur Darstellung von Dichte und Farbe im 3D-Raum
Bei jedem dieser Modelle gibt es Kompromisse in Bezug auf Auflösung, Speichernutzung und einfache Generierung. Viele neuere Modelle verwenden implizite Funktionen oder NeRFs, da sie qualitativ hochwertige Ergebnisse bei angemessenem Rechenaufwand ermöglichen.
Beispielsweise können wir eine einfache Kugel als vorzeichenbehaftete Distanzfunktion darstellen:
import numpy as np def sphere_sdf(x, y, z, radius=1.0): return np.sqrt(x**2 + y**2 + z**2) - radius # Evaluate SDF at a 3D point point = [0.5, 0.5, 0.5] distance = sphere_sdf(*point) print(f"Distance to sphere surface: {distance}")
Generatives Modell
Der Kern eines Text-zu-3D-Systems ist das generative Modell, das die 3D-Darstellung aus dem Texteinbettung. Die meisten modernen Modelle verwenden eine Variante eines Diffusionsmodells, ähnlich denen, die bei der 2D-Bilderzeugung verwendet werden.
Diffusionsmodelle funktionieren, indem sie den Daten nach und nach Rauschen hinzufügen und dann lernen, diesen Prozess umzukehren. Bei der 3D-Generierung findet dieser Prozess im Raum der gewählten 3D-Darstellung statt.
Ein vereinfachter Pseudocode für einen Trainingsschritt eines Diffusionsmodells könnte wie folgt aussehen:
def diffusion_training_step(model, x_0, text_embedding): # Sample a random timestep t = torch.randint(0, num_timesteps, (1,)) # Add noise to the input noise = torch.randn_like(x_0) x_t = add_noise(x_0, noise, t) # Predict the noise predicted_noise = model(x_t, t, text_embedding) # Compute loss loss = F.mse_loss(noise, predicted_noise) return loss # Training loop for batch in dataloader: x_0, text = batch text_embedding = encode_text(text) loss = diffusion_training_step(model, x_0, text_embedding) loss.backward() optimizer.step()
Bei der Generierung beginnen wir mit reinem Rauschen und führen eine iterative Rauschminderung durch, abhängig von der Texteinbettung.
Wiedergabe
Um Ergebnisse zu visualisieren und Verluste während des Trainings zu berechnen, müssen wir unsere 3D-Darstellung in 2D-Bilder umwandeln. Dies geschieht normalerweise mithilfe differenzierbarer Rendering-Techniken, die es ermöglichen, dass Gradienten durch den Rendering-Prozess zurückfließen.
Für meshbasierte Darstellungen könnten wir einen auf Rasterung basierenden Renderer verwenden:
import torch import torch.nn.functional as F import pytorch3d.renderer as pr def render_mesh(vertices, faces, image_size=256): # Create a renderer renderer = pr.MeshRenderer( rasterizer=pr.MeshRasterizer(), shader=pr.SoftPhongShader() ) # Set up camera cameras = pr.FoVPerspectiveCameras() # Render images = renderer(vertices, faces, cameras=cameras) return images # Example usage vertices = torch.rand(1, 100, 3) # Random vertices faces = torch.randint(0, 100, (1, 200, 3)) # Random faces rendered_images = render_mesh(vertices, faces)
FĂĽr implizite Darstellungen wie NeRFs verwenden wir normalerweise Ray-Marching-Techniken zum Rendern von Ansichten.
Alles zusammenfĂĽgen: Die Text-zu-3D-Pipeline
Nachdem wir nun die wichtigsten Komponenten behandelt haben, gehen wir durch, wie sie in einer typischen Text-zu-3D-Generierungspipeline zusammenkommen:
- TextentschlĂĽsselung: Die Eingabeaufforderung wird mithilfe eines Sprachmodells in eine dichte Vektordarstellung kodiert.
- Erste Generation: Ein Diffusionsmodell, das von der Texteinbettung abhängig ist, generiert eine anfängliche 3D-Darstellung (z. B. eine NeRF oder implizite Funktion).
- Konsistenz mehrerer Ansichten: Das Modell rendert mehrere Ansichten des generierten 3D-Assets und stellt die Konsistenz ĂĽber alle Ansichtspunkte hinweg sicher.
- Raffinesse: Zusätzliche Netzwerke können die Geometrie verfeinern, Texturen hinzufügen oder Details verbessern.
- EndgĂĽltige Ausgabe: Die 3D-Darstellung wird zur Verwendung in nachgelagerten Anwendungen in ein gewĂĽnschtes Format (z. B. strukturiertes Netz) konvertiert.
Hier ist ein vereinfachtes Beispiel, wie dies im Code aussehen könnte:
class TextTo3D(nn.Module): def __init__(self): super().__init__() self.text_encoder = BertModel.from_pretrained('bert-base-uncased') self.diffusion_model = DiffusionModel() self.refiner = RefinerNetwork() self.renderer = DifferentiableRenderer() def forward(self, text_prompt): # Encode text text_embedding = self.text_encoder(text_prompt).last_hidden_state.mean(dim=1) # Generate initial 3D representation initial_3d = self.diffusion_model(text_embedding) # Render multiple views views = self.renderer(initial_3d, num_views=4) # Refine based on multi-view consistency refined_3d = self.refiner(initial_3d, views) return refined_3d # Usage model = TextTo3D() text_prompt = "A red sports car" generated_3d = model(text_prompt)
Top-Text-zu-3D-Asset-Modelle verfĂĽgbar
3DGen – Meta
3DGen wurde entwickelt, um das Problem der Generierung von 3D-Inhalten – wie Charakteren, Requisiten und Szenen – aus Textbeschreibungen zu lösen.

Große Sprach- und Text-zu-3D-Modelle – 3D-Generation
3DGen unterstützt physikalisch basiertes Rendering (PBR), das für eine realistische Neubeleuchtung von 3D-Assets in realen Anwendungen unerlässlich ist. Es ermöglicht außerdem die generative Neutexturierung zuvor generierter oder vom Künstler erstellter 3D-Formen mithilfe neuer Texteingaben. Die Pipeline integriert zwei Kernkomponenten: Meta 3D AssetGen und Meta 3D TextureGen, die jeweils die Text-zu-3D- und Text-zu-Textur-Generierung handhaben.
Meta 3D AssetGen
Meta 3D AssetGen (Siddiqui et al., 2024) ist für die anfängliche Generierung von 3D-Assets aus Textaufforderungen verantwortlich. Diese Komponente erstellt in etwa 3 Sekunden ein 30D-Netz mit Texturen und PBR-Materialkarten.
Meta 3D TextureGen
Meta 3D TextureGen (Bensadoun et al., 2024) verfeinert die von AssetGen generierten Texturen. Es kann auch verwendet werden, um basierend auf zusätzlichen Textbeschreibungen neue Texturen für vorhandene 3D-Netze zu generieren. Dieser Schritt dauert ungefähr 20 Sekunden.
Punkt-E (OpenAI)
Point-E, entwickelt von OpenAIist ein weiteres bemerkenswertes Modell zur Generierung von Text in 3D. Im Gegensatz zu DreamFusion, das NeRF-Darstellungen erstellt, generiert Point-E 3D-Punktwolken.
Hauptmerkmale von Point-E:
a) Zweistufige Pipeline: Point-E generiert zunächst eine synthetische 2D-Ansicht mithilfe eines Text-Bild-Diffusionsmodells und verwendet dieses Bild dann, um ein zweites Diffusionsmodell zu konditionieren, das die 3D-Punktwolke erzeugt.
b) Wirkungsgrad: Point-E ist auf rechnerische Effizienz ausgelegt und kann in Sekundenschnelle 3D-Punktwolken auf einer einzigen GPU generieren.
c) Farbinformationen: Das Modell kann farbige Punktwolken erzeugen, wobei sowohl geometrische als auch Erscheinungsinformationen erhalten bleiben.
Einschränkungen:
- Geringere Wiedergabetreue im Vergleich zu Mesh-basierten oder NeRF-basierten Ansätzen
- Punktwolken erfordern für viele nachgelagerte Anwendungen eine zusätzliche Verarbeitung
Shap-E (OpenAI):
Aufbauend auf Point-E führte OpenAI Shap-E, das 3D-Netze anstelle von Punktwolken generiert. Dadurch werden einige der Einschränkungen von Point-E behoben, während die Rechenleistung erhalten bleibt.
Hauptmerkmale von Shap-E:
a) Implizite Darstellung: Shap-E lernt, implizite Darstellungen (vorzeichenbehaftete Distanzfunktionen) von 3D-Objekten zu generieren.
b) Netzextraktion: Das Modell verwendet eine differenzierbare Implementierung des Marching-Cubes-Algorithmus, um die implizite Darstellung in ein polygonales Netz umzuwandeln.
c) Texturgenerierung: Shap-E kann auch Texturen fĂĽr die 3D-Netze generieren, was zu optisch ansprechenderen Ergebnissen fĂĽhrt.
Vorteile:
- Schnelle Generierungszeiten (Sekunden bis Minuten)
- Direkte Mesh-Ausgabe, geeignet fĂĽr Rendering und nachgelagerte Anwendungen
- Möglichkeit, sowohl Geometrie als auch Textur zu generieren
GET3D (NVIDIA):
GET3D, entwickelt von NVIDIA-Forschern, ist ein weiteres leistungsstarkes Modell zur Text-zu-3D-Generierung, das sich auf die Erstellung hochwertiger strukturierter 3D-Netze konzentriert.
Hauptmerkmale von GET3D:
a) Explizite Oberflächendarstellung: Im Gegensatz zu DreamFusion oder Shap-E generiert GET3D direkt explizite Oberflächendarstellungen (Netze) ohne implizite Zwischendarstellungen.
b) Texturgenerierung: Das Modell enthält eine differenzierbare Rendering-Technik zum Erlernen und Generieren hochwertiger Texturen für die 3D-Netze.
c) GAN-basierte Architektur: GET3D verwendet einen GAN-Ansatz (Generative Adversarial Network), der eine schnelle Generierung ermöglicht, sobald das Modell trainiert ist.
Vorteile:
- Hochwertige Geometrie und Texturen
- Schnelle Inferenzzeiten
- Direkte Integration mit 3D-Rendering-Engines
Einschränkungen:
- Erfordert 3D-Trainingsdaten, die für einige Objektkategorien knapp sein können
Fazit
Die Text-to-3D-KI-Generierung stellt einen grundlegenden Wandel in der Art und Weise dar, wie wir 3D-Inhalte erstellen und mit ihnen interagieren. Durch den Einsatz fortschrittlicher Deep-Learning-Techniken können diese Modelle aus einfachen Textbeschreibungen komplexe, hochwertige 3D-Assets erstellen. Da sich die Technologie weiterentwickelt, können wir mit immer ausgefeilteren und leistungsfähigeren Text-to-3D-Systemen rechnen, die Branchen von Gaming und Film bis hin zu Produktdesign und Architektur revolutionieren werden.
Ich habe die letzten fünf Jahre damit verbracht, in die faszinierende Welt des maschinellen Lernens und des Deep Learning einzutauchen. Meine Leidenschaft und mein Fachwissen haben dazu geführt, dass ich an über 50 verschiedenen Software-Engineering-Projekten mitgewirkt habe, mit besonderem Schwerpunkt auf KI/ML. Meine anhaltende Neugier hat mich auch zur Verarbeitung natürlicher Sprache geführt, einem Bereich, den ich gerne weiter erforschen möchte.
Vielleicht gefällt dir
-
Optimierung neuronaler Strahlungsfelder (NeRF) fĂĽr Echtzeit-3D-Rendering in E-Commerce-Plattformen
-
Claudes Model Context Protocol (MCP): Ein Leitfaden fĂĽr Entwickler
-
Entwurfsmuster in Python fĂĽr KI- und LLM-Ingenieure: Ein praktischer Leitfaden
-
Microsoft AutoGen: Multi-Agent-KI-Workflows mit erweiterter Automatisierung
-
Asynchrone LLM-API-Aufrufe in Python: Ein umfassender Leitfaden
-
Showdown der KI-Sprachen: Vergleich der Leistung von C++, Python, Java und Rust