角色拆部件与素材生产路线调研
角色拆部件与素材生产路线调研
本文档整理「单图角色拆部件」当前的开源实现方案,并据此说明本项目(Meowcute / pixelforge)
现阶段选择的生产路线与边界。重要声明:
https://github.com/fs7744/meowcute仅是一次个人实验,用于验证「本地模型能不能低成本做出
能用的游戏素材」,不具备任何商业变现价值,也不会用于任何商业用途。它存在的意义,是让后来者
能以更低的试错成本,踩在开源前辈的肩膀上做自己的尝试。
0. 写在前面:致谢
整条「把一张静态二次元立绘变成可动、可进游戏的角色资产」的技术链路,没有任何一步是凭空来的。
今天我们能在一台普通电脑上,用本地模型把一张图拆成几十个语义图层、甚至自动猜出骨架、再导出成游戏引擎
能吃的格式,是因为前面有一长串开源前辈把最难、最枯燥、最烧算力的部分先啃下来了:
- Lvmin Zhang(张吕敏) 的 LayerDiffuse,把「透明图层扩散」这件事变成了现实,See-through 的图层
生成就是站在它肩上; - Marigold / SAM / Grounding DINO / LaMa / AnimeInstanceSegmentation 这些基础模型与工具,分别解决了
深度估计、分割、检测、修复里的一个个硬骨头; - shitagaki-lab(See-through) 把这些零件拼成了「单图 → 分层 PSD」的完整流水线;
- MangoLion(Stretchy Studio) 进一步尝试把分层结果自动绑骨、变形、导出 Spine,把「AI 拆图」往
「真能动起来」又推了一步。
没有这些人的免费公开,后来者根本不可能用这么低的成本去折腾「游戏素材自动化」这种好玩但非刚需的事情。
本文档及 Meowcute 项目,都是站在上述工作的肩膀上,做的一次轻量实验。再次向所有开源作者致谢。
1. 现状:See-through 的单图部件分解方案
仓库:
https://github.com/shitagaki-lab/see-through
论文:See-through: Single-image Layer Decomposition for Anime Characters(ACM SIGGRAPH 2026 Conference Papers)
1.1 它解决什么问题
把一张静态二次元插画,自动拆成多个语义独立、且已被完整修复(inpaint)的图层,
并推断出图层之间的绘制顺序(drawing order)。产出的不是一堆粗糙的抠图块,而是
「可以直接拿去当 2.5D 模型用」的分层资产——最多可拆到 23 个语义层(头发、脸、眼睛、衣物、
配饰等)。
1.2 核心实现思路(三段式)
整个方案是多个扩散 / 分割模型的组合拳,而不是单个端到端网络:
| 模块 | 模型 | 作用 | 来源 |
|---|---|---|---|
| 透明图层生成 | LayerDiff 3D(基于 SDXL 的 LayerDiffuse 改造) | 生成带透明度的独立图层 | layerdifforg/seethroughv0.0.2_layerdiff3d |
| 伪深度估计 | Marigold Depth(针对 anime 微调) | 给每个图层估计深度,用于判定前后遮挡 | 24yearsold/seethroughv0.0.1_marigold |
| 语义身体解析 | SAM Body Parsing(detectron2 / SAM2 / mmdet 三档) | 把角色按身体部位做语义分割打标 | 24yearsold/l2p_sam_iter2 |
要点:
- LayerDiff 3D 负责「把一张图里的某个部件,补全成一张独立、透明、背景干净的图层」——
这是整条链路里最吃算力的部分,也是 LayerDiffuse 思路的直接延伸。 - Marigold 微调版 提供伪深度,用来给 23 个图层排序(谁盖谁),形成可操纵的 2.5D 层次。
- SAM 身体解析 提供 19~23 个部位的语义标签,作为分层的语义依据。
- 论文提到头身是两个连续阶段分别拆的,所以整体耗时比论文原模型更长(这是已知代价)。
1.3 主流程与产物

