Applicaio i Video Games Game Phsics 474- Fall /4/ Koug Shi Park Mulimedia Egieerig Dakook Uiversi 레이싱게임 : 자동차, 스노우보드, ec.. Simulaes how cars drive, collide, reboud, flip, ec.. 스포츠게임 Simulaes rajecor of soccer, baske balls. Firs Perso Shooers 게임 : UReal Used o simulae bridges fallig ad breakig apar whe blow up. Dead bodies as he are dragged b a limb. 그밖에 : Flowig flags / cloh. 실시간물리는매우계산량이많음. 그러나최근빠른 CPU를사용하여좀더구현이쉬워지고있음. Defiiios 운동학 Kiemaics 힘이배제된운동의변위, 속도와가속도등자세분석 Sud of moveme over ime. No cocered wih he cause of he moveme. 동역학 Damics 물체의운동상태에관한힘의분석 Sud of forces ad masses ha cause he kiemaic quaiies o chage as ime progresses. Game Phsics 운동 Moio 위치 Posiio, 속도 Veloci, 가속도 Acceleraio 힘 Force, 중력 Gravi 부력 Buoac, 저항 Drag 마찰 Fricio 운동마찰 Kieic fricio 정지마찰 Saic fricio 스프링 Sprig
Moio 운동 moio 은시간에따라물체의위치가변하는현상 운동을나타내기위해서속력 speed, 속도 veloci, 가속도 acceleraio 라는물리량을사용 속도 veloci 는벡터임 벡터의방향 direcio 은움직임의방향 direcio 을나타냄 벡터의길이 magiude 는움직임의속력 speed 를나타냄 속도벡터는객체가시간이경과에따라얼마나움직였나를가리킴 Basic Moio 변위 displaceme = 속도 veloci * 시간 ime 만약물체가시작점 P 에서출발하여일정한속도 cosa veloci v만큼움직인다면, 단위시간이경과한후의 P 위치 posiio: i P PP v NOTE: 단위 ui 는거리의경우 meers, 시간의경우 secods, 속도의경우 meers/secod 를의미함 Varig Veloci 앞의공식은물체가일정한속도로움직일때만적용가능 보다일반적인경우, 물체의속도량은시간이경과에따라바뀜 속도는단위시간당움직임위치의변화량 시간에따른위치의변화율 d 속도는위치를시간에대해한번미분한값 : v P :v=v d 속도가일정한경우 v 속도가일정한가속으로변하는경우 : v = v + a 이때, 변위 displaceme 는속도의적분값 iegral displaceme veloci d Acceleraio 가속도는단위시간당속도의변화량 가속도는속도를시간에대해한번미분값 derivaive d d a v P d d 속도는가속도의적분값 iegral veloci acceleraio d
Euler Mehod or Euler Iegraio 오일러방법 Euler mehod, 혹은 Euler Iegraio 테일러급수에서유도된방법으로가장기본적인적분방법 그러나, 비교적오차가크게남 구간 [a, b] 를 N 개의구간으로나누었을때각각의점을 i = a + i*h, i=,,,.., N ad h = b-a/n 오일러방법은 =, i+ = i + h*f i, i, i=,,,.., N- 단위시간별물체가직선으로현재속도 curre veloci 로움직인위치 d P v d P Euler Mehod or Euler Iegraio 오일러방법을적용하여현재위치를계산 : d = ; Acc = CompueAcceleraio; Vel = Vel + Acc * d; Pos = Pos + Vel * d; P v a d P v a Gravi 중력 gravi 는지구의표면에서일정한가속도인 9.8 meer/sec 중력장내의물체는지구중심쪽으로 F=mg 힘을받음. M 은질량 mass 임 F mg g 9.8 m s gravi, -9.8, v v v Force 힘 force 는운동 moio 에변화를일으키는원인 뉴튼역학의제 법칙 가속도의법칙 F ma a F/ m 만약질량 mass M 인물체에힘 force F 가가해졌을때, 오일러방법을적용하여운동 moio 계산 : Acc = F/M; Vel += Acc * d; Pos += Vel * d; Noe ha F, Acc, Vel, ad Pos are all vecors. M is a scalar. 뉴튼역학의 3법칙. 관성의법칙 : 모든물체는다른물체의움직임의영향을받지않는다고할때, 정지해있었다면계속정지해있을것이고, 움직이고있었다면일정한속도로계속운동할것이다.. 가속도의법칙 : 물체의운동량의변화율은, 크기와방향에서, 그물체에작용하는힘에따른다. 3. 작용, 반작용의법칙 : 모든작용에는그반대방향으로같은크기의반작용이존재한다.
Graviaioal Force 만유인력 / 중력 graviaioal force 이우주안에존재하는모든물체들은다른물체를무조건끌어당기는성질이있는데, 그힘의크기는두물체의질량의곱에비례하고, 둘사이의거리의제곱에반비례한다. F의방향은큰질량물체의무게중심 ceer of mass 를향한다. 물리시뮬레이션 보다사실적인시뮬레이션을위해서매프레임마다모든물체간의힘을계산할필요가있다. 여러개의힘이적용될때, 벡터가추가된다. F gravi M, M GM M G6.673 d : mass kg d : disace meer Projecile Moio 시간 =에서의초기위치가 P 이고, 초기속도가 v 인발사체 projecile 의위치 P P v g x x vx, v g, z zvz 발사체가최대높이에도달하는시간 v v g g 발사체가도달할수있는최대높이 h h v g Projecile Moio 발사체가원래의높이로내려올때까지날아간수평거리 v v g 또는 g v xv x x vx에를 대입 r g 발사될때의초기속력 s 가주어졌을때, 발사체를최대한높이올릴수있는발사각도, ssi vz h h si g h g g s 원하는도달거리 r를가기위한발사각도, v xv s cos ssi s rg r r si si g g g s Buoac 공기나물과같은유체속에돌과같은고체가존재하는경우, 중력외에부력과저항력두가지힘이작용. 부력 buoac force 밀도의차이에의하여위로저절로상승하여올라가는부양력 아르키메데스 Archimedes 의원리 : 물체에작용하는부력의크기는물체가밀어낸유체의무게와같다. 부력 = 유체의밀도 x 중력가속도 9.8 m/s x 부피 물체의바닥넓이 x 물체의높이 F fvg buoac f is he desi of he fluid V is he volume of he displaced bod of liquid gisi he graviaio i al acceleraio
Drag 저항력 drag force 물체가움직임으로서그를방해하는유체의힘. 저항력은물체가물이나공기속에서움직일때에만발생. Drag a low veloci Soke s drag: 저항력은물체가클수록 r, 점성이클수록 h, 속도가빠를수록 v 세다. F d bv b6r r :small spherical objec radius, Drag a high veloci: v Fd v AC d vv v F is he force vecor of drag d ρis he desi of he fluid vis he veloci of A is he referece area C is he drag coefficie d he objec relaive o he fluid η: viscosi Kieic Fricio 운동마찰 kieic fricio 서로상대적으로움직이는두표면사이에서발생하는힘. 각자의운동에대한저항으로작용함. FK K N N is he ormal force K is he coefficie of kieic fricio FK K N K mgcos m kg F F G 평행면으로의중력 F 운동마찰 N mgcos mg F G mgsi 3 K a F/ m F F / m gsi gcos G K K Saic Fricio 정지마찰 saic fricio 한표면이그위에놓여있는정지된물체를움직이지못하도록붙잡고있는힘. 물체에가해지는 ageial force의반대방향으로작용하여물체의운동을방해함. 정지마찰력 FS S N N is he ormal force is he coefficie of saic fricio S 물체에가해지는힘이 F S 의최대값을넘는순간물체가움직이기시작하며, 그때부터는 F S 가사라지고, F K 가작용. 정지된물체를움직이게하는것이움직이는물체를계속움직이게하는것보다더힘들다 : F K <F S 평면을기울일때물체가미끄러지기시작하는각도 : 정지마찰력 = 평면과수평인중력성분 Smgcos mgsi a S Momeum 운동량 momeum 은질량 mass 과속도 veloci 의곱 입자의운동량 momeum 변화의속도는입자에작용하는힘 force 에비례하고, 힘의방향과일치한다. 힘 force 은운동량 momeum, P, 의미분값 Pmv dp dv m ma F d d Momeum을사용한운동변위계산 Force = CompueToalForce; Momeum += Force * d; // 힘을적분하여운동량계산 Veloci = Momeum / Mass; // 운동량과질량으로속도계산 Posiio += Veloci* d; // 속도를적분하여위치계산
Agular Veloci 각속도 agular veloci 는물체의회전속도 각속도는시간당각도의변화율 radia/secods 단위 d d 각속도는회전축 A 에평행이고크기가 w 인벡터 A 회전의중심으로부터 r만큼떨어진곳에서물체가속도 v로운동하고있을때 물체의속도 : v r 물체의위치를 r 라고하면물체의선속도 liear veloci: v r Cerifugal Force 물체의선가속도 liear acceleraio a ' r r' ' r r 각속도가일정한경우 : w = a r 가속도 a 는안쪽방향임 : 끝의장력 esio 으로부터발생 물체에서장력과같은크기의반대방향으로힘이작용 - 원심력 cerifugal force: F m r F c r 와 w 가수직인경우, 원심력은한 scalar 로표현됨 mv r F c m r X A a r v=xr Y Rigid Moio 강체운동 rigid moio 강체 rigid bod 란몸의크기변형이없는단단한물체 solid objec 이다. 오로지 raslaio & roaio만가능 강체동역학 Rigid bod damics Liear & agular posiio, veloci, acceleraio Force = CompueToalForce; Momeum += Force * d; Veloci = Momeum / Mass; Posiio += Veloci* d; Torque = CompueToalTorque; AgMomeum += Torque * d; Marix I = Marix*RoIeria*Marix.Iverse; // esor AgVeloci = I.Iverse Iverse*AgMomeum; Marix.RoaeAgVeloci*d; Iegraio Mehod 오일러방법 Euler mehod v = v + a*d, x = x + v*d 변화율이상수일때는 % 정확함 변화율이시간에따라변할때는에러가존재함 floa = ; // 현재시간 floa d = ; // 시간간격 imesamp floa veloci = ; // 초기속도 floa posiio = ; // 초기위치 floa force = ; floa mass = ; floa acceleraio = force/mass; while <= { posiio += veloci * d; veloci += acceleraio * d; += d; Iiial : ' f,, Euler Mehod : hf,
Iegraio Mehod 룽게 - 쿠타방법 Ruge-Kua mehod RK4 는매우정확하고미분에안정적임 Iiial a : ' f,, h RK4: k k k 6 k f, k f k f 3 4 k f h h, k h h, k h, hk k k k3 k4 slope 6 3 3 k 4 Iegraio Mehod void RK4Iegraiovecor3& pos, vecor3& vel, floa, floa d { vecor3 3kVel = vel; vecor3 kacc = f, pos, vel; vecor3 kvel = vel +.5f * d * kacc; vecor3 kacc = f +.5f * d, pos +.5f * d * kvel, kvel; vecor3 k3vel = vel +.5f * d * kacc; vecor3 k3acc = f +.5f * d, pos +.5f * d * kvel, k3vel; vecor3 k4vel = vel + d * k3acc; vecor3 k4acc = f + d, pos + d * k3vel, k4vel; pos += d / 6.f * kvel +.f * kvel +.f * k3vel + k4vel; vel += d / 6.f * kacc +.f * kacc +.f * k3acc + k4acc; while <= { RK4Iegraioposiio, veloci,, d; += d; Sprigs Hooke s Law 스프링의힘은스프링의길이 / 변위에비례 F KK d K is he sprig cosa s s d is he displaceme from res legh 스프링은스프링으로연결된 개의질점 poi mass 으로모델링함. 동일한크기의반대방향의힘이양쪽에적용됨. Sprigs 스프링의입자가멀리떨어질수록 sreched 스프링의안정상태위치로끌어당기는힘이커짐 스프링의양끝을동시에눌렀을때 compressed 입자의링의양끝을동시에눌렀을때 p 입자의위치가스프링의안정상태에서의길이만큼떨어지도록미는힘이작용함
Sprigs 두점간의벡터를사용하여변위와힘의방향을계산 Vecor3 v = poi poi; floa displaceme = v.legh reslegh; v.ormalize; Vecor3 force = sprigcosa * displaceme * v; Sprig Classes class PoiMass { floa mass; floa posiio[3]; floa veloci[3]; floa acceleraio[3]; void ClearForces; void AddForce; void Updae; void Freeze; Sprig Classes class Sprig { floa poimass[]; floa sprigcosa; floa reslegh; void Updae; Simulaig Cloh 옷감 / 천 Cloh 은스프링매쉬로시뮬레이션할수있음 3가지종류의스프링이모든파티클에연결되어있음 Srucural Sprigs Shear Sprigs o preve he flag from shearig
Simulaig Cloh Bed Sprigs o preve he flag from foldig alog he verices. Coec o ever oher paricle. Cross-secio of cloh Paricle Ssems Sar Trek II 983 Geesis Effec 에서처음으로사용됨 Srucural sprigs Bed sprigs Paricle Ssems 입자시스템 Paricle ssems 은폭발, 연기, 화재, 스프레이등을시뮬레이션 젤리나천등과같은비강체객체모델링하는데유용 질량 Mass, 위치 Posiio, 속도 Veloci 를가진무한히작은물체 뉴턴입자의움직은다음과같이적용 : F=ma F=force, m=mass, a=acceleraio a=dv/d Chage of veloci over ime- v=veloci; veloci; =ime ime v=dp/d Chage of disace over ime- p=disace or posiio F, m, v, p로구성된기본데이터구조를가짐 E.g. a 3D paricle migh be represeed as: class Paricle { floa mass; floa posiio[3];// [3] for x,,z compoes floa veloci[3]; floa forceaccumulaor[3]; forceaccumulaor 가있는이유는입자가여러가지힘에의해영향을받을수있기때문 - e.g. 축구공은중력에영향을받고누군가가공을하는외부힘에영향을받음. 무엇인가입자에전달된힘이있다면단순히이힘 X, Y, Z 를 forceaccumulaor 에더추가해주면됨.
E.g. 3D Paricle Ssem class ParicleSsem { paricle *lisofparicles; i umparicles; void EulerSep; // Discussed laer Paricle Damics Algorihm For each paricle { 입자에작용하는힘계산 Compue he forces ha are acig o he paricle 입자의가속도계산 Compue he acceleraio of each paricle F=ma; a=f/m 입자의속도계산 Compue veloci of each paricle due o he acceleraio 입자의위치계산 Compue he ew posiio of he paricle based o he veloci How do ou calculae veloci? Recall ha: a = dv/d ie chage i veloci over ime v = dp/d ie chage i posiio over ime 속도 eloci veloci 는가속도의적분 iegral of acceleraio 위치 posiio 은속도의적분 iegral of veloci 가장단순한수치통합방법 Euler s l Mehod: Q+d = Q + d * Q So i our case: To fid veloci a each simulaio imesep: v+d = v + d * v = v + d * a // we kow a from F=ma To fid he posiio i a each simulaio i imesep: p+d = p + d * p = p + d * v // we kow v E.g. Euler Iegraio EulerSep To fid veloci a each simulaio imesep: v+d = v + d * a // we kow a from F=ma v_ex[x] = v_ow[x] + d * a[x]; v_ex[] = vow[]+d* v_ow[] a[]; v_ex[z] = v_ow[z] + d * a[z]; To fid he posiio a each simulaio imesep: p+d = p + d * v // we kow v p_ex[x] = p_ow[x] + d * v_ow[x]; p_ex[] = p_ow[] + d * v_ow[]; p_ex[z] = p_ow[z] + d * v_ow[z]; Remember o save awa v_ex for he ex sep hrough he simulaio: v_ow[x] = v_ex[x]; v_ow[] = v_ex[]; v_ow[z] = v_ex[z];
Warig abou Euler Mehod 시간단계가크면 big ime seps 적분에러가발생함 이에러가발생되면입자가통제되지않고무한값으로날아가버리는현상이나타남 따라서작은시간단계를사용하라 하지만작은시간단계를사용하면 CPU 시간을많이잡아먹을수있음 v 매시간단계마다 DRAW를할필요는없음 - E.g. imeseps 를계산한후 Error 그결과를그리도록함 더나은해결책 : Esimae Adapive Euler Mehod Midpoi Mehod Implici Euler Mehod Ruge Kua Mehod +d Adapive Sep Sizes 가능한적은계산을할수있도록하는가장이상적으로큰 sep-size d 를원함 그러나, 더큰 sep-size는더많은오류를포함하고결국시스템을불안정하게할수있음 따라서, 일반적으로작은 sep-size를필요로함 불행하게도좀작은 sep-size 는시간이오래걸리수있음 작은 sep-size를모든시간에가능하면강제하지않도록함 Euler wih Adapive Sep Sizes Suppose ou compue esimaes for he veloci a ime +d: So v is our veloci esimae for +d Ad v is our veloci esimae if ou isead ook smaller seps of size d/ each. Boh v ad v differ from he rue veloci b a order of d because Euler s mehod is derived from Talor s Theorem rucaed afer he d erm- see referece i he oes secio of his slide B ha defiiio, v ad v also differ from each oher b a order of d So we ca wrie a measure of he curre error as: E = v-v Le E oleraed be he error ha YOU ca olerae i our game. Adapive sep size d adap is calculaed as approximael: d adap = SqrE oleraed / E * d So a bigger oleraed error would allow ou o ake a bigger sep size. Ad a smaller oe would force a smaller sep size. Hadlig Collisios 입자들 paricles 는표면에닿으면튕겨나와야함. 충돌 collisio 이발생했을때감지해야함. 충돌 collisio 에대한올바른반응을결정해야함
Deecig Collisio Paricle/Plae Collisios 일반적으로충돌문제는복잡함 Paricle/Plae Collisio 가장간단함 Plae/Plae Collisio Edge/Plae Collisio i P = 평면 plae 위에한점 N = 평면 plae 의법선벡터 ormal X = 입자의지점 For X P. N If > he X는평면의밖에존재함 If = he X는평면위에존재함 If < he X 는평면의안쪽에존재함 N P X 안 Collisio Respose dealig wih he case where paricle peeraes a plae ad i should have 만약입자 X가안쪽으로들어온경우, 평면 plae 의표면으로움직여주고, 충돌반응을계산함 안 X Collisio Respose N= 충돌하는 평면의법선벡터 V= V 의수직성분 ormal compoe of a vecor V V= N. V V V V= V 의수평성분 ageial compoe of a vecor V V=V-V Vb= 충돌에 바운스한반응벡터 Vb= Kf* V Kr* V Kr= 반발계수 coefficie of resiuio: 즉, 표면이얼마나탄력적인지. =perfecl elasic; =sick o wall. Kf= 마찰계수 coefficie of fricio: 즉, 바운스한후에 V가얼마나느려지는지. =paricle sops i is racks. =o fricio. V V N Vb
Refereces hp://www.evl.uic.edu/spiff/class/cs46/noes/phsics.pp hp://e.wikipedia.org/wiki/newo%7s_laws_of_moio hp://e.wikipedia.org/wiki/equaios_of_moio hp://e.wikipedia.org/wiki/projecile hp://e.wikipedia.org/wiki/trajecor hp://e.wikipedia.org/wiki/buoac p hp://e.wikipedia.org/wiki/drag_phsics hp://e.wikipedia.org/wiki/euler_mehod hp://e.wikipedia.org/wiki/rk4 hp://www.gaffer.org/game-phsics/