August 27, 2026 So you just downloaded an animated 3D character .glb file on a free assets website. You have a basic Bevy application running. Now you want to spawn your character in your Bevy app. Easy enough, there's probably a function for that. You look up the basic Animated Mesh example on Bevy's website... and it quickly becomes apparent that things are not as simple as you've hoped. There's a lot of setting things up, animation-related types whose exact purpose is not obvious... You might be able to tweak the examples to fit your needs reasonably fast, but actually forming a mental model of how animation works in Bevy, based on the examples, is going to take some serious pondering. This post is what I wish I had when trying to understand animation in Bevy a couple weeks ago. I start by building up, step by step, enough of a mental model to deal with basic animation in Bevy. Then I walk you through the official example, explaining how it relates to that mental model, and also holding your hand a bit when encountering methods you might not have encountered yet. If you are comfortable with the basics of Bevy’s ECS, you’re in this post’s target audience :) Let’s forget about Bevy and ECS for a second, and think (very abstractly) about what it takes to get an animated 3D model to move. You need two ingredients: So at first, the way you might expect to play an animation is something like that: my_model.play_animation(my_animation); Here's what our mental model looks like so far: Now this is actually somewhat close to the way an actual Bevy function works, namely, the play method from the AnimationPlayer type… or at least it would be, if its self actually referred to a 3D model, and its animation argument actually referred to an animation. Right now, though, it’s not clear that they do. But let’s look in more detail into the way our two ingredients are represented in Bevy, and maybe we can reconcile our intuition with the way the play function works. Say you spawn...
Animation in Bevy: The Big Picture
Grégoire Locqueville
8 min readCode

