Make 3D assets generation in ComfyUI good and convenient as it generates image/video!
This is an extensive node suite that enables ComfyUI to process 3D inputs (Mesh & UV Texture, etc.) using cutting edge algorithms (3DGS, NeRF, etc.) and models (InstantMesh, CRM, TripoSR, etc.)
Features — Install — Roadmap — Development — Tips — Supporters
Can be installed directly from ComfyUI-Manager🚀
gcc g++
for Linux in order for InstantNGP & Convert 3DGS to Mesh with NeRF and Marching_Cubes
nodes to work, since those two nodes used JIT torch cpp extension that builds in runtime, but I plan to replace those nodes soonFor use cases please check out Example Workflows. [Last update: 08/November/2024]
Hunyuan3D_V1 tencent/Hunyuan3D-1
StableFast3D: Stability-AI/stable-fast-3d
CharacterGen: zjp-shadow/CharacterGen
Unique3D: AiuniAI/Unique3D
Your ComfyUI root directory/ComfyUI/models/checkpoints
Your ComfyUI root directory/ComfyUI/models/controlnet
Your ComfyUI root directory/ComfyUI/models/ipadapter
Your ComfyUI root directory/ComfyUI/models/clip_vision
Your ComfyUI root directory/ComfyUI/models/upscale_models
Era3D MVDiffusion Model: pengHTYX/Era3D
InstantMesh Reconstruction Model: TencentARC/InstantMesh
Zero123++: SUDO-AI-3D/zero123plus
Convolutional Reconstruction Model: thu-ml/CRM
TripoSR: VAST-AI-Research/TripoSR | ComfyUI-Flowty-TripoSR
Wonder3D: xxlong0/Wonder3D
Large Multiview Gaussian Model: 3DTopia/LGM
Triplane Gaussian Transformers: VAST-AI-Research/TriplaneGaussian
Preview 3DGS and 3D Mesh: 3D Visualization inside ComfyUI:
Stack Orbit Camera Poses: Automatically generate all range of camera pose combinations
FlexiCubes: nv-tlabs/FlexiCubes
Instant NGP: nerfacc
3D Gaussian Splatting
Gaussian Splatting Orbit Renderer
Mesh Orbit Renderer
Fitting_Mesh_With_Multiview_Images
Save & Load 3D file
Switch Axis for 3DGS & 3D Mesh
Customizable system config file
[X] Integrate CharacterGen
[ ] Improve 3DGS/Nerf to Mesh conversion algorithms:
[ ] Add & Improve a few best MVS algorithms (e.g 2DGS, etc.)
[ ] Add camera pose estimation from raw multi-views images
nodes.py:
Contains the interface code for all Comfy3D nodes (i.e. the nodes you can actually seen & use inside ComfyUI), you can add your new nodes here
Gen_3D_Modules:
A folder that contains the code for all generative models/systems (e.g. multi-view diffusion models, 3D reconstruction models). New 3D generative modules should be added here
MVs_Algorithms:
A folder that contains the code for all multi-view stereo algorithms, i.e. algorighms (e.g. Gaussian Splatting, NeRF and FlexiCubes) that takes multi-view images and convert it to 3D representation (e.g. Gaussians, MLP or Mesh). New MVS algorithms should be added here
web:
A folder that contains the files & code (html, js, css) for all browser UI related things (e.g. the html layout, style and the core logics for preview 3D Mesh & Gaussians). New web UI should be added here
webserver:
A folder that contains the code for communicate with browser, i.e. deal with web client requests (e.g. Sending 3D Mesh to client when requested with certain url routes). New web server related functions should be added here
Configs:
A folder that contains different config files for different modules, new config should be added here, use a sub folder if there are more than one config to a single module (e.g. Unique3D, CRM)
Checkpoints:
A folder that contains all the pre-trained model and some of the model architecture config files required by diffusers, New checkpoints if could be downloaded automatically by Load_Diffusers Pipeline
node, then it should be added here
install.py:
Main install script, will download & install Pre-builds automatically according to your runtime environment, if it couldn't find corresponding Pre-builds, then build script will start automatically, called by ComfyUI-Manager right after it installed the dependencies listed in requirements.txt using pip
If the new modules your are trying to add needs some additional packages that cannot be simplly added into requirements.txt and build_config.remote_packages, then you can try to add it by modify this script
_Pre_Builds:
A folder that contains the files & code for build all required dependencies, if you want to pre-build some additional dependencies, then please check _Pre_Builds/README.md for more informations
OpenGL (Three.js, Blender) world & camera coordinate system:
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)
[F glutil.cpp:338] eglInitialize() failed
), then set force_cuda_rasterize
to true on corresponding node