# Skeleton Viewer

Skeleton Viewer是一个可以加载和显示skeleton数据的工具. 它与[预览](/spine-preview)视图非常相似, 用于测试从Spine导出的skeleton数据是如何使用Spine Runtime进行渲染的非常有用.

![](/img/skeleton-viewer.jpg)

Skeleton Viewer使用了 [spine-libgdx](/git/spine-runtimes/tree/spine-libgdx) 运行时, 它是Spine的参考运行时，其他运行时都基于此. 如果你在使用运行时渲染骨架时遇到问题，那么Skeleton Viewer也可以帮助你确定问题出在spine-libgdx, 或是使用的其他运行时，还是你的代码中——即使你没有使用spine-libgdx.

Skeleton Viewer的源代码可在[此处](/git/spine-runtimes/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/SkeletonViewer.java)查阅, 你可以根据Skeleton Viewer的代码, 创建或定制适合你特定需求的工具.

# 用Spine启动Skeleton Viewer

可以在Spine后面跟上 `--skeleton-viewer` 或 `--sv` [command line](/spine-command-line-interface) 参数来启动Skeleton Viewer:

```
Spine --skeleton-viewer
```

Spine启动器 4.1.10+ 和 Spine编辑器 4.1.12+ 的版本支持该操作. 如果命令行参数未被识别, 请确保你的Spine编辑器版本是 4.1.12+, 并从你的[Spine 许可证页面](/spine-license-recovery) 中下载最新的启动器.

要运行特定版本的Skeleton Viewer, 请使用 `--update` 或 `-u` 参数:

```
Spine --update 4.1.12 --skeleton-viewer
```

## 用Spine试用版启动Skeleton Viewer

使用`--skeleton-viewer` 或 `--sv` [command line](/spine-command-line-interface)参数也可以从[Spine试用版](/spine-download) 中启动Skeleton Viewer:

```
SpineTrial --skeleton-viewer
```

Spine试用版总是保持最新版本, 因此用其启动的Skeleton Viewer无法降为旧版本.

# 独立运行(standalone)

用Spine启动是运行Skeleton Viewer的首推方式, 但也可以单独下载它并用命令行启动之.

## 下载

Skeleton Viewer可以在这里以JAR文件的形式下载:

$downloadLinks$<br>
[Skeleton Viewer 4.1.24](/files/sv/skeletonViewer-4.1.24.jar)<br>
[Skeleton Viewer 4.0.64](/files/sv/skeletonViewer-4.0.64.jar)<br>
[Skeleton Viewer 3.8.99](/files/sv/skeletonViewer-3.8.99.jar)<br>
[Skeleton Viewer 3.7.94](/files/sv/skeletonViewer-3.7.94.jar)<br>
[Skeleton Viewer 3.6.53](/files/sv/skeletonViewer-3.6.53.jar)<br>
[Skeleton Viewer 3.5.51](/files/sv/skeletonViewer-3.5.51.jar)<br>
[Skeleton Viewer 2.1.27](/files/sv/skeletonViewer-2.1.27.jar)

请选择你用于导出数据的 Spine 编辑器版本相同的 Skeleton Viewer 版本. 如果你需要旧版本的 Skeleton Viewer, 请查找 [Git历史记录](/git/spine-runtimes/tree/spine-libgdx/spine-skeletonviewer) 来下载源代码, 并通过源代码来启动.

## Java

独立运行 Skeleton Viewer 需要Java 9+ 版本. 但你无需为启动 Skeleton Viewer 而"安装" Java. 你可以从 [Adoptium](https://adoptium.net/temurin/releases/) 或 [Zulu](https://www.azul.com/downloads/?package=jdk#download-openjdk) 下载适合你的操作系统的最新版Java (而非从Oracle下载Java), 将压缩包解压到一个文件夹中, 然后启动位于 `bin` 文件夹中的Java可执行文件即可.

## 运行

通过这样的一行命令就能直接启动Skeleton Viewer:

```
java -jar skeletonViewer.jar
```

从命令行运行的好处是你可以看到输出的全部日志.

# 加载数据

`Browse` 按钮用于打开从 Spine 导出的 JSON 或二进制数据文件. 数据文件也可拖放至骨架查看器窗口.

Spine的试用版和完整版均附带[示例项目](/spine-examples)，这些项目可导出并通过Skeleton Viewer打开. 导出文件也可在[spine-runtimes](/git/spine-runtimes/tree/examples)Git仓库中找到.

Skeleton Viewer会在选定的数据文件旁边寻找具有同名的 texture atlas. 例如，如果打开了`raptor.json`，它将寻找`raptor.atlas`. 如果没有找到 atlas，Skeleton Viewer 将使用半透明的白色方块进行替代显示.

Skeleton Viewer 监控数据和 atlas 文件，若它们经历了外部修改，Skeleton Viewer 将自动重加载它们.

如果你从命令行启动 Skeleton Viewer，则可以在打开时直接指定 skeleton 的`.json`或`.skel`:

```
java -jar skeletonViewer.jar path\to\skeleton.json
```

# 使用Skeleton Viewer

Skeleton Viewer将加载选中的skeleton并将其显示在右侧的黑色区域. 在这个区域点击和拖动可以移动skeleton. 可以用 `Scale`, `Flip` 和 `Debug` 控件来细致地观察研究skeleton的不同部件.

如果图像有黑边或其他显示错误, 可以尝试勾选或取消勾选 `Premultiplied` 选项. 启用该选项后, Skeleton Viewer 在渲染时将默认 atlas 使用了 premultiplied alpha.

Skeleton Viewer会直接播放 `Animation` 列表中被选中的动画. 切换不同的动画时Skeleton Viewer将使用 [AnimationState](/spine-using-runtimes#AnimationState) 来混合淡出(cross fade)到新动画. `Mix` 滑块用于控制混合淡出的时长, 单位为秒.

`Setup Pose` 按钮可以把骨骼和槽位重置为setup pose, 这与调用 `setBonesToSetupPose` 或 `setSlotsToSetupPose` 的等效. 当动画改变skeleton时, 这些更改会一直保持, 直到你的代码或另一个动画再次更改它. 提供该功能的动机是, 由于一个动画只会修改skeleton中它key了的某些部分, 可能会由此导致一个动画无意中影响另一个动画的效果. 该主题的更多信息请参见运行时文档中 [Animation changes](/spine-using-runtimes/#Animation-changes) 一节.