Anisotropic Reflections In CG Software
By Neil Blevins
Created On: Aug 21st 2005
Updated On: Dec 9th 2013

Before reading this tutorial, please read my Anisotropic Reflections In The Real World tutorial, which discusses the theory of what makes Anisotropic Reflections in the real world.

So now how do we replicate them in 3d? Well first, anisotropic reflections in cg can be split up into two categories.
• An Anisotropic Highlight. As discussed in my tutorial Reflections and Highlights, a highlight is just a faked reflection of a point light source. Most 3d apps have a way to do anisotropic highlights.
• An Anisotropic Reflection takes an actual reflection of your scene or an environment map and stretches it based on an anisotropy direction. Fewer renderers can do this, some that can include Vray and mentalray.
Take this real world example of a christmas ornament that's made up of fine synthetic hairs that all travel in one direction.

Figure 1

Here's the direction of the grooves.

Figure 2

Here's another anisotropic highlight on a sphere...

Figure 3

This is caused by grooves like this...

Figure 4

Here's some Anisotropic highlights on a plane. A horizontal highlight like this...

Figure 5

is caused by vertical grooves...

Figure 6

A vertical highlight like this...

Figure 7

is caused by horizontal grooves...

Figure 8

Here's the example of a CD or the bottom of a pot...

Figure 9

Here's the direction of the grooves that causes the pot picture above.

Figure 10

As you can see, the grooves always go in the perpendicular direction to where the highlight is stretched.

Now that we have the theory, lets show how to create the effect in 3d using a number of different 3d apps and renderers.

Please note, if using 3dsmax, make sure to read the warning at the end of this lesson, Max Smoothing Groups Can Mess Up Anisotropic Reflections.
3dsmax's Standard Material In Scanline Renderer

Max ships with an anisotropic shader. This does anisotropic specular highlights, not anisotropic reflections. It is similar to a ward anisotropic specular shader additively composited on top of a lambertian diffuse shader.

Here's the standard anisotropic Highlight, which looks like Figure 3.

The orientation is defined in object space, so it defaults to the grooves traveling along the x axis of the object, which of course produces a highlight that goes straight up and down (again, the direction of the highlight is always perpendicular to the direction of the grooves). Changing the orientation parameter from 0 to 90 will change the direction of your non-existent bumps, and hence change the look of the highlight to something similar to Figure 1.

To achieve the pot example, you need to provide the shader with a more complex direction. That's where the orientation map slot comes in handy, which bases the orientation of the anisotropy off of a black and white map.

In the orientation map slot, place a Gradient Ramp map and set it up like this...

Note the output amount is set to 2.0, and the Gradient Type is Spiral. That produces this map...

Make sure to apply a UVWMapping modifier on your object, and set it to planar. Then apply the material, and we get the result we're after...

Here's the max file that made the image above: max_aniso.zip  (Requires 3dsmax 8 or later)

3dsmax's Brazil Advanced Material in Brazil 1.0 or 2.0 Renderer

Brazil has an anisotropic highlight as part of the Brazil Advanced's Blinn Highlight Shader. It's basically identical to the max highlight, although the Anisotropy amount goes from 0 to 1 instead of from 0 to 100.

Also, to get the pot example, you need a variation on the trick above. Assign a gradient ramp to the Angle, however, make the gradient look like this...

So have the gradient go from black to white. Set it to Spiral. Also, note that the Output Amount is set to 360. This is because, in Brazil the Angle is from 0 degrees to 360, so you need to set the gradient ramp to go from a value of 0 to 360, which is achieved by multiplying the black to white gradient by a value of 360. So the color black remains 0, and the color white, which is usually 1, is now 360. And we get the correct highlight...

3dsmax's Arch & Design Material in Mentalray Renderer

Mentalray is similar to the Brazil Material, except it does anisotropic highlights AND reflections.

• First switch to the mentaray renderer
• Create a Arch & Design material
• Reduce Glossiness to a value below 1, the smaller the number the more blurry the reflection
• Set Anisotropy to a number lower than 1, the lower the number the more stretched the reflection.
• Set rotation to the direction you want the grooves
• Set Map Channel to 1 so it uses the UVs on your object for the rotation direction

Here's an example of full anisotropic reflections:

Here's the max file that made the image above: mr_aniso_ref.zip (Requires 3dsmax 2014 or later, mentalray)

To get our pot example, in the Rotation map slot place a gradient set like this...

Note the output amount is 1.0. Make sure to apply a UVWMapping modifier on your object, and set it to planar. Then apply the material, and we get the result we're after...

Here's the max file that made the image above: mr_aniso.zip (Requires 3dsmax 2009 or later, mentalray)

3dsmax's VrayMtl Material in Vray Renderer

Vray is similar to mentalray, as it does anisotropic highlights AND reflections.
• First switch to the Vray renderer
• Create a VrayMtl material
• Reduce Refl glossiness to a value below 1, the smaller the number the more blurry the reflection
• Set Anisotropy to a number between -0.99 and 0.99, the further the number is from 0, the more stretched the reflection. Never set it to a value of 1 or -1, as this breaks the material and you'll get no stretching at all
• Set rotation to the direction you want the grooves
• Set Map Channel to 1 so it uses the UVs on your object for the rotation direction

