Skip to main content
Go to Editor

維基

Learn how to optimize your Spine 2D animations, reduce file size, and improve performance

FPSPlusUIYouTubeanimationexportguideplaybackrecorderrecordingtimelinevideoviewer介面優化初學者圖表定價工作流程影片指南指標控制插槽效能有損概念檢視器無損管線範例結果統計表格訂閱記憶體資料連線類型高級功能

入門: 基本工作流程

初學者工作流程指南

本指南將協助你快速開始使用 JSON Optimizer。

  1. 載入專案: 使用 InputNode 載入你的 .json.atlas.png 檔案。
  2. 選擇預設(Plus 模式): 在 Plus 模式下,使用右側面板選擇內建預設之一(例如:"Basic Fallback")。系統會自動為你建立最佳化圖。在 Free 模式下,請手動建立最小圖:InputNodeQuantizerNodeOutputNode
  3. 執行圖: 點擊「執行管線」按鈕。
  4. 比較結果: 切換到「檢視器」分頁,視覺化比較原始與最佳化後的動畫。
  5. 檢視變更: 在「結果」與「統計」分頁中,你可以查看哪些鍵被修改或刪除的詳細資訊。

插槽類型與資料流

插槽類型資料連線

本文說明節點圖中插槽使用的資料型別,以及哪些可以彼此連接。

快速規則

大多數處理節點都在Spine Payload 上運作。與 atlas 相關的節點會使用Atlas ProjectSprites。若不確定插槽需要什麼,請使用 ValidatorNode

插槽類型

  • Spine Payload — 多數處理節點使用、適合 runtime 的 Spine 專案表示。
  • Atlas Project — atlas 中繼資料 + page 圖片,供 atlas 節點使用。
  • Sprites — 解包後的 sprite 圖片/region(Atlas Unpacker → Asset Viewer / Atlas Repacker)。
  • JSON — 原始或重建的 Spine JSON,用於診斷/驗證/比較差異。
  • Changes — 一些最佳化器產生的 diff 清單/串流,供 viewer/報告節點使用。

鍵 → 型別 → 連接到

插槽鍵(例)資料型別產生者可連接到
payload, payload_in, payload_outSpine PayloadInputNode、多數處理節點處理節點(RDP/Spline/Refit/Quantizer/Cleanup/等),最後接到 OutputNode.payload
original_jsonJSONInputNodeDiagnosticNodeJSONDiffNode.json_beforeOutputNode.original_json、部分 atlas 節點(例如 repacker 的 alpha 模式)
reconstructed_json_outJSONOutputNodeJSONDiffNode.json_after、驗證/除錯
changesChanges 清單部分處理節點 + OutputNodeAnimationViewerNode(可選)、報告/除錯
atlas_projectAtlas ProjectInputNode / atlas viewerAtlasUnpackerNode.atlas_projectOutputNode.atlas_project、atlas filters
atlas_in, atlas_outAtlas Project(或 atlas 相關串流)atlas 節點/filtersatlas 節點、AtlasViewerNodeAtlasMergerNode(透過 multi-input)
sprites_out, sprites_in, sprites_data_inSpritesAtlasUnpackerNode、filtersAssetViewerNode.sprites_inAtlasRepackerNode.sprites_data_in
atlas_inputs多個 Atlas Projects多個來源AtlasMergerNode.atlas_inputs(連接多個 atlas)

實用管線

  • 基本 JSON 最佳化InputNode →(可選:DiagnosticNode / filters)→ 最佳化器(RDPNodeSplineNodeQuantizerNode、…)→ OutputNode
  • Atlas 重新打包InputNode.atlas_projectAtlasUnpackerNode →(可選:AssetViewerNode)→ AtlasRepackerNodeOutputNode.atlas_project/atlas_assets

訂閱方案與 Premium 功能

訂閱高級功能Plus定價

re-polish 提供兩種訂閱等級,以滿足不同需求。

Free 方案

  • ✓ 基本節點圖
  • ✓ JSON 檢視器
  • ✓ 可在多條軌道播放動畫並可調整動畫之間混合的時間軸
  • ✓ 有限的優化
  • ✓ Spine 版本:4.2、4.1、4.0、3.8、3.7

Plus 方案($5/月)

  • ✓ 所有免費功能
  • ✓ 涵蓋關鍵影格、曲線與貼圖的最佳化工具組
  • ✓ 將物理烘焙成關鍵影格
  • ✓ 清理烘焙後的關鍵影格為曲線
  • ✓ 圖表預設
  • ✓ 優先支援

