【版权严正声明】
本文系作者 [编程界的小学生] 原创,并拥有完整、独立的著作权。
未经本人 书面授权 ,任何单位、平台或个人, 严禁 以任何形式(包括但不限于转载、复制、摘编、修改、链接、转贴、建立镜像等)使用本文的全部或部分内容。
任何无视本声明的侵权行为,本人将依据《中华人民共和国著作权法》等相关法律法规,采取一切必要的法律手段,追究其侵权责任,要求其 立即停止侵权、赔礼道歉、消除影响,并赔偿因此造成的一切经济损失及维权成本(包括但不限于律师费、诉讼费、公证费等)。
侵权必究,切勿以身试法!
插件简介
Steerable-Motion 是一个专门用于创建图像间过渡动画的强大插件包。
插件地址: https://github.com/banodoco/Steerable-Motion
主要功能:
这个插件就像一个专业的动画制作工具箱,能帮你把静态图片变成流畅的动画视频。它特别适合制作图片之间的过渡效果,比如让一张风景照慢慢变成另一张风景照,或者创建循环动画。
如何安装
方法一:通过 ComfyUI Manager 安装(推荐)
打开 ComfyUI Manager
搜索 "Steerable-Motion"
点击安装
重启 ComfyUI
方法二:手动安装
进入 ComfyUI 的 custom_nodes 文件夹
运行命令:git clone https://github.com/banodoco/Steerable-Motion.git
进入插件文件夹:cd Steerable-Motion
安装依赖:pip install -r requirements.txt
重启 ComfyUI
节点详细解析
插件总节点数:7个 本次已分析:7个 剩余未分析:0个
3.1 Batch Creative Interpolation 节点 - 批量创意插值器
这个节点就像一个智能的动画导演,能够根据你提供的多张图片,自动计算出它们之间的过渡动画,并控制每张图片在动画中的影响力和出现时机。
参数详解
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
正向提示词 | positive | CONDITIONING类型 | - | 告诉AI你想要什么样的画面效果 | 正向条件输入 | 连接正向提示词编码器 |
负向提示词 | negative | CONDITIONING类型 | - | 告诉AI你不想要什么样的画面效果 | 负向条件输入 | 连接负向提示词编码器 |
输入图片 | images | IMAGE类型 | - | 要制作动画的关键帧图片 | 图像序列输入 | 连接图片加载节点 |
AI模型 | model | MODEL类型 | - | 用来生成动画的AI模型 | 扩散模型 | 连接模型加载器 |
IP适配器 | ipadapter | IPADAPTER类型 | - | 图片风格控制器 | IP-Adapter模型 | 连接IP-Adapter加载器 |
视觉编码器 | clip_vision | CLIP_VISION类型 | - | 图片理解器 | CLIP视觉编码器 | 连接CLIP视觉模型 |
帧分布类型 | type_of_frame_distribution | 选择列表 | "linear" | 关键帧在时间轴上的排列方式 | 帧分布策略 | "linear"均匀分布,"dynamic"自定义分布 |
线性帧分布值 | linear_frame_distribution_value | 4-64 | 16 | 每个关键帧之间间隔多少帧 | 线性分布间隔 | 16表示每16帧放一个关键帧 |
动态帧分布值 | dynamic_frame_distribution_values | 字符串 | "0,10,26,40" | 自定义每个关键帧的具体位置 | 动态分布位置 | "0,10,26,40"表示在第0、10、26、40帧放关键帧 |
关键帧影响类型 | type_of_key_frame_influence | 选择列表 | "linear" | 每个关键帧影响范围的控制方式 | 影响力分布类型 | "linear"统一影响,"dynamic"分别设置 |
线性关键帧影响值 | linear_key_frame_influence_value | 字符串 | "(1.0,1.0)" | 关键帧向前后影响的距离 | 线性影响范围 | "(1.0,1.0)"表示前后各影响1倍距离 |
动态关键帧影响值 | dynamic_key_frame_influence_values | 字符串 | "(1.0,1.0),(1.0,1.5)(1.0,0.5)" | 每个关键帧的具体影响范围 | 动态影响范围 | 每个括号对应一个关键帧的影响 |
强度分布类型 | type_of_strength_distribution | 选择列表 | "linear" | 关键帧强度变化的控制方式 | 强度分布策略 | "linear"统一强度,"dynamic"分别设置 |
线性强度值 | linear_strength_value | 字符串 | "(0.3,0.4)" | 关键帧的影响强度范围 | 线性强度范围 | "(0.3,0.4)"表示强度在0.3到0.4之间 |
动态强度值 | dynamic_strength_values | 字符串 | "(0.0,1.0),(0.0,1.0),(0.0,1.0),(0.0,1.0)" | 每个关键帧的具体强度设置 | 动态强度设置 | 每个括号对应一个关键帧的强度 |
缓冲区 | buffer | 1-16 | 4 | 动画开头和结尾的缓冲帧数 | 缓冲帧数量 | 4表示开头结尾各加4帧缓冲 |
高细节模式 | high_detail_mode | true/false | true | 是否启用更精细的细节处理 | 高质量模式开关 | true启用更好的细节效果 |
基础IP高级设置 | base_ipa_advanced_settings | ADVANCED_IPA_SETTINGS类型 | 可选 | 基础IP适配器的详细配置 | 基础IP-Adapter配置 | 连接IP配置节点 |
细节IP高级设置 | detail_ipa_advanced_settings | ADVANCED_IPA_SETTINGS类型 | 可选 | 细节IP适配器的详细配置 | 细节IP-Adapter配置 | 连接IP配置节点 |
3.2 IP-Adapter Configuration 节点 - IP适配器配置器
这个节点就像一个精密的调音台,用来精确控制IP适配器的各种参数,决定图片风格如何影响最终的动画效果。
参数详解
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
IP开始时间 | ipa_starts_at | 0.0-1.0 | 0.0 | IP适配器从动画的哪个时间点开始生效 | IP-Adapter激活起始点 | 0.0表示从开头开始,0.5表示从中间开始 |
IP结束时间 | ipa_ends_at | 0.0-1.0 | 1.0 | IP适配器到动画的哪个时间点停止生效 | IP-Adapter激活结束点 | 1.0表示到结尾,0.8表示到80%时停止 |
IP权重类型 | ipa_weight_type | 选择列表 | "linear" | IP适配器影响力的变化曲线 | 权重变化函数 | "linear"线性变化,"ease in-out"缓入缓出 |
IP权重 | ipa_weight | 0.0-2.0 | 1.0 | IP适配器的整体影响强度 | IP-Adapter权重系数 | 1.0是标准强度,2.0是双倍强度 |
IP嵌入缩放 | ipa_embeds_scaling | 选择列表 | "V only" | IP适配器影响哪些注意力层 | 嵌入向量缩放策略 | "V only"只影响值层,"K+V"影响键值层 |
IP噪声强度 | ipa_noise_strength | 0.0-1.0 | 0.3 | 添加到IP适配器的噪声强度 | 噪声注入强度 | 0.0无噪声,1.0最大噪声 |
使用图片作为噪声 | use_image_for_noise | true/false | false | 是否用输入图片生成噪声 | 图像噪声生成开关 | true用图片生成噪声,false用随机噪声 |
噪声类型 | type_of_noise | 选择列表 | "fade" | 噪声的生成方式 | 噪声生成算法 | "fade"渐变噪声,"gaussian"高斯噪声 |
噪声模糊 | noise_blur | 0-32 | 0 | 对噪声进行模糊处理的程度 | 噪声模糊半径 | 0不模糊,32最大模糊 |
3.3 Remove and Interpolate Frames 节点 - 帧移除与插值器
这个节点就像一个智能的视频修复工具,能够移除指定的帧,然后用AI技术自动生成中间帧来填补空缺,让视频保持流畅。
参数详解
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
输入图片 | images | IMAGE类型 | - | 要处理的视频帧序列 | 图像序列输入 | 连接视频帧或图片序列 |
要删除的帧 | frames_to_drop | 字符串 | "[8, 16, 24]" | 指定要删除哪些帧的位置 | 删除帧索引列表 | "[8, 16, 24]"表示删除第8、16、24帧 |
这个节点就像一个智能的视频编辑助手,能从输入视频中提取特定帧,并自动生成对应的遮罩,用于后续的视频处理和合成。
参数详解
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
输入视频帧 | input_video_frames | IMAGE类型 | - | 要提取帧的原始视频 | 输入视频帧序列 | 连接视频加载节点 |
总输出帧数 | total_output_frames | 1-10000 | 81 | 最终输出视频的总帧数 | 输出帧数量 | 81表示输出81帧的视频 |
帧选择字符串 | frame_selection_string | 字符串 | "0, 10:20" | 指定要提取哪些帧 | 帧选择表达式 | "0, 10:20"表示提取第0帧和第10-20帧 |
空帧填充级别 | empty_frame_fill_level | 0.0-1.0 | 0.5 | 未选中帧的灰度填充值 | 空帧填充灰度 | 0.0是黑色,1.0是白色,0.5是灰色 |
深度视频帧 | depth_video_frames | IMAGE类型 | 可选 | 可选的深度信息帧 | 深度图像序列 | 连接深度图生成节点 |
主遮罩 | master_inpaint_mask | MASK类型 | 可选 | 覆盖所有帧的主遮罩 | 全局遮罩覆盖 | 连接遮罩生成节点 |
3.5 Video Continuation Generator 节点 - 视频续接生成器
这个节点就像一个视频续集制作器,能够从现有视频的结尾开始,生成自然的续接内容,让视频无缝延长。
参数详解
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
输入视频帧 | input_video_frames | IMAGE类型 | - | 要续接的原始视频 | 输入视频帧序列 | 连接视频加载节点 |
总输出帧数 | total_output_frames | 1-81 | 81 | 续接后的总帧数 | 输出帧数量 | 81表示续接后总共81帧 |
重叠帧数 | overlap_frames | 1-50 | 3 | 原视频结尾与续接开头的重叠帧数 | 过渡重叠帧数 | 3表示用原视频最后3帧作为续接开头 |
空帧填充级别 | empty_frame_fill_level | 0.0-1.0 | 0.5 | 续接部分空帧的填充颜色 | 空帧填充灰度 | 0.5表示用中灰色填充空白帧 |
结束帧 | end_frame | IMAGE类型 | 可选 | 续接视频的最后一帧 | 结束帧图像 | 连接单张图片作为结尾 |
控制图片 | control_images | IMAGE类型 | 可选 | 用于填充续接部分的控制图片 | 控制图像序列 | 连接图片序列填充中间帧 |
修复遮罩 | inpaint_mask | MASK类型 | 可选 | 续接部分的修复遮罩 | 修复区域遮罩 | 连接遮罩定义需要修复的区域 |
控制图片使用方式 | how_to_use_control_images | 选择列表 | "start_sequence_at_beginning_and_prioritise_input_frames" | 控制图片的放置策略 | 控制图像放置策略 | 决定控制图片从哪里开始放置 |
修复遮罩使用方式 | how_to_use_inpaint_masks | 选择列表 | "start_sequence_at_beginning_and_prioritise_input_frames" | 修复遮罩的应用策略 | 遮罩应用策略 | 决定遮罩从哪里开始应用 |
这个节点就像一个帧数验证器,确保输入的帧数符合WAN算法的特殊要求,避免后续处理出错。
参数详解
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
帧数 | frame_number | 1-10000 | 81 | 要验证的帧数值 | 帧数输入 | 81表示81帧,必须满足(帧数-1)能被4整除 |
3.7 WAN Video Blender 节点 - WAN视频混合器
这个节点就像一个专业的视频剪辑师,能够将两段视频通过交叉淡化的方式平滑地混合在一起,创造无缝的过渡效果。
参数详解
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
重叠帧数 | overlap_frames | 1-1000 | 10 | 两个视频重叠混合的帧数 | 交叉淡化帧数 | 10表示用10帧的时间完成两视频的过渡 |
视频1 | video_1 | IMAGE类型 | - | 第一个要混合的视频 | 第一视频输入 | 连接第一个视频的帧序列 |
视频2 | video_2 | IMAGE类型 | - | 第二个要混合的视频 | 第二视频输入 | 连接第二个视频的帧序列 |
使用技巧和建议
4.1 动画制作技巧
选择风格相近的关键帧图片,过渡效果会更自然
合理设置帧分布,避免关键帧过于密集或稀疏
使用缓冲区可以让动画开头和结尾更平滑
4.2 参数调优建议
4.3 性能优化
高细节模式会显著增加计算时间,根据需要选择
大量帧处理时建议分批进行,避免内存不足
合理设置缓冲区大小,平衡质量和性能
4.4 创意应用
结合不同的权重类型创造独特的动画节奏
使用动态强度值制作重点突出的动画效果
尝试不同的噪声类型获得不同的艺术风格
常见问题解答
5.1 动画质量问题
Q:生成的动画不够流畅? A:检查关键帧之间的间隔是否合适,增加缓冲区帧数,调整IP适配器的权重类型为"ease in-out"。
Q:动画中出现闪烁或跳跃? A:降低IP适配器权重,增加噪声强度,确保输入图片风格一致。
5.2 参数设置问题
Q:动态模式的参数格式不对? A:确保使用正确的格式,如"(1.0,1.0),(1.5,0.5)",括号和逗号都是英文符号。
Q:WAN帧数验证失败? A:确保帧数满足(帧数-1)能被4整除的条件,如81、85、89等。
5.3 性能和兼容性
Q:处理大视频时内存不足? A:减少总输出帧数,关闭高细节模式,或者分段处理后再合并。
Q:某些节点无法找到? A:确保安装了所有依赖插件,特别是IP-Adapter Plus和Frame Interpolation插件。
5.4 创意制作问题
Q:如何制作循环动画? A:确保第一帧和最后一帧相似,使用适当的缓冲区设置,调整强度分布让过渡更自然。
Q:如何控制特定区域的动画效果? A:使用Video Frame Extractor节点的遮罩功能,结合IP适配器的区域控制参数。
实用工作流程示例
6.1 基础图片过渡动画
准备图片 → Load Images 节点
配置IP适配器 → IP-Adapter Configuration 节点
创建动画 → Batch Creative Interpolation 节点
输出视频 → Video Combine 节点
6.2 视频续接制作
加载原视频 → Load Video 节点
生成续接 → Video Continuation Generator 节点
混合处理 → WAN Video Blender 节点
最终输出 → Save Video 节点
6.3 复杂创意动画
多图片输入 → Load Images 节点
帧提取处理 → Video Frame Extractor 节点
创意插值 → Batch Creative Interpolation 节点
帧修复 → Remove and Interpolate Frames 节点
最终合成 → Video Combine 节点
总结
Steerable-Motion 是一个功能强大的动画制作插件,包含7个专业节点,涵盖了从图片过渡到视频续接的各个方面。通过合理使用这些节点,你可以创造出令人惊艳的动画效果。
记住几个关键点:
选择合适的关键帧图片是成功的基础
参数调优需要耐心和实验
不同的组合方式会产生完全不同的效果
善用缓冲区和遮罩功能提升质量
根据硬件性能合理设置参数
多尝试不同的创意组合
希望这个教程能帮助你更好地使用这个强大的动画制作插件!