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.
Header#
The header contains the following information:
The name NFAC
size=8
endian=0xe4 (little endian)
sizeBits=32
indexBits=16
The offset of the table of contents
NFAC |
||||
|---|---|---|---|---|
size |
||||
endian |
sizeBits |
indexBits |
zero |
|
TOC loc |
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 |
||
… |
||