Mesh Creation Guidelines
Seleting a Project
Head Model Preparation
Tips & Tricks
Also see the FaceGen FAQ.
- P4 or equivalent running Windows XP/Vista/7.
- 1GB or higher RAM.
- 10GB of hard drive space per project.
Setting up a project requires an overnight run on your PC.
All operations in Customizer take place in a project. A project
creates a model set; a group of face-related models that fit
together as seen in FaceGen Modeller:
Every project has a mean face (created by Customizer), which other
conform to as closely as possible (of course you may also want to ensure that
some components fit with each other):
You can integrate any number of meshes (heads, faces, eyes, teeth, hair, etc.)
into the same project as long as:
- They all fit to the same mean face.
- The neck seams to be held fixed are in the roughly the same place.
If your meshes fit together seamlessly when you create them, they will fit
seamlessly for any face you create in FaceGen.
You work with a project in 3 stages. The 'Head Model Preparation'
and 'Integration Setup' stages set up the project, and the 'Model Integration'
stage is where you actually integrate your meshes into FaceGen.
Unless otherwise noted, you can exit Customizer at any time and continue your
3. Mesh Creation Guidelines
In the steps outlined later in this document, you should create your meshes
according to the following guidelines:
- Polygonal models (meshes) only.
- Objects using multiple texture maps will be separated
into separate objects - one per texture map.
Meshes With Morph Targets / Blendshapes / Endomorphs
- To have your morph targets appear in FaceGen, create them along with your
base model - you can use ours as a guide. FaceGen morph targets are
mesh-specific and are not copied over automatically.
- There is no need to include UVs on the morph target models - UVs are taken
from the base model only.
Almost any mesh and UV layout for head models is
acceptable, with the following restrictions:
- The mouth must be closed. You can add open-mouth animation morphs
later, but the basic face shape statistics are defined with a
- The UV layout must be non-overlapping in the face area. In other words,
a pixel in the face area of the UV map should not map to more than one
point on the model. No mirrored face textures !
- You will have multiple models representing the face if:
- You have several level-of-detail (LOD) models of a head.
- You have several versions of a head model with different hairstyles
or facial hair.
- For best results, your neck seam should not be close to the head
(leave room below the chin for a double chin).
- The nostrils should not be indented for texture map creation. If
you want indented nostrils, you'll have to integrate two versions
and combine (see details in Integration below).
- SDK Use: To maximize speed and minimize RAM usage of the color texture
statistics, you need to minimize the size of the texture statistics.
This should be done by having the head in its own texture image, not
shared with the body, and using the full extent of that texture image
to maximize the size of the face area.
4. Creating a Project
- Select a directory with at least 10GB of free disk space. A new directory
for your project will be created there. Do NOT use the default selected
directory in 'program files' as this can cause issues with Windows Vista and 7.
- For simplicity, use a single unique name for the new project and it's model
- If you've already created a project, you should be able to load it by navigating
to the directory in which you created it.
- To modify the FaceGen Default model set, create a new project and watch for
specific instructions below.
5. Head Model Preparation
WARNING: If you have previously completed the Head Model Preparation stage
and wish to make changes, create a NEW project, do not use the 'back' buttons
to redo this stage, as Customizer may produce incorrect results.
Customizer indicates the filename of the FaceGen internal mean face in both
Wavefront OBJ and Maya ASCII (ma) formats.
Import the internal mean face into your preferred 3D modelling application:
- Maya: do NOT use the OBJ file, use the MA file (or Maya will
scramble the vertex ordering).
Feel free to rotate, move or scale the internal mean face to your preferred
coordinate system, but do NOT alter its
shape or mesh structure (eg. vertex ordering) in any way.
Now you can build or modify your meshes to conform to the internal mean face
as possible. In other words, any head meshes must be modified to have
the same shape as the internal mean face (in your chosen size, orientation and position)
over its entire surface.
When Customizer creates the shape and colour statistics
for your meshes it will do so based on their positioning relative to the
Your first step will be to build your highest resolution head mesh
according to the 'Mesh Creation Guidelines' above.
This will be used in the next stage to define the neck seam.
If you only want to modify the existing FaceGen Default Model set,
the rotated/scaled internal mean face for that has been placed in the
subdirectory 'DefaultModelSetInternalMean' in your Customizer 1.3
directory. Use this without modifying it in any way. To get the hires
base mesh, export the hires skin mesh from the default model set
using FaceGen Modeller, but be sure to hit the 'set all to zero'
button in both the symmetric and asymmetric shape tabs first !
Use this for your highest resolution head mesh below.
Check registered models
Export your transformed mean face and
highest resolution head mesh.
Your mesh(es) must be exported into the OBJ format:
- Maya: The OBJ export plugin can be loaded by selecting:
Window -> Settings/Preferences -> Plug-in Manager.
Be sure to freeze any transforms into the vertex coordinates before exporting.
This step lets you double-check that you haven't accidentally
further transformed one of your meshes during import or export.
In the first dialog box, select the OBJ of your transformed internal mean face.
In the second dialog box, add the one or more models corresponding to
your high-resolution head mesh.
Your head mesh,
shown in transparent green,
should conform closely with the internal mean face, shown in opaque white.
If you can't see any green at all, your mesh is probably in the
wrong location, or shrunk to an imperceptible size. You will have
to correct this problem before integration will work.
6. Integration Setup
Obtain neck seam vertices
Here you tell Customizer where the neck seam of your model is.
The neck seam is important since customizer must keep
this region fixed for any shape of face created in FaceGen when
it creates the shape statistics.
You can define the neck seam automatically in some cases by toggling
through seams in the geometry, or you can define it manually, by selecting
each vertex of the seam. You do not need to worry about duplicate
vertices in the neck seam at this stage.
You do not have to define a neck seam, but if you don't then the neck
seam will change shape along with the head when you apply different
faces to it with FaceGen.
Don't worry if the head appears facing the wrong direction in this step;
as long as this mesh overlapped closely in the 'Check registered models'
step, your coordinate system has been properly registered.
Create cache files
Be sure you have 10GB of free disk space, and you don't need your
computer's full power for the next 10-20 hours, then hit 'Start Setup'.
Once it's finished, your project is set up and ready to integrate
as many meshes as you need by repeating the Model Integration steps
You should NEVER repeat this step unless you change the
co-ordinate system of your meshes or the general location neck seam,
in which case you will need to create a new project.
Do not delete the 10GB of cache files if you think you may have to
integrate more models in the future - or you will have to re-create
7. Model Integration
The setup stages are only done once per project, but the model integration
stage can be repeated as many times as you like as you add models to a
You do NOT need to repeat the setup stages if you modify your
head meshes - only if your coordinate system changes or your neck seam
All models to be part of the model set must go through the geometry integration
step, even if you'll only be using the color texture stats.
If your model has a UV map
which includes some of the face or skin area, then it will need to be
put through the texture integration step as well. Even if it doesn't,
you may wish to perform this step to integrate your own texture image so
it can be seen in FaceGen Modeller.
Once you have integrated the models you want, they're ready to use in
the directory 'XXX\csamYYY', where XXX is the data directory you selected
for this project, and YYY is the project name you chose.
To make this project appear as a model set in FaceGen Modeller, just copy
the 'csamYYY' directory (including its contents) into your FaceGen
Modeller Model Set directory:
- Modeller 3.4:
- XP: C:\Documents and Settings\USERNAME\Application Data\FaceGen\Modeller3\ModelSets\
- Vista & 7: C:\Users\USERNAME\appData\Roaming\FaceGen\Modeller3\ModelSets\
- Modeller 3.3 and earlier:
- XP or Vista32: 'C:\Program Files\Singular Inversions\FaceGen\Modeller 3.3'
- Vista64: 'C:\Program Files (x86)\Singular Inversions\FaceGen\Modeller 3.3'
You can integrate multiple models at the same time. They must be in the OBJ
format. They must conform to the mean face (or to your head models that
conform to the mean face). Geometry integration will ensure they conform
to any face you create in FaceGen.
If you are just adding morph targets to an already integrated mesh, then you
can select the TRI file for that model part instead of an OBJ file
(using the file type drop-down selection in the file load dialog box)
, and the morph
targets will be automatically set up.
If you are modifying the FaceGen Default model set, just use the TRI files
from the csamDefault directory and your meshes will appear with all morphs
You can select which models will be integrated by clicking directly
in the 'Skip' column beside each model.
After preparing all your models for integration, click 'Start Integration'.
Once the integration is finished, click 'Done'.
Examples of things you can integrate:
- Different level-of-detail head meshes.
- Torso or body meshes (just for the color stats).
- Teeth, tongue and sock models (just for the shape stats).
- Eye models.
- Hairstyles, hats and helmet models.
- Glasses and jewellery models.
- Skeletal, muscle and tissue models.
'Add' / 'Change' model options:
- Assign Neck Seam Vertices.
- For head models containing a neck seam,
you must specify the neck seam vertices again. This allows Customizer
to hold those vertices precisely unchanged in the resulting shape
statistics. If you skip this the vertices may move by a very small amount
creating small gaps in neck seam to the body.
- When selecting individual vertices you must click on a facet (triangle or quad)
of which that vertex is a part, close to the vertex. This approach makes it
easy to select duplicate vertices by clicking on the facet associated with
each such vertex.
- Animation Morphs: Animation morphs are not created automatically
by Customizer, you must add them yourself. There are two kinds of
animation morphs in FaceGen:
- Diff Morphs: Are constant vertex displacements which are applied
identically to any face. They work well for mouth and eyebrow
movements. They do not have to be integrated into FaceGen as
they can also be added after exporting.
- Stat Morphs: Some animations such as blinks, eye movements and
the 'th' phoneme require a specific
target position. FaceGen applies shape statistics to this target
position to ensure it is adjusted correctly. These morphs must
be integrated into FaceGen to work properly with all faces.
- Animation morphs must be defined on meshes with an identical topology
to the base shape.
- Default Load: Does this model load by default when you select this
model set in FaceGen Modeller ?
- Skip This Model: This model has already been integrated - don't do it
- Surface Properties: Sets the specular and shininess values for viewing
within FaceGen Modeller.
After geometry integation, your models will be set up to automatically
morph to fit the shape of whatever face you create. If you do NOT want
this functionality - if you want your model to remain a fixed shape
and position - then you can delete the '.EGM' file associated with
that particular model in the directory for this project. This is
useful for torso/body models, which are stitched to a fixed neck seam
and do not need to be morphed for different face shapes.
Once this step is complete, if for some reason you need the vertex
indices of the seam
they are listed in the file 'XXX.fgprj' in the directory 'projXXX',
where 'XXX' is your project name. This directory will be in your
FaceGen Customizer directory unless you specified it be created elsewhere.
The vertex indices are listed after the tag 'ModelYYSeamIdx', where
'YY' is a number corresponding to the model part.
Warning. The Texture Integration stage begins with the output from the Geometry
integration stage. If you change the UVs of your mesh, you will have to
re-run the geometry integration for that model in order for the UV change
to be propogated to this stage.
Hit the 'Back' button at any time to return to the Model Integration menu.
Customizer can create skin texture statistics for each model. The skin
texture is a human face texture (including the eyes) over the face region,
and the appropriate skin colour everywhere else. Some examples:
|Default model mean skin
||Default model mean eyes
||Custom model mean skin
You can composite fixed textures over skin textures; for example if you
have a head mesh that includes a raised area for hair. In this case,
create the hair texture along with an alpha map for compositing it
over the skin texture:
|hair texture image
||composite alpha image
Note that the composite alpha image is a greyscale image where pixel values of
zero show only FaceGen skin texture and pixel values of 255 show only your
Here are some examples of the end result textures with this hair composite:
We do not recommend using the composite feature here, as FaceGen statistics are
normally kept at lower resolution than your final composite image will be, and you
may wish to switch between multiple composite images rather than pre-bake one in.
'Detail' model options:
- Skip this texture: This model does not need a texture or the texture
has already been created in a previous run.
- Surface Properties: The specularity & shininess as viewed in Modeller.
- Desired Image Dimension: Note:
- When detail texture is added in Modeller, these image dimensions
will be DOUBLED. In other words, 512x512 will result in a
- The largest (512x512) option runs slowly in Modeller.
- SDK Customers: You should keep these dimensions as small as possible
since the statistics files can be large.
- This eye is occluded by: If you are using separate eye models,
check this option to minimize the amount of skin colour on your
eye texture maps.
- Texture Overlay Image (not recommended): To overlay (composite) a texture over the skin
texture (such as hair) load it here. You must have a separate alpha
map for the composite.
- Compositing Alpha Map. Load the corresponding compositing alpha map
- Use alpha render. If the texure overlay image has an alpha
transparency channel click here for Modeller to render it last.
- Options for Fixed Texture: Use the specified fixed texture instead
of FaceGen's skin texture. Note that Modeller will only display textures
whose pixel size is a power of 2 in each dimension.
- Use alpha render. If the texure overlay image has an alpha
transparency channel click here for Modeller to render it last.
Select the models you want processed (or re-processed) by making sure their
'skip' column is clear, and hit 'Start'.
Once finished, you will want to touch up the base texture image from the very
smooth one created by FaceGen to add your own wrinkles, skin folds on the ear,
etc. This can be done by modifying the base texture created above.
Locate the '.BMP' file (the base texture) corresponding to the model
part that contains the desired area, and add highlights & shading to it:
|Default hires skin base texture with ear detail added
Be careful not to change the layout or overall color of the mean face.
The resulting face textures will all have the same modification.
Alternatively, you can just replace the mean texture altogether with
your own - it will still work with the texture statistics.
If you do this, make sure you don't introduce any seams
where your different textures meet on your models. As above, be
sure not to change the UV layout (or you'll have to redo the texture
In both cases, you have the option of increasing the pixel size of the image by one or
more powers of 2, as long as you do not change the aspect ratio or use a factor other
than a power of 2.
New base (fantasy races)
Once you've integrated a mesh with our mean human shape, you can expand it to other
stylistic base shapes and base textures - for instance for fantasy races.
If you are not using FaceGen stat morphs, you can do this entirely outside of
FaceGen by simply replacing the base mesh with your own (see fileconvert utility
below). However if you need to create FaceGen stat morphs, you must use this stage.
You should make a modified version of the mesh that you
have conformed to the
mean human into the desired new shape, without changing the vertex
count or vertex ordering.
Although this new base mesh no longer needs to conform to FaceGen's
mean human face, it must remain the same overall size and in the same
Morphs are easily copied over to your new fantasy faces. FaceGen uses
two types of morphs; diff morphs and stat morphs. Diff morphs from the
human mesh will be copied over automatically. Stat morphs require a bit
more work. A stat morph is one where the morph must end in a very specific
target position, such as a blink, an eye movement, or the 'th'
phoneme. In the case of a stat morph, you must re-define it on the
new fantasy base mesh (where applicable).
If a model part has no morphs, then an easier route is to avoid using
this stage of the Customizer entirely and just swap in the modified base
mesh and base texture. Of course they must still be in the same topology
and UV layout. To convert your OBJ model directly to TRI use the
To get started, select 'New Base' to integrate models for a new fantasy
race, or 'Modify' to continue work on an existing fantasy race.
'Remove' will destroy all work on an existing fantasy race.
In the next dialog, you can add corresponding fantasy base meshes for
each human base mesh in this project, using the 'Modify' button.
In the 'Modify' dialog box you have the following options:
- 'New Base Model File'. Select the fantasy race version of the
corresponding human mesh. Remember the vertex count and ordering
must be identical.
- 'Skip this model'. Indicates this one has already been processed.
- 'Modify' lets you to select the appropriate stat morph
model corresponding to each of the listed human stat morphs.
If there are no stat morphs listed, ignore this button.
Once you've entered your new base model information, you're ready to
hit 'Start' to have your fantasy race models
integrated into FaceGen.
8. Tips & Tricks
- Understanding the file types
Each model part consists of one or more of the following file types,
with the same root name:
- TRI. This is the base mesh, which includes UVs and information about morph
targets but not the FaceGen shape changes.
- BMP. This is the base texture.
- EGM. This is the statistical shape information, which is used to modify the
base face shape. Without this file, the mesh will never change shape.
- EGT. This is the statistical texture information, which is used to modify the
base texture image. Without this file, the texture image is fixed.
- FIM. This is the UV remapping transform, which is used to transform the detail
texture in the FG file (taken from a photograph) into the UV layout of this mesh.
Without this file, a mesh cannot have a detail texture applied.
- Sharing a texture between more than one mesh
Let's say you've got separate meshes for the eyes and head, but
they share a texture image. Do the following:
- Integrate each model separately, giving 3 sets of statistics files;
one for each eye and one for the head.
- Create a composite mesh by merging the eyes and head meshes.
Integrate this composite to get another set of files.
- Copy just the texture statistics files of the composite
(the BMP, EGT and FIM files) over those for each of the separately
- If you're using the Modeller, when you export you'll still get
3 texture maps but now they're all the same, and each one includes
textures for the head and both eyes. Just use one of them.
- If you're using the SDK, you can optimize your use of this
model by having the 3 meshes share the same texture statistics
in memory (highly recommended given the size of the texture stats).
- Using more than one texture with a single mesh.
Let's say you've got a head model which references separate texture
images (materials) for the skin and eyes. Do the following:
- Integrate the model and Customizer will offer to break it into
separate meshes, one for each texture (or you can break it up
yourself into parts that only use one texture).
- Now take the original model and combine all the surfaces into a
single material using a single texture map (it doesn't matter what
the UVs are, they will be thrown away).
- Integrate this 'fused' model with Customizer, but only integrate
- To use Modeller, view the model broken into separate meshes, then
export that model to get the texture maps. Without changing the
face, switch model parts to the 'fused' model and export it to
get the geometry.
- To use the SDK, just use the geometry statistics of the 'fused'
model (the TRI and EGM files) and the texture statistics of the
each of the broken up models for each texture (the BMP, EGT and FIM
- Fixing the neck or head shape
If you want to hold an area such as the back of the neck or back of
the head fixed, then specify those vertices as 'seam' vertices during
both the Integration Setup and Model Integration stages. FaceGen will
then keep their shape unchanged for different face shapes. Note that
you should not do this on the face area itself since this will result
in sharp discontinuities between areas that deform and areas that don't.
- Creating a mean texture larger than the texture stats
Having a larger mean texture than the statistics is a good way to
speed up FaceGen, especially for parts that don't contain the face
and thus have very little detail in the texture stats. Doing this
is very important when using the SDK. For models which don't include
the face, just create both at the smaller size, then use a paint
program to oversample the mean (BMP) texture. For models which include
the face, you will need to create the stats at both sizes, then use
the BMP and matching FIM from the large size, and the EGT from the
- Specifying two-sided rendering in Modeller
You can inform modeller that a specific SAM should be rendered 2-sided by
adding the following line to the end of the FR3D (text) file created by
Customizer for that SAM:
- Automating integration
You can't automate the entire process, but you can automate the most annoying part;
selecting and naming the various morph targets. In a batch file, for each mesh:
- Use the fileconvert utility to convert
the model and each of its morph targets to our TRI format:
> fileconvert obj-tri myMesh
- Use the addanimatemorph utility to merge
all the morphs into one TRI file:
> addanimatemorph diff myMesh.tri myMesh_morph1.tri "Name of morph 1"
> addanimatemorph diff myMesh.tri myMesh_morph2.tri "Name of morph 2"
- Now when you load this TRI into Customizer during the Geometry Integration step,
the morphs will all just appear.
- If the morphs on different meshes have the same name, then Modeller will treat them
as the same morph.
- High spatial detail Customizer
If your neck seam encompasses a large amount of torso, or if you are using Customizer
to integrate entire bodies, then the default spatial detail of Customizer may not
be sufficient, and you may find that you are losing shape differentiation in your
faces; they are not changing enough from the base shape.
In this case, you can use the high-resolution voxel simulation version of Customizer.
Running this version requires at least Vista or 7 64-bit with 4GB RAM, takes 40hours of setup
time on a Core 2 Duo 2.66GHz, and requires about 60GB of disk space per project.
It will simply crash if it runs out of memory on lesser machines.
into your Customizer directory (usually C:\Program Files\Singular Inversions\FaceGen
Customizer 1.3) and run this file instead of Customizer.exe.
Create a new project from scratch. Never attempt to open a regular customizer
project with this program, or vice versa. Only use this version for geometry
intgration, use the regular version for texture integration.
- Using Customizer for entire bodies
You can hack Customizer to transform your meshes for entire bodies rather than
just heads. This can be used, for instance, to generate clothing or armour
for different body shapes or fantasy races in your application from a single set of artwork
that fits on a base mesh (which will be human for the purposes of this example).
To do this, you need to create a copy of the Customizer install directory (usually
C:\Program Files\Singular Inversions\FaceGen Customizer 1.3) and call it something
like 'BodyCustomizer'. You will also need to replace 'customizer.exe' with the one from
the tip above, "High spatial detail Customizer". Finally, delete any subdirectories of
'BodyCustomizer' starting with 'src_' or 'proj'.
Once you've built your base (human) body mesh, export it to OBJ format and use the
to convert it to FaceGen TRI format:
> fileconvert obj-tri basemesh
Likewise, once you've morphed this mesh into the shape of each body type and/or race
(without changing the mesh structure or vertex ordering !), convert the target shapes
the same way. Use the
to merge your targets with the base mesh, for example:
> addanimatemorph basemesh.tri fatBody.tri "make fatter" baseWithMorphs.tri
> addanimatemorph baseWithMorphs.tri elf.tri "make Elf"
You can check your work at this point by using FaceGen Modeller from the command line
and going to the morph tab:
> facegen baseWithMorphs.tri
to convert 'baseWithMorphs.tri' to an EGM file:
> tri2egm baseWithMorphs.tri baseWithoutMorphs.tri baseWithMorphs.egm
Copy 'basemesh.tri' to 'InternalMeanFace.tri' and rename 'baseWithMorphs.egm' to
'InternalMeanFace.egm' and copy these 2 files into the 'Data' subdirectory of 'BodyCustomizer',
overwriting the existing ones.
Run 'customizerBig.exe' in your 'BodyCustomizer' directory, as per the tip above. Never
attempt to open normal Customizer projects with this version, or vice versa.
For the "re-scaled/re-oriented mean face" use your "InternalMeanFace.tri".
Use the same for the "imported registered models". Do not set any neck seam vertices.
Proceed as normal to build the cache files.
Now you're ready to integrate clothing and accessory models using geometry integration.
Don't even try to integrate textures.
Integration will give you EGM files for each model you integrate. You can use the SDK to read
these files directly. Each mode of the EGM will correspond to the respective diff morph.
If you aren't an SDK user, you can convert the EGM diff morphs back to TRI using the
egm2tri utility then to OBJ
using 'fileconvert' as above.
As long as you do not change the overall size or orientation of the face in your
target races, these morph targets will combine well with the statistical morphs
for the head created using the normal version of Customizer.
9. Technical Details
- Mesh Structure
- Customizer preserves tri and quad facets, n-gons will be broken down into tris.
- Customizer preserves texture coordinates in either per-vertex or indexed
- Surfaces with different texture images must be separate objects.
- Vertex normals are discarded since the shape can change dramatically.
They are re-generated automatically for rendering.
- Vertex ordering is not altered.
- Facet ordering is not altered (except for n-gons).
- Indexed texture coordinate ordering is not altered (except for n-gons).
- Ultimately, the shape statistics are only moving vertices, so you can
just copy the new vertex positions back into any proprietary structure
you may have in your 3D modelling software (such as bone vertices).
- Texture Maps
- For any object which is part of the head, Customizer generates a 'skin'
texture map (image).
- Skin texture maps represent the coloring of a bald head with no facial
hair, as seen in the FaceGen Modeller default models.
- To add your own textures over the skin, such as hair textures, just
composite them over the exported skin texture map,
as demonstrated in the 'Texture Overlay' function in FaceGen Modeller.
- Non-skin textures for accessory models are unaffected.
- Face Shape
- Although your mesh topology is not changed, the face shape is of course
- The deformations affect the medium and larger-scale shape of the face, but
do not affect finer details, such as creases in the geometry.
- The deformations do not affect the coordinate system of your model;
it retains the same size, orientation and position in space.
- The deformations necessarily have an effect on the accessory models.
- The vertices in the neck seam remain fixed for any face shape.
- Hair, Ears, Wrinkles, Tattoos, Detail
- FaceGen skin textures are very smooth.
- Wrinkles, ear folds and skin surface texture should be added to the base texture.
- Anything that will change character-to-character, such as hair or tattoos,
should be post-composited over the final texture created by FaceGen.
- Pre-compositing can be used but will only have the resolution of the EGT.
- FaceGen detail textures should only be used to transfer individual detail
taken from photographs.