|
Motive Animation System
An open source project by
FPL.
|
Motive comes with an animation pipeline that converts FBX files to RigAnims. The RigAnims are stored as FlatBuffer files with the .fplanim extension.
Usage: anim_pipeline [-v|-d|-i] [-o OUTPUT_FILE]
[-s SCALE_TOLERANCE] [-r ROTATE_TOLERANCE]
[-t TRANSLATE_TOLERANCE] [-a DERIVATIVE_TOLERANCE]
[--repeat|--norepeat] FBX_FILE
Pipeline to convert FBX animations into FlatBuffer animations.
Outputs a .fplanim file with the same base name as FBX_FILE.
Options:
-v, --verbose output all informative messages
-d, --details output important informative messages
-i, --info output more than details, less than verbose.
-o, --out OUTPUT_FILE file to write .fplanim file to;
can be an absolute or relative path;
when unspecified, uses base FBX name
+ .fplanim
-s, --scale SCALE_TOLERANCE
max deviation of output scale curves
from input scale curves, unitless
-r, --rotate ROTATE_TOLERANCE
max deviation of output rotate curves
from intput rotate curves, in degrees
-t, --translate TRANSLATE_TOLERANCE
max deviation of output translate curves
from input translate curves, in scene's
units of distance
-a, --angle DERIVATIVE_TOLERANCE
max deviation of curve derivatives,
considered as an angle in the x/y plane
(e.g. derivative 1 ==> 45 degrees),
in degrees.
--repeat, --norepeat mark the animation as repeating or not
repeating. A repeating animation cycles
over and over. If neither option is
specified, the animation is marked as
repeating when it starts and ends
with the same pose and derivatives.
The anim_pipeline traverses the FBX's scene graph in depth-first order. A node is output if it is the ancestor of a mesh node–that is, if it has vertex data somewhere under it. Every node that is output is assigned a bone. Each bone is animated with its own MatrixAnim. Together, the series of MatrixAnims creates a RigAnim.
Each MatrixAnim is composed of the minimum set of matrix operations that will generate the animation. For example, if a node is animated by rotating about its x-axis, then the MatrixAnim will contain a single operation for kRotateAboutX. This creates a much smaller data set than outputting all scale, rotation, and translation values for every bone.
The bone heirarchy output by anim_pipeline matches the bone hierarchy output by anim_pipeline with the -h (hierarchy).
Pre-built binaries for the anim_pipeline are distributed in the bin directory.
To build the anim_pipeline from source, please see building anim_pipeline.