stable-diffusion试验2-像素人物帧动画2(含 AnimeEffects 简易教程 等)

目录

  • 前言
    1. 关于"真·象素"
    • 1.1 安装 pixelization 插件
    • 1.2 使用 pixelization 插件
    1. 制作2D动画
    • 2.1 下载 AnimeEffects
    • 2.2 PS切图
    • 2.2 使用 AnimeEffects 制作骨骼动画
    • 2.3 导出
  • 3 转绘并生成动画
    • 3.1 批量转绘成像素风
    • 3.2 遇到的问题
    • 3.3 ★ 结果 ★
  • 附录1- ps 生成 gif
  • 附录2 - ps 批量添加背景
    • 方案 1:纯 PS 内置命令(零代码)
    • 方案 2:自带"图像处理器"偷懒版
    • 方案 3:PS 脚本(jsx)一键搞定(适合经常跑)
    • 常见坑 & 小贴士
    • 一句话总结

前言

  • 在上一篇文章《stable-diffusion试验2-像素人物帧动画1》中,讨论了像素帧动画的一些基础生成办法,以及后续可以尝试的思路。
  • 本文进一步进行实验,主要是尝试这个流程:
    • step1: 用 SD 生成漫画风N视图
    • step2: 用骨骼动画工具生成动作
    • step3: 用转绘工具将每一帧转为像素风

1. 关于"真·象素"

具体转绘的方法在《stable-diffusion试验2-像素人物帧动画1》3.2节 的第三个样例有介绍。本节在此基础上进行进一步操作,目的是得到"真·像素图"。

1.1 安装 pixelization 插件

在 stable diffusion 中,有专门生成像素风格的插件,具体安装过程如下。

  • 下载 git 仓库
powershell 复制代码
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/" 目录下面
url filename
https://drive.google.com/file/d/1VRYKQOsNlE1w1LXje3yTRU5THN2MGdMM/view?usp=sharing pixelart_vgg19.pth
https://drive.google.com/file/d/17f2rKnZOpnO9ATwRXgqLz5u5AZsyDvq_/view?usp=sharing alias_net.pth
https://drive.google.com/file/d/1i_8xL3stbLWNF4kdQJ50ZhnRFhSDh3Az/view?usp=sharing 160_net_G_A.pth

注1:在浏览器下载

注2:安装完启动时我还遇到了启动失败的问题,当时不清楚是 torch 版本的问题还是电脑休眠导致显卡驱动出了问题。我当时将 torch 版本重新下载,并重启电脑才能启动。我怀疑不是我安装的有问题,而是我当时电脑驱动出了问题。这里记录 torch 版本的重装如下:

powershell 复制代码
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。具体像素大小根据原图大小进行调整,可以自行尝试(从效果来看,这个插件做的事情类似于池化)。

  • 样例

    我尝试了直接对原始立绘进行像素化、对转绘的像素图进行像素化,结果如下:

    从左到右依次是:原始立绘、原始立绘像素化、转绘像素图、转绘图进一步像素化。

    个人认为最后一张是合格的真像素图,只需要简单手绘(比如强化一下眼睛)即可。

  • 总结:如何生成像素人物

    • step1:文生图生成人物5视图
    • step2:动画制作工具进行人物动作生成,保存关键帧图片
    • step3:对关键帧进行图生图转绘成像素风
    • step4:使用 像素插件 转为真像素
    • step5:手绘修补像素图

2. 制作2D动画

2.1 下载 AnimeEffects

这个软件支持 windows、mac。如果是linux系统则需要自己研究如何安装。这里我下载 windows 版本的 v1.3.4。

  • 网址
类型 网址 日期 版本
汉化版 https://www.dayanzai.me/animeeffects.html v1.3.4 2024-01-10
官方 https://yukusai.itch.io/animeeffects v1.7 2024-08-5 最新的

2.2 PS切图

这里不介绍 ps 的用法,只介绍用 ps 干哪些事。

  • 原始图片
    从 五视图 中截取了侧视图,为后续生成走路动画做准备
  • 切图
    • 切图是为了得到
      • 头部(头发、头、颈部)
      • 躯干
      • 四肢(每一个肢体一般分为三部分,如:左大臂、左小臂、左手)
    • 切图前可以先用 stable diffusion 生成骨骼图,然后调成半透明与原图对齐,这样方便找到每一部分切割的范围
    • 切图时会需要补画一些内容,例如被挡住的另一侧手脚、身体
    • 注意图层顺序
    • 保存 psd 文件

