Paquete ComfyUI-3D
¡Haga que la generación de recursos 3D en ComfyUI sea buena y conveniente ya que genera imágenes/vídeos!
Este es un extenso conjunto de nodos que permite a ComfyUI procesar entradas 3D (malla y textura UV, etc.) utilizando algoritmos de vanguardia (3DGS, NeRF, etc.) y modelos (InstantMesh, CRM, TripoSR, etc.)
Funciones — Instalación — Hoja de ruta — Desarrollo — Consejos — Partidarios Instalar:
¿Se puede instalar directamente desde ComfyUI-Manager?
- Las preconstrucciones están disponibles para:
- Windows 10/11, Ubuntu 22.04
- Pitón 3.10/3.11/3.12
- CUDA 12.1/11.8
- antorcha 2.3.0+cu121/cu118, antorchavisión 0.18.0+cu121/cu118
- install.py descargará e instalará las precompilaciones automáticamente de acuerdo con su entorno de ejecución. Si no puede encontrar las precompilaciones correspondientes, el script de compilación se iniciará automáticamente; si la compilación automática no funciona para usted, consulte Semi. -Guía de construcción automática
- Si le falta algún nodo en cualquier flujo de trabajo abierto de Comfy3D, intente simplemente hacer clic en Instalar nodos personalizados faltantes en ComfyUI-Manager
- Si por alguna razón su comfort3d no puede descargar modelos previamente entrenados automáticamente, siempre puede descargarlos manualmente y colocarlos en la carpeta correcta en el directorio Checkpoints, pero NO sobrescriba ningún archivo .json existente.
- Instalación de Docker, verifique DOCKER_INSTRUCTIONS.md
- Nota: en este momento, aún necesitarás instalar Visual Studio Build Tools para Windows e instalar
gcc g++
para Linux para que funcionen los nodos InstantNGP & Convert 3DGS to Mesh with NeRF and Marching_Cubes
, ya que esos dos nodos usaban JIT torch cpp extensión que se construye en tiempo de ejecución, pero planeo reemplazar esos nodos pronto
Características:
Para conocer casos de uso, consulte Flujos de trabajo de ejemplo. [ Última actualización: 01/agosto/2024 ]
- Nota: debe colocar los archivos y carpetas de entrada de ejemplo en la carpeta ComfyUI Root DirectoryComfyUIinput antes de poder ejecutar el flujo de trabajo de ejemplo.
- Flujo de trabajo de difusión en capas tripoSR por @Consumption
StableFast3D : Estabilidad-AI/estable-rápido-3d
- Imagen única a malla 3D con textura RGB
- Nota: debe aceptar los términos de uso de Stability-AI antes de poder descargar los pesos del modelo; si descargó los pesos del modelo manualmente, debe colocarlos en Checkpoints/StableFast3D; de lo contrario, puede agregar su token de huggingface en Configs/ sistema.conf
- Pesos del modelo: https://huggingface.co/stabilityai/stable-fast-3d/tree/main
2024-08-01.19-21-58.mp4
CharacterGen : zjp-shadow/CharacterGen
- Vista frontal única de un personaje con pose arbitraria.
- Se puede combinar con el flujo de trabajo Unique3D para obtener mejores resultados
- Pesos del modelo: https://huggingface.co/zjpshadow/CharacterGen/tree/main
zQ4Kb8kXr7QBxkY5.mp4
Único3D : AiuniAI/Único3D
- Tubería de cuatro etapas:
- Imagen única a 4 imágenes multivista con resolución: 256X256
- Imágenes consistentes de múltiples vistas Escalada a 512X512, súper resolución a 2048X2048
- Imágenes de vista múltiple a mapas normales con resolución: 512X512, súper resolución a 2048X2048
- Imágenes multivista y mapas normales en malla 3D con textura
- Para utilizar el flujo de trabajo Unique3D de todas las etapas, descargue los modelos:
- sdv1.5-pruned-emaonly y colóquelo en
Your ComfyUI root directory/ComfyUI/models/checkpoints
- ajuste el mosaico de controlnet y colóquelo en
Your ComfyUI root directory/ComfyUI/models/controlnet
- ip-adapter_sd15 y colóquelo en
Your ComfyUI root directory/ComfyUI/models/ipadapter
- OpenCLIP-ViT-H-14, cámbiele el nombre a OpenCLIP-ViT-H-14.safetensors y colóquelo en
Your ComfyUI root directory/ComfyUI/models/clip_vision
- RealESRGAN_x4plus y colóquelo en
Your ComfyUI root directory/ComfyUI/models/upscale_models
- Pesos del modelo: https://huggingface.co/spaces/Wuvin/Unique3D/tree/main/ckpt
2024-06-0711-51-27-ezgif.com-resize-video.mp4
Modelo Era3D MVDiffusion : pengHTYX/Era3D
- Imagen única a 6 imágenes de vista múltiple y mapas normales con resolución: 512X512
- Nota: necesitas al menos 16 GB de vram para ejecutar este modelo
- Pesos del modelo: https://huggingface.co/pengHTYX/MacLab-Era3D-512-6view/tree/main
2024-06-0711-56-48-ezgif.com-resize-video.mp4
Modelo de reconstrucción InstantMesh : TencentARC/InstantMesh
- Imágenes dispersas de vistas múltiples con fondo blanco en malla 3D con textura RGB
- Funciona con modelos MVDiffusion arbitrarios (probablemente funcione mejor con Zero123++, pero también funciona con el modelo CRM MVDiffusion)
- Pesos del modelo: 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
- Imagen única para ver 6 imágenes con resolución: 320X320
Modelo de reconstrucción convolucional : thu-ml/CRM
- Tubería de tres etapas:
- Imagen única para ver 6 imágenes (Frontal, Atrás, Izquierda, Derecha, Arriba y Abajo)
- Imagen única y 6 imágenes de vista en 6 vistas iguales CCM (mapas de coordenadas canónicas)
- 6 ver imágenes y CCM en malla 3D
- Nota: Para PC con baja VRAM, si no puede colocar los tres modelos para cada etapa en la memoria de su GPU, puede dividir esas tres etapas en diferentes flujos de trabajo cómodos y ejecutarlos por separado.
- Pesos del modelo: https://huggingface.co/sudo-ai/zero123plus-v1.2
2024-03-12.22-05-10.mp4
TripoSR : VAST-AI-Research/TripoSR | ComfyUI-Flowty-TripoSR
- Genere una representación NeRF y use el cubo de marcha para convertirlo en una malla 3D
- Pesos del modelo: https://huggingface.co/stabilityai/TripoSR/tree/main
2024-03-05.22-38-36.mp4
Maravilla3D : xxlong0/Wonder3D
- Genere imágenes de 6 vistas espacialmente consistentes y mapas normales a partir de una sola imagen
- Pesos del modelo: https://huggingface.co/flamehaze1115/wonder3d-v1.0/tree/main
Modelo gaussiano multivista grande : 3DTopia/LGM
- Habilite una sola imagen a 3D gaussiano en menos de 30 segundos en una GPU RTX3080; más adelante también podrá convertir 3D gaussiano a malla
- Pesos del modelo: https://huggingface.co/ashawkey/LGM/tree/main
2024-02-08.23-36-31.mp4
Transformadores gaussianos triplano : VAST-AI-Research/TriplaneGaussian
- Habilite una sola imagen a 3D gaussiano en menos de 10 segundos en una GPU RTX3080; luego también podrá convertir 3D gaussiano a malla
- Pesos del modelo: https://huggingface.co/VAST-AI/TriplaneGaussian/tree/main
2024-02-08.23-57-37.mp4
Vista previa de 3DGS y 3D Mesh : visualización 3D dentro de ComfyUI:
- Usando gsplat.js y three.js para visualización 3DGS y 3D Mesh respectivamente
- Base de fondo personalizable en la biblioteca JS: mdbassit/Coloris
2024-02-04.19-20-17.mp4
Stack Orbit Camera Poses : genere automáticamente todo el rango de combinaciones de poses de cámara
Puede usarlo para acondicionar el StableZero123 (primero debe descargar el punto de control), con una gama completa de poses de cámara en una sola pasada.
Puede usarlo para generar las poses de la cámara orbital e ingresarlas directamente a otros nodos de proceso 3D (por ejemplo, GaussianSplatting y BakeTextureToMesh).
Uso de ejemplo:
Sistema de coordenadas:
- Azimut: en la vista superior, desde el ángulo 0 gira 360 grados con un paso -90 y obtienes (0, -90, -180/180, 90, 0), en este caso la cámara gira en el sentido de las agujas del reloj, y viceversa.
- Elevación: 0 cuando la cámara apunta horizontalmente hacia adelante, apuntar hacia el suelo es un ángulo negativo, y viceversa.
FlexiCubes : nv-tlabs/FlexiCubes
- Profundidad y máscara de vista múltiple (mapas normales opcionales) como entradas
- Exportar a malla 3D
- Guía de uso:
- voxel_grids_solving : determina la resolución/calidad de la malla
- Depth_min_distance Depth_max_distance : distancia del objeto a la cámara, las partes del objeto en el renderizado que están más cerca (más) de la cámara que Depth_min_distance (profundidad_max_distance) se representarán con un valor RGB blanco puro (negro) 1, 1, 1 (0, 0, 0).
- mask_loss_weight : controla la silueta de la malla 3D reconstruida
- Depth_loss_weight : controla la forma de la malla 3D reconstruida. Esta pérdida también afectará el detalle de la deformación de la malla en la superficie, por lo que los resultados dependen de la calidad del mapa de profundidad.
- normal_loss_weight : Opcional. Utilícelo para refinar el detalle de deformación de la malla en la superficie.
- sdf_regularizer_weight : ayuda a eliminar flotadores en áreas de la forma que no están supervisadas por el objetivo de la aplicación, como las caras internas cuando se utiliza solo la supervisión de imágenes.
- remove_floaters_weight : Esto puede aumentar si observa artefactos en áreas planas
- cube_stabilizer_weight : Esto no tiene un impacto significativo durante la optimización de una sola forma, sin embargo, ayuda a estabilizar el entrenamiento en algunos casos.
2024-04-12-16-21-24.mp4
NGP instantáneo : nerfacc
- Imágenes de vista múltiple como entradas
- Exportar a malla 3D usando cubos de marcha
Salpicadura gaussiana 3D
- Rasterización gaussiana diferencial mejorada
- Mejor método de densificación basado en la compacidad de Gsgen,
- Soporte para inicializar gaussianos a partir de una malla 3D determinada (opcional)
- Admite optimización de mini lotes
- Imágenes de vista múltiple como entradas
- Exportación al formato estándar 3DGS .ply compatible
Representador de órbita de salpicaduras gaussianas
- Renderice 3DGS en secuencias de imágenes o videos, dado un archivo 3DGS y poses de cámara generadas por el nodo Stack Orbit Camera Poses
Representador de órbita de malla
- Renderice malla 3D en secuencias de imágenes o video, dado un archivo de malla y poses de cámara generadas por el nodo Stack Orbit Camera Poses
Ajuste_de_malla_con_imágenes_multivista
- Hornee imágenes de vista múltiple en UVTexture de una malla 3D determinada usando Nvdiffrast, admite:
- Exportar a .obj, .ply, .glb
Guardar y cargar archivo 3D
- .obj, .ply, .glb para malla 3D
- .ply para 3DGS
Cambiar eje para 3DGS y 3D Mesh
- Dado que es probable que diferentes algoritmos utilicen diferentes sistemas de coordenadas, la capacidad de reasignar el eje de coordenadas es crucial para pasar el resultado generado entre diferentes nodos.
Archivo de configuración del sistema personalizable
- Dirección IP de clientes personalizados
- Añade tu token de usuario de Huggingface
Hoja de ruta:
Desarrollo
Cómo contribuir
- bifurcar el proyecto
- Realizar mejoras/Agregar nuevas funciones
- Creando una solicitud de extracción para la rama de desarrollo
Estructura del proyecto
nodos.py :
Contiene el código de interfaz para todos los nodos de Comfy3D (es decir, los nodos que realmente puedes ver y usar dentro de ComfyUI), puedes agregar tus nuevos nodos aquí
Gen_3D_Modules :
Una carpeta que contiene el código para todos los modelos/sistemas generativos (por ejemplo, modelos de difusión de múltiples vistas, modelos de reconstrucción 3D). Aquí se deben agregar nuevos módulos generativos 3D
MV_Algoritmos :
Una carpeta que contiene el código para todos los algoritmos estéreo de múltiples vistas, es decir, algoritmos (por ejemplo, Gaussian Splatting, NeRF y FlexiCubes) que toman imágenes de múltiples vistas y las convierten a representación 3D (por ejemplo, Gaussianos, MLP o Mesh). Aquí se deben agregar nuevos algoritmos MVS
web :
Una carpeta que contiene los archivos y el código (html, js, css) para todos los elementos relacionados con la interfaz de usuario del navegador (por ejemplo, el diseño html, el estilo y la lógica central para la vista previa de malla 3D y gaussianos). Se debe agregar una nueva interfaz de usuario web aquí
servidor web :
Una carpeta que contiene el código para comunicarse con el navegador, es decir, gestionar las solicitudes del cliente web (por ejemplo, enviar malla 3D al cliente cuando se solicita con ciertas rutas URL). Aquí se deben agregar nuevas funciones relacionadas con el servidor web.
Configuraciones :
Una carpeta que contiene diferentes archivos de configuración para diferentes módulos, se debe agregar una nueva configuración aquí, use una subcarpeta si hay más de una configuración para un solo módulo (por ejemplo, Unique3D, CRM)
Puntos de control :
Una carpeta que contiene todo el modelo previamente entrenado y algunos de los archivos de configuración de la arquitectura del modelo requeridos por los difusores. Los nuevos puntos de control, si pueden descargarse automáticamente mediante el nodo Load_Diffusers Pipeline
, deben agregarse aquí.
instalar.py :
El script de instalación principal descargará e instalará las precompilaciones automáticamente de acuerdo con su entorno de ejecución. Si no puede encontrar las precompilaciones correspondientes, el script de compilación se iniciará automáticamente y lo llamará ComfyUI-Manager justo después de instalar las dependencias enumeradas en los requisitos. .txt usando pip
Si los nuevos módulos que está intentando agregar necesitan algunos paquetes adicionales que no se pueden agregar simplemente en requisitos.txt y build_config.remote_packages, entonces puede intentar agregarlos modificando este script.
_Pre_construcciones :
Una carpeta que contiene los archivos y el código para crear todas las dependencias necesarias. Si desea crear previamente algunas dependencias adicionales, consulte _Pre_Builds/README.md para obtener más información.
Consejos
- Sistema de coordenadas de cámara y mundo 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 encuentra errores de OpenGL (por ejemplo,
[F glutil.cpp:338] eglInitialize() failed
), configure force_cuda_rasterize
en verdadero en el nodo correspondiente - Si después de la instalación, su ComfyUI se atasca al iniciarse o ejecutarse, puede seguir las instrucciones en el siguiente enlace para resolver el problema: El código se bloquea indefinidamente al evaluar modelos de neuronas en GPU
Partidarios