如何取得 Plus

點擊頂部導覽列的 Upgrade 按鈕,接著:

  • 選擇 Get Plus
  • 系統會將你導向 Patreon — 完成訂閱
  • 使用同一個 Patreon 帳號保持登入並回到節點編輯器,服務會驗證帳號綁定並啟用 Plus
  • (可選)輸入啟用碼(適用於特殊優惠)

核心概念:有損 vs. 無損

概念有損無損初學者

所有最佳化方法可分為兩種類型:

建議: 一律先從無損最佳化開始。只有在需要進一步縮小檔案大小時才使用有損,並務必以視覺方式檢查結果。

如何衡量效率

指南指標統計

要了解優化的有效性,請注意以下指標:

  • 檔案大小: .json 檔案的最終大小是優化的主要目標。
  • 關鍵影格數量: 在「統計」標籤中,您將找到顯示每個動畫中刪除了多少關鍵影格的表格和圖表。
  • 視覺比較: 始終使用「檢視器」標籤比較「之前」和「之後」的動畫。確保有損優化沒有引入不可接受的視覺偽影。
  • 「結果」表中的報告: 在這裡,您可以詳細檢查對資料所做的每項特定變更。

檢視器:控制面板

檢視器控制介面

檢視器 分頁會在畫布上方覆蓋一個 控制 面板。它分成三個群組:

動畫控制

  • 動畫 — 選擇正在播放的 Spine 動畫。
  • 外觀 — 選擇套用的外觀。
  • 速度 — 播放速度倍率(0.1× → 3.0×)。

視圖控制

  • 重置視圖 — 還原預設的相機/版面位置。
  • 視圖選項 — 用於定位對比視圖的數值偏移: 間距 X / 間距 Y(原始/優化 之間距離)以及 偏移 X / 偏移 Y(全域位移)。

除錯控制

  • 除錯模式 — 啟用除錯渲染覆蓋層(取決於執行階段支援)。
  • 啟用物理 — 切換物理模擬(若骨架使用物理)。
  • 標籤 — 切換標籤覆蓋層。

檢視器:效能面板

效能FPS記憶體UI

Performance 面板會顯示目前播放中的骨架(可為多個)的即時 runtime 指標。

即時

  • FPS — 由監測器量測的每秒幀數。
  • Frame Time — 每幀耗時(毫秒,越低越好)。
  • FPS chart — 以長條顯示最近 120 筆樣本。

骨架指標

  • Visible Slots — 最近一次取樣時可見的 slot 數量。
  • Avg. Visible — 可見 slot 的移動平均(比單一幀更穩定)。
  • Vertices — 目前用於渲染的頂點數。
  • Bounds (px) — 目前骨架邊界(寬×高),單位像素。
  • Avg. Bounds — 邊界的移動平均。
  • Largest Texture — 針對此骨架偵測到的最大 atlas 頁(以尺寸計)。
  • Texture Memory — 已載入 atlas 頁面的預估總貼圖記憶體。若可用,面板也會顯示每頁拆分(檔名、尺寸與預估大小)。

改善(當 Optimized 可用時)

  • Slot Improvement — 比較 Original 與 Optimized 的 Avg. Visible
  • Memory Change — 比較 Original 與 Optimized 的 Texture Memory

檢視器:時間軸

viewertimelineanimationplaybackguide

時間軸面板是位於檢視器底部的可停駐動畫序列器。它可讓您在多個軌道上排列動畫片段、控制播放以及預覽轉場。

軌道 & 片段

  • 最多 4 條動畫軌道 — 每條軌道對應一個 Spine trackIndex 層。較高的軌道會混合在較低軌道之上。
  • 新增動畫 — 點擊任一軌道上的 + 按鈕以開啟動畫選擇器(附搜尋過濾器)。
  • 拖動 & 調整片段大小 — 拖動片段主體沿軌道移動;拖動左/右邊緣可改變起始時間或持續時間。
  • 刪除片段 — 選取片段後按 DeleteBackspace
  • 重疊偵測 — 同一軌道上重疊的片段會以紅色標示。

傳輸控制

  • 播放 / 暫停 / 停止 — 標準播放控制。
  • 上一個 / 下一個 — 跳至上一個或下一個片段的開頭。
  • 動畫速度 — 從 0.1× 到 3.0× 的滑桿。
  • 自動停止 — 播放到時間軸結尾時自動停止。

