bevyengine / bevyengine/bevy

Mesh picking doesn't support skinned meshes

Open
#23,378 5 comments 0 reactions 0 assignees View on GitHub
A-Animation A-Picking C-Bug D-Modest S-Needs-Review X-Uncontroversial
Dominant language
Rust
Stars
48.2k
Forks
4.8k
Avg merge
3d 16h
Merged PRs (30d)
171

Description

## Bevy version and features

`0.18.1`

## What you did

Try to use mesh picking on a skinned mesh (animated character).

## What went wrong

The results of picking don't align with the mesh as seen by the camera.

You can see the result of picking using the mesh picking debug tool below.

https://github.com/user-attachments/assets/8e550c74-c36c-4fa1-bb33-386b5ae82ff9

## Additional information

The mesh skinning issue was suggested by Greeble [on discord](https://discord.com/channels/691052431525675048/885021580353237032/1482315753125445692).

> `Greeble` — 14/03/2026, 20:53
> Is it just the character that's wrong? And the character is a skinned mesh? Mesh picking doesn't account for skinning, so it wrongly uses the bind pose of the mesh.
>
> `Greeble` — 14/03/2026, 21:01
> In case it's useful, I have some [example code](https://github.com/greeble-dev/bevy_mod_skinned_aabb/blob/9e4556114df9ab528c2c9ebc1358dc20266d655a/dev/dev.rs#L696) for creating a Mesh from the skinned pose of a mesh. You might be able to use that to do manual picking, or plumb it into the regular picking.

Contributor guide

Open the contributing guide

Research direction

Start with Bevy's regular mesh-picking implementation and the mesh-picking debug tool, then compare their geometry handling with the skinned-pose example in dev/dev.rs around line 696. Done means picking results align with the animated skinned mesh rather than its bind pose.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
computer-graphics, game-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.