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⋅ p1 – p2  p12k t  v1 – v2  v12
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
p1, p2 – położenia dwóch obiektów przyczepionych do sprężyny
v1, v2 – prędkości przyczepionych ciał
p12 – wektor jednostkowy wzdłuż którego działa siła
sprężystości
v12 – 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).
Fg =m⋅g⋅sin 
gdzie:
(3.2)
Fg  - 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 Fg  . 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  = Fg 
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

Podobne dokumenty