ComfyUI-3D包
使ComfyUI生成3D资产变得像生成图像/视频一样好用和方便!
这是一个广泛的节点套件,使ComfyUI能够使用尖端算法(3DGS、NeRF等)和模型(InstantMesh、CRM、TripoSR等)处理3D输入(网格和UV纹理等)。
安装:
可以直接从ComfyUI-Manager安装🚀
- 预构建版本可用于:
- Windows 10/11,Ubuntu 22.04
- Python 3.10/3.11/3.12
- CUDA 12.1/11.8
- torch 2.3.0+cu121/cu118,torchvision 0.18.0+cu121/cu118
- install.py将根据您的运行环境自动下载并安装预构建版本,如果找不到相应的预构建版本,则构建脚本将自动启动,如果自动构建对您不起作用,请查看半自动构建指南
- 如果在任何开放的Comfy3D工作流程中缺少任何节点,只需在ComfyUI-Manager中点击安装缺失的自定义节点
- 如果由于某些原因您的comfy3d无法自动下载预训练模型,您始终可以手动下载它们并将其放入Checkpoints目录下的正确文件夹中,但请不要覆盖任何现有的.json文件
- Docker安装请查看DOCKER_INSTRUCTIONS.md
- **注意:**目前,您仍需要安装Visual Studio Build Tools for Windows和为Linux安装
gcc g++
,以使InstantNGP & Convert 3DGS to Mesh with NeRF and Marching_Cubes
节点工作,因为这两个节点使用了在运行时构建的JIT torch cpp扩展,但我计划很快替换这些节点
功能:
-
使用案例请查看示例工作流程。[最后更新:2024年8月1日]
- **注意:**在运行示例工作流程之前,您需要将示例输入文件和文件夹放在ComfyUI根目录\ComfyUI\input文件夹下
- tripoSR分层扩散工作流程由@Consumption提供
-
StableFast3D:Stability-AI/stable-fast-3d
- 单张图像到带RGB纹理的3D网格
- 注意:在能够下载模型权重之前,您需要同意Stability-AI的使用条款,如果您手动下载了模型权重,则需要将其放在Checkpoints/StableFast3D下,否则您可以在Configs/system.conf中添加您的huggingface令牌
- 模型权重:https://huggingface.co/stabilityai/stable-fast-3d/tree/main
-
CharacterGen:zjp-shadow/CharacterGen
- 任意姿势的角色单个正面视图
- 可以与Unique3D工作流程结合以获得更好的结果
- 模型权重:https://huggingface.co/zjpshadow/CharacterGen/tree/main
-
Unique3D:AiuniAI/Unique3D
- 四个阶段的流程:
- 单张图像到4个多视图图像,分辨率:256X256
- 一致的多视图图像上采样到512X512,超分辨率到2048X2048
- 多视图图像到法线贴图,分辨率:512X512,超分辨率到2048X2048
- 多视图图像和法线贴图到带纹理的3D网格
- 要使用所有阶段Unique3D工作流程,下载模型:
- sdv1.5-pruned-emaonly并将其放入
您的ComfyUI根目录/ComfyUI/models/checkpoints
- fine-tuned controlnet-tile并将其放入
您的ComfyUI根目录/ComfyUI/models/controlnet
- ip-adapter_sd15并将其放入
您的ComfyUI根目录/ComfyUI/models/ipadapter
- OpenCLIP-ViT-H-14,将其重命名为OpenCLIP-ViT-H-14.safetensors并放入
您的ComfyUI根目录/ComfyUI/models/clip_vision
- RealESRGAN_x4plus并将其放入
您的ComfyUI根目录/ComfyUI/models/upscale_models
- sdv1.5-pruned-emaonly并将其放入
- 模型权重:https://huggingface.co/spaces/Wuvin/Unique3D/tree/main/ckpt
- 四个阶段的流程:
-
Era3D MVDiffusion模型:pengHTYX/Era3D
- 单张图像到6个多视图图像和法线贴图,分辨率:512X512
- 注意:您至少需要16GB显存才能运行此模型
- 模型权重:https://huggingface.co/pengHTYX/MacLab-Era3D-512-6view/tree/main
-
InstantMesh重建模型:TencentARC/InstantMesh
- 白色背景的稀疏多视图图像到带RGB纹理的3D网格
- 适用于任意MVDiffusion模型(可能与Zero123++效果最佳,但也适用于CRM MVDiffusion模型)
- 模型权重:https://huggingface.co/TencentARC/InstantMesh/tree/main
-
Zero123++:SUDO-AI-3D/zero123plus
- 单张图像到6个视图图像,分辨率:320X320
-
卷积重建模型: thu-ml/CRM
- 三阶段流程:
- 单张图像转换为6个视角图像(前、后、左、右、上、下)
- 单张图像和6个视角图像转换为6个相同视角的CCM(规范坐标图)
- 6个视角图像和CCM生成3D网格
- 注意: 对于低显存电脑,如果无法将三个阶段的所有模型都装入GPU内存,可以将这三个阶段分成不同的ComfyUI工作流程,分别运行
- 模型权重: https://huggingface.co/sudo-ai/zero123plus-v1.2
- 三阶段流程:
-
TripoSR: VAST-AI-Research/TripoSR | ComfyUI-Flowty-TripoSR
- 生成NeRF表示,并使用行进立方体算法将其转换为3D网格
- 模型权重: https://huggingface.co/stabilityai/TripoSR/tree/main
-
Wonder3D: xxlong0/Wonder3D
- 从单张图像生成空间一致的6个视角图像和法线贴图
- 模型权重: https://huggingface.co/flamehaze1115/wonder3d-v1.0/tree/main
-
大规模多视角高斯模型: 3DTopia/LGM
- 在RTX3080 GPU上不到30秒内从单张图像生成3D高斯,之后还可以将3D高斯转换为网格
- 模型权重: https://huggingface.co/ashawkey/LGM/tree/main
-
三平面高斯变换器: VAST-AI-Research/TriplaneGaussian
- 在RTX3080 GPU上不到10秒内从单张图像生成3D高斯,之后还可以将3D高斯转换为网格
- 模型权重: https://huggingface.co/VAST-AI/TriplaneGaussian/tree/main
-
预览3DGS和3D网格: ComfyUI内的3D可视化:
- 分别使用gsplat.js和three.js进行3DGS和3D网格可视化
- 基于JS库的可自定义背景: mdbassit/Coloris
-
堆叠轨道相机姿态: 自动生成全范围的相机姿态组合
-
可用于调节StableZero123 (需要先下载检查点),在一次提示中覆盖全范围的相机姿态
-
可用于生成轨道相机姿态,并直接输入到其他3D处理节点(如高斯溅射和网格纹理烘焙)
-
使用示例:
-
坐标系统:
- 方位角: 俯视图中,从0度角开始旋转360度,步长为-90度,得到(0, -90, -180/180, 90, 0),此时相机顺时针旋转,反之亦然。
- 仰角: 当相机水平向前指时为0度,指向地面为负角度,反之亦然。
-
-
FlexiCubes: nv-tlabs/FlexiCubes
- 多视角深度图和蒙版(可选法线贴图)作为输入
- 导出为3D网格
- 使用指南:
- voxel_grids_resolution: 决定网格分辨率/质量
- depth_min_distance depth_max_distance: 物体到相机的距离,渲染中比depth_min_distance更近(更远)的物体部分将被渲染为纯白(黑)RGB值1, 1, 1(0, 0, 0)
- mask_loss_weight: 控制重建3D网格的轮廓
- depth_loss_weight: 控制重建3D网格的形状,这个损失还会影响网格表面的变形细节,因此结果取决于深度图的质量
- normal_loss_weight: 可选。用于细化网格表面的变形细节
- sdf_regularizer_weight: 有助于去除应用目标未监督区域中的浮点,例如仅使用图像监督时的内部面
- remove_floaters_weight: 如果在平坦区域观察到伪影,可以增加这个值
- cube_stabilizer_weight: 这在单个形状的优化过程中没有显著影响,但在某些情况下有助于稳定训练
-
Instant NGP: nerfacc
- 多视角图像作为输入
- 使用行进立方体算法导出为3D网格
-
3D高斯溅射
- 改进的微分高斯光栅化
- 来自Gsgen的更好的基于紧凑性的密化方法
- 支持从给定3D网格初始化高斯分布(可选)
- 支持小批量优化
- 多视角图像作为输入
- 支持导出标准3DGS .ply格式
-
高斯溅射轨道渲染器
- 给定3DGS文件和由堆叠轨道相机姿态节点生成的相机姿态,将3DGS渲染为图像序列或视频
-
网格轨道渲染器
- 给定网格文件和由堆叠轨道相机姿态节点生成的相机姿态,将3D网格渲染为图像序列或视频
-
多视角图像网格拟合
- 使用Nvdiffrast将多视角图像烘焙到给定3D网格的UV纹理中,支持:
- 导出为.obj, .ply, .glb格式
-
保存和加载3D文件
- .obj, .ply, .glb格式用于3D网格
- .ply格式用于3DGS
-
3DGS和3D网格的轴切换
- 由于不同算法可能使用不同的坐标系统,因此重新映射坐标轴的能力对于在不同节点之间传递生成结果至关重要。
-
- 自定义客户端IP地址
- 添加你的Hugging Face用户令牌
路线图:
-
改进3DGS/Nerf到网格的转换算法:
- 寻找更好的方法将3DGS或点云转换为网格(可能通过法线贴图重建?)
-
添加并改进一些最佳的MVS算法(如2DGS等)
-
从原始多视图图像添加相机姿态估计
开发
如何贡献
- Fork项目
- 进行改进/添加新功能
- 创建一个Pull Request到dev分支
项目结构
-
nodes.py:
包含所有Comfy3D节点的接口代码(即在ComfyUI中实际可见和使用的节点),你可以在这里添加新节点 -
Gen_3D_Modules:
包含所有生成模型/系统代码的文件夹(如多视图扩散模型、3D重建模型)。新的3D生成模块应添加在这里 -
MVs_Algorithms:
包含所有多视图立体算法代码的文件夹,即将多视图图像转换为3D表示(如高斯、MLP或网格)的算法(如高斯散射、NeRF和FlexiCubes)。新的MVS算法应添加在这里 -
web:
包含所有浏览器UI相关文件和代码(html、js、css)的文件夹(如html布局、样式和3D网格及高斯预览的核心逻辑)。新的网页UI应添加在这里 -
webserver:
包含与浏览器通信代码的文件夹,即处理网页客户端请求(如当请求特定URL路由时向客户端发送3D网格)。新的网页服务器相关功能应添加在这里 -
Configs:
包含不同模块配置文件的文件夹,新的配置应添加在这里,如果单个模块有多个配置,请使用子文件夹(如Unique3D、CRM) -
Checkpoints:
包含所有预训练模型和一些diffusers所需模型架构配置文件的文件夹。如果新的检查点可以由Load_Diffusers Pipeline
节点自动下载,那么应该添加在这里 -
install.py:
主安装脚本,将根据您的运行环境自动下载并安装预构建,如果找不到对应的预构建,则构建脚本将自动启动,由ComfyUI-Manager在使用pip安装requirements.txt中列出的依赖项后立即调用
如果您尝试添加的新模块需要一些无法简单添加到requirements.txt和build_config.remote_packages的额外包,那么您可以尝试通过修改此脚本来添加 -
_Pre_Builds:
包含构建所有必需依赖项的文件和代码的文件夹,如果您想预构建一些额外的依赖项,请查看_Pre_Builds/README.md以获取更多信息
提示
- OpenGL(Three.js、Blender)世界和相机坐标系:
世界 相机 +y 上 目标 | | / | | / |______+x |/______右 / / / / / / +z 前方 z轴指向您并从屏幕中伸出 仰角:在(-90,90)范围内,从+y到+x为(-90,0) 方位角:在(-180,180)范围内,从+z到+x为(0,90)
- 如果遇到OpenGL错误(例如,
[F glutil.cpp:338] eglInitialize() failed
),则在相应节点上将force_cuda_rasterize
设置为true - 如果安装后,您的ComfyUI在启动或运行时卡住,您可以按照以下链接中的说明解决问题:在GPU上评估神经元模型时代码无限期挂起