轉場混合

  • 全域混合時長 — 設定連續片段之間的預設交叉淡入淡出時間。
  • 逐轉場覆蓋 — 點擊兩個片段之間的轉場氣泡可設定自訂混合時長。您可以將個別覆蓋重設回全域值。

搜尋 & 拖曳

  • 播放頭 — 拖動時間尺上的控制點或點擊尺規以跳轉。
  • 游標時間預覽 — 將滑鼠懸停在軌道區域上會顯示游標下方的時間。
  • Web Worker — 搜尋與事件計算會卸載到背景 worker 以確保流暢效能。

物理感知播放

  • Update(作用中的約束)和 None(停用)之間切換物理。
  • 搜尋時,骨架時間會向前推進以正確穩定物理約束。

多骨架支援

  • 目標配對選擇器 — 每條軌道可鎖定所有配對(🌐 所有配對)或特定骨架。
  • 逐骨架位置與縮放 — 為個別骨架設定 X/Y 偏移與縮放輸入。
  • 繪製順序 — 數值輸入以控制渲染層優先順序。

除錯繪製

切換顯示:骨骼、骨骼名稱、區域、網格、外殼、邊界、路徑、裁剪、點。

皮膚選擇

所有已載入骨架中定義的皮膚的多選複選框。

檢視設定

  • 間距 X / Y — 骨架配對之間的間距。
  • 偏移 X / Y — 全域視口偏移。
  • PMA 切換 — 預乘 alpha 模式(Spine 3.x)或圖集 alpha 模式(Spine 4.x:auto / pma / bleed / none)。
  • 骨架標籤 — 切換標籤覆疊。

檢視器:錄製

viewerrecorderrecordingexportvideoguide

錄製器可將檢視器中的 Spine 動畫擷取為影片、動態圖片或圖片序列。

錄製模式

  • ⚡ 快速錄製 — 使用 MediaRecorder + captureStream() 進行即時擷取。僅輸出 WebM。速度快但受限於即時幀率。
  • 🎬 HQ 匯出 — 使用 WebCodecs VideoEncoder + readPixels() 進行離線逐幀渲染。支援所有格式並產出像素精確的輸出。

輸出格式

  • 影片:WebM、MP4、AVI、MOV
  • 動態圖片:GIF、Animated PNG (APNG)
  • 圖片序列:PNG Sequence、WebP Sequence

編解碼器(HQ 匯出)

VP8、VP9、H.264 (AVC)、AV1、ProRes — 可用編解碼器依瀏覽器支援自動偵測。

品質

  • 預設:低(~1 Mbps)、中(~3 Mbps)、高(~5 Mbps)、無損(~20 Mbps)。
  • 自訂位元率 — 以 kbps 指定進行精細控制。

時間

  • FPS:24、30、60 或自訂(1–120 fps)。
  • 暖機 — 錄製開始前讓物理/約束穩定的秒數。
  • 結尾暫停 — 保持最後一幀指定時長。
  • 包含最後一幀 — 切換。

視口 & 裁剪

  • 啟用/停用裁剪 — 切換裁剪區域。
  • 裁剪矩形 — 以 Spine 世界座標表示的 X、Y、寬度、高度。
  • 對齊配對 — 自動將裁剪區域對齊到骨架配對,可設定內距。
  • 互動裁剪覆疊 — 直接在視口中拖動角落/邊緣。

解析度

  • 縮放模式 — 百分比滑桿(10%–400%)。
  • 固定模式 — 明確的像素尺寸(最大 4096px)。
  • 計算後的輸出解析度即時顯示。

渲染選項

  • 渲染骨骼 — 包含除錯骨骼覆疊。
  • 渲染圖片 — 包含附件圖片。
  • 渲染其他 — 邊界框、路徑。
  • MSAA — None / 2× / 4× 反鋸齒。
  • 平滑 — 0–8 級,可選擇演算法(Bicubic / Bilinear)。

背景

  • 透明 — 對不支援 alpha 的格式自動停用(例如 GIF、JPEG)。
  • 純色 — 自訂顏色選擇器。
  • 棋盤格 — 透明度視覺指示器。
  • Alpha 通道支援:VP9+WebM、AV1+MP4、PNG Sequence、APNG、WebP Sequence。

HUD 覆疊

  • 切換:軌道資訊、時間、幀號、FPS、骨架標籤。
  • 自訂文字 — 浮水印字串。
  • 位置 — 4 個角落(左上、右上、左下、右下)。
  • 字型大小 — 8–64px,附文字顏色選擇器。

