I’m sure many of us are aware that color is extremely contextual. That is, if you’re painting or trying to add color to something, the actual color perceived doesn’t exist until you’ve already put the paint on the canvas and viewed in context with the rest of the colors on the canvas (or photo, etc). So, the paradox is: How can we (quickly) choose colors from a palette or color chooser dialog and know what they will look like on the painting? Seems we need to just intuitively know how a color will look, or use an exhaustive pick and try, undo, pick and try, cycle.
Well, I think I’m getting closer to a solution to this. The first step is getting rid of the the entire GUI for selecting colors, since the GUI (if it presents more than one color) will interfere with the selection process. Not to mention, the GUI is likely to be out-of-context to the painting/photo (off to one side, away from the pixels you intend to color.
So, what I’ve done is hijacked the standard eyedropper swatch that shows you the color you picked off the canvas. But instead of picking a color off the canvas, we adjust the brush color in whatever channels we want (I’ve chosen HCY). Then the new adjusted color shows up where your cursor is, showing you a pretty darn good representation of how that color is going to look on the canvas. Here’s a video demo. In the video you can see the color GUIs but I’m not using them to change or choose colors. I actually only change the C and Y channels in this demo, but I could have rotated the hue CW or CCW:
The caveat (actually, I consider this a benefit) is that you have to use keyboard shortcuts for the “up/down” of whatever channels you want. The other challenge is step-size. It’s not useful to have each key press jump your channel by 10%, but you don’t want it to always be .001%, either, or your fingers are going to fall off. So I’ve added some crude logic to compare the timestamp of the last time you adjusted the color channel up/down, and use that to scale the step-size. So you if tap the keys quickly, the color changes very quickly, and likewise tapping slowly can “fine tune” the color in very small steps.
I’m using the HCY space because it maps pretty closely to the artist concept of Hue, Tones, and Tints/Shades, respectively. However, I’m trying to think how we could have a generic “warmer/cooler” channel adjuster. Studying Bruce McEvoy’s page on this it is clear that it is NOT straight-forward, since warmer/cooler is again, contextual to the painting/photo at hand. So, I’m considering some method to sample the canvas region and determine which direction and which channel(s) the current brush color would need to go to make it “warmer or cooler” in comparison. I’m not sure if it makes sense to sample just a region, or if I ought to sample the entire painting to get an overall pixel average to work with… thoughts?