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. 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.
kula – badamy odległość między środkami, 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]
Przykłady brył ograniczających. axis-aligned bounding box (AABB) sfera 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.
Trzy poziomy 18-DOP hierarchii. 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) .
T = NuCu + NvCv + NpCp, gdzie 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.
procedure traverse(A,B); if BH(A) i BH(B) nie przecinają się 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 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 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 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=0 tif(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ż klasyczną metodą. http://graphics.ewha.ac.kr/CATCH/
Dziękuję za uwagę.