ComfyUI-3D-Paket
Machen Sie die Generierung von 3D-Assets in ComfyUI gut und bequem, da es Bilder/Videos generiert!
Hierbei handelt es sich um eine umfangreiche Knotensuite, die es ComfyUI ermöglicht, 3D-Eingaben (Mesh & UV-Textur usw.) mithilfe modernster Algorithmen (3DGS, NeRF usw.) und Modelle (InstantMesh, CRM, TripoSR usw.) zu verarbeiten.
Funktionen – Installation – Roadmap – Entwicklung – Tipps – Unterstützer Installieren:
Kann direkt vom ComfyUI-Manager installiert werden?
- Vorgefertigte Versionen sind verfügbar für:
- Windows 10/11, Ubuntu 22.04
- Python 3.10/3.11/3.12
- CUDA 12.1/11.8
- Torch 2.3.0+cu121/cu118, Torchvision 0.18.0+cu121/cu118
- install.py lädt Pre-Builds entsprechend Ihrer Laufzeitumgebung automatisch herunter und installiert sie. Wenn keine entsprechenden Pre-Builds gefunden werden konnten, wird das Build-Skript automatisch gestartet. Wenn der automatische Build für Sie nicht funktioniert, schauen Sie sich bitte Semi an -Automatische Build-Anleitung
- Wenn in einem offenen Comfy3D-Workflow ein Knoten fehlt, klicken Sie einfach im ComfyUI-Manager auf „Fehlende benutzerdefinierte Knoten installieren“.
- Wenn Ihr Comfy3d aus irgendeinem Grund vorab trainierte Modelle nicht automatisch herunterladen kann, können Sie sie jederzeit manuell herunterladen und im richtigen Ordner im Checkpoints-Verzeichnis ablegen. Überschreiben Sie jedoch bitte KEINE vorhandenen JSON-Dateien
- Für die Docker-Installation überprüfen Sie bitte DOCKER_INSTRUCTIONS.md
- Hinweis: Zu diesem Zeitpunkt müssen Sie noch Visual Studio Build Tools für Windows und
gcc g++
für Linux installieren, damit InstantNGP & Convert 3DGS to Mesh with NeRF and Marching_Cubes
-Knoten funktioniert, da diese beiden Knoten JIT Torch CPP verwendeten Erweiterung, die zur Laufzeit erstellt wird, aber ich habe vor, diese Knoten bald zu ersetzen
Merkmale:
Für Anwendungsfälle schauen Sie sich bitte Beispiel-Workflows an. [ Letzte Aktualisierung: 01.08.2024 ]
- Hinweis: Sie müssen Beispieleingabedateien und -ordner im Ordner ComfyUI Root DirectoryComfyUIinput ablegen, bevor Sie den Beispielworkflow ausführen können
- tripoSR-Layered-Diffusion-Workflow von @Consumption
StableFast3D : Stabilität-KI/stable-fast-3d
- Einzelbild zu 3D-Mesh mit RGB-Textur
- Hinweis: Sie müssen den Nutzungsbedingungen von Stability-AI zustimmen, bevor Sie die Modellgewichte herunterladen können. Wenn Sie die Modellgewichte manuell heruntergeladen haben, müssen Sie sie unter Checkpoints/StableFast3D ablegen, andernfalls können Sie Ihr Huggingface-Token in Configs/ hinzufügen. system.conf
- Modellgewichte: https://huggingface.co/stabilityai/stable-fast-3d/tree/main
2024-08-01.19-21-58.mp4
CharacterGen : zjp-shadow/CharacterGen
- Einzelne Vorderansicht einer Figur mit beliebiger Pose
- Kann für bessere Ergebnisse mit dem Unique3D-Workflow kombiniert werden
- Modellgewichte: https://huggingface.co/zjpshadow/CharacterGen/tree/main
zQ4Kb8kXr7QBxkY5.mp4
Unique3D : AiuniAI/Unique3D
- Vierstufige Pipeline:
- Einzelbild bis 4 Mehrfachansichtsbilder mit Auflösung: 256 x 256
- Konsistente Multi-View-Bilder. Hochskalierung auf 512 x 512, Superauflösung auf 2048 x 2048
- Mehransichtsbilder zu Normalkarten mit Auflösung: 512 x 512, Superauflösung bis 2048 x 2048
- Mehransichtsbilder und Normalkarten zu 3D-Netz mit Textur
- Um den All-Stage-Unique3D-Workflow zu verwenden, laden Sie Modelle herunter:
- sdv1.5-pruned-emaonly und legen Sie es in
Your ComfyUI root directory/ComfyUI/models/checkpoints
ab - Optimieren Sie die Controlnet-Kachel und legen Sie sie in
Your ComfyUI root directory/ComfyUI/models/controlnet
ab - ip-adapter_sd15 und legen Sie es in
Your ComfyUI root directory/ComfyUI/models/ipadapter
ab - OpenCLIP-ViT-H-14, benennen Sie es in OpenCLIP-ViT-H-14.safetensors um und legen Sie es in
Your ComfyUI root directory/ComfyUI/models/clip_vision
ab - RealESRGAN_x4plus und legen Sie es in
Your ComfyUI root directory/ComfyUI/models/upscale_models
ab
- Modellgewichte: https://huggingface.co/spaces/Wuvin/Unique3D/tree/main/ckpt
2024-06-0711-51-27-ezgif.com-resize-video.mp4
Era3D MVDiffusionsmodell : pengHTYX/Era3D
- Einzelbild bis 6 Multi-View-Bilder und Normalkarten mit Auflösung: 512 x 512
- Hinweis: Sie benötigen mindestens 16 GB VRAM, um dieses Modell auszuführen
- Modellgewichte: https://huggingface.co/pengHTYX/MacLab-Era3D-512-6view/tree/main
2024-06-0711-56-48-ezgif.com-resize-video.mp4
InstantMesh-Rekonstruktionsmodell : TencentARC/InstantMesh
- Spärliche Mehrfachansichtsbilder mit weißem Hintergrund bis hin zu 3D-Netz mit RGB-Textur
- Funktioniert mit beliebigen MVDiffusion-Modellen (funktioniert wahrscheinlich am besten mit Zero123++, funktioniert aber auch mit dem CRM-MVDiffusion-Modell)
- Modellgewichte: https://huggingface.co/TencentARC/InstantMesh/tree/main
2024-05-23.17-35-22.mp4
2024-05-23.17-32-31.mp4
Zero123++ : SUDO-AI-3D/zero123plus
- Einzelbild bis 6 Ansichtsbilder mit Auflösung: 320 x 320
Faltungsrekonstruktionsmodell : thu-ml/CRM
- Dreistufige Pipeline:
- Einzelbild bis 6 Ansichtsbilder (vorne, hinten, links, rechts, oben und unten)
- Einzelbild und 6 Ansichtsbilder zu 6 gleichen Ansichten CCMs (Kanonische Koordinatenkarten)
- 6 Bilder und CCMs im 3D-Netz anzeigen
- Hinweis: Wenn Sie bei PCs mit niedrigem VRAM nicht alle drei Modelle für jede Stufe in Ihren GPU-Speicher unterbringen können, können Sie diese drei Stufen in verschiedene komfortable Arbeitsabläufe aufteilen und sie separat ausführen
- Modellgewichte: https://huggingface.co/sudo-ai/zero123plus-v1.2
2024-03-12.22-05-10.mp4
TripoSR : VAST-AI-Research/TripoSR | ComfyUI-Flowty-TripoSR
- Generieren Sie eine NeRF-Darstellung und wandeln Sie sie mithilfe des Marschwürfels in ein 3D-Netz um
- Modellgewichte: https://huggingface.co/stabilityai/TripoSR/tree/main
2024-03-05.22-38-36.mp4
Wonder3D : xxlong0/Wonder3D
- Generieren Sie räumlich konsistente Bilder mit 6 Ansichten und Normalkarten aus einem einzigen Bild
- Modellgewichte: https://huggingface.co/flamehaze1115/wonder3d-v1.0/tree/main
Großes Gaußsches Multiview-Modell : 3DTopia/LGM
- Aktivieren Sie auf einer RTX3080-GPU ein einzelnes Bild in weniger als 30 Sekunden in 3D-Gauß. Später können Sie auch 3D-Gauß in Mesh konvertieren
- Modellgewichte: https://huggingface.co/ashawkey/LGM/tree/main
2024-02-08.23-36-31.mp4
Dreidecker-Gauß-Transformatoren : VAST-AI-Research/TriplaneGaussian
- Aktivieren Sie Einzelbilder in weniger als 10 Sekunden auf einer RTX3080-GPU in 3D-Gauß. Später können Sie auch 3D-Gauß in Mesh konvertieren
- Modellgewichte: https://huggingface.co/VAST-AI/TriplaneGaussian/tree/main
2024-02-08.23-57-37.mp4
Vorschau von 3DGS und 3D Mesh : 3D-Visualisierung in ComfyUI:
- Verwendung von gsplat.js und three.js für die 3DGS- bzw. 3D-Mesh-Visualisierung
- Anpassbare Hintergrundbasis auf JS-Bibliothek: mdbassit/Coloris
2024-02-04.19-20-17.mp4
Stapel-Orbit-Kamera-Posen : Generieren Sie automatisch alle möglichen Kamera-Posen-Kombinationen
Sie können damit den StableZero123 konditionieren (Sie müssen zuerst den Checkpoint herunterladen), mit dem gesamten Spektrum an Kamerapositionen in einem einzigen Durchgang
Sie können damit die Posen der Orbitkamera generieren und diese direkt in andere 3D-Prozessknoten eingeben (z. B. GaussianSplatting und BakeTextureToMesh).
Beispielverwendung:
Koordinatensystem:
- Azimut: In der Draufsicht, aus Winkel 0, um 360 Grad mit Schritt -90 drehen, erhalten Sie (0, -90, -180/180, 90, 0), in diesem Fall dreht sich die Kamera im Uhrzeigersinn, umgekehrt.
- Elevation: 0, wenn die Kamera horizontal nach vorne zeigt, ist die Richtung nach unten auf den Boden negativ, und umgekehrt.
FlexiCubes : nv-tlabs/FlexiCubes
- Multi-View-Tiefe und -Maske (optionale Normalkarten) als Eingaben
- In 3D-Netz exportieren
- Nutzungsanleitung:
- voxel_grids_resolution : Bestimmen Sie die Netzauflösung/-qualität
- Depth_min_distance Depth_max_distance : Abstand vom Objekt zur Kamera. Objektteile im Rendering, die näher (weiter) an der Kamera liegen als Depth_min_distance( Depth_max_distance), werden mit reinweißem (schwarzem) RGB-Wert 1, 1, 1(0, 0, 0) gerendert.
- mask_loss_weight : Steuern Sie die Silhouette des wiederhergestellten 3D-Netzes
- Depth_loss_weight : Steuern Sie die Form des rekonstruierten 3D-Netzes. Dieser Verlust wirkt sich auch auf die Details der Netzverformung auf der Oberfläche aus, sodass die Ergebnisse von der Qualität der Tiefenkarte abhängen
- normal_loss_weight : Optional. Verwenden Sie diese Option, um die Verformungsdetails des Netzes auf der Oberfläche zu verfeinern
- sdf_regularizer_weight : Hilft beim Entfernen von Floatern in Bereichen der Form, die nicht vom Anwendungsziel überwacht werden, z. B. interne Flächen, wenn nur die Bildüberwachung verwendet wird
- remove_floaters_weight : Dies kann erhöht werden, wenn Sie Artefakte in flachen Bereichen beobachten
- Cube_stabilizer_weight : Dies hat keinen wesentlichen Einfluss auf die Optimierung einer einzelnen Form, trägt jedoch in manchen Fällen zur Stabilisierung des Trainings bei
2024-04-12-16-21-24.mp4
Instant NGP : nerfacc
- Multi-View-Bilder als Eingaben
- Mit Marschwürfeln in ein 3D-Netz exportieren
3D-Gaußsches Splatting
- Verbesserte differenzielle Gaußsche Rasterisierung
- Bessere kompaktheitsbasierte Verdichtungsmethode von Gsgen,
- Unterstützung für die Initialisierung von Gaußschen Werten aus einem bestimmten 3D-Netz (optional)
- Unterstützen Sie die Mini-Batch-Optimierung
- Multi-View-Bilder als Eingaben
- Export in das standardmäßige 3DGS-Ply-Format wird unterstützt
Gaußscher Splatting-Orbit-Renderer
- Rendern Sie 3DGS in Bildsequenzen oder Videos, basierend auf einer 3DGS-Datei und Kameraposen, die vom Stack Orbit Camera Poses -Knoten generiert wurden
Mesh-Orbit-Renderer
- Rendern Sie ein 3D-Netz in Bildsequenzen oder Videos, vorausgesetzt, Sie verfügen über eine Netzdatei und Kamerapositionen, die vom Knoten „Stack Orbit Camera Poses“ generiert wurden
Fitting_Mesh_With_Multiview_Images
- Backen Sie Multi-View-Bilder mit Nvdiffrast in UVTexture eines bestimmten 3D-Netzes und unterstützen Sie:
- Export nach .obj, .ply, .glb
3D-Datei speichern und laden
- .obj, .ply, .glb für 3D Mesh
- .ply für 3DGS
Wechseln Sie die Achse für 3DGS und 3D Mesh
- Da verschiedene Algorithmen wahrscheinlich unterschiedliche Koordinatensysteme verwenden, ist die Möglichkeit, die Koordinatenachse neu zuzuordnen, entscheidend für die Weitergabe generierter Ergebnisse zwischen verschiedenen Knoten.
Anpassbare Systemkonfigurationsdatei
- Benutzerdefinierte Client-IP-Adresse
- Fügen Sie Ihr Huggingface-Benutzertoken hinzu
Roadmap:
Entwicklung
So können Sie einen Beitrag leisten
- Forken Sie das Projekt
- Nehmen Sie Verbesserungen vor/fügen Sie neue Funktionen hinzu
- Erstellen einer Pull-Anfrage an den Entwicklungszweig
Projektstruktur
nodes.py :
Enthält den Schnittstellencode für alle Comfy3D-Knoten (dh die Knoten, die Sie tatsächlich in ComfyUI sehen und verwenden können). Sie können Ihre neuen Knoten hier hinzufügen
Gen_3D_Modules :
Ein Ordner, der den Code für alle generativen Modelle/Systeme enthält (z. B. Multi-View-Diffusionsmodelle, 3D-Rekonstruktionsmodelle). Hier sollen neue generative 3D-Module hinzugefügt werden
MVs_Algorithmen :
Ein Ordner, der den Code für alle Multi-View-Stereo-Algorithmen enthält, d. h. Algorithmen (z. B. Gaussian Splatting, NeRF und FlexiCubes), die Multi-View-Bilder aufnehmen und in eine 3D-Darstellung (z. B. Gauß, MLP oder Mesh) konvertieren. Hier sollten neue MVS-Algorithmen hinzugefügt werden
Web :
Ein Ordner, der die Dateien und den Code (HTML, JS, CSS) für alle Dinge im Zusammenhang mit der Browser-Benutzeroberfläche enthält (z. B. das HTML-Layout, den Stil und die Kernlogiken für die Vorschau von 3D-Netzen und Gauss-Funktionen). Hier sollte eine neue Web-Benutzeroberfläche hinzugefügt werden
Webserver :
Ein Ordner, der den Code für die Kommunikation mit dem Browser enthält, dh für die Bearbeitung von Web-Client-Anfragen (z. B. Senden von 3D-Mesh an den Client bei Anfrage mit bestimmten URL-Routen). Hier sollten neue Webserver-bezogene Funktionen hinzugefügt werden
Konfigurationen :
Ein Ordner, der verschiedene Konfigurationsdateien für verschiedene Module enthält. Neue Konfigurationen sollten hier hinzugefügt werden. Verwenden Sie einen Unterordner, wenn es mehr als eine Konfiguration für ein einzelnes Modul gibt (z. B. Unique3D, CRM).
Kontrollpunkte :
Ein Ordner, der das gesamte vorab trainierte Modell und einige der von Diffusoren benötigten Konfigurationsdateien für die Modellarchitektur enthält. Neue Prüfpunkte, wenn sie automatisch vom Load_Diffusers Pipeline
-Knoten heruntergeladen werden könnten, sollten hier hinzugefügt werden
install.py :
Das Hauptinstallationsskript lädt automatisch Pre-Builds entsprechend Ihrer Laufzeitumgebung herunter und installiert sie. Wenn keine entsprechenden Pre-Builds gefunden werden konnten, wird das Build-Skript automatisch gestartet und vom ComfyUI-Manager direkt nach der Installation der in den Anforderungen aufgeführten Abhängigkeiten aufgerufen .txt mit pip
Wenn die neuen Module, die Sie hinzufügen möchten, einige zusätzliche Pakete benötigen, die nicht einfach in „requirements.txt“ und „build_config.remote_packages“ hinzugefügt werden können, können Sie versuchen, sie hinzuzufügen, indem Sie dieses Skript ändern
_Pre_Builds :
Ein Ordner, der die Dateien und den Code zum Erstellen aller erforderlichen Abhängigkeiten enthält. Wenn Sie einige zusätzliche Abhängigkeiten vorab erstellen möchten, überprüfen Sie bitte _Pre_Builds/README.md für weitere Informationen
Tipps
- OpenGL (Three.js, Blender) Welt- und Kamerakoordinatensystem:
World Camera
+y up target
| | /
| | /
|______+x |/______right
/ /
/ /
/ /
+z forward
z-axis is pointing towards you and is coming out of the screen
elevation: in (-90, 90), from +y to +x is (-90, 0)
azimuth: in (-180, 180), from +z to +x is (0, 90)
- Wenn OpenGL-Fehler auftreten (z. B.
[F glutil.cpp:338] eglInitialize() failed
), setzen Sie force_cuda_rasterize
auf dem entsprechenden Knoten auf „true“. - Wenn Ihr ComfyUI nach der Installation beim Starten oder Ausführen hängen bleibt, können Sie den Anweisungen unter dem folgenden Link folgen, um das Problem zu lösen: Code hängt auf unbestimmte Zeit beim Auswerten von Neuron-Modellen auf der GPU
Unterstützer