重複 & 多骨架

  • 重複次數 — 1–100 次循環。
  • 目標配對 — 錄製特定骨架或全部。
  • 骨架模式 — 合併(單一檔案)/ 分開檔案(每個骨架一個檔案)。

檔名範本

含變數的範本字串:{project}{animation}{W}{H}{fps}。已解析檔名的即時預覽會顯示。

時間軸整合

錄製範圍會以紅/橙色虛線片段顯示在時間軸上。拖動邊緣調整範圍大小、拖動主體重新定位,或使用設定按鈕(⚙️)開啟完整錄製設定。

結果 分頁

結果表格優化

結果 分頁會顯示詳細的優化輸出。

  • 結果表 — 以「每項變更一列」的方式呈現 JSON 優化結果(例如哪個 動畫/骨骼/屬性/關鍵影格 被修改或移除)。
  • 精靈/圖集對比 — 使用紋理優化時,此區塊會比較精靈尺寸與打包結果。

提示: 使用此視圖來回答: 到底改了什麼?

統計 分頁

統計圖表指標

統計 分頁會以圖表與彙總指標來總結優化結果。

  • 優化圖表 — 視覺化優化對整個資料集的影響(當 JSON 優化產生變更時)。
  • 指標表 — 重要數字,例如原始/新大小與縮減百分比。
  • 紋理打包統計 — 若使用圖集重新打包,會顯示頁數、總/已用面積、效率,以及每頁拆解。

使用此分頁來回答: 整體提升了多少?

管線範例(影片)

影片範例管線YouTube

以下整理自官方 YouTube 播放清單的完整實例管線。

開啟完整播放清單

範例

Spine2D 實驗 1:RDP 演算法曲線最佳化 — Spine 2D 基礎優化示範:Ramer–Douglas–Peucker(RDP)演算法移除多餘曲線/關鍵影格資料以縮小 JSON。RDP 可能移除重要關鍵影格,因此務必檢查動畫,並在 RDP 節點前用過濾節點排除敏感骨骼/插槽。 在 YouTube 觀看

Spine2D 實驗 2:量化演算法曲線最佳化 — 量化是最安全的曲線優化方式:將數值四捨五入(通常到小數 1 位)可立即降低大小。例: [0.115,14.5,0.222,-27.78] → [0.1,14.5,0.2,-27.8]。在輸出節點前最後一步使用量化節點以固定優化;影片展示幾乎難以察覺的前後差異。 在 YouTube 觀看

Spine2D 實驗 3:使用 Spline 與 Refit 重建曲線 — Spline 對直線段無損(移除中間多餘關鍵影格),Refit 則為有損但強大:將複雜區段重建為單一貝茲曲線。這些演算法適合在物理烘焙與 Schneider 節點清理後使用。注意:Refit 迭代超過 100 可能需數分鐘才找到最佳曲線。影片展示兩者運作方式與優化比例。 在 YouTube 觀看

Spine2D 實驗 4:使用附件可見性與清理節點移除冗餘資料 — 使用 Attachment Visibility 與 Cleanup 節點的結構性 Spine 2D 優化。Attachment Visibility 在 alpha 降為 0 時停用附件並在淡入時恢復,減少 draw call 與冗餘關鍵影格。Cleanup 移除邏輯冗餘:未使用的顏色/alpha 軌道、被約束完全控制的 IK 旋轉關鍵影格,以及路徑約束關鍵影格。影片說明此類邏輯優化與曲線簡化的差異。 在 YouTube 觀看

Spine2D 實驗 5:建立非線性管線(過濾器與合併節點) — 非線性 Spine 2D 優化:用過濾器(動畫、骨骼、插槽、參數、皮膚)分流資料,在平行分支執行不同演算法(例如身體骨骼採用強力壓縮、臉部動畫保持無損),再用 Merge 節點合併為單一 skeleton。此流程超越簡單的 Input → Optimize → Output,能只針對需要的部分優化。 在 YouTube 觀看

Spine2D 實驗 6:貼圖重打包與選擇性縮放(自訂節點) — 進階貼圖優化流程:Atlas Unpacker/Repacker 節點可在單一圖中完成 atlas 的拆包、縮放/壓縮與重打包,比標準 Spine 流程更快。非線性流程可分拆資產、保留角色貼圖 100%、其他縮至 25%,再合併為共享 atlas。Atlas/Asset Viewer 節點提供每一步的視覺檢視與過濾,便於設定縮放目標、選擇性處理並重組為可重用模板。 在 YouTube 觀看

