The Research:
How do chameleons change their skin color?
Chameleons have multiple layers of skin cells, each containing different pigments. The top most layer contains cells that are red and yellow, the lower layer contains cells that are blue or white. These skin cells either shrink or grow in size based on the color the chameleon intends to be.
For example, if a chameleon wishes to be orange the red and yellow cells would grow to an equal size while the blue cells would shrink. However if the chameleon wanted to appear blue the blue cells would increase in size while all the other cells would shrink.
Lastly chameleons have a chemical called melanin which allow them to darken there current overall coloring.
This technique can easily be expanded to a shader. Textures have multiple channels similar to the different layers making up the skin of a chameleon. I plan to edit the influence of these channels as to better match an intended color palette.
The Shader:
The goal is to create a shader that can change the color pallet of the current textures on a mesh to match that of another user specified texture or the current environment the mesh is in.
Currently I only have the average color of the environment effecting the final diffuse. My hope is to make a more sophisticated algorithm by sampling areas of the texture or environment that have dramatic color shifts and editing the areas with similar color shifts in the diffuse (and color spec) accordingly.
So what am I going to use to show off my final shader!!
A happy chameleon! :D
Progress:
The Sculpt:
The Model:
References:
For the texture I'm going to go with a super colorful palette since it will show off the shader's capabilities best.
This fella is a great example: