이미 소장하고 있다면 판매해 보세요.
|
CHAPTER 1 소개
1.1 게임 물리란 무엇인가… ………………………………………………… 2 1.2 물리 엔진이란 무엇인가… ……………………………………………… 3 1.2.1 물리 엔진의 장점… …………………………………………………… 4 1.2.2 물리 엔진의 약점… …………………………………………………… 5 1.3 물리 엔진으로의 접근방법………………………………………………… 6 1.3.1 물체의 종류… ………………………………………………………… 6 1.3.2 접촉 해소… …………………………………………………………… 7 1.3.3 충격량과 힘… ………………………………………………………… 8 1.3.4 만들고자 하는 것… …………………………………………………… 9 1.4 물리 엔진에서의 수학…………………………………………………… 10 1.4.1 알아야 할 수학… ……………………………………………………… 11 1.4.2 살펴볼 수학 연산… …………………………………………………… 12 1.4.3 이 책에서 다룰 수학 내용……………………………………………… 13 1.5 이 책의 소스코드………………………………………………………… 13 1.6 이 책의 구성……………………………………………………………… 15 1.6.1 연습문제와 프로젝트… ……………………………………………… 15 01 P A R T 입자 물리학 CHAPTER 2 입자 수학 2.1 벡터… …………………………………………………………………… 19 2.1.1 왼손 좌표계 vs 오른손 좌표계………………………………………… 24 2.1.2 벡터와 방향… ………………………………………………………… 26 2.1.3 스칼라와 벡터의 곱셈… ……………………………………………… 29 2.1.4 벡터의 덧셈과 뺄셈… ………………………………………………… 31 2.1.5 벡터의 곱셈… ………………………………………………………… 34 2.1.6 성분 곱셈… …………………………………………………………… 34 2.1.7 벡터의 내적… ………………………………………………………… 35 2.1.8 벡터곱…………………………………………………………………… 38 2.1.9 정규직교 기저… ……………………………………………………… 42 2.2 미적분학… ……………………………………………………………… 44 2.2.1 미분……………………………………………………………………… 44 2.2.2 적분……………………………………………………………………… 50 2.3 요약… …………………………………………………………………… 52 2.4 연습문제… ……………………………………………………………… 53 CHAPTER 3 운동법칙 3.1 입자… …………………………………………………………………… 58 3.2 운동 제1법칙과 제2법칙… …………………………………………… 59 3.2.1 힘 방정식… …………………………………………………………… 61 3.2.2 입자에 질량을 적용하기… …………………………………………… 62 3.2.3 운동량과 속도… ……………………………………………………… 64 3.2.4 중력……………………………………………………………………… 64 3.3 적분기… ………………………………………………………………… 66 3.3.1 업데이트 방정식… …………………………………………………… 67 3.3.2 완전한 형태의 적분기… ……………………………………………… 70 3.4 요약… …………………………………………………………………… 71 3.5 연습문제… ……………………………………………………………… 72 CHAPTER 4 입자 물리 엔진 4.1 탄도학… ………………………………………………………………… 75 4.1.1 발사체 속성 지정… …………………………………………………… 76 4.1.2 구현……………………………………………………………………… 78 4.2 불꽃놀이… ……………………………………………………………… 81 4.2.1 불꽃 데이터… ………………………………………………………… 81 4.2.2 불꽃놀이 계산 규칙… ………………………………………………… 82 4.2.3 구현……………………………………………………………………… 85 4.3 요약… …………………………………………………………………… 89 4.4 프로젝트… ……………………………………………………………… 89 02 P A R T 질량 집합 물리 CHAPTER 5 Aing General Forces 5.1 달랑베르의 원리………………………………………………………… 93 5.2 힘 발생기………………………………………………………………… 96 5.2.1 인터페이스와 다형성… ……………………………………………… 98 5.2.2 구현……………………………………………………………………… 98 5.2.3 중력 힘 발생기… …………………………………………………… 102 5.2.4 드래그 힘 발생기… ………………………………………………… 103 5.3 내장 중력과 댐핑………………………………………………………… 105 5.4 요약… …………………………………………………………………… 105 5.5 연습문제… ……………………………………………………………… 106 CHAPTER 6 스프링과 스프링 유사 물체 6.1 후크의 법칙……………………………………………………………… 107 6.2 스프링 힘 발생기………………………………………………………… 110 6.2.1 기본적인 스프링 힘 발생기………………………………………… 111 6.2.2 고정 스프링 힘 발생기……………………………………………… 113 6.2.3 탄성 고무줄 힘 발생기……………………………………………… 115 6.2.4 부력 힘 발생기… …………………………………………………… 117 6.3 뻣뻣한 스프링…………………………………………………………… 121 6.3.1 뻣뻣한 스프링 문제… ……………………………………………… 122 6.3.2 뻣뻣한 스프링을 흉내 내기………………………………………… 124 6.4 요약… …………………………………………………………………… 131 6.5 연습문제… ……………………………………………………………… 132 CHAPTER 7 강성 제약 조건 7.1 단순 충돌 해소…………………………………………………………… 135 7.1.1 접근 속도… ………………………………………………………… 136 7.1.2 반발 계수… ………………………………………………………… 137 7.1.3 충돌의 방향과 접촉 법선…………………………………………… 138 7.1.4 충격량 … …………………………………………………………… 140 7.2 충돌 처리………………………………………………………………… 142 7.2.1 충돌 검출… ………………………………………………………… 145 7.2.2 겹치는 부분의 해결… ……………………………………………… 146 7.2.3 정지 접촉… ………………………………………………………… 151 7.3 접촉 처리기 알고리즘…………………………………………………… 156 7.3.1 접촉 처리 순서… …………………………………………………… 157 7.3.2 시분할 엔진… ……………………………………………………… 161 7.4 충돌과 비슷한 것들……………………………………………………… 163 7.4.1 끈……………………………………………………………………… 163 7.4.2 막대기………………………………………………………………… 166 7.5 요약… …………………………………………………………………… 169 7.6 연습문제… ……………………………………………………………… 169 CHAPTER 8 질량 집합 물리 엔진 8.1 엔진 개요………………………………………………………………… 173 8.2 물리 엔진의 사용………………………………………………………… 179 8.2.1 출렁다리와 끈… …………………………………………………… 179 8.2.2 마찰…………………………………………………………………… 181 8.2.3 BLOB 게임…………………………………………………………… 181 8.3 요약… …………………………………………………………………… 182 8.4 프로젝트… ……………………………………………………………… 183 03 P A R T Rigid-Body Physics CHAPTER 9 물체의 회전 9.1 2D에서 물체의 회전… ………………………………………………… 188 9.1.1 회전각………………………………………………………………… 188 9.1.2 각속도………………………………………………………………… 190 9.1.3 질량 중심과 원점… ………………………………………………… 191 9.2 3차원에서의 방향… …………………………………………………… 196 9.2.1 오일러 각… ………………………………………………………… 197 9.2.2 회전축과 회전각… ………………………………………………… 200 9.2.3 회전 행렬… ………………………………………………………… 201 9.2.4 사원수………………………………………………………………… 202 9.3 각속도와 각가속도… …………………………………………………… 205 9.3.1 점의 속도……………………………………………………………… 207 9.3.2 각가속도… …………………………………………………………… 207 9.4 코드로 구현하기… ……………………………………………………… 208 9.4.1 행렬 클래스…………………………………………………………… 208 9.4.2 행렬의 곱셈…………………………………………………………… 210 9.4.3 역행렬과 전치 행렬… ……………………………………………… 221 9.4.4 사원수를 행렬로 변환… …………………………………………… 229 9.4.5 벡터의 변환…………………………………………………………… 231 9.4.6 행렬의 기저 바꾸기… ……………………………………………… 236 9.4.7 사원수 클래스………………………………………………………… 237 9.4.8 사원수의 정규화……………………………………………………… 238 9.4.9 사원수의 결합………………………………………………………… 239 9.4.10 회전… ……………………………………………………………… 240 9.4.11 각속도에 의한 업데이트…………………………………………… 241 9.5 요약… …………………………………………………………………… 242 9.6 연습문제… ……………………………………………………………… 243 CHAPTER 10 강체의 운동 법칙 10.1 강체……………………………………………………………………… 247 10.2 회전을 위한 뉴튼의 운동 제2법칙… ………………………………… 251 10.2.1 토크… ……………………………………………………………… 251 10.2.2 관성 모멘트… ……………………………………………………… 253 10.2.3 월드 좌표계에서의 관성 텐서……………………………………… 258 10.3 회전에 대한 달랑베르의 원리… ……………………………………… 261 10.3.1 힘 발생기… ………………………………………………………… 266 10.4 강체 적분………………………………………………………………… 269 10.5 요약……………………………………………………………………… 271 10.6 연습문제………………………………………………………………… 271 CHAPTER 11 강체 물리 엔진 11.1 엔진 개요………………………………………………………………… 275 11.2 물리 엔진의 활용… …………………………………………………… 278 11.2.1 비행 시뮬레이터… ………………………………………………… 279 11.2.2 선박 시뮬레이터… ………………………………………………… 288 11.3 요약……………………………………………………………………… 295 11.4 프로젝트………………………………………………………………… 296 04 P A R T Collision Detection CHAPTER 12 충돌 감지 12.1 충돌 감지 파이프라인… ……………………………………………… 302 12.2 포괄적 충돌 감지… …………………………………………………… 304 12.2.1 요구사항… ………………………………………………………… 305 12.3 바운딩 볼륨 계층 구조… ……………………………………………… 306 12.3.1 계층 구조… ………………………………………………………… 310 12.3.2 계층 구조 만들기…………………………………………………… 318 12.3.3 서브오브젝트 계층 구조…………………………………………… 327 12.4 공간 분할………………………………………………………………… 329 12.4.1 이진 공간 분할법…………………………………………………… 330 12.4.2 옥트 트리와 쿼드 트리……………………………………………… 336 12.4.3 그리드… …………………………………………………………… 340 12.4.4 다중해상도 맵… …………………………………………………… 345 12.5 요약 ……………………………………………………………………… 345 12.6 연습문제………………………………………………………………… 346 CHAPTER 13 접촉 발생 13.1 충돌 지오메트리………………………………………………………… 350 13.1.1 기본적인 도형의 조합……………………………………………… 352 13.2 접촉 발생………………………………………………………………… 353 13.2.1 접촉 유형… ………………………………………………………… 355 13.2.2 접촉 데이터… ……………………………………………………… 358 13.2.3 점-면 접촉…………………………………………………………… 361 13.2.4 선-선 접촉…………………………………………………………… 362 13.2.5 선-면 접촉…………………………………………………………… 363 13.2.6 면-면 접촉…………………………………………………………… 364 13.2.7 접촉 발생 이전에 필요한 테스팅… ……………………………… 365 13.3 간단한 충돌 알고리즘… ……………………………………………… 366 13.3.1 두 개의 구가 충돌하는 경우… …………………………………… 367 13.3.2 구와 평면이 충돌하는 경우………………………………………… 370 13.3.3 박스와 평면의 충돌………………………………………………… 374 13.3.4 박스와 구 충돌하기………………………………………………… 379 13.4 분리축 테스트…………………………………………………………… 384 13.4.1 SAT로 접촉 데이터 생성하기……………………………………… 386 13.4.2 2개의 박스 충돌하기… …………………………………………… 387 13.4.3 볼록 다면체 충돌하기……………………………………………… 393 13.5 일관성…………………………………………………………………… 395 13.6 요약……………………………………………………………………… 399 13.7 연습문제………………………………………………………………… 400 05 P A R T Contact Physics CHAPTER 14 충돌 처리 14.1 충격과 충격 토크… …………………………………………………… 404 14.1.1 충격 토크… ………………………………………………………… 405 14.1.2 회전하는 충격… …………………………………………………… 407 14.1.3 회전 충돌 처리하기………………………………………………… 409 14.2 충돌 충격량……………………………………………………………… 409 14.2.1 접촉 좌표 변경하기………………………………………………… 410 14.2.2 충격에 의한 속도 변화……………………………………………… 419 14.2.3 속도에 의한 충격량 변화…………………………………………… 424 14.2.4 필요한 속도 변화 계산하기………………………………………… 424 14.2.5 충격량 계산하기… ………………………………………………… 426 14.2.6 충격량 적용하기… ………………………………………………… 427 14.3 상호 관통 처리하기… ………………………………………………… 429 14.3.1 처리 방법 선택하기………………………………………………… 430 14.3.2 비선형 투영법 구현하기…………………………………………… 434 14.3.3 과회전 방지하기… ………………………………………………… 438 14.4 충돌 처리 프로세스… ………………………………………………… 441 14.4.1 충돌 처리 파이프라인……………………………………………… 443 14.4.2 접촉 데이터 준비하기……………………………………………… 445 14.4.3 관통 처리하기… …………………………………………………… 451 14.4.4 속도 처리하기… …………………………………………………… 460 14.4.5 상대적인 업데이트 알고리즘……………………………………… 462 14.5 요약……………………………………………………………………… 466 14.6 연습문제………………………………………………………………… 467 CHAPTER 15 정지 접촉과 마찰 15.1 정지력…………………………………………………………………… 470 15.1.1 힘 계산하기… ……………………………………………………… 472 15.2 마이크로 충돌…………………………………………………………… 474 15.2.1 가속도 제거하기… ………………………………………………… 476 15.2.2 복원 계수 낮추기…………………………………………………… 478 15.2.3 새로운 속도 계산…………………………………………………… 479 15.3 마찰의 종류……………………………………………………………… 480 15.3.1 정적 마찰과 동적 마찰……………………………………………… 480 15.3.2 등방성 마찰과 비등방성 마찰……………………………………… 484 15.4 마찰 구현하기…………………………………………………………… 485 15.4.1 충격으로서의 마찰… ……………………………………………… 486 15.4.2 속도 처리 알고리즘 수정하기……………………………………… 489 15.4.3 모두 합치기… ……………………………………………………… 496 15.5 마찰과 연속적인 접촉 처리… ………………………………………… 499 15.6 요약……………………………………………………………………… 501 15.7 연습문제………………………………………………………………… 501 CHAPTER 16 안정성과 최적화 16.1 안정성…………………………………………………………………… 503 16.1.1 쿼터니온 변환… …………………………………………………… 505 16.1.2 경사면에서의 상호 관통…………………………………………… 506 16.1.3 안정성 통합… ……………………………………………………… 508 16.1.4 보수적인 충돌 감지의 이점………………………………………… 510 16.1.5 수학적인 정확도 바꾸기…………………………………………… 512 16.2 최적화…………………………………………………………………… 514 16.2.1 슬립… ………………………………………………………………… 514 16.2.2 관통과 속도의 오차 한계…………………………………………… 525 16.2.3 접촉 분류… ………………………………………………………… 528 16.2.4 코드 최적화… ……………………………………………………… 530 16.3 요약……………………………………………………………………… 534 CHAPTER 17 한데 모으기 17.1 엔진 개요………………………………………………………………… 535 17.2 물리 엔진 활용하기… ………………………………………………… 538 17.2.1 랙돌… ……………………………………………………………… 539 17.2.2 파괴 물리학… ……………………………………………………… 544 17.2.3 폭발 물리학… ……………………………………………………… 551 17.3 엔진의 한계……………………………………………………………… 560 17.3.1 무더기… …………………………………………………………… 560 17.3.2 반력 마찰… ………………………………………………………… 561 17.3.3 조인트 관절… ……………………………………………………… 561 17.3.4 빡빡한 스프링… …………………………………………………… 562 17.4 요약……………………………………………………………………… 562 17.5 프로젝트………………………………………………………………… 562 06 P A R T 더 살펴볼 물리학 주제 CHAPTER 18 2차원 물리학 18.1 2D 또는 3D?…………………………………………………………… 567 18.2 벡터 수학………………………………………………………………… 569 18.3 입자 및 질량 집합 물리학……………………………………………… 571 18.4 회전 수학………………………………………………………………… 572 18.4.1 회전 표시… ………………………………………………………… 572 18.4.2 행렬… ……………………………………………………………… 573 18.5 강체 동역학……………………………………………………………… 574 18.6 충돌 감지………………………………………………………………… 576 18.6.1 점?선 접촉… ……………………………………………………… 577 18.6.2 선?선 접촉… ……………………………………………………… 577 18.6.3 접촉 생성… ………………………………………………………… 578 18.7 충돌 반응………………………………………………………………… 579 18.8 요약……………………………………………………………………… 579 18.9 프로젝트………………………………………………………………… 580 CHAPTER 19 기타 프로그래밍 언어 19.1 ActionScript 3………………………………………………………… 581 19.2 C… ……………………………………………………………………… 586 19.3 자바……………………………………………………………………… 587 19.4 C#… …………………………………………………………………… 588 19.5 다른 스크립트 언어… ………………………………………………… 589 CHAPTER 20 다른 형식의 물리학 20.1 동시 접촉 해소… ……………………………………………………… 592 20.1.1 야코비안… ………………………………………………………… 592 20.1.2 선형 상보성 문제…………………………………………………… 594 20.2 좌표 줄이기 접근방식… ……………………………………………… 597 20.3 요약……………………………………………………………………… 599 부 록 A 유용한 관성 텐서 A.1 이산 질량… ……………………………………………………………… 602 A.2 연속 질량… ……………………………………………………………… 602 A.3 일반 도형… ……………………………………………………………… 603 A.3.1 직육면체… …………………………………………………………… 603 A.3.2 구… …………………………………………………………………… 603 A.3.3 원통… ………………………………………………………………… 604 A.3.4 원뿔… ………………………………………………………………… 605 A.3.5 반구체… ……………………………………………………………… 605 A.4 2D의 관성 모멘트… …………………………………………………… 606 A.4.1 2D 도형… …………………………………………………………… 606 부 록 B 유용한 마찰 계수 부 록 C 수학 정리 C.1 벡터… …………………………………………………………………… 611 C.2 사원수… ………………………………………………………………… 612 C.3 행렬… …………………………………………………………………… 613 C.4 적분법… ………………………………………………………………… 615 C.5 물리… …………………………………………………………………… 615 C.6 기타 공식… ……………………………………………………………… 617 ■용어집… …………………………………………………………………… 618 |