You are on page 1of 40

Mega Game series | Creating the Face for High-Res Games

Siggraph 2006 Maya Master Class


Instructor:
Shinichiro Hara / Associate CG Supervisor, EA Games
The workflow of modeling and texturing in-game characters has changed
significantly for next generation content creation. This Master Class will
demonstrate the process of building a high-resolution game character face. The
focus will be on generating a realistic look for the human face in-game. This class
will cover modeling a high resolution model, unwrapping UV, generating normal
maps, building a skin shader and projection painting in Maya.
1. Detailing a model using a normal map

• Modeling high resolution face

• Building game resolution model from the high resolution model

• Defining form of facial geometry through a normal map

2. Unwrapping UV for organic surfaces

• UV unwrapping workflow based on a projection map and unfolding UV

• Stretch check for the organic surfaces

• Bring it all together

3. In-game skin shader

• Skin concept

• Shading network

• Ambient occlusion map

4. Projection Painting in Maya

• Create projection

• Applying projection
1. Detailing a model using a normal map

Modeling high resolution face


Building a high resolution character is the foundation of the content. Game
resolution assets will be created from the high resolution model and textures. As
the high resolution model will be the base of the assets, make sure to build with
proper geometry construction and details. The high resolution model will be used
to create the game resolution model and the normal map. Notice that the model
is mostly constructed with quad polygons and defined edge loops. This is
because the geometry will streamline the process of polygon reduction when you
are building the game resolution model.

The nostril is one of the most complicated shapes in the human face. Modelers
commonly build nostrils using pod structure. With pod structure, the shape tends
to look like a simple hole, non organic and realism is lost. The nostril has a bridge
structure (red surfaces above) from the side of the nose to the inside of the
nostril towards the tip of the nose. This technique will also merge seem between
the nose and upper lip, and make it look more natural.
I built the lips by creating two loops as it is shown above. Modelers commonly
build lips with a single loop. However, this geometry construction often causes
undesirable deformations around the corner of the mouth. Notice the bottom lip
(red surface above) is flowing inside of the mouth and the top lip (blue surface
above) is curling in the corner of the mouth and flowing inside the mouth. This is
very much like how a real mouth is constructed and this technique will add some
realistic detail to your geometry.
Interactive lighting and self shadowing are getting more common in next
generation games. Because of the introduction of self shadowing, it is important
that the shadow on the face looks realistic as well as the model itself. It is
important to check the model under the influence of interactive light and shadow
while you are building the model. Remember, you are not only building the model,
but also you are designing to shapes of shadows on the face.

Notice there are a few triangle polygons sprinkled around in the face geometry.
Triangle polygons usually create a creasing effect on the surface. Take this as an
advantage, by using triangle polygons where you want to end edge loops. Also,
compress the loop, using triangles in an area that is supposed to have creases.
Triangles are very useful for creating wrinkles. It is important to have some
surface material description on the model and triangle polygons can help to
describe some of the surface details.
Building a game resolution model from the high resolution model

The polygon reduction process can be simple, if you built the high resolution
model with reduction in mind. The high resolution model is built mostly with quad
polygons and defined edge loops. By using the Select Edge Loop Tool, select
every other edge loop like it is shown on the left above and delete the selected
edges. This process will reduce the polygon count to one forth of the amount.
High resolution polygon count being 4 times more than the game resolution
model gives you a good starting point. For example, the high resolution
character’s head is roughly around 14000 polygons which got reduced to 4000
polygons in the first path. So if your budget for your in-game character is 5000
polygons, a 20000 polygon head model is the preferred count.
The screen shot above is the final in game model. It was built based on the
polygon reduction technique shown above. After the first path, some more edges
were removed and some edges were added to where it needed more detail. For
the game resolution model, most of the detail is defined by the normal map so
where you need to pay attention is in the silhouette of the facial model. Make
sure that the normal map and the silhouette of the model reads well together.
Defining the form of facial geometry through a normal map

The normal map is generated from the high resolution model based on the game
resolution model’s tangent space normal. In the Surface Sampler Tool option box,
add the high resolution model as source surfaces, add the game resolution
model as target surfaces and turn on Normal Map check box and you are ready
to bake the normal map.

High resolution model with textures


Flat shaded high resolution model

Flat shaded game resolution model


Flat shaded game resolution model with normal map
Flat shaded game resolution model with normal map and textures
2. Unwrapping UV for organic surfaces

UV unwrapping workflow based on a projection map and unfolding UV

Unfold UV tool is a very powerful tool for unwrapping organic surface UV.
However, unfold UV tool often gives you unexpected results when it is used on a
complex surface such as the face. This chapter will show you how to utilize the
tool to get the best results. To get the expected result for the tool, you need to
give more information to the tool by applying the tool to selected regions, pin
borders, or selected UV.
Before unfolding UV using the unfold UV tool, first you need to define the regions
of plates. The face consists of 3 main regions which are the front, the side of the
face, and the neck. The nose and ear are complex shapes, so it is a good idea to
separate those parts as different regions.

After you divide the face into separate regions, apply planar projection to each
region. Make sure that the projection width shares the same value as the
projection height and the value needs to be the same for all the planar projection
you apply for all the regions. This insures that the planar projection is square and
all the regions are in the same scale.
Stretch check for the organic surfaces

It is very important to visually check how UV is affecting the texture space. By


using the texture above, you can see where it is starching and where it isn’t.

The black circle pattern is especially handy when you are editing UV for the face.
Notice that you can clearly see where it is stretching and warping in the screen
shot above.
Bring it all together

