ComfyUI_depthMapOperation 插件完整教程
1. 插件简介
插件地址: https://github.com/chri002/ComfyUI_depthMapOperation
这个插件就像一个神奇的"图片立体转换器",它能把你的平面图片变成立体的点云模型。想象一下,你有一张风景照片,这个插件能够根据图片的深度信息(远近关系),把它变成一个可以旋转、移动、缩放的3D模型。
主要功能:
- 把2D图片转换成3D点云(就像把纸上的画变成立体积木)
- 对3D模型进行各种变换(旋转、移动、缩放)
- 从不同角度重新生成2D图片
- 清理和优化点云数据
2. 如何安装
在ComfyUI的custom_nodes文件夹中打开命令行,输入:
git clone https://github.com/chri002/ComfyUI_depthMapOperation
需要的依赖包:
- torch(火炬包,用来计算)
- numpy(数字处理包)
- opencv-python(图像处理包)
- scipy(科学计算包)
- pandas(数据处理包)
3. 节点详细解析
3.1 Image2Points3D 节点 - 图片转3D点云
这个节点就像一个"平面图片立体化工厂",它读取你的图片和深度图,然后生成一个3D点云。
3.1.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 图像 | image | IMAGE类型 | - | 输入你要转换的彩色图片 | 输入RGB/RGBA图像数据 | 连接任何图片输入节点 |
| 深度图 | depth_image | IMAGE类型 | - | 输入对应的深度图(黑白图,白色=近,黑色=远) | 深度映射图像,用于确定Z轴坐标 | 连接深度估计节点的输出 |
| 深度缩放 | depth | 1-1024 | 100 | 控制图片的"厚度",数值越大越厚 | Z轴缩放因子,控制深度范围 | 风景照用50-100,人像用200-400 |
| 质量 | quality | 1-16 | 4 | 控制点云密度,1=最密集,16=最稀疏 | 下采样质量,1点对1像素,16点每2像素插值 | 高质量用1-4,快速预览用8-16 |
3.2 TransformPoints3D 节点 - 3D点云变换
这个节点就像一个"3D积木操作台",可以旋转、移动、缩放你的3D模型。
3.2.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 点云 | points | Points3D类型 | - | 输入要变换的3D点云 | 输入点云数据(XYZ坐标+RGB颜色) | 连接Image2Points3D的输出 |
| X轴旋转 | rot_x | 角度值 | 0 | 左右倾斜角度(像点头) | X轴欧拉角,单位度 | 要仰视效果用-30到-60度 |
| Y轴旋转 | rot_y | 角度值 | 0 | 左右转向角度(像摇头) | Y轴欧拉角,单位度 | 要看侧面用45或90度 |
| Z轴旋转 | rot_z | 角度值 | 0 | 顺时针/逆时针旋转角度 | Z轴欧拉角,单位度 | 要倾斜画面用15或30度 |
| X轴移动 | trl_x | 数值 | 0 | 左右移动距离 | X轴平移偏移量 | 正数右移,负数左移 |
| Y轴移动 | trl_y | 数值 | 0 | 上下移动距离 | Y轴平移偏移量 | 正数上移,负数下移 |
| Z轴移动 | trl_z | 数值 | 0 | 前后移动距离 | Z轴平移偏移量 | 正数前移,负数后移 |
| X轴缩放 | scale_x | 数值 | 1.0 | 水平方向拉伸/压缩 | X轴缩放因子 | 大于1拉宽,小于1压窄 |
| Y轴缩放 | scale_y | 数值 | 1.0 | 垂直方向拉伸/压缩 | Y轴缩放因子 | 大于1拉高,小于1压低 |
| Z轴缩放 | scale_z | 数值 | 1.0 | 前后方向拉伸/压缩 | Z轴缩放因子 | 大于1拉厚,小于1压薄 |
3.3 RenderOrtho 节点 - 正交投影渲染
这个节点就像一个"平行光摄影机",从正面拍摄你的3D模型,不会产生近大远小的效果。
3.3.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 模板图像 | images | IMAGE类型 | - | 决定输出图片的大小 | 输出尺寸模板 | 连接一个参考图片 |
| 点云 | points | Points3D类型 | - | 要渲染的3D点云 | 输入点云数据 | 连接变换后的点云 |
| 颜色模式 | color | 布尔值 | True | 是否保留颜色(关闭=黑白,开启=彩色) | 启用RGB着色 | 要彩色图选True,要灰度图选False |
3.4 RenderPerspective 节点 - 透视投影渲染
这个节点就像一个"普通相机",会产生近大远小的透视效果,更接近人眼观察。
3.4.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 模板图像 | images | IMAGE类型 | - | 决定输出图片的大小 | 输出尺寸模板 | 连接一个参考图片 |
| 点云 | points | Points3D类型 | - | 要渲染的3D点云 | 输入点云数据 | 连接变换后的点云 |
| 颜色模式 | color | 布尔值 | True | 是否保留颜色 | 启用RGB着色 | 要彩色图选True,要灰度图选False |
| 视野角度 | fov | 1-2000 | 60 | 相机的视野宽度(像人眼睁开的角度) | 视野角度,单位度 | 广角用90-120,望远用15-30 |
3.5 FilterCube 节点 - 立方体过滤器
这个节点就像一个"3D橡皮擦",可以擦掉你不想要的部分,只保留指定范围内的点云。
3.5.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 点云 | points | Points3D类型 | - | 要过滤的3D点云 | 输入点云数据 | 连接变换后的点云 |
| X轴最小值 | x_min | 0-100% | 0 | 左边界位置(0%=最左边) | X轴最小边界,相对百分比 | 要去掉左边1/4,设为25 |
| X轴最大值 | x_max | 0-100% | 100 | 右边界位置(100%=最右边) | X轴最大边界,相对百分比 | 要去掉右边1/4,设为75 |
| Y轴最小值 | y_min | 0-100% | 0 | 下边界位置(0%=最下面) | Y轴最小边界,相对百分比 | 要去掉下面1/3,设为33 |
| Y轴最大值 | y_max | 0-100% | 100 | 上边界位置(100%=最上面) | Y轴最大边界,相对百分比 | 要去掉上面1/3,设为67 |
| Z轴最小值 | z_min | 0-100% | 0 | 前边界位置(0%=最前面) | Z轴最小边界,相对百分比 | 要去掉前景,设为20 |
| Z轴最大值 | z_max | 0-100% | 100 | 后边界位置(100%=最后面) | Z轴最大边界,相对百分比 | 要去掉背景,设为80 |
3.6 FilterOutliers 节点 - 异常点清理器
这个节点就像一个"点云清洁工",会自动找出并删除那些孤立的、看起来不正常的点。
3.6.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 点云 | points | Points3D类型 | - | 要清理的3D点云 | 输入点云数据 | 连接其他节点的点云输出 |
| 邻居数量 | k | 整数 | 6 | 每个点至少要有几个邻居才算正常 | 最小邻居数量要求 | 密集点云用8-12,稀疏点云用4-6 |
| 距离阈值 | m | 浮点数 | 1.0 | 邻居的最大距离(超过就算孤立) | 最大邻居距离阈值 | 严格清理用0.5,宽松清理用2.0 |
3.7 InterpolatePoints3D 节点 - 点云插值加密器
这个节点就像一个"点云繁殖器",在现有点之间生成新的点,让稀疏的点云变得更密集。
3.7.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 点云 | points | Points3D类型 | - | 要加密的3D点云 | 输入点云数据 | 连接其他节点的点云输出 |
| 混合比例 | value | 0-1 | 0.5 | 新点的"真实程度"(0=完全原始,1=完全插值) | 新点的混合比例 | 轻微加密用0.2-0.4,大幅加密用0.6-0.8 |
| 邻居数量 | n | 0-32 | 8 | 生成新点时参考几个邻居 | 参考的最近邻居数量 | 平滑插值用6-10,精确插值用12-16 |
3.8 ExportPLY 节点 - PLY文件导出器
这个节点就像一个"3D文件打包机",把你的点云数据保存成PLY格式的3D文件。
3.8.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 点云 | points | Points3D类型 | - | 要导出的3D点云 | 输入点云数据 | 连接任何点云节点的输出 |
| 多文件模式 | multiple_files | 布尔值 | False | 是否分开保存坐标和颜色数据 | 分离XYZ和RGB数据 | 一般用False,特殊需求用True |
| 输出格式 | format_out | ASCII/Binary | ASCII | 文件编码方式(ASCII=文本,Binary=二进制) | 文件编码格式 | 小文件用ASCII,大文件用Binary |
3.9 ImportPLY 节点 - PLY文件导入器(实验性)
这个节点就像一个"3D文件解包机",可以读取PLY格式的3D文件并转换成点云数据。
3.9.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| PLY文件 | ply_file | 文件选择 | - | 选择要导入的PLY文件 | PLY文件路径选择 | 点击浏览按钮选择.ply文件 |
3.10 InfoPoints3D 节点 - 点云信息显示器
这个节点就像一个"点云体检报告",显示你的点云的各种统计信息。
3.10.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 点云 | points | Points3D类型 | - | 要查看信息的3D点云 | 输入点云数据 | 连接任何点云节点的输出 |
输出内容:
- 点的总数量
- X、Y、Z坐标的范围
- 颜色信息统计
4. 使用技巧和建议
4.1 基础工作流程
- 准备素材:用深度估计节点(如MiDaS)生成深度图
- 转换点云:使用Image2Points3D节点转换
- 调整视角:用TransformPoints3D节点旋转和移动
- 渲染输出:选择合适的渲染节点生成最终图片
4.2 参数调优建议
- depth参数:人像用200-400,风景用50-150,建筑用100-300
- quality参数:预览时用8-16加快速度,最终输出用1-4保证质量
- 视野角度:人像用50-85度,风景用60-120度
4.3 性能优化
- 大图片先用高quality值预览,确定效果后再用低quality值精细化
- 使用FilterCube节点去除不需要的部分,减少计算量
- 适当使用FilterOutliers清理异常点
5. 常见问题解答
Q1:点云转换后看起来很稀疏怎么办?
A1: 降低quality参数值,或者使用InterpolatePoints3D节点进行插值加密。
Q2:渲染出来的图片是黑色的怎么办?
A2: 检查点云是否在相机视野范围内,可能需要调整TransformPoints3D的移动参数。
Q3:深度效果不明显怎么办?
A3: 增加depth参数值,或者检查深度图的质量是否足够好。
Q4:插件安装后找不到节点怎么办?
A4: 检查依赖包是否都安装完成,重启ComfyUI,确保插件文件夹在正确位置。
Q5:点云渲染速度很慢怎么办?
A5: 使用FilterCube节点先过滤掉不需要的部分,或者提高quality参数值减少点的数量。
6. 高级应用技巧
6.1 创建旋转动画
可以连接多个TransformPoints3D节点,每个设置不同的旋转角度,然后渲染成序列图片制作动画。
6.2 多角度合成
使用同一个点云,通过不同的变换参数渲染出多个角度的图片,可以用于创建全景效果。
6.3 艺术化处理
结合FilterCube和FilterOutliers节点,可以创造出各种艺术化的点云效果,比如只保留前景或者创造"悬浮"效果。
这个插件为ComfyUI用户提供了强大的2D到3D转换能力,通过合理使用各个节点,可以创造出非常有趣的视觉效果。记住,多实验、多调试,找到最适合你的参数组合!