Quick answer: Every animation track stores a NodePath relative to the AnimationPlayer's root_node, such as Skeleton3D:Hips. Renaming or moving nodes, changing the root node, or playing the library on a model whose skeleton has a different name or path breaks those tracks. Keep names consistent at import (use a BoneMap and a fixed skeleton name), and save animations to files so they survive reimports.

An animation plays fine on the imported model, but after reorganising the scene or sharing the AnimationLibrary with a second character, the tracks turn red in the Animation panel and nothing moves.

How tracks address nodes

Open an imported animation and look at the track names: Armature/Skeleton3D:Hips, Body:blend_shapes/Smile. The part before the colon is a path from the AnimationPlayer's Root Node (by default its parent). The part after is a property or bone. If that path does not exist at playback time, the track is invalid and silently does nothing.

Cause 1: you renamed or reparented nodes

Moving the Skeleton3D under another node or renaming Armature breaks every track. Either keep the imported hierarchy as it is, or update the paths: in the Animation panel, each track's path can be edited, and for many tracks it is faster to fix the hierarchy instead.

Cause 2: the AnimationPlayer's root changed

Moving the AnimationPlayer, or changing its root_node, shifts the starting point of every path. Put it back where it was, or set root_node to the node the paths were relative to.

Cause 3: sharing a library between different models

An AnimationLibrary from model A only works on model B if B has the same node path and bone names. Different exporters produce Armature/Skeleton3D on one and RootNode/Skeleton3D on another, and bone names like mixamorig:Hips vs Hips. Godot's retargeting solves this at import:

  1. In Advanced Import Settings, select the Skeleton3D.
  2. Create a BoneMap with the SkeletonProfileHumanoid profile and map the bones.
  3. Under Retarget, enable renaming bones and Unique Node > Make Unique with a fixed skeleton name such as GeneralSkeleton.

Do the same for every character, and their animations share the same track paths.

Cause 4: reimport overwrites your edits

Changes you make to an animation embedded in an imported scene are lost on the next reimport. In Advanced Import Settings, select the animation and enable Save to File to keep it as a separate .res or .tres, then edit that file. Keep its name stable so references survive.

Cause 5: AnimationTree and libraries

AnimationTree uses the AnimationPlayer's libraries. Animations in a library other than the default one are referenced as library_name/animation_name; a state machine pointing at run will not find locomotion/run.

Checking a broken track

Select the AnimationPlayer, open the Animation panel and look for tracks shown with a warning. Hover the track to see the exact path Godot tried, then compare it with the scene tree in the Remote view while the game runs.

Related fixes