aseprite / aseprite

Animated sprite editor & pixel art tool (Windows, macOS, Linux)
https://www.aseprite.org
29.53k stars 6.22k forks source link

New replace color selection system hinders palette editing for animations in RGB mode #1741

Open KashouC opened 6 years ago

KashouC commented 6 years ago

It's not uniquely the replace color system, but rather the layer/frame selection system in any of the color tools. I can't select a layer or any number of frames greater than the one I'm currently looking at and then select colors in the palette to edit without losing the selection.

So for example, say I have 10 frames, I'm working in RGB mode, and I want to edit only specific colors in the animation. Normally you can just add the colors to the palette, select them, and edit them with say the Hue/Saturation tool, but there's no way to select multiple frames now while selecting multiple colors, without applying the changes to all layers and frames, so the end result is that only one cel gets edited.

Aseprite v1.2.8-x64 Windows 7

oceanhahn commented 6 years ago

Aa, I have encountered this issue and would also like to see this fixed. It was a side effect I forgot to mention in #1549 as well. :1

dacap commented 6 years ago

This is sadly true. I'm not sure how to solve this, but something to think about it (the simplest solution would be a padlock to just lock the timeline or colorbar selection, or a way to change how the selection works/disable automatic-disappearance)

KashouC commented 6 years ago

Not knowing the back end situation, seeing as I'd like to see the color tool windows have the timeline unlocked for better control when trying to edit multiple cels (it's annoying when maybe you want to pick colors from the middle frame in a selection but you're stuck with picking them from the end or beginning due to how selections work), I'd say maybe selecting multiple colors and opening up a color editing tool would lock in the currently selected color range and keep the timeline operable, if my previous suggestion is doable.

KasumiArai commented 6 years ago

How's control click sound? If there's an active color selection, control click the timeline. If there's an active timeline selection, control click the palette.

Control+Click is already how you select non contiguous frames, and it does have history as adding something to an existing selection without getting rid of it. (As in Windows explorer)

KashouC commented 6 years ago

I don't think that sounds very intuitive, but I guess neither is my solution. Personally I'll still support my suggestion, as I feel like if you want to change a range of colors in the palette you'll pick those before you open up the tool, while in the timeline the issue is that you don't have proper control, so sometimes you simply can't select a color because it happens to not be present in the frame selection, while using the replace color tool.

But I also feel like each section could be a bit more self-contained. For example I don't think it matters much whether a color selection range lingers in the palette when you click within the canvas, as long as all that we're storing is the cel range and pressing the delete button when the canvas is active just deletes whatever is in the canvas, not the cel range. Kind of like how you can select cels 1-7 in the timeline and are still able to move the canvas around with mouse 3, and then if you press delete after that it deletes the current active cel, not the entire cel selection.

That way we could just be able to select a color range, select a timeline range, both while Replace Color or the Hue/Saturation windows are open, while still locking the canvas, if necessary.

But I'm sure this requires some overhauling, so not sure how difficult all this is to do in practice. ^^

dacap commented 6 years ago

I like both solutions actually. I think it does make sense this kind of behavior (as "Ctrl+click" actually is already to keep the selection, it could be combined between timeline + color bar). Anyway I guess filters dialogs should be semi non-modal, i.e. make the timeline available for clicking/selecting too.

dacap commented 6 years ago

Also I'm thinking that maybe an "Apply" button would be great, so we can change color bar and/or timeline selection and continue modifying hue/saturation/replace color/etc.

KashouC commented 6 years ago

Sounds good to me. Only addition I'd like to make (but I guess it's semi-off topic) is to be able to change frame without losing the selection. For example, lets say you have an 8 frame long animation, and you brightened it up a bit on one frame, but noticed that you did it on like frame 3 or something, it becomes really difficult to swap between frame 3 and 2 to pick the old color and pick the new color to change it all. Since you have to go to 3, pick the old color, go to 2, pick the new color, make a selection in the timeline, Ctrl+R, and repeat the entire process for every color.

Workaround is to add each color to the palette and change it via that, so it's doable, but this is just from the point of view of my workflow. ^^

