Skip to content

fix(deps): update dependency @dimforge/rapier3d-compat to ^0.19.0 - #497

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/dimforge-rapier3d-compat-0.x
Open

fix(deps): update dependency @dimforge/rapier3d-compat to ^0.19.0#497
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/dimforge-rapier3d-compat-0.x

Conversation

@renovate

@renovate renovate Bot commented Nov 12, 2025

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
@dimforge/rapier3d-compat (source) ^0.11.2^0.19.0 age confidence

Release Notes

dimforge/rapier (@​dimforge/rapier3d-compat)

v0.19.3

Compare Source

v0.19.2

Compare Source

v0.19.1

Compare Source

v0.19.0

Compare Source

Fix
  • Fix crash when simulating a spring joint between two dynamic bodies.
  • Fix kinematic bodies not being affected by gravity after being switched back to dynamic.
  • Fix regression on contact force reporting from contact force events.
  • Fix kinematic character controller getting stuck against vertical walls.
  • Fix joint limits/motors occasionally not being applied properly when one of the attached
    rigid-bodies is fixed.
  • Fix an issue where contacts would be completely ignored between two convex shapes.
Added

Many stability improvements were added as part of this release. To see illustrations of some of these
changes, see #​625.

  • Add RigidBody::predict_position_using_velocity to predict the next position of the rigid-body
    based only on its current velocity.
  • Add Collider::copy_from to copy most collider attributes to an existing collider.
  • Add RigidBody::copy_from to copy most rigid-body attributes to an existing rigid-body.
  • Add the BroadPhase trait and expect an implementor of this trait as input to PhysicsPipeline::step.
  • Implement a 2D block-solver as well as warmstarting. Significantly improves stacking capabilities. Generally reduces
    the "pop" effect that can happen due to penetration corrections.
  • Add RigidBodyBuilder::soft_ccd_prediction and RigidBody::set_soft_ccd_prediction to enable soft-ccd: a form of
    CCD based on predictive contacts. This is helpful for objects moving moderately fast. This form of CCD is generally
    cheaper than the normal (time-dropping) CCD implemented so far. It is possible to combine both soft-ccd and
    time-dropping ccd.
  • Add a ColliderBuilder::contact_skin, Collider::set_contact_skin, and Collider::contact_skin. This forces the
    solver te maintain a gap between colliders with non-zero contact skin, as if they had a slight margin around them.
    This helps performance and stability for thin objects (like triangle meshes).
  • Internal edges were reworked to avoid dropping contacts that would help with stability, and improve stability of
    collisions between two triangle meshes. The TriMeshFlags::FIX_INTERNAL_EDGES and
    HeightFieldFlags::FIX_INTERNAL_EDGES flags were added to enable internal edges handling.
  • Add IntegrationParameters::length_units to automatically adjust internal thresholds when the user relies on custom
    length units (e.g. pixels in 2D).
Modified

Many shape-casting related functions/structs were renamed. Check out the CHANGELOG for parry 0.15.0 for
additional details.

  • Renamed BroadPhase to BroadPhaseMultiSap. The BroadPhase is now a trait that can be
    implemented for providing a custom broad-phase to rapier. Equivalently, the DefaultBroadPhase type
    alias can be used in place of BroadPhaseMultiSap.
  • The kinematic character controller autostepping is now disabled by default.
  • Add KinematicCharacterController::normal_nudge_factor used to help getting the character unstuck
    due to rounding errors.
  • Rename TOI to ShapeCastHit.
  • Rename many fields from toi to time_of_impact.
  • The QueryPipeline::cast_shape method now takes a ShapeCastOptions instead of the max_toi
    and stop_at_penetration parameters. This allows a couple of extra configurations, including the
    ability to have the shape-cast target a specific distance instead of actual shape overlap.

v0.18.2

Compare Source

v0.18.1

Compare Source

v0.18.0

Compare Source

The main highlight of this release is the implementation of a new non-linear constraints solver for better stability
and increased convergence rates. See #​579 for additional information.

In order to adjust the number of iterations of the new solver, simply
adjust IntegrationParameters::num_solver_iterations.
If recovering the old solver behavior is useful to you, call IntegrationParameters::switch_to_standard_pgs_solver().

