Post Lists

2018년 9월 1일 토요일

물리엔진 구현 로드맵 수정 (3)

좋은 자료들을 찾았다.

Game Physics Engine Development
https://www.amazon.com/Game-Physics-Engine-Development-Millington/dp/B001DYZIWM

Real Time Collision Detection
https://www.amazon.com/Real-Time-Collision-Detection-Interactive-Technology/dp/1558607323

그래서 이 책들을 기반으로, 다시 물리엔진을 공부하려고 한다.
인터넷에 있는 자료들을 기반으로 공부하려니, 뭔가 안맞고 빠진 것들이 있어서
불편했는데, 이 책들은 영국에서 공부할 때 조금 읽어봐서 괜찮았었다.

그리고 이 책으로 공부하기로 결정하기 전에, 여러 물리엔진의 Collision Detection 등의 구조를 찾아보았는데,

위의 Real Time Collision Detection을 기반으로 코드를 구성한 것처럼 보인다.

그래서 저 책이 기본부터 가장 잘 설명했기에 저것도 같이 공부하도록 해야겠다.

그래서 Game Physics Engine Development 책을 기반으로 물리엔진을 만들어 나가고,
Real Time Collision Detection 책을 통해 더 견고한 충돌 탐지 알고리즘 지식을 쌓아나간다.

그리고 어느정도 물리엔진이 완성되었을 때에서야,
여러가지 최적화를 진행한다.
예를들어 GJK, SAT, Broad Phase, Narrow Phase, Verlet Integration, RK4 Integration, Continuous Collision, Iterative Dynamics 등등.

따라서, Game Physics Engine Development 책은 예제와 코드가 있어서 그것을 기반으로 OpenGL에 구현하고, 그 결과물들을 하나씩 보고 진행하도록 하자.

Game Physics Engine Development(GPED) 같은 경우에는 Chapter 3부터 시작해서
Particle 코드부터 작성하는 것을 시작으로 한다.

Real Time Collision Detection(RTCD) 같은 경우에는 처음 부터 시작한다.

GPED의 목차는 (약 443p)

  1. Introduction
  2. The mathematics of particles
  3. The laws of motion
  4. The particle physics engine
  5. Adding general forces
  6. Springs and springlike things
  7. Hard constraints
  8. The mass-aggregate physics engine
  9. The mathematics of rotations
  10. Laws of motion for rigid bodies
  11. The rigid body physics engine
  12. Collision detection
  13. Generating contacts
  14. Collision resolution
  15. Resting contacts and friction
  16. Stability and optimization
  17. Putting it all together
  18. Other types of physics
  19. Appendix A - Common inertia tensors
  20. Appendix B - Useful friction coefficients for games
  21. Appendix D - Mathematics summary

RTCD의 목차는 (약 553p)
  1. Introduction
  2. Collision Detection Design Issues
  3. A math and geometry primer
  4. Bounding volumes
  5. Basic primitive tests
  6. Bounding volume hierarchies
  7. Spatial Partitioning
  8. BSP Tree Hierarchies
  9. Convexity-based methods
  10. GPU-assisted Collision detection
  11. Numerical robustness
  12. Geometrical robustness
  13. Optimization
총 약 1000페이지에 걸치는 긴 책들이다.

GPED의 챕터 17까지 읽어서 구현한다면, 괜찮은 물리엔진이 어느정도 구성이 될 것이다.  RTCD의 챕터 9까지 읽어서 구현한다면, 충돌탐지에 대한 견고한 이해가 가능할 것이다.

그래서 이번달까지는 이것에 목표를 두고, 그것을 나의 OpenGL과 결합하는 것에 목표를 둔다. 그리고 올해 내내 이것들을 계속 읽어가면서 모든 이슈들을 이해하고, 이것을 읽은 후에, 물리 엔진을 더 최적화해서 좀 더 견고한 것을 만든다. 일주일에 챕터 1~2개씩 나가도록 해야겠다!

===================================
챕터 목표치를 잘못정했다. 원래는 Chapter 11과, Chapter 5였는데,

다시 책을 살펴보니 괜찮은 물리엔진은
GPED는 Chapter 17 (거의 책을 다 보는 것)
RTCD는 Chapter 9 (이것도 거의 책을 다 보는 것)

까지 보는 것이다.

총 26개의 챕터이다.

사실 GPED의 챕터에서 Collision detection의 경우 RTCD와 겹치는 부분이 있긴하다.

어쨋든 현재 한 주가 지나가고 있는 상태에서,
GPED는 Chapter 3, 4, 5까지 끝냈고, 6을 하고 있는 상태이다.
RTCD는 하나도 나가지 않았다. 그래서 내 목표치를 끝내기 위해서라면..

이번주에 GPED Chapter 7까지 끝낸다고 가정한다면,

GPED는 Chapter 8 ~ 17 = 10개의 챕터이다.
RTCD는 Chatper 1 ~ 9 = 9개의 챕터이다.

그리고 9월의 마지막까지는 3주가 남았다.
그러므로 한 주에 GPED 챕터 3 ~ 4개, RTCD 챕터 3개를 끝내야 한다.
상당히 빡세지만, 너가 집중하면 할 수 있는 것이다.

다시 정신을 차리고, 올바른 물리엔진을 구현하기 위해 집중을하자.

한 주에 GPED 챕터 3 ~ 4개, RTCD 챕터 3개이다.
이 목표를 달성하기 위해 어떻게든 해라.


댓글 2개: