UVTexTitle.jpg (6850 bytes)


The texture artists. The unsung heroes of the 3D community. Great textures can save an otherwise mediocre model. It's not just what the textures look like, but also how they are applied or wrapped onto the 3D surface. So how do you wrap a flat 2D texture around a complex 3D surface?

The first thing you need to know is the difference between pixels and texels. A pixel can be defined as the smallest rectangular region of a bitmap that defines the color of the bitmap. Texels are a little more complex. When you apply a 2D pixel to a 3D Surface it becomes a texel. A texel can be defined as the smallest rectangular region of a bitmap used to define a shading attribute of a 3D surface. Texels can be used to define many different attributes of a 3D surface, bump, color, specularity, roughness, opacity, ect... So why is this important? Well, ideally you want a 1 to1 pixel to texel ratio on your 3D surface meaning, you don't want your texels distorted or stretched across the 3D surface your working with. The basic idea here is to make the distribution of texels as uniform as possible on the surface of the model.

So how do I make my texels wrap uniformly? That's where the magic of UV mapping comes into play. A UV map is basically a flat 2D representation of the vertices of a 3D model. It defines where the 2D pixels in your bitmap will be placed on your 3D surface. A complex 3D model can be unwrapped (UV mapped) in many different ways. Most modern 3D applications provide many different options for unwrapping a 3D model, (cylindrical, spherical, planar,ect...) but no matter what its called, at it's most basic level it's still just a flat representation of a 3D surface.

mapping.jpg (65290 bytes)

As you can see from the diagram above, default mapping options won't work in every situation. Especially on a complex character model. So how do you get around this problem? By unwrapping the surface yourself. Let's step through that process (note: I'm using 3DS Max R3 to do this however, I'll try not to get very software specific. Most of these concepts should work in any modern package.)

The first step of unwrapping a model is to split the model into several pieces. This will require a little planning so that you'll be able to unwrap all the pieces. Detach various pieces of the mesh by selecting faces and using the detach button in sub-object-face.

split.jpg (12205 bytes)

Next, split each piece at one edge so you can unwrap it flat. You won't need to do this to every piece. Just the ones that don't have a seam.

BreakEdge.jpg (12459 bytes)

Make a copy of each piece and hide that copy (we'll get back to those later). Then unwrap the mesh pieces manually using whatever modeling tools are available to you (I've found that it's easier to unwrap a mesh using the modeling tools in Max than to unwrap the texture UVs in Max using the Unwrap UVW modifier). It's important that you don't change the topology of the mesh when you do this (i.e. don't add or subtract verts, turn edges or do anything that might affect the vertex index or order. Basically don't break verts, detach faces or delete or add or anything to the mesh). Also, try to get a one to one texel to pixel ratio on the surface of the mesh. Once that is complete, apply a planer map to each object.

unwrap.jpg (40690 bytes)

Now it's time to paint the textures. I've included a small sample of the textures used to create the final renderable version of this character.

TexLayers.jpg (21901 bytes)

You're almost there. Collapse the stack (or delete history) of your object.

The last step is to unhide the copies and morph the flat pieces back to their original shape using the morpher modifier or Shape Blend or whatever (Check out the TimeLapseModeling demo in the Learn section of this site to see what I mean). Collapse the stack again. Attach everything back together and weld the verts. Your done. Sounds easy on paper but I highly recommend you practice on a simple object a few times to learn the exact workflow.