ComfyUI-3D-Pack
Rendre la génération d'actifs 3D dans ComfyUI efficace et pratique car elle génère des images/vidéos !
Il s'agit d'une suite de nœuds complète qui permet à ComfyUI de traiter les entrées 3D (Mesh & UV Texture, etc.) à l'aide d'algorithmes de pointe (3DGS, NeRF, etc.) et de modèles (InstantMesh, CRM, TripoSR, etc.)
Fonctionnalités — Installation — Feuille de route — Développement — Conseils — Supporters Installer:
Peut-il être installé directement depuis ComfyUI-Manager ?
- Les pré-builds sont disponibles pour :
- Windows 10/11, Ubuntu 22.04
- Python3.10/3.11/3.12
- CUDA12.1/11.8
- torche 2.3.0+cu121/cu118, torchevision 0.18.0+cu121/cu118
- install.py téléchargera et installera automatiquement les pré-builds en fonction de votre environnement d'exécution. S'il ne trouve pas les pré-builds correspondants, le script de build démarrera automatiquement. Si la construction automatique ne fonctionne pas pour vous, veuillez consulter Semi. -Guide de construction automatique
- Si vous avez un nœud manquant dans un flux de travail Comfy3D ouvert, essayez simplement de cliquer sur Installer les nœuds personnalisés manquants dans ComfyUI-Manager.
- Si, pour une raison quelconque, votre confortable3d ne peut pas télécharger automatiquement les modèles pré-entraînés, vous pouvez toujours les télécharger manuellement et les placer dans le bon dossier sous le répertoire Checkpoints, mais veuillez NE PAS écraser les fichiers .json existants.
- Installation de Docker, veuillez vérifier DOCKER_INSTRUCTIONS.md
- Remarque : pour le moment, vous devrez toujours installer Visual Studio Build Tools pour Windows et installer
gcc g++
pour Linux pour InstantNGP & Convert 3DGS to Mesh with NeRF and Marching_Cubes
fonctionnent, car ces deux nœuds utilisaient JIT torch cpp. extension qui s'intègre au runtime, mais je prévois de remplacer ces nœuds bientôt
Caractéristiques:
Pour les cas d'utilisation, veuillez consulter Exemples de flux de travail. [ Dernière mise à jour : 01/Août/2024 ]
- Remarque : vous devez placer les exemples de fichiers et de dossiers d'entrées sous le dossier ComfyUI Root DirectoryComfyUIinput avant de pouvoir exécuter l'exemple de flux de travail.
- Workflow de diffusion en couches tripoSR par @Consumption
StableFast3D : Stabilité-AI/stable-fast-3d
- Image unique en maillage 3D avec texture RVB
- Remarque : vous devez accepter les conditions d'utilisation de Stability-AI avant de pouvoir télécharger les poids du modèle. Si vous avez téléchargé les poids du modèle manuellement, vous devez les placer sous Checkpoints/StableFast3D, sinon vous pouvez ajouter votre jeton huggingface dans Configs/ système.conf
- Poids du modèle : https://huggingface.co/stabilityai/stable-fast-3d/tree/main
2024-08-01.19-21-58.mp4
CharacterGen : zjp-shadow/CharacterGen
- Vue de face unique d'un personnage avec une pose arbitraire
- Peut être combiné avec le flux de travail Unique3D pour un meilleur résultat
- Poids du modèle : https://huggingface.co/zjpshadow/CharacterGen/tree/main
zQ4Kb8kXr7QBxkY5.mp4
Unique3D : AiuniAI/Unique3D
- Pipeline en quatre étapes :
- Image unique à 4 images multi-vues avec résultat : 256X256
- Images multi-vues cohérentes, mise à l'échelle jusqu'à 512 x 512, super résolution jusqu'à 2048 x 2048.
- Images multi-vues sur cartes normales avec résultat : 512X512, super résolution jusqu'à 2048X2048
- Images multi-vues et cartes normales vers un maillage 3D avec texture
- Pour utiliser le flux de travail Unique3D à toutes les étapes, téléchargez les modèles :
- sdv1.5-pruned-emaonly et placez-le dans
Your ComfyUI root directory/ComfyUI/models/checkpoints
- affinez la tuile controlnet et placez-la dans
Your ComfyUI root directory/ComfyUI/models/controlnet
- ip-adapter_sd15 et placez-le dans
Your ComfyUI root directory/ComfyUI/models/ipadapter
- OpenCLIP-ViT-H-14, renommez-le en OpenCLIP-ViT-H-14.safetensors et placez-le dans
Your ComfyUI root directory/ComfyUI/models/clip_vision
- RealESRGAN_x4plus et placez-le dans
Your ComfyUI root directory/ComfyUI/models/upscale_models
- Poids du modèle : https://huggingface.co/spaces/Wuvin/Unique3D/tree/main/ckpt
2024-06-0711-51-27-ezgif.com-resize-video.mp4
Modèle Era3D MVDiffusion : pengHTYX/Era3D
- Image unique à 6 images multi-vues et cartes normales avec résultat : 512X512
- Remarque : vous avez besoin d'au moins 16 Go de mémoire vive pour exécuter ce modèle.
- Poids du modèle : https://huggingface.co/pengHTYX/MacLab-Era3D-512-6view/tree/main
2024-06-0711-56-48-ezgif.com-resize-video.mp4
Modèle de reconstruction InstantMesh : TencentARC/InstantMesh
- Images multi-vues clairsemées avec fond blanc sur maillage 3D avec texture RVB
- Fonctionne avec des modèles MVDiffusion arbitraires (fonctionne probablement mieux avec Zero123++, mais fonctionne également avec le modèle CRM MVDiffusion)
- Poids du modèle : 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
- Image unique pour 6 images de visualisation avec résultat : 320X320
Modèle de reconstruction convolutive : thu-ml/CRM
- Pipeline en trois étapes :
- Image unique pour afficher 6 images (avant, arrière, gauche, droite, haut et bas)
- Image unique et 6 vues d'images vers 6 mêmes vues CCM (Cartes de coordonnées canoniques)
- 6 vues d'images et de CCM vers un maillage 3D
- Remarque : pour les ordinateurs à faible VRAM, si vous ne parvenez pas à intégrer les trois modèles de chaque étape dans la mémoire de votre GPU, vous pouvez alors diviser ces trois étapes en différents flux de travail confortables et les exécuter séparément.
- Poids des modèles : https://huggingface.co/sudo-ai/zero123plus-v1.2
2024-03-12.22-05-10.mp4
TripoSR : VAST-AI-Research/TripoSR | ComfyUI-Flowty-TripoSR
- Générez une représentation NeRF et utilisez un cube de marche pour la transformer en maillage 3D
- Poids du modèle : https://huggingface.co/stabilityai/TripoSR/tree/main
2024-03-05.22-38-36.mp4
Wonder3D : xxlong0/Wonder3D
- Générez des images à 6 vues et des cartes normales spatialement cohérentes à partir d'une seule image
- Poids du modèle : https://huggingface.co/flamehaze1115/wonder3d-v1.0/tree/main
Grand modèle gaussien multivue : 3DTopia/LGM
- Activez une image unique en gaussienne 3D en moins de 30 secondes sur un GPU RTX3080, plus tard, vous pourrez également convertir la gaussienne 3D en maillage
- Poids des modèles : https://huggingface.co/ashawkey/LGM/tree/main
2024-02-08.23-36-31.mp4
Transformateurs Gaussiens Triplan : VAST-AI-Research/TriplaneGaussian
- Activez une image unique en gaussienne 3D en moins de 10 secondes sur un GPU RTX3080, plus tard, vous pourrez également convertir la gaussienne 3D en maillage
- Poids du modèle : https://huggingface.co/VAST-AI/TriplaneGaussian/tree/main
2024-02-08.23-57-37.mp4
Aperçu 3DGS et 3D Mesh : visualisation 3D dans ComfyUI :
- Utilisation de gsplat.js et three.js pour la visualisation 3DGS et 3D Mesh respectivement
- Base de fond personnalisable sur la bibliothèque JS : mdbassit/Coloris
2024-02-04.19-20-17.mp4
Stack Orbit Camera Poses : Générez automatiquement toutes les combinaisons de poses de caméra
Vous pouvez l'utiliser pour conditionner le StableZero123 (vous devez d'abord télécharger le point de contrôle), avec une gamme complète de poses de caméra en un seul passage.
Vous pouvez l'utiliser pour générer les poses de la caméra orbitale et les saisir directement dans un autre nœud de processus 3D (par exemple GaussianSplatting et BakeTextureToMesh).
Exemple d'utilisation :
Système de coordonnées :
- Azimut : En vue de dessus, à partir de l'angle 0, faites une rotation de 360 degrés avec le pas de -90, vous obtenez (0, -90, -180/180, 90, 0), dans ce cas, la caméra tourne dans le sens des aiguilles d'une montre, vice versa.
- Élévation : 0 lorsque la caméra pointe horizontalement vers l'avant, pointer vers le sol est un angle négatif, vice versa.
FlexiCubes : nv-tlabs/FlexiCubes
- Profondeur et masque multi-vues (cartes normales en option) en tant qu'entrées
- Exporter vers un maillage 3D
- Guide d'utilisation :
- voxel_grids_resolution : détermine la résolution/qualité du maillage
- profondeur_min_distance profondeur_max_distance : distance entre l'objet et la caméra, les parties de l'objet dans le rendu qui sont plus proches (plus) de la caméra que la profondeur_min_distance (profondeur_max_distance) seront rendues avec une valeur RVB blanc pur (noir) 1, 1, 1 (0, 0, 0)
- mask_loss_weight : Contrôler la silhouette du maillage 3D reconstitué
- deep_loss_weight : Contrôle la forme du maillage 3D reconstruit, cette perte affectera également les détails de déformation du maillage sur la surface, les résultats dépendent donc de la qualité de la carte de profondeur.
- normal_loss_weight : facultatif. Utiliser pour affiner les détails de déformation du maillage sur la surface
- sdf_regularizer_weight : Aide à supprimer les flotteurs dans les zones de la forme qui ne sont pas supervisées par l'objectif de l'application, telles que les faces internes lors de l'utilisation de la supervision d'image uniquement.
- remove_floaters_weight : Cela peut être augmenté si vous observez des artefacts dans des zones plates
- cube_stabilizer_weight : Cela n'a pas d'impact significatif lors de l'optimisation d'une seule forme, cependant cela aide à stabiliser l'entraînement dans certains cas
2024-04-12-16-21-24.mp4
NGP instantané : nerfacc
- Images multi-vues comme entrées
- Exporter vers un maillage 3D à l'aide de cubes de marche
Éclaboussures gaussiennes 3D
- Rastérisation gaussienne différentielle améliorée
- Meilleure méthode de densification basée sur la compacité de Gsgen,
- Prise en charge de l'initialisation des gaussiennes à partir d'un maillage 3D donné (facultatif)
- Prise en charge de l'optimisation des mini-lots
- Images multi-vues comme entrées
- Exportation au format standard 3DGS .ply pris en charge
Rendu d'orbite gaussien
- Rendu 3DGS en séquences d'images ou vidéo, à partir d'un fichier 3DGS et de poses de caméra générées par le nœud Stack Orbit Camera Poses
Rendu d'orbite de maillage
- Restituer un maillage 3D en séquences d'images ou en vidéo, à partir d'un fichier de maillage et de poses de caméra générées par le nœud Stack Orbit Camera Poses .
Fitting_Mesh_With_Multiview_Images
- Intégrez des images multi-vues dans UVTexture d'un maillage 3D donné à l'aide de Nvdiffrast, prend en charge :
- Exporter vers .obj, .ply, .glb
Enregistrer et charger le fichier 3D
- .obj, .ply, .glb pour le maillage 3D
- .ply pour 3DGS
Axe de commutation pour 3DGS et maillage 3D
- Étant donné que différents algorithmes utilisent probablement un système de coordonnées différent, la possibilité de remapper l'axe de coordonnées est cruciale pour transmettre le résultat généré entre différents nœuds.
Fichier de configuration système personnalisable
- Adresse IP des clients personnalisés
- Ajoutez votre jeton utilisateur Huggingface
Feuille de route :
Développement
Comment contribuer
- Forkez le projet
- Apporter des améliorations/ajouter de nouvelles fonctionnalités
- Création d'une Pull Request vers la branche dev
Structure du projet
nœuds.py :
Contient le code d'interface pour tous les nœuds Comfy3D (c'est-à-dire les nœuds que vous pouvez réellement voir et utiliser dans ComfyUI), vous pouvez ajouter vos nouveaux nœuds ici
Gen_3D_Modules :
Un dossier qui contient le code de tous les modèles/systèmes génératifs (par exemple modèles de diffusion multi-vues, modèles de reconstruction 3D). De nouveaux modules génératifs 3D devraient être ajoutés ici
MVs_Algorithmes :
Un dossier qui contient le code de tous les algorithmes stéréo multi-vues, c'est-à-dire les algorithmes (par exemple Gaussian Splatting, NeRF et FlexiCubes) qui prennent des images multi-vues et les convertissent en représentation 3D (par exemple Gaussiennes, MLP ou Mesh). De nouveaux algorithmes MVS devraient être ajoutés ici
Internet :
Un dossier qui contient les fichiers et le code (html, js, css) pour tous les éléments liés à l'interface utilisateur du navigateur (par exemple la mise en page HTML, le style et la logique de base pour l'aperçu du maillage 3D et des gaussiens). Une nouvelle interface utilisateur Web devrait être ajoutée ici
serveur web :
Un dossier qui contient le code pour communiquer avec le navigateur, c'est-à-dire traiter les demandes du client Web (par exemple, envoyer un maillage 3D au client lorsque cela est demandé avec certaines routes URL). De nouvelles fonctions liées au serveur Web devraient être ajoutées ici
Configurations :
Un dossier qui contient différents fichiers de configuration pour différents modules, une nouvelle configuration doit être ajoutée ici, utilisez un sous-dossier s'il y a plus d'une configuration pour un seul module (par exemple Unique3D, CRM)
Points de contrôle :
Un dossier qui contient tous les modèles pré-entraînés et certains des fichiers de configuration d'architecture de modèle requis par les diffuseurs. Les nouveaux points de contrôle peuvent être téléchargés automatiquement par le nœud Load_Diffusers Pipeline
, alors ils doivent être ajoutés ici.
install.py :
Le script d'installation principal téléchargera et installera automatiquement les pré-builds en fonction de votre environnement d'exécution. S'il ne trouve pas les pré-builds correspondants, le script de build démarrera automatiquement, appelé par ComfyUI-Manager juste après avoir installé les dépendances répertoriées dans les exigences. .txt utilisant pip
Si les nouveaux modules que vous essayez d'ajouter nécessitent des packages supplémentaires qui ne peuvent pas être simplement ajoutés dans Requirements.txt et build_config.remote_packages, vous pouvez essayer de l'ajouter en modifiant ce script.
_Pré_Builds :
Un dossier qui contient les fichiers et le code pour créer toutes les dépendances requises. Si vous souhaitez pré-construire des dépendances supplémentaires, veuillez consulter _Pre_Builds/README.md pour plus d'informations.
Conseils
- Système de coordonnées du monde et de la caméra OpenGL (Three.js, Blender) :
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)
- Si vous rencontrez des erreurs OpenGL (par exemple,
[F glutil.cpp:338] eglInitialize() failed
), définissez force_cuda_rasterize
sur true sur le nœud correspondant. - Si après l'installation, votre ComfyUI reste bloqué au démarrage ou en cours d'exécution, vous pouvez suivre les instructions dans le lien suivant pour résoudre le problème : Le code se bloque indéfiniment lors de l'évaluation des modèles de neurones sur GPU
Partisans