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.) NOTE: Pre-built python wheels can manually download from a/https://github.com/MrForExample/Comfy3D_Pre_Builds if automatic install failed
Make 3D assets generation in ComfyUI good and convenient as it generates image/video! <br> 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.)
<span style="font-size:1.5em;"> <a href=#Features>Features</a> — <a href=#install>Install</a> — <a href=#roadmap>Roadmap</a> — <a href=#development>Development</a> — <a href=#tips>Tips</a> — <a href=#supporters>Supporters</a> </span>Can be installed directly from ComfyUI-Manager🚀
Alternatively you can download Comfy3D-WinPortable made by YanWenKun
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 nodesFor manual install
# Fetch newest version of Comfy3D
cd Your ComfyUI Root Directory\ComfyUI\custom_nodes\
git clone https://github.com/MrForExample/ComfyUI-3D-Pack.git
cd ComfyUI-3D-Pack
# Install all dependencies
Your ComfyUI Root Directory\python_embeded\python.exe -s -m pip install -r requirements.txt
Your ComfyUI Root Directory\python_embeded\python.exe install.py
For use cases please check out Example Workflows. [Last update: 16/December/2024]
TRELLIS: microsoft/TRELLIS
<video controls autoplay loop src="https://github.com/user-attachments/assets/f569c561-23ea-471f-a9d3-f2e6d1803e00"></video>
Hunyuan3D_V1 tencent/Hunyuan3D-1
<video controls autoplay loop src="https://github.com/user-attachments/assets/2cc31b81-2107-40fe-a531-a783a3f699fc"></video>
StableFast3D: Stability-AI/stable-fast-3d
<video controls autoplay loop src="https://github.com/user-attachments/assets/3ed3d1ed-4abe-4959-bd79-4431d19c9d47"></video>
CharacterGen: zjp-shadow/CharacterGen
<video controls autoplay loop src="https://github.com/user-attachments/assets/4f0ae0c0-2d29-49f0-a6f2-a636dd4b4dcc"></video>
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
<video controls autoplay loop src="https://github.com/MrForExample/ComfyUI-3D-Pack/assets/62230687/45dd6bfc-4f2b-4b1f-baed-13a1b0722896"></video>
Era3D MVDiffusion Model: pengHTYX/Era3D
<video controls autoplay loop src="https://github.com/MrForExample/ComfyUI-3D-Pack/assets/62230687/fc210cac-6c7d-4a55-926c-adb5fb7b0c57"></video>
InstantMesh Reconstruction Model: TencentARC/InstantMesh
<video controls autoplay loop src="https://github.com/MrForExample/ComfyUI-3D-Pack/assets/62230687/a0648a44-f8cb-4f78-9704-a907f9174936"></video> <video controls autoplay loop src="https://github.com/MrForExample/ComfyUI-3D-Pack/assets/62230687/33aecedb-f595-4c12-90dd-89d5f718598e"></video>
Zero123++: SUDO-AI-3D/zero123plus
Convolutional Reconstruction Model: thu-ml/CRM
<video controls autoplay loop src="https://github.com/MrForExample/ComfyUI-3D-Pack/assets/62230687/cf68bb83-9244-44df-9db8-f80eb3fdc29e"></video>
TripoSR: VAST-AI-Research/TripoSR | ComfyUI-Flowty-TripoSR
<video controls autoplay loop src="https://github.com/MrForExample/ComfyUI-3D-Pack/assets/62230687/ec4f8df5-5907-4bbf-ba19-c0565fe95a97"></video>
Wonder3D: xxlong0/Wonder3D
Large Multiview Gaussian Model: 3DTopia/LGM
<video controls autoplay loop src="https://github.com/MrForExample/ComfyUI-3D-Pack/assets/62230687/e221d7f8-49ac-4ed4-809b-d4c790b6270e"></video>
Triplane Gaussian Transformers: VAST-AI-Research/TriplaneGaussian
<video controls autoplay loop src="https://github.com/MrForExample/ComfyUI-3D-Pack/assets/62230687/90e7f298-bdbd-4c15-9378-1ca46cbb4871"></video>
Preview 3DGS and 3D Mesh: 3D Visualization inside ComfyUI:
<video controls autoplay loop src="https://github.com/MrForExample/ComfyUI-3D-Pack/assets/62230687/9f3c56b1-afb3-4bf1-8845-ab1025a87463"></video>
Stack Orbit Camera Poses: Automatically generate all range of camera pose combinations
You can use it to conditioning the StableZero123 (You need to Download the checkpoint first), with full range of camera poses in one prompt pass
You can use it to generate the orbit camera poses and directly input to other 3D process node (e.g. GaussianSplatting and BakeTextureToMesh)
Example usage:
<img src="_Example_Workflows/_Example_Outputs/Cammy_Cam_Rotate_Clockwise_Camposes.png" width="256"/> <img src="_Example_Workflows/_Example_Outputs/Cammy_Cam_Rotate_Counter_Clockwise_Camposes.png" width="256"/> <br> <img src="_Example_Workflows/_Example_Outputs/Cammy_Cam_Rotate_Clockwise.gif" width="256"/> <img src="_Example_Workflows/_Example_Outputs/Cammy_Cam_Rotate_Counter_Clockwise.gif" width="256"/>
Coordinate system:
FlexiCubes: nv-tlabs/FlexiCubes
<video controls autoplay loop src="https://github.com/MrForExample/ComfyUI-3D-Pack/assets/62230687/166bbc1f-04b7-42c8-87bb-302e3f5aabb2"></video>
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: <br>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: <br>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: <br>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: <br>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: <br>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: <br>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:
<br>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: <br>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 <br>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: <br>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
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