Pacote ComfyUI-3D
Torne a geração de ativos 3D no ComfyUI boa e conveniente, pois gera imagem/vídeo!
Este é um extenso conjunto de nós que permite que o ComfyUI processe entradas 3D (malha e textura UV, etc.) usando algoritmos de ponta (3DGS, NeRF, etc.) e modelos (InstantMesh, CRM, TripoSR, etc.)
Recursos — Instalação — Roteiro — Desenvolvimento — Dicas — Apoiadores Instalar:
Pode ser instalado diretamente do ComfyUI-Manager?
- Pré-construções estão disponíveis para:
- Windows 10/11, Ubuntu 22.04
- Pitão 3.10/3.11/3.12
- CUDA12.1/11.8
- tocha 2.3.0+cu121/cu118, torchvision 0.18.0+cu121/cu118
- install.py irá baixar e instalar pré-builds automaticamente de acordo com seu ambiente de tempo de execução, se não conseguir encontrar pré-builds correspondentes, então o script de construção será iniciado automaticamente, se a compilação automática não funcionar para você, então verifique Semi -Guia de construção automática
- Se você tiver algum nó ausente em qualquer fluxo de trabalho Comfy3D aberto, tente simplesmente clicar em Instalar nós personalizados ausentes no ComfyUI-Manager
- Se por algum motivo o seu comfy3d não puder baixar modelos pré-treinados automaticamente, você pode baixá-los manualmente e colocá-los na pasta correta no diretório Checkpoints, mas NÃO substitua nenhum arquivo .json existente
- Instalação do Docker, verifique DOCKER_INSTRUCTIONS.md
- Observação: neste momento, você ainda precisará instalar o Visual Studio Build Tools para Windows e instalar
gcc g++
para Linux para que InstantNGP & Convert 3DGS to Mesh with NeRF and Marching_Cubes
funcionem, já que esses dois nós usavam JIT torch cpp extensão que é construída em tempo de execução, mas pretendo substituir esses nós em breve
Características:
Para casos de uso, confira Exemplos de fluxos de trabalho. [ Última atualização: 01/08/2024 ]
- Observação: você precisa colocar arquivos e pastas de entrada de exemplo na pasta ComfyUI Root DirectoryComfyUIinput antes de executar o fluxo de trabalho de exemplo
- Fluxo de trabalho de difusão em camadas tripoSR por @Consumption
StableFast3D : Estabilidade-AI/stable-fast-3d
- Imagem única para malha 3D com textura RGB
- Nota: você precisa concordar com o termo de uso do Stability-AI antes de poder baixar os pesos do modelo, se você baixou os pesos do modelo manualmente, então você precisa colocá-lo em Checkpoints/StableFast3D, caso contrário você pode adicionar seu token huggingface em Configs/ sistema.conf
- Pesos do 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 um personagem com pose arbitrária
- Pode ser combinado com o fluxo de trabalho Unique3D para obter melhores resultados
- Pesos do modelo: https://huggingface.co/zjpshadow/CharacterGen/tree/main
zQ4Kb8kXr7QBxkY5.mp4
Unique3D : AiuniAI/Unique3D
- Pipeline de quatro estágios:
- Imagem única para 4 imagens multivisualização com resolução: 256X256
- Imagens de visualização múltipla consistentes Upscale para 512X512, super resolução para 2048X2048
- Imagens de visualização múltipla para mapas normais com resolução: 512X512, super resolução para 2048X2048
- Imagens de visualização múltipla e mapas normais para malha 3D com textura
- Para usar o fluxo de trabalho Unique3D em todos os estágios, baixe modelos:
- sdv1.5-pruned-emaonly e coloque-o no
Your ComfyUI root directory/ComfyUI/models/checkpoints
- controlenet-tile ajustado e coloque-o em
Your ComfyUI root directory/ComfyUI/models/controlnet
- ip-adapter_sd15 e coloque-o no
Your ComfyUI root directory/ComfyUI/models/ipadapter
- OpenCLIP-ViT-H-14, renomeie-o para OpenCLIP-ViT-H-14.safetensors e coloque-o em
Your ComfyUI root directory/ComfyUI/models/clip_vision
- RealESRGAN_x4plus e coloque-o em
Your ComfyUI root directory/ComfyUI/models/upscale_models
- Pesos do 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
- Imagem única para 6 imagens multivisualização e mapas normais com resolução: 512X512
- Nota: você precisa de pelo menos 16 GB de vram para executar este modelo
- Pesos do modelo: https://huggingface.co/pengHTYX/MacLab-Era3D-512-6view/tree/main
2024-06-0711-56-48-ezgif.com-resize-video.mp4
Modelo de reconstrução InstantMesh : TencentARC/InstantMesh
- Imagens esparsas de visualização múltipla com fundo branco em malha 3D com textura RGB
- Funciona com modelos MVDiffusion arbitrários (provavelmente funciona melhor com Zero123++, mas também funciona com modelo CRM MVDiffusion)
- Pesos do 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
- Imagem única para 6 imagens com resolução: 320X320
Modelo de reconstrução convolucional : thu-ml/CRM
- Pipeline de três estágios:
- Imagem única para 6 imagens de visualização (frontal, traseira, esquerda, direita, superior e inferior)
- Imagem única e 6 imagens de visualização para 6 visualizações iguais CCMs (Mapas de Coordenadas Canônicas)
- 6 visualizar imagens e CCMs em malha 3D
- Observação: para PC com baixo vram, se você não conseguir encaixar todos os três modelos de cada estágio na memória da GPU, poderá dividir esses três estágios em diferentes fluxos de trabalho confortáveis e executá-los separadamente
- Pesos do modelo: https://huggingface.co/sudo-ai/zero123plus-v1.2
2024-03-12.22-05-10.mp4
TripoSR : Pesquisa VAST-AI/TripoSR | ComfyUI-Flowty-TripoSR
- Gere a representação NeRF e use o cubo de marcha para transformá-lo em malha 3D
- Pesos do modelo: https://huggingface.co/stabilityai/TripoSR/tree/main
2024-03-05.22-38-36.mp4
Wonder3D : xxlong0/Wonder3D
- Gere imagens de 6 visualizações e mapas normais com consistência espacial a partir de uma única imagem
- Pesos do modelo: https://huggingface.co/flamehaze1115/wonder3d-v1.0/tree/main
Grande modelo gaussiano multivisualização : 3DTopia/LGM
- Habilite imagem única para Gaussiano 3D em menos de 30 segundos em uma GPU RTX3080, posteriormente você também pode converter Gaussiano 3D para malha
- Pesos do modelo: https://huggingface.co/ashawkey/LGM/tree/main
2024-02-08.23-36-31.mp4
Transformadores Triplanos Gaussianos : VAST-AI-Research/TriplaneGaussian
- Habilite imagem única para Gaussiano 3D em menos de 10 segundos em uma GPU RTX3080, posteriormente você também pode converter Gaussiano 3D para malha
- Pesos do modelo: https://huggingface.co/VAST-AI/TriplaneGaussian/tree/main
2024-02-08.23-57-37.mp4
Visualize 3DGS e malha 3D : visualização 3D dentro do ComfyUI:
- Usando gsplat.js e three.js para visualização de malha 3DGS e 3D, respectivamente
- Base de plano de fundo personalizável na biblioteca JS: mdbasit/Coloris
2024-02-04.19-20-17.mp4
Stack Orbit Camera Poses : gera automaticamente toda a gama de combinações de poses de câmera
Você pode usá-lo para condicionar o StableZero123 (você precisa baixar o ponto de verificação primeiro), com uma gama completa de poses de câmera em uma única passagem
Você pode usá-lo para gerar as poses da câmera orbital e inserir diretamente em outro nó de processo 3D (por exemplo, GaussianSplatting e BakeTextureToMesh)
Exemplo de uso:
Sistema de coordenadas:
- Azimute: Na vista superior, do ângulo 0 gire 360 graus com o passo -90 você obtém (0, -90, -180/180, 90, 0), neste caso a câmera gira no sentido horário, vice-versa.
- Elevação: 0 quando a câmera aponta horizontalmente para frente, apontar para o solo é um ângulo negativo e vice-versa.
FlexiCubes : nv-tlabs/FlexiCubes
- Profundidade e máscara de visualização múltipla (mapas normais opcionais) como entradas
- Exportar para malha 3D
- Guia de uso:
- voxel_grids_resolution : determina a resolução/qualidade da malha
- profundidade_min_distance profundidade_max_distance : distância do objeto à câmera, as partes do objeto na renderização que estão mais próximas (mais) da câmera do que profundidade_min_distance (profundidade_max_distance) serão renderizadas com valor RGB branco puro (preto) 1, 1, 1 (0, 0, 0)
- mask_loss_weight : Controla a silhueta da malha 3D reconstruída
- deep_loss_weight : Controla a forma da malha 3D reconstruída, esta perda também afetará os detalhes de deformação da malha na superfície, portanto os resultados dependem da qualidade do mapa de profundidade
- normal_loss_weight : Opcional. Use para refinar os detalhes da deformação da malha na superfície
- sdf_regularizer_weight : Ajuda a remover flutuadores em áreas da forma que não são supervisionadas pelo objetivo da aplicação, como faces internas ao usar apenas supervisão de imagem
- remove_floaters_weight : Isso pode ser aumentado se você observar artefatos em áreas planas
- cube_stabilizer_weight : Isso não tem um impacto significativo durante a otimização de uma única forma, porém ajuda a estabilizar o treinamento em alguns casos
2024-04-12-16-21-24.mp4
NGP instantâneo : nerfacc
- Imagens Multi-View como entradas
- Exportar para malha 3D usando cubos de marcha
Respingos Gaussianos 3D
- Rasterização Gaussiana Diferencial Melhorada
- Melhor método de densificação baseado em compacidade da Gsgen,
- Suporte para inicialização de gaussianos a partir de determinada malha 3D (opcional)
- Suporta otimização de minilote
- Imagens Multi-View como entradas
- Exportação para formato 3DGS .ply padrão suportado
Renderizador de órbita de respingos gaussianos
- Renderize 3DGS para sequências de imagens ou vídeo, dado um arquivo 3DGS e poses de câmera geradas pelo nó Stack Orbit Camera Poses
Renderizador de órbita de malha
- Renderize malha 3D para sequências de imagens ou vídeo, dado um arquivo de malha e poses de câmera geradas pelo nó Stack Orbit Camera Poses
Fitting_Mesh_With_Multiview_Images
- Asse imagens Multi-View em UVTexture de determinada malha 3D usando Nvdiffrast, suporta:
- Exportar para .obj, .ply, .glb
Salvar e carregar arquivo 3D
- .obj, .ply, .glb para malha 3D
- .ply para 3DGS
Alternar eixo para 3DGS e malha 3D
- Como algoritmos diferentes provavelmente usam sistemas de coordenadas diferentes, a capacidade de remapear o eixo de coordenadas é crucial para passar o resultado gerado entre nós diferentes.
Arquivo de configuração do sistema personalizável
- Endereço IP de clientes personalizados
- Adicione seu token de usuário huggingface
Roteiro:
Desenvolvimento
Como contribuir
- Bifurque o projeto
- Faça melhorias/adicione novos recursos
- Criando uma solicitação pull para branch dev
Estrutura do Projeto
nós.py :
Contém o código da interface para todos os nós do Comfy3D (ou seja, os nós que você pode realmente ver e usar dentro do ComfyUI), você pode adicionar seus novos nós aqui
Gen_3D_Modules :
Uma pasta que contém o código para todos os modelos/sistemas generativos (por exemplo, modelos de difusão multivisualização, modelos de reconstrução 3D). Novos módulos geradores 3D devem ser adicionados aqui
MVs_Algoritmos :
Uma pasta que contém o código para todos os algoritmos estéreo de visualização múltipla, ou seja, algoritmos (por exemplo, Gaussian Splatting, NeRF e FlexiCubes) que pegam imagens de visualização múltipla e as convertem em representação 3D (por exemplo, Gaussianos, MLP ou Mesh). Novos algoritmos MVS devem ser adicionados aqui
rede :
Uma pasta que contém os arquivos e o código (html, js, css) para todos os itens relacionados à UI do navegador (por exemplo, o layout html, o estilo e a lógica central para visualização de malha 3D e gaussianas). Nova UI da web deve ser adicionada aqui
servidor web :
Uma pasta que contém o código para comunicação com o navegador, ou seja, lidar com solicitações do cliente web (por exemplo, enviar malha 3D para o cliente quando solicitado com determinadas rotas de url). Novas funções relacionadas ao servidor web devem ser adicionadas aqui
Configurações :
Uma pasta que contém arquivos de configuração diferentes para módulos diferentes, novas configurações devem ser adicionadas aqui, use uma subpasta se houver mais de uma configuração para um único módulo (por exemplo, Unique3D, CRM)
Pontos de verificação :
Uma pasta que contém todo o modelo pré-treinado e alguns dos arquivos de configuração da arquitetura do modelo exigidos pelos difusores. Novos pontos de verificação se puderem ser baixados automaticamente pelo nó Load_Diffusers Pipeline
, então devem ser adicionados aqui
instalar.py :
O script de instalação principal baixará e instalará os pré-builds automaticamente de acordo com seu ambiente de tempo de execução. Se não for possível encontrar os pré-builds correspondentes, o script de construção será iniciado automaticamente, chamado pelo ComfyUI-Manager logo após instalar as dependências listadas nos requisitos .txt usando pip
Se os novos módulos que você está tentando adicionar precisarem de alguns pacotes adicionais que não podem ser simplesmente adicionados em requirements.txt e build_config.remote_packages, então você pode tentar adicioná-los modificando este script
_Pré_Construções :
Uma pasta que contém os arquivos e o código para construir todas as dependências necessárias. Se você deseja pré-construir algumas dependências adicionais, verifique _Pre_Builds/README.md para obter mais informações
Pontas
- Sistema de coordenadas mundiais e de câmera 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)
- Se você encontrar erros OpenGL (por exemplo,
[F glutil.cpp:338] eglInitialize() failed
), defina force_cuda_rasterize
como true no nó correspondente - Se após a instalação seu ComfyUI travar na inicialização ou execução, você pode seguir as instruções no link a seguir para resolver o problema: O código trava indefinidamente ao avaliar modelos de neurônios na GPU
Apoiadores