Appendix A: NVIDIA 3DMM File Format#

The NVIDIA 3DMM file format is based on encapsulated objects that are scoped by a FOURCC tag and a 32-bit size.

The header must appear first in the file. The objects and their subobjects can appear in any order. In this guide, they are listed in the default order.

Model Object#

The model object contains a shape component and an optional color component. Both objects contain the following information:

  • A mean shape

  • A set of shape modes

  • The eigenvalues for the modes

  • A triangle list

** MODL**

size

SHAP

size

MEAN

size

mean shape

BSIS

size

number of modes

shape modes

EIVL

size

shape eigenvalues

TRNG

size

triangle list

COLR

size

MEAN

size

mean color

BSIS

size

number of modes

color modes

EIVL

size

color eigenvalues

TRNG

size

triangle list

IBUG Mappings Object#

The IBUG mappings object contains the following information:

  • Landmarks

  • Right contour

  • Left contour

IBUG

size

LMRK

size

landmarks

RCTR

size

right contour

LCTR

size

left contour

Blend Shapes Object#

The blend shapes object contains a set of blend shapes, and each blend shape has a name.

BLND

size

numShapes

NAME

size

name string

SHAP

size

blend shape

NAME

size

name string

SHAP

size

blend shape

Model Contours Object#

The model contours object contains a right contour and a left contour.

MCTR

size

RCTR

size

right model contour

LCTR

size

left model contour

Topology Object#

The topology contains a list of pairs of the adjacent faces and vertices.

TOPO

size

AJFC

size

adjacent faces

AJVX

size

adjacent vertices

NVIDIA Landmarks Object#

NVIDIA expands the number of landmarks from 68 to 126, including more detailed contours on the left and right.

NVLM

size

LMRK

size

Landmarks

RCTR

size

Right contour

LCTR

size

Left contour

Partition Object#

This partitions the mesh into coherent submeshes of the same material, used for rendering.

PRTS

size

PART

size

Partition index

Face index

Number of faces

Vertex index

Number of vertices

Smoothing group

NAME

size

Partition name string

MTRL

size

Material name string

PART

(any number of additional partitions)

Table of Contents Object#

The optional table of contents object contains a list of tagged objects and their offsets. This object can be used to randomly access objects. The file is usually read in sequential order.

TOC0

size

record size

tag

offset

tag

offset