feat: migrate to glam whenever relevant + migrate testbed to kiss3d instead of bevy + release v0.32.0 #909
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
More insights on the rational behind this change is provided in https://dimforge.com/blog/2026/01/09/the-year-2025-in-dimforge (tl.dr: it’s to prepare for our upcoming GPU computing work).
v0.31.0 (09 Jan. 2026)
Modified
Isometry<Real>→Pose(glamxPose2/3)Point<Real>→Vectorfor world-space positions (parry no longer distinguishes Point from Vector)Rotation<Real>→Rotation(glamxRot2orQuat)Translation<Real>→ removed, usePose::from_translation()SimdVector<N>,SimdPose<N>,DVector,DMatrix).RigidBody::linvel()returnsVectorinstead of&Vector<Real>RigidBody::angvel()returnsAngVectorinstead of&Vector<Real>(3D) orReal(2D)RigidBody::center_of_mass()returnsVectorinstead of&Point<Real>RigidBody::local_center_of_mass()returnsVectorinstead of&Point<Real>Collider::translation()returnsVectorinstead of&Vector<Real>Collider::rotation()returnsRotationinstead of&Rotation<Real>DebugRenderBackend::draw_linesignature changed: takesVectorinstead ofPoint<Real>for line endpoints.DebugRenderBackend::draw_polylineanddraw_line_stripnow take&PoseandVectorinstead of&Isometry<Real>and&Vector<Real>.benchmarks2dandbenchmarks3dcrates (merged withexamples2dandexamples3d).Migration guide
If your codebase currently relies on
nalgebra, note thatnalgebraandglamxprovide type conversion. Enable thecorresponding features:
nalgebra = { version = "0.34", features = [ "convert-glam030" ] }glamx = { version = "0.1", features = ["nalgebra"] }then you can convert between
glamandnalgebratypes using.into().Isometry<Real>withPose, andPoint<Real>withVectorfor positions.Isometry::identity()→Pose::IDENTITYIsometry::translation(x, y, z)→Pose::from_translation(Vector::new(x, y, z))Isometry::rotation(axis_angle)→Pose::from_rotation(Rotation::from_scaled_axis(axis_angle))isometry.translation.vector→pose.translationisometry.rotation.scaled_axis()→pose.rotation.to_scaled_axis()&or.clone()when usinglinvel(),angvel(),center_of_mass(),translation(),rotation()since they now return by value.DebugRenderBackendimplementations to useVectorinstead ofPoint<Real>.glamxcrate is re-exported asrapier::glamxfor direct glam type access if needed.