WinCNT

Physics 본문

물리

중학교 1학년 수준의 물리만 알아도 기본적인 것은 가능하다

 

원과 원 충돌이 가장 간단하게 계산된다

마찰과 탄성을 생각하면 점점 어려워짐

 

물리의 기초는 고전 역학 부분 = 운동 에너지와 운동에 대한 것 등등

 

게임 엔진에서의 물리 엔진은 독특하다

그래픽스 엔진과 마찬가지로 어디까지나 근사치이며 모델링의 결과물임

하지만 우리의 눈 또한 마찬가지로 근사치일 뿐

(2가지 조금 다른 2차원 이미지로 3차원을 인식하는 등)

 

PBR이나 광원을 보존하는 것도 상당히 현실과 비슷하긴 하지만 근사치이다

 

또한 Loop 안에서 매 프레임당 이산된 처리의 특성을 가진다

1프레임 = 약 0.016초(인간의 인지의 한계는 약 0.1초)

이산된 연산(!)이라는 부분에서 물리 엔진의 태생적인 한계가 존재한다

 

Collision Detection 이후

키워드

충돌 이후의 물체의 움직임은 어떻게 되는가?

 

기본적인 물리에서 필요한 것은

운동 방정식 이상, 스프링 운동 미분 방정식 이하 정도의 수준

 

속력은 방향성이 없고, 속도는 방향성이 있음

 

속력 = 거리(의 변화량) / 시간
가속도 = 속도(의 변화량) / 시간

 

가속(도) 운동

어떤 물체의 속도 혹은 속력이 증가하는 운동을 의미한다

다음과 같이 분류할 수 있다

  • 등속(도) 운동
  • 가속(도) 운동
  • 등가속(도) 운동
  • 감속(도) 운동

 

등속(도) 운동

단위 시간 당 동일하게 움직이는 운동

정확한 의미의 등속 운동은 힘을 한 번 가하고 다시 가하지는 안 해야 해서 
마찰력, 공기 저항, 코리올리

등가속 운동

속도의 변화량이 일정함(접선의 기울기의 변화량이 일정함)

(가속도 공식, 역학적 에너지)

 

하지만 우리가 하는 프로그래밍에서는 가속도 공식 등을 사용하지 않는다

왜냐하면 매 프레임마다 계산(즉 미분과 비슷)을 하기 때문이다

그래서 더하기 공식만으로 가속도 공식을 대체할 수 있다

 

물론 이산적으로 계산하지 않을 때는 공식을 써야 한다
(슈륙탄을 던질 때의 예측 궤도 등)

 

실제 게임을 만들 때의 공식은

Vetor = Vector + 가속도

position = position + Velocty

 

delta Vector

  1. 충돌 감지를 시도
  2. 충돌한다면, 서로 겹친 영역을 계산
  3. 겹친 영역을 기반으로 반사 벡터를 계산
  4. 반사 벡터로 대표되는 적절한 delta Vector 계산
  5. delta Vector를 각 물체의 속도에 더해줌?

Circle Collision

Circle Collision은 계산이 간단하다

중점과 중점의 벡터를 연산하면 된다

 

토크는 나중에 생각한다고 치고

운동량과 탄성까지는 설정할 수 있음

 

면과 원

문제는 원과 원의 충돌이 아닐 때(어려움)

 

게임에서의 물리 엔진

게임에서의 물리 엔진은 인과율에 적용되는 경우는 별로 없다

대부분은 이펙트를 위해 사용한다

물론 예외는 항상 있다
물리 엔진 자체가 게임의 핵심이 되는 게임 등(예: 비시즈)
그래도 상용 물리 엔진으로도 충분히 정교한 물리 엔진을 구현할 수 있다

 

Rigid Body

강체

물리학에서 형태가 고정되어 변하지 않는 물체

물리 엔진에서 구현하기 비교적 쉽다

 

강체에서 힌지, 문, 돌아가는 것, 사슬, 천...등등으로 발전함

 

Soft Body

연체

강체와 달리 형태가 변할 수 있는 물체를 의미한다

머리카락, 천, 지글본

지글본(Jiggle Bone)
물리 효과가 추가되어 실제와 같이 움직이는 본을 의미한다
예시) 머리카락의 본, 스커트의 본 등

이산(discrete), 연속(continuous)

물리적 체크를 어떻게 할 것인가

Bullet Through Paper Issue(Problem)

총알이 너무 빠르게 움직여서 종이의 충돌 감지 영역을 넘을 때 등등

최적화, 기타

Sleeping

Constraints

Contact Caching

 

참고 사이트

https://www.toptal.com/game/video-game-physics-part-i-an-introduction-to-rigid-body-dynamics

 

Video Game Physics Tutorial - Part I: An Introduction to Rigid Body Dynamics

Today's video games offer an incredibly realistic, immersive experience, due in large part to their true-to-life simulations of physical phenomena. By far the most commonly simulated effects are those of Rigid Body Dynamics. Toptal is pleased to have our v

www.toptal.com

 

SSS

'게임 프로그래밍(학습 내용 정리) > 2D Game Programming' 카테고리의 다른 글

Transform  (0) 2022.01.12
Collision Detection  (0) 2022.01.07
Direct2D  (0) 2022.01.06
2D 게임 프로그래밍의 간략한 역사  (0) 2022.01.05