Unwrapping with 3DS Max

This is the second tutorial of my four part series dealing with character animation. These tutorials are targeted for beginners wanting to learn the basics of organic modeling, unwrapping, texturing, character rigging, and creating a cute 3d monster. In this second part we’re going to unwrap the character. You’ll learn about UVW texture coordinates and unwrapping. I’ll do my best to keep things as simple as possible. I’m using 3ds Max 2011.

Step 1 What is Unwrapping?

In 3d graphics, mapping coordinates ( often called UVW coordinates or just UVWs ) define how the texture is wrapped around the model. Unwrapping means laying out the mapping coordinates so that texture painting can be done. While unwrapping a model one should pay attention to two things: stretching and seams. Naturally there must be seams when a 2d texture is wrapped around a 3d model. However, during the unwrapping process, one can define the amount and position of the seams. The goal is to have as few seams as possible and to hide them as well as possible (in the back of the model, under arms etc.).

The UVW mapping coordinates can ( and often do) make the texture stretch. During the unwrapping, the stretching should be minimized by moving the mapping coordinates. Often when there are lot of seams there aren’t that much stretching and vice versa. One must make a compromise between these two issues. In my opinion seams is the lesser evil and can be fixed easily with a 3d paint as you’ll see in my upcoming texture painting tutorial.

In the picture below you see the result of this tutorial. There are the unwrapped UVW coordinates on the left and the model with the UVWs and a checker texture on the right.

Step 2 Preparing the Model for Unwrapping

It’s always easier to unwrap a low poly model than a high poly model because there are just as many mapping coordinates as there are vertices. Therefore, it’s often a good idea to do the unwrapping before applying the Turbosmooth modifier. However, there is a one problem with our monster model. It changes pretty much when the first Iteration of the Turbosmooth modifier is applied. In fact, the arms change so much that there’d be some visible stretching in the final model if we unwrapped the low poly version. Fortunately there is an easy solution. We can set the Iterations value in the Turbosmooth modifier to 1. That’s a good compromise – polygon count isn’t yet high and the model is very close to it’s final form. Additionally, we want to do the unwrapping before applying the Symmetry modifier. The Symmetry modifier saves our time by mirror both the geometry and the mapping coordinates. Let’s prepare the model for the unwrapping:

The starting point should be a 3ds Max file with just one object in it: Half of the monster with the Turbosmooth modifier applied.

Set Iterations value to 1 in the Turbosmooth modifier.

Add the Edit Poly modifier on top of the Turbosmooth modifier.

Activate the polygon sub-object level in the Edit Poly modifier and delete the right half of the model in the front viewport ( see the image below ).

To keep things simple, collapse your modifier stack ( right-click on the modifier stack and select collapse all from the menu ). If you want to keep your stack you can, but we’re going to add several new modifiers to it.

Step 3 Checker Texture

Usually a checkerboard texture is applied to the model before the unwrapping. The checker texture makes it really easy to notice stretching. Open Material Editor ( Press ‘m’ in keyboard ) to create the checker texture for our model:

Select your monster and assign a new material to it.

Add Checker as a diffuse map ( Maps > Standard > Checker ).

Set U and V Tiling to about 20 ( Stretching is easier to see in small squares ).

Self-Illumination: 25 ( Makes it easier to see the checker pattern in dark areas such as inside the mouth. Change this as you see fit).

Now that the checker texture is applied, our goal is to organize the UVW coordinates so that all squares in the checker pattern are equal in size and are as square as possible.

Step 4 UnwrapUVW

The Unwrap UVW modifier is a powerful tool that let’s you apply many different mapping types to different face selections and you can even tweak individual mapping coordinates. In our workflow we make a face selection, apply the most appropriate mapping type to it, and tweak the mapping coordinates in the ‘Edit UVWs’ dialog. Let’s make a selection to be unwrapped:

Select everything except the arm ( Turn ‘Ignore Backfacing’ off to speed up the selection process. You can name your face selection using the ‘Named Selection Sets’ function on the main toolbar. It makes it easy to return to your selection. ). Orbit around the model to make sure you haven’t missed anything.

Step 5 Pelt Mapping

In this tutorial we’re going to use Pelt mapping. Pelt mapping is a special mapping type that is well suited for organic models. Pelt mapping tools let us define the texture seams and stretch out the UVW coordinates into a flat, unified map:

