Stable Diffusion 像素人物帧动画制作指南
本文介绍基于 Stable Diffusion 生成漫画风 N 视图,结合骨骼动画工具生成动作,最后转绘为像素风的完整流程。
1. 关于'真·象素'
本节旨在获得'真·像素图',在基础转绘方法上进一步操作。
1.1 安装 pixelization 插件
在 stable-diffusion-webui 中安装专门生成像素风格的插件。
cd stable-diffusion-webui 安装目录/extensions
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui-pixelization.git
- 下载所需模型
下载到
stable-diffusion-webui 安装目录/extensions/stable-diffusion-webui-pixelization/checkpoints/ 目录下面。
注意: 启动失败可能与 torch 版本或显卡驱动有关。若遇到问题,可尝试重装 torch:
pip uninstall torch torchvision torchaudio -y
pip install --upgrade torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2
1.2 使用 pixelization 插件
启动 SD Web UI,进入 Extras 页面,勾选 Pixelize(确保其他插件不勾),并勾选 Keep resolution。根据原图大小调整像素值。
生成像素人物总结流程:
- 文生图生成人物 5 视图
- 动画制作工具进行人物动作生成,保存关键帧图片
- 对关键帧进行图生图转绘成像素风
- 使用像素插件转为真像素
- 手绘修补像素图
效果对比:
从左到右依次是:原始立绘、原始立绘像素化、转绘像素图、转绘图进一步像素化。最后一张通常只需简单手绘即可作为合格真像素图。
2. 制作 2D 动画
2.1 下载 AnimeEffects
支持 Windows、macOS。Linux 需自行研究安装。推荐下载 Windows 版本 v1.3.4。
2.2 PS 切图
切图目的是分离头部、躯干、四肢(如左大臂、左小臂、左手)。建议先生成骨骼图调至半透明与原图对齐,方便确定切割范围。注意图层顺序,保存为 PSD 文件。
从五视图中截取侧视图,为后续生成走路动画做准备。

2.3 使用 AnimeEffects 制作骨骼动画
- 语言设置:修改设置后重启即为中文。
- 新建项目:创建新项目。
- 重新组织图层:在 side-view 窗口将所有图层拖入一个文件夹(如 total),使其成为单一对象。
- 快速绘制骨骼:选中整体文件夹,使用工具栏中的 🦴图标。根节点设为胯部,向上生长躯干,向下生长腿。
- 绑定对象:点击骨骼再点击图层名称,出现白色虚线即完成绑定。一个骨骼可绑定多个对象。
- 快速验证与修改:按住骨骼转动查看效果。若衔接有问题,可调整节点位置或删除。
- 在关键帧摆动作:拖动时间轴红圈圆点定位关键帧。例如走路最少需要三个位置(右脚前、左脚前、恢复右脚前)。最后一帧可拷贝第一帧。
- 播放:勾选循环,点击播放按钮验证效果。

2.4 导出
由于要用图生图转绘,直接导出 PNG 序列即可。

3. 转绘并生成动画
3.1 批量转绘成像素风

3.2 遇到的问题
- 问题:没有输出到指定路径。
- 原因:Batch 同时打开 ControlNet 时,生成结果可能被 ControlNet 的'预览图'逻辑截胡,导致图片未出现在指定目录。
- 解决方法:在 Web UI 界面 Settings → ControlNet → 找到 'Do not append detectmap to output' 把它勾上 → 重启 Web UI。
3.3 结果
通过 PS 将转绘得到的像素图像序列转为 GIF 用于展示。未进行修复工作,追求更好效果可修复颜色及其他细节。

附录 1. PS 生成 GIF
在 Photoshop 中将一系列按帧分好的 PNG 图片合成为 GIF。
- 导入 PNG 帧为图层:文件 > 脚本 > 将文件载入堆栈…,勾选'尝试自动对齐源图像'。
- 若不生效,可使用 ImportFolderAsLayers.jsx 脚本。
- 打开时间轴:窗口 > 时间轴,选择'创建帧动画',点击菜单选择'从图层建立帧'。
- 设置每帧持续时间:点击每帧下方时间设置(如 0.1 秒)。
- 设置循环方式:左下角设置为'永远'或'一次'。
- 导出为 GIF:文件 > 存储为 Web(旧版)…,格式选 GIF,调整颜色和抖动后存储。
小贴士:
- PNG 文件最好按顺序命名(如 frame001.png)。
- 帧率换算:0.1 秒/帧 ≈ 10fps。
- 导出时可减少颜色数或缩小尺寸以防过大。
附录 2. PS 批量添加背景
使用 Photoshop 的「动作(Action)+ 批处理(Batch)」一次性给文件夹里的 PNG 加上白色背景并重新导出。
方案 1:纯 PS 内置命令(零代码)
- 录动作:窗口 → 动作 → 新建动作。打开任意 PNG,新建空白层放最下方,填充白色,拼合图像,导出 PNG。停止录制,删除动作中的'打开'和'保存'步骤。
- 批处理:文件 → 自动 → 批处理…,组选刚才的动作,源选文件夹,目标选输出文件夹,勾选'覆盖动作中的打开命令'。
方案 2:自带'图像处理器'偷懒版
文件 → 脚本 → 图像处理器…,第 1 步选输入文件夹,第 2 步选输出,第 3 步存为 JPEG(白底自动生成),再改后缀为 .png。
方案 3:PS 脚本(jsx)一键搞定
将以下代码存为 AddWhiteBg.jsx,放入 PS 预设 Scripts 目录。运行时会弹窗选择输入/输出文件夹。
#target photoshop
if(app.documents.length !==0) app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
var inFolder = Folder.selectDialog("选择放 PNG 的输入文件夹");
if(!inFolder)exit();
var outFolder = Folder.selectDialog("选择输出文件夹");
if(!outFolder)exit();
var fileList = inFolder.getFiles("*.png");
for(var i =0; i < fileList.length; i++){
var doc =open(fileList[i]);
var whiteLayer = doc.artLayers.add();
whiteLayer.name ="白底";
whiteLayer.move(doc.backgroundLayer, ElementPlacement.PLACEAFTER);
doc.activeLayer = whiteLayer;
doc.selection.selectAll();
doc.selection.fill(app.foregroundColor.rgb.hexValue ="FFFFFF");
doc.selection.deselect();
doc.flatten();
var saveFile =newFile(outFolder ++ fileList[i]..(,)+);
pngOpts =();
doc.(saveFile, pngOpts,);
doc.(.);
}
(+ fileList. +);
常见坑 & 小贴士
- 透明像素边缘阴影:加白底后可能发灰,可在动作里加一步「图层 → 修边 → 去色黑/白」。
- 颜色配置:批处理前固定 RGB 工作空间为 sRGB IEC61966-2.1。
- 文件名:统一用英文 + 下划线,避免空格。
- 覆盖原图:输出文件夹设为独立路径。
- 画布大小:若非透明裁切图,先扩画布再填充白色。
总结:录一个'新建白色底层→拼合→导出 PNG'的动作,再用文件→自动→批处理选文件夹即可。