AuthorTopic: I'm making a paint program, so useful tools, ideas and features required please  (Read 157332 times)

Offline Ai

  • 0100
  • ***
  • Posts: 1057
  • Karma: +2/-0
  • finti
    • http://pixeljoint.com/pixels/profile.asp?id=1996
    • finticemo
    • View Profile
I have to agree with Helm, strongly, here. The whole intent of my relative color selector was to avoid the circus of planar color selection. You might say the maths goes over your head, happymonster, but it's about as simple as the planar selector you show there.
(the only bit that made it look complicated was the formula input. but all cells could be precoded and it could still be far more productive than planar selection).
Another way to describe it is as like the picture in the link I gave before:

figure 15.202 in
http://docs.gimp.org/en/plug-in-filter-pack.html

Having a color selector like that allows the artist to tweak all 3 dimensions of the color quickly
(whatever you view those 3 dimensions as being :).
I'll try to illustrate again, better (and simplified to the minimal level)



All that's involved here is interpolation.
* The left 4 hue entries interpolate between pen 0 hue and minimum hue (==0); the right 4 hue entries interpolate between pen 0 hue and maximum hue (==360)
* The left 4 value entries interpolate between pen 0 value and minimum value (==0); the right 4 value entries interpolate between pen 0 value and maximum value (==100). The rightmost entries of 'value' are identical because the color is already at maximum value.
* The left 4 saturation entries interpolate between pen 0 saturation and minimum saturation; the right 4 saturation entries interpolate between pen 0 saturation and maximum saturation. pen 0 color was already at max saturation, so the rightmost 4 entries are identical.
* the 8 entries in the 'interpolate' line interpolate between pen 0 color and pen 1 color
* the 8 entries in the 'interpolate old' line interpolate between pen 0 color and last selected color (which was 'ba2d1d'; An option to insert a block of color in a post would be handy about now :)
* pen 0 color and pen 1 color blocks are purely for illustrative purposes.
* every cell must be updated after clicking on a color to pick it, since all cells are relative to pen 0 color.

NOTE: this is different from sliders in that it's entirely relative, where sliders are absolute. Hence you can see on the left side of 'hue', it slowly becomes red, since the pen 0 color was orange, only 30 on the hue scale,  whereas on the right it changes very quickly to cover the range 30..360

The reduced amount of computation required for relative color selection would also make LAB-based color adjustment perfectly feasible in realtime.

If you insist on being pessimistic about your own abilities, consider also being pessimistic about the accuracy of that pessimistic judgement.

Offline happymonster

  • 0010
  • *
  • Posts: 455
  • Karma: +0/-0
    • View Profile
Another possibility:

If I make the palette area larger, but square in ratio with square swatches and the icons either side (maybe 160 x 160 instead of 224 x 112 / 112 x 112). Then if you pressed a key/button the colour space view would appear below and replace the contents of the Brushes/Tools windows. This would let you do larger colour editing, but stop you doing drawing at the same time..

It's difficult to decide what is best to do really.

Offline happymonster

  • 0010
  • *
  • Posts: 455
  • Karma: +0/-0
    • View Profile
AI:

Interesting idea. I'm not sure how intuitive that is for me being new to the idea.
Please don't forget, you will be able to select different colour views (7+) so something like this could be one of them..

Of course if I throw in every idea then I might as well have the whole GUI dedicated to palette tools! ;)

Offline Ai

  • 0100
  • ***
  • Posts: 1057
  • Karma: +2/-0
  • finti
    • http://pixeljoint.com/pixels/profile.asp?id=1996
    • finticemo
    • View Profile
I make my colors by choosing a value and then adding a hue and saturation to that value on the fly later on.
I would think a planar colour selector as configured previously, with intensity separate from hue and saturation, would be perfect for just that situation.
The thing is that a planar color selector gives you about 37 times more choices than you can realistically comprehends, just for one color dimension. For a full 3 dimensions, thats 37^3 == 50653 times more choice than is meaningful. Having the full range of choices is useful and good, and seeing them all at once is not :)

If you insist on being pessimistic about your own abilities, consider also being pessimistic about the accuracy of that pessimistic judgement.

Offline surt

  • 0011
  • **
  • Posts: 570
  • Karma: +0/-0
  • Meat by-product
    • not_surt
    • http://pixeljoint.com/p/2254.htm
    • View Profile
    • Uninhabitant
Just experimenting with the layout.

I'm sure it takes up considerably more vertical space than you want, I just scaled it up to fit the horizontal space available.
Minor variation with colour space indicators for all four colour contexts.
And of course the colour plane should be rendered with the value of the third component.

EDIT:

...
NOTE: this is different from sliders in that it's entirely relative, where sliders are absolute. Hence you can see on the left side of 'hue', it slowly becomes red, since the pen 0 color was orange, only 30 on the hue scale,  whereas on the right it changes very quickly to cover the range 30..360
Non-linear colour sliders are a nice idea, the discretization not so much.
Ideally they wouldn't just be two split linear ranges, as usually you want to tweak the colour by a small amount (and your hue example certainly doesn't allow that), but a single, continuous, nicely steepening curve over the whole range (any ideas of a good function for that?), so you can make changes of any granularity.
User interface might not be so nice though: you don't want the curve changing as you push the slider, so it'd probably require a confirmation stage.

