Conversation
…n Candidates class
- Introduced CollisionSetType enum to manage different collision strategies: IPC, IMPROVED_MAX_APPROX, and OGC. - Updated NormalCollisions and NormalCollisionsBuilder to utilize the new collision set type. - Replaced deprecated methods related to improved max approximator with the new collision set type methods. - Enhanced collision building logic to accommodate the new OGC strategy. - Updated tests to validate behavior across different collision set types.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #192 +/- ##
==========================================
- Coverage 97.42% 97.38% -0.05%
==========================================
Files 153 157 +4
Lines 23917 24240 +323
Branches 804 844 +40
==========================================
+ Hits 23301 23605 +304
- Misses 616 635 +19
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull Request Overview
Copilot reviewed 39 out of 42 changed files in this pull request and generated 6 comments.
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
…ions in collision_mesh.cpp; remove unused assertions in normal_collisions_builder.cpp and clean up test_barrier_potential.cpp
…rtions in OGC tests
…and implement unit tests for TrustRegion functionality
…isions_builder.hpp
- Included TinyAD in the list of dependencies with a brief description. - Specified the license type (MIT) and provided a link to the GitHub repository.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 74 out of 77 changed files in this pull request and generated 6 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Description
Implementation of "Offset Geometric Contact" [Chen et al. 2025].
Details
This PR implements the Offset Geometric Contact (OGC) algorithm [Chen et al. 2025], a penetration-free contact model that replaces continuous collision detection (CCD) with a trust-region-based approach.
1. Core Library (
src/ipc/ogc/)ipc::ogcto encapsulate OGC-specific functionality.TrustRegionclass (trust_region.hpp,trust_region.cpp) to manage per-vertex conservative bounds.warm_start_time_stepto initialize the trust region and handle initial predictions.filter_stepto scale optimization steps ensuring vertices stay within safe bounds.updateandupdate_if_neededto dynamically resize trust regions based on motion.feasible_region.hppandfeasible_region.cppcontaining geometric predicates (e.g.,check_vertex_feasible_region,is_edge_edge_feasible) to verify if primitives are within valid non-penetrating regions.2. Python Bindings (
python/src/ogc/)ipctk.ogcmodule.TrustRegionand related classes, allowing seamless integration with Python-based optimization loops.3. Documentation (
docs/)docs/source/tutorials/ogc.rst) explaining:NormalCollisionsfor OGC.TrustRegionclass into a simulation loop (C++ and Python).docs/source/conf.pyto support new documentation features.4. Build System
ogcsource directory and dependencies.tsl::robin_mapandabsl::hashas private dependencies in CMake. Update the dependency documentation accordingly.SpatialHashto PImpl idiom to hidetsl::robin_mapandabsl::hashfrom the public API.Key Implementation Details
TrustRegion::filter_stepscales the descent directionType of change