Spine2D 實驗 7:使用縮放節點快速調整骨架尺寸 — 端到端 Spine 2D 優化流程加上骨架縮放。Scale 節點把繁瑣的 Spine 流程(匯出/匯入、repack/unpack、修正路徑)變成單一步驟:設定目標尺寸、在視窗即時預覽並即時迭代。影片整合曲線/關鍵影格優化、資產處理與骨架縮放。 在 YouTube 觀看

Spine2D 實驗 8:公開測試版節點總覽 — 公開測試版所有節點的總覽,以及 re‑polish 如何連結動畫師與開發者需求。涵蓋冗餘關鍵影格清理、Bézier→線性簡化、尺寸縮減的四捨五入、不可見附件移除、未使用屬性清理、非英文字元偵測,以及 atlas unpack/filter/scale/repack。Dual Viewer 以並排視覺與 FPS 比較驗證結果。Public Beta 於 re-polish.com 上線。 在 YouTube 觀看

Spine2D 實驗 9:將物理約束烘焙為關鍵影格 — 在這支影片中,我示範將物理約束烘焙為標準關鍵影格的最新實驗。新的烘焙演算法確保:完美循環(起始與結尾影格之間零抖動或跳躍)、最佳化檔案大小(自動清理曲線讓 JSON 尺寸接近原始)以及向下相容(烘焙後的關鍵影格可讓 Spine 4.2 的物理動畫在 Spine 4.1 甚至 4.0 中使用)。 在 YouTube 觀看

Nodes

Input

將 Spine 專案檔、純 JSON 輸入、示範素材與 ZIP 套件載入至圖表。

用途:這是大多數工作流程的主要入口節點。它會讀取 JSON、atlas 與貼圖,並將其正規化為下游節點可處理的內部資料。

支援模式:
1. 完整專案:JSON + atlas + 貼圖
2. 僅 JSON:在沒有 atlas 的情況下處理 skeleton/animation 資料
3. ZIP 套件:包含完整專案的封裝 zip
4. 示範素材:內建範例資料,便於快速測試

主要輸出:
- **payload_out**:供最佳化節點使用的正規化資料
- **original_json_out**:用於比較或重建的原始 JSON
- **atlas_project_out**:在提供貼圖時解析後的 atlas 專案

Picture Input

將獨立的 PNG/JPEG 圖片加入 viewport,讓你能建立更乾淨的預覽與展示畫面。

用途:使用此節點可將圖片直接放入 viewport,作為展示圖層或視覺輔助。當你想裝飾場景、加入輔助圖像,並在錄製影片或示範前讓專案預覽看起來更精緻時,它會很有幫助。

工作流程:載入一張圖片後,使用 viewport 工具來縮放、移動,並調整其 z-index,讓它在你的構圖中位於正確位置。這讓你可以在不碰觸主要 Spine 專案資料的情況下,方便地建立吸引人的展示畫面。

此節點為獨立節點,不會公開 graph sockets。

Output

收集最終結果,並讓你可將最佳化後的資料下載為個別檔案、分組檔案集或封存檔。

用途:它是最佳化 JSON、atlas 資料、貼圖與 sprites 的匯出中樞。它可以從單一 JSON/atlas/貼圖組合、多組檔案集合,或僅 sprites 來組裝結果,適合在你想輸出圖片而不重建完整 Spine 專案時使用。

匯出選項:
- 個別下載檔案,或下載成單一封存檔
- 下載已封裝結果,或下載包含未封裝檔案的封存檔
- 以精簡格式或易讀的 pretty-print 格式匯出 JSON
- 匯出完整 Spine 專案資料,或僅匯出 sprite/image 結果

串接工作流程:OutputNode 不必一定是圖表的絕對終點。你可以把它的輸出傳到另一個 pipeline 階段,讓相同檔案再跑額外的最佳化流程。實務上,key 與 curve 最佳化已測試到最多連續 3 次迭代。

主要輸出:
- **reconstructed_json_out**:重建後的 Spine JSON
- **original_json_passthrough_out**:原始 JSON 的直通輸出
- **payload_out**:供進一步串接的 payload
- **changes**:收集到的最佳化變更
- **atlas_assets**:可直接匯出的 atlas 資源

RDP

簡化動畫曲線(RDP)。

目的:移除位於兩點之間直線上的點,以減少線性或近線性動畫段落的關鍵幀數量。

