A mapping file contains information about how the system variables (sysvars)
drive the skeleton.  Mapping files typically have a .dof extension.

A partial example is given below:

  Bio Graphic Mapping File
  v1.0
  64 # Number of variables
  91 # Number of bodies
  1 # Body ID
  1 2 3 5 6 4  # Transform order
  1 # x translation sysvar ID
  2 # y translation
  3 # z translation
  4 # x rotation
  5 # y rotation
  6 # z rotation
  2 # Body ID
  1 2 3 5 6 4  # Transform order
  7 # x translation
  .
  .
  .

Each sysvar is given a unique ID which is a positive integer.

The "Number of variables" value at the top of the file actually specifies the
maximum sysvar ID.  Not all sysvar IDs need to be used.

The "Number of bodies" value at the top of the file specifies how many
body sections are given in the mapping. All bodies do not need to be
specified and all body IDs do not need to be used.  Any body that is not
explicitly mapped has no freedom relative to its parent.

The units for rotations are radians.  There are no required units for
translations, but they are typically inches.

In place of a sysvar ID, a 0 can be used to indicate the particular
transform is not mapped, and the transform value is always zero.

In place of a sysvar ID, a linear combination can be specified. This
allows multiple sysvars to drive a transform in various proportions.
A Linear combination looks like this:

  -3 1.2 4 0.75 7 0.25

The meanings in this example are given below:

  -3   # number of terms (negated)
  1.2  # constant term
  4    # first sysvar ID
  0.75 # first sysvarl coefficient
  7    # second sysvar ID
  0.25 # second sysvar coefficient

If we call sysvar 4 v4 and sysvar 5 v5, then this is equivalent to saying that
the transform value is

  0.25*v7 + 0.75*v4 + 1.2

Additional tags can appear at the end of the file.  Examples are given below:

  INCLUDE {
    FILE_NAME: $GIANT_DATA_DIR/dof/test1.dof
    BODY_ID_OFFSET: 100
    SYSTEM_VARIABLE_ID_OFFSET: 64
  }

  MATERIAL_TEXTURE_INDEX_MAPS {
    2 3 # material ID and sysvar ID
    7 4 # material ID and sysvar ID
  }

  BLEND_EFFECT_MAP {
    SLIDER_GROUP: group1
    SLIDERS {
      slider1 1  # slider name and sysvar ID
      slider2 2
      slider3 3
    }
  }