dacap commented 6 years ago

I see that there are a lot of interesting use cases to think about here. I guess for v1.2 I'll try to implement @KasumiArai solution as it might be the easiest one (anyway I have to tested it, I'm not completely aware of the internal implications of having both selections (colorbar+timeline) enabled).

dacap commented 6 years ago

I'm thinking in a possible solution for the future:

  1. There is an menu option View > Duplicate View which could be called View > New View in the future
  2. If we select a range in the Timeline and use View > New View we could see only the selected layers/frames/cels, this means that "New View" should create a subset sprite of the original one (everything linked from the original sprite, you modify the subset and you're modifying the original sprite in fact)
  3. All the filters could be used with the "All" option to replace colors in the current subset

A problem with this: You don't see colors in context of the whole sprite 😢

KashouC commented 6 years ago

(Started typing this out in Discord so just copying it over) But in regards to being able to change frames after a selection has been made in the timeline, maybe the selection could persist while we're only operating within the current selection, that way it would be simple to move between the frames, especially if we unlock the timeline while a color tool window is up. It would also make it easier to check a frame within the selection after lets say using the move tool to move the content of multiple frames without having to reselect them.

The main issue with this is if you select the entire timeline, you won't be able to deselect it without using the keyboard or painting something in the canvas or pressing some arbitrary button, but not sure that's a real issue.

oceanhahn commented 6 years ago

I know this is an issue specifically related to RGB mode but it might be worth considering how a revised control scheme might relate to any future per-frame palette feature..

If we are eventually given the ability to modify palettes on a per-frame basis, then "Replace Colour" would need to be revised in a way that considers whether colours are replaced/altered by-index (changing whatever colour is in a given index slot to the new value), or by-value (replacing a specific colour-- "Red", "#a566c0", "(255,0,255)", et cetera-- with the new one, regardless of index value).

Anyway, I do not expect the solution to this issue to include the per-frame palette option. It just may be worth considering this bit of extensibility. ^^

dacap commented 6 years ago

This is a possibility for v1.2.9: https://imgur.com/parmUzb (maybe in this case the palette shouldn't be modified at the end, only the colors in the pixels of the selected range in the timeline)

oceanhahn commented 6 years ago

This is kind of an aside but if we have specific-layer and specific-frame selections, perhaps the Timeline could be altered so that all relevant cels have a different background colour? The light-grey background and dark-grey current layer/frame setup is good for now, but it would be nice if intersecting cels were made some third thing; a dark red, maybe?

This is not strictly necessary; it would just make it more obvious which cels are actually included in whatever operations we perform, which would speed things up and perhaps help avoid errors in complicated documents.

dacap commented 6 years ago

relevant cels have a different background colour

Yeah, it will be much better if we show the selection only for the cels that will be changed by a filter like Hue/saturation or replace color, etc.

oceanhahn commented 6 years ago

In truth, it is something I kind of wish I had right now, even outside the context of multi-cel operations. XD

dacap commented 6 years ago

@oceanhahn contact me at support@aseprite.org, I might prepare an alpha version with this change just to get some feedback, the same for @KashouC and @KasumiArai

dacap commented 6 years ago

I'll put the beta in Steam's beta branch

KashouC commented 6 years ago

I find the addition of Shift+Clicking a frame an acceptable solution to move between selected frames for sure. Only change I'd like to see is to be able to freely move between cels in the same fashion, simply to make it more intuitive. I find myself wanting to click the next cel instead of the frame number a lot and it just feels awkward, especially when you have to click the layer name to move down a cel which is like half the screen away from the frame sometimes. Now just having it unlocked with a color tool dialogue open would be good enough for me.

I also don't think you can remove a frame from the selection in the same fashion that you can add them with Shift+Click.

dacap commented 6 years ago

I find myself wanting to click the next cel instead of the frame number

Same feeling here 👍

Gasparoken commented 1 month ago

Internal ticket: https://igarastudio.zendesk.com/agent/tickets/6758 Feature request: replace a color range to one color.