# Animation Compression Codec Reference

Reference the settings and properties of the Animation Compression Codecs.

Compression Codecs are compression algorithms and methods you can use to drive Animation Compression Settings assets, to compress animation data. You can use the following document to reference a list and description of the available Bone and Curve Compression Codecs available in Unreal Engine.

### Bone Compression Codec Reference

Here you can reference each of the bone compression codecs packaged with Unreal Engine, as well as a description of their functionality and their available properties.

#### Anim Compress Bitwise Compress Only

The Anim Compress Bitwise Compress Only codec focuses on Bitwise compression and retains all animation keys.

Here you can reference a list of the Anim Compress Bitwise Compress Only codec's properties and a description of their functionality:

Property | Description
--- | ---
Compression | Set the following properties to control how the compression codec formats the compressed animation data:

- Translation Compression Format: Set the format for bitwise compression of translation data. See the Compression Format Reference for more information.

- Rotation Compression Format: Set the format for bitwise compression of rotation data. See the Compression Format Reference for more information.

- Scale Compression Format: Set the format for bitwise compression of scale data. See the Compression Format Reference for more information.

- Description: Set a description for this codec.

#### Anim Compress Least Destructive

The Anim Compress Least Destructive codec restores any present animation compression to raw data.

Here you can reference a list of the Anim Compress Least Destructive codec's properties and a description of their functionality:

Property | Description
--- | ---
Compression | Set the following properties to control how the compression codec formats the compressed animation data:

- Translation Compression Format: Set the format for bitwise compression of translation data. See the Compression Format Reference for more information.

- Rotation Compression Format: Set the format for bitwise compression of rotation data. See the Compression Format Reference for more information.

- Scale Compression Format: Set the format for bitwise compression of scale data. See the Compression Format Reference for more information.

- Description: Set a description for this codec.

#### Anim Compress Per Track Compression

The Anim Compress Per Track Compression codec focuses compression to a per-track basis, and compresses each track individually.

Here you can reference a list of the Anim Compress Per track Compression codec's properties and a description of their functionality:

Property | Description
--- | ---
PerTrack | Set the following properties to control how the compression codec operates for each track:

- Max Zeroing Threshold: Set the maximum threshold to use when replacing a component with zero. Lower values retain more keys, but yield less compression.
- Max Pos Diff Bitwise: Set the maximum position difference to use when testing if an animation key may be removed. Lower values retain more keys, but yield less compression.
- Max Angle Diff Bitwise: Set the maximum angle difference to use when testing if an animation key may be removed. Lower values retain more keys, but yield less compression.
- Max Scale Diff Bitwise: Set the maximum scale difference to use when testing if an animation key may be removed. Lower values retain more keys, but yield less compression.
- Allowed Rotation Formats: Set which encoding format the per-track compressor is allowed to try on rotation keys. For available options, see the Compression Format Reference.
- Allowed Translation Formats: Which encoding formats the per-track compressor is allowed to try on translation keys. For available options, see the Compression Format Reference
- Allowed Scale Formats: Which encoding formats the per-track compressor is allowed to try on scale keys. For available options, see the Compression Format Reference

Resampling | Set the following properties to control how the compression codec operates when resampling animation data:

- Resample Animation: When enabled, the codec will resample the animation's framerate with the value set as the Resample Framerate property's value.
- Resampled Framerate: When the Resampling property is enabled, set the framerate to resample animations with during compression.
- Min Keys for Resampling: Set the minimum number of keys an animation should have for a resample to be performed. All animations with fewer keys than this property, will not be resampled when compressing.

AdaptiveError | Set the following properties to control how the compression codec's error threshold values animation data:

- Use Adaptive Error: When enabled, the error threshold will be adjusted based on the height value within the skeleton.
- Use Override for End Effectors: When enabled, use the Min Effector Diff property's value as the threshold for end effectors.
- Track Height Bias: Set a value that is used to determine a bias that is added to the track height before using it to calculate the adaptive error.
- Parenting Divisor: When the UseAdpative Error property is enabled, set a value to reduce the error tolerance the further up the tree that a key occurs. The following is the formula used:

`EffectiveErrorTolerance = Max(BaseErrorTolerance / p[ower( parentingDiviosor, Max(Heigh + Bias,0) * ParentingDivisiorExponent), ZeroingThreshold)`

