移除导入时的缩略图生成
This commit is contained in:
1 parent
bb73cc9227
commit
fe71d2d6ce
32 files changed
+35
-4192
No files matched your search
@@ -8,7 +8,7 @@
|
||||
|
||||
普通图片(`png/jpg/jpeg/webp`)仍由 Eagle 原生预览,插件不接管。
|
||||
|
||||
Eagle 按最后一段后缀分发格式扩展,因此插件同时注册 `txt` 和 `bytes`,再检查完整文件名。导入复合后缀时,插件通过缩略图回调将 `lili.atlas.txt` 规范为 `name: "lili"`、`ext: "atlas.txt"`,`skel.bytes` 同理,磁盘文件名保持不变;同时生成匹配新名称的 WebP 缓存。这样可避开 Eagle 对 `txt` 强制显示文本卡片的逻辑。普通 TXT 保留文本内容、正常显示;普通 BYTES 显示文件说明,两者都不扫描资源库。修改注册后需要重新加载插件或重启 Eagle。旧条目重新生成缩略图后,如果列表仍保留旧名称,需要重新打开素材库。
|
||||
Eagle 按最后一段后缀分发格式扩展,因此插件同时注册 `txt` 和 `bytes`,再由查看器检查完整文件名。普通 JSON/TXT/BYTES 不会进入 Spine 预览。插件不注册导入缩略图处理器,导入阶段由 Eagle 自身处理。
|
||||
|
||||
支持的 Spine 版本:**3.4 / 3.5 / 3.6 / 3.7 / 3.8 / 4.0 / 4.1 / 4.2 / 4.3**。
|
||||
|
||||
@@ -24,14 +24,12 @@ SpineViewer/
|
||||
├─ logo.png # 插件图标
|
||||
├─ assets/
|
||||
│ └─ spine-badge.png # 缩略图右下角使用的 Spine 官方 badge
|
||||
├─ thumbnail/
|
||||
│ └─ spine.js # 缩略图生成(渲染骨骼首帧并交由 Eagle 缓存)
|
||||
├─ viewer/
|
||||
│ └─ spine.html # 预览页面(动画播放 / 动画/皮肤切换 / 速度 / 缩放适配)
|
||||
├─ js/
|
||||
│ ├─ spine-utils.js # 资源匹配、版本检测工具
|
||||
│ ├─ spine-legacy-binary.js # 3.4–3.7 二进制解析兼容层
|
||||
│ └─ spine-render.js # 纯 Node 渲染模块(缩略图用)
|
||||
│ └─ spine-render.js # Node 渲染辅助模块
|
||||
├─ lib/ # 各版本 Spine 官方运行时(已拷贝到本地)
|
||||
│ ├─ 3.4/ spine-canvas.js
|
||||
│ ├─ 3.5/ spine-canvas.js
|
||||
@@ -42,8 +40,7 @@ SpineViewer/
|
||||
│ ├─ 4.1/ spine-canvas.js
|
||||
│ ├─ 4.2/ spine-canvas.js
|
||||
│ └─ 4.3/ spine-canvas.js
|
||||
├─ LICENSES/ # 第三方运行时及依赖的再分发许可证
|
||||
└─ node_modules/ # 可选:@napi-rs/canvas(用于高质量缩略图渲染)
|
||||
└─ LICENSES/ # 第三方运行时的再分发许可证
|
||||
```
|
||||
|
||||
---
|
||||
@@ -66,10 +63,7 @@ SpineViewer/
|
||||
- 零时长动画按单帧静态姿势预览
|
||||
- 自动适配并居中
|
||||
- 用户可主动将当前帧设为当前素材的自定义缩略图;若已有自定义缩略图,替换前会明确确认
|
||||
4. **缩略图**:使用 `@napi-rs/canvas` 在 Node 中跨 item 文件夹读取资源并渲染骨骼首帧。自动生成和预览器中的手动设置都会在右下角添加 Spine 官方 badge,左下角添加完整导出版本号(例如 `3.4.02`),便于识别数据文件。无法识别版本时不显示版本文字。导入时会等待同批文件写入稳定,再按入库批次配对,避免复用旧库里的同名资源。自动流程只写入 Eagle 为当前素材提供的缩略图目标,不会改写同组其他素材的自定义缩略图。
|
||||
- JSON 只在 `skeleton.spine` 的值是有效版本号时才按 Spine 骨骼数据处理;普通 JSON、JSONC、空版本字段和仅含 `bones` / `slots` 同名字段的数据会立即放行,不写缩略图,也不进入资源扫描,以保留 Eagle 或其他 JSON 插件的处理结果。Eagle 查看器不支持内容级转交,所以打开这类文件时会隐藏全部 Spine 控件,仅显示格式化的 JSON 文本。
|
||||
- 暂时缺少骨骼、atlas 或贴图时会显示回退图。资源补齐后,请使用 Eagle 的“刷新缩略图”重新生成当前素材的缩略图。
|
||||
- 分批拖入时优先在同一个 Eagle 文件夹内补齐;大型文件夹导入会共享短时文件索引,避免每个条目重复扫描整个库。
|
||||
4. **缩略图**:导入时不运行插件缩略图生成器,由 Eagle 自身处理。用户打开 Spine 预览后,可主动将当前帧设为**当前素材**的自定义缩略图;若已有自定义缩略图,替换前会明确确认。手动缩略图会添加 Spine badge 和导出版本号。
|
||||
|
||||
---
|
||||
|
||||
@@ -83,7 +77,7 @@ SpineViewer/
|
||||
|
||||
Eagle 的公开素材 API 不提供任意自定义元数据字段。预乘设置保存在 Eagle 用户数据目录的 `SpineViewer/preview-settings/` 下,以素材库和素材 ID 区分;不修改 Eagle 的 `metadata.json`、标签或注释,也不会随素材导出到其他电脑。
|
||||
|
||||
Atlas 页面路径按不可信输入处理:插件拒绝绝对路径、`..`、盘符、UNC、URI 以及越出允许目录的符号链接;跨素材贴图只从当前 Eagle 素材库中已经枚举并验证的素材选择。自动缩略图只写 Eagle 为当前素材提供的目标,不会隐式改写同组其他素材。诊断日志默认关闭;显式设置 `SPINEVIEWER_DEBUG_LOG=1` 时仅写系统临时目录。
|
||||
Atlas 页面路径按不可信输入处理:插件拒绝绝对路径、`..`、盘符、UNC、URI 以及越出允许目录的符号链接;跨素材贴图只从当前 Eagle 素材库中已经枚举并验证的素材选择。导入阶段不由插件生成缩略图;手动操作只能设置当前素材。诊断日志默认关闭;显式设置 `SPINEVIEWER_DEBUG_LOG=1` 时仅写系统临时目录。
|
||||
|
||||
- 将 Spine 导出的一整套文件(`.skel`/`.json` + `.atlas` + `.png` 等)放在**同一个文件夹**并导入 Eagle。
|
||||
- 点击其中任何一个文件即可预览动画;点击配套的贴图或 atlas 也会自动找到整套资源。
|
||||
@@ -106,7 +100,7 @@ node tests/legacy-binary.test.js tests/.fixtures 3.4
|
||||
3.4 JSON 导出对数值采用截断,测试容许对应量化误差;Goblins 二进制还将三个端点相同的阶梯区间优化为线性,测试明确验证此差异。运行时保留二进制原始精度。
|
||||
|
||||
- **3.8 / 4.x** 的 `.skel` / `.skel.bytes` 二进制文件完整支持。
|
||||
- **3.6 / 3.7**:插件已加入基于官方同版本 `spine-libgdx/SkeletonBinary.java` 移植的 JavaScript 解析兼容层,支持 `.skel` / `.skel.bytes`。无需同时导入 JSON;SKEL、atlas 和贴图齐全即可预览和生成缩略图。
|
||||
- **3.6 / 3.7**:插件已加入基于官方同版本 `spine-libgdx/SkeletonBinary.java` 移植的 JavaScript 解析兼容层,支持 `.skel` / `.skel.bytes`。无需同时导入 JSON;SKEL、atlas 和贴图齐全即可预览。
|
||||
- 旧版数据始终使用匹配的 3.6 或 3.7 运行时,保留网格、权重、变形、约束、裁剪、绘制顺序和事件。3.7 的 IK 压缩/拉伸与音频事件字段单独解析。兼容层不需要编译或联网。
|
||||
- 已验证官方 **3.6.32 / 3.7.90** 的七套示例;损坏、截断或版本不匹配的文件会报告解析错误。
|
||||
|
||||
@@ -133,51 +127,24 @@ node tests/legacy-binary.test.js
|
||||
|
||||
---
|
||||
|
||||
## 可选依赖说明
|
||||
|
||||
`@napi-rs/canvas` 仅用于缩略图的高质量渲染。它并非必需:
|
||||
- 若保留 `node_modules/`(当前平台原生二进制),缩略图会渲染骨骼形象。
|
||||
- 若删除 `node_modules/`,插件仍可正常预览动画,缩略图会显示一条纯 JS 占位图。
|
||||
|
||||
如需在多个平台分发,请安装对应平台的 `@napi-rs/canvas` 原生二进制。
|
||||
|
||||
---
|
||||
|
||||
## 分享与打包
|
||||
|
||||
### 分享源码
|
||||
|
||||
仓库中的 `node_modules/` 被 `.gitignore` 忽略是正常的。接收者克隆源码后,需要在插件目录执行:
|
||||
|
||||
```bash
|
||||
npm ci --omit=dev
|
||||
```
|
||||
|
||||
`@napi-rs/canvas` 会按当前操作系统和 CPU 下载预编译的 N-API 二进制,正常情况下不需要编译,也不需要安装 Rust/C++ 工具链。安装完成后,再从 Eagle 插件面板加载或打包插件。
|
||||
源码不依赖原生 Node 扩展;加载插件后即可使用预览和手动缩略图功能。
|
||||
|
||||
### 分享可直接安装的插件
|
||||
|
||||
1. 在准备出包的目标系统上执行 `npm ci --omit=dev`。
|
||||
2. 确认插件目录中保留了 `node_modules/`。否则骨骼动画仍可预览,但自动缩略图只能使用占位图。
|
||||
3. 在 Eagle 中打开插件面板(快捷键 `P`),右键此插件并选择“打包插件”。
|
||||
4. 把生成的 `.eagleplugin` 文件发给对方。对方直接安装,不需要再执行 npm,也不需要编译。
|
||||
|
||||
当前工作目录安装的是 **macOS Apple 芯片(darwin-arm64)** 的 Canvas 原生二进制。它不能直接作为 Windows 或 Intel Mac 的完整缩略图版本分发。建议分别在以下目标环境执行安装、测试和打包:
|
||||
|
||||
- macOS Apple 芯片
|
||||
- macOS Intel
|
||||
- Windows x64
|
||||
|
||||
如果每个安装包只携带一个平台的原生二进制,出包时还应把 `manifest.json` 的 `platform` / `arch` 改为对应的 `mac` + `arm`、`mac` + `x64` 或 `win` + `x64`。只有安装包确实包含并测试过所有目标平台的原生二进制时,才保留当前的 `all` + `all`。
|
||||
1. 在 Eagle 中打开插件面板(快捷键 `P`),右键此插件并选择“打包插件”。
|
||||
2. 把生成的 `.eagleplugin` 文件发给对方。安装包不含平台原生依赖,Windows 与 macOS 共用。
|
||||
|
||||
### 出包文件检查
|
||||
|
||||
完整功能包至少应包含:
|
||||
|
||||
- `manifest.json`、`logo.png`
|
||||
- `viewer/`、`thumbnail/`、`js/`、`lib/`、`assets/`
|
||||
- `viewer/`、`js/`、`lib/`、`assets/`
|
||||
- `LICENSES/`
|
||||
- `package.json`、`package-lock.json`
|
||||
- 与目标平台匹配的 `node_modules/`
|
||||
|
||||
无需放入发布包的开发文件包括 `.git/`、日志、`.DS_Store`、`debug*.js`、`test-*.js`、`SpineViewer.code-workspace`,以及未在 `manifest.json` 中使用的 ICNS 测试文件。
|
||||
Reference in new issue
Block a user