mcpField
S
spritecook-polish-sprites

spritecook-polish-sprites

github.com/spritecookクリエイティブ・メディア49125 回インストール1 週間前に更新
リポジトリ

spritecook-polish-sprites について

納品、切り出し、アニメーション化の前に、スプライトの透明度と輪郭を整えるワークフロースキルです。アルファしきい値のローカル比較や部分的な修復を案内し、元のアセットを保持します。

主な機能

  1. 01アルファしきい値候補のローカル比較
  2. 02原寸と拡大表示でのスプライト確認
  3. 03選択したしきい値のアセットへの適用
  4. 04輪郭の部分修復の案内
  5. 05各アニメーションフレームの縁の確認

活用シーン

  1. 01薄い輪郭ピクセルの復元
  2. 02ハローや背景のごみの削減
  3. 03切り出し前のスプライト確認
  4. 04生成後に欠けた輪郭の修復

MCP 対応

接続先サーバーが提供する SpriteCook のアセットメタデータとしきい値ツールの使用方法を説明します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/spritecook/skills --skill spritecook-polish-sprites

インストール後、Claude Code で/spritecook-polish-spritesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.gitignore
scripts/
compare_alpha.py
test_compare_alpha.py

詳細

SpriteCook のスプライトを仕上げる

spritecook-workflow-essentials と併用します。納品、スライス、アニメーション作成の前に、完成したスプライトを実際の表示サイズとニアレストネイバー法で拡大した状態で確認してください。輪郭と透明度に問題がなければ、そのままにします。エッジのクリーンアップで品質が向上する場合は、このワークフローを使用します。

輪郭が崩れて見える理由

背景除去では、各ピクセルがどの程度被写体に属するかを推定します。細い輪郭、コントラストの低いエッジ、髪、取っ手などの細部は、スプライトの一部であっても部分的に透明になることがあります。その柔らかなアルファ値をしきい値で不透明または透明にすると、こうしたエッジが失われる場合があります。その後の収縮などのクリーンアップでも、ピクセルが削除されることがあります。

SpriteCook は、対応アセットのアルファクリーンアップ前の画像を保持します。しきい値を下げると、そのソースに残っている薄い輪郭のピクセルを復元できます。しきい値を上げると、ハローや背景の残骸を取り除けます。Basic と Pro のどちらの結果も、確認することで改善できる場合があります。Pro でも、すべてのエッジが保持されるとは限りません。

しきい値処理では、保持されたソースに存在しないピクセルを再構成したり、誤って生成された形状を修復したりすることはできません。アルファ値が 0 と 255 だけの処理済み PNG では、通常、中間のアルファ値は復元できません。すでにしきい値処理されたプレビューを繰り返し使うのではなく、必ず保持されたソースを基に作業してください。ユーザーがはっきりしたピクセルエッジを望んでいない限り、意図的に半透明にしたエフェクトはそのまま半透明に保ちます。

保持されたソース自体のアルファ値が 0 と 255 だけの場合、正のしきい値をいくつにしても透明度は同じになります。ただし、その後の収縮でピクセルが削除されていると、保存済みの出力とは異なる場合があります。そのため、判断する前に保存済みの画像と比較してください。

