内置节点

在 ComfyUI 中,节点是代表工作流中 特定操作 或 功能 的基本构建块, 是一个单独处理单元。将节点连接在一起以创建复杂的图像生成工作流。

从本章开始, 需要操作节点和创建工作流, 文后附有 基本操作附录快捷键附录, 了解它们将是非常有用的. 操作中反复翻看将大大提升效率.

每个节点在 ComfyUI 的界面中通常是一个带有名称、输入、输出和参数控件的框

alt text

节点通常包含:

  • Inputs 输入. 输入是节点接收数据的连接点。每个输入都有其接受的特定数据类型,确保连接节点之间的兼容性。

  • Outputs 输出. 输出是将数据发送到其他节点的连接点。与输入一样,输出也定义了数据类型,决定了它们传递的信息类型。

  • Parameters 参数. 参数是控制节点行为的设置。这些可以包括数值、文本字符串或预定义选项的选择。

  • Internal Logic 内部逻辑. 这是节点的核心功能,由其背后的代码定义。它确定节点如何处理其输入、使用其参数并生成其输出。

一个简单完整的工作流

下面我们正式开始内置节点介绍. 先将一个完整的工作流组成介绍完, 再依次按分类介绍每个节点:

alt text

1, Load Checkpoint: 这个节点任务是从文件夹加载模型, 而且必须是包含 基础模型, CLIP 和 VAE 的模型 (具体见上一章基本概念), 然后分别输出.

2, CLIP Text Encode (Prompt): CLIP 文本编码节点, 是通过输入的 CLIP 模型, 将输入的 自然语言提示词 编码为潜空间向量输出, 用来引导图像生成.

3, Empty Latent Image: 空的潜空间图像, 该节点的作用就是创建空的潜空间图像, 通过参数指定宽, 高 和数量, 然后输出.

4, KSampler: 采样器节点, 该节点任务是 输入模型 按照输入的各种条件, 设置的各种参数去噪, 执行图像生成, 然后输出 (输出的仍然是潜空间图像). 拟人化理解就是 AI 在潜空间中按照人的指令在画画. 各种参数详解见上一章 基本概念.

5, VAE Decode: VAE 解码, 该节点任务是输入的 VAE 模型, 将 AI 画好的潜空间画作, 映射为现实图像输出.

6, Preview Image: 图像预览节点, 将最后输出的图像打印到屏幕上供你欣赏.

这就是一个完整的工作流, 它由一个个各司其职的节点组成, 协调完成创作大业. 工作流执行过程需要注意几点 (重要):

  • 整个生成过程是一环扣一环的, 哪个节点出错, 它后面的节点就不会执行.

  • 执行过一次之后, 下一次执行只运行有改动的节点, 以及依赖于它的节点. 例如你执行一次之后, 如果什么也没动, 连种子也固定, 在点击执行它不理你.

  • 生成的图像, 或导出的工作流, 你直接加载或拖到窗口中, 会加载完整的工作流, 包括种子, 也就是可以将上次生成的图像完全复现出来 (注意固定种子).

  • 你可以使用 () (英文括号) 来更改单词或短语的权重,例如:(beautiful girl:1.2) 或 (dog:0.8). () 的默认权重值为 1.1. 要在实际提示词中使用 () 字符,要转义它们,比如你要在图中生成 (), 就要 \(\) 这样.

  • 你可以使用 {day|night} 这样的语法, 将提示词变成动态提示词, 这样,每次执行生成, 会从 {} 中, | 符号隔开的单词或短语中随机选一个, 要在实际提示词中使用 {} 字符,请转义它们,例如:\{\}.

  • 提示词还支持 C 语言风格的注释, 注释的提示词不会生效. 像这样: // comment/* comment */

  • 要使用 embeddings 模型,请将它们放在 models/embeddings 目录中,并在提示词中注明 (您可以省略 .pt 扩展名): embedding:embedding_filename.pt

内置节点太多, 需要很多章节才能讲完, 下一章开始正式介绍每个内置节点.

基本操作附录

加载节点

加载节点有多种方式.

  • 鼠标右击画布窗口的空白处, 可以按下图选择节点, 将选择的节点加载出来:

alt text

除了, Add Node, 其他选项介绍:

  1. Add Group: 新建一个分组框 (这个操作麻烦, 不如选中要分组的节点, Ctrl + g 直接分为一个组)

  2. Convert to Group Node: 选中多个节点, 可以用这个选项将多个节点合并为一个组节点 (新功能)

  3. Manage Group Nodes: 管理组节点

  4. Add Group For Selected Nodes: 将选中的多个节点分为一个组 (Ctrl + g)

  5. Save Selected as Template: 保存选中的节点作为模板

  6. Node Templates: 节点模板管理, 可以导入/导出节点模板

  • 鼠标双击空白处, 弹出节点搜索框, 从搜索框中搜索节点加载 (鼠标移动到搜索出来的节点名上, 会弹出预览):

alt text

  • 鼠标点击节点输出点, 按住拖动, 将拉出一条线, 放开线, 弹出的对话框也可加载节点, 如果匹配, 则直接与拖出的线相连:

alt text

  • 直接打开节点库, 搜索或选择:

alt text

连接节点

节点加载出来, 按照上一章介绍的四个基本板块(加载模型, 输入/预处理/设置参数, 执行生成, 输出), 连接成一个完整工作流. 从输出点拖动线, 会自动高亮匹配的输入点并连接.

并不是节点的所有输入/输出都需要连接, 有的节点的输入/输出项是可选的, 可以不用输入, 这种情况遇到再说.

加载模型

模型统一放到 ComfyUI\models 下, 对应的文件夹中, 自动下载的模型会自动存放, 手动下载的根据模型分类手动存放 (一般模型发布者会说明放到什么位置):