While the torso is still selected, click ‘Pelt’ ( Unwrap UVW> Map Parameters > Pelt ). In the ‘Edit UVWs’ dialog you see the UVW coordinates in the middle and a circular stretcher around it. The points in the stretcher are connected to the UVW map seam. The job of the stretcher is to pull the UVW map flat. The stretcher can be manipulated but in this case there’s no need.

Look at the checker pattern in your model. There is serious stretching at the top and at the bottom of the model.

Click ‘Start Pelt’ , let the simulation run for a few seconds, and click ‘Stop Pelt’.

Look at the checker pattern in your model. It looks better, but there is still stretching and and squares aren’t uniform in size.

Click ‘Start Relax’ and let the simulation run some time but stop it before the UVW vertices in the corner of the mouth overlap too much ( see the image below ).

Look at the checker pattern in your model. If it looks ok click ‘Commit’.

Step 6 Edit UVWs Dialog

The face selection in the Unwrap UVW has been translated to a UVW coordinate selection in the ‘Edit UVWs’ dialog. Before manipulating the UVWs, let’s apply a few settings to make things a little simpler:

Activate ‘Filter Selected Faces’ in the bottom of the dialog. ( Hides all UVWs except the ones we have selected ).

Click ‘Options…’ in the bottom of the dialog to expand the options panel.

Use the Move and Scale tools to fit the selected UVWs inside the texture boundaries. Also, rotate the UVW map so that the right side is as vertical as possible ( It makes the stitching in step 11 a little easier. ).

Step 7 Dealing with Overlapping UVW Coordinates

The checker pattern should look really good, but unfortunately there might be some overlapping UVW coordinates or inverted faces. Let’s run two automatic error checking routines to find these problems:

Select Overlapped Faces ( ‘Edit UVWs’ Dialog > Select > Select Overlapped Faces ).In my model there is one overlapped face in the corner of the mouth ( Overlapping UVW coordinates are a problem because they use the same portion of the texture ). Let’s zoom to the problem area and fix it.

Activate the vertex sub-object level in the Unwrap UVW modifier.

Move the vertices so that the problematic UVW faces look more like rectangles ( See the image below ). Check your model to make sure the checker pattern didn’t get messed up. When you’re done just close the ‘Edit UVWs’ dialog.

Step 8 Defining UV Seams for Pelt Mapping

Now the unwrapping of the body is complete and we go on with the arm. By default the only seam in the arm is at the edge of our selection. That isn’t enough. The stretcher wouldn’t be able pull the UWV map flat. Try to visualize it in your head: It’s like trying to turn a sock into a flat piece of fabric without any cutting. But with just one cut we could do it, right? So let’s define one seam:

Activate the face sub-object level in the Unwrap UVW modifier and select the faces of the arm. Orbit around the model to make sure you haven’t missed anything.

Activate ‘Point to point Seam’ ( Unwrap UVW > Map Parameters > Point to Point Seam ) and define the seam for pelt mapping. Just click on vertices and a seam is traced between them. Defined seams are shown in blue color (See the image below ). There should be 10 edges in your seam. Make the seam under the arm, not on top of it. If you make a mistake you can activate ‘Edit Seams’ ( Unwrap UVW > Map Parameters > Edit Seam) and remove unwanted seams by clicking on them while pressing Alt in keyboard.

Step 9 Unwrapping the Arm

From now on the pelt mapping process is exactly the same as with the torso except there probably won’t be any overlapped nor inverted faces.

Click ‘Start Pelt’, let the simulation run for a few seconds, and click ‘Stop Pelt’.

Look at the checker pattern in your model. There is probably stretching and the squares aren’t uniform in size.

Click ‘Start Relax’, let the simulation run for a few seconds, and click ‘Stop Relax. ( see the image below ).

Look at the checker pattern in your model. If it looks ok click ‘Commit’.

Move and scale your UVW selection so that it doesn’t overlap with the UVWs of the torso.

Scale the UVWs of the arm until the size of the squares is the same as in the torso ( you can choose whether you work in face, edge, or vertex level. Personally I prefer the vertex level )

Arrange to UWV coordinates for example like in image below ( you can easily select a whole cluster of UVWs by activating ‘Select Element’ under ‘Selection Modes’ in the bottom of the dialog ) and close the dialog.

Step 10 Mirroring the UV Coordinates and the Geometry

