This article is about general texturing for 3D, not necessarily for any specific program, but able to be utilized in most (if not all) 3D suites and modern game engines. This goes hand in hand with the Texture Library thread.
In this article I plan to illustrate what goes into a full-on texture mapping workflow. Keep in mind, I am no master of texturing, nor have I been doing this for very long. The general point-of-view that this article is assuming is that of a beginner or someone who wishes to know more about the process. This isn’t so much of a tutorial as it is a rundown of method. So just as a disclaimer, advanced users will most likely find this article useless. Also as a side note, if any of you find something in this article that is incorrect or you think needs adjusting or added to, please let me know in the comments.
Before I started my journey into art asset creation for games earlier this year, I had grown quite fond of the procedural texturing techniques within Cinema 4D, and never really had to touch Photoshop much at all. Noise patterns and blending layers are a quick way to generate diverse surfaces without putting too much time or thought into it.
Though, having gotten in to asset creation for game engines, I’ve come to greatly respect the manual texture creation process. The advantages of learning how to use Photoshop for texturing purposes would serve even those people who like the procedural texturing process.You might not need to use all of the processes explained here, but it is good knowledge to have for anyone serious about creating believable textures for 3D.
First and foremost, texture Libraries are the bread and butter of your arsenal. One thing to keep in mind when picking your base texture, is that you will almost always manipulate it in some way; I rarely ever use the texture as is. There is nothing stopping you from doing so, but it’s not recommended. Most base textures aren’t suited for production quality unless they’ve already been tailored for it. Photographic textures from say, cgtextures.com, can be somewhat confounding at first. When I first took the dive into texturing I kept flipping through them thinking, “How the hell are most of these textures even useful?”. I was looking at the entire picture, not the individual elements. The elements are what make photographic libraries so awesome. Which brings me to my next point. Tiling a non-tilable image.
Will It Tile?
I like this texture and I wish it would tile horizontally, but as we can see, it clearly doesn’t. The left and right edges aren’t seamless, and the top and bottom trims don’t align. I guess the parties over, right? Hell no, we’re going to fix this sucker! In Photoshop, under the ‘Other’ filter category, there is a filter called Offset. Basically, you enter in half of the dimension you want to tile, and fix the seams. So the size of the image is 666x906px. Since I want to tile this horizontally, in the offset filter dialog, I’ll enter 333 for horizontal, and keep vertical at 0. You will also need to make sure you have Wrap-around mode selected. This puts the left and right edges next to each other in the middle of the canvas. From here, the basic idea is to clone stamp and spot heal the crap out of it. If there are any large details on the seam, you have the option of erasing over it, or attempt to paint it over the seam. When you think you’ve got it cleanly fixed, run the offset filter again with the same numbers, and it should put the texture back the way it was, this time with edges that match up! If there are still some bits to fix, just repeat the offset process.
This tiling technique can be used in more ways than this. Need a more extreme example?
This one was a bit trickier with the rotation and partial pattern, so it took me about 25-30 minutes to fix. Whereas the first example took me just under 2 minutes. It might take some time to get used to, but the offset method works in almost every instance. The above texture wouldn’t be suitable to use due to the shadows, so you’d need to fix those as well.
Alright, so let’s go over the main texture maps seen in most renderer and game engine materials. Some of the maps below, such as the normal and occlusion maps, were made with the hi-poly baking method as described in the normal map section (you can click the images to easily jump to the corresponding section). Keep in mind that UV’s are an essential part to the map baking procedure. Failure to unwrap your base mesh will result in plenty of swearing. I won’t be going into UV unwrapping in this article. That’s an entirely different beast and best to have its own article. Right. Onward!
Diffuse maps are generally the culmination of cavity, occlusion, and color maps. In Cinema 4D, you would put the color map into the color channel, and the cavity and occlusion map into the diffusion channel. In game engines such as UE3, the cavity/occlusion map is multiplied onto the color map and piped into the diffuse channel. The base color map should have little or no shadows. This isn’t to say it should not have various levels of shading, but hard shadows defined by raised edges and uneven surfaces do need to be taken care of. The normal map sees to the creation of shadows on the material when light hits an edge. Having two maps with shadowing just makes things look wrong. Highlights are fine, as they are normally accentuated by the specular and gloss (and you can also generate a basic specular/gloss map from the highlights).
I’m not sure how many of you use or know much about normal maps, especially when working with motion graphics. You may ask, “Well, what’s the point of normal mapping in VFX? I thought we were supposed to push the limits of polycount and detail?”. Detail, yes. Polycount, not necessarily. For production models, you should in no way strive to have millions of polygons on a character. Not only does it make your viewport chunk to a halt, but simply attempting to render a mesh of that density is, computationally, suicidal. Normal maps allow you to keep the incredible amounts of detail that you get with the hi-poly model, but on a lo-poly mesh. Thus, saving your sanity and your CPU cycles from complete mayhem.
So for this section, I’ll go over the learning path I took while coming to grips with them (from knowing almost nothing at all about them other than “they are fancy bump maps”).
In a sense, normal maps are just fancy bump maps. But, instead of simply using a greyscale map to determine the height of the bumpage, a normal map uses a 4-color system to represent ray angle against the curvature of the surface. Thus, you will get a more accurate representation of how you want the light to interact with the surface of your texture. When first feasting your eyes upon a complex normal map like you see on the ZBrush forums, it can seem a bit confusing and intimidating. I remember thinking, “How the hell do they do that?” or “What is this purple crap for?”. Fortunately, there are multiple methods and free programs to aid you in your wild and crazy normal mapping adventures. The process is time consuming, but the result is worth the sweat, blood, and loss of sanity. But if you’re like me and lost your sanity eons ago, then that’s just one less thing you have to worry about.
Before I get into them, I need to say one thing. SMOOTHING GROUPS ARE THE EVIL ARCHENEMIES OF NORMAL MAPS! The number one thing to keep in mind when dealing with normal maps, is that you NEED to keep the normals on your lo-poly base mesh 100% smoothed. No mixing and matching hard-edged normals with soft. This goes for all methods of normal map creation. I learned this the hard way through many, many headaches. Take advantage of this fact and sear it into your brains for all eternity! DO IT! NOW!
Method 1 – Hi-poly Baking
Hi-poly baking is the most common normal mapping method when dealing with characters and other large models that are intended to have buttloads of detail. The procedure I’m most familiar with is by starting with a lo-poly mesh, and add tons of highly subdivided floating geometry for surface detail, effectively kit-bashing the crap out of it. You do still need to stay within the bounds of the base mesh; try not to have geometry protrude too far out. For most contiguous (seamless) models, retopologizing your hi-poly model is one of the more popular methods. This is basically the reverse of the kit-bashing procedure. You start with the high, then “paint” over it with polys to create your lo-poly mesh. I’ve personally never done retopo, but it also doesn’t look very fun.
I would recommend not using the transfer map or baking functions within Maya or C4D. I had very little luck getting accurate maps with either. xNormal, on the other hand, is a fantastic (AND FREE!) tool specifically made to bake normal, occlusion, cavity, height, base texture, and a slew of other map types from a hi-poly mesh to lo-poly UV’s.
Method 2 – Texture-based normals
Yet another free utility called nDo comes as an action for Photoshop. nDo is a very robust tool capable of producing accurate normal maps based entirely on what you paint into Photoshop. This can be used in conjunction with existing normal maps to add even more detail, or even just to fix and smooth your map. There are tutorials on the nDo website, so I won’t go into the process of that here.
I would highly recommend NOT using Crazybump for generating normal maps from raster images. I used it when I was first trying to figure out what normals maps were, and the end results come out very dirty and incredibly inaccurate. On the other hand, it is a fast and easy tool for creating specular maps and for removing shadows… but then again, so is Photoshop (though Photoshop does crash a lot more =/ ).
Every physical material in the world has at least some amount of specularity. Specularity, also known as roughness, is everywhere. As far as I know, there is no material (that we know of) that exists without a trace of specularity. Bricks have it, my shirt has it, and glass has it. Technically, it is reflection as far as real life is concerned, but in 3D programs, think of it as strictly the reflection of light; Specular maps don’t reflect back the surrounding environment. Say you have a texture with a sheet of painted metal that is worn around the edges. The metal has some reflection to it, but you also want to add some highlights in there. So pick a color close to full white, and paint it onto the edges and other intended hard edges of the texture. Specular maps are generally greyscale, but you can still use colored specular maps.
Specular maps, for the most part, are based off of the reflection map, if the material has one. You can easily derive the specular and reflection map from the diffuse by killing the saturation, crunching the contrast and use clipping values to bring out or push back the details. Remember, black = no specularity, and white = full specularity. Same thing goes for reflection.
Reflection maps give the material a glossy look. Most geometrically curved surfaces, except for those with mirror-like properties, should have a fresnel reflection map applied. Fresnel (pronounced Freh-nell) is a more physically accurate reflection solution. A steep viewing angle (around 90 degrees) lessens the strength of the reflection. While, the shallower the viewing angles, the higher the reflection strength. Which means the viewable edges of a curved object will appear very shiny and the most directly facing surfaces will be less shiny.
Alpha maps, also known as masking or opacity maps, gives you the ability to block out parts of your material that you want to be able to see through. Not every material needs an alpha map. But I will demonstrate a use of this. Remember that tiled metal texture from way up there ^? The one with the shadows that I mentioned were bad? Yes, that one. Well, we’re going to take those shadows out. Stand back, we’re about to perform science!
Alright, well it needs some cleaning up, but you get the idea. Much like the specular and reflection maps, black means no texture will be rendered in those areas, and white means it will be there in all of its glory. Grey areas of an alpha map will appear as translucent.
Here is the end result on the section maps (with the exception of the alpha map) all mashed together and rendered with a rotating light so you can see the affects of the normal and reflection maps. This was rendered in Cinema 4D, only because most of the visitors of this site tend to use it. I wanted to show what was possible in a suite that most of you would be familiar with. You can expect similar results in any other rendering engine.
Oooh, shiny. So there you have it. The culmination of 10 months of experience, knowledge, and countless Google searches in order to bring you this article. One of these days I might get around to writing up an article on UV maps or actual texturing techniques, but I’m not experienced enough in that yet to actually be of any use in explaining it to the masses. So, I hope you found something in this wall of text useful.
Keep it. Study it. USE IT!