Un champ de distance ( ou transformation de distance ou carte de distance ) est une structure quadrillée où chaque cellule de la grille représente la distance la plus courte entre cette cellule et une cellule possédant une autre propriété. Le plus souvent, cette «autre propriété» est un type de cellule de limite, comme un mur qu'un joueur ne peut pas franchir ou la surface d'un maillage.
Les champs de distance ont beaucoup d'applicabilité. Vous pourriez imaginer, par exemple, comment ils pourraient être utilisés pour mettre en œuvre le guidage de mouvement (en créant des cartes de distance pour les objets dangereux ou souhaitables et en pondérant les décisions de mouvement par eux).
Cependant, vous avez spécifiquement posé une question sur la collision. L'utilisation de champs de distance pour effectuer la détection de collision entre deux objets en mouvement peut rapidement devenir plutôt inefficace, car la reconstruction des champs de distance peut devenir très lente à mesure que l'étendue du champ augmente (en particulier en 3D, bien que les méthodes pour améliorer le temps de génération soient un domaine de recherche ).
La collision de champ de distance est donc principalement utilisée pour détecter la collision d'un objet dynamique avec un objet statique. Le plus souvent, j'ai vu cela pour détecter la collision d'objets en tissu (ou d'autres objets déformables) avec d'autres objets fixes de la scène .
En gros, cela est accompli en utilisant un champ de distance signé pour l'objet statique où un signe (souvent négatif) représente une cellule à l' intérieur du maillage et un autre (évidemment souvent positif) représente une cellule à l'extérieur du maillage. Les particules du maillage en tissu peuvent être transformées dans l'espace local du maillage statique, et les positions "avant" et "après" d'une particule au cours d'une étape de simulation de tissu donnée peuvent être vérifiées par rapport au champ de distance pour déterminer si le signe a changé (et ainsi une collision s'est produite). C'est la méthode discutée dans cet article de 2003 sur la simulation de tissu , par exemple.
Notez que je ne suggérerais pas d'utiliser les champs de distance comme seule méthode de détection de collision. Ils peuvent être assez efficaces pour ce qu'ils sont bons, mais ils ne sont pas bons dans tout. La meilleure façon de parvenir à une détection efficace des collisions consiste souvent à utiliser plusieurs méthodes, de manière hiérarchique, avec une précision croissante lorsque vous parcourez la hiérarchie.