Estaba buscando algunos métodos eficientes para la detección de colisiones en una escena con objetos estáticos y dinámicos cuando encontré "campos de distancia".
Traté de buscar y comprender este concepto, pero solo pude encontrar documentos escritos en un lenguaje muy complejo. ¿Alguien puede explicar con palabras sencillas qué son los campos de distancia y cómo se pueden usar para la detección de colisiones?
collision-detection
Muhammad Omer
fuente
fuente
Respuestas:
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.
fuente
En geometría y gráficos por computadora, y también se usa en el procesamiento de imágenes, un campo de distancia (en palabras simples) es una etiqueta en cada celda (píxel en el procesamiento de imágenes) con la distancia del objeto poligonal más cercano o un píxel con propiedades especiales en el procesamiento de imágenes .
En otras palabras, es una etiqueta para cada celda que tiene un valor del objeto más cercano con una propiedad especial definida por el mapa. El objeto varía según la aplicación.
La imagen de arriba contiene un mapa de Distancia para píxeles de límite. Observe cómo cada píxel contiene la distancia al píxel límite más cercano. La distancia se calcula utilizando la distancia de Manhattan.
Hay diferentes formas de calcular la distancia, los enfoques típicos incluyen:
Al mantener un mapa de distancia para los objetos en la escena, puede verificar si dos objetos están colisionando en función de su distancia. Lamentablemente, mantener dicho mapa es costoso. Y esto generalmente se usa en objetos que se intersectan por sí mismos, como simulaciones de tela, donde los mapas de distancia se pueden mantener y actualizar de manera más eficiente debido a la naturaleza del objeto.
fuente