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 分钟搞定,后续拖文件夹就能复用。

相关推荐
_妲己3 天前
SD的细分功能包括重绘,图像处理、放大等扩散模型应用
人工智能·python·深度学习·机器学习·stable diffusion·comfyui·ai工作流
二院大蛙5 天前
Stable Diffusion 3.5 FP8在农业无人机航拍模拟图中的地形还原精度
stable diffusion· fp8· 农业无人机
或困5 天前
Stable Diffusion 3.5 FP8镜像支持灰度检测与异常报警
stable diffusion·灰度发布·fp8量化
沉默的大羚羊5 天前
Stable Diffusion 3.5 FP8模型可用于旅游宣传海报制作
stable diffusion·文生图·fp8
BOBO爱吃菠萝5 天前
Stable Diffusion 3.5 FP8镜像自动化部署脚本发布
stable diffusion·量化·fp8
九章云极AladdinEdu5 天前
项目分享|SD-Trainer:Stable Diffusion 训练集成工具
stable diffusion·端到端学习·高斯泼溅·3d场景分割·物体级代码本·2d到3d提升
qq_420443275 天前
AMD显卡在windows中通过WSL安装使用stable diffusion(WebUI和ComfyUI)
linux·windows·ubuntu·stable diffusion·wsl
网安入门学习5 天前
2025年AIGC人才需求报告:从招聘数据看行业趋势与技能要求
人工智能·windows·ai作画·stable diffusion·aigc
ai_xiaogui5 天前
Stable Diffusion Web UI 整合包一键安装教程:Windows/Mac零基础部署AI绘画工具
人工智能·ai作画·stable diffusion·一键整合包·ai生图神器·ai生图和动作迁移
人工智能AI技术6 天前
【SD教程】提示词
人工智能·stable diffusion·aigc·ai绘画