Navigation
API > API/Plugins > API/Plugins/ACLPlugin
[Bind pose stripping] Bind pose stripping allows ACL to remove the redundant bind pose often present in the compressed data of joints that aren't animated. For this to work properly, we must have access to the bind pose during decompression which is not accessible in UE 5.0 and earlier.
When stripping is disabled, here is what happens: Non-additive anim sequence
- During compression, sub-tracks have their default value set to the identity. Sub-tracks equal to the identity will be stripped (uncommon).
- When we decompress a whole pose, sub-tracks equal to the identity are processed and the identity is written out.
- When we decompress a single bone, sub-tracks equal to the identity are processed and the identity is written out.
Additive anim sequence
- During compression, sub-tracks have their default value set to the additive identity. Sub-tracks equal to the identity will be stripped (common).
- When we decompress a whole pose, sub-tracks equal to the additive identity are skipped entirely. This is possible because the output pose is initialized with the additive identity before decompression.
- When we decompress a single bone, sub-tracks equal to the identity are processed and the identity is written out.
When stripping is enabled, here is what happens: Non-additive anim sequence
- During compression, sub-tracks have their default value set to the bind pose. Sub-tracks equal to the bind pose will be stripped (common).
- When we decompress a whole pose, sub-tracks equal to the bind pose are skipped entirely. This is possible because the output pose is initialized with the bind pose before decompression.
- When we decompress a single bone, sub-tracks equal to the bind pose are processed and the bind pose is written out.
Additive anim sequence
- Additive sequences do not have a traditional bind pose, instead their default pose is the additive identity. As such, ACL always does stripping by default for this scenario. The behavior is identical as above. [Keyframe stripping]
ACL can strip keyframes that contribute the least amount of error. This is controlled through two different variables which can be used on their own or together:
- proportion: the minimum amount (percentage) of keyframes to strip
- threshold: the threshold below which keyframes are stripped
In order to support this per platform, the plugin requires the target platform to be exposed in a few codec API functions. Support for this has been added in UE 5.1. The ACL allocator implementation simply forwards to the default heap allocator.
| Name | ACLAllocator |
| Type | class |
| Header File | /Engine/Plugins/Animation/ACLPlugin/Source/ACLPlugin/Public/ACLImpl.h |
| Include Path | #include "ACLImpl.h" |
Syntax
class ACLAllocator : public acl::iallocator
Inheritance Hierarchy
- acl::iallocator → ACLAllocator
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual void * allocate
(
size_t size, |
ACLImpl.h | ||
virtual void deallocate
(
void* ptr, |
ACLImpl.h |