diff --git a/00 主页.md b/00 主页.md new file mode 100644 index 0000000..c2c8743 --- /dev/null +++ b/00 主页.md @@ -0,0 +1,20 @@ +# [SpineViewer](https://github.com/ww-rm/SpineViewer) + +本页面内容基于新版本 `main` 分支进行编写, 随着版本更新可能存在时效性问题, 仅供参考. + +## 简易使用文档 + +- [01 界面简介](./01%20界面简介.md) +- [02 预览模型动画](./03%20预览模型动画.md) +- [03 预览模型文件夹](./02%20预览模型文件夹.md) +- [04 控制预览画面](./04%20控制预览画面.md) +- [05 导出动画](./05%20导出动画.md) +- [06 首选项与工作区](./06%20首选项与工作区.md) +- [07 报错与日志](./07%20报错与日志.md) +- [08 CLI工具](./08%20CLI工具.md) + +## 成为开发者 + +如果目前的项目功能无法满足需求, 最好的方式是 fork 下来自己动手丰衣足食, 子项目的代码结构可以参考各自项目下的 readme 文件. + +如果希望自己也为本项目添砖加瓦, 那么可以阅读一下 [CONTRIBUTING](https://github.com/ww-rm/SpineViewer/blob/main/CONTRIBUTING.md). diff --git a/01 界面简介.md b/01 界面简介.md new file mode 100644 index 0000000..303223a --- /dev/null +++ b/01 界面简介.md @@ -0,0 +1,13 @@ +# 界面简介 + +![示意图](https://github.com/user-attachments/assets/23654496-4eea-4b22-8a96-d72a350793de) + +上方的菜单栏中包含一些常用的命令和程序设置, 例如在首选项中调整显示语言, 或者是查看诊断信息. + +界面大致按左右划分为两部分, 左侧是操作区, 右侧是画面及日志输出区. + +左侧由不同的标签页构成, 切换不同的标签页可以使用不同子功能和设置项, 并且部分标签页支持右键菜单, 可以通过选中指定项来使用右键菜单中的功能. + +右侧分为上下两部分, 上方是预览画面及其控制按钮, 下方是程序日志的简要输出, 用于即时反馈操作情况. + +不同分区之间可以通过拖动分隔条来调整分区占比. diff --git a/02 预览模型动画.md b/02 预览模型动画.md new file mode 100644 index 0000000..a180c9b --- /dev/null +++ b/02 预览模型动画.md @@ -0,0 +1,88 @@ +# 预览模型动画 + +![预览图](https://github.com/user-attachments/assets/3a5fb9b2-c284-41f0-8b9d-2a28550d025c) + +本页面介绍 "模型" 标签页的使用方法. + +--- + +模型标签页是本程序的核心功能, 通过该标签页可以导入模型文件, 并且设置文件相关参数, 查看模型不同的动画/皮肤效果. + +标签页分为上下两部分, 上面是已导入的模型列表, 下面是模型列表选中项的参数面板, 支持多选显示和批量设置. + +## 导入模型 + +除了在浏览标签页的右键菜单中导入模型外, 最常用的应该是直接在模型标签页导入, 目前支持两种方式导入模型: + +- 直接拖拽模型的骨骼文件或者包含骨骼文件的文件夹导入. +- 复制文件/文件夹, 然后在列表中粘贴导入. + +两种方式都会自动递归检测文件夹及其子文件夹中的所有文件, 并且通过文件后缀名来判断是否是合法的可导入模型文件, 支持的标准后缀有: + +- `*.skel` +- `*.json` + +上述骨骼文件格式需要有配套的同名 `*.atlas` 文件, 并且 atlas 文件配套的 png 文件需要在同一目录下. + +除此之外可能还有一些非标准的后缀, 例如 `*.skel.bytes` 等, 这些非标准后缀会根据社区 issue 的情况进行扩充. + +导入模型后, 可以对选中项单击鼠标右键使用右键菜单功能, 例如调整层级顺序 (也可以直接拖拽列表项进行排序), 或者重新加载模型等. + +## 修改模型参数 + +成功导入文件后, 右侧的预览画面会显示模型动画, 选中列表中的项, 下方的参数面板则会显示选中项的基本信息, 并且可以修改模型参数. + +右侧预览画面会高亮选中的模型, 并且左侧的列表和预览画面是联动的, 支持同步的单选/多选, 在右侧画面中可以通过按住 Ctrl 来进行多选的选择和取消选择. + +### 渲染 + +渲染参数面板可以设置模型是否显示 (与列表中的显示列值一致), 以及模型是否是预乘纹理 (当模型出现白框灰色缝隙时可以调节此参数) 等其他参数. + +### 变换 + +可以在变化参数面板设置模型的空间位置等参数, 但是另一种方式是通过鼠标在预览画面中同步设置这些参数. + +- 使用鼠标左键可以直接拖动修改选中模型的位置坐标 +- 按下 Ctrl 后使用鼠标滚轮可以修改选中模型的缩放大小 + +### 皮肤 + +皮肤参数面板显示选中模型的所有可用皮肤列表, 如果是多选则取交集显示. + +其中如果存在 `default` 皮肤, 则仅进行显示并且不可修改始终为启用状态, 其余皮肤可以设置启用/禁用. + +皮肤面板支持多选后批量启用和禁用. + +### 插槽 + +插槽页面支持自定义插槽的附件内容以及启用/禁用插槽, 用于去除一些画面中不希望出现或者想要被替换的元素 (例如马赛克). + +禁用插槽并不是通过透明度等方式进行禁用, 为了确保任何情况下都禁用成功, 禁用的插槽将从渲染流程中移除, 所有与该插槽相关的内容将会完全跳过渲染不显示. + +插槽面板支持多选后批量启用和禁用. + +### 动画 + +动画面板支持多轨道动画设置, 右键菜单支持轨道管理, 添加轨道后, 可以设置该轨道上的单个循环动画, 并且会显示动画时长. + +### 调试 + +该面板用于设置预览画面中显示的调试内容, 例如骨骼线或者包围盒等, 该面板设置不影响模型导出时的内容. + +## 应用和保存模型参数 + +右键单击选中的模型列表项, 有一些关于参数的指令, 其中复制/应用参数用于快速批量调整大量模型的参数. 例如来自于同一个游戏的模型有相同的可调节参数, 那么可以调整一个后以它为代表, 将它的参数复制并应用到剩余的模型上. + +除了可以在程序运行时复制和应用参数, 还支持将参数保存为文件, 方便下次启动时还原之前的模型设置. + +应用参数时, 如果被应用的模型不存在某些参数, 则通常会忽略设置. + +## 一些和渲染有关的设置 + +Spine 的纹理分为预乘和非预乘两大类, 为了正确显示模型动画, 我们需要正确的设置预乘选项. + +在 "文件" -> "首选项" 菜单中, 可以设置纹理加载选项, 该选项为全局选项, 将会影响所有新加载的模型 (已加载模型不受影响). + +若启用了强制预乘选项, 则导入模型时, 会将纹理强行转换为预乘纹理导入 (如果本身是预乘的则会重复预乘), 这种方式下导入的模型视为预乘模型. + +在模型的参数面板渲染页中, 可以设置单个模型的预乘参数, 该选项于模型的预乘情况匹配, 如果非预乘模型通过首选项被强制预乘, 则此处也应该开启预乘. diff --git a/03 预览模型文件夹.md b/03 预览模型文件夹.md new file mode 100644 index 0000000..b1a2723 --- /dev/null +++ b/03 预览模型文件夹.md @@ -0,0 +1,21 @@ +# 预览模型文件夹 + +![预览图](https://github.com/user-attachments/assets/ce505c54-542a-4de4-99cc-5954a84e3592) + +本页面介绍 "浏览" 标签页的使用方法. + +--- + +浏览标签页用于在不导入模型资源的情况下, 对模型文件夹下的所有模型进行快速预览, 并且可以管理文件夹下的预览图. + +浏览标签页由上下两部分组成, 上半部分是文件列表, 下半部分是文件信息. + +单击文件夹按钮可以打开希望预览的文件夹, 右侧的刷新按钮可以手动刷新文件夹内容 (暂不支持自动更新文件夹变动). + +打开文件夹后, 文件列表将根据文件名后缀显示合法的文件名, 例如 `*.skel` 和 `*.json` 文件, 显示的内容为递归显示, 将显示该文件夹下及其所有子文件夹下所有合法的文件名. + +如果文件夹下存在大量文件, 支持使用字母键快速跳转, 也可以使用上方的筛选框进行筛选, 筛选方式是字符串匹配, 将会筛选文件名中包含筛选字符串的所有项. + +单击文件列表中的某一项, 如果存在预览图, 则会在标签页的下方显示模型预览图, 如果不存在预览图, 则可以右键单击选中项, 管理其预览图. 文件列表支持标准的多选操作, 可以全选后一次性批量管理该文件夹下所有模型的预览图. + +除了预览图管理功能, 在右键菜单中也提供了模型导入功能, 点击后会将选中项导入到模型列表中, 这与拖拽/粘贴导入文件是相似的, 但是避免了一些额外的鼠标操作, 可以在看着模型预览图的情况下直接导入, 方便大量模型下的查看和选择操作. diff --git a/04 控制预览画面.md b/04 控制预览画面.md new file mode 100644 index 0000000..02f8af4 --- /dev/null +++ b/04 控制预览画面.md @@ -0,0 +1,42 @@ +# 控制预览画面 + +![预览图](https://github.com/user-attachments/assets/b37926e0-d8f7-4014-b4c3-d76145a6520a) + +本页面介绍 "画面" 标签页的使用方法. + +--- + +## 控制画面的渲染参数 + +画面参数面板可以调整画面的画布像素大小以及视区空间位置变换, 并且有一些鼠标手势可以直接在预览画面上进行调整. + +- 右键对整体画面进行拖动 +- 滚轮对画面进行缩放 + +像素大小影响画面的显示比例和画面可显示的实际内容多少. + +如果熟悉 Photoshop 之类的软件, 此处的像素大小指的就是画布大小, 整个画布以一种适当的方式放置在程序的预览画面区域, 当不同像素大小的长宽比相同时, 虽然在程序上看上去没有什么区别, 但是可显示的像素数量是有不同的. + +像素大小也直接影响导出内容的分辨率, 不建议导出超过 2k 分辨率的媒体文件, 可能会因为系统资源不够卡死. + +缩放影响在当前大小画面上显示的内部世界的内容多少, 当缩放为 1 时, 则画布的 1 像素等于世界坐标的 1 单位长度. 缩放小于 1 时则世界内容会按比例缩小, 能够在画面上看到内部世界更多内容, 缩放大于 1 时则是相反的. + +受窗口原点和世界原点的影响, 如果要正确显示内容, 则一般来说垂直翻转都是启用的. + +最大帧率仅影响预览画面的帧率, 当设置为 0 时, 则不限制帧率 (虽然会很丝滑但是比较占用系统资源). + +画面位置参数影响最终的导出效果, 帧率和背景颜色等不影响导出. + +## 控制画面的播放 + +右侧是模型的预览画面, 除了可以通过鼠标控制画面的位置和缩放之外, 画面下方还有一些播放相关的控制按钮, 鼠标悬停按钮上可以显示提示文本. + +受限于 Spine 运行时的限制, 模型只能快进不能后退, 当预览画面调整了播放速度时, 每一帧的时长也会受到相应的调整. + +## 全屏预览画面 + +在预览画面的按钮组的末尾有全屏/非全屏切换按钮, 可以将程序切换为全屏预览模式, 切换至全屏模式时, 会自动将画布像素调整为屏幕分辨率大小, 缩放保持原值. + +可以通过快捷键 `F11` 进行全屏/非全屏模式的切换, 全屏模式下也可以通过 `Esc` 来退出全屏模式. + +全屏预览模式下, 程序的菜单和控制面板等元素将会自动隐藏, 移动鼠标至屏幕边缘时则会显示. diff --git a/05 导出动画.md b/05 导出动画.md new file mode 100644 index 0000000..94b2498 --- /dev/null +++ b/05 导出动画.md @@ -0,0 +1,95 @@ +# 导出动画 + +![预览图](https://github.com/user-attachments/assets/9e61d137-306d-4579-bae0-342f5b88b348) + +![image2](https://github.com/user-attachments/assets/cfdc3b56-0357-43f5-93a0-3156420ee901) + +本页面介绍如何导出需要的动画素材. + +## 使用导出功能 + +导入模型之后, 选中需要导出的模型项, 右键单击, 在弹出菜单中选择需要的导出格式, 目前支持 4 类导出格式: + +- 单帧画面. 该格式类似截图功能, 点击导出后会截取点击时的那一帧画面, 并且支持设置导出格式和质量参数 (如果指定的格式可以设置). 如果需要导出某个确切的画面可以暂停预览画面后逐帧调整. +- 帧序列. 导出图像格式为 png 的帧序列. +- 动图/视频. 基于 FFmpeg 工具的视频导出, 在内部会将帧序列送入 FFmpeg 的输入, 并合并成指定的动图/视频格式. +- 自定义导出. 适用于更复杂的需求, 同样基于 FFmpeg 工具, 但是可以定制输入的命令行参数, 程序只起到了提供帧序列的功能. + +一般情况下, 导出的内容与预览画面一致, 并且悬停导出参数面板可以得到大部分参数的提示文本, 但是在此说明一些特殊参数的效果. + +- 导出单个. 这个参数用于指定在选择了多项进行导出时, 是将它们合并导出在一个文件上还是分别独立导出, 如果未选择导出单个, 则选中的模型将逐个导出在各自的资源文件夹内, 否则将所有模型在一个画面上导出到指定的输出文件夹内. +- 背景颜色. 导出内容允许使用带半透明效果的背景色, 前提是导出的格式本身支持半透明背景, 例如 Gif/Webm 格式, 否则在本身不支持半透明背景的格式下使用半透明背景色可能导致画面边缘异常. +- 四周边距. 也可以理解为 "出血位", 是在原本像素大小上的外部扩充大小, 对应英语术语的 "Margin", 目前支持四周边距取同一个像素值. +- 自动分辨率 & 最大分辨率. 启用自动分辨率可以忽略画面的参数, 直接计算模型的真实大小, 并按模型的大小来得到一个刚好放得下模型的矩形画布大小进行导出. 但是某些情况下自动计算的画布大小会非常大, 例如达到 4k+, 极易导致导出时资源耗尽卡死, 因此可以使用最大分辨率来限制画布边长的最大值, 当超过最大值时会自动将画布大小等比例缩放至最大分辨率之下. + +值得一提的是, 受限于某些像素格式, 导出的内容分辨率一定会被就近调整为偶数值. + +- 时长. 当时长取负数时, 将会自动使用模型的动画时长最大值, 如果是合并导出单个文件则使用所有模型所有动画的时长最大值. 当时长不足一帧时, 至少导出一帧起始帧. +- 导出速度. 修改导出速度不影响时长, 仅在时长内调整速度. +- 保留最后一帧. 此处指的是是否保留最后一个不完整帧 (如果存在), 对于恰好能整除帧间隔的时长, 总是导出 n + 1 个帧 (包含首尾帧), 当时长无法整除, 最后一个帧间隔不足一帧时长时, 可以通过该参数控制是否保留不完整的帧. 这个参数在生成循环动图时可以控制动图的循环是否流畅. + +在使用基于 FFmpeg 的导出时, 针对不同格式提供了各自的关键参数, 这些参数仅在对应的格式下生效, 具体可以通过悬停鼠标获取提示文本查看说明. + +## 基于 FFmpeg 的导出 + +基于 FFmpeg 的导出分为两种, 一种是提供了预设格式的导出, 另一种是完全自定义命令行参数的导出. + +前者可以在 [`Spine.Exporters.FFmpegVideoExporter`](https://github.com/ww-rm/SpineViewer/blob/main/Spine/Exporters/FFmpegVideoExporter.cs#L117) 类下查看不同格式使用的预设参数, 这里简单贴一下代码片段. + +```csharp +private void SetGifOptions(FFMpegArgumentOptions options) +{ + // Gif 固定使用 256 调色板和 128 透明度阈值 + var v = "split [s0][s1]"; + var s0 = "[s0] palettegen=max_colors=256 [p]"; + var s1 = "[s1][p] paletteuse=alpha_threshold=128"; + var customArgs = $"-vf \"unpremultiply=inplace=1, {v};{s0};{s1}\" -loop {(_loop ? 0 : -1)}"; + options.ForceFormat("gif") + .WithCustomArgument(customArgs); +} + +private void SetWebpOptions(FFMpegArgumentOptions options) +{ + var customArgs = $"-vf unpremultiply=inplace=1 -quality {_quality} -loop {(_loop ? 0 : 1)} -lossless {(_lossless ? 1 : 0)}"; + options.ForceFormat("webp").WithVideoCodec("libwebp_anim").ForcePixelFormat("yuva420p") + .WithCustomArgument(customArgs); +} + +private void SetMp4Options(FFMpegArgumentOptions options) +{ + // XXX: windows 默认播放器在播放 MP4 格式时对于 libx264 编码器只支持 yuv420p 的像素格式 + // 但是如果是 libx265 则没有该限制 + var customArgs = "-vf unpremultiply=inplace=1"; + options.ForceFormat("mp4").WithVideoCodec("libx264").ForcePixelFormat("yuv420p") + .WithFastStart() + .WithConstantRateFactor(_crf) + .WithCustomArgument(customArgs); +} + +private void SetWebmOptions(FFMpegArgumentOptions options) +{ + var customArgs = "-vf unpremultiply=inplace=1"; + options.ForceFormat("webm").WithVideoCodec("libvpx-vp9").ForcePixelFormat("yuva420p") + .WithConstantRateFactor(_crf) + .WithCustomArgument(customArgs); +} + +private void SetMkvOptions(FFMpegArgumentOptions options) +{ + var customArgs = "-vf unpremultiply=inplace=1"; + options.ForceFormat("matroska").WithVideoCodec("libx265").ForcePixelFormat("yuv444p") + .WithConstantRateFactor(_crf) + .WithCustomArgument(customArgs); +} + +private void SetMovOptions(FFMpegArgumentOptions options) +{ + var customArgs = "-vf unpremultiply=inplace=1"; + options.ForceFormat("mov").WithVideoCodec("prores_ks").ForcePixelFormat("yuva444p10le") + .WithFastStart() + .WithCustomArgument($"-profile {_profile}") + .WithCustomArgument(customArgs); +} +``` + +其中 `"-vf unpremultiply=inplace=1"` 为**必需参数**, 已经为所有预设格式增加, 在自定义格式内也已增加. diff --git a/06 首选项与工作区.md b/06 首选项与工作区.md new file mode 100644 index 0000000..ee6c16b --- /dev/null +++ b/06 首选项与工作区.md @@ -0,0 +1,13 @@ +# 首选项与工作区 + +![预览图](https://github.com/user-attachments/assets/802f8d0c-422e-4718-887d-49ca19066647) + +本页面介绍首选项与工作区的概念和使用. + +--- + +首选项就是一般软件里所说的程序设置, 可以在这里面调整模型加载时的默认值, 也可以调整程序的一些默认行为, 例如显示语言. + +工作区类似于项目文件, 类似于 `.vs` 文件夹这种, 它记录程序当前所有加载的模型以及各类参数, 当程序下次运行, 打开工作区文件时, 能够还原成上一次的模型列表和参数状态, 可以方便继续之前的工作或者当作某一种画面设置. + +程序目前仍处于不那么稳定的开发状态, 因此在大版本号为 0 的情况下不会确保这些配置文件的跨版本兼容性. diff --git a/07 报错与日志.md b/07 报错与日志.md new file mode 100644 index 0000000..67ddeb8 --- /dev/null +++ b/07 报错与日志.md @@ -0,0 +1,9 @@ +# 报错与日志 + +本页面介绍如何处理常见的报错和反馈日志信息. + +程序对于异常的处理比较完整, 所有的异常均会被捕获并以恰当的方式进行提示, 例如弹出消息框或者进行日志输出. + +无论是哪种方式, 所有的报错信息都会被记录到本地的日志文件中, 位于程序目录下的 `logs/app.log` 文件内, 如果遇到无法解决的报错, 可以在提 issue 的同时附上出现问题的模型文件以及相应的日志文件, 方便开发者定位错误原因. + +除了日志信息外, 在帮助菜单中还有诊断信息命令, 用于显示一些关键的系统信息, 在提供错误信息的同时也可酌情一并提供. diff --git a/08 CLI工具.md b/08 CLI工具.md new file mode 100644 index 0000000..a7d648b --- /dev/null +++ b/08 CLI工具.md @@ -0,0 +1,3 @@ +# CLI 工具 + +这是一个尚在开发中的子项目, `SpineViewerCLI.csproj`, 由社区 pr 提供并维护 (本人暂时没有时间管这个), 也许可以完成一些简单的批量操作? 如果有想法欢迎提 pr, 会在有空时 review 代码并进行适当调整后合并. diff --git a/Home.md b/Home.md deleted file mode 100644 index 91b9015..0000000 --- a/Home.md +++ /dev/null @@ -1,94 +0,0 @@ -# [SpineViewer](https://github.com/ww-rm/SpineViewer) - -**当前内容为v0.15.0之前的旧版说明, 新版说明还在编写中, 此文仅供参考.** - -## 骨骼导入 - -有 3 种模式导入骨骼文件. - -### 拖放/粘贴需要导入的骨骼文件/目录到模型列表 - -这种方式会自动查找传入的文件列表以及目录内的子级文件列表, 虽然方便但是依赖模型文件结构, 限制最多. - -- 骨骼文件需要和 atlas 文件在一起. -- 仅支持自动发现标准的 `*.json`/`*.skel`/`.atlas` 后缀文件. -- 骨骼文件和 atlas 文件需要是同名. -- 需要保证骨骼文件里的版本字符串不是魔改过的. - -如果你有大量的标准后缀名的模型文件, 并且骨骼文件内部也是官方标准格式, 例如没有魔改二进制结构, 或者魔改版本字符串, 请用该模式导入, 最省事, CV 一下就能全部导进去. - -### 从文件菜单里批量打开骨骼文件 - -这种方式提供一定程度的文件自由度, 文件选择框里同样支持拖放/粘贴, 但是多一些额外选项. - -- 文件名限制条件与上面类似, 但是可以通过面板的选择文件按钮选择非标准后缀的骨骼文件. -- 可以设置固定加载版本, 便于应对魔改过的版本号. - -如果你需要批量导入, 但是版本字符串被魔改过, 则可以用这种方式指定版本字符串; 或者你的骨骼文件不是标准的 `*.json/*.skel`, 但是 atlas 文件是标准的 `*.atlas`, 也可以用这种方式导入. - -### 选择单个模型打开 - -这种方式自由度最高, 允许选择任意的骨骼文件和 atlas 文件, 可以没有文件名限制, 并且也可以设置加载版本. - -如果你只是想简单查看一下某个没有规范文件名的单个骨骼, 则可以用这种方式手动选骨骼文件和 atlas 文件. - -### 注意事项 - -无论哪一种导入方式, png 文件都必须和 atlas 文件在一起 (同个目录下), 并且 png 文件名必须和 atlas 文件里的文件名一致, 否则无法加载. - -## 模型列表 - -无论是预览还是导出, 都与模型列表的顺序有关, 因此提供了右键菜单和部分快捷键可以帮助调整模型在列表里的位置, 同时也可以很方便的对模型列表进行管理. - -预览画面和导出时的渲染顺序按照列表的逆序进行, 也就是越靠前的模型最后渲染, 也就是处于渲染的最上层. - -除此之外, 提供复制简单预览图的功能, 预览图是模型初始状态的画面. - -还可以切换模型列表的视图, 查看不同尺寸列表项. - -## 预览内容调整 - -预览画面除了使用面板进行参数设置外, 支持部分鼠标动作: - -- 左键可以选择和拖拽模型, 按下 `Ctrl` 键可以实现多选, 与左侧列表选择是联动的. -- 右键对整体画面进行拖动. -- 滚轮进行画面缩放. -- 预览画面支持仅渲染选中, 在该模式下, 画面仅显示被选中的模型, 并且只能通过左侧列表改变选中状态. - -预览画面的内容完全就是导出时的内容, *所见即所得*. - -当然, 不包括骨骼的调试内容和坐标轴之类的纯预览内容. :D - -## 预览内容导出 - -导出遵循 *所见即所得* 原则, 即实时预览的画面就是你导出的画面. - -导出有以下几个关键参数: - -- 仅渲染选中. 这个参数不仅影响预览模式, 也影响导出, 如果仅渲染选中, 那么在导出时只有被选中的模型会被考虑, 忽略其他模型. -- 输出文件夹. 这个参数某些时候可选, 当不提供时, 则将输出产物输出到每个模型各自的模型文件夹, 否则输出产物全部输出到提供的输出文件夹. -- 导出单个. 默认是每个模型独立导出, 即对模型列表进行批量操作, 如果选择仅导出单个, 那么被导出的所有模型将在同一个画面上被渲染, 输出产物只有一份. - -支持单帧画面以及不同格式的动图或者视频导出, 部分格式还在施工中. - -导出单帧画面时, 建议先将预览画面暂停在某一帧, 这样可以导出固定的一帧画面. - -在导出帧序列以及动图视频类型时, 如果导出时长小于 0, 则按各自的动画时长进行导出, 否则按填写的值导出统一的时长, 至少会导出一帧. - -### 批量导出单个模型 - -如果你需要批量对列表内模型进行导出, 那么仅渲染选中应当为 `False`, 同时在导出时导出单个也是 `False`, 这样每个模型的产物都是独立的, 各自在画面中进行渲染. - -输出文件夹是可选项, 如果你需要把所有模型的输出产物集中到一起, 就填有效的输出目录; 如果你需要将输出产物导出到模型各自的文件夹里, 就留空, 比如给每个模型生成一个单帧预览图. - -### 导出合并模型 - -如果你的某些模型是由多个骨骼组合而成 (例如某舰B一个船有7个独立的骨骼), 那么在导出时, 请勾选导出单个, 这样会把需要导出的骨骼在同一个画面上渲染导出. - -你也可以在这个基础上, 勾选仅渲染选中, 这样当你的列表里有多个骨骼组的时候, 可以选择某一组进行合并导出. - -## 格式与版本转换 - -可以通过工具菜单进行骨骼文件转换, 允许二进制和文本格式之间的转换, 以及不同版本间的转换. - -目前处于施工中, 仅支持转换 `3.8.x` 二进制到文本格式.