User Manual

Mesh Creation Guidelines
Seleting a Project
Head Model Preparation
Integration Setup
Model Integration
Tips & Tricks
Technical Details

Also see the FaceGen FAQ.

1. Requirements

  • 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.

2. Overview

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 components should 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:

  1. They all fit to the same mean face.
  2. 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 work later.

3. Mesh Creation Guidelines

In the steps outlined later in this document, you should create your meshes according to the following guidelines:

All Meshes:

  • 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.

Head Meshes

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 closed mouth.
  • 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 set name.
  • 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.

Manual registration

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 closely 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 mean face.

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 below.

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 them.

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 model set.

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 changes significantly.

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.6 and later:
    • Create a subdirectory 'MyName' in your model set directory: Documents/FaceGen/Model Sets/.
    • Create a subdirectory within that 'MyName' giving: Documents/FaceGen/Model Setes/MyName/MyName/
    • Copy the 'csamYYY' contents into this directory
    • For each '.fr3d' file, create a similarly named '.txt' file containg the name of the part as you want it to appear in Modeller.
  • Modeller 3.5:
    • Copy the 'csamYYY' directory (including contents) into your FaceGen Model Set directory:
    • XP: C:\Documents and Settings\USERNAME\Application Data\FaceGen\Modeller3\ModelSets\
    • Vista,7: C:\Users\USERNAME\appData\Roaming\FaceGen\Modeller3\ModelSets\

Restart FaceGen Modeller

Geometry integration

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 already defined.

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 again.
  • 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.

Texture integration

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 hair texture.

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 1024x1024 texture.
    • 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 integration).

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 orientation.

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 fileconvert utility.

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:

    1. TRI. This is the base mesh, which includes UVs and information about morph targets but not the FaceGen shape changes.
    2. BMP. This is the base texture.
    3. 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.
    4. EGT. This is the statistical texture information, which is used to modify the base texture image. Without this file, the texture image is fixed.
    5. 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:

    1. Integrate each model separately, giving 3 sets of statistics files; one for each eye and one for the head.
    2. Create a composite mesh by merging the eyes and head meshes. Integrate this composite to get another set of files.
    3. Copy just the texture statistics files of the composite (the BMP, EGT and FIM files) over those for each of the separately integrated objects.
    4. 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.
    5. 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:

    1. 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).
    2. 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).
    3. Integrate this 'fused' model with Customizer, but only integrate the geometry.
    4. 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.
    5. 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 files).

  • 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 smaller size.

  • 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:

    1. Use the fileconvert utility to convert the model and each of its morph targets to our TRI format:

      > fileconvert obj-tri myMesh

    2. 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"

      > [...etc...]

    3. Now when you load this TRI into Customizer during the Geometry Integration step, the morphs will all just appear.
    4. If the morphs on different meshes have the same name, then Modeller will treat them as the same morph.

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 per-facet structures.
    • 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 altered.
    • 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.

© Singular Inversions Inc.