Aller au contenu
← Tous les articles
Présentation du projet

IPC Toolkit : collisions et friction dans une simulation

Écouter en version balado

IPC Toolkit et la friction qui dépend de la direction · 1:46 · voix synthétiques, script rédigé avec l’IA

Transcription

Sylvie : Quand deux objets se touchent dans une simulation, quelqu'un doit calculer quand ils entrent en collision, et à quel point ils frottent. Ça fait beaucoup de maths.

Thierry : Et c'est ça, IPC Toolkit ?

Sylvie : C'est une bibliothèque C plus plus pour ces calculs de contact : détection de collisions, dérivées de distance, potentiels de friction. Mais ce n'est pas un moteur physique complet. L'application garde la boucle de temps et le solveur.

Thierry : La bibliothèque répond aux questions, et c'est la simulation qui conduit.

Sylvie : Voilà. La simulation donne la géométrie et le mouvement des sommets. La bibliothèque trouve les candidats en phase large, passe à une détection continue en phase étroite, et renvoie le résultat.

Thierry : Et Antoine, là-dedans ?

Sylvie : Il contribue au projet amont, en préparant ses changements sur son propre fork. Deux de ses demandes de fusion ont été acceptées en 2026. L'une ajoute la friction anisotrope, l'autre permet de transmettre des paramètres à la phase fine de Scalable CCD.

Thierry : Friction anisotrope, en français courant ?

Sylvie : Une friction qui dépend de la direction et de la paire de matériaux. Comme tirer un objet dans le sens du grain du bois ou à travers. Son travail de mémoire sur l'usure de surface avait besoin de ça dans le modèle de contact.

Thierry : Et l'autre demande ?

Sylvie : Elle touche la détection continue sur GPU. Un correctif plus ancien sur la compilation CUDA Windows de Scalable CCD, plus la transmission des paramètres, ont aidé à débloquer ce chemin.

Thierry : Tout a été accepté ?

Sylvie : Non, quelques-unes ont été fermées sans fusion, et la page les liste honnêtement. L'article complet a le schéma et le tableau.

Table des matières

IPC Toolkit est une bibliothèque C++ de calculs de contact. Elle fournit la détection de collisions, les dérivées de distance et les potentiels de friction. L’application gère la boucle temporelle et le solveur.

1. Sa place dans la simulation

La simulation transmet la géométrie de collision et le mouvement des sommets à la bibliothèque. Le schéma suit cette requête : sélection des candidats en phase large, détection continue de collisions (CCD) en phase étroite, puis retour du résultat à l’application.

Parcours d’une requête de contact depuis la simulation, à travers les phases large et étroite de détection continue de collisions, jusqu’au résultat

La simulation lance la requête et reçoit le résultat. Elle conserve la gestion du temps et de la résolution.

2. Les calculs disponibles

Les routines couvrent plusieurs aspects du traitement des contacts :

DomaineCalculs disponibles
Détection de collisionsDétection continue de collisions en phases large et étroite.
DistanceDérivées de distance pour les arêtes et les triangles.
Barrières de contactFonctions barrière et dérivées, potentiels de barrière de distance et raideur adaptative.
FrictionPotentiels de friction dissipative lisse ou retardée.

IPC Toolkit n’est pas un moteur physique complet. Le projet amont cite PolyFEM et Rigid IPC comme implémentations complètes qui utilisent la bibliothèque.

3. Mes contributions

Le fork antoinebou12/ipc-toolkit[1] sert à préparer les changements avant de les proposer en amont. Les demandes de fusion ci-dessous sont le registre public (GitHub, relevé du 2026-11-05) ; le statut est celui que GitHub indique.

Demande de fusionOuverteStatut
ipc-sim/ipc-toolkit #210 — Friction anisotrope[2]2026-02Fusionnée le 2026-04-16
ipc-sim/ipc-toolkit #208 — Paramètres transmis à la phase fine de Scalable CCD[3]2026-01Fusionnée le 2026-01-26
ipc-sim/ipc-toolkit #144 — Brouillon de documentation sur l’adhésion[4]2024-11Fusionnée le 2024-12-11
ipc-sim/ipc-toolkit #139 — Coefficients statique et cinétique dans la force tangentielle de collision[5]2024-11Fermée sans fusion
ipc-sim/ipc-toolkit #128 — Friction statique et cinétique par paire de matériaux[6]2024-11Fermée sans fusion
Continuous-Collision-Detection/Scalable-CCD #5 — Retrait de -fpic pour la compilation CUDA Windows (vcpkg)[7]2024-09Fusionnée le 2024-09-27
Continuous-Collision-Detection/Scalable-CCD #6 — Tests sur plusieurs versions de CUDA[8]2024-09Fermée sans fusion

Deux demandes de préparation restent ouvertes sur le fork : #3 — extraire la tolérance et le nombre maximal d’itérations de TightInclusionCCD pour la CCD GPU[9] et #4 — friction anisotrope[10], la branche derrière la #210 en amont.

Le fil conducteur : une friction qui dépend de la direction et de la paire de matériaux, ce dont mon travail de mémoire sur l’usure de surface avait besoin dans le modèle de contact, plus le chemin de détection continue de collision sur GPU (Scalable CCD) que la compilation Windows et la transmission des paramètres ont débloqué.

4. Consulter le code et compiler

La documentation du projet présente la structure du dépôt. Le README amont[11] contient les instructions de compilation. Le fork contributeur[1] permet de consulter les changements de ce fork.

Références

  1. antoinebou12. (). ipc-toolkit. [Software repository] github.com.
  2. ipc-sim. (). ipc-sim/ipc-toolkit #210 — Friction anisotrope. [Source file or documentation] github.com.
  3. ipc-sim. (). ipc-sim/ipc-toolkit #208 — Paramètres transmis à la phase fine de Scalable CCD. [Source file or documentation] github.com.
  4. ipc-sim. (). ipc-sim/ipc-toolkit #144 — Brouillon de documentation sur l’adhésion. [Source file or documentation] github.com.
  5. ipc-sim. (). ipc-sim/ipc-toolkit #139 — Coefficients statique et cinétique dans la force tangentielle de collision. [Source file or documentation] github.com.
  6. ipc-sim. (). ipc-sim/ipc-toolkit #128 — Friction statique et cinétique par paire de matériaux. [Source file or documentation] github.com.
  7. Continuous-Collision-Detection. (). Continuous-Collision-Detection/Scalable-CCD #5 — Retrait de -fpic pour la compilation CUDA Windows (vcpkg). [Source file or documentation] github.com.
  8. Continuous-Collision-Detection. (). Continuous-Collision-Detection/Scalable-CCD #6 — Tests sur plusieurs versions de CUDA. [Source file or documentation] github.com.
  9. antoinebou12. (). #3 — extraire la tolérance et le nombre maximal d’itérations de TightInclusionCCD pour la CCD GPU. [Source file or documentation] github.com.
  10. antoinebou12. (). #4 — friction anisotrope. [Source file or documentation] github.com.
  11. ipc-sim. (). ipc-toolkit. [Software repository] github.com.

Les références utilisent la date de publication de cet article.