It is now possible to specify some additional solver iteration for specific rigid-bodies (and everything interacting
with it directly or indirectly through contacts and joints): RigidBodyBuilder::additional_solver_iterations and
RigidBodyBuilder::set_additional_solver_iterations. This allows for higher-accuracy on subsets of the physics scene
without affecting performance of the other parts of the simulation.

Fix
  • Fix bug causing angular joint limits and motor to sometimes only take into account half of the angles specified by the
    user.
  • Fix bug where collisions would not be re-computed after a collider was re-enabled.
Added
  • Add a SpringJoint and SpringJointBuilder for simulating springs with customizable stiffness and damping
    coefficients.
  • Add SphericalJoint::local_frame1/2, ::set_local_frame1/2, and SphericalJointBuilder::local_frame1/2 to set both
    the joint’s anchor and reference orientation.
  • Add EffectiveCharacterMovement::is_sliding_down_slope to indicate if the character controlled by the kinematic
    character controller is sliding on a slope that is too steep.
  • Add Wheel::side_friction_stiffness to customize the side friction applied to the vehicle controller’s wheel.
  • Add Wheel::raycast_info to access more wheel information relative to the ground.
  • Add DebugRenderStyle::disabled_color_multiplier to make the debug-renderer color disabled object differently.
  • Fix incorrect update of angular degrees-of-freedoms on spherical multibody joints.
  • Fix debug-renderer showing moved kinematic rigid-bodies only at their initial position.
Modified
  • Make Wheel::friction_slip public to customize the front friction applied to the vehicle controller’s wheels.
  • Add the DebugRenderBackend::filter_object predicate that can be implemented to apply custom filtering rules
    on the objects being rendered.
  • Switch the testbed to bevy 0.12 and use its new Gizmos API for rendering lines.
  • Rename NarrowPhase::contacts_with to NarrowPhase::contact_pairs_with.
  • Rename NarrowPhase::intersections_with to NarrowPhase::intersection_pairs_with.

v0.17.3

Compare Source

v0.17.2

Compare Source

Fix
  • Fix issue with convex polyhedron jitter due to missing contacts.
  • Fix character controller getting stuck against vertical walls.
  • Fix character controller’s snapping to ground not triggering sometimes.
  • Fix character controller’s horizontal offset being mostly ignored and some instances of vertical offset being ignored.

v0.17.1

Compare Source

Fix
  • Fix bug resulting in dynamic rigid-bodies acting as kinematic bodies after being disabled and then re-enabled.

v0.17.0

Compare Source

Added
  • Add RigidBody::set_enabled, RigidBody::is_enabled, RigidBodyBuilder::enabled to enable/disable a rigid-body
    without having to delete it. Disabling a rigid-body attached to a multibody joint isn’t supported yet.
  • Add Collider::set_enabled, Collider::is_enabled, ColliderBuilder::enabled to enable/disable a collider
    without having to delete it.
  • Add GenericJoint::set_enabled, GenericJoint::is_enabled to enable/disable a joint without having to delete it.
    Disabling a multibody joint isn’t supported yet.
  • Add DynamicRayCastVehicleController, a vehicle controller based on ray-casting and dynamic rigid-bodies (mostly
    a port of the vehicle controller from Bullet physics).
  • Add RigidBody::user_force and RigidBody::user_torque to read the forces or torques added by the user to a
    dynamic rigid-body.
  • Add RigidBody::locked_axes to get the rigid-body axes that were locked by the user.
Modified
  • Add the QueryPipeline as an optional argument to PhysicsPipeline::step and CollisionPipeline::step. If this
    argument is specified, then the query pipeline will be incrementally (i.e. more efficiently) update at the same time
    as
    these other pipelines. In that case, calling QueryPipeline::update a PhysicsPipeline::step isn’t needed.
  • RigidBody::set_body_type now takes an extra boolean argument indicating if the rigid-body should be woken-up
    (if it becomes dynamic).
  • RigidBody::mass_properties now also returns the world-space mass-properties of the rigid-body.
Fix
  • Fix bug resulting in rigid-bodies being awakened after they are created, even if they are created sleeping.

v0.16.2

Compare Source

v0.16.1

Compare Source

