-
Notifications
You must be signed in to change notification settings - Fork 343
[Collision] Add ccd collision detection based on TightInclusion method #5792
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Collision] Add ccd collision detection based on TightInclusion method #5792
Conversation
|
[ci-depends-on] detected during build #3. To unlock the merge button, you must
|
|
[ci-build][with-all-tests] |
|
[ci-depends-on] detected during build #4. To unlock the merge button, you must
|
|
[ci-depends-on] detected during build #5. To unlock the merge button, you must
|
|
[ci-depends-on] detected during build #6. To unlock the merge button, you must
|
|
[ci-depends-on] detected during build #7. To unlock the merge button, you must
|
|
[ci-depends-on] detected during build #8. To unlock the merge button, you must
|
|
[ci-depends-on] detected during build #10. To unlock the merge button, you must
|
|
[ci-build] |
|
[ci-depends-on] detected during build #11. To unlock the merge button, you must
|
|
[ci-depends-on] detected during build #12. To unlock the merge button, you must
|
|
[ci-depends-on] detected during build #13. To unlock the merge button, you must
|
|
[ci-build][with-all-tests] |
|
[ci-depends-on] detected during build #14. To unlock the merge button, you must
|
|
[ci-build][with-all-tests][force-full-build] |
|
[ci-depends-on] detected during build #15. To unlock the merge button, you must
|
|
[ci-depends-on] detected during build #16. To unlock the merge button, you must
|
|
[ci-depends-on] detected during build #17. To unlock the merge button, you must
|
|
[ci-depends-on] detected during build #18. To unlock the merge button, you must
|
...rsection/src/sofa/component/collision/detection/intersection/CCDTightInclusionIntersection.h
Show resolved
Hide resolved
...rsection/src/sofa/component/collision/detection/intersection/CCDTightInclusionIntersection.h
Show resolved
Hide resolved
.../Component/Collision/Geometry/src/sofa/component/collision/geometry/SphereCollisionModel.inl
Outdated
Show resolved
Hide resolved
...rsection/src/sofa/component/collision/detection/intersection/CCDTightInclusionIntersection.h
Show resolved
Hide resolved
…/geometry/SphereCollisionModel.inl Co-authored-by: Hugo <[email protected]>
|
[ci-depends-on] detected during build #19. All dependencies are merged/closed. Congrats! 👍 |
This PR adds a new Intersector based on the method TightInclusion.
This methods uses iterative methods to find the time of impact by finding the root of a third order polynomial equation (see paper). The library only proposes two collision detection methods : Edge/Edge and Triangle/Point. Which is sufficient for Tetrahedral meshes. This Intersector is of course compatible with all available broad-phase and narrow-phase available.
This PR also adds a way to be able to base the CCD on either the inertia or the FreeMotion itself. To be noted that if the FreeMotion is used, then the parameter
parallelCollisionDetectionAndFreeMotionof theFreeMotionAnimationLoopcannot be used anymore.I plan in another PR to improve the broad-phase by not increasing the bounding box using the continuous info as it is done in SOFA currently but by using a method based on cylinders, which will require some refactoring of the BoxModels.
Finally, because of its current inheritance to
BaseProximityIntersectionit still have the parameter 'Alarm distance' which should be put to 0 as it is not used anymore. This will disappear when the new collision detection for bounding box is implemented. That is why I don't want to put to much effort in removing it here.This gif is a gif of the simulation present in the ci-depends-on pr
Both objects are launched at a certain speed at each other and are accelerating under gravity. The time step is particularly large (0.1), so we can see the models "teleporting" frame by frame which is intended. But still, we can see that the collisions are correctly detected.
[with-all-tests]
[force-full-build]
[ci-depends-on https://github.com/sofa-framework/SofaPython3/pull/559]
By submitting this pull request, I acknowledge that
I have read, understand, and agree SOFA Developer Certificate of Origin (DCO).
Reviewers will merge this pull-request only if