Rok akademicki 2012/2013 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut Informatyki PRACA DYPLOMOWA INŻYNIERSKA Piotr Bałut DuctilePhysics - silnik fizyczny 2D wspierający deformację obiektów Opiekun pracy dr hab. inż. Tomasz Martyn Ocena: ..................................................... ................................................................. Podpis Przewodniczącego Komisji Egzaminu Dyplomowego Specjalność: Inżynieria Systemów Informatycznych Data urodzenia: 1988.02.16 Data rozpoczęcia studiów: 2008.10.01 Życiorys Urodziłem się 16.02.1988 roku w Białej Podlaskiej. W latach 2004-2007 uczęszczałem do Katolickiego Liceum Ogólnokształcącego im. Cypriana Norwida w Białej Podlaskiej. W lutym 2008 roku rozpocząłem studia na Wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej, w toku studiów obierając specjalizację Inżynieria Systemów Informatycznych. W październiku 2011 roku rozpocząłem pracę jako programista w firmie Comarch S.A. Interesuję się komputerami, modelarstwem, gry planszowymi i bitewnymi, a także literaturą – w szczególności fantastyką i fantastyką naukowa. ....................................................... Podpis studenta EGZAMIN DYPLOMOWY Złożył egzamin dyplomowy w dniu .................................................................................. 20__ r z wynikiem .................................................................................................................................. Ogólny wynik studiów: ............................................................................................................... Dodatkowe wnioski i uwagi Komisji: ......................................................................................... ...................................................................................................................................................... ...................................................................................................................................................... 2 STRESZCZENIE Streszczenie pracy w języku polskim. Praca przedstawia sposób implementacji dwuwymiarowego silnika fizycznego przeznaczonego do przeprowadzania symulacji w czasie rzeczywistym, posiadającego wsparcie zarówno dla brył sztywnych, jak i ulegających deformacjom ciał miękkich. Praca przedstawia ogólną budowę silnika fizycznego oraz przedstawia różne podejścia i algorytmy stosowane podczas budowy silników fizycznych. M.in. przedstawia podejścia do symulacji ciał miękkich oraz wyzwania związane z ich implementacją w porównaniu do implementacji silnika obsługującego tylko bryły sztywne. Zaprezentowano opis implementacji poszczególnych modułów silnika fizycznego, takich jak całkowanie równań ruchu, detekcja i odpowiedź na kolizje, a także schematyczny projekt implementacji silnika. Szczególny nacisk położony jest na opis integracji symulacji brył sztywnych z symulacją ciał miękkich. Słowa kluczowe: silnik fizyczny, 2d, masy i sprężyny, ciała miękkie, bryły sztywne DuctilePhysics - 2D physics engine with body deformation support Summary in English. The thesis describes implementation process of 2D physics engine, dedicated to performing real-time simulation with support for both rigid and soft bodies. Methods and algorithms useful during physics engine implementation and soft body dynamics implementation are presented. Differences between pure rigid body simulation and simulation consisting of both soft and rigid bodies are demonstrated. Moreover the document includes a description of implementation of modules that physics engine is built of, namely equation of motion integrator, collision detection subsystem and collision response subsystem. The emphasis is put on describing how the soft and rigid body simulations are integrated with each other. Keywords: physics engine, 2d, masses and springs, soft body, rigid body 3 Spis treści 1. Wstęp ...................................................................................................................................... 7 1.1. Wprowadzenie ................................................................................................................. 7 1.2. Cel pracy ......................................................................................................................... 8 1.3. Istniejące rozwiązania ..................................................................................................... 9 2. Budowa silnika fizycznego .................................................................................................. 11 2.1. Modelowanie ciał fizycznych ........................................................................................ 11 2.2. Całkowanie równań ruchu ............................................................................................. 13 2.3. Wykrywanie kolizji ....................................................................................................... 13 2.3.1. Założenia odnośnie działania systemu wykrywania kolizji ................................... 13 2.3.2. Reprezentacja geometryczna ciał ........................................................................... 15 2.3.3. Działanie systemu wykrywania kolizji .................................................................. 15 2.4. Odpowiedź na kolizje .................................................................................................... 19 3. Opis implementacji .............................................................................................................. 22 3.1. Założenia projektowe .................................................................................................... 22 3.2. Ogólny rys implementacji silnika ................................................................................. 23 3.2.1. Organizacja plików źródłowych i klas ................................................................... 23 3.2.2. Kolejność przetwarzania danych ............................................................................ 24 3.2.3. Schemat modułów silnika ...................................................................................... 25 3.3. Reprezentacja ciał ......................................................................................................... 28 4 3.3.1. Geometria ciała ...................................................................................................... 29 3.3.2. Fizyczny model ciała .............................................................................................. 31 3.4. Implementacja algorytmu SAP ..................................................................................... 33 3.5. Implementacja wykrywania kolizji na bazie SAT ........................................................ 34 3.6. Impulsowa odpowiedź na kolizje .................................................................................. 36 3.7. Grupowanie punktów kontaktowych ............................................................................ 37 3.7.1. Model zderzeń ciał ................................................................................................. 37 3.8. Korekcja położenia ciał ................................................................................................. 39 3.9. Interfejs biblioteki ......................................................................................................... 40 3.9.1. Klasa DuctilePhysics .............................................................................................. 40 3.9.2. Ciała ....................................................................................................................... 42 3.9.3. Generowania szablonów ciał .................................................................................. 44 3.10. Program testowy .......................................................................................................... 46 4. Testowanie ........................................................................................................................... 48 4.1. Funkcje programu testowego ........................................................................................ 48 4.2. Interfejs programu testowego ........................................................................................ 49 4.3. Sceny testowe ................................................................................................................ 52 5. Podsumowanie i wnioski ...................................................................................................... 53 5.1. Ocena implementacji ..................................................................................................... 53 5.2. Perspektywy rozwoju .................................................................................................... 54 5 6. Bibliografia ........................................................................................................................... 56 7. Spis rysunków ...................................................................................................................... 57 8. Spis załączników .................................................................................................................. 57 6 1. Wstęp 1.1. Wprowadzenie Symulowanie fizyki jest niezbędne w wielu gałęziach współczesnego przemysłu, badań naukowych oraz elektronicznej rozrywki. W dziedzinach tych stosowane są różnorakie silniki fizyczne – systemy, których rolą jest odzwierciedlenie zdarzeń znanych ze świata rzeczywistej
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages57 Page
-
File Size-