Sprite Color Grid Analysis
Purpose
This skill analyzes Sprite textures by segmenting them into a 3x3 grid and outputting a text representation based on color matching with the center cell.
Parameters
Match Threshold
The
match threshold determines what percentage of pixels in a non-center cell must match the center's majority color for that cell to be considered a "match" (
).
| Threshold | Description | Use Case |
|---|
| 50% | At least half the cell's pixels match center color | Lenient matching for sprites with mixed regions |
| 75% | At least three-quarters match center color | Moderate matching for mostly solid regions |
| 90% | Nearly all pixels must match center color | Strict matching for very uniform sprites |
Default: 75%
Algorithm
- Segment the Sprite: Divide the Sprite's texture region into a 3x3 grid (9 cells total)
- Identify Center Color: Calculate the majority (most frequent) color in the center cell (position [1,1])
- Compare Each Cell: For each of the 8 surrounding cells, calculate what percentage of pixels match the center's majority color. If the percentage meets or exceeds the match threshold, the cell is a match (); otherwise it is not ()
- Generate Output: Create a text representation using the legend below
Output Legend
| Symbol | Meaning |
|---|
| Cell does NOT meet the match threshold (insufficient pixels match center color) |
| Cell MEETS the match threshold (enough pixels match center color) |
| The center cell itself (always position [1,1] in the grid) |
Output Format
The output is a single line with three groups of three characters, separated by
. Each group represents one row of the grid.
Order: Top to Bottom rows, Left to Right within each row.
Format:
[TopRow] / [MiddleRow] / [BottomRow]
Each row contains 3 characters separated by spaces:
Grid Position Mapping
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
Examples
Example 1: Center matches top-left and bottom-right only
Grid interpretation:
Example 2: Center matches all surrounding cells
Example 3: Center matches none of the surrounding cells
Example 4: Center matches bottom row only
Implementation Guidance
Calculating Center's Majority Color
For the center cell:
- Sample all pixels within the cell's bounds
- Group pixels by color (consider using a color tolerance threshold for similar colors)
- The majority color is the color with the highest pixel count
- For tie-breaking, use the first color encountered
Matching Non-Center Cells
For each of the 8 surrounding cells:
- Count the total number of pixels in the cell
- Count how many pixels match the center's majority color (using color tolerance)
- Calculate the match percentage:
matchingPixels / totalPixels
- If match percentage >= threshold, cell is a match (); otherwise ()
Color Tolerance
When comparing pixel colors:
- Consider using a tolerance threshold (e.g., RGB distance < 10) for "matching"
- Alternatively, for sprites with limited palettes, exact matching may be appropriate
- Account for alpha channel if relevant to the use case
Sprite Bounds
Use the Sprite's
property to determine the pixel region to analyze:
- , for the origin
- , for dimensions
- Divide width and height by 3 to get cell dimensions
References
Code Template: "scripts/SpriteGridAnalysis.cs"
Use Cases
- Documentation: Describe sprite patterns in a compact text format
- Testing: Verify expected sprite structure in automated tests
- Analysis: Quickly identify sprites with similar color distributions
- Debugging: Understand why sprites look different than expected
- Asset Cataloging: Generate searchable metadata for sprite assets
Notes
- This analysis works best with sprites that have distinct color regions
- For sprites with gradients or many colors, consider increasing color tolerance
- The Y-axis is flipped from Unity's texture coordinates to produce top-to-bottom output
- Transparent pixels can be treated as a distinct "color" or ignored based on use case