黃金法則:預設停用。可保護形狀明顯的曲線(面積/曲率),避免被過度拉直為線性。僅在完成目視檢查後、需要更激進壓縮時再關閉。

Socket 鍵:payload_in, payload_out, changes

Spline

使用樣條曲線進行曲線最佳化。

目的:在維持視覺品質的情況下進行平滑曲線擬合。

Socket 鍵:payload_in, payload_out, changes

Refit

以 Bezier 重新擬合以減少關鍵影格數。

目的:在容差範圍內以較少的曲線進行擬合。

Socket 鍵:payload_in, payload_out, changes

Quantizer

降低關鍵影格和曲線中數值的精度。

目的: 通過將數字四捨五入到指定的小數位數來減少檔案大小的簡單但有效的方法。

使用方法: 可應用於幾乎所有動畫資料。關鍵影格計數越高越有效。

注意: 過於激進的量化(低精度)可能會在動畫中引起抖動或視覺偽影。

Cleanup

執行各種清理任務以刪除冗余或不必要的動畫資料。

用途:專門用來移除其他最佳化器可能漏掉的特定冗餘資料。

用法:把 payload 接到 'payload_in',從 'payload_out' 取得結果。若你需要逐項變更報告,也可使用 'changes'。

Socket 鍵:
- 輸入: payload_in
- 輸出: payload_out, changes

目前支援的清理項目:
1. **移除未使用的顏色/alpha 軌道**:移除動畫中從未可見的 slot 之顏色/alpha timeline。
2. **移除冗餘 IK 旋轉**:當骨骼完全由 IK constraint 控制且 mix 為 100% 時,移除其旋轉關鍵影格。
3. **移除路徑約束關鍵影格**:當骨骼完全由 path constraint 控制(mix 為 100%)時,移除旋轉/位移關鍵影格。
4. **清理非英文字符**:替換名稱/識別字中的非英文字符,以避免下游工具出問題。

Scale

按指定係數縮放動畫關鍵影格中的所有數值。

目的: 均勻縮放動畫資料,適用於按比例調整骨架大小或調整動畫強度。

使用方法: 連接到有效負載並設定縮放係數。大於1.0的值放大,小於1.0的值縮小。

參數:
- **Scale Factor**: 應用於所有位置和大小值的乘數。
- **Include Rotations**: 是否也縮放旋轉值(通常禁用)。

使用案例:
- 調整導入動畫的大小以匹配新骨架尺寸
- 創建動畫的誇張或微妙變體
- 批量縮放多個動畫以適應不同角色大小

Schneider

使用施奈德曲線擬合演算法將平滑的貝茲曲線擬合到動畫關鍵影格。

目的: 高級曲線擬合,可從密集的關鍵影格序列生成自然外觀的貝茲曲線。

可用性:**僅 Plus 節點**。

工作原理: 施奈德演算法分析關鍵影格位置和切線,生成與原始運動緊密匹配的最佳貝茲控制點。

參數:
- **Error Tolerance**: 與原始關鍵影格的最大允許偏差。越低=越準確,越高=曲線越平滑。
- **Corner Angle**: 將曲線分割成段的閾值角度(度)。

最適合:
- 具有許多關鍵影格的手繪或導入動畫
- 將線性插值轉換為平滑的貝茲曲線
- 在保持曲線品質的同時減少關鍵影格數量

注意: 比 RDP 等更簡單的演算法計算量更大,但產生更優質的曲線。

Physics Constraint Bake

Bake Physics Constraints to Keys:將 PhysicsConstraint 動作轉為旋轉/位移關鍵影格並移除物理時間軸。

目的: 將執行期物理模擬轉為明確的關鍵影格,使動畫可確定且可在無 PhysicsConstraints 的情況下編輯。Bake 後會從 payload 移除 PhysicsConstraints 與物理時間軸。

可用性:**僅 Plus 節點**。

輸入/輸出:
- **payload_in** → **payload_out**(baked)
- **changes**(可選變更清單)

控制項:
- **Sample FPS**: 模擬取樣率。
- **Bake Rotation**: 寫入旋轉關鍵影格。
- **Bake Translation**: 寫入位移關鍵影格。
- **Bake Translation (Children)**: 對依賴物理動作的子骨骼套用位移 bake。

備註:
- 需要原始 Spine JSON 以重建模擬資料。
- 當需要移除 PhysicsConstraints 但保留動作時使用。

Attachment Visibility

通過在 alpha 為零時將插槽的附件設為 null 來優化渲染。

目的: 防止遊戲引擎必須處理或渲染不可見的附件。

