Skip to content

Implement Skeleton re-targeting node #3379

@reduz

Description

@reduz

Describe the project you are working on

Godot

Describe the problem or limitation you are having in your project

The only way to re-use animations is use compatible skeletons with similarly named bones and proportions. This can be significantly limiting for sharing animations or using animations from common sources such as Mixamo.

While in-engine re-targeting is generally not a technique advised for production (as it makes the amount of bones you can use to animate rather limiting, thus makes rigging looks worse, for reference most studios do this within the 3D DCC together with IK), there are still cases where it makes a lot of sense, such as body tracking, prototyping, or simply Indie development where creating custom animations for models can be expensive.

Note, this is an actual implementation proposal based on #2619, so it supersedes it.

Describe the feature / enhancement and how it helps to overcome the problem or limitation

The proposal here is to implement re-targeting as a special node. Mostly to make Skeleton less bloated and to reduce the need to make children scenes editable in order to configure them.

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

A new SkeletonRetarget node will be provided by the engine. This node will have the following properties:

  • source : NodePath
  • target : NodePath
  • retargeter : Retargeter (resource)

Retargeter is a resource that does the retargeting logic. It is a virtual abstract class that does no logic, but it can be inherited to implement a retargeter. Godot will provide a default implementation: HumanoidRetargeter which will come with a default humanoid skeleton.

Editing HumanoidRetargeter will be similar to Unity/Maya/etc., except that you must set the source bone and destination bone.

Given the Retargeter is a resource, it will be possible to save it to disk to use it in other scenes.

Eventually, it should be possible to provide other more precise retargeters with more complex models via GDExtension if desired.

If this enhancement will not be used often, can it be worked around with a few lines of script?

Animation is core

Is there a reason why this should be core and not an add-on in the asset library?

Animation is core

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions