Skip to content

fix: treat voxels pairs as composite in the incremental solver-contact graph - #1030

Open
shtse8 wants to merge 2 commits into
dimforge:masterfrom
SylphxAI:fix/voxels-composite-pair-master
Open

shtse8 wants to merge 2 commits into
dimforge:masterfrom
SylphxAI:fix/voxels-composite-pair-master

Conversation

@shtse8

@shtse8 shtse8 commented Sep 30, 2026

Copy link
Copy Markdown

Fixes #1029.

Composite pairs force a full solver-contact graph rebuild because their manifold ordinals are unstable. Rapier detects them only through a persistent contact workspace, but parry's voxels-vs-ball contact path emits one manifold per touched cell without allocating one. So a ball rolling over a Voxels collider left the incremental graph stale, and the debug validation in solver_graph.rs asserted.

This PR also treats a pair as composite when either collider is a Voxels shape. That is a one-condition change in process_pair.

It adds crates/rapier3d/tests/voxels_ball_rolling.rs, a ball rolling across a 16x16 voxel floor for 150 steps. It panics in debug builds without the change and passes with it.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Debug assertion in the incremental solver-contact graph when a ball rolls on a Voxels collider

1 participant