Fix
  • Fixed docs build on docs.rs.

v0.16.0

Compare Source

Added
  • Implement Copy for CharacterCollision.
  • Implement conversion (From trait) between Group and u32.
  • Add ColliderBuilder::trimesh_with_flags to build a triangle mesh with specific flags controlling
    its initialization.
Modified
  • Rename AABB to Aabb to comply with Rust’s style guide.
  • Switch to parry 0.11.
Fix
  • Fix internal edges of 3D triangle meshes or 3D heightfields generating invalid contacts preventing
    balls from moving straight.

v0.15.1

Compare Source

v0.15.0

Compare Source

Added
  • Add a kinematic character controller implementation. See the control module. The character controller currently
    supports the following features:
    • Slide on uneven terrains
    • Interaction with dynamic bodies.
    • Climb stairs automatically.
    • Automatically snap the body to the floor when going downstairs.
    • Prevent sliding up slopes that are too steep
    • Prevent sliding down slopes that are not steep enough
    • Interactions with moving platforms.
    • Report information on the obstacles it hit on its path.
  • Implement serde serialization/deserialization for CollisionEvents when the serde-serialize feature is enabled
Modified
  • The methods Collider::set_rotation, RigidBody::set_rotation, and RigidBody::set_next_kinematic_rotation now
    take a rotation (UnitQuaternion or UnitComplex) instead of a vector/angle.
  • The method QueryFilter::exclude_dynamic is now a static method (the self argument was removed).
  • The QueryPipeline::cast_shape method has a new argument stop_at_penertation. If set to false, the linear
    shape-cast won’t immediately stop if the shape is penetrating another shape at its starting point and its
    trajectory is such that it’s on a path to exit that penetration state.
  • The InteractionGroups is now a set of explicit bit flags instead of a raw u32.
  • The world-space mass properties of rigid-bodies are now updated automatically whenever the user changes their
    position.

v0.14.0

Compare Source

Fixed
  • Fix unpredictable broad-phase panic when using small colliders in the simulation.
  • Fix collision events being incorrectly generated for any shape that produces multiple
    contact manifolds (like triangle meshes).
  • Fix panic in the CollisionPipeline if a collider is both added and removed before a call
    to CollisionPipeline::step.
Modified
  • The RigidBodyBuilder::additional_mass method will now result in the additional angular inertia
    being automatically computed based on the shapes of the colliders attached to the rigid-body.
  • Remove the deprecated methods RigidBodyBuilder::mass, ::principal_angular_inertia, ::principal_inertia.
  • Remove the methods RigidBodyBuilder::additional_principal_angular_inertia. Use
    RigidBodyBuilder::additional_mass_properties instead.
  • The Collider::density method now always returns a Real (instead of an Option<Real>).
  • Rename RigidBody::restrict_rotations and RigidBody::restrict_translations to
    RigidBody::set_enabled_rotations and RigidBody::set_enabled_translations.
  • Rename RigidBodyBuilder::restrict_rotations and RigidBodyBuilder::restrict_translations to
    RigidBodyBuilder::enabled_rotations and RigidBodyBuilder::enabled_translations.
Added
  • Add RigidBody::recompute_mass_properties_from_colliders to force the immediate computation
    of a rigid-body’s mass properties (instead of waiting for them to be recomputed during the next
    timestep). This is useful to be able to read immediately the result of a change of a rigid-body
    additional mass-properties or a change of one of its collider’s mass-properties.
  • Add RigidBody::set_additional_mass to set the additional mass for the collider. The additional
    angular inertia is automatically computed based on the attached colliders shapes.
  • Add Collider::set_density, ::set_mass, set_mass_properties, to alter a collider’s mass
    properties. Note that ::set_mass will result in the collider’s angular inertia being automatically
    computed based on this mass and on its shape.
  • Add ColliderBuilder::mass to set the mass of the collider instead of its density. Its angular
    inertia tensor will be automatically computed based on this mass and its shape.
  • Add Collider::mass and Collider::volume to retrieve the mass or volume of a collider.
  • Add the QueryFilter that is now used by all the scene queries instead of the CollisionGroups
    and Fn(ColliderHandle) -> bool
    closure. This QueryFilter provides easy access to most common filtering strategies (e.g. dynamic bodies only,
    excluding one particular collider, etc.) for scene queries.
  • Add force reporting based on contact force events. The EventHandler trait has been modified to include
    the method EventHandler::handle_contact_force_event. Contact force events are generated whenever the sum of the
    magnitudes of all the forces between two colliders is greater than any of their
    Collider::contact_force_event_threshold values (only the colliders wit the ActiveEvents::CONTACT_FORCE_EVENT flag
    set are taken into account for this threshold).
  • Add the ContactForceEvent struct that is generated by the ChannelEventCollector to report
    contact force events.

