Skip to main content
Go to Editor

ウィキ

このガイドでは、JSON Optimizer をすぐに使い始めるための基本手順を説明します。 プロジェクトを読み込む: InputNode を使って .json / .atlas / .png を読み込みます。 プリセットを選ぶ(Plus モード): Plus モードでは、右パネルから組み込みプリセット(例: "Bas

FPSUIYouTubeanimationexportguideplaybackrecorderrecordingtimelinevideoviewerガイドコントロールサブスクリプションソケットタイプチャートテーブルデータパイプラインパフォーマンスビューアプラスプレミアムメトリクスメモリワークフロー価格初心者動画接続損失あり損失なし最適化概念結果統計

はじめに: 基本的なワークフロー

初心者ワークフローガイド

このガイドでは、JSON Optimizer をすぐに使い始めるための基本手順を説明します。 プロジェクトを読み込む: InputNode を使って .json / .atlas / .png を読み込みます。 プリセットを選ぶ(Plus モード): Plus モードでは、右パネルから組み込みプリセット(例: "Basic Fallback")を選択します。これにより最適化グラフが自動で構築されます。Free モードでは、最小構成...

Read article

ソケットの種類とデータフロー

ソケットタイプデータ接続

この記事では、ノードグラフのソケットで使われるデータ型と、どこに接続できるかを説明します。 ソケット型 Spine Payload — ランタイム向けに整形された Spine プロジェクト表現。ほとんどの処理ノードが使用します。 Atlas Project — アトラスのメタデータ + ページ画像。アトラス系ノードが使用します。 Sprites — 展開されたスプライト/リージョン(Atlas Unpacker → アセット表示...

Read article

サブスクリプションプランとプレミアム機能

サブスクリプションプレミアムプラス価格

re-polish はニーズに合わせて2つのサブスクリプションプランを提供します。 Freeプラン ✓ 基本ノードグラフ ✓ JSONビューアー ✓ 複数トラックで再生でき、アニメーション間のミックスを調整できるタイムライン ✓ 限定的な最適化 ✓ Spine 版本:4.2、4.1、4.0、3.8、3.7 Plusプラン($5/月) ✓ すべての無料機能 ✓ キー、カーブ、テクスチャ、スケルトンスケールの最適化 ✓ アセット重複排...

Read article

基本概念: 損失あり vs 損失なし

概念損失あり損失なし初心者

最適化手法は大きく 2 種類に分かれます: 損失なし: 冗長なデータのみを削除する手法... 例: Spline最適化ノード , CleanupNode . 損失あり: アニメーションカーブを簡略化する手法... 例: RDP最適化ノード , QuantizerNode . 推奨: まずは損失なし最適化から始めてください。さらにファイルサイズを減らす必要がある場合にのみ損失あり手法を使い、必ず見た目で確認しましょう。

Read article

効率の測定方法

ガイドメトリクス統計

最適化の効果を理解するには、次の指標に注意してください: ファイルサイズ: .json ファイルの最終サイズが最適化の主な目標です。 キーフレーム数: 「統計」タブで、各アニメーションで削除されたキーフレームの数を示すテーブルとグラフを見つけることができます。 視覚的比較: 常に「表示」タブを使用して「前」と「後」のアニメーションを比較してください。損失あり最適化が許容できない視覚的アーティファクトを導入していないことを確認してく...

Read article

表示: コントロールパネル

ビューアコントロールUI

表示 タブはキャンバス上に 操作 パネルを重ねて表示します。3つのグループに分かれています: アニメーション操作 アニメーション — 再生するSpineアニメーションを選択します。 スキン — 適用するスキンを選択します。 速度 — 再生速度の倍率(0.1× → 3.0×)。 表示操作 表示をリセット — 既定のカメラ/レイアウト位置に戻します。 表示オプション — 比較表示の位置を調整する数値オフセット: 間隔X / 間隔Y (...

Read article

表示: パフォーマンスパネル

パフォーマンスFPSメモリUI

Performance パネルは、現在再生中のスケルトンに対するランタイム指標をリアルタイムで表示します。 リアルタイム FPS — モニターで計測したフレーム/秒。 Frame Time — 1 フレームあたりの時間(ms、低いほど良い)。 FPS chart — 直近 120 サンプルをバー表示。 スケルトン指標 Visible Slots — 直近サンプルで可視だったスロット数。 Avg. Visible — 可視スロット数...

Read article

表示: タイムライン

viewertimelineanimationplaybackguide

タイムライン パネルはViewerの下部にあるドッカブルなアニメーションシーケンサーです。複数のトラックにアニメーションクリップを配置し、再生を制御し、トランジションをプレビューできます。 トラックとクリップ 最大4アニメーショントラック — 各トラックはSpineの trackIndex レイヤーにマップされます。上位トラックは下位トラックにブレンドされます。 アニメーション追加 — 任意のトラックの + ボタンをクリックしてア...

Read article

表示: レコーダー

viewerrecorderrecordingexportvideoguide

レコーダー はViewerからSpineアニメーションを動画、アニメーション画像、または画像シーケンスとしてキャプチャします。 録画モード ⚡ Quick Record — MediaRecorder + captureStream() を使用したリアルタイムキャプチャ。WebM出力のみ。高速ですがリアルタイムフレームレートに制限されます。 🎬 HQ Export — WebCodecs VideoEncoder + readP...

Read article

結果タブ

結果テーブル最適化

結果 タブは、最適化の詳細な出力を表示します。 結果テーブル — JSON最適化結果を変更単位(行)で表示します(例: どのアニメーション/ボーン/プロパティ/キーフレームが変更/削除されたか)。 スプライト/アトラス比較 — テクスチャ最適化を使用した場合、このセクションでスプライトサイズとパッキング結果を比較します。 ヒント: 結果ビューは 具体的に何が変わったのか を確認するのに役立ちます。

Read article

統計タブ

統計チャートメトリクス

統計 タブは、最適化結果をチャートと集計指標として要約します。 最適化チャート — データセット全体に対する最適化の影響を可視化します(JSON最適化で変更が発生した場合)。 指標テーブル — original/new サイズや削減率などの主要な数値。 テクスチャパッキング統計 — アトラスの再パッキングを使用した場合、ページ数、総/使用面積、効率、およびページ別内訳を表示します。 このタブは 全体としてどれくらい改善したか を確...

Read article

パイプライン例(動画)

動画パイプラインYouTube

公式YouTubeプレイリストから、実際のパイプラインを紹介します。 プレイリストを開く 例 Spine2D 実験1: RDPアルゴリズムによる曲線最適化 — Spine 2D の基本的な最適化デモ。Ramer–Douglas–Peucker(RDP)アルゴリズムが冗長なカーブ/キーのデータを削除してJSONを縮小します。RDPは重要なキーを削除する場合があるため、必ずアニメーションを確認し、RDPノードの前でフィルターノードによ...

Read article

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プロジェクト

Video To Png Sequence

Spineワークフロー向けに、動画クリップをPNGフレーム連番へ変換します。

これはInputメニューで使える無料の入力ツールで、実制作のワークフローに対応します。グリーンスクリーン向けのクロマキーと、黒背景向けのアンプリマルチ風マット補正をサポートします。出力はpayload_outとatlas_outに送られます。

Picture Input

スタンドアロンのPNG/JPEG画像をビューポートに追加し、より整ったプレビューやプレゼン用ショットを作成できるようにします。

目的: このノードを使うと、画像をプレゼンテーションレイヤーや視覚補助としてビューポートに直接配置できます。シーンを装飾したいとき、補助グラフィックを追加したいとき、動画やデモを録画する前にプロジェクトのプレビューをより洗練された見た目にしたいときに便利です。

ワークフロー: 画像を1枚読み込み、その後ビューポートツールを使って拡大縮小、移動、z-indexの調整を行い、コンポジション内で正しく収まるようにします。これにより、Spineプロジェクトのメインデータに触れずに魅力的なショーケース用ショットを簡単に作成できます。

このノードはスタンドアロンで、グラフソケットは公開しません。

Version: 生成されたスタブスケルトン用のSpine JSONバージョン形式。
Blending: 生成されたアタッチメントのブレンドモード(通常、加算、乗算、スクリーン)。

Psd To Skeletons

レイヤー付きのPSD/PSBファイルを読み込み、Photoshopのシーンレイアウトを保ったまま正確なプレビュー用の連携したSpineスケルトンを生成します。

目的: シーンがすでにPhotoshop上で組まれており、そのレイヤースタックをviewer内の連携したSpineスケルトン群に変換したい場合に使うノードです。表示中のPSDレイヤーはそれぞれPSD座標に基づく画像スタイルのスケルトンになり、previewの組み立てやオブジェクトの正確な配置が大幅に簡単になります。

Viewer workflow: 生成後もviewer内でdraw orderを変更したり、取り込んだPSDレイヤーの間に別のスケルトンを配置したりできます。これにより、追加のSpineキャラクターやpropsをPhotoshopコンポジションの中に自然に差し込めます。

利用可能範囲: 無料ノードです。このノードはスタンドアロンで、graph socketは公開しません。

Version: 生成されるレイヤースケルトンに使用するSpine JSONのバージョン形式。
Blending: 生成されるattachmentに使用するブレンドモード。
Load PSD: PSD/PSBピッカーを開き、選択したファイルから連携したレイヤースケルトンを生成します。
File Info: 現在読み込まれているPSD/PSBファイルの読み取り専用サマリー。
Layer Count: 連携スケルトンに変換される表示レイヤー数の読み取り専用カウント。
Preflight: 生成前に検出されたレイヤー名の問題を示す読み取り専用レポート。

Project Input

Spine プロジェクトのフォルダーまたはアーカイブをグラフに読み込み、下流のプロジェクト対応ノード向けに project_out ソケット経由で ProjectPayload を公開します。

目的: プロジェクトベースのワークフロー向けの入口ノードです。Spine プロジェクトのフォルダーまたはアーカイブをスキャンし、ProjectPayload を構築し、Project Viewer、フィルター、Static Bake、Deduplicator などの下流ノードで使うキャッシュ済みメタデータを保持します。

コントロール:
- **Load Folder**: File System Access API 経由でシステムのフォルダーピッカーを開き、選択したディレクトリをスキャンし、サマリーを更新し、メタデータをキャッシュし、後続の変更を再スキャンできるよう file watcher を開始します。
- **Browse (Fallback)**: **showDirectoryPicker()** がないブラウザー向けに、隠し **webkitdirectory** input を使います。プロジェクトは読み込めますが、永続的なディレクトリ handle がないため、ライブ監視や信頼できる再スキャンは使えません。
- **Load Archive**: **.zip** または **.spine** アーカイブを仮想プロジェクトツリーとして読み込みます。アーカイブ由来のプロジェクトはディレクトリ handle を保持しないため、**Rescan** は仕様上利用できません。
- **Rescan**: ディレクトリ handle がある場合に、前回読み込んだフォルダーを再スキャンします。スキャン前に読み取り権限を再確認します。fallback browse や archive モードで読み込んだプロジェクトでは、通常、読み込み済みディレクトリがないと表示されます。
- **Clear Project**: ファイル監視を停止し、現在の payload、サマリー、execution cache、キャッシュ済み payload メタデータを消去します。
- **Reset to Defaults**: 汎用ノードコントロールだけをリセットします。現在のプロジェクトは**削除されず**、**Clear Project** の代わりにもなりません。
- **Drop folder or .zip here**: フォルダーとアーカイブを受け付け、同じ読み込み pipeline に流す drag-and-drop の入口です。

出力:
- **project_out**: スキャン済みツリー、フラットなファイル一覧、サイズ合計、タイプ内訳を持つ ProjectPayload で、下流のプロジェクト対応ノード向けです。
- **stats**: DEV 専用の診断出力です。

Output

最終結果を集約し、最適化されたデータを個別ファイル、グループ化されたファイルセット、またはアーカイブとしてダウンロードできるようにします。

目的: 最適化済みJSON、atlasデータ、テクスチャ、スプライトのエクスポートハブとして機能します。単一のJSON/atlas/テクスチャセット、複数のファイルセット、またはフルSpineプロジェクトを再構築せずに画像出力だけが必要な場合はスプライトのみから結果を組み立てられます。

エクスポートオプション:
- ファイルを個別に、または単一のアーカイブとしてダウンロード
- パック済み結果、または展開済みファイルを含むアーカイブをダウンロード
- JSONをコンパクト形式または読みやすい整形済み形式でエクスポート
- 完全なSpineプロジェクトデータ、またはスプライト/画像結果のみをエクスポート

チェーンワークフロー: OutputNodeは必ずしもグラフの絶対的な終点である必要はありません。出力を別のパイプライン段階に渡し、同じファイルに追加の最適化パスを実行できます。実運用では、keyとcurveの最適化は連続3回の反復までテストされています。

主な出力:
- **reconstructed_json_out**: 再構築されたSpine JSON
- **original_json_passthrough_out**: 元のJSONのパススルー
- **payload_out**: 追加チェーン用のpayload
- **changes**: 収集された最適化変更
- **atlas_assets**: エクスポート準備済みのatlasリソース

RDP

アニメーション曲線を簡略化します(RDP)。

目的: 直線またはほぼ直線のアニメーション区間で、2点を結ぶ直線上にある点を削除してキーフレーム数を減らします。

黄金ルール: 既定で無効です。形状が大きいカーブ(面積/曲率)を直線化から保護します。より強い圧縮が必要な場合のみ、目視確認のうえで無効化してください。

ソケットキー: payload_in, payload_out, changes

Epsilon: 元のカーブからの最大偏差。値が大きいほどキーフレームが多く削除されますが、カーブの詳細が失われる場合があります。
Steep: 曲率感度しきい値。複雑なカーブが直線に平坦化されるのを防ぎます。
Round Mode: 最適化された値の丸めモード:なし(元を維持)、10分の1(小数点1桁)、整数。
Golden Rule: 有効にすると、重要な形状/面積を持つカーブがRDPによって簡略化されるのを防ぎます。
S Run Length: テンプレートベースのフラット化を有効にする前に必要な、連続する標準 Spine S カーブの最小数です。0 にするとこの機能を無効化します。
S Deviation: 標準 Spine S カーブテンプレートから許容される正規化偏差です(パーミル、0〜300)。小さい値ほど一致が厳密になり、大きい値ほどテンプレートに近い連続区間をより多くフラット化します。

Spline

スプラインによる曲線最適化。

目的: 視覚品質を保ちながら滑らかな曲線フィッティングを行います。

ソケットキー: payload_in, payload_out, changes

Max Error: スプラインフィッティングの最大許容近似誤差。低い = 元により近いフィット。
Min Group Size: 削除可能なグループを形成するために必要な最小連続線形キーフレーム数。

Refit

Bezier へのリフィットでキーフレーム数を削減します。

目的: 許容差内でより少ない曲線にフィットします。

ソケットキー: payload_in, payload_out, changes

Error Tolerance: 元のカーブとフィットされたベジェの最大許容偏差。低い = より正確な一致。
Max Iterations: カーブフィッティングの最適化反復回数。多い = より良いフィットだが遅い。

Quantizer

キーフレームとカーブの数値の精度を削減します。

目的: 指定された小数点以下の桁数に数値を丸めることによりファイルサイズを削減する簡単で効果的な方法です。

使用法: ほぼすべてのアニメーションデータに適用できます。キーフレーム数が多いほど効果的になります。

注意: 過度に攻撃的な量子化(低精度)は、アニメーションに震えや視覚的アーティファクトを引き起こす可能性があります。

Precision: キーフレーム値の小数桁数。少ない = ファイルが小さいが精度が低い。

Cleanup

冗長または不要なアニメーションデータを削除するためのさまざまなクリーンアップタスクを実行します。

目的: 他のオプティマイザでは見落とされがちな特定の冗長データを削除するための専用ツールです。

使い方: payload を 'payload_in' に接続し、結果を 'payload_out' から取得します。変更単位のレポートが欲しい場合は 'changes' も使用してください。

ソケットキー:
- 入力: payload_in
- 出力: payload_out, changes

現在サポートされているクリーンアップ:
1. **Remove Unused Color/Alpha Tracks**: アニメーション中に一度も表示されないスロットの color/alpha タイムラインを削除します。
2. **Remove Redundant IK Rotations**: mix が 100% の IK 制約で完全に制御されているボーンの回転キーフレームを削除します。
3. **Remove Path Constraint Keys**: パス制約(mix 100%)で完全に制御されているボーンの rotate/translate キーフレームを削除します。
4. **Sanitize Non-English Characters**: 後続ツールでの問題を避けるため、名前/識別子の非英数字文字を置換します。

Remove Unused Color Tracks: デフォルト値から変化しないカラー/アルファコンポーネントを削除。
Remove Redundant IKRotation: IKコンストレインによって完全に制御されるボーン回転キーフレームを削除。
Remove Redundant Path Constraint Keys: セットアップ値を複製するパスコンストレインキーフレームを削除。

Scale

指定された係数でアニメーションキーフレームのすべての数値をスケーリングします。

目的: アニメーションデータを均一にスケーリングし、スケルトンの比例サイズ変更やアニメーション強度の調整に役立ちます。

使用法: ペイロードに接続し、スケール係数を設定します。1.0以上の値は拡大し、1.0未満は縮小します。

パラメータ:
- **Scale Factor**: すべての位置とサイズ値に適用される乗数。
- **Include Rotations**: 回転値もスケーリングするかどうか(通常は無効)。

使用例:
- インポートしたアニメーションを新しいスケルトンの寸法に合わせてサイズ変更
- アニメーションの誇張バージョンまたは控えめバージョンを作成
- 異なるキャラクターサイズ用に複数のアニメーションを一括スケーリング

Scale Bones: ボーンの位置とサイズをスケーリング。
Scale Attachments: アタッチメントの位置とサイズをスケーリング。
Scale Animations: アニメーションキーフレームをスケーリング。
Scale Constraints: コンストレインパラメータをスケーリング。
Scale Path: パスデータをスケーリング。

Schneider

シュナイダー曲線フィッティングアルゴリズムを使用して、アニメーションキーフレームに滑らかなベジェ曲線をフィットさせます。

目的: 密なキーフレームシーケンスから自然に見えるベジェ曲線を生成する高度な曲線フィッティング。

利用可能: **Plus専用ノード**。

動作原理: シュナイダーアルゴリズムはキーフレームの位置と接線を分析し、元の動きに密接に一致する最適なベジェ制御点を生成します。

パラメータ:
- **Error Tolerance**: 元のキーフレームからの最大許容偏差。低い = より正確、高い = より滑らかな曲線。
- **Corner Angle**: 曲線をセグメントに分割するしきい値角度(度)。

最適:
- 多くのキーフレームを持つ手描きまたはインポートされたアニメーション
- 線形補間から滑らかなベジェ曲線への変換
- 曲線品質を維持しながらキーフレーム数を削減

注: RDPなどのより単純なアルゴリズムよりも計算集約的ですが、優れた曲線品質を生成します。

Min Segment Size: 処理のためのセグメント内の最小キーフレーム数。

Physics Constraint Bake

Bake Physics Constraints to Keys:PhysicsConstraintの動きを回転/移動キーフレームに変換し、物理タイムラインを削除します。

目的: ランタイム物理シミュレーションを明示的なキーフレームに変換し、PhysicsConstraintsなしで決定的かつ編集可能にします。Bake後、payloadからPhysicsConstraintsと物理タイムラインが削除されます。

利用可能: **Plus専用ノード**。

入出力:
- **payload_in** → **payload_out**(焼き込み)
- **changes**(任意の変更リスト)

コントロール:
- **Sample FPS**: シミュレーションのサンプリングレート。
- **Bake Rotation**: 回転キーフレームを書き込み。
- **Bake Translation**: 移動キーフレームを書き込み。
- **Bake Translation (Children)**: 物理モーションに依存する子ボーンにも移動の焼き込みを適用。

注記:
- シミュレーション再構築のために元のSpine JSONが必要です。
- PhysicsConstraintsを削除しつつ動きを保持したい場合に使用します。

Attachment Visibility

アルファがゼロの場合、スロットのアタッチメントをnullに設定してレンダリングを最適化します。

目的: ゲームエンジンが見えないアタッチメントを処理またはレンダリングする必要がないようにします。

使用法: アルファ/カラートラックを分析し、対応する'attachment'トラックでキーフレームを自動的に追加または変更します。

パラメータ:
- **Alpha Threshold**: アタッチメントが見えないと見なされるアルファ値。
- **Auto Restore**: 有効にすると、アルファ値がしきい値を超えたときに、ノードは自動的に最後に表示されたアタッチメントを復元します。

Payload Merger

複数の処理済みアニメーションペイロードを単一の統一されたペイロードにマージし戻します。

目的: 異なるアニメーションまたはボーングループが個別に最適化され、再結合が必要な並列処理パイプラインに不可欠です。

マージ戦略:
1. **ベース入力**: スケルトン構造を提供(ボーン、スロット、スキンなど)
2. **オーバーライド入力**: ベーストラックを置き換える処理済みトラックを提供
3. **最後の書き込みが優先**: 複数のオーバーライドが同じトラックを提供する場合、最後が優先

競合検出:
- オーバーライド入力間の競合は検出され報告されます
- ベース → オーバーライドの置き換えは通常の動作(競合ではない)
- トラック競合時に警告トーストが表示されます

パイプライン例:
```
Input → AnimFilter('run') → Cleanup ───────┐
      → AnimFilter('idle') → Quantizer ────┤
      → (base) ────────────────────────────→ Merger → Output
```

使用例:
- 異なるアニメーション用の異なるオプティマイザー
- 再結合を伴う個別のボーン/スロット処理
- 異なる最適化戦略のA/Bテスト

Warn conflicts: ペイロードマージの競合時に警告を表示。

Animation Viewer

最適化前後のアニメーションカーブを検査および比較するための視覚的ツールです。

目的: 選択したトラックのキーフレームとカーブのグラフィカル表現を提供します。

使用法: 'payload_before'と'payload_after'の両方の入力を接続することにより、元のカーブと最適化されたカーブをオーバーレイし、最適化の影響を視覚化しやすくします。

Show changed: 変更されたアニメーションのみ表示。
Animation: 閲覧用アニメーション選択。
Target: 閲覧用ターゲットボーン/スロット。
Property: 表示するプロパティ(回転、移動など)。

Project Viewer

Displays a Spine project from the project_in socket for inspection and preview without mutating the incoming data.

Deduplicator

Deduplicates atlas projects by consuming project_inputs and returning payloads, atlas_projects, original_jsons, and shared_atlas_out for canonicalized downstream workflows.

The Deduplicator node scans all atlas regions for visually identical or near-identical sprites. It merges duplicates by choosing a canonical representative and remapping references. Several thresholds control detection sensitivity for different sprite types (glow, solid, alpha). Optionally constrains the output canonical atlas dimensions. A verification pass ensures the deduplicated result is visually equivalent to the original within the specified RMSE tolerance.

Repack mode: 重複排除後のリパックモード。
Glow threshold: グロー効果スプライト検出のしきい値。
Solid threshold: ソリッドスプライト検出のしきい値。
Min sprite area: 分析のための最小スプライト面積(ピクセル²)。
Alpha hash threshold: 比較用のアルファハッシュしきい値。
Verification threshold: 重複検証しきい値。
Color rmse threshold: 重複検出のカラーRMSEしきい値。
Constrain canonical atlas size: 正規アトラスサイズを制約。
Max canonical atlas width: 正規アトラスの最大幅。
Max canonical atlas height: 正規アトラスの最大高さ。

Animation Filter

アニメーション名(例: 'run'、'idle')に基づいてアニメーショントラックをフィルタリングします。

目的: 異なるアニメーションに異なる最適化戦略を適用するのに役立ちます。

使用法: たとえば、背景キャラクターアニメーションには攻撃的な非可逆最適化(DCTなど)を適用し、メインキャラクターアクションには可逆最適化(Splineなど)を使用できます。

Asset Filter

アトラスアセットを名前でフィルタリングし、2つのモードで動作:アンパック前(アトラステキストをフィルタリング)またはアンパック後(スプライトをフィルタリング)。

目的:ワークフローに含まれるアセットを制御 - アトラスからアンパックするアセットまたは再パックに含めるアンパックされたスプライトを制御。

モード:
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**: 標準化されたスプライト配列(viewer/repacker 用)
- **sprites_data_out**: 抽出されたスプライト画像/メタデータ(構造化バンドル)
- **atlas_out**: Atlas Project のパススルー

ソケットキー: atlas_project, atlas_project_in, skeleton_json_in, sprites_out, sprites_data_out, atlas_out

Atlas Repacker

個々のスプライトを1つ以上の新しい最適化されたテクスチャアトラスに再パッケージします。

目的: 効率的なスプライトシートを作成することにより、テクスチャメモリを最適化し、潜在的にドローコールを削減します。

使用法: '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'入力に接続し、領域の使用状況を解析します。

機能:
- 領域境界つきのアトラスページの可視プレビュー
- 領域の強調表示: 緑 = 使用中、赤 = スケルトン内で未使用
- ページ移動コントロール
- 総領域数と未使用領域数の統計

用途:
- 最適化前のアトラス検証
- 未使用領域(不要データ)の特定
- アトラスパッキング問題のデバッグ
- アセット構造の理解

ソケットキー: atlas_project, atlas_in, atlas, json

Page Info: アトラスページの寸法と情報。
Stats: スペース使用統計とスプライト数。

Atlas Merger

複数のアトラスソースを単一の統一されたアトラスに結合します。

目的: 複数のアトラスプロジェクトを1つにマージします。

入力:
- **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'を受け入れ、各抽出された画像を視覚化し、そのプロパティ(寸法、回転など)を調べ、解凍後の視覚的正確性を検証できるようにします。

Asset select: 閲覧用アセット選択。
Pixel stats: アセットのピクセル統計を表示。