2.2 使用 AnimeEffects 制作骨骼动画

  • step 0: 语言设置

    按下图修改完后,重启即为中文。

  • step 1: 新建项目

  • step 2: 重新组织图层

    • 在软件的左下角的 side-view 窗口
    • 为整体做一个文件夹,我这里取名为 total (右键可创建文件夹,将所有图层拖进去)
    • 注:目的是让所有图层组成一个文件夹对象
  • step 3: 快速绘制骨骼
    • 首先要选中整体文件夹
    • 在做出工具栏中选择 🦴图标,下面会展开,鼠标移上去会显示是干什么用的。在快速搭建骨骼这一步,主要用到 ➕
    • 注意点:
      • 根节点是胯部,由此向上生长出躯干等,向下生长出腿
      • 肩部其实是三个点,由左侧点长出左臂,由右侧点长出右臂
  • step 4: 绑定对象
    这一步是为了将骨骼和图层绑定起来
    • 按照图中 1、2 可以开始绑定骨骼
    • 在图中,点一下骨骼,再点一下图层名字,会在两者之间出现白色虚线,即完成绑定
    • 一个骨骼也可以绑定多个对象
  • step 5: 快速验证与修改
    • 按下图 1、2 可以开始摆姿势
    • 按住骨骼,即可转动
    • 在过程中,如果发现转动时图层衔接有问题,则回到 🦴图标,下面有工具可以调整节点位置,或者删除
  • step 6: 在关键帧摆动作
    • 下方有一条时间轴,拖动下图中红圈标出的这个小圆点,即可拉到某一帧,在关键帧摆动作即可
    • 可以看到每个对象都在时间轴上有一个横向轨道
    • 例如:对于走路来说,最少需要在三个位置摆好动作
      • 一个是最开始右脚在前(手同理,一开始左手在前)
      • 然后中间是左脚在前
      • 最后恢复到右脚在前(最后一帧可以拷贝第一帧的动作,也就是图中 total 文件夹同一行,第一帧纵向有三个小黑点,右键可拷贝、粘贴)
  • step 7: 播放
    在时间轨道右边,有一组播放按钮,可以勾选最下面的"循环",然后点击▶播放,验证效果。

2.3 导出

  • 由于要用图生图转绘,直接导出 png 序列即可。
  • gif 动画展示

3 转绘并生成动画

3.1 批量转绘成像素风

  • 提示词

    • 正向
      masterpiece,best quality,highres,realistic,photographic,1 girl,solo,full body,Hanfu,simple background,black ponytail, purple long-sleeved shirt, dark brown pants,pure white background,
    • 负向
      ng_deepnegative_v1_75t,(badhandv4:1.2),EasyNegative,(worst quality:2),
  • 批量生成

    在图生图页面中,进入 Batch 子页面

    • input directory 里面是原始帧动画
    • output directory 是转绘后图片的保存位置
  • 玄学?

    将 img2img 中上传第一帧图像(感觉会影响出图的颜色,不知道是错觉,还是确有其事)

  • 其他配置

配置项 取值 备注
重绘幅度 Denoising strength 0.55
插件 control net - one pose 不需要上传图像,默认以原始的每一帧图像提取骨骼姿态

3.2 遇到的问题

  • 问题

    没有输出到指定路径

  • 原因(答案源自AI)

    这是 Stable Diffusion WebUI 的「经典坑」之一:

    Batch 一旦同时打开 ControlNet,生成结果会被 ControlNet 的"预览图"逻辑截胡,导致图片既不会出现在你指定的输出目录,也不会进 Image Browser,而是被"悄悄"塞到了一些临时/缓存目录里,甚至直接内存丢弃。

  • 解决方法

    在 Web UI 界面里进行如下操作:

    Settings → ControlNet → 找到 "Do not append detectmap to output" 把它勾上→ 重启 Web UI

3.3 ★ 结果 ★

  • 通过 ps 将转绘得到的 像素图像序列 转为 gif 用于展示
  • 没有进行任何修复工作,如果追求更好的效果,还应该修复颜色问题以及其他细节

附录1- ps 生成 gif

在 Photoshop 中,如果你已经有一系列按帧分好的 PNG 图片,想把它们合成为一个 GIF,可以按照以下步骤操作:


✅ 步骤一:导入 PNG 帧为图层

  1. 打开 Photoshop。
  2. 点击菜单栏:文件 > 脚本 > 将文件载入堆栈...
  3. 在弹出的窗口中点击 "浏览",选中你所有的 PNG 帧(按顺序命名更方便)。
  4. 勾选 "尝试自动对齐源图像"(可选,如果帧之间有轻微偏移)。
  5. 点击 "确定",所有 PNG 会被作为图层导入。

注:如果 将文件载入堆栈... 不生效,解决方法如下:

创建 ImportFolderAsLayers.jsx 代码文件,在 PS 中 File ▸ Scripts ▸ Browse... 选择该文件。文件内容如下:

javascript 复制代码
#target photoshop
app.displayDialogs = DialogModes.NO;
var folder = Folder.selectDialog('选择包含 PNG 的文件夹');
if (!folder) exit();
var files = folder.getFiles('*.png');
if (files.length == 0) { alert('没找到 PNG'); exit(); }
files.sort();   // 按文件名排序
app.preferences.rulerUnits = Units.PIXELS;
var doc = app.open(files[0]);          // 以第一张图尺寸为画布
for (var i = 1; i < files.length; i++) {
    var tempDoc = app.open(files[i]);
    tempDoc.activeLayer.duplicate(doc, ElementPlacement.PLACEATEND);
    tempDoc.close(SaveOptions.DONOTSAVECHANGES);
}

✅ 步骤二:打开时间轴(Timeline)

  1. 点击菜单栏:窗口 > 时间轴
  2. 在时间轴面板中,点击 "创建帧动画"(如果不是这个模式,点击中间的倒三角切换)。
  3. 然后点击右上角的小菜单(三条横线),选择 "从图层建立帧"

✅ 步骤三:设置每帧的持续时间

  1. 在时间轴中,每一帧对应一个图层。
  2. 点击每帧下方的 时间(如 0 秒),设置你想要的持续时间(比如 0.1 秒)。
  3. 可以按住 Shift 多选帧,统一设置时间。

✅ 步骤四:设置循环方式

  1. 在时间轴左下角,设置循环方式为 "永远""一次",根据你的需求。

✅ 步骤五:导出为 GIF

  1. 点击菜单栏:文件 > 存储为 Web(旧版)...
  2. 在弹出的窗口中:
    • 格式选择 GIF
    • 颜色、抖动、损耗等可根据需要调整
    • 右侧可以预览动画效果
  3. 点击 "存储",选择保存位置,完成!

✅ 小贴士

  • 命名规范 :PNG 文件最好按顺序命名(如 frame001.png, frame002.png),这样导入时顺序不会乱。
  • 帧率换算:比如 0.1 秒/帧 ≈ 10fps,0.04 秒/帧 ≈ 25fps。
  • 太大? 可以在导出时减少颜色数(比如 128 色)或缩小图像尺寸。

如果你愿意,我也可以给你一个简单的脚本或自动化方法(比如用 ImageMagick),但 Photoshop 手动操作是最直观的方式。

附录2 - ps 批量添加背景

可以,Photoshop 的「动作(Action)+ 批处理(Batch)」就能一次性给整个文件夹里的 PNG 都加上白色背景并重新导出。下面给出最常用、最不容易出错的 3 套方案,按"动手难度"从低到高排列,任选其一即可。全部步骤在 Win/macOS 通用,PS 2020 及以上版本测试通过。


方案 1:纯 PS 内置命令(零代码)

  1. 先录动作

    ① 打开任意一张 PNG

    ② 窗口 → 动作 → 新建动作,取名"加白底",点●开始录制

    ③ 图层 → 新建 → 图层...(默认点确定,把新建空白层放在最下方)

    ④ 编辑 → 填充 → 内容选"白色",模式正常,不透明度 100% → 确定

    ⑤ 图层 → 拼合图像(Flatten Image)

    ⑥ 文件 → 导出 → 导出为...

    -- 格式选 PNG-24

    -- 勾选"透明"与否无所谓,因为我们已经拼合了白底

    -- 右侧尺寸、品质确认无误后点"导出",选任意路径(此路径仅作模板,批处理时会被覆盖)

    ⑦ 动作面板点■停止录制

    ⑧ 动作里只留下 3~7 步,把"打开"和"保存"两条删掉(重要!否则批处理会重复打开/保存)

  2. 批处理

    文件 → 自动 → 批处理...

    -- 组:选刚才保存的动作组

    -- 动作:选"加白底"

    -- 源:文件夹 → 选取放 PNG 的文件夹

    -- 勾选"覆盖动作中的打开命令"

    -- 目标:文件夹 → 选一个输出文件夹(别和源文件夹相同)

    -- 文件命名:文档名称 + 扩展名(小写)即可

    -- 全部设好后点"确定",PS 会一张一张自动跑完


