Program powinien pobierać dane wejściowe, przetwarzać je i dawać dane wyjściowe. Więc co dokładnie silnik fizyki przyjmuje jako dane wejściowe i dostarcza jako dane wyjściowe?
Program powinien pobierać dane wejściowe, przetwarzać je i dawać dane wyjściowe. Więc co dokładnie silnik fizyki przyjmuje jako dane wejściowe i dostarcza jako dane wyjściowe?
Odpowiedzi:
Silnik fizyki odpowiada za symulowanie ruchów i reakcji obiektów, tak jakby były pod ograniczeniami fizyki w świecie rzeczywistym (lub podobnym do świata rzeczywistego). Należy zauważyć, że nie jest to zwykle samodzielny program, ale raczej element większego, bardziej interesującego programu (takiego jak gra).
Dane wejściowe do symulacji fizyki to na ogół zbiór obiektów („ciał”) o właściwościach (takich jak to, czy są sztywne czy miękkie, ich masy, kształty itd.), A także zbiór sił działających na te ciała.
Na podstawie tych danych wejściowych silnik symuluje zaktualizowane pozycje i orientacje ciał i stosuje je („dane wyjściowe”). Zasadniczo, gdy obiekty zderzają się lub nakładają na siebie, jest to uwzględnione w danych wyjściowych etapu symulacji w postaci wywołania zwrotnego, do którego kod klienta może się podłączyć, aby obsłużyć określoną logikę rozgrywki odpowiednią dla kolizji.
Wejście to prędkość, masa i czas, wyjście to nowe prędkości. Czasami obrót / moment pędu jest również wejściem i wyjściem.
Zasadniczo silniki fizyki próbują symulować skutki zarówno grawitacji, jak i zderzeń. Dla lepszej fizyki silniki oznaczają, że obejmują one zarówno trwałe, jak i tymczasowe odkształcenie obiektów, w tym dzielenie obiektów na wiele obiektów oraz moment pędu obiektów. Idealnie symulowaliby także stres, np. Ile samochodów ciężarowych może przejechać przez ten most, dopóki się nie zapadnie, ale jest to dość rzadkie. Dalsze zmienne symulacyjne, takie jak opór powietrza, również byłyby liczone jako silnik fizyki, ale o ile wiem, nie znalazły się jeszcze w żadnej grze.
Większość silników fizycznych jest w pewnym stopniu wyspecjalizowanych i będzie symulować fizykę do poziomu niezbędnego do gry. Silniki fizyki do gier samochodowych często różnią się znacznie od silników fizyki do strzelanek 3D. Silnik fizyki gry w golfa może mieć nadmierne obliczenia interakcji między piłką golfową a poszczególnymi liśćmi trawy, jednocześnie całkowicie nie radząc sobie z zderzeniami z dużą prędkością i deformacją samochodu (na wypadek uderzenia piłką golfową) .
Zazwyczaj silnik fizyki służy do tego, aby obiekt w grze zachowywał się w realistyczny sposób w stosunku do swojego środowiska, bez konieczności projektowania określonych animacji dla każdego możliwego scenariusza.
W szczególności silnik fizyki weźmie model z zestawem właściwości (masa, stawy itp.) I umieści go w grze zgodnie z zestawem parametrów.
Wczesnym tego przykładem były silniki raggdoll (np. W Unreal), które modelowały sposób, w jaki bezwładne ciała spadałyby ze schodów itp.
W obecnej technologii silniki fizyki często są ściśle zintegrowane z ogólnym pakietem projektowania gier wraz z AI, interfejsem użytkownika w grze, generacją scenek przerywnikowych itp.
Z pewnością można argumentować, że silniki fizyki sięgają początków projektowania gier, np. Pong można uznać za prymitywny silnik fizyki. Jednak najważniejsze jest to, że silnik fizyki jest w stanie generować punkty animacji w locie w oparciu o zestaw parametrów, a nie tylko przy użyciu wcześniej określonych sekwencji animacji z przechwytywania ruchu lub animacji ręcznej.
Jak wspomniano w innych odpowiedziach, w niektórych klasach lub grach, takich jak kierowanie pojazdem lub symulacja lotu, silnik fizyki może być fundamentalny dla gry i jako taki będzie głównym wkładem napędzającym animację na ekranie. Chociaż zazwyczaj termin ten jest używany jako narzędzie ogólnego zastosowania, które może być stosowane w różnych sytuacjach bez konieczności bardzo szczegółowej wiedzy lub analizy kontekstu ze strony dewelopera, a nie bardzo konkretnego symulatora zbudowanego z ziemi dla konkretnego zastosowania.
Silnik fizyki odpowiada za symulację ruchu obiektów w „świecie” (cokolwiek to znaczy w kontekście silnika). Większość silników fizyki używa obecnie do tego mechaniki Newtona, ponieważ są one stosunkowo łatwe do symulacji i „wystarczająco dokładne” do większości celów, chyba że wykonujesz symulację kosmiczną.
Teoretycznie „czysty” silnik fizyki wymagałby trzech danych wejściowych:
Biorąc pod uwagę bezwładność i siły, silnik porusza obiektami. Wyjściem silnika fizyki jest po prostu nowy stan „świata” , który gra może następnie odczytać i zmodyfikować w razie potrzeby.
W praktyce silniki fizyki niekoniecznie są tak „czyste” . Obiekty muszą być tworzone i niszczone, a czasami muszą być przenoszone w sposób, na który nie pozwalają prawa silnika fizyki. Czasami można to zrobić poza silnikiem, ale czasem jest to zrobione wewnątrz, a do tego silnik potrzebuje więcej danych wejściowych. Ale trzy powyższe dane wejściowe obejmują podstawy.
Załóżmy na przykład, że musisz przenieść postać w grze za pomocą joysticka. Jeśli nie używasz silnika fizyki, jest to dość proste: kiedy widzisz, że użytkownik porusza joystickiem, odpowiednio przesuwasz obiekt. W silniku fizyki obiekt nie porusza się bezpośrednio: przykładasz do niego siłę odpowiadającą kierunkowi, w którym chcesz, aby obiekt poruszał się, i pozwalasz silnikowi na poruszanie nim .
Co za różnica? Nawet jeśli na świecie nie ma nic innego, mało prawdopodobne jest, aby obiekt poruszał się w ten sam sposób, ponieważ silnik fizyki poradzi sobie z takimi realistycznymi przyspieszeniami. Ale możliwe jest również, że na obiekt mogą oddziaływać jednocześnie inne siły, podobnie jak bezwładność, a silnik weźmie je wszystkie pod uwagę . Na przykład, jeśli przyłożysz do obiektu siłę skierowaną na północ, ale coś innego przykłada siłę skierowaną na zachód (lub obiekt już poruszał się na zachód i nic tego nie spowalnia), silnik przesunie obiekt na północny zachód.
Właśnie to dostaje silnik fizyki: śledzi obiekty, ich pozycje i prędkości oraz siły działające na nie. Dzięki prawom mechaniki może nawet samodzielnie wytworzyć pewne siły, aby automatycznie poradzić sobie z takimi zderzeniami, tarciem i grawitacją, a wszystko to bez ciebie, twórcy gry, bez konieczności wykonywania dodatkowych czynności.
Silnik fizyki to w zasadzie symulator ciał fizycznych.
Pozwala tworzyć ciała (lub wiele), określając jego właściwości fizyczne, takie jak masa, rozmiar, gęstość itp.
Pozwala także zdefiniować właściwości świata fizyki, w którym zachodzi symulacja (np. Grawitacja).
Wreszcie pozwala na przykładanie sił lub tworzenie połączeń między ciałami.
Po zdefiniowaniu wszystkich tych rzeczy możesz rozpocząć symulację, a silnik fizyki poinformuje Cię, gdzie każde ciało zostanie umieszczone w następnym kroku czasowym (co zwykle odpowiada następnej klatce w grze). I następny i tak dalej ...
Na ekranie widać duszki poruszające się, ponieważ każda klatka silnika gry pyta silnik fizyki
Gdzie jest teraz to ciało?
a Game Engine odpowiednio aktualizuje reprezentację graficzną.
Zazwyczaj lubię postrzegać silnik fizyki jako narzędzie do stosowania praw fizyki w sposób deklaratywny .
W rzeczywistości zamiast pisać kod opisujący, jakie obliczenia należy wykonać, aby określić, gdzie będzie ciało w następnym czasie, po prostu opisuję świat fizyki ustalając atrybuty ciał (i samego świata fizyki) i pozwalam silnikowi fizyki odpowiedzieć to pytanie do mnie.