# [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)
[![GitHub Release](https://img.shields.io/github/v/release/ww-rm/SpineViewer?logo=github&logoColor=959da5&label=Release&labelColor=3f4850)](https://github.com/ww-rm/SpineViewer/releases)
[![Downloads](https://img.shields.io/github/downloads/ww-rm/SpineViewer/total?logo=github&logoColor=959da5&label=Downloads&labelColor=3f4850)](https://github.com/ww-rm/SpineViewer/releases)

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

*A WYSIWYG Spine file viewer and exporter.*

![previewer](img/preview.webp)

---

:sparkles: v0.12.x New Feature: Support for multi-track animations and multi-skin list management :sparkles:

---

## Installation

Head over to the [Release](https://github.com/ww-rm/SpineViewer/releases) page to download the zip package.

The software requires the dependency framework [.NET Desktop Runtime 8.0.x](https://dotnet.microsoft.com/en-us/download/dotnet/8.0).

Alternatively, you can download the package with the `SelfContained` suffix, which can run independently.

Exporting video formats such as GIF requires that ffmpeg is installed locally and added to your system’s PATH. You can [click here to go to the FFmpeg-Windows download page](https://ffmpeg.org/download.html#build-windows) or directly download the latest version [ffmpeg-release-full.7z](https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z).

## Supported Export Formats

| Export Format  | Suitable for Scenario                                                                 |
| ------------ | ------------------------------------------------------------------------------------|
| Single Frame   | Supports generating high-definition model snapshots; you can manually adjust the frame. |
| Frame Sequence | Supports png sequence output with transparency and lossless compression.              |
| GIF            | Ideal for generating preview animations.                                              |
| MP4            | The most common video format with the best compatibility.                             |
| WebM           | Suitable for browser-based playback and supports transparent backgrounds.             |
| MKV            | For more experimental use.                                                              |
| MOV            | For more experimental use.                                                              |
| Custom Export  | In addition to the above presets, you can provide any FFmpeg parameters to meet complex custom needs. |

## Supported Spine Versions

| Version  | View & Export         | Format Conversion    | Version Conversion  |
| :------: | :-------------------: | :------------------: | :-----------------: |
| `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`  |                       |                      |                     |

More versions are under development :rocket: :rocket: :rocket:

## How to Use

### Importing Skeleton Files

There are three ways to import skeleton files:

- Drag and drop or paste the skeleton file/directory into the model list.
- Batch open skeleton files from the File menu.
- Select a single model to open from the File menu.

### Adjusting the Preview

The model list supports context menus and some shortcuts, and you can multi-select to adjust parameters in bulk.

In addition to using the panel for parameter settings, the preview screen supports several mouse actions:

- Left-click to select and drag models; hold the `Ctrl` key for multi-selection (which is synchronized with the list on the left).
- Right-click to drag the overall view.
- Use the mouse wheel to zoom in and out.
- “Render Selected” mode: in this mode, the preview screen only shows the selected models and the selection state can only be changed from the list on the left.

The buttons below the preview allow you to adjust the timeline, acting as a simple media player.

### Exporting the Preview

Exporting follows the “What You See Is What You Get” principle – the preview exactly reflects the output.

There are several key parameters for export:

- Render Selected Only: This option affects both the preview and export. If enabled, only the selected models will be considered during export while ignoring the others.
- Output Folder: This parameter is optional in some cases. If not provided, the output files will be saved in each model’s own folder; otherwise, all outputs will be saved to the specified folder.
- Single Export: By default, each model is exported separately (i.e., batch operation on the model list). If “Single Export” is selected, all the exported models will be rendered on the same canvas, producing only one output file.

### More Information

For detailed instructions and usage notes, please see the [Wiki](https://github.com/ww-rm/SpineViewer/wiki). If you encounter any issues or bugs, feel free to open an [Issue](https://github.com/ww-rm/SpineViewer/issues).

## Acknowledgements

- [spine-runtimes](https://github.com/EsotericSoftware/spine-runtimes)
- [SFML.Net](https://github.com/SFML/SFML.Net)
- [FFMpegCore](https://github.com/rosenbjerg/FFMpegCore)

---

*If you like this project, please give it a :star: and share it with others!*  

[![Stargazers over time](https://starchart.cc/ww-rm/SpineViewer.svg?variant=adaptive)](https://starchart.cc/ww-rm/SpineViewer)