Unfolding UV for organic surfaces is like a challenging puzzle. To get a good


result out of unfolding UV the right amount of space for the UV to not stretch
must be determined and the compression eased out. Remember, UV has to
stretch somewhere. By distributing the stretching across a wide range of space,
you can ease the stretching to the point that it is not visible.
Unfold UV has two solver options. When Global Consistency Solver Weighting is
set to 0, it will give you almost the same result as the relax UV tool as it is using
100 % local solver. When the weighting is set to 1, it will use the global solver.
Unfold UV tool works on the selected UV.

Select the UV border of the neck UV as shown above


Invert selection

Apply Unfold UV with solver weighing of 0


Select the UV border like above

Unfold UV with solver weighting of 1


Select the forehead UV

Using lattice deformer, expand the space as it was compressed from the planar
projection
Apply Unfold UV to the whole front side of the face with solver weighting of 1 and
pin UV border on

Move the side part of UV closer to the front part of the face
Using lattice deformer, deform the side face UV closer to the UV border of the
front side of the face UV

Attach the UV border of the front and side of the face


Select UV on the distorted section and apply Unfold UV with solver weighting of 0
selectively

Move the neck part of UV closer to the front part of the face
Using lattice deformer, deform the neck UV closer to the UV border of the front
side of the face UV

Attach the UV border of the front and side of the face


Select UV on the distorted section and apply Unfold UV with solver weighting of 0
selectively

Select the nose bridge area and apply unfold UV with solver weight of 0
Move the eye section of the UV to the right to give more space for the UV of the
nose bridge and select UV on the distorted section and apply Unfold UV with
solver weighting of 0 selectively

Select the nose UV and apply Unfold UV with solver weighing of 1


Marge the nose UV into the face UV and Select UV on the distorted section and
apply Unfold UV with solver weighting of 0 selectively
Having no distortion in the UV aspect ratio makes it easy to paint textures. It can
waste UV space to have 1:1 aspect ratio but it is ok for the high resolution model
as it is not going to be used in game. In the screen shot above is the high
resolution UV for the texture painting with no distortion in aspect ratio. Notice that
it is not occupying the whole UV space. It is a waste of space but it is a lot easier
to paint the texture.
Screen shot above is the game resolution UV for the texture painting with
distortion in the aspect ratio. Polygon force UV was used to fill the UV space. To
adapt the texture to this UV, you can simply set the texture’s aspect ratio to 1:1.
3. In-game skin shader

Skin concept

The skin shader of this character consists of 3 textures: a color map, a specular
map and a normal map. What’s special about this shader is that there is no map
which describes the bumpiness. The normal map is commonly used to describe
surface bumpiness; however, the bumpiness of the skin is so fine and shallow,
that it is very hard to get the feel of skin bumpiness through a normal map or a
bump map. It often ends up looking like a rock, or some kind of hard material. In
this character’s shader, the bumpiness is described through the color and the
specular map. In the specular map, by painting the crease and pores of the
specular map not shiny, it gives you the illusion of bumpiness and you can get
good results. I strongly recommend this technique for materials like skin, leather,
cloth and so on.
Shading network

The skin shader of this character is a blinn with color map, speculer map and a
normal map. The normal map is connected to the bump2d node used as tangent
space normals. Yes it is very simple but it is gives you a good starting point for
the skin shader in game.
Ambient occlusion map

Generating an ambient occlusion map can be a time consuming process.


However, by baking to vertex you can speed up the rendering time and also it
gives you more control over the result.

When you are baking an ambient occlusion map, make sure to use the highest
resolution model you have, to get a detailed result. In mental ray baking option,
set “bake to” to vertices, “color mode” to occlusion, “occlusion rays” to 512 and
“normal direction” to surface front. This will give you a good result on the
occlusion map on vertices.
Once you get the occlusion information on the vertices, you need to generate a
texture from them. You can export vertex color information to image format
through the paint vertex color tool option. In the export tab, you can choose the
image format and the size of the map to export.
The screen shot above is the result of an exported ambient occlusion map from
the vertex color.
Projection Painting in Maya

Create projection

Projection painting is a very powerful feature that 3d paint packages offer. This
chapter will show you the process of doing projection paint, without a 3d painting
package.

Select the polygon faces where you want to apply projection painting and
duplicate the faces to a separate object. The duplicated geometry is going to be
the projector.
The screen shot above is the UV of the projector.

Apply a new set of UV to the projector, which is easy to paint, or project the
texture in a 2d paint package. Paint the texture for the projector UV.
Assign the texture to the projector.
Applying projection

You can project a diffuse color map, using the surface sampler tool. In the
surface sampler option window, add face geometry to target surfaces, projector
geometry as source surfaces, turn on the diffuse color map check box and hit
bake. Make the filter size to 1 to get a sharper result. Sampling Quality can
increase the sharpness as well but it will increase the rendering time and
memory consumption.
The screen shot above is the result of the texture projection.

The screen shot above is the result of the projected texture assigned to the
character.

The projection paint technique in Maya gives you two advantages. First, it is not
screen resolution dependent, which means you, can project a bigger image than
the screen resolution allows. Second, you get to keep the projection.
Conclusion
In this MasterClass, it was demonstrated that the approach of building a game
resolution model based on a high resolution asset, produces successful content
for next generation games. I hope to see these techniques used in many next
generation game productions. Feel free to contact me at sheen3d@yahoo.com
and also visit my website www.sheenmasu.com

You might also like