I’m trying to make a color ramp that covers all the hues equally for a texture that will repeat the colors across the model like a rainbow. I can set this up, but I guess I don’t understand why colors like blue, red and green are spread so thinly across the texture compared with other colors like yellow, cyan and magenta. Maybe I don’t understand something fundamental about color wheel theory? Could someone explain? Below is my color ramp and a sample render output.
whats fac the color ramp?
maybe try a combine HSV and drive the H socket?
The fac input for the color ramp is a saw wave texture. But I don’t think it’s really the texture causing the “problem”. You can see the thinness of the red, green and blue in the ColorRamp node itself. Your combine HSV suggestion just makes it turn black.
Are you using filmic blender in your render ? I think it can help…
Another solution would be to have an emission factor of 1 (you can have an emission value of 1 for the camera , and an higher value to light the scene).
I’m not sure but I think the issue goes like this :
- you’ve got a pure red color (1,0,0)
- it’s value is then multiplied with an emission shader set to 10, then the rendered pixel has a value of (10, 0, 0)
- then it’s clamped to 1 to be displayed and you’ve got a red color (1, 0, 0) again.
Now we do the same but we add a tiny bit of green : (1, 0.1, 0) , it should give a slight orange color
- when we multiply it with the emission it gives (10, 1, 0)
- when it’s clamped for the display it gives (1,1,0) : a yellow color
Filmic should help to do the clamping in a better way and display better colors…
Hope that can help !
That’s interesting sozap, but I think you might be jumping to the end. I tried changing to filmic log encoding, but it still suffers from narrow bands for red, blue and green. I think the problem is more in how the colorramp is generated. I’m able to improve things by switching to an RGB based ramp and adding 11 control points. More work, but it works.
Ok,
I’m glad you’ve succeeded to make it work at last,
I wasn’t sure of the answer but that sounded logical to me
The reason is that you aren’t dealing with a wheel. You are dealing with three lights, and they most certainly do not break down into a circle. Light is linear, and as such, you are dealing with a triangle[1] when trying to interpolate along maximum intensity output between only two of the lights at a time.
If you think about RGB as being three lights, what you are actually asking is:
“How can I produce a series of values that crosses through each light at maximum intensity?”
The answer from there is quite simple, but only the tip of a deeper rabbit hole.
Specifically, you don’t require 11 control points, but rather 6:
- Maximum output red
- Maximum output red and green
- Maximum output green
- Maximum output green and blue
- Maximum output blue
- Maximum output blue and red
From there, the mixtures in display referred terms will move linearly (assuming you are using display linear values) between the two lights in question.
[1] Perceptually it is not an equilateral triangle, because the way the three lights appear perceptually varies depending on what the colours are for each of the R, G, and B lights in any given RGB colour space.