Cosa sono i "campi di distanza" e come sono applicabili al rilevamento delle collisioni?


12

Stavo cercando alcuni metodi efficienti per il rilevamento delle collisioni in una scena con oggetti statici e dinamici quando mi sono imbattuto in "campi di distanza".

Ho cercato di cercare e comprendere questo concetto, ma sono riuscito a trovare solo articoli scritti in un linguaggio molto complesso. Qualcuno può spiegare in parole semplici quali sono i campi di distanza e come possono essere utilizzati per il rilevamento delle collisioni?


intendevi mappe delle distanze?
LearnCocos2D

Risposte:


13

Un campo di distanza ( o trasformazione della distanza o mappa della distanza ) è una struttura a griglia in cui ogni cella della griglia rappresenta la distanza più breve da quella cella a una cella con qualche altra proprietà. Molto spesso quella "altra proprietà" è un tipo di cella limite, come un muro che un giocatore non può attraversare o la superficie di una mesh.

I campi di distanza hanno molta applicabilità. Si potrebbe immaginare, ad esempio, come potrebbero essere utilizzati per implementare la guida di movimento (creando mappe di distanza su oggetti pericolosi o desiderabili e ponderando le decisioni di movimento da loro).

Tuttavia, hai specificamente chiesto informazioni sulla collisione. L'uso dei campi di distanza per eseguire il rilevamento delle collisioni tra due oggetti in movimento può diventare rapidamente piuttosto inefficiente, poiché la ricostruzione dei campi di distanza può diventare molto lenta man mano che l'ambito del campo cresce (specialmente in 3D, sebbene i metodi per migliorare i tempi di generazione siano un'area di ricerca ).

La collisione del campo di distanza viene quindi utilizzata principalmente per rilevare la collisione di un oggetto dinamico con uno statico. Più frequentemente, l'ho visto fatto per rilevare la collisione di oggetti di stoffa (o altri oggetti deformabili) con altri oggetti fissi nella scena .

Crudamente, questo viene realizzato utilizzando un firmata distanza campo per l'oggetto statico in cui un segno (spesso negativo) rappresenta una cella all'interno della rete e l'altra (ovviamente spesso positivo) rappresenta una cella di fuori della rete. Le particelle della mesh del tessuto possono essere trasformate nello spazio locale della mesh statica e le posizioni "prima" e "dopo" di una particella durante una determinata fase di simulazione del tessuto possono essere verificate rispetto al campo della distanza per determinare se il segno è cambiato (e quindi si è verificata una collisione). Questo è il metodo discusso in questo articolo del 2003 sulla simulazione di tessuti , per esempio.

Si noti che non consiglierei di utilizzare i campi di distanza come unico metodo di rilevamento delle collisioni. Possono essere abbastanza efficienti per quello in cui sono bravi, ma non sono bravi in ​​tutto. Il modo migliore per ottenere un rilevamento efficace delle collisioni è spesso utilizzare più metodi, gerarchicamente, con crescente precisione mentre si attraversa la gerarchia.


5

Cosa sono i campi di distanza?

In geometria e computer grafica e utilizzato anche nell'elaborazione delle immagini, un campo di distanza (in parole semplici) è un'etichetta su ogni cella (pixel nell'elaborazione delle immagini) con la distanza dell'oggetto poligonale più vicino o un pixel con proprietà speciali nell'elaborazione delle immagini .

In altre parole è un'etichetta per ogni cella che ha il valore di un oggetto più vicino con proprietà speciali definite dalla mappa. L'oggetto varia a seconda dell'applicazione.

inserisci qui la descrizione dell'immagine

L'immagine sopra contiene una mappa della distanza per i pixel di delimitazione. Notare come ogni pixel contiene la distanza dal pixel limite più vicino. La distanza viene calcolata utilizzando la distanza di Manhattan.

Esistono diversi modi per calcolare la distanza, gli approcci tipici includono:

Come è applicabile nel rilevamento delle collisioni?

Mantenendo una mappa della distanza per gli oggetti nella scena, è possibile verificare se due oggetti si scontrano in base alla loro distanza. Purtroppo mantenere tale mappa è costoso. E questo è di solito usato in oggetti autointersecanti come simulazioni di tessuti dove le mappe di distanza possono essere mantenute e aggiornate in modo più efficiente a causa della natura dell'oggetto.


Perché questo può essere fatto "in modo più efficiente" in oggetti autointersecanti?
lucidbrot,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.