Posts Tagged ‘łączenie ciał’

PostHeaderIcon 5. Łączenie ciał

Możliwe jest łączenie wielu ciał sztywnych używając stawów, bolców, zawiasów, itp. Po prostu niech oba ciała sztywne współdzielą cząstkę – w ten sposób będą połączone bolcem. Gdy współdzielą dwie cząstki, będą połączone zawiasem. Patrz rys. 7.

Możliwe jest również, aby połączyć dwa ciała sztywne za pomocą pręta lub jakiegokolwiek innego rodzaju ograniczenia – aby to zrobić, po prostu dodaj odpowiednią poprawkę do kodu do pętli relaksacyjnej.

Takie podejście pozwala na skonstruowanie kompletnego modelu ludzkiego ciała. Aby uzyskać dodatkowy realizm będą także musiały zostać wprowadzone ograniczenia kątowe. Można to osiągnąć różnymi sposobami. Prostym sposobem jest użycie pręta, który wymusza ograniczenia, jeśli tylko odległość pomiędzy dwoma cząstkami spada poniżej pewnego progu (matematycznie mamy jednostronne ograniczenie odległości (nierówność), |x_2 – x_1| > 100). W efekcie, dwie cząstki nigdy nie będą się znajdować zbyt blisko siebie. Patrz rys. 8.

Inną metodą ograniczania kątów jest spełnienie ograniczenia iloczynu skalarnego:

 (x_2-x_0) \cdot (x_1-x_0) < \alpha

Cząsteczki mogą mieć ograniczony zakres ruchu, na przykład w obrębie określonych płaszczyzn. Po raz kolejny, cząstki z pozycjami nie spełniającymi wyżej wymienionych ograniczeń powinny zostać przeniesione – decydowanie w jaki dokładnie sposób jest nieco bardziej skomplikowane, w związku z ograniczeniami pręta.

W Hitmanie korpusy nie składają się ze sztywnych ciał wzorowanych na czworościanach. Są jeszcze prostsze, gdyż składają się z cząsteczek połączonych przez ograniczający pręt w efekcie tworząc prętowe kształty ( :) Stick Figures). Patrz rys. 9. Położenie i orientacja dla każdej kończyny (wektora i macierzy) są następnie uzyskane dla celów renderingu z pozycji cząstek przy użyciu różnych iloczynów wektorowych i normalizacji wektorów (sprawiając, że kolana i łokcie zginają się naturalnie).

Innymi słowy, każda widziana pojedyncza kończyna nie jest ciałem sztywnym ze zwykłymi 6 stopniami swobody. Oznacza to, że fizycznie rotacja wokół osi kończyny nie jest symulowana. Zamiast tego, system animacji szkieletowych użyty do instalacji wielobocznej siatki postaci jest zmuszony do ustalania pozycji nogi, na przykład takiego, że kolana wydają się zginać naturalnie. Ponieważ rotacja nóg i ramion wokół osi nie obejmuje zasadniczego ruchu z upadającego ludzkiego ciała, to działa w porządku i faktycznie w ogromnym stopniu optymalizuje szybkość.

Ograniczenia kątowe są realizowane w celu egzekwowania ograniczeń ludzkiej anatomii. Prosty test sprawdzania kolizji jest spełniany przez strategiczne wprowadzenie ograniczenia nierówności na odległość, jak wspomniano powyżej, na przykład między dwoma kolanami – upewniając się, że nogi nigdy się nie krzyżują.

W przypadku kolizji z otoczeniem, które składa się z trójkątów, każdy pręt jest reprezentowany jako zamknięty cylinder. Gdzieś w systemie kolizji, a ‚subroutine’ obsługują kolizje między cylindrem a trójkątami. Po wykryciu kolizji, głębokość przenikania i punkty są wyodrębniane, a zderzenie jest traktowane jak pręt ( handled for the offending stick), dokładnie tak, jak opisano na początku sekcji 5.

Oczywiście, wiele dodatkowych ulepszeń było koniecznych, aby uzyskać poprawne wyniki.