Projektowanie i implementacja silnika fizyki Jakub Jastrzębski

Download Report

Transcript Projektowanie i implementacja silnika fizyki Jakub Jastrzębski

IGK'2009
Projektowanie i implementacja silnika fizyki
Jakub Jastrzębski
Seventhtear
[email protected]
IGK'2009
Plan prezentacji
Objaśnienie tematu referatu
Czym jest silnik fizyki
Implementacja własnych rozwiązań
Rodzaje silników fizyki
Analiza wymagań i projektowanie
Przykładowa architektura
Menadżer obiektów
Menadżer detekcji kolizji
Menadżer numeryczny
Menadżer funkcji zwrotnych
Podsumowanie
Bibliografia
IGK'2009
Czym jest silnik fizyki
Silnik
fizyki,
to
zbiór
mechanizmów
odpowiedzialnych za odwzorowanie praw fizyki,
oddziałujących na występujące w aplikacji obiekty
Silniki fizyki ogólnego przeznaczenia
Silniki fizyki dedykowane
Rozwiązania dedykowane
IGK'2009
Sens implementacji własnych rozwiązań
Przeciw:
Istnieje wiele gotowych rozwiązań
Poświęcony czas
Małe szanse by dorównać możliwościom
gotowych modułów
Za:
Pełny dostęp do kodu
Zrozumienie mechanizmów działania symulacji
fizycznej
Satysfakcja!
IGK'2009
Typy silników fizyki
Siła:
Siła ciągła
Impulsy siły
Rozwiązywanie kolizji:
Iteracyjnie
Jacobianowo
Reprezentacja ciał:
Punktowa
Bryłowa
IGK'2009
Analiza wymagań i projektowanie
Jaka funkcjonalność jest nam potrzebna?
Czy silnik fizyki będzie dobrym rozwiązaniem?
Wybór modelu cyklu życia aplikacji
Kaskadowy
Ewolucyjny
Wybór precyzji obliczeń
Wybór metod numerycznych
IGK'2009
Przykładowa architektura
Podział na mniejsze moduły
Enkapsulacja
IGK'2009
Menadżer obiektów
Jedno miejsce do zarządzania obiektami
Podział obiektów statycznych i dynamicznych
Podział obiektów na różne grupy aktywności
Kontrola bezpiecznej modyfikacji obiektów i ich
stanów
IGK'2009
Menadżer obiektów c.d.
Podział obiektów na statyczne i dynamiczne
Zwiększenie wydajności
Tylko raz generowane drzewo podziału przestrzeni (opierające
się na ciałach statycznych
IGK'2009
Menadżer obiektów c.d.
Podział obiektów na różne grupy aktywności
stan aktywny
Znajdujące się w tym stanie obiekty, zachowują wszystkie swoje
naturalne właściwości. Pracują i zachowują się naturalnie. Biorą
aktywny udział w symulacji
stan zamrożenia
Obiekty posiadające ten stan, nie są symulowane przez system.
Mogą jedynie brać udział przy detekcji kolizji i są traktowane jak
ciała statyczne
IGK'2009
Menadżer obiektów c.d.
stan nieaktywny
W stanie nieaktywnym, ciała nie są procesowane i nie biorą
udziału w detekcji kolizji. Są całkowicie niewidzialne dla systemu
fizyki
IGK'2009
Menadżer obiektów c.d.
Kontrola bezpiecznej modyfikacji obiektów i ich
stanów
Modyfikacje w trakcie trwania klatki symulacji
Specjalne dodatkowe listy
Wartownicy
IGK'2009
Menadżer detekcji kolizji
Broad phase (faza wstępna)
Faza filtracji (grupy kolizyjne)
Detekcja na bryłach ograniczających
Hierarchiczna detekcja kolizji
Detekcja trójkąt-trójkąt
Detekcje obiektów poruszających się z dużą predkością
(CCD – Continuous Collision Detection)
IGK'2009
Menadżer detekcji kolizji c.d.
Broad phase (faza wstępna)
Odrzucenie jak największej liczby ciał przed właściwym
badaniem kolizji
Podział przestrzeni – drzewa czwórkowe (2D, 3D), drzewa
ósemkowe (3D) i inne.
Ułatwienie dla renderera, modułu dźwięku itp
IGK'2009
Menadżer detekcji kolizji c.d.
Faza filtracji (grupy kolizyjne)
Przypisanie obiektom grup kolizyjnych
(Przypisywanie bryłom ograniczającym grup kolizyjnych)
Filtracje poprzez operacje logiczne typu AND i OR na grupach
kolizyjnych
IGK'2009
Menadżer detekcji kolizji c.d.
Detekcja na bryłach ograniczających
Bounding Sphere
OBB (Oriented bounding box)
AABB (Axis aligned bounding box)
Convex Hull
IGK'2009
Menadżer detekcji kolizji c.d.
Hierarchiczna detekcja kolizji
Podzielenie obiektu na mnieksze części i dla każdej
zastosowanie oddzielnej bryły ograniczającej
Zastosowanie drzewa hierarchii dla brył ograniczających obiektu
IGK'2009
Menadżer detekcji kolizji c.d.
CCD – Continuous Collision Detection
Dzielenie okna czasowego na mniejsze
Stosowanie algorytmu śledzenia promieni
Stosowanie tunelingu
Ograniczenie maksymalnych prędkości
IGK'2009
Menadżer numeryczny
Menadżer numeryczny, to fragment systemu odpowiedzialny za
realizowanie obliczeń numerycznych. Jego funkcjonalność
powinna zezwalać na wybór dokładności obliczeń, oraz metod
do ich realizacji
Analiza zagadnień realizowanych przez fizykę
Wybór metod numerycznych
Wybor stabilności rozwiązań
IGK'2009
Menadżer numeryczny c.d.
Po co menadżer numeryczny?
W symulacjach fizycznych dużą rolę odgrywają
równania różniczkowe.
Równania ruchu:
d
v d 2 x
a=
= 2

dt d t
gdzie:
przyspieszenie
a

prędkość
v
położenie
x
t
czas
a=

d
v
dt
v =
d x
dt
Acceleration = Force / mass;
Velocity += Acceleration * dt;
Position += Velocity * dt;
IGK'2009
Menadżer numeryczny c.d.
Znikające obiekty?
Drgające?
Wystrzeliwujące w „kosmos”?
Przykładowa zależność ruchu:
dx
= − 2 x , x  0 = 1
dt
Rozwiązanie:
x  t = x 0 ⋅e
Schemat Eulera:
x  t   t = x  t    t  x '  t 
Po podstawieniu:
x
n1
−2 t
= x n    t  − 2 x n 
IGK'2009
Menadżer numeryczny c.d.
Wykres rozwiązania analitycznego i przybliżenia schematem Eulera
z krokiem czasowym 0,1
IGK'2009
Menadżer numeryczny c.d.
Wykres rozwiązania analitycznego i przybliżenia schematem Eulera
z krokiem czasowym 1
IGK'2009
Menadżer numeryczny c.d.
Wykres rozwiązania analitycznego i przybliżenia schematem Eulera
z krokiem czasowym 1,1
IGK'2009
Menadżer numeryczny c.d.
Zwiekszenie dokładności:
Podział okna czasowego
Zastosowanie algorytmów o większej precyzji
Zwiększenie wydajności czasowej:
Stosowanie różnej precyzji dla różnych zjawisk
fizycznych
IGK'2009
Menadżer funkcji zwrotnych
Pełna elastyczność
IGK'2009
Menadżer funkcji zwrotnych c.d.
Co nam daje:
Kontrola nad zdarzeniami
Możliwość wyboru reakcji
Kontrola nad systemem symulacji
Ważne:
Domyślne reakcje na zdarzenia
IGK'2009
Menadżer funkcji zwrotnych c.d.
double (*TimeHandle)()
int(*CollisionCallback)(CollisionData &CD),
int(*CollisionTerrainCallback)(CollisionData &CD)
void (*SpringBroke)(Spring *spring)
void (*OutFromWorld)(PhysicsItem *item)
IGK'2009
Podsumowanie
Czy warto implementować własne rozwiązania? TAK!
Profesjonalne podejście
Doświadczenie
Nie tylko silniki fizyki
IGK'2009
Bibliografia
Millington I.,„Game physics engine development”, Morgan Kaufmann,
2007
[1]
[2]
Matyka M., „Symulacje komputerowe w fizyce”, Helion, Gliwice 2002
Blanchard P., Devaney R.L., Hall G.R., „Differential equations”,
Thomson Brooks-Cole, 2006
[3]
[4]
Ericson Ch., „Real time collision detection”, Morgan Kaufmann, 2005
[5]
Bourg D.M., „Fizyka dla programistów gier”, Helion, Gliwice 2003
[6]
Resnick R., Halliday D., „Fizyka”, tom 1, PWN, Warszawa 1994
Zbiorowa,„Komputerowe modelowanie dynamicznych oddziaływań
ciał metodą punktów swobodnych”, PWN, Warszawa 2001
[7]
[8]
3D World Simulation, http://www.euclideanspace.com