책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 게임 프로그래밍
· ISBN : 9788993827040
· 쪽수 : 640쪽
· 출판일 : 2016-01-25
책 소개
목차
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 유용한 마찰 계수
^6부 록 C 수학 정리
C.1 벡터… …………………………………………………………………… 611
C.2 사원수… ………………………………………………………………… 612
C.3 행렬… …………………………………………………………………… 613
C.4 적분법… ………………………………………………………………… 615
C.5 물리… …………………………………………………………………… 615
C.6 기타 공식… ……………………………………………………………… 617
■용어집… …………………………………………………………………… 618
책속에서
화려한 그래픽과 웅장한 사운드, 흥미진진한 스토리라인이 엮인 게임은 언제나 즐거움의 대상이자 동시에 늘 그런 게임을 만들고 싶다는 선망의 대상이었습니다. 게임을 테스트하고 품질을 검증하는 QA로서 몇 년의 세월을 보내면서 게임의 핵심, 즉 게임 엔진에 대해서 조금이라도 알아야 한다는 생각을 떨쳐낼 수가 없었는데, 하지만 워낙 다른 분야의 일이라서 쉽게 접근할 수 있는 방법을 찾기란 힘들었습니다.
그러다 우연히 이 책을 접하고, 번역에 참여하면서 게임 엔진에 관한 기초적인 지식과 함께 최신의 게임 엔진 기법을 이해할 수 있는 좋은 기회를 얻을 수 있었습니다. 물론 그 과정이 수월했다고 말하기 어렵지만, 게임 엔진을 처음부터 세세하게 알아보기를 원하는 사람이라면 전공과 업종에 관계없이 이 책이 큰 도움이 되리라고 생각합니다.
(중략)
-역자 서문 중