This week I finished mapping all the parts of my model onto a two-dimensional image. Figure 61‑1 shows the test image, mapped on the model surface. (Its pattern helps me in keeping the same mapping “scale” for each object):
I did not “unwrap” the small details, like the parts of the propeller mechanism, because I will “paint” all the small parts using procedural textures.
Figure 61‑2a) shows how these meshes are distributed on the 2D UV map (you can see the reference image beneath). At this moment I mapped just a single (left) wing, the symmetric halves of the rudder and the fin, as well as the left side of the fuselage. The upper and lower part of the tailplane are symmetric, so I just mapped its left, upper side. I will create the other sides and symmetric elements later, at this moment I just reserved the necessary UV space for these objects.
In Figure 61‑2b) you can see that the reference image looks like the first approximation of the skin details. In the next post I will draw an image of these details that fits these unwrapped meshes. It will be the base for all the textures I will create for this model.
In the rest of this post I will shortly describe my typical approach to UV mapping.
This post is not intended as a detailed step-by step guide. If you want such an introduction “for the absolute beginners”, use this book. It is accompanied by many useful Blender add-ons, for example an add-on that exports all the unwrapped objects into such an SVG image, as shown in Figure 61‑2a). (In the standard Blender you have to export each object separately).
Let’s analyze the wing case. I am going to map its upper and lower surface separately. Thus I defined two auxiliary vertex groups, to easily select these mesh parts (Figure 61‑3):
I use the Project From View command to create initial mapping. For the upper wing surface I use the projection from the local top view of the wing object (Figure 61‑4):
I shifted and scaled this shape, fitting it to the reference image. I used “pinned” vertices from the flat part of the wing surface to this image (using the Pin command). Then I invoked (in the UV/Image Editor window) the Unwrap command (Figure 61‑5):
It “relaxes” (unwraps) all the faces that are not pinned. In this case Blender unwrapped the leading edge and wing tip edge.
I unwrapped the wing bottom surface I the same way. At this moment the seam line between the upper and lower wing surface lies in the middle of the leading edge (Figure 61‑6a). While it is OK for the relatively sharp edge around the wing tip, the minimal discontinuity of the texture image on the most exposed, forward part of the wing would spoil this model. Thus I usually hide such a seam, leading it along the nearest panel seam line on the lower wing surface (Figure 61‑6b):
When I marked the seam line, I called another Unwrap command. In response, Blender “teared” the bottom part of the leading edge from the lower wing surface, and “glued” it to the upper surface (Figure 61‑7):
As the final touch, I straightened the rib edges (it is much easier to draw the texture images on such an “orthogonal” wing layout). The only exception is the skewed inner edge of this wing segment (Figure 61‑8):
When the wing surface was mapped, I replaced the reference image with the standard Blender test image (UV Grid). It is prepared for finding eventual mapping distortions (Figure 61‑9):
As you can see, there was a serious distortion along the leading edge seam.
The remedy for such a flaw depends on the mesh local conditions. When it occurs on a flat surface, you can make the seam line sharp (setting its Crease coefficient to 1.0). However, in this case it would spoil the cross-section of the leading edge. The other, less preferable solution is to insert an additional, perpendicular edge loop. When you locate it in the proper place, it efficiently removes such a distortion (Figure 61‑10):
(I do not like creating such additional edge loops, because each of them makes the resulting mesh topology more complex. However, sometimes you have no choice, as in this case).
In this source *.blend file you can evaluate yourself the current version of the model (as in the first illustration from this post).