DistanceSampler 插件完全保姆级教程
1. 插件简介
原项目地址: https://github.com/Extraltodeus/DistanceSampler
DistanceSampler 是一个特殊的图像生成"方法"插件,就像是给你的AI画画工具装上了一个全新的"画笔"。
这个插件能给我们带来什么效果?
想象一下,平时AI画画就像用普通笔刷快速涂抹,有时候会画出一些奇怪的东西,比如:
- 人物身体部位长错地方(手长在脸上)
- 多个人物融合在一起变成怪物
- 画面看起来很乱很糟糕
而DistanceSampler就像是一支"精密画笔",它会:
- 减少画错的情况:特别是减少那些看起来很恐怖的画面(作者称为"身体恐怖")
- 用更少的步数:普通方法需要画20次,这个方法只需要画4-10次就够了
- 画得更精细:开始的时候画得很仔细,确保基础打得好
简单来说:这就像是把一个急性子的画家变成了一个有耐心的艺术家,虽然画得慢一点,但质量更好,而且不需要画那么多遍。
2. 如何安装
方法一:ComfyUI Manager 安装(推荐)
- 打开ComfyUI
- 点击 "Manager" 按钮
- 点击 "Install Custom Nodes"
- 在搜索框输入 "DistanceSampler"
- 找到后点击 "Install"
- 重启ComfyUI
方法二:手动安装
- 打开ComfyUI的安装文件夹
- 进入
custom_nodes文件夹 - 在这里打开命令行窗口
- 输入命令:
git clone https://github.com/Extraltodeus/DistanceSampler.git - 重启ComfyUI
3. 节点逐一解析
3.1 KSampler (Distance) 节点 - 基础距离采样器
这是插件的核心节点,就像是一个智能的"画画机器人"。它会根据"距离"来决定怎么画图,画得更准确。
3.2 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | 你的模型 | 选择你要用的AI模型,就像选择画笔的类型 | 扩散模型对象 | 连接你加载的checkpoint模型 |
| positive | positive | CONDITIONING | 正面描述 | 告诉AI你想画什么,就像给画家下订单 | 正向条件编码 | 连接你的提示词编码器 |
| negative | negative | CONDITIONING | 负面描述 | 告诉AI你不想画什么,就像告诉画家避免什么 | 负向条件编码 | 连接你的负面提示词编码器 |
| latent_image | latent_image | LATENT | 潜在图像 | 画布的初始状态,可以是空白或已有内容 | 潜在空间表示 | 连接Empty Latent或已有图像 |
| seed | seed | 0-4294967295 | 任意数字 | 随机种子,像掷骰子决定随机性,相同种子产生相同结果 | 伪随机数生成种子 | 固定数字可复现结果,-1为随机 |
| steps | steps | 1-100 | 7 | 画画的次数,就像素描需要画几遍 | 采样步数 | 推荐4-10步,7步是最佳选择 |
| cfg | cfg | 1.0-30.0 | 1.0-7.0 | 控制AI听话程度,数字越大越严格按描述画 | 分类器自由引导强度 | 简单画面用1.0,复杂画面用7.0 |
| denoise | denoise | 0.0-1.0 | 1.0 | 控制画面变化程度,1.0是完全重画,0.0是不变 | 去噪强度 | 生成新图用1.0,修改图片用0.3-0.8 |
3.3 KSampler (Distance n) 节点 - 负面增强距离采样器
这个是上面那个采样器的"升级版",就像给画家加了一个"纠错助手",会更好地避免画错东西。
3.4 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | 你的模型 | 选择你要用的AI模型,就像选择画笔的类型 | 扩散模型对象 | 连接你加载的checkpoint模型 |
| positive | positive | CONDITIONING | 正面描述 | 告诉AI你想画什么,就像给画家下订单 | 正向条件编码 | 连接你的提示词编码器 |
| negative | negative | CONDITIONING | 负面描述 | 告诉AI你不想画什么,这个版本会更重视这个 | 负向条件编码 | 连接你的负面提示词编码器,写详细的负面词 |
| latent_image | latent_image | LATENT | 潜在图像 | 画布的初始状态,可以是空白或已有内容 | 潜在空间表示 | 连接Empty Latent或已有图像 |
| seed | seed | 0-4294967295 | 任意数字 | 随机种子,像掷骰子决定随机性,相同种子产生相同结果 | 伪随机数生成种子 | 固定数字可复现结果,-1为随机 |
| steps | steps | 1-100 | 7 | 画画的次数,就像素描需要画几遍 | 采样步数 | 推荐4-10步,7步是最佳选择 |
| cfg | cfg | 1.0-30.0 | 3.0-7.0 | 控制AI听话程度,这个版本可以用更高的数值 | 分类器自由引导强度 | 因为有负面增强,可以用稍高的CFG |
| denoise | denoise | 0.0-1.0 | 1.0 | 控制画面变化程度,1.0是完全重画,0.0是不变 | 去噪强度 | 生成新图用1.0,修改图片用0.3-0.8 |
3.5 KSampler (Distance p) 节点 - 渐进式距离采样器
这是第三个变种,就像是给画家加了一个"回顾镜",每画一步都会回头看看之前画的怎么样,让画面更流畅。
3.6 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | 你的模型 | 选择你要用的AI模型,就像选择画笔的类型 | 扩散模型对象 | 连接你加载的checkpoint模型 |
| positive | positive | CONDITIONING | 正面描述 | 告诉AI你想画什么,就像给画家下订单 | 正向条件编码 | 连接你的提示词编码器 |
| negative | negative | CONDITIONING | 负面描述 | 告诉AI你不想画什么,就像告诉画家避免什么 | 负向条件编码 | 连接你的负面提示词编码器 |
| latent_image | latent_image | LATENT | 潜在图像 | 画布的初始状态,可以是空白或已有内容 | 潜在空间表示 | 连接Empty Latent或已有图像 |
| seed | seed | 0-4294967295 | 任意数字 | 随机种子,像掷骰子决定随机性,相同种子产生相同结果 | 伪随机数生成种子 | 固定数字可复现结果,-1为随机 |
| steps | steps | 1-100 | 6-10 | 画画的次数,这个版本可能需要稍微多一点步数 | 采样步数 | 推荐6-10步,因为要对比前面的步骤 |
| cfg | cfg | 1.0-30.0 | 1.0 | 控制AI听话程度,这个版本在CFG=1时效果很好 | 分类器自由引导强度 | 可以试试CFG=1,效果很棒 |
| denoise | denoise | 0.0-1.0 | 1.0 | 控制画面变化程度,1.0是完全重画,0.0是不变 | 去噪强度 | 生成新图用1.0,修改图片用0.3-0.8 |
3.7 KSampler (Distance ancestral) 节点 - 祖先式距离采样器
这是最新加入的版本,就像是给画家加了一些"随机灵感",让画面更有创意和变化。
3.8 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | 你的模型 | 选择你要用的AI模型,就像选择画笔的类型 | 扩散模型对象 | 连接你加载的checkpoint模型 |
| positive | positive | CONDITIONING | 正面描述 | 告诉AI你想画什么,就像给画家下订单 | 正向条件编码 | 连接你的提示词编码器 |
| negative | negative | CONDITIONING | 负面描述 | 告诉AI你不想画什么,就像告诉画家避免什么 | 负向条件编码 | 连接你的负面提示词编码器 |
| latent_image | latent_image | LATENT | 潜在图像 | 画布的初始状态,可以是空白或已有内容 | 潜在空间表示 | 连接Empty Latent或已有图像 |
| seed | seed | 0-4294967295 | 任意数字 | 随机种子,像掷骰子决定随机性,相同种子产生相同结果 | 伪随机数生成种子 | 固定数字可复现结果,-1为随机 |
| steps | steps | 1-100 | 7 | 画画的次数,就像素描需要画几遍 | 采样步数 | 推荐4-10步,7步是最佳选择 |
| cfg | cfg | 1.0-30.0 | 3.0-7.0 | 控制AI听话程度,数字越大越严格按描述画 | 分类器自由引导强度 | 祖先版本通常用中等CFG值 |
| denoise | denoise | 0.0-1.0 | 1.0 | 控制画面变化程度,1.0是完全重画,0.0是不变 | 去噪强度 | 生成新图用1.0,修改图片用0.3-0.8 |
3.9 KSampler (Distance fast) 节点 - 快速距离采样器
这是为了解决一些技术问题而制作的"快速版本",就像是简化版的画家,画得快一些但质量依然很好。
3.10 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | 你的模型 | 选择你要用的AI模型,就像选择画笔的类型 | 扩散模型对象 | 连接你加载的checkpoint模型 |
| positive | positive | CONDITIONING | 正面描述 | 告诉AI你想画什么,就像给画家下订单 | 正向条件编码 | 连接你的提示词编码器 |
| negative | negative | CONDITIONING | 负面描述 | 告诉AI你不想画什么,就像告诉画家避免什么 | 负向条件编码 | 连接你的负面提示词编码器 |
| latent_image | latent_image | LATENT | 潜在图像 | 画布的初始状态,可以是空白或已有内容 | 潜在空间表示 | 连接Empty Latent或已有图像 |
| seed | seed | 0-4294967295 | 任意数字 | 随机种子,像掷骰子决定随机性,相同种子产生相同结果 | 伪随机数生成种子 | 固定数字可复现结果,-1为随机 |
| steps | steps | 1-100 | 7 | 画画的次数,就像素描需要画几遍 | 采样步数 | 推荐4-10步,7步是最佳选择 |
| cfg | cfg | 1.0-30.0 | 3.0-7.0 | 控制AI听话程度,数字越大越严格按描述画 | 分类器自由引导强度 | 快速版本用标准CFG设置 |
| denoise | denoise | 0.0-1.0 | 1.0 | 控制画面变化程度,1.0是完全重画,0.0是不变 | 去噪强度 | 生成新图用1.0,修改图片用0.3-0.8 |
3.11 KSampler (Distance fast n) 节点 - 快速负面增强距离采样器
这是快速版本的"升级型",结合了快速和负面增强的特点。
3.12 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | 你的模型 | 选择你要用的AI模型,就像选择画笔的类型 | 扩散模型对象 | 连接你加载的checkpoint模型 |
| positive | positive | CONDITIONING | 正面描述 | 告诉AI你想画什么,就像给画家下订单 | 正向条件编码 | 连接你的提示词编码器 |
| negative | negative | CONDITIONING | 负面描述 | 告诉AI你不想画什么,这个版本会更重视负面描述 | 负向条件编码 | 连接你的负面提示词编码器,写详细的负面词 |
| latent_image | latent_image | LATENT | 潜在图像 | 画布的初始状态,可以是空白或已有内容 | 潜在空间表示 | 连接Empty Latent或已有图像 |
| seed | seed | 0-4294967295 | 任意数字 | 随机种子,像掷骰子决定随机性,相同种子产生相同结果 | 伪随机数生成种子 | 固定数字可复现结果,-1为随机 |
| steps | steps | 1-100 | 7 | 画画的次数,就像素描需要画几遍 | 采样步数 | 推荐4-10步,7步是最佳选择 |
| cfg | cfg | 1.0-30.0 | 3.0-7.0 | 控制AI听话程度,这个版本可以用稍高的数值 | 分类器自由引导强度 | 因为有负面增强,可以用稍高的CFG |
| denoise | denoise | 0.0-1.0 | 1.0 | 控制画面变化程度,1.0是完全重画,0.0是不变 | 去噪强度 | 生成新图用1.0,修改图片用0.3-0.8 |
4. 使用技巧和建议
4.1 选择合适的版本
- 新手推荐:先试试基础的 "Distance" 版本
- 想要更好效果:试试 "Distance n" 版本,记得写详细的负面提示词
- 追求流畅画面:用 "Distance p" 版本,CFG可以设置为1.0
- 需要更多变化:用 "Distance ancestral" 版本
- 遇到技术问题:用 "Distance fast" 或 "Distance fast n" 版本
4.2 参数调整建议
- 步数设置:不要设置太高,7步就够了,最多10步
- CFG设置:
- 简单人物:CFG = 1.0
- 复杂场景:CFG = 3.0-7.0
- 负面增强版本:可以稍微高一点
- 配合调度器:推荐使用 "beta" 或 "AYS" 调度器
4.3 适合的场景
- 人物肖像:特别适合,能减少画错身体部位的情况
- 简单场景:可以用CFG=1.0,效果很好
- 需要高质量:愿意等待更长时间换取更好质量
4.4 不适合的场景
- 需要快速出图:这个插件比较慢,不适合批量生成
- 复杂动画:步数少不适合做复杂的动画中间帧
5. 常见问题解答
Q1: 为什么我的图像生成速度变慢了?
A: 这是正常的!DistanceSampler就像是一个细心的画家,虽然画得慢,但质量更好。而且它只需要很少的步数(4-10步),所以总体时间不会太长。
Q2: 我应该用哪个版本?
A:
- 初学者:用基础的"Distance"
- 想要更好效果:用"Distance n"
- 想要超流畅画面:用"Distance p"
- 遇到错误:用"Distance fast"系列
Q3: 为什么我的CFG设置为1.0还能出好图?
A: 这是DistanceSampler的特色功能!它可以在没有负面引导的情况下(CFG=1.0)也能画出好图,特别适合简单场景。
Q4: 步数设置多少合适?
A: 建议4-10步,最推荐7步。不要设置太高,这个插件的特点就是用很少的步数达到很好的效果。
Q5: 出现形状错误怎么办?
A: 作者提到如果遇到形状错误,可以尝试使用"Distance fast"系列的版本,这些版本对形状兼容性更好。
6. 总结
DistanceSampler是一个非常有特色的ComfyUI插件,它的核心理念是"慢工出细活"。虽然单步计算时间稍长,但由于需要的总步数很少,所以整体效率还是很高的。
最大优势:
- 画面质量高,很少出现恐怖的画面
- 步数要求低,7步就能出好图
- 可以在CFG=1.0时也有好效果
适用人群:
- 追求高质量画面的用户
- 经常遇到AI画错身体部位的用户
- 想要用更少步数获得好结果的用户
记住:选择合适的版本,设置合理的参数,耐心等待,你会得到更好的AI绘画结果!