方案 2:自带"图像处理器"偷懒版

如果你不想录动作,可以用 PS 自带的"图像处理器"一键转 JPG(白底自动生成),再需要 PNG 的话把后缀改回 .png 即可。

文件 → 脚本 → 图像处理器...

-- 第1步选文件夹

-- 第2步选输出文件夹

-- 第3步存储为 JPEG,品质 10~12,勾选"转换为 sRGB"

-- 右侧"运行动作"里可以选"默认动作"中的"添加白色背景"(没有就自己录一条,同方案1第③④步)

跑完后得到白底 JPG,再批量改扩展名即可。


方案 3:PS 脚本(jsx)一键搞定(适合经常跑)

把下面代码存成 AddWhiteBg.jsx,放进

Win: C:\Program Files\Adobe\Adobe Photoshop 202X\Presets\Scripts

Mac: /Applications/Adobe Photoshop 202X/Presets/Scripts

重启 PS 后,文件 → 脚本 就能看见"AddWhiteBg"。

运行时会弹对话框选"输入/输出"两个文件夹,剩下的全自动。

javascript 复制代码
#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 = new File(outFolder + "/" + fileList[i].name.replace(/.png$/i, '') + ".png");
    var pngOpts = new PNGSaveOptions();
    doc.saveAs(saveFile, pngOpts, true);
    doc.close(SaveOptions.DONOTSAVECHANGES);
}
alert("全部完成!共处理 " + fileList.length + " 张");

常见坑 & 小贴士

  1. 透明像素边缘阴影:如果原图边缘有半透明阴影,加白底后可能会发灰。可先在动作里加一步「图层 → 修边 → 去色黑/白」,再去录制填充白色。
  2. 颜色配置:批处理前先把"编辑 → 颜色设置"里的 RGB 工作空间固定为 sRGB IEC61966-2.1,避免导出时弹颜色转换对话框。
  3. 文件名别用中文空格:虽然 PS 2022+ 已支持,但老版本容易报错,统一用英文+下划线最稳。
  4. 覆盖原图:一定把输出文件夹设成独立路径,防止源文件被覆盖。
  5. 只想改尺寸不改画布:如果 PNG 本身是非透明"裁切"图,要先「图像 → 画布大小」把画布扩到目标尺寸,再填充白色,否则白底会把原图遮住。

一句话总结

"录一个'新建白色底层→拼合→导出PNG'的动作,再用 文件→自动→批处理 选文件夹"即可,全程 3 分钟搞定,后续拖文件夹就能复用。

相关推荐
ding_zhikai8 小时前
SD:在一个 Ubuntu 系统安装 stable diffusion ComfyUI
linux·ubuntu·stable diffusion
ding_zhikai1 天前
stable-diffusion试验2-像素人物帧动画1
stable diffusion
wg26271 天前
Stable Diffusion 安装教程(详细)_stable diffusion安装
stable diffusion
weiwei228441 天前
ControlNet——AI图像生成的“精准操控工具”
stable diffusion·controlnet
RanceGru3 天前
LLM学习笔记5——本地部署ComfyUI和Wan2.1-T2V-1.3B文生视频模型
笔记·学习·stable diffusion·transformer
ding_zhikai4 天前
stable-diffusion试验1-静态人物
stable diffusion
love530love6 天前
【笔记】 Podman Desktop 中部署 Stable Diffusion WebUI (GPU 支持)
人工智能·windows·笔记·python·容器·stable diffusion·podman
迈火8 天前
PuLID_ComfyUI:ComfyUI中的图像生成强化插件
开发语言·人工智能·python·深度学习·计算机视觉·stable diffusion·语音识别
ding_zhikai9 天前
SD:在一个 Ubuntu 系统安装 stable diffusion Web UI
前端·ubuntu·stable diffusion