eugene-khyst / artistassistapp

ArtistAssistApp is a free web app for artists to accurately mix any color from a photo, analyze tonal values, turn a photo into an outline, draw with the grid method, paint with a limited palette, simplify a photo, compare photos pairwise, and more.
https://artistassistapp.com
Apache License 2.0
88 stars 18 forks source link

Feature: Gamut masks using the paint colors you selected #4

Closed sorgtyler closed 5 months ago

sorgtyler commented 7 months ago

It would be great if a visualization of all the possible colors could be generated using the selected paints.

Here is more information: https://gurneyjourney.blogspot.com/2010/04/gamut-masking-tool.html

eugene-khyst commented 7 months ago

@sorgtyler thanks for sharing the idea. Looks very interesting. Could you please provide more details (maybe even example images)? How do you think it could work in the ArtistAssistApp?

sorgtyler commented 7 months ago

This video from James Gurney is a quick overview of the idea: https://www.youtube.com/watch?v=qfE4E5goEIc

I think it could go in a lot of directions. The minimum functionality I'd like to have is generating a polygon representing a region of mixable colors overlaying a color wheel. Each point represents a pigment in the set of pigments selected by the user.

Example starting color wheel (standard RGB) from https://mypaintingclub.com/blog/post/39-The-Gamut-Mask-Tool:

image

Reddish violet, yellow ochre, cerulean blue triad (three specific paint colors creating a triangle of mixable colors):

image

To do this, I think you just need to map 2D coordinates to each pigment and then draw lines between them in the plot.

Some other features:

eugene-khyst commented 7 months ago

I think you just need to map 2D coordinates to each pigment and then draw lines between them in the plot.

I'm not sure about this. If we add Cyan, Magenta and Yellow to the palette, we will have wider gamut of mixes than limited by this triangle made by connecting 3 points.

image

Also, not clear how to show Payne's Gray or Sepia on this ROYGBIV color wheel.

And I can't understand the reason of having such feature? How can I promote it among existing users, what will it allow them to do? It may be interesting to play with it one time but I see no real application for such feature.

Create a copy of an imported image using selected paint colors. That way the user could preview the image they're going to paint in the colors they want to use before committing.

Preview the photo with only selected paints (only in Sepia, only with 3 primaries Cyan-Magenta-Yellow) is very interesting. This one I will implement.

sorgtyler commented 7 months ago

@eugene-khyst

That's what I meant by generating a polygon. The number of points is equal to the number of pigments selected by the user. Using two colors won't make a polygon, so you'd have to make a narrow rectangle to capture the mixable colors between two ends of a gradient. Three or more colors creates a shape on the color wheel. Six colors including cyan, magenta, and yellow makes a much bigger mixable range than just burnt sienna, yellow ochre, and ultramarine blue.

There are multiple benefits to gamut masking:

The reason I requested this feature is that although there are other gamut masking tools online, none seem to support plotting points based on real paint colors from various brands. Either you pick arbitrary points on the color wheel on an electronic display to approximate each of your paint colors, or you mix your paints on real paper (which takes time and has combinatorial complexity).

For colors like Payne's grey, it would be near the middle. But it would also be between burnt Sienna and ultramarine blue since that's how you mix it. Each premixed grey paint has its own color.

I hope that makes more sense.

Thanks for your interest. Your application is great.

eugene-khyst commented 5 months ago

Gamut masking will not be implemented. Instead, limited palette can be used - https://www.youtube.com/watch?v=0yir3khWI5g