使用方法: 分析 alpha/顏色軌道並自動在對應的 'attachment' 軌道上添加或修改關鍵影格。

參數:
- **Alpha Threshold**: 將附件視為不可見的 alpha 值。
- **Auto Restore**: 如果啟用,當 alpha 值超過閾值時,節點將自動恢復最後可見的附件。

Payload Merger

將多個處理過的動畫有效負載合併回單個統一有效負載。

目的: 對於並行處理管線至關重要,其中不同的動畫或骨骼組被分別優化並需要重新組合。

合併策略:
1. **基礎輸入**: 提供骨架結構(骨骼、插槽、皮膚等)
2. **覆蓋輸入**: 提供替換基礎軌道的處理過軌道
3. **最後寫入優先**: 當多個覆蓋提供相同軌道時,最後一個優先

衝突檢測:
- 覆蓋輸入之間的衝突被檢測並報告
- 基礎 → 覆蓋替換是正常行為(不是衝突)
- 軌道衝突時顯示警告提示

管線範例:
```
Input → AnimFilter('run') → Cleanup ───────┐
      → AnimFilter('idle') → Quantizer ────┤
      → (base) ────────────────────────────→ Merger → Output
```

使用案例:
- 不同動畫使用不同優化器
- 單獨的骨骼/插槽處理後重新組合
- A/B 測試不同的優化策略

Animation Viewer

用於在優化前後檢查和比較動畫曲線的視覺化工具。

目的: 為所選軌道提供關鍵影格和曲線的圖形表示。

使用方法: 通過連接 'payload_before' 和 'payload_after' 兩個輸入,它將覆蓋原始和優化的曲線,使您的優化影響更容易視覺化。

Animation Filter

根據動畫名稱(例如 'run'、'idle')篩選動畫軌道。

目的: 對不同動畫應用不同優化策略很有用。

使用方法: 例如,您可以對背景角色動畫應用激進的有損優化(如 DCT),同時對主角動作使用無損優化(如 Spline)。

Asset Filter

按名稱過濾圖集資產,以兩種模式工作:解包前(過濾圖集文本)或解包後(過濾精靈)。

目的:控制工作流程中包含哪些資產 - 從圖集解包哪些資產或重新打包中包含哪些已解包的精靈。

模式:
1. 預解包模式(AtlasUnpacker之前):
   - 輸入:atlas_in (atlas_project)
   - 輸出:atlas_out (已過濾的atlas_project)
   - 工作流程:InputNode → AssetFilter → AtlasUnpacker
   - 使用案例:過濾從圖集解包哪些資產(節省處理時間)

2. 後解包模式(AtlasUnpacker之後):
   - 輸入:sprites_in (sprites)
   - 輸出:sprites_out (已過濾的sprites)
   - 工作流程:AtlasUnpacker → AssetFilter → AtlasRepacker
   - 使用案例:過濾最終圖集中包含哪些已解包的精靈

UI行為:
- 在預解包模式中:解析圖集文本以發現資產名稱
- 在後解包模式中:從精靈陣列中發現資產名稱
- '允許全部'切換:選中時,通過所有資產(列表顯示但禁用)
- 複選框:選擇要包含的特定資產(當'允許全部'未選中時)

範例:
- 預解包:僅選擇'char_*'資產以僅解包角色精靈
- 後解包:從最終重新打包的圖集中排除'background_*'精靈
- 通過選擇'weapon_*'模式創建僅武器圖集

Bone Filter

根據骨骼名稱篩選骨骼動畫軌道。

目的: 允許從優化過程中定位或排除特定骨骼。

使用方法: 您可能希望排除敏感骨骼,例如用於面部表情的骨骼,使其免受激進優化的影響以保留每個細節,同時大量優化不太重要的骨骼。

Skin Filter

根據皮膚名稱篩選動畫和資產資料。

目的: 僅處理多皮膚 Spine 專案中的特定皮膚。

使用方法: 當 Spine 專案有多個皮膚(例如 'default'、'armor'、'casual')時,此節點可讓您篩選要包含在處理中的皮膚。

參數:
- **Skins List**: 每個可用皮膚的複選框
- **Allow All**: 包含所有皮膚的切換(預設)

使用案例:
- 為每個皮膚創建單獨的圖集
- 對不同皮膚應用不同的優化
- 從優化的建構中排除很少使用的皮膚

注意: 皮膚共享骨架結構,但可能有不同的附件。

Slot Filter

根據插槽名稱篩選插槽動畫軌道。

