In this post I’ll be discussing two techniques I use for texturing models with dense geometry.
The first method should be quite familiar, as it makes use of a tried and tested process that has been widely implemented across 3D packages. It is also a popular method used when creating animated characters.
The second method is somewhat newer and relates specifically to static characters. I’ll be using Blender in this example but other software packages might have similar features, for achieving the desired result. The focus in this post is on the second method.
The above picture is a work in progress depicting a character (on the right) that I will be using as an example.
Reducing a Dense Polycount
Regardless of what your final output may be, for example a still frame, an animation or a game character, we first need to consider how to reduce the excessive amount of geometry that is created while sculpting a character. This is necessary in order to keep your 3D application responsive enough when working with a model in the viewport.
Texturing a model requires realtime feedback particularly for cloning out seams and painting the texture.
Modelled and Subdivided
If you have created your sculpted model by subdividing with a multires modifier, then there is not much you need to consider with regards to polycount reduction as your character’s edge loops should already have been modelled in the appropriate positions. In this case reducing the model’s polycount is as easy as reducing the multires modifier’s subdivisions.
On the other hand, if your model has been sculpted with Dyntopo (see this post for a more in-depth explanation of Dyntopo Sculpting in Blender) and your model is intended for animation you will need to retopologize the model in order to reduce it’s polycount.
We will, however, be focusing on generating a model for a still image and as a result the model’s underlying topology is not as important, as the model will not need to deform for animation. As such, retopologizing a model can be used to achieve polycount reduction for static characters but it is not necessary, and the following method should be considered particularly when dealing with time constraints (such as deadlines).
The method I use in this case is to,
- Duplicate the High Res model.
- Decimate the duplicate and Apply the modifier.
- UV Unwrap the decimated model.
- Apply a Shrinkwrap Modifier to the realtime/decimated model targeting the original high poly model (some might choose to bake a Normal map instead, but this method can be less flexible. See here for comparisons).
- Add a Multires Modifier that subdivides the realtime model at rendertime.
- The realtime model can now be textured with multires which will subdivide the model respecting it’s UV layout.
Here’s a closer look at the texture map of the character we’re examining in this post, applied to the realtime model. This texture map is about 90% complete.
I’ve found this method to be quick and efficient,
it’s quick because the main part of model density reduction (i.e. polycount reduction) is automated by the decimate modifier.
The efficiency of this method rests in being able to easily control the model’s polycount and ultimately how much detail (LoD) you want to work with in the viewport by means of the Shrink Wrap and MultiRes modifiers.
Setup is Also a breeze once you’ve used the Shrinkwrap modifier a few times.
The main drawback to using this method is that the model’s UV’s need to be layed out on decimated geometry. As decimation does not respect edge-loop placement (naturally), creating seams on a decimated model can tend towards a less desirable UV layout particularly when compared to the above mentioned method of retopologising a model first. However, the results might not be as problematic as you (or I) would expect them to be.
In the image below the UV shell of a character’s head firstly depicts the “ideal” retopologized version compared to the decimated version. But as you can see both UV layouts yield results, for a baked AO map, that are acceptable for importing into a photo manipulation program.
The main point worth noting here, is that if you plan on taking your model’s Texture Map into an image manipulation program such as the GIMP or Photoshop I’ve always considered it best practice to ensure that the model’s UV shells are layed out in a way that,
- best represents what the model looks like. For example, when unwrapping a head the model’s UV shell (of the head) should look like a 2D representation of what that character’s 3D head would look like if pelted.
In the above image it is quite clear when looking at the images that we are looking at the UV shells for a character’s head. The location of the eyes, nose, mouth, forehead etc are also clearly visible and placed where you would expect them to be. Without these details being carried from the 3D application to the photo manipulation program, creating or modifying a characters Texture map can become very cumbersome when done externally.
These sort of results are not easy to achieve with automatic UV projections, and generally should be done manually.
Although the results of a decimated model’s UV layout are not as easy to predict as that of a retopologized model, the compensation is that polycount reduction can be achieved a lot faster which leaves you with more time to spend painting and or photo manipulating the model’s texture.
The final point worth noting about a character with decimated geometry’s UV layout and that of a character with edge loops that are modelled in place, is that 0 to 1 Texture space can be used more efficiently in the latter.
For example, the above image compares two different character’s UV layouts, the left layout is from this character, the right is from our example character. Notice how much texture space is lost on the decimated model in order to keep the shells representative of their 3D counterparts.
That “negative” texture space (in my experience) is easier to fill when a character’s UV layout is derived from a model in a symmetrical pose.
Despite the obvious limitations of unwrapping a decimated models UV’s, it’s worth bearing in mind that this method can be used effectively for static characters and that the edge loop placement resulting from decimation can be controlled to some some degree, by sculpting creases into a character. In the image below, seams are placed at various locations (on this decimated model) such as where the torso joins the hips or the arms meet the shoulders, this effectively is used to create the UV shell for this characters shirt, but just as with UV unwrapping a character for animation, the majority of this character’s seams are out of sight.