Applicaio i Vieo Games Game Physics 359 8년가을학기 /4/8 박경신 Racig games: Cars, sowboars, ec.. Simulaes how cars rive, collie, rebou, flip, ec.. Spors games Simulaes rajecory of soccer, baske balls. Icreasig use i Firs Perso Shooers: UReal Use o simulae briges fallig a breakig apar whe blow up. Dea boies as hey are ragge by a limb. Miscellaeous uses: Flowig flags / cloh. 실시간물리는매우계산량이많음. 그러나최근빠른 CPU를사용하여구현이가능해짐. Defiiios iemaics Suy of moveme over ime. No cocere wih he cause of he moveme. Dyamics Suy of forces a masses ha cause he kiemaic quaiies o chage as ime progresses. Game Physics 운동 (Moio) 위치 (Posiio), 속도 (Velociy), 가속도 (Acceleraio) 힘 (Force), 중력 (Graviy) 부력 (Buoyacy), 저항 (Drag) 마찰 (Fricio) 운동마찰 (ieic fricio) 정지마찰 (Saic fricio) 스프링 (Sprig)
Moio 운동 (moio) 은시간에따라물체의위치가변하는현상 운동을나타내기위해서속력 (spee), 속도 (velociy), 가속도 (acceleraio) 라는물리량을사용 속도 (velociy) 는벡터임 벡터의방향 (irecio) 은움직임의방향을나타냄 벡터의길이 (magiue) 는움직임의속력 (spee) 를나타냄 속도벡터는객체가시간이경과에따라얼마나움직였나를가리킴 Basic Moio 변위 (isplaceme = 속도 (velociy) * 시간 (ime) 만약물체가시작점 P 에서출발하여일정한속도 (cosa velociy) v 만큼움직인다면, 단위시간이경과한후의 x( 위치 (posiio): x( ) x + v = NOTE: 단위 (ui 는거리의경우 meers, 시간의경우 secos, 속도의경우 meers/seco 를의미함 Varyig Velociy 앞의공식은물체가일정한속도로움직일때만적용가능 보다일반적인경우, 물체의속도량은시간이경과에따라바뀜 속도는단위시간당움직임위치의변화량 시간에따른위치의변화율 속도는위치를시간에대해한번미분한값 : 속도가일정한경우 : v( = v 속도가일정한가속으로변하는경우 : v( = v + a 이때, 변위 (isplaceme 는속도의적분값 (iegral) isplaceme = velociy v( = x( Euler Meho (or Euler Iegraio) 오일러방법 (Euler meho, 혹은 Euler Iegraio) 테일러급수에서유도된방법으로가장기본적인적분방법 그러나, 비교적오차가크게남 구간 [a, b] 를 N개의구간으로나누었을때각각의점을 i = a + i*h, i=,,,.., N a h = (b-a)/n 오일러방법은 ω =α, ω i+ = ω i + h*f( i, ω i ), i=,,,.., N- 오일러방법을적용하여단위시간별물체가현재속도 (curre velociy) 로직선으로움직인위치 : = x ) = x( ) + v (
Acceleraio 가속도는단위시간당속도의변화량 가속도는속도를시간에대해한번미분한값 a( = v( = 속도는가속도의적분값 (iegral) velociy = acceleraio 오일러방법을적용하여위치계산 : = ; Acc = compueacceleraio(); Vel = Vel * Acc * ; Pos = Pos * Vel * ; x( x( = ( v + a = x + v + a Graviy 중력 (graviy) 는지구의표면에서일정한가속도인 9.8 meer/secos 중력장내의물체는지구중심쪽으로 F=mg 힘을받음. M 은질량 (mass) 임 F = mg ( g = 9.8m ) s graviy (, -9.8, ) v v v Force Graviaioal Force 힘 (force) 는운동 (moio) 에변화를일으키는원인 뉴튼역학의제 법칙 ( 가속도의법칙 ) F = ma a = F / m 만약질량 (mass) M 인물체에힘 (force) F 가가해졌을때, 오일러방법을적용하여운동 (moio) 계산 : Acc = F/M; Vel += Acc * ; Pos += Vel * ; 뉴튼역학의 3 법칙 관성의법칙 : 모든물체는다른물체의움직임의영향을받지않는다고할때, 정지해있었다면계속정지해있을것이고, 움직이고있었다면일정한속도로계속운동할것이다. 가속도의법칙 : 물체의운동량의변화율은, 크기와방향에서, 그물체에작용하는힘에따른다. 작용, 반작용의법칙 : 모든작용에는그반대방향으로같은크기의반작용이존재한다. 만유인력 / 중력 (graviaioal force) 이우주안에존재하는모든물체들은다른물체를무조건끌어당기는성질이있는데, 그힘의크기는두물체의질량의곱에비례하고, 둘사이의거리의제곱에반비례한다. F 의방향은큰질량물체의무게중심 (ceer of mass) 를향한다. 물리시뮬레이션 보다사실적인시뮬레이션을위해서매프레임마다모든물체간의힘을계산할필요가있다. 여러개의힘이적용될때, 벡터가추가된다. F graviy GmM = r m, M : 질점의질량( kg) r : 거리( meer) ( G = 6.673 )
Projecile Moio 시간 =에서의초기위치가P 이고, 초기속도가 v 인발사체 (projecile) 의위치 x( = x + v + g x( = x + vx, = y + vy g, z( = z + vz 발사체가최대높이에도달하는시간 v y = vy g = = g 발사체가도달할수있는최대높이 h h = y + v y g Projecile Moio 발사체가원래의높이로내려올때까지날아간수평거리 v y = y + vy g = y = 또는 = g vxvy x( = x + vx에를대입 r = g 발사될때의초기속력 s 가주어졌을때, 발사체를최대한높이올릴수있는발사각도 ( s siα ) vz h = y + h = y + α = si g( h y g g s 원하는도달거리 r를가기위한발사각도 vxv y ( s cosα )( s siα ) s r = r = = si α α = g g g si ) rg s Buoyacy 공기나물과같은유체속에돌과같은고체가존재하는경우, 중력외에부력과저항력두가지힘이작용. 부력 (buoyacy force) 밀도의차이에의하여위로저절로상승하여올라가는부양력 아르키메데스 (Archimees) 의원리 : 물체에작용하는부력의크기는물체가밀어낸유체의무게와같다. 부력 = 유체의밀도 x 중력가속도 (9.8 m/s ) x 부피 ( 물체의바닥넓이 x 물체의높이 ) Drag 저항력 (rag force) 물체가움직임으로서그를방해하는유체의힘. 저항력은물체가물이나공기속에서움직일때에만발생. Drag a low velociy (Soke s rag): 저항력은물체가클수록 (r), 점성이클수록 (η), 속도가빠를수록 (v) 세다. F = bv b = 6πηr r : 입자의반지름, η : 유체의점성(viscosiy) F buoyacy = ρ liqui gv Drag a high velociy: F ˆ = ρv ACv ρ : 유체의밀도( esiy), A: 영역, C v : 유체에서물체의속력 : rag coefficie, vˆ : 속도의방향
F ieic Fricio 운동마찰 (kieic fricio) 서로상대적으로움직이는두표면사이에서발생하는힘. 각자의운동에대한저항으로작용함. 운동마찰력 F N : 물체가표면에대해가하는힘의법선 μ : 운동마찰계수. 물체들이맞닿는표면의재질에따라다름 = μ N = μ N = μ mg cosθ N = mg cosθ mg m = kg F G = mg siθ θ = 3 F = F G 평행면으로의중력 ) + F ( 운동마찰 ) ( a = F / m = ( F + F ) / m = g siθ μ g cosθ G Saic Fricio 정지마찰 (saic fricio) 한표면이그위에놓여있는정지된물체를움직이지못하도록붙잡고있는힘. 물체에가해지는 ageial force 의반대방향으로작용하여물체의운동을방해함. 정지마찰력 F = μ N S N : 법선방향의힘 μ : 정지마찰계수. 물체들이맞닿는표면의재질에따라다름 S S 물체에가해지는힘이 F S 의최대값을넘는순간물체가움직이기시작하며, 그때부터는 F S 가사라지고, F 가작용. 정지된물체를움직이게하는것이움직이는물체를계속움직이게하는것보다더힘들다 : F <F S 평면을기울일때물체가미끄러지기시작하는각도 : 정지마찰력 = 평면과수평인중력성분 μsmg cosθ = mg siθ θ = a μs Momeum 힘 (force) 은운동량 (momeum) 의미분값 P = mv P = v m = ma = F 모멘텀을사용한방법 힘을적분하여모멘텀계산 모멘텀과질량으로속도계산 속도를적분하여위치계산 Force = CompueToalForce(); Momeum += Force * ; Velociy = Momeum / Mass; Posiio += Velociy* ; Agular Velociy 각속도 (agular velociy) 는물체의회전속도 각속도는시간당각도의변화율 (raia/secos 단위 ) ω ( = θ ( 각속도는회전축 A 에평행이고크기가 ω( 인벡터 ω ( ) = ω( A 회전의중심으로부터 r만큼떨어진곳에서물체가속도 v로운동하고있을때 물체의속도 : v ( = ω( r 물체의위치를 r( 라고하면물체의선속도 (liear velociy): v ( = ω( r(
Cerifugal Force 물체의선가속도 (liear acceleraio) a( = ω'( r( + ω( r'( = ω'( r( + ω( ω( r( [ ] 각속도가일정한경우 : ω (= [ ( r( )] a ( = ω( ω 가속도 a 는안쪽방향임 : 끝의장력 (esio) 으로부터발생 물체에서장력과같은크기의반대방향으로힘이작용 - 원심력 (cerifugal force): ( ω( [ ( r( ]) F c = m ω r( 와 ω( 가수직인경우, 원심력은한 scalar 로표현됨 mv = mω r = r F c X θ A α a r v=ωxr Y Rigi Moio 강체운동 (rigi moio) 강체란물체들이서로에대해절대적으로고정되어있는고체 (soli objec. Traslaio 과 roaio 만가능함 Rigi boy yamics 자동차등 rigi boy moio 을다룸 Liear 와 agular 에대한위치, 속도, 가속도를다루어야함 Force = CompueToalForce(); Momeum += Force * ; Velociy = Momeum / Mass; Posiio += Velociy* ; Torque = CompueToalTorque(); AgMomeum += Torque * ; Marix I = Marix*RoIeria*Marix.Iverse(); // esor AgVelociy = I.Iverse()*AgMomeum; Marix.Roae(AgVelociy*; Iegraio Meho Euler meho v = v + a*, x = x + v* 변화율이상수일때는 % 정확함 변화율이시간에따라변할때는에러가존재함 floa = ; // 현재시간 floa = ; // 시간간격 (imesamp) floa velociy = ; // 초기속도 floa posiio = ; // 초기위치 floa force = ; floa mass = ; floa acceleraio = force/mass; while (<=) { posiio += velociy * ; velociy += acceleraio * ; += ; } Iiial : y'( = f (, ), ) = y Euler Meho : y = y hf (, y) + + Iegraio Meho Ruge-ua meho R4 는매우정확하고미분에안정적임 Iiial : k k k 3 4 = f ( = f ( y' = k + k slope = f (, y), h R4 : y+ = y + 6 k = f (, y ) = f ( h h +, y + k) h h +, y + k) + h, y + hk ) + k 6 ) = y ( k + k + k + k ) 3 3 + k 4 3 4
Iegraio Meho voi R4Iegraio(vecor3& pos, vecor3& vel, floa, floa { vecor3 kvel = vel; vecor3 kacc = f(, pos, vel); vecor3 kvel = vel +.5f * * kacc; vecor3 kacc = f( +.5f *, pos +.5f * * kvel, kvel); vecor3 k3vel = vel +.5f * * kacc; vecor3 k3acc = f( +.5f *, pos +.5f * * kvel, k3vel); vecor3 k4vel = vel + * k3acc; vecor3 k4acc = f( +, pos + * k3vel, k4vel); pos += ( / 6.f) * (kvel +.f * kvel +.f * k3vel + k4vel); vel += ( / 6.f) * (kacc +.f * kacc +.f * k3acc + k4acc); } while (<=) { R4Iegraio(posiio, velociy,, ; += ; } Sprigs Hooke s Law 스프링의힘은스프링의길이 / 변위에비례 F = ( sprig cosa : s s 스프링강도를표현하는상수 ( isplaceme from res legh) : 스프링을이루는 posiio vecors의차 스프링은스프링으로연결된 질점으로모델링함. 동일한크기의반대방향의힘이양쪽에적용됨. Sprigs 스프링의입자가멀리떨어질수록스프링의안정상태위치로끌어당기는힘이커짐 Sprigs 두점간의벡터를사용하여변위와힘의방향을계산 Vecor3 v = poi poi; floa isplaceme = v.legh() reslegh; v.ormalize(); Vecor3 force = sprigcosa * isplaceme * v; 스프링의양끝을동시에눌렀을때입자의위치가스프링의안정상태에서의길이만큼떨어지도록미는힘이작용함
Simulaig Cloh 3 종류의스프링이모든파티클에연결되어있음 Srucural Sprigs Shear Sprigs (o preve he flag from shearig) E.g.: Simulaig Cloh Be Sprigs (o preve he flag from folig alog he verices) Cross-secio of cloh Srucural sprigs Be sprigs Halig Collisios Deecig Collisio Paricles ofe bouce off surfaces.. Nee o eec whe a collisio has occurre.. Nee o eermie he correc respose o he collisio. Geeral Collisio problem is complex: Paricle/Plae Collisio we will look a his oe coz i s easy way o sar Plae/Plae Collisio Ege/Plae Collisio
Paricle/Plae Collisios Collisio Respose ealig wih he case where paricle peeraes a plae (a i shoul have) P=ay poi o he plae N=ormal poiig o he legal sie of he plae. X=posiio of poi we wa o examie. For (X P). N If > he X is o legal sie of plae. If = he X is o he plae. If < he X is o he wrog sie of plae N P If paricle X is o he wrog sie of he plae, move i o he surface of he plae a he compue is collisio respose. X X Collisio Respose Refereces N=ormal o he collisio plae V=ormal compoe of a vecor V is V= (N. V) V V=ageial compoe is: V V=V-V Vb=bouce respose: Vb=( f)* V (r * V) r=coefficie of resiuio: ie how boucy he surface is. =perfecly elasic; =sick o wall. f=coefficie of fricio: ie how much he ageial vecor is slowe ow afer he bouce. =paricle sops i is racks. =o fricio. V V N Vb hp://www.evl.uic.eu/spiff/class/cs46/noes/physics.pp hp://e.wikipeia.org/wiki/newo%7s_laws_of_moio hp://e.wikipeia.org/wiki/equaios_of_moio hp://e.wikipeia.org/wiki/projecile hp://e.wikipeia.org/wiki/trajecory hp://e.wikipeia.org/wiki/buoyacy hp://e.wikipeia.org/wiki/drag_(physics) hp://e.wikipeia.org/wiki/euler_meho hp://e.wikipeia.org/wiki/r4 hp://www.gaffer.org/game-physics/