Pole odległości ( lub transformacja odległości lub mapa odległości ) to struktura siatkowa, w której każda komórka w siatce reprezentuje najkrótszą odległość od tej komórki do komórki z pewnymi innymi właściwościami. Najczęściej ta „inna właściwość” jest komórką graniczną, taką jak ściana, na którą gracz nie może przejść, lub powierzchnia siatki.
Pola odległości mają wiele zastosowań. Można sobie wyobrazić, na przykład, w jaki sposób można je wykorzystać do wdrożenia wskazówek dotyczących ruchu (poprzez tworzenie map odległości do niebezpiecznych lub pożądanych obiektów i podejmowanie przez nich decyzji dotyczących ruchu).
Jednak konkretnie zapytałeś o kolizję. Używanie pól odległości do wykrywania kolizji między dwoma ruchomymi obiektami może szybko stać się raczej nieefektywne, ponieważ odbudowa pól odległości może stać się bardzo powolna wraz ze wzrostem zasięgu pola (szczególnie w 3D, chociaż metody poprawy czasu generowania są przedmiotem badań ).
Kolizja pola odległości jest zatem wykorzystywana głównie do wykrywania zderzenia obiektu dynamicznego ze statycznym. Najczęściej widziałem to w wykrywaniu kolizji tkanin (lub innych odkształcalnych) obiektów z innymi stałymi obiektami w scenie .
Zasadniczo osiąga się to poprzez zastosowanie podpisanego pola odległości dla obiektu statycznego, gdzie jeden znak (często ujemny) reprezentuje komórkę wewnątrz siatki, a drugi (oczywiście często dodatni) reprezentuje komórkę na zewnątrz siatki. Cząstki siatki tkaniny można przekształcić w lokalną przestrzeń siatki statycznej, a pozycje „przed” i „za” cząstki podczas danego etapu symulacji tkaniny można sprawdzić względem pola odległości w celu ustalenia, czy znak się zmienił (i dlatego nastąpiła kolizja). Jest to na przykład metoda omówiona w artykule z 2003 r. Dotyczącym symulacji tkanin .
Zauważ, że nie sugerowałbym używania pól odległości jako jedynej metody wykrywania kolizji. Mogą być dość wydajni w tym, w czym są dobrzy, ale nie są we wszystkim dobrzy. Najlepszym sposobem na skuteczne wykrywanie kolizji jest często stosowanie wielu metod, hierarchicznie, ze zwiększoną precyzją podczas przechodzenia w dół hierarchii.