sprite-segment-3x3grid について
Sprite のテクスチャを 3×3 のグリッドに分け、各セルを中央セルの最多色と比較する Unity スキルです。閾値を調整でき、Sprite の記録やテスト、アセット分析に使えます。
主な機能
- 01テクスチャを 3×3 に分割
- 02中央セルの最多色を特定
- 03閾値に基づき周囲セルを比較
- 04テキスト形式のグリッドを出力
活用シーン
- 01Sprite の色パターンを記録
- 02自動テストで構造を確認
- 03Sprite の外観差を調査
- 04検索可能なアセットメタデータを作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ unity-technologies/ skills --skill sprite-segment-3x3gridインストール後、Claude Code で/sprite-segment-3x3gridを入力して読み込まれたか確認します。
同梱ファイルscripts/SpriteGridAnalysis.cs
詳細
スプライトのカラ―グリッド分析
目的
このスキルは、スプライトのテクスチャを3x3のグリッドに分割し、中央のセルとの色の一致に基づいてテキスト形式で出力します。
パラメーター
一致しきい値
一致しきい値は、中央以外のセルが「一致」(.)と判定されるために、セル内のピクセルのうち中央セルの最多色と一致する必要がある割合を指定します。
| しきい値 | 説明 | 使用例 |
|---|---|---|
| 50% | セル内のピクセルの少なくとも半分が中央の色と一致します | 領域が混在するスプライトに対する許容度の高い一致判定 |
| 75% | セル内のピクセルの少なくとも4分の3が中央の色と一致します | ほぼ単色の領域に対する中程度の一致判定 |
| 90% | ほぼすべてのピクセルが中央の色と一致する必要があります | 非常に均一なスプライトに対する厳密な一致判定 |
デフォルト:75%
アルゴリズム
- スプライトを分割する:スプライトのテクスチャ領域を3x3のグリッド(合計9セル)に分割します
- 中央の色を特定する:中央のセル(位置[1,1])で最多(最も頻出する)色を計算します
- 各セルを比較する:周囲の8つのセルそれぞれについて、ピクセルのうち中央セルの最多色と一致する割合を計算します。その割合が一致しきい値以上なら、そのセルは一致(
.)です。一致しない場合はXです - 出力を生成する:以下の凡例を使用してテキスト形式の表現を作成します
出力の凡例
| 記号 | 意味 |
|---|---|
X | セルが一致しきい値を満たしません(中央の色と一致するピクセルが不足しています) |
. | セルが一致しきい値を満たします(中央の色と一致するピクセルが十分あります) |
* | 中央のセル自体(グリッド内の位置[1,1]に固定) |
出力形式
出力は、3文字ずつの3グループを/で区切った1行です。各グループはグリッドの1行を表します。
順序:上から下の行、各行内は左から右です。
形式:[TopRow] / [MiddleRow] / [BottomRow]
各行には、スペースで区切られた3文字が含まれます:[Left] [Center] [Right]
グリッド位置の対応
Grid Layout: Output Order:
[0,0] [1,0] [2,0] 1 2 3 -> First group
[0,1] [1,1] [2,1] 4 5 6 -> Second group (5 is always *)
[0,2] [1,2] [2,2] 7 8 9 -> Third group
例
例1:中央が左上と右下だけに一致する場合
. X X / X * X / X X .
グリッドの解釈:
. X X
X * X
X X .
例2:中央が周囲のすべてのセルに一致する場合
. . . / . * . / . . .
例3:中央が周囲のどのセルにも一致しない場合
X X X / X * X / X X X
例4:中央が下段だけに一致する場合
X X X / X * X / . . .
実装ガイダンス
中央の最多色の計算
中央のセルについて:
- セルの範囲内にあるすべてのピクセルをサンプリングします
- 色ごとにピクセルをグループ化します(似た色を扱うには色の許容しきい値を使用することを検討してください)
- 最多色は、ピクセル数が最も多い色です
- 同数の場合は、最初に検出された色を使用します
中央以外のセルの一致判定
周囲の8つのセルそれぞれについて:
- セル内のピクセルの総数を数えます
- 中央の最多色と一致するピクセル数を数えます(色の許容範囲を使用)
- 一致率を計算します:
matchingPixels / totalPixels - 一致率がしきい値以上なら、セルは一致(
.)です。それ以外はXです
色の許容範囲
ピクセルの色を比較する場合:
- 「一致」とみなすために許容しきい値(例:RGB距離 < 10)の使用を検討してください
- または、パレットの色数が限られたスプライトでは、完全一致が適切な場合があります
- 使用例に応じてアルファチャンネルを考慮してください
スプライトの境界
分析するピクセル領域を特定するには、スプライトのrectプロパティを使用します:
- 原点には
sprite.rect.x、sprite.rect.yを使用します - 寸法には
sprite.rect.width、sprite.rect.heightを使用します - 幅と高さを3で割り、セルの寸法を求めます
参考資料
コードテンプレート:"scripts/SpriteGridAnalysis.cs"
使用例
- ドキュメント:スプライトのパターンを簡潔なテキスト形式で記述します
- テスト:自動テストで期待されるスプライトの構造を検証します
- 分析:色の分布が似たスプライトをすばやく特定します
- デバッグ:スプライトが想定と異なって見える理由を把握します
- アセットのカタログ化:スプライトアセット用の検索可能なメタデータを生成します
メモ
- この分析は、色の領域がはっきり分かれたスプライトで最も効果を発揮します
- グラデーションや多くの色を含むスプライトでは、色の許容値を大きくすることを検討してください
- 上から下への出力になるよう、Y 軸は Unity のテクスチャ座標から反転されています
- 透明ピクセルは、用途に応じて独立した「色」として扱うことも、無視することもできます
コメント
Markdown 対応