This is a follow-up to an answer to my previous question, Why is this color so different in Texture Paint, and how would I change it?. That question had two parts, as indicated in the title. Both parts were answered by "Mr A". This question is a follow-up to his answer to the first part, Why is this color so different in Texture Paint?
His answer was, "I believe the color picker is using linear space while the texture is using sRGB. If you want the two colors to be consistent, use the Hex value instead. It is gamma corrected." That answer was basically in a foreign language because I didn't know what "linear space," "sRGB," or "gamma" meant in this context. Looking those up led me to a bunch of references that suggested I'll need a second PhD to understand this stuff:
- Color Management, in Blender 4.0 Manual
- Four detailed, technical articles on Wikipedia:
- HSL and HSV
- Color space, section Absolute color space
- This gives one of two definitions of the title term as "A color space in which colors are unambiguous, that is, where the interpretations of colors in the space are colorimetrically defined without reference to external factors." (emphasis added)
- Gamma correction
- A long and detailed answer by @troy_s to the Blender StackExchange question, How to get accurate colors with Filmic Blender. (Question edited to add this reference based on comment by
- States that "without utilizing [the CIE 1931 XYZ model], the values in an RGB triplet are meaningless" (emphasis added)
- A long and detailed answer by @Myndex to the StackOverflow question, generate colors with the same perceived brightness and saturation, about colors in OpenCV (Open Source Computer Vision).
- HSL and HSV, en-academic.com
- This appear to be a pilfered copy of an old version of the Wikipedia article of the same name, linked above. I reference it because it contains a relevant sentence, omitted from the current version of the article on Wikipedia: "Each unique RGB device therefore has unique HSL and HSV spaces to accompany it, and numerical HSL or HSV values describe a different color for each basis RGB space." (emphasis added)
I previously thought that the specification of a color by three numbers for RGB or HSV was unique, i.e., unambiguous, i.e., independently meaningful. The above references tell me that I've been wrong about that. That's the cause of the difference in the colors in my previous question. Now I'm grappling with (a) how to understand the relationship between colors and their RGB or HSV specs, and (b) more importantly, how that relationship affects how I specify colors in different workspaces in Blender.
To try to make sense of this, I went back to the color pickers in my previous question and made pictures of their values in RGB, HSV, and hex:
The light brown color I originally chose in the Layout Workspace:
The dark brown color I got when I copied the HSV values from that into the color picker in the Texture Paint Workspace:
Then I made pictures of the color picker when I entered the hex values obtained in one workspace into the other:
The dark brown color I got when I entered the hex value obtained in the Texture Paint Workspace into the color picker in the Layout Workspace:
And finally, the light brown color I got when I entered the hex value obtained in the Layout Workspace into the color picker in the Texture Paint Workspace:
Then I put the numbers in those pictures into a spreadsheet to look for patterns:
In this spreadsheet, the orange cells in column B are the HSV values for the light brown color that I selected visually in the color picker. The orange values in column C are those original HSV values that I copied into the color picker in Texture Paint. The orange cell in column D is the hex value that I copied from Texture Paint into Layout. And the orange cell in column E is the hex value that I copied from Layout into Texture Paint.
In the bottom part of the spreadsheet, I convert the hex values to the RGB values they represent by splitting them each into three 2-digit hex numbers, converting those numbers to decimal, then dividing by 255. Comparing the results of that to the numbers in the top part of the spreadsheet, I find that the hex value for the light brown in Layout represents the RGB values of the light brown in Texture Paint, while the hex value for the dark brown in Texture Paint represents the RGB values of both the light brown in Layout and the dark brown in Texture Paint. The RGB values for the dark brown in Layout are a third set, not represented by either of the two hex values.
To which I can only say: What???
Or, repeating the questions I asked above:
- What is the relationship between colors and their RGB or HSV specs in general? And
- More importantly, how does that relationship affect how I specify colors numerically in different workspaces in Blender?
Shortly before I'm posting this question, a comment has appeared from @GordonBrinkmann on my previous question, in which he says that Andrew, the donut instructor, didn't have the problem I'm having because he chose the colors in both workspaces visually, not numerically. So I suppose Gordon's answer to my second question above is that I should specify my colors visually and not worry about the numbers. I can see that that could work, but I'm a geek who wants to understand the numbers and their relationships.