Summary: | La détection de collision est une tâche essentielle pour la simulation physique d’environnements virtuels. De nos jours, la détection de collision est l’un des goulets d’étranglement calculatoire dans les applications de réalité virtuelle dû à la complexité des environnements que l’on souhaite simuler et par la contrainte d’interaction en temps-réel. Nous avons concentré nos travaux sur la seconde étape de la détection de collision (narrow-phase) dans laquelle les tests de collisions sont effectués sur des paires d’objets. Contrairement à la première étape, les tests de collisions sont effectués sur des versions détaillées des modèles géométriques et sont donc très sensible au niveau calculatoire à la complexité géométrique de ceux-ci.Cette thèse vise à améliorer les performances de la détection de collision lors de l’utilisation d’objets géométriques complexes (formes représentées par un maillage, éventuellement non-convexe et/ou déformable). Nos méthodes permettent d’accélérer le calcul de la narrow-phase. Les algorithmes proposés peuvent être implémentés sur GPU pour profiter de leur puissance de calcul et ainsi améliorer les performances.Pour réaliser la narrow-phase, nous proposons un pipeline adapté à une implémentation GPU. Celui-ci permet de réaliser la narrow-phase à l’aide d’algorithmes basés lancer de rayon. Notre méthode repose sur un principe commun où tous les tests de collision sont effectués par lancer de rayon à partir des sommets des objets. Cette généricité nous permet de réaliser les tests sur des maillages ayant n’importe quelles propriétés (rigide ou déformable, convexe ou non-convexe). Les algorithmes de lancer de rayon utilisés étant choisis en fonction des propriétés des objets pour optimiser les performances.Nous avons généralisé la méthode de détection de collision utilisée pour supporter, en plus des objets volumiques, des objets surfaciques (tels que des tissus). Cette méthode est compatible avec le pipeline proposé et permet de réaliser des tests de collisions entre n’importe quelle combinaison d’objets.De plus, nous proposons d’exploiter la cohérence temporelle pour améliorer les performances. Le résultat de la détection de collision est généralement très semblable entre deux pas de temps successifs. Suite à cette observation, nous proposons un algorithme de lancer de rayon itératif qui intègre le résultat du pas précédent pour exploiter cette cohérence temporelle. Cet algorithme peut être utilisé conjointement avec des algorithmes de lancer de rayon standard. Il permet de remplacer certains tests unitaires pour mettre à jour de manière incrémentale le résultat de la détection de collision. L’algorithme de lancer de rayon itératif est ajouté au pipeline en tant qu’alternative aux autres algorithmes de lancer de rayon et est utilisé prioritairement dû à son faible coût calculatoire. === Collision detection is an essential task for physical simulation of virtual environments. Nowadays, collision detection is one of the main bottleneck of virtual reality applications. This is due to the complexity of the environments we want to simulate and the real-time interaction constraint. We have concentrated our work on the second phase of collision detection, the narrow-phase, in which collision queries are performed on pairs of objects. Contrary to the first phase of collision detection, collision queries are performed on the full representation of the objects (with all details) and are thus sensible to the geometric complexity of the objects in term of computation time.This thesis is aimed to improve the performances of collision detection when using geometrically complex objects (represented with triangle meshes, potentially non-convex and deformable). Our methods are able to reduce computation times. Our proposed algorithms can be implemented on GPU to take advantage of their computational power and thus further improve the performances of our methods.To implements our narrow-phase, we propose a pipeline which is adapted for GPU execution. This pipeline perform collision detection with ray-tracing algorithms. Our methods rely on a shared principle where all collision queries are performed by casting rays from the vertices of the objects. This genericity allow us to perform collision detection on triangle meshes with any properties (rigid or deformable, convex or non-convex). The ray-tracing algorithms used are dynamically selected depending on the properties of the objects to improve the performances.We have generalized the collision detection method we use in our pipeline to handle, in addition to volumetric objects (represented by their surface), surface objects (such as cloth). This method is compatible with our pipeline and allow us to perform collision detection with any combination of volumetric and surface objects.Furthermore, we propose to exploit temporal coherency to improve performances. The result of collision queries (contact points) are generally similar between successive time-step. Starting from this observation, we propose a ray-racing algorithm which use the result of the previous time-step to exploit this temporal coherency. This ray-tracing algorithm can be used in conjunction to standard ray-tracing algorithms. It is used to replace standard ray-tracing algorithms in specific condition to update the result of the previous time-step instead of computing it from scratch. The iterative ray-tracing algorithm is added in our pipeline as an alternative to other ray-tracing algorithms and is used in priority due to his lower computational cost compared to other algorithms.
|