Now the unwrapping is done and we’re ready to apply the Symmetry modifier:

Activate the mirror sub-object level in the Symmetry modifier and align the mirror plane to the right side of the model. The vertices in the middle are welded together. Deactivate mirror sub-object level.

Step 11 Tweaking the UVW Coordinates

Add another Unwrap UVW modifier on top of the Symmetry modifier ( Make a selection > Modify panel > Modifier List > Object-Space Modifiers > Unwrap UVW ). Click ‘Edit…’ in the Unwrap UVW modifier to open the ‘Edit UVWs’ dialog ( UVW Unwrap > Parameters > Edit… ). The UVW layout looks exactly the same as before the Symmetry modifier, but it’s not. The UVW coordinates of the both sides are exactly on top of each other and therefore use the same portion of the texture. This would be ok if we wanted the texturing to be perfectly symmetrical. Usually you want to separate the coordinates to avoid perfect symmetry:

Activate ‘Select Element’ in the ‘Selection Modes’ at the bottom of the ‘Edit UVWs’ dialog.

Click on the UVW map of the arm and move it to the right. Now you have separated the UVW clusters of the arms. Click ‘Mirror Horizontal’ in the top of the dialog ( this isn’t necessary but in my opinion a logical way of arranging the UVW coordinates ). Move the UVW clusters of the arms as you see fit. Just make sure to keep them separated and inside the texture boundaries.

Click on the UVW map of the torso and move it to the right.

Click ‘Mirror Horizontal’ in the top of the dialog to mirror the selected UVWs horizontally.

Move the UVW clusters of the torso close the each other so that the middle vertices overlap ( see the image below ). These UVW coordinate clusters have a common seam in the middle and therefore can be welded together.

Deactivate ‘Select Element’ in the ‘Selection Modes’ at the bottom of the dialog and weld the vertices on the common seam together ( see the image below ): select two vertices at a time, double click on them, and select ‘Weld selected’ from the menu. If the weld doesn’t work, the vertices are too far apart and you must increase the ‘Weld Threshold’ in the ‘Unwrap Editor Options’ at the bottom of the dialog.

If the welding caused stretching in the middle, go ahead and move UVW vertices to fix it.

It’s possible that one or more UVW clusters are inverted which might cause problems with bump mapping. Activate the face sub-object level and click ‘Select Inverted Faces’ ( ‘Edit UVWs’ Dialog > Select > Select Inverted Faces ). If any of the UVW clusters turns red, just mirror it horizontally and you’re done.

Move and scale the UVW coordinate clusters so that they fill as much of the texture area as possible. There is a tool for that called ‘Pack UVs’ ( Edit UVWs Dialog > Tools > Pack UVs… ) but let’s do it by hand. Move and scale the UVW clusters as you see fit but whenever you scale, scale everything to keep the coordinate resolution uniform.

Step 12 Good to Know

If you just want to finish this, skip to step 13, but if you’d like to learn about the other mapping types, read on. In this tutorial we used Pelt mapping. Pelt mapping works well but sometimes there is a need also for the traditional mapping types: planar, cylindrical, spherical, and box. The workflow with these mapping types is a little different:

You make a face selection.

You apply the appropriate mapping type ( depends on the form of the selection, for example cylindrical selection like an arm works well with the cylindrical mapping type ).

You move, scale, and rotate the mapping gizmo to minimize stretching and to position seams ( With these mapping types you can’t define seams like we did with Pelt mapping. Instead, seams are derived from the mapping gizmo. You can just manipulate the gizmo to affect the placement and the amount of seams ).

You continue in the ‘Edit UVWs’ Dialog and move UVWs to minimize stretching and weld them to get rid of seams. Sometimes you must move UVW vertices one by one but often the Relax tool ( Edit UVWs Dialog > Tools > Relax… ) solves stretching automatically. The Relax tool works like the Relax in the Pelt mapping dialog. First you select UVWs in the problematic area ( and maybe little around it ) and then you run the Relax to modify the spacing of the selected UVWs for the purpose of minimizing stretching. Trial and error method works well with the Relax tool. Just try different selections and different settings.

Step 13 Turbosmooth

Now the UVW Unwrapping is complete. Add the Turbosmooth modifier to the model and set the Iterations value to 1-2 depending on your needs.

Let’s continue in the comments and stay tuned for the texturing tutorial!