Modelowanie obiektów opartych na sile sprężystości
Transkrypt
Modelowanie obiektów opartych na sile sprężystości
VII Ogólnopolska Konferencja Inżynierii Gier Komputerowych, Siedlce 2010 Modelowanie obiektów opartych na sile sprężystości Jakub Jastrzębski Seventhtear Streszczenie Niniejszy artykuł omawia siłę sprężystości, wykorzystywaną do modelowania obiektów podlegających symulacji fizycznej. Za jej pomocą można modelować obiekty takie jak: sprężyny, amortyzatory, wahadła, liny, a nawet ciała miękkie i tkaniny. Opisane zostało prawo Hooke'a wraz z jego modyfikacjami pozwalającymi na uzyskiwanie wielu wariantów symulacji zachowań sprężystych. 1. Wstęp Najbardziej popularnymi obiektami, modelowanymi w fizycznych symulacjach komputerowych, są ciała sztywne. Za ich pomocą można zbudować wiele złożonych obiektów, które pod wpływem różnych sił nadają realizmu scenom komputerowym. Jedną z sił, jaka może na nie działać jest właśnie siła sprężystości, dzięki której możliwe jest uzyskanie specyficznego 1 Jakub Jastrzębski Modelowanie obiektów opartych na sile sprężystości ruchu tych obiektów. Ciała same w sobie, są dość ograniczone. Jak nazwa wskazuje ich budowa jest sztywna, przez co nie ma możliwości symulacji wgięć lub odgięć charakterystycznych dla ciał miękkich. Z pomocą przychodzą połączenia elastyczne, które nadają ciałom elastyczną budowę i zachowanie. Z kolei dzięki sztywnym sprężynom1 istnieje też możliwość uzyskania ruchu wahadła. Najciekawszy efekt dają połączenia sprężyste, które można zastosować do konstrukcji tkanin. Siła sprężystości jest łatwym zagadaniem teoretycznym jak i praktycznym, nie ma potrzeby stosowania gotowych silników fizyki do jej realizacji. Można tę siłę zaprogramować bezpośrednio w kodzie programu. Dodatkowo nie jest to skomplikowane obliczeniowo, a co za tym idzie może śmiało być implementowana na urządzeniach przenośnych takich jak telefony komórkowe. 2. Siła sprężystości Czym jest siła sprężystości? Jest to specyficzny rodzaj siły powodujący, że odkształcone ciało stara się powrócić do swojego początkowego stanu (przed odkształceniem). Siłę tą łatwo zaobserwować, gdy ściśniemy gąbkę lub rozciągniemy sprężynę od długopisu. Sama sprężystość ma bardziej ogólnych charakter i dotyczy nie tylko ściskania i rozciągania obiektów, ale również ich skręcania2. Wielkość siły jaka działa na ciało, które doznało odkształcenia jest uzależniona od tzw. współczynnika sprężystości. Współczynnik ten jest skalarem w przypadku jednowymiarowym. Gdybyśmy rozpatrywali wszystkie rodzaje odkształceń wymienione wyżej, bardziej adekwatną wielkością byłby tensor sprężystości, którego zastosowanie byłoby analogiczne do tensora momentu bezwładności ciała. Elastyczność ciał ma swoje granice, o których należy pamiętać. Nie można w nieskończoność rozciągać sprężyny, ponieważ może pęknąć lub odkształcić się permanentnie i nawet sprężystość danego ciała nie będzie w stanie przywrócić mu jego pierwotnego wymiaru i objętości. Oczywiście fakt ten nie musi mieć przełożenia na implementacje, jednak daje znacznie większe możliwości grze nie tylko wizualne ale i przekładające się na gameplay. Wielkość siły jaka działa na odkształcone ciało przedstawia równanie (2.1), które jest zależnością empiryczną znaną powszechnie jako prawo Hooke'a. Jest to specjalny przypadek bardziej ogólnej teorii dotyczącej deformacji ciał. Prawo to dotyczy sprężyn i ciał sprężystych przy założeniu, że sama deformacja nie jest za duża. Wtedy można przyjąć, że wartość siły jest wprost proporcjonalna to odkształcenia, jakiego doznaje ciało[1]. 1 2 Sztywna sprężyna to taka, która nie odkształca się. Nie rozciąga, ani nie ściska. Niniejszy artykuł nie porusza tematu skręcania ciał. 2 VII Ogólnopolska Konferencja Inżynierii Gier Komputerowych, Siedlce 2010 F =−k⋅ h gdzie: F – siła sprężystości k – współczynnik sprężystości h – odchylenie od położenia równowagi (2.1) Przyjrzymy się teraz bliżej podstawowym zastosowaniom siły sprężystości w różnych jej wariantach teoretycznych, jak i sposobach implementacji. 2.1 Oscylator harmoniczny Ruch, w którym punkt materialny porusza się okresowo tam i z powrotem, po tej samej drodze nazywa się ruchem drgającym. Przedstawiony wcześniej wzór (2.1) opisuje właśnie taki idealny ruch, w którym ciało drga w nieskończoność. Jak będzie poruszać się ciało umieszczone na sprężynie? Na masę umieszczoną na sprężynie działają tylko dwie siły F g – siła grawitacji oraz F s - siła sprężysta sprężyny. Sumując te dwie siły działające na zaczepioną masę otrzymujemy równanie (2.2). =m⋅ F g – k⋅h gdzie: (2.2) – całkowita siła działająca na ciało F m – masa ciała g – przyspieszenie ziemskie k – współczynnik sprężystości h - odkształcenie Dzieląc równanie obustronnie przez masę, przejdziemy do postaci, gdzie po lewej stronie równania będziemy mieli przyspieszenie. Najlepiej będzie od razu przedstawić je jako druga pochodna zmiany położenia względem czasu: 3 Jakub Jastrzębski Modelowanie obiektów opartych na sile sprężystości d 2 x k⋅h = g– 2 m dt (2.3) Uzyskaliśmy równanie różniczkowe zwyczajne drugiego stopnia. Aby je rozwiązać numerycznie, należy poprzez podstawienie (2.4) przejść do dwóch równań pierwszego stopnia (2.5): d x v = dt (2.4) { (2.5) d v k⋅h =g – dt m d x . v = dt Jest to układ równań opisujący ruch harmoniczny (nie ma tłumienia drgań)[2]. Ruch powtarzający się w regularnych odstępach czasu nazywany jest ruchem okresowym. Jeżeli ruch ten opisywany jest sinusoidalną funkcją czasu to jest to ruch harmoniczny. Tak też jest w tym przypadku. Równania te można rozwiązać dowolną metodą całkowania, mając na uwadze dokładność. O ile pierwsze równanie warto rozwiązać metodą dokładniejszą, to już drugie takiej operacji nie wymaga i może zostać rozwiązane schematem Eulera. 2.2 Sprężyna z tłumieniem W poprzednim przypadku mieliśmy do czynienia z ruchem harmonicznym, którego drganie trwa nieskończenie długo. Jest to wyidealizowany przypadek ruchu sprężystego nie mniej jednak istotnego i praktyczny z punktu widzenia implementacji w grach komputerowych. Rozpatrzony zostanie teraz ruch z występującym tłumieniem. Aby ruch był tłumiony należy dodać do niego siłę tłumienia, zatem do wprowadzonego wzoru (2.1) dodajemy pewną siłę F t . =−k⋅h F t F (2.6) 4 VII Ogólnopolska Konferencja Inżynierii Gier Komputerowych, Siedlce 2010 Jaka wartość jest siły tłumienia? Siła ta jest wprost proporcjonalna do względnej prędkości przymocowanych do sprężyny ciał. Można powiedzieć, że amortyzacja drgań jest odwzorowaniem utraty energii, zużywanej na odkształcenie się materiału sprężyny. Tłumienie działa w tym samym kierunku co siła sprężystości, lecz z przeciwnym zwrotem. Rozpisując zatem ostatecznie równanie (2.6) otrzymujemy wzór (2.7): =−k s⋅ p1 – p2 p12k t v1 – v2 v12 F gdzie: (2.7) – całkowita siła działająca na ciało F k s – współczynnik sprężystości k t – współczynnik tłumienia p1, p2 – położenia dwóch obiektów przyczepionych do sprężyny v1, v2 – prędkości przyczepionych ciał p12 – wektor jednostkowy wzdłuż którego działa siła sprężystości v12 – wektor jednostkowy wzdłuż którego działa siła tłumienia W ten sposób uzyskaliśmy równanie na ruch ciała przyczepionego do sprężyny. Należy pamiętać, że jeżeli do sprężyny doczepione są dwa obiekty to na każdy z nich działa taka sama siła, tylko z przeciwnymi znakami. 2.3 Implementacja Implementacja ruchu sprężystego jest bardzo prosta. Warto zastanowić się nad wprowadzeniem kilku wariantów obiektów sprężystych. Wcześniej wspomniane było to, że przy dużych siłach odkształcenia, obiekt może nie powrócić do swojego stanu równowagi. Można takie zjawisko bardzo łatwo wymodelować wprowadzając do obiektu sprężyny wartość granicznej jej długości, przy której następuje jej zerwanie. Omawiana siła nie ogranicza się w użyciu do symulacji sprężyny. Można dzięki niej uzyskać też efekt amortyzatora, czyli obiektu który reaguje jedynie na ściskanie, lub efekt liny bungee, gdzie jedynie się rozciąga[3]. Takie zachowanie można prosto uzyskać porównując długość sprężyny do jej długości w stanie równowagi i podejmując działanie w zależności co chcemy uzyskać. Na przykład, symulując amortyzator, należy wyliczyć siłę, tylko gdy długość jest mniejsza od długości równowagi w innym przypadku przyjąć wartość siły równą zero. Analogicznie jest w przypadku liny bungee, tylko 5 Jakub Jastrzębski Modelowanie obiektów opartych na sile sprężystości tym razem interesuje nas przypadek odwrotny, czyli policzenie siły działającej na obiekt w przypadku, gdy obecna długość jest większa niż założona w spoczynku. 2.4 Wersja „Light” Zagadnienie symulacji oddziaływań sprężystych jest lekkie w ujęciu obliczeniowym. Nie ma potrzeby projektowania i implementowania własnego systemu silnika fizyki by uzyskać tak prosty efekt. Nie ma sensu też używać gotowych modułów, jeżeli ma to być jedyna siła występująca w naszej grze. Jest to na tyle łatwe obliczeniowo, że może być z powodzeniem stosowane na urządzeniach przenośnych wyposażonych w ograniczoną moc obliczeniową w stosunku do komputerów PC. Istnieje też inne podejście, które pozwala na uzyskanie ruchu harmonicznego. Jest to podejście matematyczne. Równanie ruchu prostego oscylatora harmonicznego ma postać (2.8): d2 x k ⋅x=0 dt 2 m (2.8) Zakładając, że interesuje nas położenie obiektu, musimy je rozwiązać. Rozwiązaniem tego równania musi być pewna funkcja x t , której druga pochodna równa jest jej samej, tylko z przeciwnym znakiem i stałym współczynnikiem k . Rachunek różniczkowy daje nam do wyboru dwie m takie funkcje: sinus i cosinus (oraz ich kombinacje). Nie wnikając w przekształcenia i sposób rozwiązania równania (2.8), uzyskujemy postać (2.9)3. Takie rozwiązanie daje identyczne efekty, jak w przypadku symulacji fizycznej, a jednocześnie jest jeszcze lżejsze obliczeniowo. 3 Przekształcenia I sposób rozwiązywania tego typu równań jest poza tematyką niniejszego artykułu. 6 VII Ogólnopolska Konferencja Inżynierii Gier Komputerowych, Siedlce 2010 x= A⋅cos t = gdzie: k m (2.9) x – położenie ciała A – amplituda drgań t – czas – faza początkowa drgania k – współczynnik sprężystości m – masa ciała Policzenie funkcji cosinus pewnego kąta jest bardziej wymagające czasowo. Można jednak wartości funkcji trygonometrycznych umieścić w tablicach. Ostatecznie (co jednak nie jest polecane, bo uśmierca cały realizm) można przyjąć, że wartość funkcji cosinus dla pewnego małego kąta jest równa temu kątowi. 3. Wahadło Wahadło matematyczne to punkt materialny zawieszony na nierozciągliwej i nieważkiej nici. Należy zwrócić uwagę, że obiekt na końcu nici będzie punktem materialnym, co z definicji oznacza, że taki obiekt posiada masę, ale nie ma swojej geometrii. Dzięki takiemu rozwiązaniu można symulować drgania (wahania) bez konieczności wyliczania momentu bezwładności. Na zawieszone ciało, działa stała siła grawitacji. Gdy wahadło odchylone jest z położenia równowagi, składowa siły grawitacji wzdłuż nici jest równoważona przez samą nić, a składowa prostopadła do nici działająca w kierunku punktu równowagi nadaje ciału określone przyspieszenie. Przedstawiony poniżej rysunek 3.1. przedstawia wahadło wraz z rozkładem działających sił na zawieszony punkt materialny4. 4 Rysunek pochodzi ze strony http://pl.wikipedia.org/wiki/Wahad%C5%82o 7 Jakub Jastrzębski Modelowanie obiektów opartych na sile sprężystości Rys.3.1. Wahadło matematyczne i rozkład działających sił Symulacja wahadła matematycznego jest nieskomplikowanym zagadnieniem podobnie jak siła sprężystości. Można symulować je na wiele sposobów. W kolejnych rozdziałach zostanie opisanych kilka z nich. 3.1 Wahadło na sztywnej sprężynie Jedną z możliwości symulacji wahadła, jest umieszczenie ciała na sztywnej sprężynie. Sztywna sprężyna posiada tak duży współczynnik sprężystości, że praktycznie nie pozwala się jej rozciągnąć ani ścisnąć. Umieszczając ciało fizyczne na ramieniu i puszczając je z pewnego punktu różnego od równowagi, zacznie się wahać pod wpływem siły grawitacji. Jest to jeden z najłatwiejszych sposobów symulacji drgań, ma on jednak i wady. Sztywna sprężyna to przypadek bardzo mocno wyidealizowany. Nie da się ustawić odpowiednio dużego współczynnika, by sprężyna nie rozciągała się, a zarazem równanie ruchu pozostało stabilne. Dlaczego tak się dzieje? Odpowiedz jest bardzo prosta i wynika ze sposobu rozwiązania równania różniczkowego ruchu. Zmiana położenia ciała w rozwiązaniu numerycznym, uzależniona jest od kroku czasowego. Im większy czas minął od ostatnich obliczeń, tym większego przemieszczenia doznało ciało pod wpływem grawitacji. Siła sprężystości jest siłą przeciwdziałającą przemieszczeniu, ma większą wartość, im większe jest odchylenie od punktu równowagi. Dokładając do tego odpowiednio duży współczynnik sprężystości uzyskujemy, dużą siłę korygującą. Przy długim kroku czasowym, w następnej klatce symulacji może okazać się, że wartość takiej siły jest za duża. Ściśnie ona sprężynę za bardzo, co zaowocuje kolejną siłą tylko przeciwnie skierowaną – po raz kolejny zbyt dużą. Zatem bardzo sztywna 8 VII Ogólnopolska Konferencja Inżynierii Gier Komputerowych, Siedlce 2010 sprężyna, może łatwo wymknąć się spod kontroli, jeżeli nasz krok czasowy jest za długi. 3.2 Równanie ruchu wahadła Jest inny sposób na uzyskanie ruchu wahadła. Można rozwiązać równanie ruchu wahadła w celu policzenia położenia ciała na nim umieszczonego. Punktem wyjściowym będzie rysunek 3.1.. Wartość siły grawitacji dla zaczepionego punktu materialnego jest znana i wynosi: =m⋅ F g gdzie: (3.1) - jest całkowitą siłą działającą na ciało F m - jest masą ciała g - jest przyspieszeniem ziemskim Rozkładając siłę grawitacji na składową równoległą i prostopadłą, można zauważyć, że składowa równoległa znosi się z siłą reakcji nici, która jest równa co do wartości, lecz posiada przeciwny zwrot. Nieznaną siłę działającą prostopadle, jest z kolei ta dana wzorem (3.2). Fg =m⋅g⋅sin gdzie: (3.2) Fg - jest prostopadłą składową wektora grawitacji m – masa ciała g - wektor przyspieszenia ziemskiego - kąt odchylenia Równanie (3.2) jest wynikiem zastosowania funkcji trygonometrycznych kąta ostrego w trójkącie prostokątnym, szczegółowe przejście zostało pominięte. W omawianym przypadku wiadomo, że na zaczepiony punkt działa tylko i wyłącznie siła Fg . Wprowadzając wartość prędkości stycznej do toru ruchu, należy wykorzystać wzór (3.3). Określa on prędkość liniową obracającego się punktu jako iloczyn prędkości kątowej i ramienia łączącego ten punkt z osią obrotu. Możemy teraz zapisać równanie wiążące siłę i przyspieszenie. 9 Jakub Jastrzębski Modelowanie obiektów opartych na sile sprężystości v =⋅r (3.3) v – prędkość liniowa – prędkość kątowa r – ramię łączące obracający się punkt i oś obrotu gdzie: dv m = Fg dt (3.4) dv - jest przyspieszeniem zdefiniowanym jako zmiana prędkości dt gdzie: w czasie Podstawiając równania (3.2) oraz (3.3) do (3.4) otrzymujemy: d = F g⋅sin dt m⋅r (3.5) Wykorzystując (3.1) i (3.6) do (3.5) dostaniemy równanie różniczkowe zwyczajne drugiego stopnia dane wzorem (3.7). = d , dt (3.6) – prędkość kątowa – kąt odchylenia gdzie: 2 d g = ⋅sin . r dt 2 (3.7) Aby rozwiązać powyższe równanie drugiego stopnia, należy skorzystać z podstawienia (3.6) i przekształcić je do dwóch równań pierwszego stopnia oraz rozwiązać numerycznie. Ostatecznie otrzymujemy (3.8). 10 VII Ogólnopolska Konferencja Inżynierii Gier Komputerowych, Siedlce 2010 { d g = ⋅sin dt r d = . dt (3.8) Jest to ostateczny wzór gotowy do zastosowania w symulacji wahadła. 3.3 Wersja „Light” Istnieje oczywiście specjalna wersja „light” symulacji wahadła, która pomija wszelkie równania ruchu i skupia się na bezpośrednim wyliczeniu pozycji obiektu wahającego się (3.9). x=∣r∣sin t , y=∣r ∣cos t , gdzie: (3.9) x , y – współrzędne punktu ∣r ∣ - długość ramienia wahadła – kąt wychylenia - faza początkowa t - czas Równania (3.9) są bardzo zbliżone do równania (2.9), w którym wyliczaliśmy położenie obiektu drgającego na sprężynie. Nie ma w tym nic dziwnego, ruch wahadła jest ruchem drgającym wzdłuż dwóch wymiarów. W przedstawionych równaniach za amplitudę odpowiada długość ramienia wahadła. 4. Sprężyste obiekty złożone W poprzednich rozdziałach wyprowadzone zostały równania wahadła oraz równania ruchu sprężystego. Przedstawiono ich działanie na obiektach prostych. Najciekawsze efekty można jednak uzyskać, budując bardziej złożone obiekty, składające się na przykład z wielu połączeń sprężystych. Dodatkowo ustalając dla różnych połączeń, różne współczynniki sprężystości, tłumienia oraz inne długości graniczne, można uzyskać całą gamę charakterystycznych obiektów. Każdy z nich pod wpływem symulacji fizycznej zachowywać się będzie zupełnie inaczej. 11 Jakub Jastrzębski Modelowanie obiektów opartych na sile sprężystości 4.1 Liny Jednym z przykładów obiektu złożonego z wielu połączeń sprężystych są liny. Wystarczy utworzyć określoną liczbę punktów materialnych i połączyć je kolejno między sobą. Istnieje kilka sposobów na dokonanie takich połączeń. Rysunek 4.1. przedstawia różne modele lin. Rys.4.1. Model liny bazujący na połączeniach sprężystych; a) Łączenia pojedyncze między sąsiadami; b) Połączenia wielokrotne – każdy z każdym; c) Połączenia wielokrotne – między sąsiadami oraz co drugi. Model w podpunkcie a) na rysunku, jest najprostszym z możliwych, jednak lina w takim wypadku bardzo łatwo się rozciąga i nie daje zbyt realistycznego efektu. Podpunkt b) prezentuje z kolei połączenia każdy z każdym. Na pewno polepsza to walory wizualne, jednak znacząco zwiększa też koszt obliczeniowy obiektu. W ostatnim przykładzie mamy połączenia sąsiadów oraz dodatkowo naprzemiennie co drugi punkt. W większości przypadków jest to najlepszy model, będący kompromisem między niedużą liczbą połączeń i realistyczną symulacją. W zależności od ustawień połączeń można je podzielić na kilka kategorii. Opierają się one na sposobie wyznaczania siły, jaka działa na przymocowane obiekty szerzej omówionej w rozdziale 2.3. Budując obiekt złożony ze sprężyn „bungee”, otrzymujemy linę typu „bungee”, której właściwości pozwalają jedynie się rozciągać. Wykorzystując połączenia sztywne, uzyskamy zwykłą linę, która pod wpływem symulacji nie będzie się ani rozciągać, ani ściskać, ale zachowa wszelkie właściwości wizualne liny. Oczywiście zwiększając liczbę jej punktów, symulacja będzie stawała się bardziej naturalna (kosztem większej liczby obliczeń). Jeżeli chodzi o połączenia typu – amortyzator, to i one maja swoje zastosowanie. Można dzięki nim symulować tak zwane „ściągacze”. Czyli obiekty które starają się utrzymać swoje dwa końca w określonej odległości i przeciwdziałające zwiększeniu się dystansu między nimi. Symulacja liny przy zaimplementowanej sile sprężystości, sprowadza się jedynie do odpowiedniego jej wymodelowania wybranym sposobem w 12 VII Ogólnopolska Konferencja Inżynierii Gier Komputerowych, Siedlce 2010 zależności od potrzeb, oraz doboru odpowiednich wartości parametrów. Całą resztą zajmie się symulacja fizyczna. 4.2 Ciała miękkie Ciała miękkie są specjalną grupą obiektów, które mogą doświadczać odkształceń, stałych bądź chwilowych. Istnieje wiele metod ich symulacji, jak metody ciśnieniowe lub sprężynowe. Metody ciśnieniowe polegają na utrzymywaniu krawędzi obiektu sztywnymi połączeniami oraz wprowadzeniu siły ciśnienia wewnętrznego, które zapobiega zapadaniu się obiektu. Można również ciała miękkie zaprojektować jako pewien zestaw połączeń sprężystych, które pozwalają na jego kontrolowaną deformacje. Utrzymywanie kształtu obiektu odbywa się wtedy przez wewnętrzne połączenia przekątne. Podobnie jak w przypadku symulacji lin, najważniejszą kwestią jest odpowiednie dobranie punktów na takim ciele i połączenia ich sprężynami. Rysunek 4.2. przedstawia dwa sposoby wymodelowania obiektu czworokątnego. a) b) Rys.4.2. Model ciała miękkiego: a) Łączenia pojedyncze ; b) Połączenia wielokrotne – każdy z każdym; Połączenie przedstawione w podpunkcie a) jest bardzo niestabilne. O ile utrzymuje ono same punktu razem w pewnej odległości, to nie nadaje się do symulacji. Gdy taki obiekt zaczął by się przemieszczać, od razu nastąpiło by jego złożenie wzdłuż którejś przekątnej. Dopiero podpunkt b) obrazuje poprawnie wymodelowany czworokąt. Bez względu na dobór parametrów sprężystości pozostanie on zawsze stabilny. Wykorzystując omówione rodzaje sprężyn oraz stosując różne współczynniki sprężystości, można wymodelować wiele ciekawych obiektów. I tak sprężyna typu amortyzator, pozwoli uzyskać efekt gąbki. Ciała podlegającemu ściskaniu i prawie w ogóle nie rozciągającemu się. Za to stosując połączenie typu „bungee”, można uzyskać ciekawy obiekt, mogący 13 Jakub Jastrzębski Modelowanie obiektów opartych na sile sprężystości się jedynie rozciągać. Najważniejszą kwestią jest wybór jak najmniejszej liczby punktów połączeniowych, przy zachowaniu oczekiwanego realistycznego zachowania podczas symulacji. 4.3 Tkaniny Zagadnienie symulacji tkanin ma szereg możliwości rozwiązania. Wynika to z faktu, iż do tego typu zjawiska, musimy wybrać nie tylko metody rozwiązania równań ruchu, ale również odpowiednio szybkie i efektywne algorytmy detekcji kolizji, oraz reprezentacji obiektu. Modelując tkaniny, należy zdecydować się na jakąś konkretną ich reprezentację, wybrać i zaakcentować strategiczne dla obiektu punkty, które będą poddawane obliczeniom. Przy symulacji należy nie tylko uwzględniać interakcje z otoczeniem tkaniny, ale również z nią samą. Występujące w przetwarzaniu fizyki algorytmy do podziału przestrzeni, również znajdują zastosowanie do podziału materiału. Przy symulacji obiektów miękkich takich jak omawiany, ważnym elementem jest precyzyjna i szybka metoda wykrywania kolizji wewnętrznych (to jest, takich jak nakładanie się jednego fragmentu materiału na drugi). W podpunkcie 4.2. prezentowane były dwa typy połączeń sprężystych dla czworokąta. Tkaninę można modelować jako sieć połączeń, właśnie tak przedstawionych komórek, które tworzą powierzchnię materiału. Takie przedstawienie opisuje obiekt dwuwymiarowy. Nie jest to jednak żadnym ograniczeniem, ponieważ w grach nie stosuje się trójwymiarowych obiektów (siatek) do reprezentacji tkanin. Jest to zupełnie niepotrzebne rozwiązanie nie wprowadzające do gry żadnego elementu wizualnego. Konstrukcja dwuwymiarowa całkowicie wystarcza i bardzo dobrze odwzorowuje naturalne właściwości i zachowanie się tkaniny podczas symulacji. W przypadku symulacji materiału o dużej powierzchni, powstaje duża ilość punktów, które ją stanowią. A co za tym idzie, możliwości rozłożenia połączeń jest bardzo wiele, jednak tylko niektóre z nich mają sens i spowodują realistyczne zachowanie się obiektu. Po raz kolejny kluczem do sukcesu jest umiejętny dobór odpowiednich połączeń. Przedstawiony poniżej rysunek 4.3. przedstawia niektóre z możliwych metod łączenia punktów w tkaninie. Każda metoda ma swój sens i znajduje zastosowanie w symulacji różnych materiałów. Często jedynym sposobem, jest doświadczalny dobór połączeń wraz ze współczynnikami określającymi sprężystość. 14 VII Ogólnopolska Konferencja Inżynierii Gier Komputerowych, Siedlce 2010 Rys.4.3. Model tkaniny: a) Łączenia pojedyncze ; b) Połączenia wielokrotne – kratka; c) Połączenia wielokrotne – skośne; d) Połączenia wielokrotne – każdy z każdym Na rysunku widać przykładowe cztery typy połączeń. Pierwszy z nich obrazuje najprostszą formę łączenia, bazującą jedynie na sprężystych oddziaływaniach między punktami sąsiednimi. Symulacje takiej siatki podobnie jak w przypadku a) z rysunku 4.2. są bardzo niestabilne i łatwo rozciągliwe. Podpunkt b) rysunku 4.3. zawiera dodatkowo w stosunku do poprzedniej wersji połączenia ukośne, które stabilizują całą siatkę i nie pozwalają się jej zbytnio rozciągać. Różne tkaniny, to różne właściwości. Czasami trzeba zbudować taką siatkę, która będzie odwzorowywać konkretny materiał. Dwa ostatnie podpunkty omawianego rysunku przedstawiają specyficzne metody łączenia. W przypadku, gdy na obiekt 15 Jakub Jastrzębski Modelowanie obiektów opartych na sile sprężystości będą oddziaływać duże siły, może się zdarzać, że niektóre połączenia będą rozciągać się bardzo mocno, a ich sąsiedzi prawie w ogóle. Takie sytuacje występują przy dużych siłach przykładanych do konkretnego punktu na siatce. Można temu zapobiec stosując połączenia wielokrotne. To znaczy, że każdy punkt połączony jest ze swoim sąsiadem oraz punktem kolejnym. Na rysunku w podpunkcie c) zaznaczone to zostało czerwonymi liniami (dla przejrzystości jedynie na dwóch krawędziach, jednak tyczy się to wszystkich punktów siatki). Można oczywiście zwiększyć liczbę wiązań i rozszerzyć je na bardziej oddalone punkty, jednak nie zawsze jest to konieczne, a należy pamiętać, że zwiększa to nakład czasowy na obliczenia w jednej klatce symulacji - podpunkt d). Eksperymentowanie z rozłożeniem wiązań, może dać ciekawe rezultaty. Wiadomo, że niektóre tkaniny rozciągają się bardziej po przekątnej niż wzdłuż, przykładem może być szalik. Aby odwzorować ten obiekt należy zwiększyć liczbę wiązań prostopadłych, pozostawiając tym samym niedużą liczbę wiązań przekątnych, bądź usztywnić połączenia prostopadłe. 5. Zakończenie W artykule przedstawiony został problem modelowania i symulacji ciał, których głównym elementem budowy są połączenia sprężyste. Podstawowe elementy jak sprężystość czy ruch wahadła zostały przedstawione z dwóch ujęć. W pierwszym zostały zaprezentowane i wykorzystane równania ruchu ciał. Jest to jednocześnie dobre wprowadzenie do symulacji oddziaływań sił w fizyce. W drugim z kolei, za pomocą matematycznych modeli, można było wyznaczyć położenie punktów materialnych na końcach wahadeł i sprężyn. Podejście, bardziej cenione i wykorzystywane podczas implementacji na urządzeniach mobilnych. Bibliografia [1] Resnick R., Halliday D. , „Fizyka” tom 1. PWN , Warszawa 1994 [2] Matyka M., „Symulacje komputerowe w fizyce”, Helion, Gliwice 2002 [3] Millington I. , „Game physics – engine development” , Elsevier 2007 Modeling objects based on spring force Abstract This article presents spring force, used to simulate different objects in physics simulations. This force can model objects such as: springs, absorbers, pendulums, ropes, also soft bodies and cloths. Article describes Hooke's law and it's variants that allows to simulate different spring behaviors. 16