Skip to content

Animation Retargeting Woes #15612

Open
Open
@emberlightstudios

Description

@emberlightstudios

What problem does this solve or what need does it fill?

Animation retargeting is useful for sharing animation clips among various models. Otherwise each model may hold duplicate animations, e.g. a walk cycle for every character in a game is pretty redundant and takes up extra space if it could be shared among all of them. In my case I am constructing the mesh and skeleton in code, so I cannot import the model with animations. Retargeting is the only way to get them animated.

What solution would you like?

I'm having a couple problems trying to get animation retargeting working. Please see pictures for reference.

  1. The animation clips appear to have position tracks even after I removed them all in blender. I believe this is the reason the baby model for example is stretched out to the same height as all the others. Or maybe it's just putting all the bones into the animation clip's rest pose rather than the scene model's rest pose before rotating them? I don't know. The joint gizmos look correct when not animated. It would be nice to be able to have a clip which only has rotation tracks and it would just work with all of my humanoid models. In Godot, there is also a property on their skeleton3d node for adjusting position tracks called motion_scale, which scales the position deltas to help with position track issues during retargeting.

  2. Bone twist angles seem all wrong. I don't know how godot handles this but I know it was not an issue there. This may also be due to the difference in rest pose between the procedurally constructed skeleton and the animation file glb skeleton.

  3. Since joints have to be assigned UUIDs to match up with the animation clip curves from the file, this limits your ability to share animations from multiple files unless all of them use the same skeleton with the same paths, and therefore the same UUIDs. I think we need an intermediary abstract, generic humanoid skeleton to remap imported clips onto, which we can then map our other models onto also. More control over the animation clip import process would be useful.

What alternative(s) have you considered?

None

Additional context

Unanimated: https://i.imghippo.com/files/LsTT21727931519.png
Animatied: https://i.imghippo.com/files/VZ09i1727931405.png

Working on bringing makehuman character creator into bevy

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-AnimationMake things move and change over timeC-FeatureA new feature, making something new possibleD-ModestA "normal" level of difficulty; suitable for simple features or challenging fixesS-Ready-For-ImplementationThis issue is ready for an implementation PR. Go for it!

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions