2010/06/29

Add Coating Shader Compound for Autodesk Sogtimage




Coating is really usual in real life. Indeed, it is more unusual in 3D world! Color obtained by coating is a mix of the color of coat and interferences of wavelength, so it’s not so easy to render. I made the choice of simulating and not spectral rendering. It’s easier, faster, and with more artistic controls!

So here is my ‘Add Coating’ Shader Compound for Autodesk Softimage 2011!

It is made for adding nearly any kind of coating! With this compound, you can do:
Colored glaze and varnish,
Antireflect and optical coatings on lens,
Oily Irisation,
Rainbow or color changing glaze…
And so many things!

This ‘Add Coating’ is not made to render real simulation of interference coating. It is made to have a full artistic control over the result. So, you don’t have to know how much thickness should have the coating according to wavelength… Just choose how many rainbows you want and color shift, and you’ll have a nice coated effect!

The shader Compound is easy to use:
First, do your material as usual, using all what you want in your render tree (architectural, phong, complex tree, Gem Dispersion Shader Compound, etc…).
Second, plug your material in the ‘Base material’ input of the ‘Add Coating’ Shader compound, and plug its output to ‘surface’. Voilà! You have coated your material!
Third, play with the many option of the coat to have the desired effect.

This Shader Compound is made for Educational Purpose Only, and it is fully commented. Have a look inside it!

You can also use it ‘as is’ if you need to add some coating.

If you make some pictures with this shader compound, please, don’t forget credits and send me your results. If you have any suggestion for making this compound better, just send me an email!

Quick documentation:
Input:
Base Material: this color is not intended to be use as a color. It’s where you have to plug your uncoated material to add coating to it.
Exaggerate effect: you can make effect more or less visible, more or less exaggerated. Less than one is more correct. Good value is around 0.5.
Disable Coating: switch off the effect of the Shader Compound. It turns it to be just a pass-through. It’s useful if you want to make passes without coating.

Interferences:
Spectral cycles: the number of ‘rainbow’ seen in the coating. Less than one is nice for real coating look, more than one will make a more rainbow effect on object.
Spectral Offset: the way to choose the color of coating you want. Cycle spectral colors to have the one you want at the place you want. It’s just a rainbow color sliding.
Saturation: you can desaturate coating here. When saturation is close or equal to zero, coating is acting like polish on material.

Attenuation:
Fresnel attenuation: at 0, the effect of coating is visible on the entire object, like a lens coating. At 1, just the edges of the material are colored, more like standard coating or colored coating.
Absorption: because of conservation of energy, coating is hiding base material. Absorption makes edges of the object darker (making coating more visible). It is nice to have a ‘deep’ effect on object.

Diffuse Coating:
Light sensibility: Some coatings are reflective and diffusive. Zero means no diffuse, 1 means full diffuse. This is useful for colored and thick coating. It helps also to make coating more visible in case of too few things around to be reflected.
Hardness: diffuse can be real local (light facing diffuse) or on all object. 0 means diffuse is visible on entire object.
Use Tint color: diffuse color is the one of ‘tinted coating’, like pigment include in glaze or coating. It’s the most common case.

Tinted Coating:
Tinted coating: when on, rainbow colors are filtered by the color of tint. It’s a filter color, not a pigment color.
Tint color: the color of tint, or filter color of coating.

Optimisation (for transparent base):
If you plug a transparent material in base material, coating could be very slow because of rendering inside the object in internal and total reflection. When you switch on this option, coating is rendered just on external reflection of object, making it really faster.
It is useful just on transparent base material. I do not recommend it on non transparent object.

Noise:
Noise intensity: you can make rainbow effect more or less noisy. 0 means no noise (default), with perfect rainbow, 1 or more means disturbed coating, like oil.
Noise scale: to adapt the size of noise pattern. The smallest is the scale, the biggest is the pattern.
Use external noise and External noise input: Disable the internal compound noise and take the scalar input as new noise. If you want a more controlled noise (like a logo on your coating…), you can override the internal noise and branch the shader you want here.

Multiple Outputs:
The Add coating compound has multiple outputs. It is useful for another kind of usage.
Instead of using a base material, you can plug the multiple outputs in your material.
For example, connect the ‘reflect color’ to your reflection color, multiply your diffuse color by absorption. On some object, the result will be the same, on other, it would do different effects.

To do:
For next versions, I plan to include a pigment color, acting as a real filter on object. Actually, tinted color does not affect object color.
Also, I’ll add coating specular. Actually, it just add reflect, without specular.
With specular and pigment, it would be possible to emulate thick varnish and glaze.
Multiple coating is actually possible by plugin AddCoating in another AddCoating. I’ll try to make a smarter (and faster) way to do it.
If you have any other idea or need, just ask me!

You can download the compound here: Add Coating Shader Compound

And here are some pictures and videos of coated materials:






AddCoating Shader Compound for Autodesk Softimage from François Gastaldo on Vimeo.


AddCoating Shader Compound Test video from François Gastaldo on Vimeo.

2 commentaires:

Paulo Barrelas a dit…

I was looking for something like this for quite some time. Thanks a lot for sharing this and all the hard work you've putted on it!

Richard a dit…

Very nice, thanks!!