# [SpineViewer](https://github.com/ww-rm/SpineViewer)

[![Build and Release](https://github.com/ww-rm/SpineViewer/actions/workflows/dotnet-desktop.yml/badge.svg)](https://github.com/ww-rm/SpineViewer/actions/workflows/dotnet-desktop.yml)

[中文](README.md) | [English](README.en.md)

一个简单好用的 Spine 文件查看&导出程序.

![previewer](img/preview.webp)

---

## 安装

前往 [Release](https://github.com/ww-rm/SpineViewer/releases) 界面下载压缩包.

软件需要安装依赖框架 [.NET 桌面运行时 8.0.x](https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0).

也可以下载带有 `SelfContained` 后缀的压缩包, 可以独立运行.

## 版本支持

| 版本 | 查看&导出 | 格式转换 | 版本转换 |
| :---: | :---: | :---: | :---: |
| `2.1.x` | :white_check_mark: |  |  |
| `3.1.x` |  |  |  |
| `3.4.x` |  |  |  |
| `3.5.x` |  |  |  |
| `3.6.x` | :white_check_mark: |  |  |
| `3.7.x` | :white_check_mark: |  |  |
| `3.8.x` | :white_check_mark: | :white_check_mark: |  |
| `4.1.x` | :white_check_mark: |  |  |
| `4.2.x` | :white_check_mark: |  |  |
| `4.3.x` |  |  |  |

## 使用方法

### 骨骼导入

有 3 种模式导入骨骼文件:

- 拖放/粘贴需要导入的骨骼文件/目录到模型列表

    这种方式会自动查找传入的文件列表以及目录内的子级文件列表, 虽然方便但是依赖模型文件结构, 限制最多.

    - 仅支持自动发现标准的 `*.json`/`*.skel`/`.atlas` 后缀文件.
    - 骨骼文件和 atlas 文件需要是同名.
    - 需要保证骨骼文件里的版本字符串不是魔改过的.
- 从文件菜单里批量打开骨骼文件

    这种方式提供一定程度的文件自由度, 文件选择框里同样支持拖放/粘贴, 但是多一些额外选项.

    - 文件名限制条件与上面类似, 但是可以通过面板的选择文件按钮选择非标准后缀的骨骼文件.
    - 可以设置固定加载版本, 便于应对魔改过的版本号.
- 选择单个模型打开

    这种方式自由度最高, 允许选择任意的骨骼文件和 atlas 文件, 可以没有文件名限制, 并且也可以设置加载版本.

### 预览内容调整

模型列表支持右键菜单以及部分快捷键, 并且可以多选进行模型参数的批量调整.

预览画面除了使用面板进行参数设置外, 支持部分鼠标动作:

- 左键可以选择和拖拽模型, 按下 `Ctrl` 键可以实现多选, 与左侧列表选择是联动的.
- 右键对整体画面进行拖动.
- 滚轮进行画面缩放.
- 预览画面支持仅渲染选中, 在该模式下, 画面仅显示被选中的模型, 并且只能通过左侧列表改变选中状态.

在功能菜单中, 可以重置同步所有骨骼动画时间.

### 预览内容导出

支持预览图和视频的导出.

预览图导出的内容是模型的默认状态画面, 每个模型一张单独的预览图.

视频(TODO: 目前仅支持帧序列导出), 可以在每个骨骼的模型参数中查看动画完整时长.

当预览画面处于仅渲染选中状态时, 导出的内容仅包含被选中的模型, 也就是在画面中显示的内容.

### 格式与版本转换

可以通过工具菜单进行骨骼文件转换, 允许二进制和文本格式之间的转换, 以及不同版本间的转换.

目前处于施工中, 仅支持转换 `3.8.x` 二进制到文本格式.

---

*如果你觉得这个项目不错请给个 :star:, 并分享给更多人知道! :)*
