Making square UV maps in Blender
From Nexus Wiki
The UV maps are projections in 2 dimensions of the mesh that is a 3 dimensional object. With the UV maps you are telling the mesh what part of the texture (that is a 2 dimensional image) has to be painted on each of the faces of the mesh. UV maps are like the maps of an atlas, that are projections of the Earth (that is a 3 dimensional object) on the sheets of paper of your atlas (that are 2 dimensional objects).
For complex meshes it is important that UV maps are square, i. e. that allow you to paint a straight line or a circle on the texture and it will translate as a straight line or a circle on the mesh.
This tutorial will explain how to make your UV maps for complex meshes more square so that they are easier to paint.
This tutorial assumes that you have a basic knowledge of Blender. If that is not the case I recommend you to read and practice with these tutorials Blender 3D: Noob to Pro
For more information on the theory of UV maps try looking at UV Mapping: An Explanation
Making square UV maps
The steps to follow are:
- Subdivide Blender screen in two
- Mark seams on the mesh and generate the UV map
- Work on the UV map
- Iterate the process
Subdivide Blender screen in two
First thing is to subdivide Blender screens in two, on one of them we will work on the mehs and on the other one we will work on the UV map.
To do this right double click on the top of the screen and select Split area from the pop up menu. Then move the line until it is more or less in the middle of the screen, separating it in two sections of the same size.
- Select UV/Image Editor on the right screen as shown in the picture. You will see the UV map on this right screen.
- On the left screen you'll see your mesh.
Mark seams on the mesh and generate the UV map
In meshes with complex chapes it is better to create UV maps of parts of the mesh. Imagine this process as the cuts you'll make to a real 3d object to extend it completely on a table to paint it.
To subdivide the mesh into parts, you have to create a series of cuts or seams in the object (like the seams in real clothes). To mark these seams:
- In Edit mode select the edges that define a line. Take into account that this line wil be where two parts of the texture will join, so there will be little discontinuities in the painting along it. For this reason it is convenient that you mark the seams in places where they won't look bad or in places that will be hidden most of the time in game.
- Select the menu option Mesh -> Edges -> Mark Seam (see picture Mark a seam. You'll see that the line of vertices you selected turns into a dark orange colour.
- Keep on creating seams in your armour untill all pieces of it are completely delimited by seams, as shown in picture Mesh with seams.
- Open the menu option Mesh -> UVUnwrap and select the Unwrap option. Blender will generate automatically a UV map similar to the one shown in picture Automatically generated UV. As you can see, this UV doesn't look too bad in the UV parts that are not selected (the pink ones), but the selected part that corresponds to the front part of the cowl (the yellow one) looks distorted. This is the part of the UV map we are going to fix in the following section.
To check if your UV map is square enough, you can use Blender's test grid:
- Ot the right half side of Blender screen, where your UV map is, select the menu option Image -> New
- On the pop up window, press the UV Test Grid option as shown in picture Using Blender's Test grid and then press the OK button. Doing this you will be using the checkered pattern as your texture.
- On the left half side of the Blender screen, where your mesh is, select the Textured Draw type as shown in picture Using Blender's Test grid. Now your mesh will display that checkered pattern image as its texture.
- A square UV map will make that all the little squares displayed on the mesh look square and of the same size. As you can see in picture Using Blender's Test grid, that is not the case with our first UV map: the squares at left and the right sides of the mesh aren't of the same size and most of the ones at the right side look like rombus. This is what we are going to fix in the following section.
Work on the UV map
Now we are going to work on the right part of the Blender screen, as we are going to work on the IV map, not on the mesh. Keeping all the vertices of the mesh selected in Edit mode, the first thing we are going to do is to move to the outside the central part of the UV the parts of the UV map we are not interested in right now. To do this:
- Left click on the UV map on the right part of the screen. Now Blender knows that all keys pressed will refer to that half of the screen.
- Deselect all vertices of the UV map (press A once or twice until all the UV map vertices are pink instead of yellow)
- Select one vertex of each part of the UV map (right click on each vertex while pressing the Shift key) or select some vertices of those parts using the boundary selector (press B twice and left click on some vertices).
- Select the menu option Select -> Linked UVs (see picture Selecting linked UVs). All vertices of those parts of the UV will turn into yellow.
- Press the G key and move the selected UV parts to a place where they won't interfere with your work.
- Select the menu option UVs -> Pin (see picture Pinning UV) to fix the position of their vertices.
- Press the A key to deselect all those UV parts we've just moved.
Now we are going to work on the UV map of the front of the cowl to make it look more square. First we are going to work with some of the most exterior vertices, the vertices that define the outline of the UV map. As the front part of the cowl is symmetrical, we are going to begin with the 4 vertices that should be in the following positions: top left, top right, bottom left and bottom right.
- Select the top right vertex (right click on it), press the G key, move it to the top right corner of the UV map, and pin it in that possition (menu option UVs -> Pin).
- Select the bottom right vertex, move it to the bottom right corner of the UV map and pin it there.
- Select the top left vertex, move it to the top left corner of the UV map and pin it there.
- And select the bottom left vertex, move it to the bottom left corner of the UV map and pint it there. Your UV map will look like now similar to the one shown in picture Pinning vertices that define the outline.
- Select the vertices of the UV map of the front part of the cowl (menu option Select -> Linked UVs)
- Select the menu option UVs -> Unwrap (see picture Unwrapping the mesh) to generate again the UV map of the front of the cowl and wait until Blender finishes claculating the new UV map.
You'll see that, by pinning only 4 vertices we've been able of getting a much better looking UV map as shown in picture Second version of the UV map.
Iterate the process
Without unpinning the 4 vertices we have already in place it is only a matter of repeating the process of selecting, moving and pinning other vertices that define the shape of the UV map and then regenerating it until you are satisfied with its shape.
If needed, you can leave some of the vertices you've pinned before to move freely by selected them and thenselecting the menu option UVs -> Unpin. Then these vertices will change their positions when recalculating the UV map.
In my case I was satisfied with the UV map shown in picture Final version of the UV map, that took me some iterations. You can see in picture Test grid on the final version of the UV map that when checking this version using Blender's test grid, all the little squares have almost the same size and look like squares.
After finishing with its shape, you can scale the size of the UV map by selecting all vertices of the UV map, pressing the S key and moving the mouse (as you would scale a mesh). You can also rotate the UV maps by pressing the R key and moving the mouse, or move them by pressing the G key and moving the mouse.
Move, rotate and scale as required each part of the UV map so all of them are inside the grid as shown in picture All UV parts and you'll be done :)