目的: 對於定位或排除可能具有特殊時序或可見性要求的特定插槽很有用。

使用方法: 您可以使用它來排除通過代碼切換的武器或效果插槽,使其不受附件可見性優化的影響。

Parameter Filter

根據屬性類型(例如 rotation、scale、color)篩選動畫軌道。

目的: 允許僅對特定類型的動畫資料應用後續優化。

使用方法: 將此節點放在優化器之前以限制其範圍。例如,您可以僅對 'translation' 和 'scale' 軌道應用 RDP 優化。

Atlas Unpacker

從 Spine 紋理圖集中提取單個精靈。

目的:將圖集檔案分解為其組成精靈,允許個別分析或重新打包。

用法:將 InputNode 的 'atlas_project' 輸出連接到此節點的 'atlas_project_in' 輸入。輸出可以發送到 AssetViewer 進行檢查或發送到 AtlasRepacker 進行優化。

⭐ 網格裁剪:將 InputNode 的 'Original JSON' 輸出連接到 'Skeleton JSON' 輸入,以啟用自動將精靈裁剪到其網格邊界(而不是矩形邊界)。通過移除網格船體外部的透明像素,這可以顯著減少具有網格附件的精靈的紋理記憶體使用量。

輸出:
- **sprites_out**: 標準化的 sprites 陣列(供 viewer/repacker 使用)
- **sprites_data_out**: 提取出的 sprite 圖片/中繼資料(結構化 bundle)
- **atlas_out**: Atlas Project 直通

Socket 鍵: atlas_project, atlas_project_in, skeleton_json_in, sprites_out, sprites_data_out, atlas_out

Atlas Repacker

將單個精靈重新打包到一個或多個新的優化紋理圖集中。

目的: 通過建立高效的精靈表來優化紋理記憶體並可能減少繪製呼叫。

使用方法: 接受 'sprites_data'(通常來自 AtlasUnpacker)並生成新的圖集佈局。

參數:
- **Max Texture Size**: 輸出圖集頁面的最大寬度/高度。
- **Padding**: 每個精靈之間的像素距離。
- **Scale**: 在打包之前縮放所有精靈。
- **Power of Two**: 強制輸出圖集尺寸為 2 的冪(例如 1024、2048),某些平台需要。
- **Allow Rotation**: 允許精靈旋轉 90 度以獲得更好的打包效率。

Atlas Viewer

用於在解包前檢查圖集結構的輕量視覺化與分析工具。

目的:提供快速預覽圖集頁面與區域的方法,而無需執行耗時的解包操作。可用於驗證圖集結構並找出未使用的區域。

使用方法:將 InputNode 的 'atlas_project' 輸出連接到 'atlas' 輸入。可選擇將 'original_json_out' 連接到 'json' 輸入以分析區域使用情況。

功能:
- 視覺化預覽圖集頁面與區域邊界
- 區域高亮:綠色=使用中,紅色=在 skeleton 中未使用
- 頁面切換控制
- 顯示總區域數與未使用區域數的統計

使用情境:
- 優化前快速驗證圖集
- 找出多餘資源(未使用區域)
- 除錯圖集打包問題
- 理解資產結構

Socket 鍵: atlas_project, atlas_in, atlas, json

Atlas Merger

將多個圖集來源合併為單個統一圖集。

目的: 將多個圖集專案合併為一個。

輸入:
- **atlas_inputs**: 圖集專案的多重輸入陣列

輸出:
- **atlas_out**: 合併後的圖集專案
- **merged_out**: 舊版合併輸出
- **merged_atlas_out**: 舊版合併輸出

使用案例:
- 合併角色圖集和武器圖集
- 合併基礎精靈和 DLC 內容
- 並行圖集處理後重新合併

典型管線:
```
InputA → Unpacker → Repacker ─┐
                               ├→ Atlas Merger → Unpacker → Repacker → Output
InputB → Unpacker → Repacker ─┘
```
Repacker 之前的資料是個別精靈;Repacker 之後成為圖集專案。Atlas Merger 合併圖集專案,然後最終的 Unpacker → Repacker 步驟將所有內容更緊密地打包成單一統一圖集。

Asset Viewer

顯示從解包圖集中提取的單個精靈。

目的: 用於圖集操作的視覺化除錯工具。

使用方法: 接受來自 Atlas Unpacker 節點的 'sprites_data',並允許您視覺化每個提取的圖像、檢查其屬性(尺寸、旋轉等)並驗證解包後的視覺準確性。