alt text

如果模型的位置放对了, 点击模型加载器节点选择, 将弹出可选模型:

alt text

输入提示词

提示词输入, 一般在 CLIP 文本编码器节点输入, 还有其他输入方式, 将在相应的节点介绍.

参数设置

各节点有各节点的参数, 根据自己的需要, 计算机的配置 (显存), 模型参数要求等设置相应的参数, 例如前面介绍过的采样器节点. 具体细节到相应节点介绍.

节点设置

鼠标放到节点上右击, 将弹出节点设置对话框, 基本所有节点设置都差不多, 不同的节点可能略有不同:

alt text

  1. Inputs
  2. Outputs
  3. Convert to Group Node 将选中节的多个节点转换为一个组节点
  4. Properties 设置节点的 S&R 名称(节点太多, 可能有共用同一个名称, 通过这里可改唯一名称)
  5. Properties Panel 设置节点以下参数:

alt text

  1. Title 修改节点标题
  2. Mode 选择节点模式:

alt text

Always: 节点被改变或输入被改变时执行

Never: 禁用节点

On Evert/On Trigger

  1. Resize: 重置节点框大小
  2. Collapse: 折叠节点
  3. Pin: 在窗口画布中固定节点的位置
  4. Colors: 设置节点的颜色
  5. Shapes: 选择节点边框样式
  6. Bypass: 绕过节点(不执行而继续执行后面的)
  7. Copy (Clipspace): 复制 Clipspace, 目前只对有图像的节点有效

复制完 Clipspace 之后, 打开 EditClipspace, 将弹出窗口:

alt text

然后 MaskEditor 可以打开蒙版编辑, 对图像进行处理:

alt text

  1. Paste (Clipspace): 粘贴 Clipspace, 将图像复制到另一个节点 (例如加载图像节点, 如果已经蒙版处理过, 直接粘贴的是处理过的图像)
  2. Convert Widget to Input: 将小组件转换为输入, 例如 CLIP 文本编码节点执行这个操作之后, 提示词就不能输入了, 只能从其他节点传进来 (可以用同样的操作转换回来):

alt text

  1. Clone: 克隆节点, 相当于复制一个节点
  2. Remove: 删除节点

蒙版编辑器

alt text

分别是 撤销, 重做, 反转, 清除, 保存, 关闭蒙版编辑

  • 笔刷设置

alt text

可以设置笔刷的形状, 粗细, 透明度, 硬度, 平滑系数, 遮罩层的颜色, 遮罩透明度, 选择图层. (笔刷下面的是橡皮擦, 就不介绍了).

  • 喷漆设置

alt text

  • 取色笔设置

alt text

组节点

选中多个节点, 右击可以选中转换为组节点:

alt text

组节点可以同样的操作展开为单节点, 组节点还可以进行管理, 右击组节点:

alt text

节点分组

选中多个节点, Ctrl + g 将节点分为一个组:

alt text

一个组的节点, 拖动组边框, 将拖动全部组内节点, 右击组边框:

alt text

可以让边框适应节点, 选中组内全部节点, 禁用组内全部节点, 绕过组内全部节点, 编辑组 (固定, 设置标题, 颜色, 标题字体大小, 移除组, 不会移除节点)

快捷键附录

Keybind Explanation
Ctrl + Enter Queue up current graph for generation 当前工作流执行生成
Ctrl + Shift + Enter Queue up current graph as first for generation 将当前工作流排到第一, 如果当前执行队列为空, 则直接执行生成
Ctrl + Alt + Enter Cancel current generation 终止当前生成
Ctrl + Z/Ctrl + Y Undo/Redo 撤销/重做
Ctrl + S Save workflow 保存工作流
Ctrl + O Load workflow 从文件夹中加载已有工作流
Ctrl + A Select all nodes 选中所有节点
Alt + C Collapse/uncollapse selected nodes 折叠/展开所选节点
Ctrl + M Mute/unmute selected nodes 禁用/解禁所选节点
Ctrl + B Bypass selected nodes 绕过所选节点, 就像节点不存在, 直接绕过执行
Delete/Backspace Delete selected nodes 删除所选节点
Ctrl + Backspace Delete the current graph 删除当前工作流
Space Move the canvas around when held and moving the cursor 按住鼠标可空格键, 拖动工作流画布
Ctrl/Shift + Click Add clicked node to selection 点击选中多个节点
Ctrl + C/Ctrl + V Copy and paste selected nodes 没有连接线复制/粘贴所选节
Ctrl + C/Ctrl + Shift + V Copy and paste selected nodes 保持连接线复制/粘贴所选节点
Shift + Drag Move multiple selected nodes at the same time 同时移动选中的所有节点
Ctrl + D Load default graph 加载默认工作流
Alt + + Canvas Zoom in 放大工作流画布
Alt + - Canvas Zoom out 缩小工作流画布
Ctrl + Shift + LMB + Vertical drag Canvas Zoom in/out 缩/放工作流画布
P Pin/Unpin selected nodes 锁定/解锁所选节点
Ctrl + G Group selected nodes 将所选节点分组
Q Toggle visibility of the queue 查看队列执行历史
H Toggle visibility of history 切换历史记录的可见性
R Refresh graph 刷新工作流
Double-Click LMB Open node quick search palette 打开节点快速搜索对话框
Shift + Drag Move multiple wires at once 点击连接点/线, 然后拖动去找新的连接点
Ctrl + Alt + LMB Disconnect all wires from clicked slot 点击连接点, 断开所有线
Alt + 拖动任意一个节点 复制一个拖动的节点
滚动鼠标中键 缩放画布
鼠标左键按住空白处拖动 移动整个工作流