Randombirdnoise/Spine_Magic_Builder

GitHub: Randombirdnoise/Spine_Magic_Builder

该工具用于从文件名和结构损坏的解包数据中自动识别、匹配和重建规范化的 Spine 骨骼动画资源集。

Stars: 0 | Forks: 0

# Spine Magic Builder Spine Magic Builder 是一个优先适配 Windows 的重构工具包,专为处理分散或命名不当的 Spine 资源而设计。它在字节级别扫描目录树,识别骨骼和图集,匹配纹理页面,生成规范化的 Spine 资源集,并为有歧义的匹配提供可视化的候选工作流。 该项目专为文件名和扩展名不可信的解包资源树而设计。它支持 JSON 和二进制骨骼文件的发现、内嵌或独立的图集数据、PNG/JPEG/WebP 纹理尺寸检测、多页图集以及可选的同尺寸候选暂存功能。 ## 快速开始 ### 环境要求 - Windows 10 或 11 - Python 3.10 或更高版本,且在 `PATH` 中可通过 `py` 或 `python` 调用 - 可选:[SpineViewer](https://github.com/ww-rm/SpineViewer)(用于视觉验证) - 可选的 GUI 增强功能:Pillow 和 tkinterdnd2 克隆或下载本仓库,然后可选择安装 GUI 扩展依赖: ``` py -3 -m pip install -r requirements-optional.txt ``` 核心构建器仅使用 Python 标准库。Pillow 提供了更广泛的图像尺寸和缩略图支持;tkinterdnd2 为 GUI 增加了拖放功能。 ### 推荐工作流 1. 将源文件夹拖放到 `Run_SpineMagic_Builder_Candidate_Stage_v3.bat` 上。 2. 等待构建器创建一个相邻的 `Spine_Built-*` 目录。 3. 打开 `Run_SpineCandidatePicker_GUI.bat`。 4. 浏览到包含 `_candidates` 文件夹的构建目录。 5. 选择一个页面和候选项,然后按 **Activate** 或数字键。 6. 出现提示时,在 GUI 中指定 `SpineViewer.exe` 的路径并进行可视化验证。 7. 将所选内容标记为正确、将其加入黑名单或跳过该页面。 GUI 会将其查看器路径和决定记录在以下文件中: ``` %LOCALAPPDATA%\SpineMagicBuilder\spine_candidate_picker_state.json ``` 设置 `SPINE_MAGIC_BUILDER_STATE` 可使用不同的状态文件位置。设置 `SPINE_VIEWER_EXE` 可定义初始的查看器路径。 ## 包含的程序 | 文件 | 用途 | | --- | --- | | `spine_magic_builder.py` | 核心递归扫描器和规范化资源集构建器。 | | `spine_magic_builder_candidate_materializer_v3.py` | 带有候选暂存和单候选项实体化功能的扩展构建器。 | | `spine_candidate_picker_gui.py` | 用于审查、激活和记录候选选择的 Tk GUI。 | | `Run_SpineMagic_Builder.bat` | 保守的复制模式构建器预设。 | | `Run_SpineMagic_Builder_Candidate_Stage_v3.bat` | 针对大型解包资源树优化的候选暂存预设。 | | `Run_SpineCandidatePicker_GUI.bat` | GUI 启动器;接受可选的起始文件夹。 | ## 输出内容的组织方式 除非在命令行中明确提供了 `--move`,否则源文件将保留在原处。包含的启动脚本从不使用 `--move`。 对于选定的源文件夹,输出内容将被写入到其旁边生成的容器中,类似于: ``` ParentFolder\ ├── SourceFolder\ └── Spine_Built-Context_Name\ └── SourceFolder\ └── normalized_spine_set\ ├── normalized_spine_set.skel (or .json) ├── normalized_spine_set.atlas ├── texture pages └── _candidates\ ``` 在放置新候选项之前,候选激活操作会将先前处于活动状态的页面保留在 `_materialized_history` 中。 ## 启动脚本详情 ### 标准构建器 `Run_SpineMagic_Builder.bat` 使用复制模式和适中的图集匹配阈值。将文件夹拖放到其上或调用: ``` Run_SpineMagic_Builder.bat "D:\ExtractedGame\assets" ``` ### 候选暂存构建器 `Run_SpineMagic_Builder_Candidate_Stage_v3.bat` 将直接子文件夹隔离为独立实体,对模糊的同尺寸纹理进行排名,并暂存所有候选项。它请求使用符号链接以避免重复庞大的纹理集合;在不可用符号链接的系统上,脚本会尝试硬链接,最后退回到复制方式。 当无限暂存产生过多候选项时,可直接从 Python 中使用 `--stage-dim-candidates-limit N`。 ### 候选项选择器 GUI 不带参数运行并浏览到某个文件夹,或提供一个起始路径: ``` Run_SpineCandidatePicker_GUI.bat "D:\ExtractedGame\Spine_Built-Example" ``` 常用快捷键: | 键 | 操作 | | --- | --- | | `1`-`9` | 激活排名第 1-9 的候选项 | | `Enter` | 激活所选候选项 | | `Left` / `Right` | 上一个 / 下一个候选项 | | `Ctrl+Left` / `Ctrl+Right` | 上一个 / 下一个图集页面 | | `C` | 将所选候选项标记为正确 | | `B` | 将所选候选项加入黑名单 | | `S` | 跳过当前页面 | | `F5` | 启动 SpineViewer | 如果未自动找到 SpineViewer,请使用 **Viewer exe** 按钮。自动搜索会检查仓库文件夹、`SpineViewer` 子文件夹以及仓库的父文件夹。SpineViewer 需要单独下载。 ## 命令行用法 核心构建器: ``` py -3 spine_magic_builder.py --root "D:\ExtractedGame\assets" --dims-fallback --prefer-nearby-textures ``` 暂存有歧义的尺寸匹配项: ``` py -3 spine_magic_builder_candidate_materializer_v3.py ` --root "D:\ExtractedGame\assets" ` --dims-fallback ` --stage-dim-candidates ` --stage-dim-candidates-limit 250 ``` 无需 GUI 即可激活一个暂存的候选项: ``` py -3 spine_magic_builder_candidate_materializer_v3.py ` --materialize-built-set "D:\Path\To\OneBuiltSet" ` --materialize-page 1 ` --materialize-candidate 3 ` --link-mode copy ``` 对任一构建器运行 `--help` 可获取完整的选项列表。有用的高级开关包括 `--explain-match`、`--top-n`、`--entity-mode`、`--rewrite-pages-to-match-source` 和 `--dedupe-textures`。 ## 安全提示 - 默认的 CLI 行为是复制源纹理;标准启动脚本明确使用复制模式。 - 包含的启动脚本从不传递 `--move`。 - 符号链接和硬链接模式可节省磁盘空间,但会将生成的输出链接到原始纹理数据。如果需要编辑构建好的资源集,请使用复制模式。 - `--aggressive-atlas` 和 `--dims-fallback` 可提高命名受损时的恢复率,但也可能导致错误匹配。请以可视化方式验证有歧义的结果。 - 如果无法使用链接,候选暂存可能会消耗大量磁盘空间。如有需要,请设置有限的候选数量限制。 - 生成的状态、游戏资源、候选文件夹和构建输出均被 `.gitignore` 排除。 ## 故障排除 **未找到 Python** 安装 Python 3.10+ 并在安装程序中启用将 Python 添加到 `PATH` 的选项,然后打开一个新的终端。 **GUI 打开了,但缩略图受限** 安装 `requirements-optional.txt`。当未安装 Pillow 时,GUI 会退回到 Tk 内置的 PNG 加载器。 **拖放操作无效** 安装 `tkinterdnd2`,或使用 GUI 的“浏览”按钮。 **在 Windows 上创建符号链接失败** 启用 Windows 开发者模式,使用适当的权限运行,或使用 `--link-mode copy`。候选构建器已经会自动退回到硬链接,然后退回到复制方式。 **缺少 SpineViewer** 从上游的 [SpineViewer 仓库](https://github.com/ww-rm/SpineViewer) 下载一个发布版本,然后使用 GUI 的 **Viewer exe** 按钮选择 `SpineViewer.exe`。 ## 致谢 特别感谢 [ww-rm/SpineViewer](https://github.com/ww-rm/SpineViewer) 及其贡献者。SpineViewer 是 GUI 工作流中使用的外部可视化验证组件,正是它使得快速检查候选项成为可能。 SpineViewer 并未与本项目打包在一起,也未重新授权。有关详细信息,请参阅 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)。 ## 许可证 Spine Magic Builder 的原始代码和文档在 [MIT 许可证](LICENSE) 下发布。第三方程序和资源受其各自条款的约束。
标签:Python, Spine动画, 无后门, 桌面GUI, 资产重构, 逆向工具, 逆向提取