The thing is that a planar color selector gives you about 37 times more choices than you can realistically comprehends, just for one color dimension. For a full 3 dimensions, thats 37^3 == 50653 times more choice than is meaningful. Having the full range of choices is useful and good, and seeing them all at once is not :)
I don't get this. At all. Colour's require comprehension? I should expect having a continuous surface to be ideal for locating a desired colour as one's eyes can just follow the local gradient towards what they are searching for.

If I make the palette area larger, but square in ratio with square swatches and the icons either side (maybe 160 x 160 instead of 224 x 112 / 112 x 112). Then if you pressed a key/button the colour space view would appear below and replace the contents of the Brushes/Tools windows. This would let you do larger colour editing, but stop you doing drawing at the same time..
Why not just alow the regions to collapse/expand as necessary and let the user pan the panel if they insist on having more expanded regions than their screen resolution can handle?
« Last Edit: January 03, 2009, 02:32:17 am by surt »

Offline Ai

  • 0100
  • ***
  • Posts: 1057
  • Karma: +2/-0
  • finti
    • http://pixeljoint.com/pixels/profile.asp?id=1996
    • finticemo
    • View Profile
EDIT:

...
NOTE: this is different from sliders in that it's entirely relative, where sliders are absolute. Hence you can see on the left side of 'hue', it slowly becomes red, since the pen 0 color was orange, only 30 on the hue scale,  whereas on the right it changes very quickly to cover the range 30..360
Non-linear colour sliders are a nice idea, the discretization not so much.
Ideally they wouldn't just be two split linear ranges, as usually you want to tweak the colour by a small amount (and your hue example certainly doesn't allow that),
It certainly does allow that.
Choose two colors, then pick from the interpolation between them. That's what the 'interpolation old' is for.
I usually do the second, as using interpolation in this way is extremely approachable and intuitive 'i want a color that's 50% between color a and color b' -- easy to understand, right.. the entire dialog centres on the main interpolation ramps, hue/sat/val are just ways to poke them around in a broad sense.
This dialog design comes from actual experience using my own relative-colorselector (which simply looks at the painting color and background color, and sets painting color = 50% mix of painting and background color using LAB colorspace.)

Quote
but a single, continuous, nicely steepening curve over the whole range (any ideas of a good function for that?), so you can make changes of any granularity.
You can, in fact, make changes of far finer granularity than all existing planar or slider based selectors that I know of.
One of the reasons that I designed this system for pixlab is that there is no limit to its precision.

Quote
The thing is that a planar color selector gives you about 37 times more choices than you can realistically comprehends, just for one color dimension. For a full 3 dimensions, thats 37^3 == 50653 times more choice than is meaningful. Having the full range of choices is useful and good, and seeing them all at once is not :)
I don't get this. At all. Colour's require comprehension? I should expect having a continuous surface to be ideal for locating a desired colour as one's eyes can just follow the local gradient towards what they are searching for.
The local gradient is precisely what prevents you from finding an accurate match; our eyes (and IMO our minds in general) work relatively.
All that presenting, say, 256 choices does is allow you to remain confused and vague about what you want. Discreteness allows iterative, quick refinement of a selection, in a very similar way to a binary search, and this is primarily because the cost of considering each color is low.
A continuous scale has potentially infinite cost.

« Last Edit: January 03, 2009, 12:35:40 pm by Ai »
If you insist on being pessimistic about your own abilities, consider also being pessimistic about the accuracy of that pessimistic judgement.

Offline happymonster

  • 0010
  • *
  • Posts: 455
  • Karma: +0/-0
    • View Profile
Surt: Thanks for that! I think it does take up too much space vertically, but it's definately given me some ideas. Thank you for taking the time to mockup that off, I do appreciate it!

In fact since most of the time people will be selecting colours from a palette (rather than changing them), I thought about this variation:


Larger palette area, square swatches, and keeping sliders horizontal below. It does take up a bit more space than before, but not too bad overall. Of course, this means that any of the half palette / half colour view areas will not be square, but I also like the square swatches. ;)

What do you think?

AI: Thanks for explaining that in more detail. I didn't realise about the interpolation part being so important. One question, do you picks pen 0 with left mouse button and pen 1 with the right mouse button? The issue I have with that is it would mean it would make it more complicated to select a colour when you naturally have two pens to draw with (or 4 in my case).

Offline happymonster

  • 0010
  • *
  • Posts: 455
  • Karma: +0/-0
    • View Profile
And in a half/half mode:


I've rotated the colour view so Luminance is twice as big as the hue dimension (as Luminance is more important).
The colour space still seems bigger overall than the two squares approach.. Thoughts? :)

Offline surt

  • 0011
  • **
  • Posts: 570
  • Karma: +0/-0
  • Meat by-product
    • not_surt
    • http://pixeljoint.com/p/2254.htm
    • View Profile
    • Uninhabitant
I suppose I could suffer rectangles this far.  :P
Looks like it'll work.

Offline happymonster

  • 0010
  • *
  • Posts: 455
  • Karma: +0/-0
    • View Profile
Not exactly a ringing endorsement! :P

It seems to work so far, I'm still refining things continually of course..

I have a question about the GIMP colour sliders. I take it you click on the slider and that becomes the new value/colour. Does this mean you can't have precise control over the values? I.e. there are no slider arrows..?