An extension for reduced color picker?

Hey all,

I recently was working in another app that when you load the palette, the color picker reduces the options to your palette like this:

image

Then when you slide through the colours, the picker changes. I find this incredibly useful over the stock Aseprite color picker which has all colours.

Does a setting, script, or extension exist out there that achieves this? Thank you.

1 Like

Hi @oliverspoon,

Aseprite does not have an option to reduce the colors of the Color Tint/Shade/Tone style color picker. It does have discrete versions of the RGB and RYB wheels which reduce the hue to 12 steps and saturation to 6 steps.

In newer versions of the 1.3 beta, the scripting API supports custom canvases. The canvas feature has been used to create custom color pickers, custom palette matching scripts have been made, and older scripts have been made to create sliders for low bit colors, but I’ve not yet seen a merger of these concepts.

For any picker made by script, I’d expect performance to be a limitation. Furthermore, you’d have to consider that the app you used with this feature may be closed source. Some reverse engineering would be required. The shape of each splat of reduced color could be a clue as to how the app’s picker works under the hood.

Bear in mind, different users would have different priorities that inform how the shades are reduced. Designing a tool to your own satisfaction is different from designing for many users. For example, the hues in the image you’ve posted vary between teal, blue and lavender. One user may want reduced colors but with a more consistent hue.

quantize01

Another user might be exporting their work to a fantasy console with a lower bit depth, so they may want colors quantized in standard RGB.

quantize02

There’s also the approach of matching a color in the full spectrum to an existing palette, maybe an arbitrary palette or a palette created by one of the quantization techniques above. [Edit: This is the approach that, on second read, you mentioned, but it’s also much harder to tune for performance than the two above.]

Below is a match to colors in the Dawnbringer 32 palette using an octree.

Below is an sRGB quantization (bottom row), which is then feed to a matching process (top row).

You can imagine that if the palette in this case had few to no blues, then the matches would be poor.

2 Likes

Wow thank you for the in-depth answer to this question! The “palette match to Dawnbringer 32” file is exactly what I am looking for…Would that work with any palette you load into Aseprite?

The app I got the idea from is Pixel FX Designer. Screenshot 2023-08-22 at 15.19.45
This is how it looks with Endesga 64.
It doesn’t seem to have any performance issues. I can quickly change the slider on the right and it fluidly updates the picker pane.

Sadly, this is far out of my depth. I would have to ask for further help or to offer a bounty / commission to get this up and running.

While not ideal, a workaround I know of is to find or make an image like the one further below, palette match it, then drag and drop it into a split workspace.

Aseprite will palette match when converting the sprite’s color mode. In the menu bar go to Sprite > Color Mode > Indexed. A palette – .gpl, .pal, image format – can be loaded from the hamburger menu button that’s above the palette swatches, to the right of the palette lock/unlock button.

In a split workspace, colors can be picked from with the eye dropper and the hue changed with the Go To Next Frame and Go To Prev Frame commands. Make sure the open sprites have identically ordered palettes, especially if they’re both in indexed color mode. You can change the size or hide Aseprite’s built-in color picker – hover over the border until the mouse cursor changes to double arrows.

The least ideal part, imo, is tracking which sprite in the workspace has focus. :sweat:

shadesAnim72

:arrow_up: Original image, 72 frames of animation (uploaded as a webp)

:arrow_up: Sprite sheet version

shadesEndesga64

:arrow_up: Palette matched to Endesga 64 with a custom matcher (uploaded as a webp)

:arrow_up: Palette matched sprite sheet version

If you can’t find or make source images, Lospec’s palette analysis tools will generate diagrams, some of which are similar to a shade or spectrum -style color picker. For example, the Censor analysis of Endesga 64:

censorAnalysisEndesga64

Comments I made about performance refer only to Lua script, not Pixel FX Designer. Someone’s figured out how to match fast, just not me. :slight_smile:

1 Like

Thank you for the thorough walkthrough here. I really appreciate the time you’ve taken to help me. When I have some free time I will try and muck my way through this and see if I can’t get it working properly. Have a lovely weekend.