Commit Graph

377 Commits

Author SHA1 Message Date
Sébastien Crozet
134f433903 feat: solver improvements + release v0.29.0 (#876)
* feat: solver improvements

* feat: add function to get/set whether gyroscopic forces are enabled on a rigid-body

* chore: switch to released versions of parry and wide instead of local patches

* fix cargo doc

* chore: typo fixes

* chore: clippy fix

* Release v0.29.0

* chore: more clippy fixes
2025-09-05 19:31:58 +02:00
Sébastien Crozet
317322b31b feat: reduce the amount of duplicate work the broad-phase is doing for user changes and CCD + release v0.28.0 (#872)
* feat: reduce the amount of duplicate work the broad-phase is doing for user changes and CCD

* Release v0.28.0

* chore: fix warnings

* chore: clippy fixes

* chore: more clippy fixes
2025-08-08 18:15:34 +02:00
Thierry Berger
0f5b4a4d88 feat: changed some QueryPipeline API to be more library friendly (#863) 2025-07-24 16:21:55 +02:00
Sébastien Crozet
95bd6fcfeb feat: switch to the new Bvh from parry for the broad-phase (#853)
* feat: switch to the new Bvh from parry for the broad-phase

* chore: cargo fmt + update testbed

* chore: remove the multi-grid SAP broad-phase

* fix soft-ccd handling in broad-phase

* Fix contact cleanup in broad-phase after collider removal

* chore: clippy fixes

* fix CCD regression

* chore: update changelog

* fix build with the parallel feature enabled

* chore: remove the now useless broad-phase proxy index from colliders

* fix tests
2025-07-11 22:36:40 +02:00
Ryan H. Code
86a257d4f1 Fix NaN resulting from non-clamped input to simd_asin in angular motor solver (#840)
* Fix non-clamped input to simd_asin in motor_angular

* Fix implementation & cleanup

* Cleanup

* Fix formatting
2025-07-11 15:32:59 +02:00
Sébastien Crozet
a3d983fbe9 feat: add ColliderSet::get_pair_mut and RigidBodySet::get_pair_mut 2025-05-23 18:34:35 +02:00
Sébastien Crozet
ef47848fba feat: update to parry 0.21 2025-05-16 19:27:02 +02:00
Sébastien Crozet
b798e1942d chore: clippy fixes 2025-05-02 15:16:43 +02:00
Sébastien Crozet
f49d0206cb chore: make it easier to test ccd with linear vs. nonlinear shape-casting 2025-05-02 15:16:43 +02:00
Johannes
3855592447 Prevent underflow with saturating_sub(1) (#812) (#817) 2025-04-01 09:51:03 +02:00
Thierry Berger
176c3bae14 Fix user changes handling (#803)
* add failing test from @Johannes0021

* apply fix on update_positions

* apply fix on ColliderSet::iter_mut

* fix clippy..

* more complete test

* feat: refactor modified sets into a wrapper to avoid future mistakes

* chore: fix typos

---------

Co-authored-by: Sébastien Crozet <sebcrozet@dimforge.com>
2025-03-28 12:48:25 +01:00
Thierry Berger
d291041278 use enum variants rather than casting to u8 for comparisons (#781) 2025-03-28 12:19:42 +01:00
Thierry Berger
2f9d9ba94b Add partialeq to integrationparameters (#801) 2025-03-10 09:05:34 +01:00
Sébastien Crozet
49fba6cd54 feat: rename AxisMask to AxesMask + enable LIN_Z only in 3D (#805) 2025-03-05 18:07:19 +01:00
Sébastien Crozet
108a2a18d6 feat: add PD and PID controller implementations (#804)
* feat: add a PID controller implementation

* feat: add small rigid-body utilities + test interpolation test

* fix: make scrolling weaker on macos

* feat: add the option to use the PID controller in the character controller demo.

* feat: add a stateless PD controller

* feat(rapier_testbed): cleanup & support PidController in 2D too

* chore: add comments for the PD and PID controllers

* chore: update changelog

* feat: rename PidErrors to PdErrors which is more accurate

* fix cargo doc

* chore: remove dead code

* chore: make test module non-pub
2025-03-05 14:06:49 +01:00
Thierry Berger
65f87d597b use hashset from parry (#716 follow up) (#788) 2025-01-17 16:06:06 +01:00
Chris Bacon
564f7b7348 Fix Nans from RevoluteJoint::angle() (#736)
Fixes #735
2025-01-08 17:47:13 +01:00
Thierry Berger
cf77b5bf57 Remove instant dependency in favor of web-time (#767) 2024-12-06 12:54:00 +01:00
Thierry Berger
93bd37d814 fix clippy needless lifetimes (#769)
+ ignore them for bevy where we often want explicitness
2024-12-05 15:55:12 +01:00
Thierry Berger
510237cc29 Profiling support (#743) 2024-11-19 16:33:26 +01:00
Bruce Mitchener
e7e196d9f9 Improve capacity handling for ColliderSet, RigidBodySet. (#726)
These allow an application to reduce the cost of reallocation when
they know that a large number of colliders or rigid bodies will
be created.
2024-09-16 16:45:14 +02:00
Thierry Berger
c714ff81f2 ImpulseJointSet::get_mut option to wake up connected bodies (#716) 2024-09-13 10:48:56 +02:00
Bruce Mitchener
ed133e1ea9 Fix more typos. (#712)
These are ones not found by `typos` for various reasons.
2024-08-09 14:31:08 +02:00
Thierry Berger
7ff92b1cf5 Fix CI (#707)
Removes dead code + other rust 1.80 related fixes
2024-08-05 11:32:43 +02:00
Bruce Mitchener
35ac662371 Fix spelling of below and orthogonalization. (#700) 2024-07-26 14:17:33 +02:00
Bruce Mitchener
7374653338 docs: Fix minor typos and tweaks (#696)
---------

Co-authored-by: Thierry Berger <contact@thierryberger.com>
2024-07-22 11:32:08 +02:00
Thierry Berger
0ff55411a4 More Debug derives. (#686) 2024-07-19 16:13:25 +02:00
Thierry Berger
01dd200152 ci: cargo doc step (#671) 2024-07-12 16:29:22 +02:00
Sébastien Crozet
40ee5367d8 chore: add one more test for the multibody insertion out-of-bounds issue 2024-07-07 15:22:55 +02:00
Sébastien Crozet
9e699e0315 Fix broken multibody joint removal. 2024-07-07 15:22:55 +02:00
Sébastien Crozet
f34152e78b Fix out-of-bounds crash when merging two multibodies 2024-07-07 15:22:55 +02:00
Sébastien Crozet
3004a7d38d chore: update to nalgebra 0.33 and parry 0.16 (#664) 2024-06-23 22:57:51 +02:00
Thierry Berger
3e8650f3a7 Fix delta_time being 0 resulting in incorrect simulation (#660)
* Add failing test

* fix tests

* better fix

* add changelog

* fix propagated to `contact_cfm_factor`

* PR feedback

* more PR feedbacks
2024-06-23 18:18:54 +02:00
Bruce Mitchener
8a592e458e Fix typos. (#658) 2024-06-20 21:03:12 +02:00
Thierry Berger
9367198282 feat: rework QueryPipeline update API to take less parameters (#647)
* chore: rework QueryPipeline API to take a generic qbvh updater

This allows to pass less parameters depending on the updating mode.

* chore: rework struct and functions names, and docs

---------

Co-authored-by: Sébastien Crozet <sebcrozet@dimforge.com>
2024-06-09 14:16:03 +02:00
Sébastien Crozet
a8a0f297f5 feat: add RevoluteJoint::angle to compute the revolute joint’s angle 2024-06-09 13:20:09 +02:00
Sébastien Crozet
a5a4152815 fix warning in tests 2024-06-09 12:09:58 +02:00
Sébastien Crozet
ad960bf245 chore: clippy fixes 2024-06-09 12:09:58 +02:00
Sébastien Crozet
edaa36ac7e chore: add more comments 2024-06-09 12:09:58 +02:00
Sébastien Crozet
0bdc620207 feat: add suport for kinematic multibody links 2024-06-09 12:09:58 +02:00
Sébastien Crozet
d9585de20b feat: add the ability to disable all contacts between two links belonging to the same multibody 2024-06-09 12:09:58 +02:00
Sébastien Crozet
2041c9549d feat: let user specify joints that cannot move for IK 2024-06-09 12:09:58 +02:00
Sébastien Crozet
d127af7816 feat: make RigidBody::add_collider private
Colliders must only be added through the `ColliderSet`.
2024-06-09 12:09:58 +02:00
Sébastien Crozet
5922612ef3 feat: impl Default for RigidBodyBuilder and ColliderBuilder 2024-06-09 12:09:58 +02:00
Sébastien Crozet
c785ea4996 feat: rename JointAxesMask::X/Y/Z by ::LIN_X/LIN_Y/LIN_Z and JointAxis::X/Y/Z by ::LinX/LinY/LinZ 2024-06-09 12:09:58 +02:00
Sébastien Crozet
cdec395d09 feat: rename cfm_factor, damping_ratio to contact_cfm_factor and contact_damping_ratio 2024-05-25 12:00:15 +02:00
Sébastien Crozet
ed8645e34c feat: remove the "fast constraint" special case 2024-05-25 12:00:15 +02:00
Sébastien Crozet
fdd935dbf1 feat: make the constraints regularization coefficients configurable with angular frequency instead of explicit ERP 2024-05-25 12:00:15 +02:00
Sébastien Crozet
62379de9ec feat: add simple inverse-kinematics solver for multibodies (#632)
* feat: add a simple jacobian-based inverse-kinematics implementation for multibodies

* feat: add 2d inverse kinematics example

* feat: make forward_kinematics auto-fix the root’s degrees of freedom

* feat: add 3d inverse kinematics example

* chore: update changelog

* chore: clippy fixes

* chore: more clippy fixes

* fix tests
2024-05-25 10:36:34 +02:00
Sébastien Crozet
0d76a55d80 chore: don’t return &mut Self with GenericJoint::flip 2024-05-05 16:34:55 +02:00