Files
Genarrative/docs/AI_CHARACTER_ANIMATION_TECHNICAL_SOLUTION_2026-04-04.md
高物 c49c64896a
Some checks failed
CI / verify (push) Has been cancelled
初始仓库迁移
2026-04-04 23:57:06 +08:00

1195 lines
30 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI 生成角色形象与角色动画功能技术方案2026-04-04
## 1. 文档目的
为当前项目设计一套“AI 生成角色形象 + AI 生成角色动画”的完整功能方案,目标效果参考 PixelMotion 一类产品的核心体验,但接入方式必须适合当前项目现有的 2D 侧视角色素材体系。
- 用户先输入角色设定词与角色参考图,生成主角色形象
- 也支持用户直接上传现成角色素材
- 角色形象确认后,再基于该形象生成动作动画
- 最终产物不是单纯视频,而是**可回收为项目资产的角色图 / 序列帧 / Sprite Sheet / 元数据**
本方案强调两点:
- **必须能在国内稳定使用**
- **必须能接到本项目现有的角色动画、编辑器、本地 API 和运行时结构**
资料调研时间截至:`2026-04-04`
---
## 2. 先说结论
### 推荐路线
第一版推荐采用**“角色形象工坊 + 动作工坊”**的两段式方案:
1. 先用国内可直接接入的图像模型生成或规范化角色主形象
2. 用户确认主形象后,再基于主形象生成动作视频
3. 最后由项目内本地服务把视频转成序列帧、像素风结果和运行时配置
### 首选模型与平台
首选阿里云百炼一体化方案:
- 角色形象生成:`wan2.7-image-pro` / `wan2.7-image`
- 角色动作生成:`wan2.2-animate-move`
- 高质量换角动作:`wan2.2-animate-mix`
- 说话 / 对口型扩展:`wan2.2-s2v`
原因:
- 官方明确支持**中国内地部署**
- `wan2.2-animate-move` 就是“图像 + 参考视频 -> 输出动作视频”
- `wan2.2-animate-mix` 支持“视频中的人替换成图像中的人”
- 异步任务、轮询、计费、输出格式都比较清晰
- 比旧版 `AnimateAnyone` 路线更适合作为新项目主线
### 第一版功能边界
第一版必须支持:
- 文生角色图
- 图生角色图
- 用户直接上传角色素材
- 角色图预览与重新生成
- 角色动画预览与重新生成
- 与当前项目可扮演角色 / 角色型 NPC 的动作槽位匹配
第一版暂不强求:
- 技能动作一次性全部自动补齐
- 实时运行时生成
- 完全免人工筛选
### 不建议的第一版做法
- 不建议第一版直接做“纯本地端到端视频生成主链”
- 不建议把 AI 生成结果直接塞进运行时即时播放
- 不建议追求“模型直接吐出完美像素序列帧”
原因:
- 第一版最难的不是“生成视频”,而是**角色一致性、动作可控性、像素风稳定性、可复用资产化**
- 当前项目更适合把 AI 放在**资产生产链**里,而不是放在每次运行时战斗里实时生成
---
## 3. 目标效果定义
这里把“类似 PixelMotion 的效果”明确成以下两段式能力。
### 3.1 阶段 A角色主形象生成
- 用户输入角色形象设定
- 用户可上传 1 到多张角色参考图
- 也支持直接上传已有角色图作为主素材
- 系统输出与当前游戏角色视角相近的主形象图
- 用户可预览、筛选、重新生成,直到确认主形象
### 3.2 阶段 B角色动作生成
- 基于已确认的主形象生成短动作动画
- 支持上传参考动作视频,或直接选动作模板
- 技能动作不是第一版强制项
- 基础动作槽位不能为空
- 用户可预览、筛选、重新生成,再发布为正式资产
### 3.3 项目内真实产物
- 角色主形象图 `png`
- `mp4/webm` 动作预览视频
- 解帧后的 `png` 序列
- 合并后的 Sprite Sheet
- 动画元数据 `json`
- 角色形象与动画挂接配置
### 3.4 不是第一版目标的内容
- 实时 3D 骨骼动画
- 无人工干预的高质量全自动像素逐帧美术
- 所有技能动作一次性自动补完
- 所有动作都由玩家随手输入文本即时生成
---
## 4. 约束与设计原则
结合当前仓库文档,方案需要遵守下面的原则。
### 4.1 AI 负责内容生成,不负责规则决定
动画生成只负责:
- 动作表现
- 角色演出
- 视觉资产生产
不负责:
- 战斗数值
- 命中逻辑
- 好感 / 背包 / 掉落 / 招募等规则
这与项目现有经验完全一致:**AI 做表达层,本地规则做状态层。**
### 4.2 先做数据建模,再做 UI
功能落地顺序建议严格遵守:
1. 定义角色形象与动画资产模型
2. 定义任务状态机与本地 API
3. 打通生成与后处理管线
4. 接编辑器 UI
5. 最后挂到正式运行时
### 4.3 生成结果必须资产化
生成结果不能只停留在“看一下视频”。
必须能沉淀为:
- 角色主形象资源
- 角色动画资源
- 编辑器可复用配置
- 运行时可直接加载的帧集
### 4.4 像素风不直接交给视频模型终态完成
第一版推荐:
- 先生成相对稳定的高分辨率动作视频
- 再做像素化、色板约束、抖动清理、裁切与对齐
而不是直接要求模型“一步到位产出稳定像素逐帧动画”。
原因很简单:
- 直接出像素视频,最容易出现闪烁、轮廓漂移、武器形变、手脚抖动
- 先生成稳定动作,再统一像素化,更适合游戏资产生产
---
## 5. 国内可用技术路线调研结论
## 5.1 主线推荐:阿里云百炼 Wan 系列
### 角色主形象生成
推荐使用:
- `wan2.7-image-pro`
- `wan2.7-image`
原因:
- 同一平台可同时覆盖图像生成与动作生成
- 适合做“文本设定 + 参考图 -> 角色主形象”
- 适合做“已有角色图 -> 风格统一 / 视角纠偏 / 细节重绘”
第一版建议:
- 主图生成优先用 `wan2.7-image-pro`
- 批量快速试错可降到 `wan2.7-image`
- 用户直接上传素材时,不强制重生,只先走规范化与裁切
### 角色动作生成
#### `wan2.2-animate-move`
适合:
- 输入角色主形象 + 参考动作视频
- 生成基础动作片段
- 构建 `idle / run / attack / hurt / die` 等核心动作库
根据阿里云官方文档:
- 支持中国内地部署
- 输出规格为 `720P`
- 时长范围 `2s < 时长 < 30s`
- 标准模式 `15fps`
- 专业模式 `25fps`
#### `wan2.2-animate-mix`
适合:
- 先选定高质量动作模板视频
- 再把模板里的角色替换成当前主形象角色
- 批量生产多个角色的同类动作
#### `wan2.2-s2v`
适合第二阶段能力:
- 角色对话口型
- NPC 说话演出
- 招募 / 剧情特写
### 为什么把阿里云放在第一选择
- 图像与视频链路都能放在同一国内平台
- 接口能力覆盖“主形象生成 -> 动作生成 -> 说话演出”
- 异步任务、计费、结果下载和国内可用性都比较清晰
- 官方已明确给出 `animate-move / animate-mix` 这类更贴近生产的动作驱动方案
### 成本信息
截至调研时间,阿里云官方价格页显示,中国内地部署下:
- `wan2.2-animate-move` 标准模式约 `0.4 元/秒`
- `wan2.2-animate-move` 专业模式约 `0.6 元/秒`
这意味着:
- 一个 `4 秒` 动作片段大致是 `1.6 元``2.4 元`
- 如果第一版每个角色先做 `6` 个基础动作、每个动作平均 `4 秒`
- 单角色生成成本大致在 `9.6 元``14.4 元`
## 5.2 增强路线:火山方舟 Seedance 2.0
火山官方资料显示,`Seedance 2.0` 已支持多模态参考生视频,并支持:
- 最多 `9` 张图片
- `3` 段视频
- `3` 段音频
- 最长 `15` 秒生成
这条线更适合:
- 多参考图保持角色一致性
- 更复杂镜头或更长动作段
- 后续做剧情演出、过场或多镜头特写
- 在阿里云主链之外补一条高质量增强通道
但对“第一版角色动作资产生产”来说,它更适合作为增强通道,不建议先做成唯一主依赖。
## 5.3 补充路线:腾讯云相关能力
腾讯云相关接口里,`提交图片跳舞任务` 提供了:
- 图片驱动模板动作
- `EnableSegment`
- `EnableBodyJoins`
优点:
- 内置一定的分割与表演模板能力
- 适合快速产出宣传向动效
限制:
- 更偏模板化表演
- 不够贴近当前项目“侧视战斗角色动作资产”的主需求
因此腾讯路线更适合作为:
- 活动页宣传素材
- 社媒传播素材
- 节日彩蛋动作
## 5.4 自托管 / 私有化预研路线
如果后续希望减少云成本、加强可控性或做私有化部署,可以并行预研以下开源链路。
### 角色一致性
`InstantCharacter`
- 腾讯混元官方开源
- 单图角色保持能力强
- 官方说明支持 tuning-free 的角色保持生成
- 2025-05-14 的更新中提到可在 `22GB VRAM` 以下配合 offload 运行
适合用途:
- 给角色生成多参考图
- 统一角色造型
- 补充云模型前的参考素材标准化
### 姿态驱动视频
`MusePose`
- 官方定义为“Pose-Driven Image-to-Video Framework”
- 很适合做“角色图 + 姿态序列 -> 视频”
但要特别注意:
- 代码是 `MIT`
- 官方训练模型说明为**仅限非商业研究用途**
所以它适合:
- 原型验证
- 内部实验
- 技术可行性预研
不适合直接作为正式商业主链。
### 姿态提取
`DWPose` / `MMPose (RTMPose / RTMW)`
优点:
- 国内可获取
- 社区成熟
- 可做全身关键点提取
- `DWPose` 官方仓库提到已支持 character animation 场景
- `MMPose` 官方项目持续维护 `RTMPose``RTMW`
适合用途:
- 动作模板解析
- 参考视频骨架抽取
- 后处理阶段的动作对齐与评分
### 本地视频生成
`HunyuanVideo-1.5`
优点:
- 腾讯官方开源
- 支持 text-to-video 和 image-to-video
- 官方说明最小显存要求可到 `14GB`
适合用途:
- 私有化实验
- 国内 GPU 云机自部署
- 降低部分长尾生成成本
结论:
- **正式产品主链**:优先用国内云 API
- **预研和备份链**:并行建设开源本地链路
---
## 6. 推荐的产品形态
## 6.1 功能名称
建议在编辑器中新增:
- `角色资产工坊`
### 功能入口
- 角色预设编辑器
- NPC 视觉编辑器
- 后续可在角色详情页增加“生成动画”快捷入口
## 6.2 用户流程
### 阶段 A角色主形象
1. 选择角色或新建角色
2. 输入角色形象设定文本
3. 上传角色参考图,或直接上传已有角色素材
4. 系统给出尺寸 / 裁剪 / 构图校验
5. 提交角色图生成或规范化任务
6. 预览结果
7. 支持“重新生成”“保留当前版本”“设为主形象”
### 阶段 B角色动作
1. 基于已确认的主形象进入动作工坊
2. 选择要生成的动作槽位
3. 上传参考动作视频,或直接选择动作模板
4. 提交动作生成任务
5. 预览结果
6. 支持“重新生成”“替换此动作”“发布为正式资产”
### 必须满足的体验要求
- 角色图阶段必须可预览、可重新生成
- 动画阶段必须可预览、可重新生成
- 用户可以只上传素材,不一定强制走文生图
- 用户一旦确认主形象,后续动作生成默认锁定该主形象,不再漂移到其他角色风格
## 6.3 动作生成方式
建议支持三种模式:
### A. 模板动作
用户直接选:
- `idle`
- `run`
- `attack`
- `jump`
- `hurt`
- `die`
系统自动选择对应参考视频模板。
### B. 视频驱动
用户上传参考动作视频,系统抽姿态后再生成角色动作。
### C. 说话 / 对口型
用户上传音频,系统调用 `wan2.2-s2v` 生成说话特写。
### D. 首尾帧约束再生成
对于循环动作或需要收招回正的动作,增加二次再生成模式:
- `idle``run` 这类循环动作,尽量让首尾帧接近
- `attack``cast` 这类动作,尽量让末帧回到可接下一个动作的准备姿态
这部分策略参考了你提供的视频方向,即:
- 指定角色一致性
- 首尾帧控制
- 动作视频生成分段处理
---
## 7. 总体技术架构
```mermaid
flowchart LR
A["编辑器 UI<br/>角色资产工坊"] --> B["本地 API / 任务调度层"]
B --> C["图像模型适配器<br/>文生图 / 图生图"]
B --> D["视频模型适配器<br/>动作生成 / 说话生成"]
C --> E["主形象规范化 Worker<br/>裁切/清底/校验"]
D --> F["动作后处理 Worker<br/>解帧/稳帧/像素化/打包"]
E --> G["主形象资产仓库<br/>public/generated-characters"]
F --> H["动画资产仓库<br/>public/generated-animations"]
G --> I["角色资产元数据<br/>src/data 或 overrides"]
H --> I
I --> J["运行时 CharacterAnimator / GameCanvas"]
```
### 关键原则
- 云模型只负责生成原始视频
- 项目自己掌握后处理和资产组织
- 运行时永远读取项目内标准化资产,不直接依赖第三方视频输出
---
## 8. 推荐生产管线
## 8.1 阶段 A角色主形象生成
输入包括:
- 角色形象设定文本
- 角色参考图 `1~4`
- 或直接上传现成角色素材
- 可选风格限定词
- 可选武器 / 装束 / 发型约束
输出包括:
- `master.png` 主形象图
- `preview/*.png` 候选预览图
- 主形象元数据
### 主形象生成策略
- 文生图时,优先生成与当前项目角色素材视角一致的单人全身图
- 有参考图时,优先做“角色指定 + 风格收敛 + 视角纠偏”
- 用户直接上传素材时,先做校验、裁切、背景清理和尺寸标准化
### 角色视角要求
这里必须贴近当前项目现有角色素材体系,而不是做通用立绘。
建议统一为:
- 2D 侧视动作素材视角
- 单人全身
- 人物基本朝向右侧
- 脚底完整可见
- 武器和关键轮廓完整
- 不做强透视
- 背景尽量干净,方便后续裁切
### 为什么统一朝向右侧
当前项目运行时已经通过镜像处理角色左右朝向,因此主素材应优先只生成一套“面向右侧”的标准版本,避免左右两套素材风格不一致。
## 8.2 主形象输入尺寸与裁剪要求
### 推荐输入规格
- 推荐尺寸:`1024x1536`
- 可接受比例:`2:3``3:4`
- 最低建议:短边不低于 `768`
- 输出统一标准图:`1024x1536`
### 构图要求
- 角色主体占画面高度约 `70% ~ 85%`
- 头顶保留少量留白
- 脚底必须完整露出
- 画面中只保留单角色
- 不允许大面积前景遮挡
### 上传素材校验规则
- 分辨率过低时拒绝直接进入动画阶段
- 头脚被裁切时要求重新上传
- 背景过复杂时提示先走抠像或重生成
- 参考图角度差异过大时提示用户筛选
## 8.3 阶段 B角色动作生成
动作生成输入包括:
- 已确认的 `master.png`
- 动作槽位
- 动作模板或参考动作视频
- 可选首尾帧约束
- 可选循环模式
### 主线路由
- 一般动作:`wan2.2-animate-move`
- 高质量换角动作:`wan2.2-animate-mix`
- 说话动作:`wan2.2-s2v`
### 任务策略
每次动作生成都走异步任务:
1. 创建任务
2. 记录 `jobId`
3. 轮询状态
4. 成功后立即下载临时链接结果
5. 进入本地后处理与资产化
## 8.4 动作生成技巧
结合你给出的参考方向,第一版建议把下面几条固化进生成策略。
### 技巧 1先锁主形象再做动作
动作生成只能使用已确认的主形象,不能每次动作都重新文生角色图。
### 技巧 2动作模板优先于纯文本动作描述
对当前项目来说,稳定性优先于想象空间,因此:
- 基础动作优先走模板
- 个性化动作再开放视频驱动
### 技巧 3首尾帧控制
对于循环动作:
- `idle`
- `run`
要求首尾姿态尽量接近,方便循环。
对于一次性动作:
- `attack`
- `cast`
- `hurt`
- `die`
要求末帧明确,且必要时生成一个可回收的“收招末帧”。
### 技巧 4先出高分辨率动作再转像素资产
不要直接把“像素逐帧稳定性”压给视频模型终态完成,而是:
1. 先出稳定动作视频
2. 再解帧、对齐、像素化、打包
## 8.5 视频后处理与像素化
生成视频拿到后,不直接上线,而是进入后处理流水线。
### 后处理步骤
1. `ffmpeg` 解帧
2. 主体检测与裁切
3. 背景清理 / 抠像
4. 稳帧与重心对齐
5. 去闪烁
6. 像素化降采样
7. 色板收敛
8. 生成 Sprite Sheet
9. 输出动画元数据
### 像素化策略
推荐做法:
1. 先在较高分辨率上清理主体
2. 再降采样到目标像素尺寸
3. 使用最近邻缩放
4. 锁定调色板
5. 对相邻帧做轻量时序去闪烁
### 第一版目标规格建议
- 中间产物:`512x512` 主体裁切或 `720P` 工作视频
- 运行时成品:`96x96``128x128` 或项目当前角色尺寸
## 8.6 资产打包
角色主形象输出:
- `master.png`
- `preview/*.png`
- `visual-manifest.json`
每个动作输出:
- `preview.mp4`
- `frames/*.png`
- `sheet.png`
- `manifest.json`
---
## 9. 推荐的资产数据结构
建议把“角色主形象”和“角色动画”分成两套数据结构。
```ts
export interface GeneratedCharacterVisualAsset {
id: string;
characterId: string;
sourceProvider: 'aliyun-wan' | 'volc-seedance' | 'tencent' | 'local';
sourceMode: 'text-to-image' | 'image-to-image' | 'upload';
promptText?: string;
referenceImagePaths: string[];
masterImagePath: string;
previewImagePaths: string[];
width: number;
height: number;
facing: 'right';
crop: {
top: number;
right: number;
bottom: number;
left: number;
};
locked: boolean;
}
```
```ts
export type BaseAnimationSlot =
| 'idle'
| 'acquire'
| 'attack'
| 'run'
| 'jump'
| 'double_jump'
| 'jump_attack'
| 'dash'
| 'hurt'
| 'die'
| 'climb'
| 'wall_slide';
```
```ts
export interface GeneratedCharacterAnimationAsset {
id: string;
characterId: string;
visualAssetId: string;
action: BaseAnimationSlot | 'cast' | 'talk' | 'skill1' | 'skill2' | 'skill3' | 'skill4';
sourceProvider: 'aliyun-wan' | 'volc-seedance' | 'tencent' | 'local';
sourceMode: 'template' | 'video-drive' | 'audio-drive';
frameCount: number;
fps: number;
loop: boolean;
frameWidth: number;
frameHeight: number;
groundOffsetY: number;
anchorX: number;
anchorY: number;
previewVideoPath: string;
spriteSheetPath: string;
framePaths: string[];
palette?: string[];
tags?: string[];
}
```
### 目录建议
```text
public/generated-characters/{characterId}/visual/
master.png
preview/
visual-manifest.json
public/generated-animations/{characterId}/{action}/
preview.mp4
sheet.png
manifest.json
frames/
```
### 元数据建议写入位置
建议不要把所有生成结果直接写死进主预设文件。
更稳的做法:
- 主形象文件放 `public/generated-characters`
- 资产文件放 `public/generated-animations`
- 角色挂接关系放 `src/data/characterOverrides.json`
- 必要时再扩展一份 `src/data/characterAnimationOverrides.json`
这样更符合当前仓库的 override 体系。
---
## 10. 与当前项目代码结构的接入建议
## 10.1 运行时层
当前项目已经有:
- `src/components/CharacterAnimator.tsx`
- `src/types/characters.ts`
建议改造方式:
### `CharacterAnimator.tsx`
从当前“按文件夹拼单帧路径”的方式,扩成两层:
1. 现有手工动画资源
2. 新增 AI 生成动画资源
运行时优先级建议:
1. 角色 override 的生成动画
2. 角色原始 `animationMap`
3. 默认回退动画
另外建议固定规则:
- 生成主形象默认只保留“面向右”的标准动作资产
- 左向由运行时继续使用镜像处理
- 不单独维护左右两套 AI 素材
### `src/types/characters.ts`
建议给 `Character` 增加可选字段:
```ts
generatedVisualAssetId?: string;
generatedAnimationSetId?: string;
generatedAnimationOverrides?: Partial<Record<AnimationState, string>>;
```
## 10.2 编辑器层
建议新增组件:
- `src/components/CharacterAssetStudio.tsx`
核心职责:
- 角色形象生成 Tab
- 动作生成 Tab
- 主形象预览与锁定
- 动作预览与替换
- 提交生成
- 查看任务状态
- 一键发布到角色动画覆盖配置
### 为什么不要直接塞进现有 `NpcVisualEditor`
因为这会把:
- 外观编辑
- 动作生产
- 资产后处理
- 发布流程
全部混在一起,后期会迅速失控。
更合理的方式是:
- `NpcVisualEditor` 继续管静态形象
- `CharacterAssetStudio` 负责“主形象 + 动画”资产工坊
## 10.3 本地 API 层
当前项目已经有 `scripts/dev-server/localApiPlugins.ts` 这种本地 API 插件机制,应该复用。
建议新增:
- `/api/character-visual/jobs`
- `/api/character-visual/jobs/:id`
- `/api/character-visual/publish`
- `/api/animation/jobs`
- `/api/animation/jobs/:id`
- `/api/animation/templates`
- `/api/animation/publish`
### 建议职责
`POST /api/animation/jobs`
- 创建生成任务
- 写入本地任务记录
- 触发第三方模型请求
`POST /api/character-visual/jobs`
- 创建角色主形象生成任务
- 保存设定词、参考图路径和上传素材信息
- 触发图像模型或规范化流程
`POST /api/character-visual/publish`
- 将选中的主形象设为角色标准主形象
- 写入 visual manifest
- 更新角色 override
`GET /api/animation/jobs/:id`
- 返回任务状态
- 返回进度、错误信息、结果地址
`GET /api/animation/templates`
- 返回动作模板列表
`POST /api/animation/publish`
- 触发后处理
- 生成 Sprite Sheet
- 写入 `manifest`
- 更新角色动画 override
---
## 11. 后端任务状态机设计
建议任务状态机如下:
```text
draft
-> queued
-> submitting
-> provider_pending
-> provider_running
-> downloading
-> post_processing
-> review_ready
-> published
-> failed
```
### 为什么需要 `review_ready`
因为这类资产生成不适合“生成完自动上线”。
必须给编辑器操作者一次人工确认机会,检查:
- 动作是否稳定
- 武器是否丢失
- 轮廓是否漂移
- 是否需要重生一版
---
## 12. 动作集要求与模板设计
这里必须与当前项目可扮演角色 / 角色型 NPC 的动作槽位对齐。
### 12.1 基础动作槽位必须非空
第一版要求以下基础动作槽位全部有内容:
| 动作槽位 | 是否必填 | 建议来源 |
| --- | --- | --- |
| `idle` | 必填 | 模板生成 |
| `acquire` | 必填 | 可由短持物 / 抬手动作生成 |
| `attack` | 必填 | 模板生成 |
| `run` | 必填 | 模板生成 |
| `jump` | 必填 | 模板生成 |
| `double_jump` | 必填 | 可由跳跃二次变体生成 |
| `jump_attack` | 必填 | 跳跃攻击模板 |
| `dash` | 必填 | 冲刺模板 |
| `hurt` | 必填 | 受击模板 |
| `die` | 必填 | 倒地 / 消散模板 |
| `climb` | 必填 | 攀爬模板 |
| `wall_slide` | 必填 | 可由攀爬或停滞帧变体生成 |
这里“不能为空”指的是:
- 每个基础动作槽位必须能挂到一套可播放资产
- 不允许在运行时出现 `null` 或空映射
- 个别低优先动作允许由近似动作衍生,但槽位本身必须有有效资源
### 12.2 技能动作不是第一版强制项
第一版可选:
- `skill1`
- `skill1_jump`
- `skill1_bullet`
- `skill1_bullet_fx`
- `skill2`
- `skill2_jump`
- `skill3`
- `skill3_jump`
- `skill3_bullet`
- `skill3_bullet_fx`
- `skill4`
策略建议:
- 基础动作先全量补齐
- 技能动作后续按角色职业差异再补
- 投射物与特效优先继续复用当前项目已有素材与技能特效系统
### 12.3 第一阶段优先模板
先优先做这些高价值模板:
| 模板 | 推荐时长 | 是否循环 | 说明 |
| --- | --- | --- | --- |
| `idle` | 2s-4s | 是 | 微动作、呼吸 |
| `run` | 2s-3s | 是 | 固定侧向 |
| `attack` | 2s-4s | 否 | 近战基础攻击 |
| `jump` | 1s-2s | 否 | 起跳与空中姿态 |
| `hurt` | 1s-2s | 否 | 受击短动作 |
| `die` | 2s-4s | 否 | 倒下或消散 |
### 12.4 不建议第一阶段就重投入的动作
- 大幅转身
- 超复杂武器连击
- 多角色交互动作
- 高速镜头切换
- 技能专属长表演
因为这些动作对一致性、模板匹配和后处理都更不友好。
---
## 13. 质量门槛与验收指标
## 13.1 视觉验收
- 主形象与当前项目角色素材视角一致,属于侧视动作素材而不是正面立绘
- 主形象默认朝向右侧,便于运行时镜像
- 角色身份一致,不出现明显换脸换装
- 武器 / 头饰 / 发型不随机消失
- 帧间轮廓稳定,无明显闪烁
- 脚底位置稳定,不出现贴地漂浮
- 像素化后轮廓仍然清楚
## 13.2 资产验收
- 主形象可以预览、重新生成、锁定
- 能成功生成 `sheet.png + manifest.json`
- `CharacterAnimator` 能正常播放
- `groundOffsetY` 可配置
- 动作帧数和 fps 可配置
## 13.3 性能验收
- 编辑器任务提交不阻塞主线程
- 后处理可以异步完成
- 运行时只读本地标准化资源,不发起第三方请求
---
## 14. 风险与对应策略
## 14.1 风险:角色一致性不稳
应对:
- 输入图先标准化
- 同一角色固定一组主参考图
- 为同一角色缓存已验证过的参考素材
- 必要时先用 `InstantCharacter` 补一组一致性参考图
## 14.2 风险:像素风闪烁严重
应对:
- 先高分辨率清理,再统一像素化
- 引入调色板锁定
- 对轮廓做时序平滑
- 允许编辑器端手动剔除异常帧
## 14.3 风险:云模型成本扩张
应对:
- 第一版限制动作模板数量
- 默认走 `wan-std`
- 只有“确认发布”才保留产物
- 对同样输入做结果缓存
## 14.4 风险:供应商变更或配额受限
应对:
- Provider Adapter 抽象化
- 阿里云为主,火山为增强,开源为备份
- 不把第三方返回结构直接耦合到前端
## 14.5 风险:合规问题
应对:
- 加入上传素材声明
- 仅允许项目内资产或已授权素材进入生产链
- 保留任务日志、来源、发布时间和操作人
---
## 15. 成本与资源预估
## 15.1 第一阶段推荐配置
- 先支持 `6` 个基础动作
- 每次动作生成先采用 `4 秒` 左右模板
- 默认使用阿里云 `wan2.2-animate-move` 标准模式
### 估算
按官方价格 `0.4 元/秒` 粗估:
- 单动作 `4 秒`:约 `1.6 元`
- 单角色 `6` 动作:约 `9.6 元`
- `20` 个角色:约 `192 元`
这还不含失败重试,但对编辑器工具链原型阶段是可控的。
## 15.2 本地算力需求
如果只走云生成:
- 本地只需要承担解帧、裁切、像素化、打包
- 普通开发机即可承担
如果要并行预研自托管链:
- `HunyuanVideo-1.5` 官方说明最低显存约 `14GB`
- `InstantCharacter` 的 offload 路线可在 `22GB` 以下显存运行
所以:
- 正式主链先不要求团队成员都配高显存 GPU
- 私有化实验再单独准备 Linux + CUDA 机器
---
## 16. 实施计划
## Phase 1最小可用版本推荐 1 周)
目标:
- 跑通“角色设定 / 上传素材 -> 主形象确认 -> 动作模板 -> 预览视频 -> 解帧 -> Sprite Sheet”
内容:
- 接角色主形象生成 / 规范化 API
- 接阿里云 `wan2.2-animate-move`
- 增加角色主形象任务创建与查询 API
- 增加任务创建与查询 API
- 增加本地后处理脚本
- 新增 `CharacterAssetStudio` 原型页
## Phase 2发布与运行时接入推荐 1 周)
目标:
- 让主形象与生成结果可以正式替换角色资产
内容:
- 生成 `visual-manifest.json`
- 生成 `manifest.json`
- 扩展 `CharacterAnimator.tsx`
- 增加主形象 override
- 增加角色动画 override
- 加预览与发布流程
## Phase 3说话与剧情演出推荐 1 周)
目标:
- 支持 NPC / 角色说话表演
内容:
- 接入 `wan2.2-s2v`
- 增加口型特写产线
- 适配聊天 / 招募 / 剧情特写场景
## Phase 4增强与备份链按需
内容:
- 接火山 `Seedance 2.0`
- 预研 `InstantCharacter + DWPose + MusePose + HunyuanVideo`
- 做多供应商路由与失败兜底
---
## 17. 最终推荐方案
如果只保留一句话,推荐如下:
**用阿里云图像 + 视频能力搭一条“先锁定角色主形象,再生成基础动作”的两段式生产链:角色主形象统一成贴近当前游戏侧视素材的标准图,动作阶段再按现有可扮演角色动作槽位生成并补齐基础动作,最后由项目本地后处理转成像素化序列帧和 Sprite Sheet接入现有 `CharacterAnimator` 与 override 体系。**
这条路线最符合当前项目的三个现实条件:
- 项目是像素演出驱动,不是纯视频产品
- 项目强调 AI 与本地规则分层
- 项目需要的是“可维护的角色资产生产链”,不是一次性的炫技 Demo
---
## 18. 资料来源
以下资料均为本次方案撰写时实际查阅的主要来源:
- 阿里云百炼视频生成总览:
[https://help.aliyun.com/zh/model-studio/use-video-generation/](https://help.aliyun.com/zh/model-studio/use-video-generation/)
- 阿里云图像生成与编辑 API
[https://help.aliyun.com/zh/model-studio/wan-image-generation-and-editing-api-reference](https://help.aliyun.com/zh/model-studio/wan-image-generation-and-editing-api-reference)
- 阿里云 `wan2.2-animate-move` API
[https://help.aliyun.com/zh/model-studio/wan-animate-move-api](https://help.aliyun.com/zh/model-studio/wan-animate-move-api)
- 阿里云视频生成用户指南(含图生视频与首尾帧相关能力入口):
[https://help.aliyun.com/zh/model-studio/user-guide/video-generation](https://help.aliyun.com/zh/model-studio/user-guide/video-generation)
- 阿里云模型价格页:
[https://help.aliyun.com/document_detail/2840918.html](https://help.aliyun.com/document_detail/2840918.html)
- 火山方舟 Seedance 2.0 资料:
[https://developer.volcengine.com/articles/7606009619928449070](https://developer.volcengine.com/articles/7606009619928449070)
- 腾讯云混元图片跳舞任务:
[https://cloud.tencent.com/document/api/1616/107784](https://cloud.tencent.com/document/api/1616/107784)
- Tencent Hunyuan `InstantCharacter`
[https://github.com/Tencent-Hunyuan/InstantCharacter](https://github.com/Tencent-Hunyuan/InstantCharacter)
- `MusePose`
[https://github.com/TMElyralab/MusePose](https://github.com/TMElyralab/MusePose)
- `DWPose`
[https://github.com/IDEA-Research/DWPose](https://github.com/IDEA-Research/DWPose)
- `MMPose`
[https://github.com/open-mmlab/mmpose](https://github.com/open-mmlab/mmpose)
- `HunyuanVideo-1.5`
[https://github.com/Tencent-Hunyuan/HunyuanVideo-1.5](https://github.com/Tencent-Hunyuan/HunyuanVideo-1.5)
- 用户提供的动作生成技巧参考:
[https://www.bilibili.com/video/BV1LpiYBVE8V/](https://www.bilibili.com/video/BV1LpiYBVE8V/)