This tutorial will teach you how to unwrap a hard surface model. For that we will use the model from my previous "Modeling a High Poly World War II Willys Jeep in Modo" tutorial. We will unwrap the Willys jeep using the default Modo tools and the ETEREA UV tools which are a great addition to the Modo toolset.
For most people unwrapping is a tedious task. When you grasp the idea and learn the tools the process will become easy and comfortable. Modo helps in making the process smooth and painless. It gives you only a few tools, but they can easily get the job done. I hope that after you complete this tutorial you'll understand the UVing process and will feel more comfortable unwrapping.
First let's take care of adding the ETEREA scripts to Modo. Head to the LINK where at the bottom of the first post you will be able to download EtereaUvTools302. Once downloaded, unpack the archive file and you will find two folders inside (shown below in the picture.) One is used on Windows systems and second is for MacOS. I won't cover the Mac version, but it shouldn't be any different. If you have any problems you will find help in the same topic you downloaded the scripts from.
Now turn on Modo. If you navigate to System > Open User Scripts Folder you will open the folder where all your custom scripts live. Paste the 'eterea_uvtools' folder in there (you don't need to copy the 'MACOSX' folder if you are using Windows.) Now restart Modo. That's all you need to do to install scripts in Modo. Now let's prepare the UI for those scripts.
Head to Layout > Palettes > New Palette. This will create a new empty palette for us. Through creating new palettes or windows you can customize your Modo in many different ways.
On the empty palette, find the white triangle in the upper right corner (under the palette close button.) Press it and you will get a list of everything you can put into this palette. Change it to 'Form View'.
Once again press the white triangle and find Viewport Settings > ETEREA UV tools. You should then have your new palette with all the Eterea scripts in one compact UI.
You can see our new palette is build from 3 tabs: Main Tools, Align Tools and Display Tools. Let's run through them quickly.
The Main Tools tab contains some really useful tools. The first group are mostly different checkerboards and UV viewing options. Checkerboards are useful to judge the distortion on your UVs. By using these buttons you can apply checkerboards with different patterns and scale, easily. You can also change a few things about how the UV window should display UVs. You can hover your cursor over any button to see an explanation. Try these out on a simple cube and observe both the UV window and 3D viewport.
The second group has some useful tools for aligning and packing purposes. We will use some of these later, so I will explain how they work then. If you are using Windows you can ignore buttons with 'x','c','v' and orange arrows, as those are useful for Mac users. The last group let's you move and scale your UVs in any direction by a specified amount.
The Align Tools are really useful when placing UV islands. The first group let's align edges to a selection. The second one allows you to flip UV islands around on a specified axis. It also gives you the option to move vertices to a specified position.
The third group is the most useful on this tab. You can align UV islands in a few different ways and it let's you create a clean UV sheet with a constant distance between shells. Really handy to achieve as much as you can from your texture resolution.
The third tab consists of 5 groups in which the first is the same as in the first tab. All of those tabs let you change the UV window viewing options. Check them though since maybe few of them can make your UV window easier to read. You would only use those in specific situations though.
The next thing we need to cover are UV channels. UV channels are great if you need to have a different unwrap for different maps or just want to have multiple objects on the same/different UV map. In Modo those are UV Maps.
Find the 'Lists' tab under the object list and open the 'UV Maps' group. As you can see I selected the body mesh object. On the 'UV Maps' list, it has 'Texture' UV map. Under our 'Texture' UV map you can see a '(new map)' button. You can create new UV maps and name them however you want. If you want more than one object on the same UV map you just need to add a UV map to every object and name it the same for each object.
For now Delete the 'Texture' UV map. Unfortunately Modo sometimes adds more UV maps by itself. We need only one UV map for almost all of our jeep. The wheel will have a separate texture and we will create a separate UV map for it later.
As you can see, I have selected the body object. I also created a new UV map called 'body'. It will be shared amongst every object except the wheels. For now I have only applied this UV map to the body object, but you can add this UV map to multiple objects. Just select those on the object list (by holding the Shift key and clicking on them) and add a new UV map. Modo will create it for every selected object. Because I only have one object with the 'body' UV map applied it will be the only object shown in the 'UV' tab (as long as the UV map is selected.)
I also selected the wheel object and created its own UV map called 'wheel'.
OK let's jump to 'UV' tab. Be sure you have your 'body' UV map selected. Also you can isolate your selection using the Ctrl + 6 pie menu. As you can see, my UV window is a mess. That's because I didn't delete my 'Texture' UV map. I renamed it. You can rename a UV map by selecting it and clicking on the name once. If you created a new UV map you should have a clear UV window.
We will start unwrapping with a simple object. Select the hood and hide the rest of the polygons (Shift + U). In my UV window you can see the UVs Modo created while I was editing the geometry. Not really that optimal.
If you now look in the top right corner of your 'UV' tab you will see three tools used to unwrap in Modo: the 'Projection Tool', 'Project from view' and the 'Unwrap Tool'. We will start by using the 'Unwrap Tool'. The 'Unwrap Tool' automatically breaks a model into UV shells based on your edge selection. It also smooths those shells and packs them. But first we need our selection.
For now let's break the model based on the main planes of the object, so for the hood it's top, bottom and side planes. In order to break them apart on our UVs we need to select edges on the corners. You can do it by hand or use the automatic method based on the angle between faces. Open the 'Select' roll-out from Modo's top menu and find 'Sharp...'.
You will get a dialog where you can choose the minimum and maximum angle between faces. If the angle between faces is bigger than the min value and smaller than maximum, the edge between those faces will be selected. In the picture below you can see my settings and the result. You can also see that it didn't select the edge in the background, so I added this edge by hand. Check if your selection is closed.
Turn the 'Unwrap Tool' On and activate it by clicking in the viewport. You can see Modo cut this mesh into six elements. The result isn't as good as we could expect though, so let's tweak some settings to achieve a better result.
I won't explain every part of this tool. Some options are self explanatory. By clicking and dragging in the viewport you can increase 'Iterations'. If you increase those, the tool will try to smooth those UV shells more. This won't help us.
Since our planes are almost flat or slightly curved the best thing would be to unwrap each of the shells by using its normal. You can find something like that under the 'Initial Projection' roll-out. You can see I changed mine to 'Group Normal'. It gives us a really clean unwrap. For more complex objects it's a good idea to experiment with how Modo will try to unwrap. Sometimes you can drastically improve the quality of your unwrap by changing a few options in the 'Unwrap Tool'.
We can say that our UVs for this mesh are pretty much clean. Usually we can't say that by just looking at the UVs. Let's use the Eterea scripts and add a checker pattern to our model (you will find those in 'Checkgrids and Visibility'; you can choose from many different patterns.)
Take a look in the top right corner of the image. The Eterea script added maps on top of our 'Shader Tree' window. First I used a 'medium' checker, but I preferred something bigger so I used the 'large' pattern. As you can see in the map stack. One of the important things to remember is that you are using a custom 'body' UV map and you have to tell the image to project onto the 'body' UV map. So select the checker in the 'Shader Tree' and in the 'Properties' tab below the 'Object list' turn on the 'Texture Locator' group. Under the 'Projection' category you will find a 'UV Map' roll-out where you can choose on which UV map this image should project. Be sure it's set to 'body' and turn On 'Advanced Gl' or 'Texture' mode (Ctrl + 2.)
We will now reduce the amount of seams. We don't need this many UV islands to unwrap such a simple object. It's a good habit to hide seems in places you can't see, so let's stitch the top plane of our hood with the side borders. Select the border edges of the top plane of our hood. You can see in the UV window that the edges connected to the selected ones are highlighted in blue. (In the right 3D viewport I changed the viewing mode to 'Gooch' which makes things easier to see.)
On the left you can see a group called 'Move and Sew'. The 'Unselected' option will move the selected shell to the unselected one and stitch the edges. We would like to snap the borders of the hood to our main plane, and we can do that with the ' Selected' option. Both polygon stripes will move to hoods top plane.
By stitching those together we introduced a bit more distortion into our UV map that we need to correct. Under the three main UV tools you'll find a group called 'Spread'. Select our new UV shell and activate the 'UV Relax' tool. Drag in the UV window to increase the 'Iterations'. You can watch how our UV shell smooths out.
If you now look at our unwrap you will see that our horizontal loops are slightly curved (you can expand the UV/3D view by hovering the mouse cursor over it and pressing 'numpad 0'.) This curvature introduces aliasing in our UVs. What I mean by that is that the horizontal, straight lines take up more than one row of pixels and it can create really bad looking artifacts on some types of maps.
If you are unwrapping a subdivided model for texturing it usually isn't a problem since you don't use normal maps. Also for non realtime rendering you can use bigger texture resolutions which can also hide those issues. Usually it's better to straighten those edges though (even for texturing convenience.) It will make the shells easier to pack and remove the aliasing issue. It introduces a small amount of distortion, so only use it when the difference between the straightened edge and the bended one is small.
So let's start straightening those by selecting one edge from each loop we want to straighten.
If you now press 'L' Modo will select the loops we want to straighten. Notice that if you press 'L' when your cursor is hovering over the 3D viewport you will get a different selection than if you use it when hovering over the UV viewport. For us it's better to use the loop selection when hovering over the 3D viewport. The loop tool will also select those additional border stripes, so be sure to deselect those.
The best way to straighten those edges is to use the Scale tool with the proper 'Axis' and 'Center' set under the 'Action Center' menu. Instead we will use one of the Eterea script features which does all the setup for us.
We have 3 different buttons for this. The difference between those is in how the 'Axis' is oriented. If you hover over the buttons (highlighted in blue) you will get a tool tip which tells you which 'Center' and 'Axis' it uses. If you just turn on this tool (for us either of those 3 will work) it will also select the edge ring. We don't want this though as our selection is already prepared. To bypass the ring selection, hold 'shift' and then press this button. As you can see we get a 'Scale Tool' gizmo.
Now you can drag the vertical part of the gizmo until the edges are straight or you can use another script from the Eterea palette. Just below those three tools you can see two buttons with 0 next to gizmo axis. Those will zero out the scale of the selection horizontally or vertically. Choose the right one to straighten our edges.
The two remaining border pieces can also be sewed to our main shells. It will require bending those to a straight line. I won't do it for this piece, but I will show you how it's done on the body piece. Be aware that it will cause some distortion. It's one of the situations where you have to choose between lack of seems and ease of packing versus lack of distortion. In this case the distortion wouldn't be that radical and noticeable. It would be way easier to texture it though. I will soon show you how to stitch those and the choice if you should do it is up to you.
Before we go further let's talk about the 'Pack UVs' tool. You can find it just above the 'Move and Sew' group. You can also find a few automated scripts based on this tool in the Eterea palette. Read the tool tips to check what they do. If you turn on the 'Pack UVs' tool you will see a dialog box like in the image below. First you can toggle through the three functions this tool provides. 'Pack' takes all the shells and tries to put them in 0-1 space in the UV map as efficiently as it can. It can't give as good a result as you can achieve by hand placing the shells but it is useful when you just need to untangle a mess of stacked shells one over another.
'Stretch' will scale shells so they have the same scale in the UV window proportionally one shell to another (which will result in the same pixel density.) Sometimes you can see that it needs some tweaks since the scale may be a bit off. 'Orient' let's the tool rotate shells.
The 'Direction' menu is binded with 'Orient'. If you check the 'Orient' feature it will orient the shells based on the direction you specified in the 'Direction' menu. You can choose 'Auto', 'Vertically' and 'Horizontally'. 'Gaps' let's you specify how big the gaps between shells should be. 'Based on Bounding Box' ensures that each shell will be treated as a box around the shell. It means that one shell won't occupy the space of another shells concavity. Finally we have 'Lock stacked' which will take care of all overlapping shells and will ensure that they will stay overlapped (I will talk about overlapping UVs later.)
Sorry for the long read. Let's get back to work. I used the packing tool to place all those hood shells into 0-1 space and then moved them away from that space (see below.) By doing so I have a tightly packed object which won't get in the way while I unwrap the rest of the model.
If I now unhide the rest of the object I will once again get those messy UVs. Remember I got those because I changed the name of the default UV map. I did so I could show you how to delete messy UVs like this. Select all this mess and find the 'Edit UVs' button on the left. In this menu you can do stuff to all your UV map information. I will use the 'Delete UVs' function. It will delete any UV information from the faces I had selected.
Our body object is a pretty complicated mesh to unwrap. You can hide the rest of the object by selecting the chassis geometry and using 'Shift + h' to hide unselected. We can unwrap bit by bit and finally make it to the end. We can also try to use automatic UVing to make the process easier. The 'UV Projection Tool' won't do the job for us but it will be a good start. In the tools properties check out the 'Projection Type' menu. For this object I will use atlas. It takes the bigger planes and fattens them out. As you can see, our result isn't perfect but some of the shells are easily recognizable. Some parts are still really messed up.
Let's start tidying it up by taking the most recognizable shapes out of the 0-1 space. The first part I was sure had a good unwrap was the front plane of the body.
Let's put it below our main UV space. Remember you can hover over part in the 3D/UV viewport in any subobject mode and it will be highlighted in blue in the second viewport. Really useful to identify which part is which.
The next part is the outer surface of the body. As you can see it's split into three shells.
Throw it out of the 0-1 space and move them closer to each other. For now we will sew them into one shell. Later we will change the layout, but for now we want to reduce the amount of seams and put them where we want to. Seams at the corners of our body would be visible and would hurt the quality of the work.
Just like before select the border edges of the back plane and use 'Selected' under the 'Move and Sew' group. It will snap our side planes to the back plane.
Continue moving those nicely unwrapped pieces. the planes behind the wheels look as good as in 3D viewport.
Sometimes just look in the 3D viewport and find the pieces without a distorted checker pattern. I selected the bench polygons in the 3D view and by doing so, found them in the UV view.
These three bigger pieces were on the inside of our body. Just like before we have three pieces.
Just like before I moved them out of the 0-1 space and sewed them. The inside seams won't be as visible as the outside ones, but still we can make one seem hidden behind the back bench instead of two seams in the corners.
Once again I started selecting faces in the 3D view. This time the faces I selected were entangled in that horrible mess (they are a pretty simple shape though.) So it's time to start cleaning this mess.
I checked if all of the faces from the mudguard were selected and used the 'Unwrap Tool'. For the initial projection I used 'Cylindrical'. It gave me the cleanest result. All of the edge intersections were clean 90 degree angles, so some of the other projection methods gave me slightly distorted UVs. For some pieces it's worth checking which projection type will serve you the best.
The 'Unwrap Tool' stretched those shells to fill the 0-1 space. It made the mudguard geometry way bigger than the rest. Scale those down to more or less match the checker pattern to the surrounding geometry. Later we will use the 'Pack UVs' tool which will resize them for us.
You can also use the orient functions. You can find them in Modo's default ui and in the Eterea palette (I highlighted them on the palette.) You can orient them automatically, horizontally, vertically or you can orient the edge horizontally or vertically. The rest of the shell will follow the edge.
The next part is a plane under the hood. For now let's move it away.
Continue moving the parts you can identify. As you can see in the picture, the faces I selected aren't UV'd too well. You can also notice stretching in the 3D viewport, so we will relax those later.
Move away the sides of the benches. Since they are flat planes Modo should have UV'd them well.
Let's select all those shells outside the 0-1 area and Hide them, so we can easily find out which faces are creating this unreadable mess.
We can now slowly unwrap the faces and hide them ('H'). This way the already UV'd faces won't obscure our view and we will be able to tell what's still left to UV. The bottom of the body is a large flat plane. To select it, select one of its faces and use 'Shift + up arrow' to grow the selection in the 3D viewport. If you double click it it will select the rest of the visible geometry.
As you can see those faces are a part of our UV mess. By UVing those we will make it a lot cleaner.
Before you use the 'Unwrap Tool' deselect the faces which don't belong to the main plane of the chassis bottom.
If you now activate the 'Unwrap Tool' it will give you clean and flat UVs. Don't deselect those faces, just Hide them.
We are still left with some overlapping and badly UV'd faces. Let's start by unwrapping the main shapes in the interior.
Select the front faces of the benches and use the 'Unwrap Tool'. Scale them down a bit and Hide them.
Let's get rid of those floating faces. Select both of them and just use the 'Unwrap Tool' once again. It won't give you the best UVs, but later we will sew them to other shells.
Select the dashboard faces and once again use the 'Unwrap Tool'. As you can see the result is not the best. The checkerboard doesn't seem stretched that much, but our shape in the UV viewport looks wonky.
The reason why this geometry doesn't UV well is because there are additional faces creating the indent in the dashboard. Select those and move them away with 'Tear Off' checked.
Now select both shells and activate the 'UV Relax' tool. I used 219 iterations, but above 200 the result didn't change. I Also used 'Unwrap' mode. Usually I just check which mode works best for the piece I'm unwrapping. There is no golden rule here. Like before Hide those faces.
Let's get rid of the border running around the body. Pieces like this are one of the most annoying things to unwrap. Later I will show you how to straighten and sew them to the main body shell. It will introduce some distortion but it's worth it since you won't have a seam running around whole body.
For now just select the whole shell and use the 'Unwrap Tool'. It will make later edits easier. Hide it after.
We are left with the interior floor. We can try using the 'Unwrap Tool'. It won't give the best result though, because just like with the dashboard some faces create a bump. And the 'Unwrap Tool' tries to flatten it by pushing faces around it.
To fix this issue select the edges shown in the pictures below. The 'Unwrap Tool' will use this as a seam.
If we now run the 'Unwrap Tool' we will get two shells. The left shell isn't perfect and we have introduced a new seam.
Run 'UV Relax'. As you can see the left shell is perfectly unwrapped. The right one isn't as well unwrapped, but it's pretty distortion free. The additional seam is actually well hidden and the surrounding geometry will hide it easily. You can also hide it with your texture by adding dirt.
Unhide everything ('U'). As you can see we have a lot of overlapping parts and inconsistency in the scale.
Let's once again use the 'Pack UVs' tool. This time I unchecked 'Orient' because I don't want to rotate those shells yet.
After running 'Pack UVs' the scale is OK and no parts overlap. Let's work on fixing some of the distortion and sewing some parts.
Till now no parts needed specific relaxing. Let's run 'UV Relax' to remove distortion on the front parts and to get better results in places we may have forgotten to relax. I moved the front parts slightly below and to the right. Those parts had some distortion but now they are fine. Also notice that our interior side shell became a little distorted. So it would be a good idea to undo this relax, Hide this piece and run the relax again. We don't want to loose our straight loops. You can also straighten them with the Eterea tools.
Now let's focus on the front parts I moved them slightly away before. Let's break those long stripes on the corner.
Just like before using 'Selected' as a sewing method, attach those thin pieces to the bigger shells.
Do the same for the other thin pieces.
Unfortunately those pieces aren't straight. So the sewing result won't be as good as before.
We can easily fix it by selecting them and using the 'UV Relax'. The result should be really clean.
Let's now improve the UVs on the biggest and most important body shells. We don't want those long shells in our UVs because they will be really hard to pack later. We can also hide a new seam behind the spare wheel at the back of the body.
Select one side of both the exterior and the interior piece. Using the 'Tear off' function move them away.
Now take both sides of the exterior piece and the plane under the hood. We could leave these seams as they are now but we will still have seams between the hood and front window. So let's go through the process of removing this seam.
For example you could select the edges at the hood plane sides and use a sewing method to stitch them together. But as you can see below, the result won't be good.
To fix something like that we will need to distort the hoods UVs. This is one of the situations where you have to decide if you want distortion or seams. Both of these drawbacks can be neglected if you use 3D texturing (you could do that in Modo for example.)
Since you already have a version with seams, let's go through the process of removing the seams for educational purposes. First place those shells as they are placed in the 3D view. Also be sure the scale of those 3 shells is the same. Select the loops like in the image and straighten them with the Eterea scripts like we did before.
As you can see in the 3D view the hoods UVs are distorted. The distortion isn't big though.
Now stitch those shells using the Sewing tool.
As you can see you get one continuous shell. Most of the edges retain their straight shape. The border edges which don't, you can straighten like before.
Once again use the 'Pack UVs' tool. As you can see Modo packed the UVs more efficiently. They get more texture information per area unit. As we make our UVs better and better our model will be able to look better with a smaller texture resolution. That's why UVing is such an important process.
In the next part we will continue making this UV layout better. We can sew more parts and reduce the shell count. A model UV'd like that will be easy to texture and efficient in its usage of UV space.
Thank you for reading this tutorial. If you have any questions leave a comment or write me an email.
Other Great Vehicle Tutorials:
- Building The Caterpillar 797 In 3D Studio Max
- Creating a Next-Gen Video Game Hot Rod: the Complete Workflow
- ‘Mini Semi Truck’
- Modelling the Audi R8 in 3Ds Max - Tuts+ Premium
- Modeling the Bugatti Veyron in Maya - Tuts+ Premium