pawREP / ACVIEmblemCreator

ACVIEmblemCreator allows importing of images into Armored Core VI for use as emblems
MIT License
69 stars 3 forks source link

Proper transparency support? #15

Open HotshotGT opened 10 months ago

HotshotGT commented 10 months ago

I realize there's already an option to select a color key for transparency, but the current method of generating an image often creates layers with the keyed color in front of your actual image. This means portions of your image that should remain hidden become visible when the keyed layers are hidden. Single color elements in the image also generate layers of varying shades, so you need to increase the match distance and regenerate your image repeatedly until you hit your target shape count (or just needlessly generate 1000 layers from the start).

I'm not sure how other tools do it, but I've been using forza-painter to generate JSON instead. It creates a single background layer and keeps the rest of the layers within the bounds of the opaque part of your image. Examples below:

Normal image generation with 0 key distance: EmblemCreator

High key distance to remove ~200 layers of various shades of pink (note the misshapen logo): EmblemCreator2

Imported forza-painter JSON. Single pink background layer with 0 distance threshold and only 1 layer hidden by color key: ForzaPainter

Obviously the downside to the forza-painter approach is that it retains proper transparency at the cost of using more drawn layers. For the above examples, the initial image used in forza-painter had a transparent background that was automatically replaced with a single color keyed layer, while the one used for normal generation was the same image with a pink background since transparency is normally replaced with black.

If possible, I think an option to toggle between both methods of generation would be really helpful for designs with detailed transparency. Maybe default to the forza-painter approach if the input image has an alpha channel, and revert to color key approach if it doesn't?