7
$\begingroup$

i think this is a colomanagement workflow qestion at its best. Imagine the following scenario:

Say there is a nitpicking customer, and he requests the following you from you: Deliver an image showing a sofa with three pillows on it, and the pillow colors shall be

-Pillow 1 RGB = 0.8 0.01 0.01 -Pillow 2 RGB = 0.75 0.8 0.065 -Pillow 3 RGB = 0.05 0.8 0.22

Thank god he did not ask for a canvas print with target CMYK Values! (but this is a topic for the upcoming discussion)

So, how in terms of managing colors, can i achieve this? Typing the given numbers into the color wheel of the shader input may be the worst idea.

I think this example explains what i am thinking about. From what i've learned so far, the problem can be compared with music:

I take my guitar, plane the note "c", this note i will record using a digital microphone. Then i take the recording on my computer, burn it on CD, put the CD into my hiFi system and play it.

What note will i hear?

So, the question again is: How can i achieve target color values at the very end of my color pipeline?

I'm loking forward for a good discussion.

Thank you in advance.

$\endgroup$
8
$\begingroup$

CMYK and RGB are relative colour spaces, and as a result, individual values mean nothing. In RGB's case, it means the intensity of three lights, a white point colour, and a transfer function which are not specified by the values alone[1]. In CMYK's case, it means four (or more) arbitrary ink colours as well as paper stock and illuminant.

Taken in isolation with no additional metadata, RGB values and CMYK values mean nothing, and there is no method to convert them.

In order to specify a distinct colour, values would need to be offered using another colour encoding model such as xyY, along with some additional context, or, optionally, in RGB with a clearly defined colour space. Same would go for offset work, via an associated printing colour space encoded into an ICC format.

It should also be noted that when dealing with shaders, you should not match sRGB values, for example, but rather match how the physical object reflects light relative to the lights used in the renderer's reference space. This is likely the subject of another post however.

I take my guitar, plane the note "c", this note i will record using a digital microphone. Then i take the recording on my computer, burn it on CD, put the CD into my hiFi system and play it.

It is closer to the idea of a guitar tablature; you don't know the guitar tuning, so playing the particular fret position is essentially meaningless without knowing the guitar tuning.

In much the same way, RGB values purely are intensities. What isn't communicated via an intensity value is:

  1. What the colour of each light is for each red, green, and blue intensity. Is the red a purple colour, the green a yellowy tone, the blue a cyany?
  2. What arbitrary scale the intensity is mapped to. Is it a physical ratio, a non-linear scale of one of the infinite out there, or some perceptual scientific ratio?
  3. What the achromatic value is intended to be. What colour are we using as the adapted achromatic colour for our notions of white?

Hence, according to the ISO, we must answer all three of these questions before we can use the term colour space.

Given an RGB colour space and the values, we can get an absolute device independent notion of what the colour in question is, and convert it to any other domain accurately.

[1] http://www.iso.org/iso/catalogue_detail.htm?csnumber=37161

