PostHeaderIcon 1. Wprowadzenie

Początkowa próba tłumaczenia strony http://www.teknikus.dk/tj/gdc2001.htm. Prawdopodobnie wykorzystano przedstawione tam techniki w grze Soldat.

——

Advanced Character Physics
Zaawansowana fizyka postaci

Thomas Jakobsen
IO Interactive, Farvergade 2
DK-1463 Copenhagen K
Denmark
Email: tj@ioi.dk, www: www.ioi.dk/~tj

W skrócie

Niniejszy dokument opisuje podstawowe podejścia do modelowania fizycznego, które są dobrze dostosowane do interaktywnego wykorzystania. Zaprezentowane metody są proste, szybkie i dość stabilne, w podstawowej wersji nie wymagają zaawansowanej wiedzy matematycznej (choć są one oparte na solidnych fundamentach matematycznych). Pozwalają one na symulację zarówno miękkich jak i sztywnych ciał, połączonych przegubem lub ogranicznikami używając kinematyki normalnej, jak i odwrotnej.

Algorytmy zostały opracowane na potrzeby gry Hitman: Codename 47 firmy IO Interactive. Tam, między innymi, system fizyki był odpowiedzialny za przemieszczanie materiałów, roślin, sztywnych ciał oraz za upadanie w unikalny sposób martwych ludzkich ciał w zależności od tego, gdzie zostały one uderzone, w pełni interakcji z otoczeniem (wyniknął z tego powstały w prasie oksymoron „realistyczne animacje śmierci”).

Niniejszy artykuł zajmuje się również takimi kwestiami jak wnikliwy test optymalizacyjny i obsługa tarcia.

Wprowadzenie

Wykorzystanie modelowania fizycznego przy produkcji dobrze wyglądającej dla oka animacji rozważano już jakiś czas temu, a wiele istniejących dziś technik jest już dość zaawansowanych. W literaturze zostały zaproponowane różne podejścia [((bibcite Baraff))], [((bibcite Mirtich))], [((bibcite Witkin))] i inni) i został włożony duży wysiłek w budowę algorytmów, które są dokładne i niezawodne. Tak naprawdę, precyzyjne metody symulacji fizyki i dynamiki były znane już od pewnego czasu w inżynierii. Jednakże, do gier i użytku interaktywnego, dokładność nie jest najważniejszym celem (choć z pewnością wskazane byłoby ją mieć) – tutaj raczej ważne jest wierne odwzorowanie (programista może oszukiwać ile chce, jeśli gracz nadal jest wciągnięty w rozgrywkę) i szybkość wykonywania (tylko niewielki procent czasu będzie przeznaczony do obsługi silnika fizyki). W przypadku symulacji fizyki, słowo „wierność” oznacza również stabilność; metoda nie jest dobra, jeżeli obiekty wydają się przenikać przez przeszkody lub wibrują, kiedy powinny leżeć, albo jeśli cząsteczki materiału mają tendencję do „wybuchania”.

Metody zaprezentowane w niniejszym dokumencie zostały stworzone w celu osiągnięcia tych celów. Algorytmy zostały opracowane i zaimplementowane przez autora oraz wykorzystane w grze komputerowej Hitman: Codename 47 firmy IO Interactive i zostały zintegrowane w silniku Glacier. Metody okazały się dość proste do implementacji (w porównaniu do innych schematów) i mają na dodatek wysoką wydajność.

Algorytm jest iteracyjny, w związku z czym może być zatrzymany w dowolnej chwili. To zapewnia nam bardzo przydatny kompromis między czasem a dokładnością obliczeń: jeżeli zostaje przyjęte małe źródło nieścisłości, kod może zostać przystosowany do szybszego działania; ten margines błędu można nawet dostosowywać na bieżąco. W niektórych przypadkach metoda ta jest o rząd wielkości szybsza od innych istniejących metod. Obsługuje zarówno system kolizji i ‚resting contact’ w tym samym ‚frameworku’ i dobrze radzi sobie z ułożonymi w stertę pudełkami i innymi sytuacjami, które mocno obciążają silnik fizyki.

Powodzenie tej metody wynika z właściwej kombinacji kilku następujących technik, które korzystają od siebie nawzajem:
* całkowanie Verleta
* obsługa kolizji i przenikania przez rzutowanie
* proste spełnianie ograniczeń przy użyciu metody relaksacyjnej
* aproksymacja kwadratowa (dająca solidne przyspieszenie)
* modelowanie ciał sztywnych jako cząstek z ograniczeniami
* zoptymalizowany silnik kolizji ze zdolnością do obliczenia głębokości przenikania

Każdy z powyższych tematów zostanie pokrótce omówiony. W niniejszym dokumencie autor starał się uczynić go dostępnym dla jak najszerszej grupy odbiorców, bez utraty istotnych informacji niezbędnych do realizacji metody. Oznacza to, że techniczne, matematyczne pojęcia są ograniczane do minimum, jeśli nie mają kluczowego znaczenia dla zrozumienia tematu. Celem jest wykazanie możliwości implamentacji dość zaawansowanej i stabilnej symulacji fizycznej bez obciążeń związanych z matematycznymi tajnikami.

Zawartość tego dokumentu jest zorganizowana w następujący sposób. Po pierwsze, w sekcji 2 zostanie opisana niezależna od prędkości reprezentacja cząstek systemu. Ma wiele zalet, przede wszystkim stabilność i fakt, że ograniczenia są proste do implementacji. Sekcja 3 opisuje w jaki sposób odbywa się detekcja kolizji. Następnie, w sekcji 4 system cząsteczek jest rozszerzony o system ograniczeń pozwalający na modelowanie ciała sztywnego. Sekcja 5 wyjaśnia, w jaki sposób skonfigurować odpowiednio ograniczone cząstki systemu w celu emulowania ciała sztywnego. Następnie w sekcji 6 zademonstrowano dalsze rozszerzenie systemu pozwalające na połączenie części ciała stawami (czyli systemów wzajemnie połączonych części z kątami i innymi ograniczeniami). Sekcja 7 zawiera różne notatki i przekazuje pewne doświadczenia związane z implementacją tarcia, itd. Wreszcie, rozdział 8 zawiera krótkie podsumowanie.

W następnych rozdziałach, pogrubiona czcionka oznacza wektory. Składowe wektora są oznaczone indeksem dolnym, tj. \textbf{x} = (x_1, x_2, x_3)

Leave a Reply

Comment moderation is enabled. Your comment may take some time to appear.