Commit Graph

94 Commits

Author SHA1 Message Date
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
Thierry Berger
d291041278 use enum variants rather than casting to u8 for comparisons (#781) 2025-03-28 12:19:42 +01:00
Thierry Berger
955795dfbb Fix clippy (#800) 2025-02-24 11:34:46 +01:00
Thierry Berger
bf8e48e920 Incorrect narrow_phase collisions after using ColliderSet::set_parent (#742)
* reproduction for case 1 (no collision)

* test for wrong self intersection after Collider::set_parent

* dynamics: remove new parent from contact and intersection graph ; maybe should be removed from graph_indices too?

* parent testing at the same place a interaction group check, to avoid missing parent change

* add more asserts in test + more correct comments

* add changelog

* Update CHANGELOG.md

* chore: remove debug print statements

* chore: improve narrow-phase test to check for re-re-parenting

* fix: remove unneeded narrow-phase pair removal

---------

Co-authored-by: Sébastien Crozet <sebcrozet@dimforge.com>
2025-02-02 14:53:30 +01:00
Thierry Berger
510237cc29 Profiling support (#743) 2024-11-19 16:33:26 +01:00
Thierry Berger
01dd200152 ci: cargo doc step (#671) 2024-07-12 16:29:22 +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
Bruce Mitchener
f13ca5cf1c Fix typo in internal variable name. 2024-05-25 22:20:27 +07:00
Fun Maker
a2fdeab7e1 Removed leftovers from block breaks stabilization. 2024-05-05 16:34:55 +02:00
Sébastien Crozet
929aa6b925 feat: rename collision_skin to contact_skin 2024-04-30 23:10:46 +02:00
Sébastien Crozet
664645159d feat: implement collision skin 2024-04-30 23:10:46 +02:00
Sébastien Crozet
6635d49c8b feat: add configurable distance cap to soft-ccd 2024-04-30 23:10:46 +02:00
Sébastien Crozet
f58b4f7c19 feat: add warmstarting to contact constraints resolution 2024-04-30 23:10:46 +02:00
Sébastien Crozet
404e032433 feat: add soft (solver-based) ccd implementation 2024-04-30 23:10:46 +02:00
Sébastien Crozet
3ddf2441ea feat: add exact mlcp solver for pais of 2 constraints 2024-04-30 23:10:46 +02:00
Sébastien Crozet
15c07cfeb3 feat: make narrow-phase filter-out predictive solver contact based on contact velocity 2024-04-30 23:10:46 +02:00
Sébastien Crozet
da92e5c283 Fix clippy and enable clippy on CI 2024-01-27 17:13:08 +01:00
Sébastien Crozet
46b244167c feat!: rename narrow-phase methods for more clarity.
Renames `contacts_with` to`contact_pairs_with`; and `intersections_with` to `intersection_pairs_with`.
2024-01-24 22:51:30 +01:00
Sébastien Crozet
9b87f06a85 feat: implement new "small-steps" solver + joint improvements 2024-01-21 21:02:27 +01:00
Bruce Mitchener
4c2d18a0cd docs: Minor fixes. 2023-08-28 11:05:45 +07:00
Sébastien Crozet
0207f8cf96 Properly take initial sleeping state set by the user when creating a rigid-body 2022-12-11 17:47:42 +01:00
Sébastien Crozet
5063f3bb4f Add the ability to disable contacts between two rigid-bodies attached by joints 2022-07-03 13:55:41 +02:00
Sébastien Crozet
c9d8277377 Add contact force events generated above a user-defined threshold 2022-07-01 12:00:32 +02:00
Sébastien Crozet
66f1d6fef7 Fix contact event generation for shapes generating mulitple contact manifolds. 2022-06-21 09:28:41 +02:00
Sébastien Crozet
362b9f2f8b Fix incorrect sensor events being generated after collider removal
Fix #330
2022-05-31 16:27:53 +02:00
Sébastien Crozet
8d15ceab2a Fix bug where the narrow-phase would not recompute contacts after a collider change 2022-04-29 19:15:24 +02:00
Sébastien Crozet
ae40f4cd7e Add collision event flags 2022-04-28 13:03:14 +02:00
Sébastien Crozet
f108520b5a Finalize refactoring 2022-04-20 19:02:49 +02:00
Sébastien Crozet
2b1374c596 First round deleting the component sets. 2022-04-20 19:02:49 +02:00
Sébastien Crozet
d38740369c Emit collision stopped events after a collider is removed. 2022-03-20 21:49:16 +01:00
Sébastien Crozet
063c638ec5 Combine contact events and intersection events into a single event type and flags 2022-03-20 21:49:16 +01:00
Sébastien Crozet
a9e3441ecd Rename rigid-body static to fixed 2022-03-20 21:49:16 +01:00
Sébastien Crozet
891c08177d Rebase on master branch 2022-03-20 21:49:16 +01:00
Sébastien Crozet
28cc19d104 Allow removing a rigid-body without auto-removing attached colliders 2022-03-20 21:49:16 +01:00
zhguchev
536122e080 add defaults for the several structs 2022-01-23 18:01:50 +01:00
Sébastien Crozet
f74b8401ad Implement multibody joints and the new solver 2022-01-02 16:58:36 +01:00
Benjamin Saunders
601955b4ee Remove duplicate test 2021-10-24 13:36:29 +02:00
Jamen Marz
7aa94e994f Impl Default for a few structs 2021-09-25 13:50:12 +02:00
Kane Rogers
3f223aaf9e Fix bug with colliders without rigid bodies
- When `NarrowPhase` adds a collision pair, it checks to make sure that they don't have the same parent
- In the case where the colliders have no parents (eg. they are not attached to a `RigidBody`) this yields a false positive.
- The fix is to ensure that colliders have a parent before ignoring the pair.
2021-08-26 10:29:24 +02:00
Benjamin Saunders
92b8580761 Update intersection graph regardless of active_events 2021-07-14 20:16:19 +02:00
Crozet Sébastien
ff6c75f3bd Fix collider removal from narrow-phase when the same collider is listed twice. 2021-06-08 18:23:40 +02:00
Crozet Sébastien
7153eb7779 Add ActiveCollisionTypes to easily enable collision-detection between two non-static rigid-body. 2021-06-01 17:59:07 +02:00
Crozet Sébastien
826ce5f014 Rework the event system 2021-06-01 12:36:01 +02:00
Crozet Sébastien
1bef66fea9 Add prelude + use vectors for setting linvel/translation in builders 2021-05-25 11:00:13 +02:00
Crozet Sébastien
705876f5e5 Restore the collision pipeline 2021-04-29 10:26:44 +02:00
Crozet Sébastien
c32da78f2a Split rigid-bodies and colliders into multiple components 2021-04-26 18:00:50 +02:00
Crozet Sébastien
8173e7ada2 Allow collider modification after its insersion to the ColliderSet. 2021-03-29 14:54:54 +02:00
Crozet Sébastien
dec3e4197f Small refactoring of the PhysicsPipeline. 2021-03-28 11:54:33 +02:00
Crozet Sébastien
7306821c46 Attenuate the warmstart impulse for CCD contacts.
CCD contacts result in very strong, instantaneous, impulses. So it is preferable to attenuate their contribution to subsequent timesteps to avoid overshooting.
2021-03-28 11:27:07 +02:00
Crozet Sébastien
97157c9423 First working version of non-linear CCD based on single-substep motion-clamping. 2021-03-26 18:16:27 +01:00