v0.13.1

Compare Source

v0.13.0

Compare Source

Fixed
  • Fix incorrect sensor events being generated after collider removal.
  • Fix bug where the CCD thickness wasn’t initialized properly.
  • Fix bug where the contact compliance would result in undesired tunneling, despite CCD being enabled.
Modified
  • Add a wake_up: bool argument to the ImpulseJointSet::insert and MultibodyJointSet::insert to
    automatically wake-up the rigid-bodies attached to the inserted joint.
  • The methods ImpulseJointSet::remove/remove_joints_attached_to_rigid_body,
    MultibodyJointSet::remove/remove_joints_attached_to_rigid_body and
    MultibodyjointSet::remove_multibody_articulations no longer require the bodies
    and islands arguments.
  • Make the instant dependency optional, behind a profiler cargo feature.
  • Rename STATIC to FIXED in the ActiveCollisionTypes flags.
  • Rename ImpulseJointSet::joints_with to ::attached_joints. Add the joint’s handle to the closure arguments.
  • Make the default debug-render less noisy out-of-the-box by only rendering joints, rigid-bodies, and colliders
    by default.
Added
  • Debug-renderer: add rendering of contacts, solver contacts, and collider Aabbs
  • Add MultibodyJointSet::attached_joints to return all the multibody joints attached to a given rigid-body.

v0.12.0

Compare Source

Fixed
  • Fix the simulation when the parallel feature is enabled.
  • Fix bug where damping would not be applied properly to some bodies.
  • Fix panics caused by various situations (contact or joints) involving rigid-bodies with locked translations/rotations.
  • Fix bug where collider modifications (like changes of collision groups, or shape) would not wake-up their attached
    rigid-body, or would not have any effect on pre-existing contacts.
  • Fix the automatic update of a rigid-body’s mass properties after changing one of its attached colliders.
  • Fix the broad-phase becoming potentially invalid after a change of collision groups.
Modified
  • Switch to nalgebra 0.31.
  • Switch to parry 0.9.
  • Rename JointHandle to ImpulseJointHandle.
  • Rename RigidBodyMassPropsFlags to LockedAxes.
  • Rename RigidBody::apply_force, ::apply_torque, ::apply_force_at_point to ::add_force,
    ::add_torque, and ::add_force_at_point to better reflect the fact that they are not cleared at the end
    of the timestep.
  • Rename RigidBodyType::Static to RigidBodyType::Fixed to avoid confusion with the static keyword.
  • All method referring to static rigid-bodies now use fixed instead of static.
  • Rename RigidBodyBuilder::new_static, new_kinematic_velocity_based, new_kinematic_velocity_based to
    RigidBodyBuilder::fixed, kinematic_velocity_based, kinematic_velocity_based.
  • The ContactEvent and IntersectionEvent have been replaced by a single enum CollisionEvent in order
    to simplify the user’s event handling.
  • The ActiveEvents::CONTACT_EVENTS and ActiveEvents::INTERSECTION_EVENTS flags have been replaced by a single
    flag ActiveEvents::COLLISION_EVENTS.
  • Joint motors no longer have a VelocityBased model. The new choices are AccelerationBased and ForceBased
    which are more stable.
  • Calling the .build() function from builders (RigidBodyBuilder, ColliderBuilder, etc.) is no longer necessary
    when adding them to sets. It is automatically called thanks to Into<_> implementations.
  • The ComponentSet abstractions (and related _generic methods like PhysicsPipeline::step_generic) have been
    removed. Custom storage for colliders and rigid-bodies are no longer possible: use the built-in RigidBodySet and
    ColliderSet instead.