$\endgroup$
  • 2
    $\begingroup$ I remember to have had a client project a year ago, where nailing a target sRGB value was a part of the task (logo animation towards the company's CI color). I ended up tweaking shaders and lights until a color eyedropper would report the sRGB values requested, because I knew that on the client side, the person in charge would do EXACTLY the same. Entirely stupid workflow, and by far not as complex as the cushion example, as I was able to simply eliminate the shading at the critical frames. $\endgroup$ – aliasguru Dec 4 '16 at 15:27
  • 3
    $\begingroup$ Similar discussions happen when you ask clients or - worse - co-workers what resolution they require. The answer will most likely be "make it 300 dpi"........... $\endgroup$ – aliasguru Dec 4 '16 at 15:28
  • 1
    $\begingroup$ @aliasguru The good news is that there are tremendously accurate processes in place, but sadly many imagers throw their hands up because of all of the bllsit out there. It can be done, and accurately. The issue tends to be foundational knowledge. Imagers can insulate themselves by knowing the concepts, and can prove their case / make clients comfortable. $\endgroup$ – troy_s Dec 4 '16 at 15:31
2
$\begingroup$

In therms of music, really good comparaison by the way, what you ( @pixelpoems.de ) hasn't take into acount with your exemple of the C key is, that in contemporary music there is an asumption that you play in A440. It isn't always the case in classical music for exemple or in oriental music. So your C key doesn't means anything without the information of C in A440.
https://en.wikipedia.org/wiki/A440_(pitch_standard)

It's exaclty what Troy explained with colors, your RGB = 0.8 0.01 0.01 (in music C key) doesn't mean anything if you don't specify the context, a clearly defined colour space (in music A440)

We think RGB is standard across software but each one see RGB in their own way. It's like if you ask two musicians to play a C key but one tuned in A440 and the other tuned in 432, they will both play a C but you wouldn't hear the same note.
A440: https://www.youtube.com/watch?v=rFOl-9SNxLY
A432: https://www.youtube.com/watch?v=BJ8KdqhHk0w

By the way thanks for your question, now I clearly see how music and light are linked, after all they are both just vibration.

Hope it can help musicians to hear light. ^^


Edit : This answer is just a garnish of Troy's one, but clearer than a comment.


Edit 2 : In fact I haven't responded to :

So, the question again is: How can i achieve target color values at the very end of my color pipeline?

Because the question is more complicated than what it looks. However I've read a good starting point :
http://colour-science.org/posts/the-importance-of-terminology-and-srgb-uncertainty/

  1. So, first you and your client must be tuned on the same A, whether it's 440 or 432 or anything else, otherwise there will always be a discord.
  2. What is to be, let say sRGB EOTF 0.8 0.01 0.01?
    The based color of the object (Albedo)? The final color of the object in the picture? If so the part in the dark? The ones in light? And about the light, is/are it/they achromatic or colored?
    I think you see the point.
$\endgroup$
  • $\begingroup$ the analogy to music helps a lot. Maybe it should be used more as an example, because it fits in many cases. Say That Tone is Hue, Saturation is loudness and value is pitch, many color management problems can be transformed as music problems: 32 bit = wav = exr, 8bit = mp3 = jpg, bad monitor = bad loudspeakers. All the synchronisation issues have paralles. How can we use the analogy to explain color managment? i'm looking forward to the disussion! $\endgroup$ – pixelpoems.de Dec 6 '16 at 17:35
  • $\begingroup$ It helps musician, don't know for the others. But yes I think too it's a nice aproach. It will definately helps me to explain things. It's funny because I know that music can be a guide to understand whole life but never thought about using it to explain 3D. It just comes up with your exemple. $\endgroup$ – Mareck Dec 6 '16 at 19:30
0
$\begingroup$

So, the question again is: How can i achieve target color values at the very end of my color pipeline?

For me, the end of the color pipeline is always the compositor.

I'd render the pillows in white and mask out their positions in compositing (either with render layers or object id or material id, depending on your situation). Then use a color node to tweak the color. This is way faster than re-rendering the entire scene for every change.

Since, as already mentioned in other answers, simple RGB values are not enough to nail a color, ask for some more data so that you can nail it. Alternatively, since testing out different values is so easy, make a lot of tests and ask your customer which one he likes best (this will probably require a live demo, but there's Skype so why not).

If you are rendering the pillows in white, you need to make sure it doesn't show in indirect lightning. If it does, try out one of those:

  • the pillow is white for camera rays, if not is has a color that roughly matches the final rendering. It's just for indirect, so it doesn't need to be exact.
  • Use render layers
  • Bake the "correct" (colored) light the pillow "emits" (diffuses/reflects) to your sofa (and other props that are affected) to a texture. Adapt your sofa material. Change your pillow back to white.
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.