使用 ComfyUI 将图像转换为 3D 模型
ComfyUI 使用本地模型(Trellis.2、Pixal3D、Hunyuan3D……)从图像重建网格。您无需建模:只需选择工作流、运行它并交付文件。它在用户的 GPU 上运行,不产生费用,耗时从几分钟到一刻钟不等。
其机制已嵌入您的工具中:comfy_workflows 列出用户保存的工作流,准备一个包含附件的图像并收集结果,同时告知您每一步操作;ComfyUI 连接负责验证、运行和等待。请遵循这些工具返回的结果。本技能关注的是它们留给您进行选择的环节。
如果您既没有 comfy_workflows 也没有 ComfyUI 连接的工具,请停止操作并说明:用户需要安装 ComfyUI 连接(工具 → 连接),并向该代理提供 comfy_workflows、comfyui_validate_workflow、comfyui_run_workflow 和 comfyui_job,同时保持 ComfyUI 处于打开状态。
选择哪个工作流
使用 comfy_workflows 并设置 action: "list" 来显示用户保存的工作流。根据图像类型进行选择:
| 图像类型 | 使用的工作流 |
|---|---|
| 单个物体的一张图片(照片、渲染图、概念图) | 用于单张图像生成 3D 模型(用户命名为“多视图”的工作流同样适用于单张图片) |
| 同一物体的多视图表格(正面、侧面、背面;角色转面图) | 用于多视图生成 3D 模型 |
| 同一物体的多张独立附件图片 | 如果工作流支持读取多个文件,则使用多视图工作流;否则询问用户使用哪张图片 |
- 用户命名的特定工作流优先于您的选择。
- 如果有两个保存的工作流都符合且无法区分,请询问用户,不要同时运行两者。
- 如果没有匹配的工作流,请告知用户并列出其所拥有的工作流。只有在此之后,才能从 Comfy 的在线图库提供模板(如果您有
comfyui_search_templates),并事先告知用户图库内容来自互联网,应用会请求他们批准您读取后的每个步骤。
准备工作
- 将附件图像传递给
files,使用对话中显示的名称。 - 每次运行处理一个物体。如果图片显示多个物体,请询问用户具体是哪一个,或说明模型将把整个场景作为一个整体包含。
- 具有纯色背景且完整物体在画面中的图片能获得最佳模型。如果物体被边缘裁剪或遮挡,请在运行前说明:生成器会自行发明无法看到的部分。
工作流内部的选择
comfy_workflows 会引用工作流作者留下的注释。请阅读它们:它们说明了工作流中各个开关的作用。
- 开关后的两个生成器(一个工作流可以使用两个模型之一):保持用户保存的设置。仅当用户指定要使用的生成器时,才通过
comfyui_list_workflow_slots找到开关,并使用comfyui_set_workflow_slot进行设置,同时在报告中说明运行的是哪个生成器。 - 保留用户的值。 使用用户保存的值运行工作流。请勿自行更改
target_face_count、分辨率、采样器或其他任何参数,即使图片看起来很简单或上一次运行产生了一个高面数模型:保存的工作流是用户的选择,您“为了帮助”而降低的值会产生一个用户并未要求的模型(过度简化的重建会呈现褶皱形状,而非轻量副本)。如果您认为轻量模型更适合用户,请在报告中说明并提供建议,但不要直接执行。 - 仅当用户明确要求时才提供轻量模型。 当用户明确要求轻量模型、指定面数,或表示用于游戏、网页或手机时,请在运行前降低面数,分两步操作已准备的文件:
- 调用
comfyui_list_workflow_slots,在其返回中找到名称为target_face_count的槽位(属于DecimateMesh节点);复制其address。 - 使用
comfyui_set_workflow_slot,设置stdout: false和[{"address": "<该地址>", "value": 50000}](对于游戏中的道具;主角或摄像机靠近的物体则设为 150000)。除非用户自己指定了更低的数值,否则绝不低于 50000。 然后正常验证和运行,并在报告中说明您设置的值。如果工作流没有这样的槽位,或者您缺少这两个工具,则按原样运行,并明确说明模型对游戏而言太重以及超出多少。
- 调用
- 单张图片足以用于多视图工作流。 一种工作流可以从输入中裁剪出多个视图,同样适用于单张照片:超出图片范围的裁剪区域会空着,模型只从真实视图构建。不要去寻找视图表格或尝试制作一个;直接用用户提供的图片运行。
当运行失败时
- 缺少模型或节点:报告验证所缺的文件并停止。用户从 ComfyUI 安装这些文件(在工作流中打开会提供下载链接)。不要切换到其他工作流来绕过此问题。
- 任务失败:
comfy_workflows使用action: "collect"报告节点和原因。常见原因是内存不足:请说明此情况,并提供以更低分辨率或使用其他生成器(如果工作流支持)重试的选项。不要自行重试超过一次。 - 等待超时:任务仍在运行。请再次等待,切勿同时启动两次。
报告
- 返回的文件
collect及其大小和三角面数,如实提供。 - 运行了哪个工作流,以及您对其做了哪些更改。
- 您并未看到模型:说明模型已生成,但不要描述其外观。
- 一行说明预期效果:图片未显示的部分由生成器自行生成,结果是带有烘焙纹理的单一网格,而非多个分离部件。
- 如果用户希望模型进行清理、进一步简化或导出用于引擎,那是 Blender 的任务(
blender-game-export技能)。