Semantic modifications

These are changes in the behavior of the physics engine that are not necessarily
reflected by an API change. See #​304 for extensive details.

  • RigidBody::set_linvel and RigidBody::set_angvel no longer modify the velocity of static bodies.
  • RigidBody::set_body_type will reset the velocity of a rigid-body to zero if it is static.
  • Don’t automatically clear forces at the end of a timestep.
  • Don’t reset the velocity of kinematic bodies to zero at the end of the timestep.
  • Events CollisionEvent::Stopped are now generated after a collider is removed.
Added
  • Significantly improve the API of joints by adding:
    • Builders based on the builder pattern.
    • Getters and setters for all joints.
    • Method to convert a GenericJoint to one of the more specific joint type.
  • Improve stability of joint motors.
  • Adds a bool argument to RigidBodySet::remove. If set to false, the colliders attached to the rigid-body
    won’t be automatically deleted (they will only be detached from the deleted rigid-body instead).
  • Add RigidBody::reset_forces and RigidBody::reset_torques to reset all the forces and torques added to the
    rigid-body by the user.
  • Add the debug-render cargo feature that enables the DebugRenderPipeline: a line-based backend-agnostic
    renderer to debug the state of the physics engine.

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot force-pushed the renovate/dimforge-rapier3d-compat-0.x branch 15 times, most recently from be06789 to 9a2ba2c Compare November 18, 2025 15:24
@renovate
renovate Bot force-pushed the renovate/dimforge-rapier3d-compat-0.x branch 2 times, most recently from 115c476 to 04ddf6d Compare December 4, 2025 17:00
@renovate
renovate Bot force-pushed the renovate/dimforge-rapier3d-compat-0.x branch from 04ddf6d to 8a97310 Compare January 12, 2026 13:10
@@ -7,7 +7,7 @@
"three": "^0.181.0"
},

This comment was marked as outdated.

@renovate
renovate Bot force-pushed the renovate/dimforge-rapier3d-compat-0.x branch 7 times, most recently from 7c38b71 to 85f7aaa Compare January 12, 2026 15:04
@@ -7,7 +7,7 @@
"three": "^0.181.0"
},

This comment was marked as outdated.

@renovate
renovate Bot force-pushed the renovate/dimforge-rapier3d-compat-0.x branch 3 times, most recently from f842a2c to 667e84c Compare January 12, 2026 15:38
@renovate
renovate Bot force-pushed the renovate/dimforge-rapier3d-compat-0.x branch 9 times, most recently from fe41ee4 to af61d45 Compare January 18, 2026 16:30
@renovate
renovate Bot force-pushed the renovate/dimforge-rapier3d-compat-0.x branch 2 times, most recently from 12c5f66 to ae17086 Compare February 4, 2026 09:14
@@ -7,7 +7,7 @@
"three": "^0.181.0"
},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: The code accesses result.toi, which was renamed to result.timeOfImpact in the upgraded rapier library, causing distance to be undefined at runtime.
Severity: CRITICAL

Suggested Fix

In src/bundles/robot_simulation/src/engine/Physics.ts, replace the property access result.toi with result.timeOfImpact. The corresponding test mock in src/bundles/robot_simulation/src/engine/__tests__/Physics.test.ts should also be updated to use timeOfImpact to reflect the new API.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location: src/bundles/robot_simulation/package.json#L8

Potential issue: The upgrade of the rapier physics library to v0.19.3 introduces a
breaking change where the `toi` property on ray casting results was renamed to
`timeOfImpact`. The code in `src/bundles/robot_simulation/src/engine/Physics.ts`
accesses `result.toi` when processing a ray cast result. At runtime, this will evaluate
to `undefined`, causing the `distance` field in the function's return value to be
`undefined`. This will lead to incorrect physics calculations or errors in downstream
code expecting a number. The issue is not caught by tests because the rapier library is
fully mocked.

Did we get this right? 👍 / 👎 to inform future reviews.

@renovate
renovate Bot force-pushed the renovate/dimforge-rapier3d-compat-0.x branch 17 times, most recently from 113fad6 to 816c2b7 Compare February 7, 2026 17:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies This pull request updates dependency files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants