スプライトのパレットスワップ · ランプの色替えとチームカラー
ここでの色替えはすべてパレット変換です。ピクセルはパレット番号を保つので、同じ色を使っていた2フレームは同じ色のまま、最も暗い色は最も暗いままです。
スプライトのフレーム(PNG)をドロップ。複数フレームでひとつのパレットを共有します
ブラウザ内で処理し、ファイルはアップロードされません。
出力
- PNG frames測定確認· Pillow
- Palette測定確認· re-import
- pixel-lab.json未検証
できること
- ランプ置き換え:選んだ元の色を、最も近い色ではなく明度順の位置で目標ランプに対応。
- 基準色1つから自動でランプを作成し、元のランプの明度段階を保持。
- チームカラー一括:N個の色違い(赤・青・緑…任意の#RRGGBB)を、色違いごとのフォルダーと.gpl入りのZIP1つで書き出し。
- 色相範囲の置き換えと状態プリセット(凍結・毒・炎上・ゴースト・被弾フラッシュ)。プリセットはレシピとして表示。
使い方
- フレームをドロップ。
- パレットで変えたいランプの色を選ぶ。
- ランプ・基準色・色相範囲・状態プリセットを選んでプレビュー。
- 適用するか、チームの色違いを書き出し。
出力ファイルと検証方法
「測定確認」は、ダウンロードしたファイルをページ外(Pillow・numpy・独立したパーサー)で開き直して性質を測ったという意味です。ゲームエンジンでの読み込みは試していません。
| 書き出し先 | ファイル | 検証 |
|---|---|---|
| PNG frames | anim_N.png · 1×–8× nearest | 測定確認 Pillow書き出したPNGを読み直し、すべての色が固定パレット内にあることを確認。 |
| Palette | .gpl · .hex (Lospec) · .json | 測定確認 re-import各形式を書き出してUIで読み戻し、16 → 16色を確認。 |
| pixel-lab.json | generic frames + palette | 未検証汎用JSONで、どのエンジンでも読み込んでいません。 |
検証の根拠
アンチエイリアスのかかった8フレーム → 16色パレット1つ、パレット外の色0。ディザーなしとBayer 4×4の両方で変化のない領域が全8フレームで同一。アンチエイリアス除去で271色 → 16色、シルエットの移動0ピクセル。整数倍率・オフセット・2.5倍の非整数倍率を正確に検出。
制限
- 4096 × 4096より大きいフレームは受け付けません。すべての処理がメインスレッドで動き、まだキャンセルボタンがありません。
- スプライトシートは1枚の画像として扱います。先にフレームに分割してください(スプライトシート分割)。
- ディザーを有効にすると、クリーンアップの件数にディザーのピクセルが含まれます。先にディザーを「なし」にしてください。
- 書き出すJSONは汎用形式で、Godot・Unityへの読み込みは試していません。
よくある質問
フレーム間の陰影は一貫しますか?
はい。ピクセルではなくパレットを変えるので、全フレームで同じ陰影に同じ番号が使われます。テストでは4つの色違いが選んだ3枠だけを変え、残り13枠はバイト一致でした。
許容範囲つきの単色置き換えもありますか?
はい。別のパレットスワップツールが、許容範囲と陰影オフセットで単色を置き換えます。
無料ですか?アカウントは必要ですか?
このページの機能はすべて無料で、アカウントなしで使えます。透かしや制限された書き出しはありません。
スプライトはアップロードされますか?
いいえ。Studioはこのブラウザのタブ内でデコード・パック・書き出しを行います。プロジェクトはブラウザ(IndexedDB)に自動保存され、.nerulioファイルとして保存できます。
Asepriteやエンジンのプラグインは必要ですか?
いいえ。.asepriteファイルはブラウザで読み書きします。エンジン別のバンドルには必要なものが入っています(Godotはインポート設定とシーン、UnityとGodotのタイルセットは小さなエディタースクリプト)。