147 lines
5.3 KiB
Markdown
147 lines
5.3 KiB
Markdown
# 产品需求
|
|
|
|
## 1. 产品目标
|
|
|
|
DateToSpine 帮助用户批量处理仅保留运行时导出文件、但缺失原始 `.spine` 工程的资源。软件需要在转换前验证资源并显示可交互动画预览,用户确认后才调用本地 Spine Editor 生成可编辑工程。
|
|
|
|
产品目标是“尽可能恢复可编辑工程”,不是承诺字节级还原原工程。运行时导出时已经丢失的数据无法凭空恢复。
|
|
|
|
## 2. 用户前提
|
|
|
|
- 用户对待处理资源拥有合法使用和转换权限。
|
|
- 用户电脑已安装并激活 Spine Editor。
|
|
- 需要生成 `.spine` 时,本地已有与资源主/次版本相匹配的 Editor 版本。
|
|
- 未安装 Editor 时,软件仍可扫描、校验、配对和预览,但不能生成 `.spine`。
|
|
|
|
## 3. 支持范围
|
|
|
|
### 3.1 骨骼数据
|
|
|
|
| 格式 | 支持状态 | 说明 |
|
|
|---|---|---|
|
|
| `.json` | 正式支持 | 必须通过 Spine schema 识别,不能把普通 JSON 当作骨骼数据 |
|
|
| `.skel` | 正式支持 | 按导出版本选择匹配 Runtime 和 Editor |
|
|
| `.skel.bytes` | 候选兼容 | 通过内容识别,扩展名支持在技术原型后决定 |
|
|
|
|
### 3.2 Spine 版本
|
|
|
|
| 版本 | 支持级别 |
|
|
|---|---|
|
|
| 3.8.20+ | 正式支持 |
|
|
| 3.8.0—3.8.19 | 尽力识别,不作正式保证 |
|
|
| 4.0.x | 正式支持 |
|
|
| 4.1.x | 正式支持 |
|
|
| 4.2.x | 正式支持 |
|
|
| 4.3.x | 正式支持 |
|
|
| 3.7.x 及更早 | 不支持 |
|
|
|
|
### 3.3 Atlas 与纹理页
|
|
|
|
- `.atlas`、`.atlas.txt`
|
|
- 单页和多页 Atlas
|
|
- PNG
|
|
- JPG/JPEG
|
|
- WebP
|
|
- 同一 Atlas 中不同扩展名的多页纹理
|
|
- Straight Alpha 和 Premultiplied Alpha
|
|
|
|
其他图片格式通过可扩展解码接口保留未来支持空间,但不属于首版承诺。
|
|
|
|
## 4. 主用户流程
|
|
|
|
主界面只暴露四个动作:
|
|
|
|
1. 用户把完整导出资源或资源文件夹拖入窗口。
|
|
2. 软件自动配对并显示预览;有多套资源时用顶部下拉框切换。
|
|
3. 用户用底部下拉框切换动画。
|
|
4. 用户点击“一键转换为 .spine”并选择保存位置。
|
|
|
|
版本检测、Atlas 配对、图片处理、Editor 验证和结果校验均在后台自动完成。只有自动找不到 Spine Editor 时,才要求用户指定 Spine 应用或可执行文件路径。普通流程不提供 Editor 管理页或技术参数面板。
|
|
|
|
## 5. 功能需求
|
|
|
|
### 5.1 扫描与配对
|
|
|
|
- 支持文件、文件夹和批量拖放。
|
|
- 支持递归扫描,允许配置最大深度。
|
|
- 根据 Atlas 中声明的页面名查找纹理,不能只依赖同名前缀。
|
|
- 根据附件 path、文件名、目录距离和名称前缀对数据与 Atlas 评分。
|
|
- 自动结果必须显示置信度。
|
|
- 歧义配对必须由用户确认,不能静默选择。
|
|
- 单个失败组不能终止整个批次。
|
|
|
|
### 5.2 预览
|
|
|
|
- 默认循环播放,支持动画切换。
|
|
- 画布自动适应窗口。
|
|
- 支持 Mesh、权重、Clipping、双颜色 Tint 和四种混合模式。
|
|
- 显示缺失纹理、版本错误和 Runtime 加载错误。
|
|
|
|
### 5.3 Editor 管理
|
|
|
|
- 自动查找常见安装位置。
|
|
- 自动查找失败时才显示路径选择器,支持自定义应用、可执行文件或安装目录。
|
|
- 支持一个安装入口对应多个本地可用版本。
|
|
- 转换前执行实际版本探测。
|
|
- 不读取、存储或传输 Spine 激活码。
|
|
|
|
### 5.4 批量转换
|
|
|
|
- 默认串行调用 Spine Editor,扫描和静态校验可并行。
|
|
- 支持停止等待中的任务和取消当前子进程。
|
|
- 支持跳过、自动重命名和覆盖策略。
|
|
- 默认不覆盖输入文件。
|
|
- 正式结果验证通过前只写入任务临时目录。
|
|
- 每组资源产生可读日志和机器可读报告。
|
|
|
|
## 6. 恢复能力边界
|
|
|
|
通常可恢复:骨骼、Slots、Skins、Attachments、约束、动画、Deform、事件和绘制顺序。
|
|
|
|
如果源文件导出时未启用 Nonessential data,可能永久缺失:
|
|
|
|
- 骨骼颜色和图标
|
|
- Mesh 手工边
|
|
- 编辑器辅助信息
|
|
- 部分附件原始尺寸
|
|
- 原工程图片和音频目录设置
|
|
- 编辑器视图与工作区状态
|
|
|
|
报告必须区分:
|
|
|
|
- 完整恢复
|
|
- 主体恢复但缺少 Nonessential data
|
|
- 工程生成成功但图片关联需要注意
|
|
- 转换失败
|
|
|
|
## 7. 非功能需求
|
|
|
|
- macOS 和 Windows 功能一致。
|
|
- 运行时完全离线,不依赖 CDN 或在线服务。
|
|
- 支持中文、空格、Unicode 和较长路径。
|
|
- 所有外部进程使用参数数组启动,不能拼接 shell 命令。
|
|
- 崩溃或取消不能留下半成品覆盖正式结果。
|
|
- 日志不能包含用户授权信息或不必要的绝对路径。
|
|
- 普通操作错误必须以用户可理解的语言呈现。
|
|
|
|
## 8. 首版不包含
|
|
|
|
- Spine 3.7 及更早版本。
|
|
- 绕过 Spine Editor 授权或下载 Editor。
|
|
- 自行生成或逆向写入 `.spine` 格式。
|
|
- 动画编辑功能。
|
|
- 云端转换、资源上传或账号系统。
|
|
- 将官方示例资产打包给最终用户。
|
|
|
|
## 9. 产品验收标准
|
|
|
|
- 五个目标版本均可完成 JSON、SKEL 的预览和转换测试。
|
|
- 断网环境可完成已准备版本的完整流程。
|
|
- PNG、JPG/JPEG、WebP 页面可预览。
|
|
- 纹理只允许使用匹配版本 Spine Editor 的官方 Texture Unpacker 解包。
|
|
- 生成物能被匹配版本 Editor 重新读取。
|
|
- 骨骼、Skin、附件、动画和事件数量通过语义核对。
|
|
- 原始输入不被修改。
|
|
- 单任务失败不影响批次其他任务。
|
|
- 最终安装包不含官方测试资源和 Spine Editor。
|