动画制作 #

动画制作概述 #

AI 动画类型 #

ComfyUI 支持多种 AI 动画创作方式,从简单的图像动画到复杂的视频生成。

text
┌─────────────────────────────────────────────────────────────┐
│                    AI 动画类型                               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  图像动画:                                                  │
│  ├── 静态图像转动画                                         │
│  ├── 图像运动效果                                           │
│  └── 循环动画                                               │
│                                                             │
│  帧动画:                                                    │
│  ├── 逐帧生成                                               │
│  ├── 帧插值                                                 │
│  └── 平滑过渡                                               │
│                                                             │
│  视频生成:                                                  │
│  ├── 文生视频                                               │
│  ├── 图生视频                                               │
│  └── 视频风格化                                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

AnimateDiff 基础 #

AnimateDiff 简介 #

text
AnimateDiff 是最流行的 AI 动画生成工具:

功能:
├── 图像序列动画化
├── 保持帧间连贯性
├── 支持多种运动模型
└── 可控动画效果

安装:
├── 模型:ComfyUI/custom_nodes/ComfyUI-AnimateDiff
├── 运动模型:ComfyUI/models/animatediff_models/
└── 通过 Manager 安装

运动模型:
├── mm_sd_v15.ckpt - 标准模型
├── mm_sd_v15_v2.ckpt - 改进模型
├── mm_sdxl_v10_beta.ckpt - SDXL 模型
└── mm_stabilized.mp4 - 稳定模型

AnimateDiff 工作流 #

text
基础 AnimateDiff 工作流:

┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  ┌─────────────┐     ┌─────────────┐                       │
│  │ Load        │     │ AnimateDiff │                       │
│  │ Checkpoint  │     │ Model       │                       │
│  └──────┬──────┘     └──────┬──────┘                       │
│         │                   │                               │
│         │                   ▼                               │
│         │           ┌─────────────┐                       │
│         │           │ AnimateDiff │                       │
│         │           │ Uniform     │                       │
│         │           │ Context     │                       │
│         │           └──────┬──────┘                       │
│         │                  │                               │
│         └──────────────────┼──→                            │
│                            │                               │
│         ┌──────────────────┼──→                            │
│         │                  │                               │
│         ▼                  ▼                               │
│  ┌─────────────┐     ┌─────────────┐                       │
│  │ CLIP Text   │     │ Empty       │                       │
│  │ Encode      │     │ Latent      │                       │
│  │             │     │ (batch)     │                       │
│  └──────┬──────┘     └──────┬──────┘                       │
│         │                   │                               │
│         └─────────┬─────────┘                               │
│                   │                                         │
│                   ▼                                         │
│           ┌─────────────┐                                   │
│           │ KSampler    │                                   │
│           │ (animated)  │                                   │
│           └─────────────┘                                   │
│                   │                                         │
│                   ▼                                         │
│           ┌─────────────┐                                   │
│           │ VAE Decode  │                                   │
│           └─────────────┘                                   │
│                   │                                         │
│                   ▼                                         │
│           ┌─────────────┐                                   │
│           │ Save Image  │                                   │
│           │ (animated)  │                                   │
│           └─────────────┘                                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

AnimateDiff 参数 #

text
关键参数:

AnimateDiff Model:
├── model_name: 运动模型文件
└── beta_schedule: 动画调度

AnimateDiff Uniform Context:
├── context_length: 帧数 (16/24/32)
├── context_stride: 步长
├── context_overlap: 重叠帧
└── closed_loop: 循环模式

Empty Latent Image:
├── width: 宽度
├── height: 高度
├── batch_size: 帧数
└── 通常 16-32 帧

KSampler:
├── 与普通采样相同
├── 处理整个帧序列
└── 保持帧间连贯

动画类型 #

循环动画 #

text
循环动画设置:

特点:
├── 无缝循环
├── 首尾帧相同
└── 适合 GIF

参数:
├── closed_loop: True
├── context_overlap: 较高
└── 帧数:16-24

工作流:
AnimateDiff (closed_loop=True)
→ 生成循环动画帧
→ 保存为 GIF

提示词技巧:
├── 描述循环动作
├── "looping animation"
├── "seamless loop"
└── 简单动作效果更好

运动动画 #

text
运动动画类型:

镜头运动:
├── zoom in/out - 缩放
├── pan left/right - 平移
├── rotation - 旋转
└── 使用 ControlNet 控制

物体运动:
├── 自然运动效果
├── 由运动模型生成
└── 提示词引导

提示词示例:
"beautiful woman, gentle smile,
hair flowing in the wind,
subtle movement, looping animation"

"landscape, clouds moving,
trees swaying, peaceful scene,
nature animation"

角色动画 #

text
角色动画技巧:

保持一致性:
├── 使用 IP-Adapter
├── 固定种子
├── 角色一致性 LoRA
└── 参考图像控制

动作控制:
├── OpenPose ControlNet
├── 动作序列参考
├── 逐帧姿态控制
└── 动作插值

工作流:
参考图像 → IP-Adapter → AnimateDiff
         → 保持角色一致
         → 生成动画

高级动画技术 #

ControlNet 动画 #

text
ControlNet 动画应用:

OpenPose 动画:
├── 姿态序列参考
├── 逐帧姿态控制
├── 动作连贯性
└── 人物动画

Depth 动画:
├── 深度序列参考
├── 空间运动控制
├── 场景动画
└── 镜头运动

Canny 动画:
├── 边缘序列参考
├── 轮廓动画
└── 线稿动画

工作流:
姿态序列 → OpenPose Preprocessor → ControlNet Apply
         → AnimateDiff → 动画输出

帧插值 #

text
帧插值技术:

目的:
├── 增加帧率
├── 平滑动画
└── 减少卡顿

方法:
1. 使用插值节点
   ├── FILM 插值
   ├── RIFE 插值
   └── 自定义插值

2. 多次生成
   ├── 低帧率生成
   ├── 中间帧生成
   └── 合并序列

工作流:
动画帧 → Frame Interpolation → 高帧率动画

视频风格化 #

text
视频风格化流程:

1. 提取视频帧
   ├── 视频转图像序列
   └── 逐帧处理

2. 风格迁移
   ├── IP-Adapter 风格参考
   ├── 风格 LoRA
   └── 图生图处理

3. 重新合成
   ├── 图像序列转视频
   └── 保持帧率

工作流:
视频帧 → AnimateDiff + IP-Adapter → 风格化帧
      → 合成视频

输出与导出 #

GIF 导出 #

text
GIF 导出方法:

方法 1:ComfyUI 内置
├── Save Image 节点
├── 自动生成 GIF
└── 查看输出目录

方法 2:外部工具
├── 使用 Python 脚本
├── 使用 FFmpeg
└── 使用图像编辑软件

FFmpeg 示例:
ffmpeg -framerate 8 -i frame_%04d.png
       -vf "scale=512:-1:flags=lanczos"
       -loop 0 output.gif

优化:
├── 调整帧率
├── 优化文件大小
├── 调整分辨率
└── 循环设置

视频导出 #

text
视频导出方法:

FFmpeg 命令:
ffmpeg -framerate 8 -i frame_%04d.png
       -c:v libx264 -pix_fmt yuv420p
       -crf 18 output.mp4

参数说明:
├── -framerate: 帧率
├── -c:v libx264: 编码器
├── -pix_fmt yuv420p: 像素格式
├── -crf: 质量 (0-51, 越低越好)
└── 推荐 crf: 18-23

高质量导出:
ffmpeg -framerate 24 -i frame_%04d.png
       -c:v libx264 -preset slow
       -crf 18 -pix_fmt yuv420p
       output.mp4

常见问题 #

问题 1:动画闪烁 #

text
症状:帧间不连贯,闪烁

解决:
├── 增加 context_overlap
├── 使用稳定运动模型
├── 降低 denoise 值
├── 增加帧数
└── 使用帧插值

问题 2:运动不自然 #

text
症状:运动僵硬或不自然

解决:
├── 优化提示词描述
├── 使用 ControlNet 引导
├── 调整运动模型
├── 增加帧数
└── 参考真实运动

问题 3:角色不一致 #

text
症状:帧间角色变化

解决:
├── 使用 IP-Adapter
├── 固定种子
├── 使用角色 LoRA
├── 降低 denoise
└── 增加上下文重叠

最佳实践 #

动画创作流程 #

text
推荐流程:

1. 规划阶段
   ├── 确定动画类型
   ├── 设计动作序列
   └── 准备参考素材

2. 测试阶段
   ├── 低帧率测试
   ├── 验证效果
   └── 调整参数

3. 生产阶段
   ├── 高帧率生成
   ├── 质量检查
   └── 问题修正

4. 后期阶段
   ├── 帧插值
   ├── 导出格式
   └── 最终调整

参数建议 #

text
推荐参数配置:

预览测试:
├── 帧数:8-16
├── 分辨率:512x512
├── 步数:15-20
└── 快速验证效果

标准动画:
├── 帧数:16-24
├── 分辨率:512x512 或 768x512
├── 步数:20-25
└── 平衡质量和速度

高质量动画:
├── 帧数:24-32
├── 分辨率:768x512 或更高
├── 步数:25-30
└── 最佳质量输出

总结 #

恭喜你完成了 ComfyUI 完全指南的学习!你已经掌握了从基础到高级的所有知识,可以开始创作精彩的 AI 图像和动画作品了。

继续探索和实践,不断提升你的 AI 绘画技能!

最后更新:2026-04-05