Niedawno rozpocząłem projekt budowy silnika fizyki. Miałem nadzieję, że możesz mi udzielić porady dotyczącej dokumentacji i / lub najlepszych technologii w tym zakresie.
Przede wszystkim widziałem, że w przypadku tego zadania wysoce zalecane jest opracowanie Game-Physics-Engine-Development i zastanawiałem się, czy możesz dać mi drugą opinię. Ponadto, przeglądając Amazon, natknąłem się na architekturę Game Engine, a ponieważ chcę zbudować silnik fizyki do gier, pomyślałem, że może to być również dobra lektura.
Po drugie, wiem, że symulowanie fizyki wymaga dużej mocy obliczeniowej, więc chciałbym użyć CUDA lub OpenCL. Teraz skłaniam się ku OpenCL, ponieważ działałoby to zarówno na chipsetach NVIDIA, jak i ATI.
PS: Będę implementować to w C ++ na Linuksie.
źródło
Maik ma rację, prace Baraffa są doskonałym początkiem, ale nie zapominaj, że Chris Heckers pisze o sztywnej dynamice ciała: http://chrishecker.com/Rigid_Body_Dynamics !
Również jego rada dotycząca „[…] wyrzucisz silnik” jest całkowicie prawdziwa. Ale wiele się nauczysz!
Odnośnie części Twojego pytania do CUDA / OpenCL: Jeśli znasz CUDA, przejście na OpenCL staje się bardzo łatwe. Polecam najpierw naukę CUDA, ponieważ jest tam tak wiele dobrych samouczków, przykładowych bibliotek kodu i obliczeń. Na przykład:
Pamiętaj jednak: rozpoczęcie pracy w CUDA jest łatwe, rozpoczęcie symulacji fizyki jest o wiele trudniejsze, ale połączenie obu jest sporym wyzwaniem!
źródło
Zaczynałem też od Baraffa, ale teraz jest to trochę przestarzałe. To, czego potrzebujesz, to iteracyjne solwery, a najlepszym imo na papierze jest iteracyjna dyanmika Erin Catto . Masz wszystko, czego potrzebujesz, aby wdrożyć silnik fizyki. Możesz zagłębić się w pracę doktorską Erlebena, jeśli potrzebujesz więcej szczegółów (takich jak stawy i więcej matematyki), ale to wszystko. Żałuję, że nie znalazłem go od samego początku - przejrzyj trochę forum Bullet, jest tam mnóstwo informacji (może za dużo).
Jeśli chodzi o książki, wiele książek jest rozczarowujących, ale polecam animację opartą na fizyce Kenny'ego Erlebena lub Game Physics Pearls.
Nie znam dużo CUDA / OpenCL (chociaż zawsze chciałem to zrobić), ale zdecydowanie powinieneś sprawdzić pracę Takahiro Harady.
źródło