이론과 실무를 접목한 게임 프로그래머 최고의 수학 학습서!
게임을 개발하며 수학을 독학한 소프트웨어 엔지니어가 현업에서의 시행착오 경험을 바탕으로 현장에서의 수요를 염두에 두고 현실적으로 구성했다. 현업에 필요한 지식을 빠르게 습득할 수 있도록 게임 개발자가 알아야 할 수학 지식만을 담아 실무용 생존 지침서로 적합하다. 먼저 수학 개념을 살펴보고, 이어서 유니티 예제를 실행해 눈으로 그 원리를 직접 확인할 수 있어 수포자도 확실하게 수학을 배울 수 있다.
<유니티로 배우는 게임 수학>의 샘플은 버전 5.3용으로, 5.2.4와 5.3.4에서도 문제 없이 실행됩니다.
5.3.5 이후 버전, 또는 구버전인 5.2.x 이전 버전의 경우,
저자가 깃헙에서 제공하는 다음 URL을 참고하여 본인에게 맞는 버전의 샘플을 내려받아 진행하세요.
▶ https://github.com/ryukbk/mobile_game_math_unity
참고로, 다음 내용은 유니티 정책 변경에 대한 저자의 공지입니다.
본 번역서에서는 <3쇄> 이후부터 주석 처리로 해당 내용을 반영 예정입니다.
------------------------------------------------------------------------------------------
Unity 5.3.5 이상에서는 셰이더 프로그램의 모델 변환 행렬 _Object2World의 정의가 UnityCG.glslinc에서 폐기되어, 셰이더 프로그램 작성 시 새롭게 정의된 unity_ObjectToWorld를 사용하세요.(본 저장소의 샘플 코드는 _Object2World가 정의되어 있지 않으면 unity_ObjectToWorld을 사용하고 _Object2World를 별칭으로 정의하게 했습니다.)
Unity 5.5에서는 Mac용 그래픽 API로서 Player Settings 설정에서 OpenGLCore만 선택할 수 있고 OpenGL2가 폐기됐습니다. 따라서 Mac 용으로 GLSL 셰이더 프로그램을 동작시키려면 OpenGLCore가 지원하는 GLSL 1.30에 따라 작성해야합니다. GLSL 1.30에서는 varying 변수는 폐기되고, 대신 버텍스 셰이더에서 출력하는 변수는 out 지정해서 버텍스 셰이더 내에서 정의하고, 같은 이름의 변수를 in 지정해서 프래그먼트 셰이더 내에 정의해 프래그먼트 셰이더의 입력으로 합니다.
------------------------------------------------------------------------------------------
CHAPTER 1 삼각함수
__1.1 삼각형
__1.2 직각삼각형
__1.3 피타고라스의 정리
__1.4 사인, 코사인, 탄젠트
__1.5 삼각함수의 주기성
____1.5.1 단위원
____1.5.2 코사인법칙
____1.5.3 주기성
____1.5.4 라디안
____1.5.5 덧셈정리
____1.5.6 사인파, 코사인파
__1.6 유니티 예제 : 클릭 위치를 향하는 캡슐・바인드하는 구체
____1.6.1 동작과 사양
____1.6.2 구현 코드
CHAPTER 2 좌표계
__2.1 직교좌표계
____2.1.1 2D 좌표계
____2.1.2 3D 좌표계
____2.1.3 왼손 좌표계와 오른손 좌표계
____2.1.4 로컬 좌표계와 월드 좌표계
____2.1.5 Center/Pivot과 Local/Global
____2.1.6 스크린 좌표
__2.2 극좌표계
____2.2.1 2D 극좌표계
____2.2.2 3D 극좌표계 = 구면좌표계
__2.3 유니티 예제 : 3인칭 시점 카메라
____2.3.1 동작과 사양
____2.3.2 구현 코드
CHAPTER 3 벡터
__3.1 벡터의 정의
____3.1.1 수벡터
____3.1.2 기하벡터
____3.1.3 스칼라
__3.2 벡터 연산
____3.2.1 덧셈·뺄셈·교환법칙·결합법칙
____3.2.2 스칼라 곱셈·나눗셈
____3.2.3 단위벡터
____3.2.4 기저와 좌표계
____3.2.5 법선벡터
____3.2.6 크기
____3.2.7 내적
____3.2.8 벡터의 직교투영
____3.2.9 내적의 응용
____3.2.10 외적
____3.2.11 외적의 응용
__3.3 유니티 예제 : 간이 충돌 판정
____3.3.1 동작과 사양
____3.3.2 구현 코드
CHAPTER 4 행렬
__4.1 행렬의 정의
____4.1.1 정의
____4.1.2 행렬의 종류
__4.2 행렬의 연산
____4.2.1 행렬과 행렬의 연산
____4.2.2 전치행렬
____4.2.3 역행렬
____4.2.4 행렬과 벡터의 곱셈
____4.2.5 스위즐 연산119
____4.2.6 행우선과 열우선
____4.2.7 AoS와 SoA
____4.2.8 행렬식
____4.2.9 직교행렬
__4.3 유니티 예제 : 행렬 계산을 위한 Inspector 확장
____4.3.1 유니티 에디터의 확장 기능
____4.3.2 동작과 사양130
____4.3.3 구현 코드
CHAPTER 5 좌표 변환
__5.1 좌표 변환이란 무엇인가
__5.2 지오메트리 파이프라인
____5.2.1 모델 변환
____5.2.2 뷰 변환
____5.2.3 프로젝션 변환
__5.3 동차좌표계
____5.3.1 동차좌표계란 무엇인가
____5.3.2 동차좌표계와 사영기하학
____5.3.3 유니티의 동차좌표계
__5.4 변환 종류
____5.4.1 선형 변환
____5.4.2 아핀 변환
____5.4.3 리지드바디 변환
____5.4.4 투영 변환
__5.5 좌표 변환의 행렬 표현
____5.5.1 평행이동
____5.5.2 회전
____5.5.3 스케일
____5.5.4 모델 변환
____5.5.5 기저 변환
____5.5.6 뷰 변환
____5.5.7 원근투영 변환
____5.5.8 직교투영 변환
____5.5.9 등각투영 변환
__5.6 유니티 예제 : 행렬에 의한 아핀 변환과 프로젝션 변환
____5.6.1 동작과 사양
____5.6.2 구현 코드
CHAPTER 6 사원수
__6.1 회전표현의 종류
____6.1.1 오일러각
____6.1.2 로드리게스 회전 공식
____6.1.3 짐벌락
____6.1.4 회전 행렬 문제
____6.1.5 사원수의 장점
__6.2 사원수의 정의
____6.2.1 복소수
____6.2.2 이원수
____6.2.3 사원수란 무엇인가
__6.3 사원수의 연산
____6.3.1 스칼라배
____6.3.2 공액
____6.3.3 크기
____6.3.4 곱셈
____6.3.5 단위 사원수
____6.3.6 내적
____6.3.7 역수
____6.3.8 행렬표현
__6.4 사원수를 이용한 3D 회전
____6.4.1 회전
____6.4.2 보간
__6.5 쌍대 사원수
____6.5.1 정의
____6.5.2 스키닝에 응용하기
____6.5.3 연산
____6.5.4 리지드바디 변환
__6.6 유니티 예제 : 사원수를 이용한 회전
____6.6.1 동작과 사양
____6.6.2 구현 코드
CHAPTER 7 곡선
__7.1 곡선을 둘러싼 개념
____7.1.1 보간과 근사
____7.1.2 매개변수 함수
____7.1.3 다항식
____7.1.4 곡선과 스플라인
____7.1.5 연속성과 미분
____7.1.6 이원수를 이용한 자동미분
__7.2 곡선 알고리즘
____7.2.1 베지어 곡선
____7.2.2 캣멀롬 스플라인
____7.2.3 B 스플라인
__7.3 유니티 예제 : 세 종류의 곡선
____7.3.1 동작과 사양
____7.3.2 구현 코드
CHAPTER 8 게임 앱 환경
__8.1 게임 엔진으로서의 유니티
____8.1.1 씬 그래프
____8.1.2 컴포넌트 지향
____8.1.3 샌드박스
____8.1.4 게임 루프
____8.1.5 CPU와 병렬성
____8.1.6 GPU 프런트엔드
__8.2 스마트폰 아키텍처
____8.2.1 그래픽 드라이버
____8.2.2 드로 콜 배칭
____8.2.3 GPU 아키텍처의 변천
____8.2.4 저수준 그래픽 API
____8.2.5 헤테로지니어스 아키텍처
__8.3 그래픽 파이프라인
____8.3.1 OpenGL ES 2.0
____8.3.2 CPU의 드로 콜 생성
____8.3.3 버텍스 셰이더
____8.3.4 프리미티브 어셈블리
____8.3.5 래스터화
____8.3.6 프래그먼트 셰이더
____8.3.7 ROP 처리
____8.3.8 OpenGL ES 3.0 이후
____8.3.9 디퍼드 셰이딩
____8.3.10 테셀레이션 셰이더
____8.3.11 지오메트리 셰이더
____8.3.12 컴퓨트 셰이더
CHAPTER 9 셰이더
__9.1 유니티의 셰이더
____9.1.1 ShaderLab
____9.1.2 셰이딩 언어
____9.1.3 GLSL
____9.1.4 에디터 설정
____9.1.5 셰이더의 기본
____9.1.6 외부 도구와 WebGL
__9.2 조명
____9.2.1 확산반사
____9.2.2 램버시안 반사 모델
____9.2.3 하프 램버트 확산
____9.2.4 퐁 반사 모델
____9.2.5 정점 단위 조명
____9.2.6 픽셀 단위 조명
____9.2.7 림 라이팅
__9.3 텍스처 처리
____9.3.1 텍스처 매핑
____9.3.2 법선 매핑
__9.4 물리 기반 렌더링
____9.4.1 BRDF
____9.4.2 쿡토런스 경면 반사
부록 A_ 유니티의 물리엔진
부록 B_ 코드 동작 환경
기초 개념부터 모바일까지, 게임 개발에 필요한 수학 원리 설명서
게임 개발에 필요한 수학 원리를 유니티를 실행해 눈으로 확인하는 실습형 지침서다. 한 개 장이 끝날 때마다 유니티로 만든 샘플 프로그램을 직접 돌려보고, 앞서 설명한 수식이 게임 그래픽에 어떻게 적용될지 직관적으로 이해할 수 있다.
난해한 설명보다는 고등학교 수준의 수학 원리를 그림과 함께 차근차근 소개하는 것에 중점을 두었다. 수학을 싫어하는 사람도 쉽게 접근할 수 있도록 풀컬러로 풍부한 삽화와 스크린샷을 곁들였다.
수학의 기본 원리뿐 아니라 OpenGL ES 3.2의 3D 그래픽스 파이프라인, GPU 아키텍처, iOS/안드로이드 스마트폰 대상 최적화도 설명하므로 모바일 게임 개발자에게도 매우 유용하다. 이 책이 제공하는 지식은 게임 개발 자체의 토대가 되는 것으로, 반드시 유니티와 연계하지 않더라도 다방면으로 활용할 수 있다.
책의 주요 내용
자료명 | 등록일 | 다운로드 |
---|---|---|
5.3.5 이후 버전 or 구버전 5.2.x 예제소스 | 2020-01-29 | 다운로드 |
예제소스 | 2020-01-29 | 다운로드 |
게임 개발자를 위한 물리(개정2판) : 차량, 스포츠, 폭발, 모바일 등 게임 물리의 모든 것
브라이언 비발레츠 , 데이비드 버그
로버트 나이스트롬
오즈 모리하루