Generating anisotropic highlights or reflections on polygon objects, was a real pain for many years. We always were jealous of NURBS surfaces which allowed artists to generate anisotropy along UV parametrization. Once polygons received the ability of anisotropic highlights, the users wanted more. Anisotropic reflections have the power to add great deal of realism to renders and became a handy tool for everyday use.

In the past I have done jobs which required the use of anisotropic patterns and those had always been faked with maps and the like. But now there is no need for faking anymore. A very nice feature of the T2S_Illumination shader enables the manipulation of the anisotropy vector orientation which makes it possible to generate realistic reflection patterns over the surface.

Disable the Fresnel option under the Fresnel tab. This is done to see the full reflection strength of the material – metals often don’t have any or very slight Fresnel reflections. Enable the Reflections under the Scattering tab and switch the Glossy mode to Anisotropic. Set the Shiny U/V parameter to 1 and 100. Under the Anisotropy tab change the mode to North Pole to see how the reflections could look like. Later we will switch it back to North Direction.

To make the reflections visible, create an environment which will be reflected. You can setup some objects in the scene or just use a spherical map.

Applying this material to a grid with proper UVs (Planar XZ projection), shows the nice circular anisotropic reflections as seen in your kitchen on a cauldron’s bottom.

[ Javascript required to view QuickTime movie, please turn it on and refresh this page ]

The next step is to recreate that North Pole behavior in the direction vector. To achieve this we have to provide a vector map that manipulates the north direction, so that it points to the center of the grid.

Switch back the Anisotropy mode to North Direction.

In Photoshop, you can very easily create such a vector map. All you need to do is to make two grayscale gradients. One is from right to left in the red channel of the image and the other is from bottom to top in the blue channel. Make sure your gradients are linear and not cubic (smoothness 0 vs smoothness 100).

These colors will then be interpreted by XSI so that the full red color will point to the positive x direction and black will be pointing to the negative x direction, pos z and neg z respectively for the blue color. To do this the color channels must be split apart and remapped to a vector. By using Pick_Channel and Change_Range nodes you can easily remap color values (0 -> 255) to a vector component (-1, 1). After having done this for both red and blue channels of your picture, you can recombine the scalars into a direction vector by using a Scalars2Vector node.

One last thing to note is that even if your texture is applied locally on the object, the vector that is built with the texture’s values is defined in world space. To get proper anisotropy that will follow your object’s every transform you need to convert the vector to object space by using a Vector_Coordinate_Convertor node. Switch the Transform to to Object.

Having fun

At the beginning of this article I talked about Anisotropic Patterns and their creation. Now that we know how to create custom vector direction maps there is no limit to the anisotropy patterns we can render. For example: a typical brushed finish of stainless steel.

A very simple map can generate the same effect.

[ Javascript required to view QuickTime movie, please turn it on and refresh this page ]

And the same thing for some really nice looking Carbon Fiber material.

[ Javascript required to view QuickTime movie, please turn it on and refresh this page ]

I hope this article, beyond anisotropy, has helped a few people better understand the world of vector usage in the Rendertree.

This entry was posted
on Wednesday, March 14th, 2007 at 10:44 pm and is filed under Rendering.
You can follow any responses to this entry through the RSS 2.0 feed.
Both comments and pings are currently closed.

Hi. Thank you very much for such detailed tutorial.
I’m trying this shader and it results in beautiful render.
However, When combined with other object with different shading property, it really slows down the render-whereas it renders real fast on its own.

I really would like to use this shader for our project.. but it’s a problem if it takes too long for it to render. I can seperate object with this material on a diff. pass however can anyone suggest me a solution or raise a flag on why it’s increasing the render time?

Thank you for this article, and for letting us see the sample maps. This turns out to be very useful for me, as I have some upcoming projects that can use various “weave” patterns, including the carbon fiber example.