Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for mesh space animations #398

Open
nfrechette opened this issue Feb 24, 2022 · 0 comments
Open

Add support for mesh space animations #398

nfrechette opened this issue Feb 24, 2022 · 0 comments
Milestone

Comments

@nfrechette
Copy link
Owner

Sometimes there is a need to blend and store animations in mesh space.
This is currently problematic because ACL expects a local space clip. If mesh space is provided instead, things will work but more precision will be retained than is otherwise necessary because the error won't be measured in the right place.

Support for this can be added in one of two ways.

  • In the compression settings, we can add an enum for local/mesh space. Then all joints are treated the same.
  • In the track description, the enum can be added.

Mesh space joints don't need to be computed relative to their parent which will skip some computation during compression. This can currently be achieved by forcing the parent index to the invalid index, making all mesh space joints as root joints.

One thing to consider is whether to store mesh space animations as local space for compression purposes. Mesh space animations compress poorly because if a joint is animated, all its children will also move in mesh space. If we store things in local space, the savings will be significant. However, during decompression, we will need to be able to reconstruct the mesh space pose which has an overhead, and it adds complexity. To be able to do so, we'll need the hierarchy information to find the parent joint. While this can be stored per clip, it will be redundant and cause bloat. The track writer will need to provide that information to reconstruct the desired pose or it will have to be left to the host runtime to reconstruct the mesh space pose from local space following decompression. If this is the case, ACL doesn't need to do anything as the mesh<->local transformations can be handled by the host runtime entirely.

@nfrechette nfrechette added this to the Backlog milestone Feb 24, 2022
@nfrechette nfrechette modified the milestones: Backlog, v3.0 Dec 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant