Compression Threshold

I've been trying to find any details about the 'Compression Threshold' value that can be edited via the Export FBX Wizard, but haven't found documentation here or anywhere else online. My assumption is that this value should affect how precisely the exported FaceFX solution will be (IE. how closely the keys that get generated are likely to match) to the audio source file. Based on that assumption, I've tried several values ranging from 0.001 to 1000.0 and have seen no change in the number of keys getting exported. My main interest is in finding ways to reduce the size of exported FBX files, especially since in this particular case I don't need ultra high fidelity.

Using FaceFX 2107.1

The compression threshold (or -keyprecision flag value from the fbx command) sets the Translation, Rotation, Scaling and Default thresholds in the FbxAnimCurveFilterConstantKeyReducer. So your assumption is correct, it is used to reduce the number of keys in the FBX file.

Set this to 0 to prevent the export from doing any key compression.

I don't know why you aren't seeing a reduction of keys. In FaceFX 2018.1, using the Roger sample content with taming_the_bicycle sample animation, outputting a binary FBX with 0 threshold (no compression) yields a 9.037 MB file. Using default compression threshold of 0.001, this is reduced to 8.131 MB.

By far, the best thing you can do to minimize FBX export size is create a custom FBX file to use as the -infile argument of the command (hit the back button from the wizard to select a different -infile from the wizard). Ideally you want to have a file that doesn't have mesh data in it to reduce the size, though this can be tricky with morph content. For bones based content, you only need the skeleton. You can also use the same file as the input and output file to add multiple animation takes to the same FBX file so you are only paying the price of the FBX overhead once.

Thank you. This is exactly the kind of explanation I was looking for. Hearing how different values affect your file size helps me know what to look for. Now I can report that setting the compression threshold to 0 results in a file that is 1,566 KB, every other setting from 0.001 to 1000.0 results in 1,336 KB. I don't know whether the limited control I get from this setting is because I'm using FaceFX 2017.1 or if it's just the nature of the feature.

Good to know about the -infile option. My endgame is to pull only point (keyframe) data from the FaceFX solution, so I'm not too worried about the bloat that comes from the FBX format, since we'll be generating our own splines from the point data that comes from FaceFX. If I can find a way to reduce the "precision" from FaceFX, it will mean I can reduce the number of points without a <shudder> manual solution.