核心脚本是 inference/scripts/inference_psd.py:
# 单张图 → 分层 PSD
python inference/scripts/inference_psd.py --srcp assets/test_image.png --save_to_psd
# 整个文件夹批量处理
python inference/scripts/inference_psd.py --srcp path/to/image_folder/ --save_to_psd
产物默认落在 workspace/layerdiff_output/,包含:
- 一张分层
.psd(每个语义部件是独立、已修复的图层); - 中间的深度图与分割掩码。
当前最新模型为 V3,即 23 个身体部位标签训练版。
1.4 拆完之后的二次分层
PSD 出来后,还可用 inference/scripts/heuristic_partseg.py 做启发式再拆分:
# 按深度进一步切分
python inference/scripts/heuristic_partseg.py seg_wdepth \
--srcp workspace/.../PV_0047_A0020.psd --target_tags handwear
# 左右拆分(处理左右手/左右发等对称件)
python inference/scripts/heuristic_partseg.py seg_wlr \
--srcp workspace/.../PV_0047_A0020_wdepth.psd --target_tags handwear-1
这一步对「想做 Live2D 式分层」的人很关键——自动语义分层通常只保证语义正确,
而 Live2D 更讲究按变形行为切层,所以往往要再手工/启发式细分一次。
1.5 它的边界(作者自述)
See-through 自己在 README 里明确写了「Is this Image-to-Live2D? We don't think so — not yet」:
- 更细的艺术化分解缺失——自动分层优先语义正确,而 Live2D 艺术家会按「怎么动才自然」来切层;
- 绑定(Rigging)未覆盖——分层之后还需要变形网格、物理参数、动作曲线,这一步被作者称为
「最关键的、也最耗人工的一步」,本项目完全不做; - 艺术意图无法自动还原——专业 Live2D 是分层、修复、绑定整体设计的产物。
作者的定位是:把最枯燥的「人工抠图 + 遮挡修复」替掉,给 Live2D 创作者一个可用的起点。
对动漫人物的拆部件效果:从公开 demo 与论文看,确实相当不错——语义分层干净、遮挡修复完整,
是现阶段单图拆部件里最可用的一档。
2. 进阶实验:Stretchy Studio 的自动骨骼绑定
仓库:
https://github.com/MangoLion/stretchyStudio
协议:MIT
2.1 定位
Stretchy Studio 是一个 FOSS 2D 动画工具,目标是「把静态插画变成可网格变形的角色」,
并把自己定位为 See-through 的动画引擎——专门补上 See-through 没做的「绑定 + 动画」环节。
2.2 做法:DWPose 自动骨架 + 网格变形
- Magic Auto-Rigging:用 DWPose(AI 姿态检测) 自动给角色生成骨架;也提供「启发式」方法秒出骨架;
- Organic "Stretchy" Motion:不靠旋转图层,而是直接变形网格顶点做有机运动
(呼吸、飘发、Live2D 式微表情); - 附带眼睛自动裁剪、四肢顶点蒙皮弯曲、Blender 式形变键(shape keys)、音轨同步等。
2.3 导出能力
- 支持 Spine 4.0 导出(Spine JSON),可直接进游戏引擎与专业管线;
- 原生读取 See-through 的分层 PSD,自动处理遮挡、深度分层与网格生成。
2.4 现实评估:效果还不够好
从项目提交历史看,作者自己也在反复试错(例如「removed puppet pins, it sucked」、
不断尝试对接 Live2D warp 参数)。对普通用户、非美术背景而言:
- 自动绑骨(DWPose)对非常规姿势、复杂遮挡、非标准比例的角色,骨架常对不准;
- 网格变形需要手动调密度与权重,仍然有学习曲线;
- 整体「开箱即动」的成品率,离「稳定可用」还有距离。
结论:它是非常有想象力、也很有价值的实验,但就当前版本,作为「非专业人士零成本产出稳定动画」
的方案,效果还谈不上好。
3. 现实约束:为什么先暂停骨骼路线
综合 1、2 两节的现状,本项目当前主动暂停「骨骼 / 网格动画」路线,原因明确:
- 骨骼动画本人尚未学习——不会手动调权重、改蒙皮、做动作曲线;
- 手动调整与制作动画的成本很高——即使自动绑骨,修正与精修仍要专业知识和大量时间;
- 自动绑定效果暂不达标——见 2.4,开箱即用的稳定率不足;
- 在「先验证端到端可行性」的阶段,骨骼路线属于高成本、高风险、长反馈周期,不符合「先跑通最小闭环」的优先级。
暂停 ≠ 否定。Stretchy Studio 这类方案是明确的技术演进方向,待「序列帧闭环」跑通、
且本人补齐骨骼动画知识后,可再回头接入。
4. 当前路线:本地模型 → 视频 → 游戏素材 → 序列帧 → 简单游戏 Demo
既然骨骼路线先放一放,现阶段的策略是先验证那条「看似最简单」的路能不能走通,
毕竟它的反馈周期最短、对专业知识要求最低。
4.1 路线全景
文字 / 参考图
│
▼
[本地模型生成图] ── Meowcute 文生图 / 图生图(Qwen-Image-2.1 底座,本地推理)
│
▼
[本地模型生成视频] ── 图生视频底座(HunyuanVideo-1.5 / Wan2.2-TI2V-5B,本地推理)
│
▼
[视频转游戏素材] ── 抽帧 / 抠图 / 去白边,得到透明底序列帧(见《本地视频转序列帧精灵图-科普》)
│
▼
[简单序列帧精灵图] ── 拼成 sprite sheet + 帧描述,进引擎
│
▼
[简单游戏 Demo] ── 用序列帧驱动一个可验证的小 demo(如角色 idle / walk 循环)
4.2 每一步与 Meowcute 的关系
- 生成图 / 生成视频:正是 Meowcute 的核心能力——本地模型 + 确定性后处理,全程离线、不按量计费;
- 视频转序列帧:对应
docs/本地视频转序列帧精灵图-科普.md、docs/Meowcute 视频生成序列帧方案分析.md
里已梳理的抽帧、抠图、去白边、拼精灵图流程; - 游戏 Demo:仅作为「端到端可行性验证」,不追求美术质量,只验证「本地产出的素材真能进引擎动起来」。
4.3 为什么这条「看似最简单」的路值得先验证
- 反馈最短:从文字到能动的小人,闭环在一台本地机器内完成,不依赖任何外部服务;
- 知识门槛最低:不需要先学会骨骼动画、蒙皮、动作曲线;
- 风险最可控:任一步失败都能独立定位,不会像骨骼路线那样「要么全成要么全废」;
- 价值可累积:即使 Demo 很粗糙,生成的序列帧、精灵图、后处理脚本,都是后续接骨骼方案时的现成资产。
5. 风险与下一步
| 风险 | 说明 | 缓解 |
|---|---|---|
| 视频底座运动幅度不可控 | 图生视频的循环、抖动可能影响序列帧质量 | 先用 idle 类小动作验证,后处理做循环对齐 |
| 抠图白边 / 透明底不准 | 历史已踩坑,需用混合比例去白边 | 沿用已验证的 ` |
| 序列帧连贯性不足 | 抽帧间隔、运动模糊导致跳帧 | 控制帧率、做帧间对齐与裁剪 |
| 骨骼路线未来接入成本 | 当前资产未必适配 Spine | 先产出标准精灵图,格式中立,后续可重排 |
下一步优先级:
- 先把「图 → 视频 → 序列帧」的单图闭环在 Meowcute 内跑通;
- 产出一个最小游戏 Demo(序列帧驱动)验证可行性;
- (条件成熟后)再评估接 Stretchy Studio / Spine 的骨骼方案。
6. 开源致谢清单(再次)
- LayerDiffuse — Lvmin Zhang(张吕敏):透明图层扩散的奠基,See-through 的核心底座。
- Marigold — 基于扩散的单目深度估计,本项目用作 anime 伪深度。
- Segment Anything (SAM) / SAM2 — 分割基础模型,身体部位语义分割的关键。
- Grounding DINO — 开放集检测,辅助定位。
- LaMa — 大掩码修复,遮挡区域补全。
- AnimeInstanceSegmentation — 二次元专属实例分割。
- shitagaki-lab / See-through — 把上述零件拼成「单图 → 23 层 PSD」的完整流水线。
- MangoLion / Stretchy Studio (MIT) — 把分层结果往「自动绑骨 + 网格变形 + Spine 导出」推进的实验。
没有上述每一份公开的代码与权重,就没有后来者低成本尝试「游戏素材自动化」的可能。
Meowcute 仅是站在这些肩膀上的一次轻量实验,仅此而已。

浙公网安备 33010602011771号