- Parenting Divisor Exponent: When the UseAdpative Error property is enabled, set a value to exponentially reduce the error tolerance the further up the tree that a key occurs. The following is the formula used:

`EffectiveErrorTolerance = Max(BaseErrorTolerance / p[ower( parentingDiviosor, Max(Heigh + Bias,0) * ParentingDivisiorExponent), ZeroingThreshold)`

AdaptiveError2 | Set the following properties to apply additional control how the compression codec's error threshold values animation data:

- Use Additive Error 2: When enabled, the adaptive error system will determine how much error to allow for each track, based on the error introduced in end effectors due to errors in the track.
- Rotation Error Source Ratio: Set a value to determine the ratio of how much error in an end effector rotation can come from a given track's rotation error or translation error. If a value of `1` is used, all of it must come from rotation error. If a value of `0.5` is used, half of the error ratio can come from each. If a value of `0.0` is used, all of it must come from translation error.
- Translation Error Source Ratio: Set a value to determine the ratio of how much error in an end effector translation can come from a given track's rotation error or translation error. If a value of `1` is used, all of it must come from translation error. If a value of `0.5` is used, half of the error ratio can come from each. If a value of `0.0` is used, all of it must come from the rotation error.
- Scale Error Source Ratio: Set a value to determine the ratio of how much end effector scale error can come from a given track's rotation error or scale error. If a value of `1` is used, all of it must come from rotation error. If a value of `0.5` is used, half of the error ratio can come from each. If a value of `0.0` is used, all of it must come from the scale error.
- Max Error Per Track Ratio: Set a fraction value that determines how much of the total error budget can be introduced by any particular track.

LinearKeyRemoval | Set the following properties to control how the compression codec removes linear keys from the animation data:

- Max Pos Diff: Set a maximum position difference to use when testing if an animation key may be removed. Lower values retain more keys, but yield less compression.

- Max Angle Diff: Set a maximum angle difference to use when testing if an animation key may be removed. Lower values retain more keys, but yield less compression.

- Max Scale Diff: Set a maximum scale difference to use when testing if an animation key may be removed. Lower values retain more keys, but yield less compression.

- Max Effector Diff: As keys are tested for removal, we monitor the effects all the way down to the end effectors. If their position changed by more than this amount as a result of removing a key, the key will be retained. This value is used for all bones except the end-effector's parent.

- Min Effector Diff: As keys are tested for removal, we monitor the effects all the way down to the end effectors. If their position changed by less than this amount as a result of removing a key, the key will be retained. This value is used for all bones except the end-effector's parent.

- Effector Diff Socket: Set an error threshold for End Effectors with Sockets attached to them. Typically End Effectors with Sockets are more important bones, where you may want to be less aggressive with compression to retain more detail.

- Parent Key Scale: Set a scale value which increases the likelihood that a bone will retain a key if its parent also had a key at the same time position. Higher values can remove shaking artifacts from the animation, at the cost of compression.

- Retarget: When enabled, nodes will be adjusted to compensate for compression errors, as the animation is compressed. When disabled, no node adjustment will occur.

- Actually Filter Linear Keys: When enabled, the final filtering step will occur, or only the retargeting after Bitwise compression. If this property is enabled and the Retarget property is disabled, then the linear compressor will do no better than the underlying bitwise compressor, and be extremely slow.

Compression | Set the following properties to control how the compression codec formats the compressed animation data:

- Translation Compression Format: Set the format for bitwise compression of translation data. See the Compression Format Reference for more information.

- Rotation Compression Format: Set the format for bitwise compression of rotation data. See the Compression Format Reference for more information.

- Scale Compression Format: Set the format for bitwise compression of scale data. See the Compression Format Reference for more information.

- Description: Set a description for this codec.

#### Anim Compress Removes Every Second Key

Removes every second key present in the animation.

Here you can reference a list of the Anim Compress Removes Every Second Key, and a description of their function:

Property | Description
--- | ---
AnimationCompressionAlgorithm_RemoveEverySecondKey | Set the following properties to control how the compression codec removed keys:

- Min Keys: Animations with fewer than MInKeys will not lose any keys.
- Start at Second Key: When enabled, the codec will begin to remove keys from the second key. For example, keys `1`, `3`, `5` will be removed. When disabled, the codec will begin to remove keys from the first key. For example, keys `0`, `2`, `4` will be removed.

Compression | Set the following properties to control how the compression codec formats the compressed animation data:

- Translation Compression Format: Set the format for bitwise compression of translation data. See the Compression Format Reference for more information.

- Rotation Compression Format: Set the format for bitwise compression of rotation data. See the Compression Format Reference for more information.

- Scale Compression Format: Set the format for bitwise compression of scale data. See the Compression Format Reference for more information.

- Description: Set a description for this codec.

#### Anim Compress Remove Linear Keys

Removes any keys that are unchanged from surrounding keys.

Here you can reference a list of the Anim Compress Remove Linear Keys, and a description of their function:

Property | Description
--- | ---
LinearKeyRemoval | Set the following properties to control how the compression codec removes linear keys from the animation data:

- Max Pos Diff: Set a maximum position difference to use when testing if an animation key may be removed. Lower values retain more keys, but yield less compression.

- Max Angle Diff: Set a maximum angle difference to use when testing if an animation key may be removed. Lower values retain more keys, but yield less compression.

- Max Scale Diff: Set a maximum scale difference to use when testing if an animation key may be removed. Lower values retain more keys, but yield less compression.

- Max Effector Diff: As keys are tested for removal, we monitor the effects all the way down to the end effectors. If their position changed by more than this amount as a result of removing a key, the key will be retained. This value is used for all bones except the end-effector's parent.

- Min Effector Diff: As keys are tested for removal, we monitor the effects all the way down to the end effectors. If their position changed by less than this amount as a result of removing a key, the key will be retained. This value is used for all bones except the end-effector's parent.

- Effector Diff Socket: Set an error threshold for End Effectors with Sockets attached to them. Typically End Effectors with Sockets are more important bones, where you may want to be less aggressive with compression to retain more detail.

- Parent Key Scale: Set a scale value which increases the likelihood that a bone will retain a key if its parent also had a key at the same time position. Higher values can remove shaking artifacts from the animation, at the cost of compression.

- Retarget: When enabled, nodes will be adjusted to compensate for compression errors, as the animation is compressed. When disabled, no node adjustment will occur.

- Actually Filter Linear Keys: When enabled, the final filtering step will occur, or only the retargeting after Bitwise compression. If this property is enabled and the Retarget property is disabled, then the linear compressor will do no better than the underlying bitwise compressor, and be extremely slow.

Compression | Set the following properties to control how the compression codec formats the compressed animation data:

- Translation Compression Format: Set the format for bitwise compression of translation data. See the Compression Format Reference for more information.

- Rotation Compression Format: Set the format for bitwise compression of rotation data. See the Compression Format Reference for more information.

- Scale Compression Format: Set the format for bitwise compression of scale data. See the Compression Format Reference for more information.

- Description: Set a description for this codec.

#### Anim Compress Removes Trivial Keys

Removes any keys where position and orientation of Assets are unchanged from surrounding keys.

Here you can reference a list of the Anim Compress Removes Trivial Keys, and a description of their function:

Property | Description
--- | ---
AniamtionCompressionAlgorithm_RemoveTrivialKeys | Set the following properties to control how the compression codec removes trivial keys from the animation data:

- Max Pos Diff: Set a maximum position difference to use when testing if an animation key may be removed. Lower values retain more keys, but yield less compression.
- Max Angle Diff: Set a maximum angle difference to use when testing if an animation key may be removed. Lower values retain more keys, but yield less compression.
- Max Scale Diff: Set a maximum scale difference to use when testing if an animation key may be removed. Lower values retain more keys, but yield less compression.

Compression | Set the following properties to control how the compression codec formats the compressed animation data:

- Translation Compression Format: Set the format for bitwise compression of translation data. See the Compression Format Reference for more information.

- Rotation Compression Format: Set the format for bitwise compression of rotation data. See the Compression Format Reference for more information.

- Scale Compression Format: Set the format for bitwise compression of scale data. See the Compression Format Reference for more information.

- Description: Set a description for this codec.

### Bitwise Compression Format Reference

Here you can reference a list of the available bitwise compression data formats, and a description of their function:

Format | Description
--- | ---
ACF None | This formant retains all 32 floats, performing no compression. This format essentially retains raw animation data.
ACF Float 96No W | This format only compresses rotation quaternion X, Y, and Z rotation data, as a float32 and the W component is dropped and reconstructed during decompression. This format retains near raw animation data with minimal precision loss.
ACF Fixed 48No W | This format only compresses rotation quaternion X, Y, and Z rotation data, and is stored on 16 bits each, as quantized data. The quaternion (W) component is also dropped.
ACF Interval Fixed 32 No W | This format stores the compressed values on 11-11-10 bits per component with range reduction. For rotations, the quaternion (W) component is dropped.
ACF Fixed 32No W | This format stores the compressed values on 11-11-10 bits per component. For rotations, the quaternion (W) component is dropped.
ACF Float 32No W | This format stores compressed values using a custom float format with 6 or 7 bits for the mantissa and 3 bits for the exponent. For rotations, the quaternion (W) component is dropped.
ACF Identity | This format always returns the quaternion (W) to the rotation track.

### Curve Compression Codec Reference

Here you can reference each of the curve compression codecs packaged with Unreal Engine, as well as a description of their functionality and their available properties.

#### Compress Rich Curves

This codec compresses rich animation curves when compressing Animation Sequences. Here you can reference the Compress Rich Curve codec's properties and a description of their function:

Property | Description
--- | ---
Max Curve Error | Set the maximum error allowed when compressing the rich animation curves.
Use Anim Sequence Sample Rate | When enabled, the animation will be compressed using the Animation Sequence sample rate. When disabled, the animation will be sampled using the Error Sample Rate property's value.
Error Sample Rate | When the Use Anim Sequence Sample Rate property is disabled, set the value that will be used for the animation's sample rate, when compressing.

#### Uniform Indexable

This codec uniformly indexes animation curves when compressing Animation Sequences.

#### Uniformly Sampled

This codec uniformly samples animation curves when compressing Animation Sequences. Here you can reference the Uniformly Sampled codec's properties and a description of their function:

Property | Description
--- | ---
Use Anim Sequence Sample Rate | When enabled, the animation will be compressed using the Animation Sequence sample rate. When disabled, the animation will be sampled using the Error Sample Rate property's value.
Error Sample Rate | When the Use Anim Sequence Sample Rate property is disabled, set the value that will be used for the animation's sample rate, when compressing.

- animation
- optimization

Ask questions and help your peers Developer Forums

Write your own tutorials or read those from others Learning Library

On this page

- Bone Compression Codec Reference
- Anim Compress Bitwise Compress Only
- Anim Compress Least Destructive
- Anim Compress Per Track Compression
- Anim Compress Removes Every Second Key
- Anim Compress Remove Linear Keys
- Anim Compress Removes Trivial Keys
- Bitwise Compression Format Reference
- Curve Compression Codec Reference
- Compress Rich Curves
- Uniform Indexable
- Uniformly Sampled

## Privacy Preference Center

### Your Privacy

When you visit any website, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and change our default settings. However, blocking some types of cookies may impact your experience of the site and the services we are able to offer. More information

- ### Strictly Necessary Cookies

  Always Active
  Strictly Necessary Cookies

  These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the site will not then work. These cookies do not store any personally identifiable information.

  Cookies Details‎

- ### Performance Cookies

  Performance Cookies

  These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us to know which pages are the most and least popular and see how visitors move around the site. If you do not allow these cookies we will not know when you have visited our site, and will not be able to monitor its performance.

  Cookies Details‎

- ### Functional Cookies

  Functional Cookies

  These cookies enable the website to provide enhanced functionality and personalization. They may be set by us or by third party providers whose services we have added to our pages. If you do not allow these cookies then some or all of these services may not function properly.

  Cookies Details‎

Consent Leg.Interest
Select All Vendors
Select All Vendors
Select All Hosts

Select All

- REPLACE-WITH-DYANMIC-HOST-ID

  ### 33Across

  View Third Party Cookies
  - Name
    cookie name

- REPLACE-WITH-DYANMIC-VENDOR-ID

  ### 33Across

  3 Purposes

  View Privacy Notice

  ### 33Across

  3 Purposes

  View Privacy Notice
  REPLACE-WITH-DYANMIC-VENDOR-ID

  Consent Purposes

  Location Based Ads

  Consent Allowed

  Legitimate Interest Purposes

  Personalize

  Require Opt-Out

  Special Purposes

  Location Based Ads

  Features

  Location Based Ads

  Special Features

  Location Based Ads

Clear Filters

Information storage and access

By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and personalize content.Privacy Policy