In this tutorial, I’ll be running though part of my process for creating the Victorian Guard character using Quixel Suite 2 with Maya and Mental Ray’s MILA layered shader library.
We’ll walk through building Input Maps, setting up our Quixel project, and picking the right output profile for our renderer. We’ll also be going into detail on how I built the textures and shaders for the two most prominent materials on our character; the Black Uniform Cloth material, the metallic Armor material.
I’ll also be highlighting some of the little techniques I’ve found for calibrating Quixel’s excellent textures for use with MILA materials in Mental Ray. Though I’ll be using Quixel Suite 2 with Maya and Mental Ray, my hope is that the overall ideas and detailed thought process behind these techniques will be helpful to anyone interested in working with Quixel Suite 2. So with that, let’s get started!
1 – Baking Input Maps
Before we launch the Quixel Suite, we want to be sure that we can provide DDO with as much information as possible to take advantage of all of its awesome features. A good set of Input maps is important to feed DDO useful information about our model.
Material ID Map:
This is a color-coded map we can quickly create in Photoshop for DDO to quickly understand what materials go where on our mesh. First I broke my character up into 3 groups with separate UV sets for Clothes, Armor and Accessories. For each UV set I used the paint bucket to quickly define color-coded material IDs for each UV island.
XNormal makes it super quick and easy to crank out Tangent Space Normal Maps and an Object Space Normal Maps. In X-normal, we’ll load in our High-Res Mesh and Lo-Res Mesh, then all we have to do is go to our “Baking Options” and open our Normal Map settings. There is a little “Tangent Space” check box. When that box is checked, we are baking out Tangent Space Normal Maps. When it’s un-checked we are baking out Object Space Normal Maps.
XNormal is also great for creating out Ambient Occlusion Map. We’ll load in our High-Res and Low-Res meshes. In our modeling software, it’s good to quickly model out a bounce plane or bowl to help bounce occlusion up onto our model from below. We should be sure that the bounce mesh is not too close to our characters feet. I like to set it about half a body-length below the character.
We’ll Export our Bounce Mesh and load it into the High-Res meshes list and then, go to our Baking Options. There’s some great documentation online for balancing these settings for your particular model, but here are the settings I used.
Once we have our Ambient Occlusion map baked out, we can open it in Photoshop and quickly copy it into a Curvature Map. With our Map open, we’ll go up to Filter > Other > High Pass. The High Pass box will let us a radius slider that lets us control how tight or wide our curves are.
This is going to be used to control the width for edge-wear effects, so I like to keep that in mind while adjusting the radius slider.
Side note- If we don’t provide DDO with a curvature map, it will offer to create one for us!
2 – Setting up
Let’s open up Quixel Suite 2 and jump into DDO. In the Base Creator we can quickly plug our Mesh and Input maps into their corresponding slot. After we set our resolution, we can select our ultra-important “Export Target”
DDO textures are generated from real world Megascans, so when translating it to our renderer, we want to preserve that awesome data as accurately as possible. Quixel Suite 2 comes with a great set of output profiles to help calibrate our textures on export to work precisely with our rendering software.
But what if our particular renderer isn’t available as an output profile? It’s no biggy! Mental Ray is not listed among them, but in most cases there are plenty of comparable output profiles available.
Even though they were not specifically calibrated for use with Mental Ray, some of the available profiles yielded maps that were already excellent starting points for MILA textures.
Mental Ray users (and a lot of other users) will be thrilled to find that there are output profiles calibrated for Arnold! This is great news because Arnold (in addition to being an amazing and ridiculously powerful renderer) has a really well-designed and straight-forward shading model and it uses a set of input maps that is comparable to MILA’s input maps set. Arnold-calibrated textures will be easy to understand and tweak to fit our needs!
Once we’ve selected our Export target, the Channels list will populate accordingly, so we’ll be working with the appropriate types of maps based on our Target renderer. Now that everything is set up let’s quickly verify our save directory and hit CREATE!
3 – Texturing the Black Uniform Cloth
Before Quixel Suite, I would spend days or weeks creating a coordinated set of maps, then steadily honing and refining each one through tedious test renders and manual adjustments.
Texturing the entire Uniform in DDO, on the other hand was really fun, fast, and ridiculously easy thanks to the Smart Material library. Once everything is loaded up, we’ll click “Add Smart Material” and scroll to the Dirty Cotton Smart Material.
The Smart materials will use the data from our input maps to determine where to apply weathering and grunge effects like crevice dirt, edge-wearing, and discoloration. All that cool area-specific wear and tear was created automatically, in the right places, the instant we applied the Dirty Cotton smart material.
In this character’s backstory, she has been fighting in arduous military campaign. Though she is an Officer, I wanted to make sure her uniform looked appropriately worn and grungy so let’s quickly crank up the Cavity Dirt, and Dirt Specs. I also wanted to emphasize the edge-wear a bit more, so we’ll click on the mask for the Edge Wear layer to open up the Dynamask editor. Let’s use a “Ground” brush to quickly fade some of the value off some of the edges of our uniform, and on the ridges that come up around seams.
Finally, we’ll make some adjustments to the normal map. The default Normal data is scanned in and accurately calibrated, so they’re fantastic if we’re going for pure realism. I like to exaggerate smaller details a bit, just to add a subtle touch of style and to make sure everything reads from farther away. With fine clothes and fabrics, I like to make the sewing pattern larger than it would be in reality and crank the bumping up to subtly give our character more of a toy or figurine look. Adjusting Normal Maps by hand can be a bit tricky and there’s always potential for degrading the detail, but luckily DDO makes this really easy for us.
We can simply click over to the Normal map tab, selecting our Cloth Base material at the bottom of stack and tuning up our Texture Intensity. This will push up our surface bumping detail, without affecting any of our other maps.
4 – Calibrating our textures for MILA
The Exporter lets us redefine everything from our Output Target, to our Naming Conventions, Paths, Image Formats, etc. As mentioned earlier; the Arnold output profile is our best bet for rendering in Mental Ray. We can use Linear or sRGB as long as we are sure that we define the texture color-space in our renderer.
Once all is set we’ll hit Export and let DDO to its thing!
With the Arnold output profile we’re going to get a Set of 5 maps. The Diffuse, Normal, Reflectance at Normal, Roughness, and Specular Color. There are a few small things to note before we bring our maps into mental ray.
-We need to flip the Red and Green channels on our Normal Map.
If we take a look at our Normal Map, Mental Ray users may notice something seems a bit off. When it comes to Normal Maps, Arnold and Mental Ray have different ways of reading the X and Y data (Stored in the Red and Green Channels.) If we were to use this Arnold-calibrated normal map in our Mental-Ray shader, we would see that our surface bumping actually looks inverted. Luckily this is an easy fix. Let’s open our Normal Map in Photoshop. We don’t want to invert the whole thing, since our Z-data (Blue Channel) is fine. We only want to invert our X and Y data. To do this, we’ll click over to the Channels tab, select our Red channel and hit Ctrl+I to invert. Next we’ll do the same for our Blue channel. Now if we view our full normal map, everything should look “right” and read correctly in Mental Ray.
Reflectance at Normal Map:
This map might be new to some of us who are not familiar with Arnold. One of the ways that Arnold lets users control the Fresnel effect is through a “Relectance at Normal” value that lets you dictate exactly that; the value of Reflectance when looking directly down the surface normal. This map is really useful in Arnold because that is all the user input that is required to define the Fresnel effect. Arnold assumes the grazing angle reflectance is always at 1 (as is the case in the real world) and it handles setting the falloff curve.
I didn’t end up using this map to build the Black Cloth material, but in the Armor Material segment, we’ll get into how this map can be useful for us in Mental Ray.
-The Diffuse and Specular Color maps are perfect!
Not surprisingly; as long our color space is in line, our Arnonld-Calibrated color maps work just fine in Mental Ray.
-Our Roughness Maps will also work well in Mental Ray. Another one of the benefits of the Arnold output profile is that Arnold shaders, also use a 0-1 roughness value for micro-surface faceting. Again, we only need to mind our color-management, and this map should work well!
-Very minor side note; In some of my roughness maps, I found that a very small Alpha Offset of about -.01 or -.02 helped get the Glossy Reflections blurring just right. Try that out if your Glossy Reflections are looking a bit too blurry.
5 – Building the Black Cloth Material
Now that all our maps are calibrated for Mental Ray, let’s jump into Maya and start setting up our Black Cloth Material!
We’ll start by creating a MILA material node in the Hypershade window. Since all of the surface properties for the discoloration and edge-wear are already baked into our maps, Our material only really needs one layer for Diffuse Reflections and one Layer for Glossy reflections. All the layering and masking for the different surfaces was already taken care of by DDO, so we can let the maps define all the subtle variations in the reflective qualities, without having to stack and matte-out extra layers in our MILA material.
With our MILA material sitting in the Hypershade work area, Lets go ahead and import our Normal Map, Diffuse Map, Specular Color Map, and Roughness map.
In our MILA material, we’ll keep the base Diffuse layer and set the color to black, essentially making it a light absorbing layer at the bottom of the stack. We want to start by adding a Weighted Diffuse Reflection layer, then adding above that a Fresnel Glossy Reflection Layer.
Now it’s a simple matter of plugging in our maps! One of the best things about working with Quixel Suite maps is that it’s pretty much a plug-and-play situation. Unlike hand-made maps which require a lot of test-rendering and slow, tedious tweaking.
Just to verify, let’s start by quickly testing out our Normal map! We’ll create a Bump 2D node, plug our Normal map into the value tell it to “Use as” Tangent Space Normal. Now, let’s plug that Bump node into the Bump attributes on our Glossy Reflection Layer and our Diffuse Reflection Layer, and do a quick test render to verify that all looks right.
All looks great!
Next, let’s plug our Color maps. Diffuse Map into our Diffuse Color Swatch, and Specular Color Map into the Glossy Reflection Color. We’ll do a quick test render. At this point we haven’t balanced out any of our reflection weights, so the actual material won’t be accurate, we’re only looking to verify that the actual color our map is introducing is right.
Next we want to plug in my roughness map. The roughness attribute, of course controls the micro-surface quality of our reflections, using a single value. We need to make sure that Alpha is Luminance is checked on our Roughness File node so that Mental Ray knows to read the Luminance of our RGB values as a single 0-1 value. Let’s go ahead and plug this into our Glossy Reflection Roughness. As mentioned earlier, we may need to nudge the Alpha Offset on some of our Roughness maps, but it’s really not noticeable on a material that is so diffuse.
Before we do a test render, let’s set up the rest of our material values. Cotton has an Index of Refraction of about 1.5, so we’ll go ahead and use that in our Glossy Reflection layer. Since the Fresnel effect is so strong and we have a dark reflective color map, I set a .5 Glossy Reflection weight value, and left the Diffuse Reflection Weight at 1.
6 – Texturing the Armor
I wanted to give this Armor a really damaged, worn-out look. Her Armor set was pieced together from the same mass-produced plates that her soldiers wear. It should feel like a bunch of salvaged steel plates held together with old bolts and rusted buckles.
Traditionally, texturing really worn metals can be a challenge because each layer of scratching, denting, rust, dirt, and general discoloration, has to be calibrated by hand across each map to make the final material work. This is MUCH easier to do now with Quixel Suite 2.
Again, I started by generating my input maps in XNormal as described in Part 1. I plugged in my Armor Mesh and all my input maps, and loaded up the 3DO viewer.
First, we need to find our base material. What would these plates look like underneath the rust? There were a ton of cool options to choose from in the Metal Section of the Smart Materials Library, but the “Stained Steel” really stood out. It has a very rough micro-surface for ultra-blurry reflections, broken up by surface dirt and discoloration, it’s also is very dim, giving it a heavier feel that is great for Armor plating.
The Stained Steel Smart material comes stacked with a Primer Layer, a Metal Dirt Layer, a Paint Layer, a Paint Dirt Layer, a Rust Miscoloration Layer and a Coarse Rust Layer. Let’s go ahead and remove the Paint Layer and in its place we’ll drop in a Dirty Steel Material from the Materials library. The Dirty Steel material is awesome because of it’s scanned with dents and scratches. Once it’s loaded into our stack, lets click on the mask to open up the DynaMask editor.
We’ll want the denting and scratching from this material to read at varying intensities throughout our armor. Though we want some parts to stay relatively intact, the majority of our Armor’s surface should have some erosion, whether it’s direct (battle damage, plate-friction, edge-tarnish, etc) or indirect (broad wear and scrapes from weathering, age and ground contact, etc). I used the “Dirt” DynaMask to get a nice broad, blotchy coat throughout the armor, then used the Mask painter and the Damage brushes to carve out extra Scratch damage around the plate edges, and on the striking surfaces where battle damage is most likely to occur.
Next we want to add rusting and grime build-up in the crevices between plates, where water, dirt, and mud would build up over-time. I used the Rust Material in the Rust Miscoloration layer of inside of our Stained Steel Smart Material. Again I clicked on the layer mask to open up the DynaMask Editor. I already liked the Rust that was present on our surface, so I kept the built-in DynaMask, I just want to add to a few key areas. In the 3DO viewer, I used a Damage brush and a Ground brush at about 65% Opacity, set to White to help build up that rust in and around edges and the larger crevices between armor plates.
Now that we have our Rusting and our Scratching atop our Stained Steel material that’s pretty much it for building our Armor texture! Again, with textures like this, it’s great that it only takes one artist pass to generate all of the data maps.
Next, we’ll use the exporter to Export our maps with Arnold Calibration as described in Step 4.
We also need to remember to invert the Red and Blue channels on our Normal Map before bringing it into Maya!
7 – Building the Armor Material
Back in our Maya scene, let’s create a brand new MILA material for our Armor. Again, we’ll leave the Base material as Diffuse and Set the color to perfect black. We’ll be setting this one up a little different, but just like before, we’ll only need to create one Diffuse Reflections layer and one Glossy Reflections layer. Our Quixel maps have all of our key material properties baked in already, so it won’t be necessary to create layering and masking in the MILA shader to get all of our types of surfaces to read through.
Let’s go ahead and create a Weighted Diffuse Reflections Layer above our Diffuse Black Base. Now to take advantage of our Reflectance at Normal Map, we’ll be creating a Custom Glossy Reflection Layer instead of a “Fresnel” Glossy Reflection Layer. When we click +Layer and are prompted to “Choose Layer Type” we’ll select “Custom” then select a “Glossy Reflection” Layer.
In MILA, the Custom Glossy Reflection layer gives us an alternate method of controlling the Fresnel effect on our Glossy reflections. Instead of having an input for Index of Refraction, we now have 3 controls; Normal Reflectivity, Grazing Reflectivity, and Exponent. As one would guess, this is great for us because our “Reflectance at Normal” Map can plug right into the “Normal Reflectivity” attribute. As mentioned earlier, the Grazing Reflectivity should be left at 1, and we can leave the exponent at 5.
An IOR input doesn’t allow for surface variation, so without adding Layers and Mattes, it would have meant a single-constant Normal Reflectivity across our Armor. Now instead, we have full and accurate Fresnel effects for all of our plating, scratches, rust, and dirt surfaces with only one layer!
Next, we’ll plug in the rest of our maps to fill the Diffuse Reflection Color, Glossy Reflection Color, Glossy Reflection Roughness, and Bump slots. Because we know that these maps are already accurate coming out of Quixel, all we have to do is set our weight values for each layer.
Metal reflections are almost all single bounce, with very little, if any light bouncing around diffusely. Therefor we can set our Diffuse reflection weight very low. Our Glossy reflection weight doesn’t necessarily need to be very high, as some of our light should be absorbed to give it a darker, heavier feel. I like to keep it somewhere a little above half.
That’s all there is to it! Thank you for reading! I really hope this has been helpful to anyone using Quixel Suite 2.