210 likes | 348 Views
Geometria obrazu Wykład 12. Bryły ograniczające. Boundary volume hierarchy (BVH). Funkcja kosztu kolizji. Wykrywanie kolizji metoda klasyczna, metoda stochastyczna, pole odleglości, model Taylora. Definicja.
E N D
Geometria obrazuWykład 12 • Bryły ograniczające. • Boundary volume hierarchy (BVH). • Funkcja kosztu kolizji. • Wykrywanie kolizji • metoda klasyczna, • metoda stochastyczna, • pole odleglości, • model Taylora.
Definicja. Bryłą ograniczającą (brzegową, bounding volume) dla zbioru obiektów S nazywamy domknięty wielościan zawierający wszystkie obiekty z danego zbioru. Bryły ograniczające możemy definiować również dla podzbiorów zbioru S, w tym pojedynczych obiektów. Powinny one spełniać następując wymagania: • dobrze przybliżać aproksymowane obiekty, • być łatwe w konstrukcji, • łatwo aktualizować się, • pozwalać na efektywne sprawdzanie przecięć, • wymagać małej pamięci, • łatwo łączyć się w grupy.
Najprostsze bryły ograniczające, dla których można łatwo sprawdzić przecięcie: • kula – badamy odległość między środkami, • prostopadłościan zorientowany zgodnie z kierunkiem osi – sprawdzamy zależności między współrzędnymi boków • prostopadłościan dowolnie zorientowany - analizujemy przecięcia płaszczyzn wyznaczających boki prostopadłościanu. [inst.eecs.berkeley.edu]
axis-aligned bounding box (AABB) sfera Przykłady brył ograniczających. oriented bounding box (OBB) discrete oriented polytope (k-DOP) swept sphere volume (SSV) otoczka wypukła
Twierdzenie (o osi rozdzielającej, Gottschalk et al. ’96). Dwa wypukłe wielościany są rozłączne wtedy i tylko wtedy, gdy istnieje oś rozdzielająca prostopadła do ściany jednego z wielościanów lub prostopadła do krawędzi obu wielościanów. Innymi słowy istnieje prosta spełniająca pewne warunki taka, że rzuty wielościanów w kierunku prostopadłym do prostej są rozłączne.
Bazując na bryłach ograniczających możemy stworzyć bounding volume hierarchy, czyli drzewiastą strukturę danych określoną na obiektach geometrycznych w ten sposób, że • każdemu wierzchołkowi v drzewa odpowiada bryła ograniczająca sumę obiektów wyznaczających bryły odpowiadające synom v, • liście zwierają informacje o obiektach. Struktura powinna mieć następujące własności: • bryły ograniczające powinny dobrze aproksymować obiekty (jak najmniej nachodzić na siebie), • na każdym poziomie każdy obiekt powinien należeć do co najwyżej jednej bryły pokrywającej, • drzewo powinno być zbalansowane.
Przykład. Trzy poziomy 18-DOP hierarchii. [Teschner et al. „Colision Detcttion for Deformable objeects”, 2005]
Bounding volume hierarchy tworzy się zwykle jedną z dwóch metod: • bottom-up : najpierw znajdujemy bryły ograniczające małe grupy bliskich obiektów, a następnie łączymy je w coraz większe zbiory, • top-down : znajdujmy bryłę ograniczającą cały zbiór obiektów S, a następnie dzielimy S na podzbiory (np. minimalizując sumę rozmiarów brył ograniczających odpowiadających synom danego węzła lub minimalizując rozmiar maksymalnej bryły ograniczającej odpowiadającej synowi danego węzła). Metoda bottom-up jest zwykle kosztowniejsza, ale uwzględnia topologię zbioru. Drugą metodę łatwiej zaprogramować wybierając odpowiedni sposób podziału zbioru.
W przypadku zmian położenia obiektu, struktura danych musi być aktualizowana. W zależności od rodzaju ruchu lepsze są różne bryły ograniczające. Np. w przypadku sztywnych obiektów: • dla przesunięć i obrotów: sfera, SSV, OBB, • tylko dla przesunięć: AABB, DOP. Wtedy bryły ograniczające dla obiektów nie ulegają zmianie. Zmieniają się bryły odpowiadające węzłom na ścieżce od analizowanego liścia do korzenia. Podobnie jest w przypadku obiektów miękkich, z tym, że trzeba tu również zmienić postać liścia. Operacje te nie są zbyt trudne np. w przypadku DOP, gdzie bryła ograniczająca odpowiadająca węzłowi jest „sumą” brył odpowiadających synom tego węzła (ściany sumy wyznaczane są przez ściany brył składowych) .
Funkcja kosztu kolizji. Funkcję kosztu kolizji definiujemy w następujący sposób (Weghorst, Gottschalk, Klosowski) : T = NuCu + NvCv + NpCp, gdzie Nu - liczba aktualizowanych brył ograniczających, Cu - oszacowanie kosztu aktualizacji bryły ograniczającej, Nv - liczba przecinających się brył ograniczających, Cv - oszacowanie kosztu sprawdzenia, czy bryły ograniczające przecinają się, Np - liczba par sprawdzanych obiektów, Cp - oszacowanie kosztu sprawdzenia oddziaływania pary obiektów. Niestety optymalizacja tej funkcji zależy zwykle od specyficznych własności problemu, a zmniejszenie jednego ze współczynników zazwyczaj zwiększa pozostałe.
Wykrywanie kolizji. Niech BH(C) oznacza bryłę ogranicza-jącą odpowiadającą wierzchołkowi C. procedure traverse(A,B); if BH(A) i BH(B) nie przecinają się then return; if A i B są liśćmi then zbadaj przecięcia obiektów z BH(A) z obiektami z BH(B) else for wszyscy synowie A i B do traverse(syn(A),syn(B)); Aby szybko minimalizować prawdo-podobieństwo przecięcia badamy prze-cięcie mniejszej bryły ograniczającej z bryłami „synów” drugiej. [T.Mezger, Bounded Volume Hierarchies, 2005]
Przykład. Binarne drzewo BVH. [T.Mezger, Bounded Volume Hierarchies, 2005]
Przykład. Czwórkowe drzewo BVH. [T.Mezger, Bounded Volume Hierarchies, 2005]
Zalety i wady drzewa o większym stopniu: • mniejsza głębokość rekursji, • mniejsza liczba wierzchołków implikuje mniejsze Nu, • szybsza analiza niż w drzewie binarnym, gdy Cv jest małe (np. dla k-DOP), • większe Nv, gdy liście nie kolidują a ich przodkowie tak.
Podejście stochastyczne. Zdefiniujmy prawdopodobieństwo przecięcia się dwóch brył ograniczających w następujący sposób: P(Ai,Bj) = (Vol (Ai) + Vol (Bj) )/(Vol(A) + Vol(B)), Gdzie A i B są przecinającymi się przodkami P(Ai,Bj) ( w przeciwnym przypadku P(Ai,Bj) = 0). Poszukując najbardziej prawdopodobnych miejsc kolizji będziemy wybierać w drzewie BVH ścieżki o największym prawdopodobieństwie sukcesu. Niech q oznacza kolejkę priorytetową par węzłów uporządkowaną względem prawdopodobieństwa przecięć odpowiednich brył ograniczających.
Algorytm. procedure traverse(A, B); while q nie jest pusta do begin A, B q.pop; for wszyscy synowie A i B do if P(Ai,Bj) jest dostatecznie duże then return „kolizja” else if P(Ai,Bj) > 0 then q.insert((Ai,Bj) , P(Ai,Bj) ); end;
Metoda elastycznych powierzchni. Badamy mniej zależności między obszarami, które są względnie daleko i zwiększamy liczbę punktów kontrolnych w miarę zbliżania się obiektów. [Teschner et al. „Colision Detcttion for Deformable objeects”, 2005]
Pole odległości. Definiujemy funkcję D: R3 R w następujący sposób: D(p) = sign(p)dist(p), Gdzie dist( ) oznacza odległość do najbliższego punktu powierzchni, a sign( ) przyjmuje wartość ujemną wewnątrz obiektu. Pole odległości określamy z pomocą drzew ósemkowych, BSP lub np. diagramów Voronoi, dzieląc przestrzeń na obszary, w których będzie obliczana funkcja odległości. Chcąc wykryć kolizję badamy pary obiektów i analizujemy ich położenie względem pól odległości. Możemy też określać pola odległości względem konkretnych obiektów.
Przykład. [Teschner et al. „Colision Detcttion for Deformable objeects”, 2005]
Model Taylora. Zamiast sztywnych szacowań bryły ograniczającej (np. wartości funkcji cos x + 31/2 sin x zawierają się w przedziale [0, 1+ 31/2]) dla x [0, /2), stosujemy wzór Taylora: f(t) ni=0tif(i)(m)/i!+[r0,r1] dla pewnego m [t0, t1]. Analizujemy parę: wielomian, przedział. Takie pary możemy np. sumować. Pozwala to na dokładniejsze przybliżanie obiektów niż klasyczna metoda. http://graphics.ewha.ac.kr/CATCH/