Flocking Behaviours Michał Drobot Technical Art Director Reality Pump
Plan TeoriaTeoria Hierarchia ruchuHierarchia ruchu Warstwa Lokomocyjna – model ruchuWarstwa Lokomocyjna – model ruchu Siły sterujące jednostkoweSiły sterujące jednostkowe Siły sterujące grupoweSiły sterujące grupowe Scalanie siłScalanie sił
Empiryczny model zachowańEmpiryczny model zachowań Bazuje na:Bazuje na: Teorii rojuTeorii roju ChaosuChaosu Podstawach biologicznychPodstawach biologicznych Systemach kontroli ruchuSystemach kontroli ruchu Artificial lifeArtificial life TEORIA
Podstawa do tworzenia:Podstawa do tworzenia: Systemów cząsteczkowychSystemów cząsteczkowych Symulacji ekosystemówSymulacji ekosystemów Symulacji socjologicznychSymulacji socjologicznych Wykorzystywany w:Wykorzystywany w: GrachGrach Filmach – efekty specjalneFilmach – efekty specjalne Badaniach naukowychBadaniach naukowych TEORIA
Hierarchia ruchu Podstawowa hierarchia modelu ruchu: Wybór akcji Strategie Cele Planowania Sterowanie Wyznaczanie ścieżek Dynamiczne/Statyczne/chaotyczne Lokomocja Animacja/przemieszczanie/artykulacja
Lokomocja Prosty, elastyczny model Zamienia sygnały od warstwy sterującej na odpowiedni ruch Wymaga warstwy abstrakcyjnej łączącej sterującą z lokomocyjną Fuzzy logic Interfejs obsługi danej warstwy Reprezentacja prosta/dynamiczna/fizyczna
Prosty model lokomocji Korzysta z: Dynamiki Newtonowskiej Integracji Eulerowskiej w czasie (polecane RK) Opisuje podstawowe parametry agenta: Masa Max prędkość Max przyspieszenie
Prosty model lokomocji Dynamicznie oblicza: Wektor ruchu Wektor siły kierunkowej - sterującej Przyśpieszenie (zgodne z siłą sterującą) Wektor orientacji
Prosty model lokomocji Uproszczony model umożliwia: Zachowanie bezwładności Symulacje w środowisku fizycznym Symulacje cząsteczkową wielu zjawisk: Symulacja gazów/cieczy Symulacja stad Efekty specjalne …
Siły sterujące jednostkowe Na każdego agenta mogą działać siły indywidualne Pod pojęciem siły rozumiemy : chęć, ochotę, potrzebę, rozkaz itp.. Siły te będą odpowiednio wagowane w zależności od sytuacji i podjętych decyzji i uwzględniane jako siła napędowa w modelu lokomocji
Siły sterujące jednostkowe Na każdego agenta mogą działać siły indywidualne Pod pojęciem siły rozumiemy : chęć, ochotę, potrzebę, rozkaz itp.. Siły te będą odpowiednio wagowane w zależności od sytuacji i podjętych decyzji i uwzględniane jako siła napędowa w modelu lokomocji
Siły sterujące jednostkowe Zachowawcze: Seek Flee Pursuit Evasion Offset pursuit Arrival Obstacle avoidance
Siły sterujące jednostkowe Seek Ma za zadanie dotarcie do określonego punktu
Siły sterujące jednostkowe Flee Ma za zadanie ucieczkę od określonego punktu Może być wagowane/warunkowane przez odległość do punktu
Siły sterujące jednostkowe Arrive Ma za zadanie dotarcie do określonego punktu, wraz ze spowolnieniem i zatrzymaniem Zachowanie jak Seek, z tym że wektor chęci jest skracany wraz z maleniem dystansu agenta do punktu Aż do zatrzymania
Siły sterujące jednostkowe Pursuit Ma za zadanie przechwycić poruszającego się agenta / obiekt Potrzebuje danych o ruchu obiektu Dane odczytane z obiektu Dane pozyskane poprzez system widzialności agenta Aproksymacja percepcji Predykcja przyszłego położenia celu Przedłużamy aktualny wektor ruchu celu o wartość proporcjonalną do dystansu między agentem a celem oraz odwrotnie proporcjonalną do sumy ich prędkości Przechwycenie przez Seek do punktu predykcji
Siły sterujące jednostkowe Predykowany punkt Pursuit force Velocity Steering
Siły sterujące jednostkowe Evade Unikanie celu Działa dokładnie tak samo jak Pursuit z tym, że końcowy ruch realizuje Flee zamiast Seek
Siły sterujące jednostkowe Offset pursuit Działa jak pursuit z tym, że przesuwamy punkt śledzenia o określoną odległość ZA celem Wektor ruchu celu w przeciwnym kierunku, znormalizowany, przemnożony o wartość offsetu
Siły sterujące jednostkowe Interpose Ma za zadanie ustawienie agenta pomiędzy dwoma zbiegającymi ku sobie obiektami / agentami Np. zachowanie napastnika chcącego przechwycić piłkę podawaną między dwoma graczami Wyliczamy czas T potrzebny agentowi na dotarcie do środka odcinka łączącego pozycje pozostałych dwóch agentów Wyliczamy punkty predykcji ruchu agentów poprzez ekstrapolacje o czas T Wyznaczamy odcinek łączący punkty predykcji Poruszamy się przez Arrive do punktu środkowego odcinka
Siły sterujące jednostkowe Predykowany punkt Pursuit force Velocity Steering
Siły sterujące jednostkowe Predykowany punkt Pursuit force Velocity Steering
Siły sterujące jednostkowe Obstacle avoidance Zależne od środowiska w jakim poruszają się agenci Zwykle realizowane przy użyciu czujek Czujki to wystające wektory dookoła obiektu Są testowane ich kolizje z innymi obiektami W razie stwierdzone kolizji do siły Obstacle avoidance dodajemy wektor prostopadły do zaalarmowanej czujki Podobnie realizowalne omijanie ścian W zaawansowanym środowisku stosujemy snop widzenia/kolizji, który stara się ustawić optymalnie pomiędzy przeszkodami
Siły sterujące eksploracyjne Eksploracjne: Wander Explore/Forage Path following Wall following Flow field / Vector field sampling
Siły sterujące eksploracyjne Wander Ma za zadanie symulować swobodne poruszanie się agenta w środowisku Losowy ruch Wyliczanie losowego kierunku ruchu co klatkę kończy się bardzo drgającym ruchem Brak możliwości łagodnych zakrętów Potrzebna metoda zapewniająca parametryzacje losowego ruchu Łagodność Kierunkowość losowość
Siły sterujące eksploracyjne Wander Metoda okręgu Losujemy punkt na okręgu znajdującym się w określonej odległości od agenta Z każdą klatką Losujemy wektor offsetowy dla punktu okręgu Przemieszczamy się po okręgu Regulujemy moc wartości offsetowej, odległość okręgu od agenta, oraz promień okręgu
Siły sterujące eksploracyjne Wander Wartość offsetu reguluje losowość Odległość okręgu reguluje kierunkowość Wielkość okręgu reguluje łagodność ruchu
Siły sterujące eksploracyjne
Explore Poruszając się po grafie (bądź tworząc go w locie) agent stara się odwiedzić wszystkie możliwe do odwiedzenia miejsca Dochodzi do miejsca, zaznacza jako sprawdzone i wybiera wg zadanej logiki następne miejsce Poruszając się pomiędzy miejscami, zaznacza widoczne dla niego miejsca jak sprawdzone Zachowanie przydatne np. podczas symulacji patroli wroga
Siły sterujące eksploracyjne Path following Agent dostaje listę określonych punktów, waypointów Porusza się od jednego do drugiego, w zadanym porządku poprzez określony rodzaj ruchu (Seek, Arrive) Można stosować dodatkowe algorytmy skracania ścieżki, bądź wygładzania ruchu ze względu na następne punkty ruchu
Siły sterujące eksploracyjne Vector field Mapa jest opisana tzw. polem wektorowym Każdy punkt mapy ma zapisany wektor Agenci używają mapy wektorowej jako sugestii podczas poruszania się Jeśli liczą się długości wektorów można ręcznie kontrolować szybkość poruszania się (decyzji) na określonych fragmentach mapy Mapy malowane ręcznie Np. na terenie przy pomocy vertex color i vertex paint
Siły sterujące grupowe Podstawowe pojęcia: Sąsiedztwo (fov, distance..) Collision avoidance Organizacja przestrzeni Cell partitioning Spatial partitoning OCT…
Siły sterujące grupowe Sąsiedztwo Jest to obszar przestrzeni wyznaczony przez bryłę widzialności kula o promieniu widzenia Stożek oznaczający FOV agenta Przeszukujemy inne obiekty/agentów w symulacji i oznaczamy tych którzy są objęci bryłą
Siły sterujące grupowe Collision avoidance Można stosować dodatkową mocną siłę działającą na dwóch znajdujących się za blisko agentów, która będzie ich skutecznie odpychać w celu uniknięcia przenikania się obiektów Realizowalne przez czujki, które biorą pod uwagę innych agentów Możliwość sztywnego warunku
Siły sterujące grupowe Organizacja przestrzeni Przeszukiwanie sąsiedztwa sprowadza się do przeglądnięcia obiektów Brute force : n^2 Każdy agent przegląda wszystkich agentów W związku z rozmieszczaniem agentów w przestrzeni (2D, 3D) wymagana jest struktura przyśpieszająca testy obszarowe
Siły sterujące grupowe Organizacja przestrzeni Stosujemy podział przestrzeni na komórki (kubełki) Stały Proste przepinanie obiektów w czasie ruchu Wymaga doboru odpowiedniej wielkości kubełka Możliwa degeneracja do n^2 gdy wszyscy w kubełku Dynamiczne partycjonowanie przestrzeni jeśli w pojemniku powyżej k obiektów, podziel pojemnik na dwa mniejsze w logiczny sposób OCT Kosztowne przepinanie obiektów podczas przemieszczania Wydajne przeszukiwanie
Siły sterujące grupowe Główne siły: Separation Cohesion Alignment
Siły sterujące grupowe Separation Tworzy siłę sterującą agenta z dala od agentów w FOV Uśredniona wartość wektorów OD agentów FOV Odwrotnie proporcjonalna do odległości między agentami
Siły sterujące grupowe Alignment Tworzy siłę sterującą, tak by kierunek ruchu agenta zgadzała się z kierunkiem ruchu agentów z FOV Uśredniona wartość wektorów ruchu agentów FOV Odwrotnie proporcjonalna do odległości między agentami Np. samochody jadące ulicą prezentuja sume zachowań Separation i Alignment
Siły sterujące grupowe Cohesion Tworzy siłe sterująca agenta w kierunku środka ciężkości zbioru agentów z FOV Wyliczamy środek ciężkości Poruszamy agenta w jego kierunku poprzez Seek
Siły sterujące grupowe Przykładowe zastosowanie: Leader following: Arrival Separation Collision avoidance Offset Hide Shadow
Scalanie sił Stosujemy w zależności od potrzeb: Proste wagowanie Priorytetowa akumulacja z wagowaniem
Scalanie sił Proste wagowanie Wyliczamy wszystkie siły działające na obiekt Wagujemy je wg zadanych wag Wyliczamy końcową znormalizowana wartość Pojawia się problem sił sprzecznych Np. wall avoidance i separation z grupy Wymaga liczenia wszystkich sił kosztowne
Scalanie sił Priorytetowa akumulacja z wagowaniem Ustalamy odgórny limit na sumę długości sił sterujących Ustawiamy pojedyncze siły wg ich priorytetów Wyliczenia dokonujemy kolejno W momencie przekroczenia odgórnego limitu siły dokonujemy normalizacji Oszczędzamy czas obliczeń Ważne z punktu widzenia logiki obliczenia mają priorytet nad innymi siłami
Scalanie sił Przykład Separation, alignment, cohesion, wall avoidance, obstacle avoidance Z tego zestawu z punktu widzenia logiki wall avoidance i obstacle avoidance mają priorytet nad separation i alignment Wolimy bardziej chaotyczny ruch, niż obiekty przelatujące przez przeszkody
Scalanie sił Priorytetowa akumulacja wagowa z ditheryzacją Każda siła ma przypisane prawdopodobieństwo zaistnienia Kolejność testu sił wyznaczają wagi prawdopodobieństwa Dokonuje się testu prawdopodobieństwa pierwszej siły Jeśli TRUE to wyliczamy i zwracamy jej wartość Jeśli FALSE to testujemy dalej, aż do pierwszego TRUE
Scalanie sił Priorytetowa akumulacja wagowa z ditheryzacją Najszybsza metoda obliczeń Cierpi z powodu braku dokładności Możliwe skaczące wyniki Wymaga wygładzania wartości siły sterującej
Scalanie sił Smoothing W pamięci trzymana jest ostatnia siła sterująca Wyliczana jest oczekiwana siła sterująca Nowa siła sterująca powstaje poprzez interpolacje liniową miedzy ostatnia siłą o oczekiwaną wg różnicy w czasie między ostatnią zmianą Smoothing wykorzystywany w zmianach wielu innych dynamicznych parametrów
Kompleksowe rozwiązania Omówienie kompleksowych przykładów: Symulacja ryb i drapieżnika Stado sarn i wilki Itp...
Podsumowanie For more information contact me Slides will be available at Drobot.org
Questions ?