diff --git a/README.en.md b/README.en.md index 4fd2b57..ee465a2 100644 --- a/README.en.md +++ b/README.en.md @@ -1,111 +1,133 @@ # [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) +[![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 & exporter. +A simple and user-friendly Spine file viewer and exporter with multi-language support (Chinese/English/Japanese). ![previewer](img/preview.webp) ## Features -- Supports multiple Spine file versions -- Drag & drop or copy/paste to open files in batch -- List-based skeleton view with render layer management -- Multi-select list to batch-adjust skeleton parameters -- Multi-track animation support -- Skin / custom slot attachment configuration -- Debug rendering mode -- Fullscreen preview -- Export to single-frame image, animated GIF/WebP/AVIF, video formats -- Batch export at multiple resolutions -- Custom FFmpeg export parameters -- …and more +* Supports multiple versions of Spine files. +* Batch open files via drag-and-drop or copy-paste. +* Batch preview functionality. +* List-based multi-skeleton viewing and render order management. +* Batch adjustment of skeleton parameters using multi-selection. +* Multi-track animation settings. +* Skin and custom slot attachment settings. +* Debug rendering support. +* Fullscreen preview mode. +* Export to single frame/image sequence/animated GIF/video formats. +* Automatic resolution batch export. +* FFmpeg custom export support. +* Program parameter saving. +* ... -### Spine Version Support +### Supported Spine Versions -| Version | View & Export | Format Conversion | Version Conversion | -| :------: | :-----------: | :---------------: | :----------------: | -| `2.1.x` | :white_check_mark: | | | -| `3.6.x` | :white_check_mark: | | | -| `3.7.x` | :white_check_mark: | | | -| `3.8.x` | :white_check_mark: | :white_check_mark: | | -| `4.0.x` | :white_check_mark: | | | -| `4.1.x` | :white_check_mark: | | | -| `4.2.x` | :white_check_mark: | :white_check_mark: | | -| `4.3.x` | | | | +| Version | View & Export | +| :-----: | :------------------: | +| `2.1.x` | :white\_check\_mark: | +| `3.6.x` | :white\_check\_mark: | +| `3.7.x` | :white\_check\_mark: | +| `3.8.x` | :white\_check\_mark: | +| `4.0.x` | :white\_check\_mark: | +| `4.1.x` | :white\_check\_mark: | +| `4.2.x` | :white\_check\_mark: | +| `4.3.x` | | -More versions coming soon 🚀🚀🚀 +More versions under development \:rocket: \:rocket: \:rocket: ### Supported Export Formats -| Export Format | Use Case | -| --------------------- | ----------------------------------------------------------------------------------------- | -| Single Frame | Generate high‑resolution still images; pick any frame manually. | -| Frame Sequence (PNG) | Lossless PNG sequences with alpha channel preserved. | -| GIF / WebP / AVIF | Perfect for quick animated previews. | -| MP4 | The most widely compatible video format. | -| WebM | Browser‑friendly streaming with optional transparency. | -| MKV / MOV | For those who like to tinker. | -| Custom FFmpeg Command | Use any FFmpeg arguments for complex, tailored export workflows. | +| Format | Use Case | +| -------------- | ----------------------------------------------------------------------------- | +| Single Frame | Generate high-resolution images of models; manually adjust the desired frame. | +| Frame Sequence | Supports PNG format with transparency and lossless compression. | +| GIF/Video | Export preview animations or common video formats. | +| Custom Export | Supports arbitrary FFmpeg parameters for custom, complex export needs. | ## Installation -1. Go to the [Releases](https://github.com/ww-rm/SpineViewer/releases) page and download the ZIP. -2. Make sure you have the [.NET Desktop Runtime 8.0.x](https://dotnet.microsoft.com/download/dotnet/8.0) installed. -3. Alternatively, download the `SelfContained` ZIP, which runs standalone without any .NET prerequisites. -4. To export GIF or other video formats, install the `ffmpeg` CLI and add it to your PATH. - - Windows builds: see the [FFmpeg download page](https://ffmpeg.org/download.html#build-windows) - - Direct download: [ffmpeg-release-full.7z](https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z) +Download the compressed package from the [Release](https://github.com/ww-rm/SpineViewer/releases) page. + +The software requires the [.NET Desktop Runtime 8.0.x](https://dotnet.microsoft.com/download/dotnet/8.0) to run. + +Alternatively, download the package with the `SelfContained` suffix for standalone execution. + +For exporting GIF/MP4 and other animation/video formats, FFmpeg must be installed and added to the system environment variables. Visit the [FFmpeg Windows download page](https://ffmpeg.org/download.html#build-windows) or download the latest version directly: [ffmpeg-release-full.7z](https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z). ## Usage -### Importing Skeletons +### How to Change the Display Language -You can import Spine skeletons in three ways: +In the menu, go to "File" -> "Preferences..." -> "Language," select your desired language, and confirm the change. -- Drag & drop or paste skeleton files or folders onto the model list. -- Use **File > Open** to batch‑open multiple skeleton files. -- Use **File > Open Single Model** to open one at a time. +### Basic Overview -### Adjusting Content +The program is organized into a left-right layout: -- Right‑click menu and keyboard shortcuts are available in the model list. You can multi‑select to adjust parameters in batch. -- In the preview pane, you can also use mouse controls: - - **Left‑click & drag** to move a model; hold **Ctrl** to multi‑select (synced with the list). - - **Right‑click & drag** to pan the entire scene. - - **Mouse wheel** to zoom; hold **Ctrl** to zoom all selected models proportionally. - - **“Render Selected Only”** mode shows only the selected models in preview; use the list to change selection. +* **Left Panel:** Functionality panel. +* **Right Panel:** Preview display. -Below the preview, playback controls let you scrub through the timeline like a basic player. +The left panel includes three sub-panels: -### Exporting Content +* **Browse:** Preview the content of a specified folder without importing files into the program. This panel allows generating `.webp` previews for models or importing selected models. +* **Model:** Lists imported models for rendering. Parameters and rendering order can be adjusted here, along with other model-related functionalities. +* **Display:** Adjust parameters for the right-side preview display. -Exports follow the “what you see is what you get” principle—your real‑time preview is exactly what gets exported. +Hover your mouse over buttons, labels, or input fields to see help text for most UI elements. -Key export options: +### Skeleton Import -- **Render Selected Only**: includes only the selected models in both preview and export. -- **Output Folder**: if unspecified, exports go into each model’s source folder; otherwise, everything exports to the chosen folder. -- **Export Single**: by default, each model is exported separately; enable this to render all selected models together into a single output. -- **Auto Resolution**: ignores preview resolution and viewport size—exports at the content’s actual bounds; for animations, matches the full animation area. +Drag-and-drop or paste skeleton files/directories into the Model panel. -## More +Alternatively, use the right-click menu in the Browse panel to import selected items. -Detailed usage and advanced tips are in the [Wiki](https://github.com/ww-rm/SpineViewer/wiki). -Encounter a bug or have a feature request? Open an [Issue](https://github.com/ww-rm/SpineViewer/issues). +### Content Adjustment + +The Model panel supports right-click menus, some shortcuts, and batch adjustments of model parameters through multi-selection. + +For preview display adjustments: + +* **Left-click:** Select and drag models. Hold `Ctrl` for multi-selection, synchronized with the left-side list. +* **Right-click:** Drag the entire display. +* **Scroll wheel:** Zoom in/out. Hold `Ctrl` to scale selected models. +* **Render selected-only mode:** In this mode, the preview only shows selected models, and selection status can only be changed via the left-side list. + +The buttons below the preview display allow time adjustments, serving as a simple playback control. + +### Content Export + +Export follows the **WYSIWYG (What You See Is What You Get)** principle, meaning the preview display reflects the exported output. + +Use the right-click menu in the Model panel to export selected items. + +Key export parameters include: + +* **Output folder:** Optional. When not specified, output is saved to the respective model folder; otherwise, all output is saved to the provided folder. +* **Export single:** By default, each model is exported independently. Selecting "Export single" renders all selected models in a single frame, producing a unified output. +* **Auto resolution:** Ignores the preview resolution and viewport parameters, exporting output at the actual size of the content. For animations/videos, the output matches the size required for full visibility. + +### More Information + +For detailed usage and documentation, see the [Wiki](https://github.com/ww-rm/SpineViewer/wiki). For usage questions or bug reports, submit 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) +* [spine-runtimes](https://github.com/EsotericSoftware/spine-runtimes) +* [SFML.Net](https://github.com/SFML/SFML.Net) +* [FFMpegCore](https://github.com/rosenbjerg/FFMpegCore) +* [HandyControl](https://github.com/HandyOrg/HandyControl) +* [NLog](https://github.com/NLog/NLog) +* [SkiaSharp](https://github.com/mono/SkiaSharp) --- -If you find this project useful, please give it a ⭐ and share it with others! +*If you find this project helpful, 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) diff --git a/README.md b/README.md index b292d38..7c068f3 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [中文](README.md) | [English](README.en.md) -*所见即所得* 的 Spine 文件查看&导出程序. +一个简单好用的 Spine 文件查看&导出程序, 支持中/英/日多语言界面. ![previewer](img/preview.webp) @@ -14,6 +14,7 @@ - 支持多版本 spine 文件 - 支持拖拽/复制粘贴批量打开文件 +- 支持批量预览 - 支持列表式多骨骼查看和渲染层级管理 - 支持列表多选批量设置骨骼参数 - 支持多轨道动画设置 @@ -23,20 +24,21 @@ - 支持单帧/动图/视频文件导出 - 支持自动分辨率批量导出 - 支持 FFmpeg 自定义导出 +- 支持程序参数保存 - ... ### Spine 版本支持 -| 版本 | 查看&导出 | 格式转换 | 版本转换 | -| :---: | :---: | :---: | :---: | -| `2.1.x` | :white_check_mark: | | | -| `3.6.x` | :white_check_mark: | | | -| `3.7.x` | :white_check_mark: | | | -| `3.8.x` | :white_check_mark: | :white_check_mark: | | -| `4.0.x` | :white_check_mark: | | | -| `4.1.x` | :white_check_mark: | | | -| `4.2.x` | :white_check_mark: | :white_check_mark: | | -| `4.3.x` | | | | +| 版本 | 查看&导出 | +| :---: | :---: | +| `2.1.x` | :white_check_mark: | +| `3.6.x` | :white_check_mark: | +| `3.7.x` | :white_check_mark: | +| `3.8.x` | :white_check_mark: | +| `4.0.x` | :white_check_mark: | +| `4.1.x` | :white_check_mark: | +| `4.2.x` | :white_check_mark: | +| `4.3.x` | | 更多版本正在施工 :rocket: :rocket: :rocket: @@ -46,10 +48,7 @@ | --- | --- | | 单帧画面 | 支持生成高清模型画面图像, 可手动调节需要的一帧. | | 帧序列 | 支持 PNG 格式帧序列, 可保留透明通道且无损压缩. | -| GIF/WebP/AVIF | 适合生成预览动图. | -| MP4 | 最常见的视频格式, 兼容性最好. | -| WebM | 适合浏览器在线播放格式, 支持透明背景. | -| MKV/MOV | 适合折腾. | +| 动图/视频 | 可以生成预览动图或者常见格式视频. | | 自定义导出 | 除上述预设方案, 支持提供任意 FFmpeg 参数进行导出, 满足自定义复杂需求. | ## 安装 @@ -60,21 +59,35 @@ 也可以下载带有 `SelfContained` 后缀的压缩包, 可以独立运行. -导出 GIF 等视频格式需要在本地安装 ffmpeg 命令行, 并且添加至环境变量, [点击前往 FFmpeg-Windows 下载页面](https://ffmpeg.org/download.html#build-windows), 也可以点这个下载最新版本 [ffmpeg-release-full.7z](https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z). +导出 GIF/MP4 等动图/视频格式需要在本地安装 ffmpeg 命令行, 并且添加至环境变量, [点击前往 FFmpeg-Windows 下载页面](https://ffmpeg.org/download.html#build-windows), 也可以点这个下载最新版本 [ffmpeg-release-full.7z](https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z). ## 使用方法 +### 如何修改显示语言 + +窗口菜单的 "文件" -> "首选项..." -> "语言", 选择你需要的语言并确认修改. + +### 基本介绍 + +程序大致是左右布局, 左侧是功能面板, 右侧是画面. + +左侧有三个子面板, 分别是: + +- **浏览**. 该面板用于预览指定文件夹的内容, 并没有真正导入文件到程序. 在该面板可以为模型生成 webp 格式的预览图, 或者导入选中的模型. +- **模型**. 该面板记录导入并进行渲染的模型列表, 可以在这个面板设置与模型渲染相关的参数和渲染顺序, 以及一些与模型有关的功能. +- **画面**. 该面板用于设置右侧预览画面的参数. + +绝大部分按钮或者标签或者输入框都可以通过鼠标指针悬停来获取帮助文本. + ### 骨骼导入 -有 3 种方式导入骨骼文件: +可以直接拖放/粘贴需要导入的骨骼文件/目录到模型面板. -- 拖放/粘贴需要导入的骨骼文件/目录到模型列表 -- 从文件菜单里批量打开骨骼文件 -- 从文件菜单选择单个模型打开 +或者在浏览面板内右键菜单导入选中项. ### 内容调整 -模型列表支持右键菜单以及部分快捷键, 并且可以多选进行模型参数的批量调整. +模型面板支持右键菜单以及部分快捷键, 并且可以多选进行模型参数的批量调整. 预览画面除了使用面板进行参数设置外, 支持部分鼠标动作: @@ -89,9 +102,10 @@ 导出遵循 "所见即所得" 原则, 即实时预览的画面就是你导出的画面. +在模型面板里, 右键菜单可以对选中项进行导出操作. + 导出有以下几个关键参数: -- 仅渲染选中. 这个参数不仅影响预览模式, 也影响导出, 如果仅渲染选中, 那么在导出时只有被选中的模型会被考虑, 忽略其他模型. - 输出文件夹. 这个参数某些时候可选, 当不提供时, 则将输出产物输出到每个模型各自的模型文件夹, 否则输出产物全部输出到提供的输出文件夹. - 导出单个. 默认是每个模型独立导出, 即对模型列表进行批量操作, 如果选择仅导出单个, 那么被导出的所有模型将在同一个画面上被渲染, 输出产物只有一份. - 自动分辨率. 该模式会忽略预览画面的分辨率和视区参数, 导出产物的分辨率与被导出内容的实际大小一致, 如果是动图或者视频则会与完整显示动画的必需大小一致. @@ -105,6 +119,9 @@ - [spine-runtimes](https://github.com/EsotericSoftware/spine-runtimes) - [SFML.Net](https://github.com/SFML/SFML.Net) - [FFMpegCore](https://github.com/rosenbjerg/FFMpegCore) +- [HandyControl](https://github.com/HandyOrg/HandyControl) +- [NLog](https://github.com/NLog/NLog) +- [SkiaSharp](https://github.com/mono/SkiaSharp) --- diff --git a/img/preview.webp b/img/preview.webp index 3e1c61c..3b5b0f8 100644 Binary files a/img/preview.webp and b/img/preview.webp differ