Here's an example of full anisotropic reflections:

Here's the max file that made the image above: vray_aniso_ref.zip (Requires 3dsmax 2014 or later, vray 2.4)

To get our pot example, in the Rotation map slot place a gradient set like this...

Note the output amount is 1.0. Make sure to apply a UVWMapping modifier on your object, and set it to planar. Then apply the material, and we get the result we're after...

Here's the max file that made the image above: vray_aniso.zip (Requires 3dsmax 2014 or later, vray 2.4)

3dsmax's Darktree Shader in Scanline Renderer

Another anisotropic shader comes with Darktree. This anisotropic shader allows for a compressed highlight, but at first glance has no way to control the direction of the highlight. Well, turns out while there's no control in the main properties page of the shader...

There is a hookup for it in the connections, allowing you to hook up other darktree functions to specify the direction of the anisotropy, for example Gradient - Absolute Shells (which will let you do the compact disc type highlights such as the one in Figure 9...

So for those darktree users out there, you may wish to check into using this for anisotropic highlights. Thanks to Paul Gulianelli for the tip and shader example.

3dsmax's Shag Hair Shader in Scanline Renderer

Another anisotropic shader comes with Digimation's Shag:Hair, the hair shader, which has a nice specular component.

However, because it's meant for hair and not geometry, it has a "translucence" component, which plays havoc with lights. For example, adding more lights to your scene will make the diffuse component get brighter and brighter...

This can cause all sorts of problems on non hair geometry, for example, if I placed a light entirely behind the sphere, and applied a hair shader, I'd still get a specular highlight on the surface even though the light was not facing the surface I was looking at. A newer version of the hair shader gives the user some control over the amount of translucency, but in general I'd still only recommend this shader for hair, not geometry.

The standard ward anisotropic renderman shader works fine in PRMAN and BMRT. I rendered the images below through Animal Logic’s Maxman translator in max and rendered in BMRT. The top of the cylinder doesn't require any gradient to tell the renderer the direction, because the cylinder is a nurbs cylinder, and so the spun direction on top comes built into the cylinder.

Maya's Anisotropic Shader in Maya Software Renderer

Maya's Anisotropic Shader is pretty similar to the others, but as with every 3d app, there are some variations you need to know.

Notice that instead of an anisotropic amount, it has SpreadX and SpreadY. This lets you explicitly define how tall and how wide the highlight is. These settings give you the following result...

To get the opposite direction, invert the spread. So instead of a spread of 15 by 1, try 1 by 15. This changes the direction of the grooves, giving you vertical grooves, which gives a result similar to Figure 1...

The easiest way to get the bottom of a pot effect is to use a nurbs cylinder. Here's the results...

So why does this work? In maya the anisotropy is based on uvs by default, not like max where the default is object space. And the nurbs cylinder automatically has uvs that travel the top of your cylinder in a spiral pattern. To prove this, lets take the sphere we had above...

And now lets assign it a planar uvset from the front...

Notice how it totally changes the pattern on the sphere. So if you want to define the direction of the grooves using maya's Anisotropic shader, you can apply new uvs to your object.

While more flexible than the object space method, the uv method in maya's shader is not without its problems. Lets convert our nurbs cylinder into a polygonal cylinder (using maya's Modify -> Convert -> NURBS to Polygons command). Notice how the highlight is now all crooked...

This is because maya's shader doesn't do proper interpolation between uvs. The nurbs cylinder works because the nurbs cylinder is diced into tiny polygons before its rendered, the polygonal cylinder is rendered as is. The anisotropic direction is based off the uvs, and so there aren't enough uvs to get a smooth result.

Ideally, maya's shader would have proper interpolation built in, but since it doesn't, the only way to fix this problem is to smooth the cylinder, i.e., add more faces to it. Here's the cylinder after I use the Mesh -> Smooth command, which adds more faces. The highlight is smooth again.

Max's Smoothing Groups Can Mess Up Anisotropic Reflections

One thing to note, in 3dsmax (for pretty much all renderers) smoothing groups can mess up the way your anisotropic shader produces results. Here's an example. This is a chamfered cylinder with a max standard Anisotropic shader applied to it. The edges of the cylinder are chamfered, however, there is no smoothing between the chamfered edge at the top of the cylinder...

And here's it rendered...

Looks good. But now lets apply a Smooth Modifier to the object, and set it to a large angle such as 60 degrees...

Here's the result in the max viewport, see how the chamfered edge is now smoothing with the top face of the cylinder...

And here's the render, which looks nothing like you'd expect...

So if you're seeing odd artifacts, such as extra radial reflections, check the smoothing on your object, it may be responsible for the error.

Here's a max file to check out the smoothing issue: smoothing_affects_anisotropy.zip (Requires 3dsmax 2009 or later, scanline renderer)

Go to the Brushed Metal Materials lessons for more info on replicating anisotropic effects in 3d.

This site is ©2023 by Neil Blevins, All rights are reserved.