一度だけ調べ、ローカルで比較し、一度だけ保存する

  1. get_asset_metadata(asset_id) を呼び出し、alpha_editing を確認します。ここには available、current_cutoff、provider、processing、source_url とその有効期限、プレビュー/アニメーションのレイアウトが示されます。このフィールドまたは set_asset_alpha_cutoff が存在しない場合、接続中のサーバーではまだこのワークフローが公開されていません。ツールをでっち上げたり、代わりに有料の背景除去を暗黙に実行したりしないでください。

  2. available=false の場合、このアセットでは保持された元画像を利用できないことを説明します。背景除去を新たに実行するか、対象を絞った画像編集が必要になる場合があります。ユーザーの依頼範囲とクレジット予算に従ってください。このしきい値調整のワークフローはここで終了します。

  3. processing="binary_alpha_v1" の場合、共通の安全なダウンロードワークフローを使って source_url を一度だけダウンロードします。また、実際に保存された結果と比較するため、静止画では現在の sprite_url を、アニメーションでは spritesheet_url をダウンロードします。URL には有効期限があります。必要に応じてメタデータを更新してください。署名付き URL をマニフェストやコミット対象のファイルに含めないでください。

  4. メタデータの JSON をローカルに保存し、Python と Pillow を利用できる状態で、同梱のヘルパーを実行します。

    python scripts/compare_alpha.py --metadata asset.json --source preserved.png --current current.png --output-dir alpha-comparison
    

    スクリプトのパスは、このスキルのディレクトリを基準に解決します。利用可能な場合は、プロジェクトの Python 環境を使います。必要に応じて、その環境に Pillow をインストールします。このヘルパーはネットワークに接続せず、クレジットを消費せず、SpriteCook のアセットを変更しません。comparison.png、フルサイズの候補 PNG、comparison.json を出力します。保存済みのしきい値付近から始まります。ほかの候補を選ぶには、--cutoffs 48 72 96 120 144 を使用します。比較ごとに新しい出力ディレクトリを使ってください。

  5. 明るい背景と暗い背景の両方で比較画像を確認し、有望なフルサイズ候補をネイティブサイズで確認します。輪郭が連続しているか、細部が保持されているか、オブジェクト間に不要なつながりができていないか、ハローや孤立したごみがないか、意図的な透明部分が失われていないかを確認します。アニメーションでは、すべてのフレームでエッジのちらつきを確認します。最適なバランスの候補を選びます。ピクセル数だけで品質を判断することはできません。元のクリーンアップで侵食などの処理が適用されている場合もあるため、実際に保存された出力と比較してください。

  6. 必要であれば、最適な候補の付近でローカル比較をもう一度行います。明確な改善が得られたとき、または有効な復元がこれ以上ないときに終了します。この値を調整するために、有料の生成や除去ジョブを繰り返さないでください。

  7. 候補によって結果が改善する場合は、set_asset_alpha_cutoff(asset_id, cutoff) を一度だけ呼び出します。これにより既存のアセットが更新され、しきい値が保存され、保持された元画像はそのまま維持され、クレジットは消費されません。返された出力をダウンロードし、選択した候補と一致することを確認します。アセット ID と選択したしきい値をローカルのアセットマニフェストに記録します。結果が改善する候補がない場合は、保存済みのアセットをそのまま使います。

輪郭の対象を絞った修復

視覚的な忠実度を最大限に高めるには、背景除去でできた隙間がしきい値の調整では修正できない場合、生成後に対象を絞って手作業またはスクリプトでピクセルを修復します。背景除去前の元画像を利用できる場合は、それと比較し、元画像から欠けた輪郭のピクセルを復元するか、隣接する輪郭の色と既存の輪郭線を使って、小さく曖昧さのない隙間を補います。ローカルの画像編集ソフトや、修復範囲を明示した小さなスクリプトが役立ちます。スプライトのシルエット、輪郭の太さ、パレット、意図的な開口部を保ってください。輪郭全体を太くしたり、透明な穴をすべて自動で埋めたりしないでください。

修復した結果をネイティブサイズとニアレストネイバー拡大表示で、明るい背景と暗い背景の両方で確認します。アニメーションでは、修復が各フレームで一貫しており、エッジのちらつきがないことを確認します。元画像は保持し、修復版を別の PNG として保存してください。set_asset_alpha_cutoff で保存できるのはしきい値の変更だけで、カスタムのピクセル編集は保存されません。修復画像を SpriteCook で再利用する必要がある場合は、spritecook-upload-assets を使ってアップロードし、その新しいアセット ID を使ってアニメーション化するか参照します。ローカルのマニフェストには、元画像との関連を記録してください。

処理の詳細と制限

  • binary_alpha_v1 は RGB を維持し、元のアルファ値がしきい値以上の場合は 255 に、それ以外の場合は 0 に設定します。しきい値の範囲は 0~255 です。通常のクリーンアップでは 0 を避けてください。完全に透明なピクセルまで不透明になります。
  • このヘルパーは元のサイズを維持し、候補 PNG のリサイズやトリミングは行いません。preview_crop は比較ビューにのみ影響します。保存時にはアプリと同様に、元のサイズ全体が使われます。ゲームに組み込む前に、出力サイズを確認してください。
  • アニメーションのソースには、告知されている frame_count、frame_width、frame_height を備えた横向きの PNG スプライトシートを使用します。すべてのフレームで同じしきい値を使用してください。このヘルパーは、レイアウトが一致しないファイルやアニメーション付きプレビューを拒否します。
  • tileset_color_tolerance_v1 はアルファしきい値ではなく、背景色の許容範囲を使用します。このヘルパーでは意図的にサポートしていません。カットオフ値をバイナリのアルファとして扱わず、専用のタイルセットエッジクリーンアップエディターを使用してください。
  • 可能であれば、スライスする前に複数オブジェクトのシートを仕上げてください。アップロードまたはスライスした派生ファイルには、元のソフトアルファのソースが含まれない場合があります。シートの仕上がりを確認したら、スライスし、既存のアップロードおよびアニメーションのスキルを使って、抽出した各アセットを個別にアニメーション化してください。
  • ローカルの候補ファイルは、保存ツールを呼び出すまでローカルにとどまります。ユーザーが個別のコピーを希望する場合にのみ、候補ファイルを別途アップロードしてください。別途アップロードしたファイルには、元のアセットの編集可能なソースは引き継がれません。

コメント