Un campo de distancia ( o transformación de distancia o mapa de distancia ) es una estructura cuadriculada donde cada celda de la cuadrícula representa la distancia más corta desde esa celda a una celda con alguna otra propiedad. Muy a menudo, esa "otra propiedad" es un tipo de celda límite, como un muro que un jugador no puede pasar, o la superficie de una malla.
Los campos de distancia tienen mucha aplicabilidad. Podrías imaginar, por ejemplo, cómo podrían usarse para implementar la guía de movimiento (creando mapas de distancia a objetos peligrosos o deseables y ponderando las decisiones de movimiento de ellos).
Sin embargo, usted preguntó específicamente sobre la colisión. El uso de campos de distancia para realizar la detección de colisión entre dos objetos en movimiento puede volverse rápidamente ineficiente, ya que la reconstrucción de los campos de distancia puede volverse muy lenta a medida que crece el alcance del campo (especialmente en 3D, aunque los métodos para mejorar el tiempo de generación son un área de investigación ).
La colisión de campo de distancia se usa principalmente para detectar la colisión de un objeto dinámico con uno estático. Con mayor frecuencia, he visto esto para detectar la colisión de objetos de tela (u otros objetos deformables) con otros objetos fijos en la escena .
Crudamente, esto se logra mediante el uso de un campo de distancia con signo para el objeto estático donde un signo (a menudo negativo) representa una celda dentro de la malla y el otro (obviamente a menudo positivo) representa una celda fuera de la malla. Las partículas de la malla de tela pueden transformarse en el espacio local de la malla estática, y las posiciones "antes" y "después" de una partícula durante un paso de simulación de tela pueden verificarse contra el campo de distancia para determinar si el signo cambió (y así ocurrió una colisión). Este es el método discutido en este documento de 2003 sobre simulación de tela , por ejemplo.
Tenga en cuenta que no sugeriría usar campos de distancia como su único método de detección de colisión. Pueden ser bastante eficientes para lo que son buenos, pero no lo son en todo. La mejor manera de lograr una detección de colisión eficiente es usar múltiples métodos, jerárquicamente, con mayor precisión a medida que recorre la jerarquía.