한빛출판네트워크

IT/모바일

유니티로 배우는 게임 수학

기초 개념부터 모바일까지, 게임 개발에 필요한 수학 원리 설명서

한빛미디어

번역서

절판

유니티로 배우는 게임 수학
좋아요: 103
  • 저자 : 구부키 류이치
  • 역자 : 김성재
  • 출간일 : 2016-08-01
  • 페이지 : 368쪽
  • ISBN : 9788968485008
  • 물류코드 :2500

합계 : 25,200

  • 이론과 실무를 접목한 게임 프로그래머 최고의 수학 학습서! 

     

    게임을 개발하며 수학을 독학한 소프트웨어 엔지니어가 현업에서의 시행착오 경험을 바탕으로 현장에서의 수요를 염두에 두고 현실적으로 구성했다. 현업에 필요한 지식을 빠르게 습득할 수 있도록 게임 개발자가 알아야 할 수학 지식만을 담아 실무용 생존 지침서로 적합하다. 먼저 수학 개념을 살펴보고, 이어서 유니티 예제를 실행해 눈으로 그 원리를 직접 확인할 수 있어 수포자도 확실하게 수학을 배울 수 있다.

     

     

    <유니티로 배우는 게임 수학>의 샘플은 버전 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 지정해서 프래그먼트 셰이더 내에 정의해 프래그먼트 셰이더의 입력으로 합니다.

    ------------------------------------------------------------------------------------------

     

     

     

    detail.jpg

     

  • [저자] 구부키 류이치

    모바일 게임 개발자. 도쿄대학 법학부를 졸업하고 2010년 GREE에 입사하여 게임스튜디오 엔지니어로 모바일 게임 개발에 매진해왔다. 대규모 웹 소셜 게임에서 iOS와 안드로이드용 유니티/Cocos2d-x 게임 애플리케이션에 이르기까지, 서버와 클라이언트 영역을 포함한 다양한 프로젝트에 종사한다. 

    [역자] 김성재

    기술 분야 전문 번역가. 관심 분야는 IT 기술과 일본어 교육 콘텐츠 등이다. 최근에는 업무에 필요한 맥 OS와 iOS 애플리케이션의 개발과 리뷰, 환경 구축에 관심이 있다. 번역서로는 『만들면서 배우는 기계 학습』, 『빅데이터의 충격』, 『C언어로 배우는 리눅스 프로그래밍』, 『구글 웹로그 분석』(이상 한빛미디어) 등이 있다.

     

  • 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/안드로이드 스마트폰 대상 최적화도 설명하므로 모바일 게임 개발자에게도 매우 유용하다. 이 책이 제공하는 지식은 게임 개발 자체의 토대가 되는 것으로, 반드시 유니티와 연계하지 않더라도 다방면으로 활용할 수 있다.

     

    책의 주요 내용

    • 삼각함수 : 삼각형, 피타고라스의 정리, 사인, 코사인, 탄젠트, 삼각함수 주기성
    • 좌표계 : 데카르트 좌표계, 극좌표계
    • 벡터 : 벡터 정의, 벡터 연산
    • 행렬 : 행렬 정의, 행렬 연산
    • 좌표 변환 : 개념 정의, 지오메트리 파이프라인, 동차좌표계, 행렬 표현
    • 사원수 : 사원수 정의, 연산, 3D 회전, 쌍대 사원수
    • 곡선 : 곡선을 둘러싼 개념, 곡선 알고리즘
    • 게임 앱 환경 : 게임 엔진으로서의 유니티, 스마트폰 아키텍처, 그래픽스 파이프라인
    • 셰이더 : 유니티의 셰이더, 조명, 텍스처 처리, 물리 기반 렌더링

     


    • 최근에 유니티에 대한 관심을 갖는 단계인데 유니티로 배우는 게임수학이라는 이름이 있어서


      이 책을 선택하게 되었습니다.






      보통 유니티 엔진을 사용하는 방법을 소개하는 도서는 많은데


      무슨 원리로 이게 될까?에 궁금증을 갖기는 하지만 이를 설명하는 책은 아마 많지 않은 것 같습니다.






      책의 목차는 다음과 같습니다.


      삼각함수, 좌표계, 벡터, 행렬, 좌표변환, 사원수, 곡선, 게임 앱 환경, 셰이더

       


      Chapter 시작에는 이렇게 이번에 배울 내용에 대해서 간략하게 내용을 보여주는데요.


      정말 오랜만에 수학을 보니... 생각보다 쉽지 않았습니다.

       


      책에서는 수학에 대한 내용이 많이 소개되지만


      Chapter 마지막에는 유니티 예제가 함께 있어서 실제 개발에 적용하는 방법도 살펴볼 수 있었습니다.


      게임 엔진에 적용된 수학의 원리와 이를 활용할 수 있는 방법까지 알 수 있겠습니다.

       


      이 책은 수학을 공부해 본 경험이 있는데 시간이 지나 잊어버리신 분들과


      유니티에 대한 기본 지식을 갖고 계신 분이 읽기에 좋은 책입니다.






      이 책을 보면서 정말 오랜만에 수학을 접했습니다.


      평소 게임을 만들기 위해서는 수학에 대한 지식이 필요하다는 사실은 알고 있었지만


      이 책을 통해 공부하니 정말 게임에도 많은 지식을 통해 만들어 진다는 사실에 존경심이 들었습니다.






      내가 배운 수학이 이렇게 적용되는 구나? 하는 것을 깨우칠 수 있는 그런 책입니다.


    • 한줄 요약: 수학에 대한 사전지식이 없는 분과 3D 그래픽스쪽 지식이 없는 분은 다른책으로 선수 학습을 권한다.  3D 그래픽쪽의 테크닉적인 수학지식을 다룬다는 인상을 받았다.


       



      개발자를 하면서 수학은 항상 흥미로우면서도어려운 주제로 다가오는데 이번에 그런 어려움을 극복해보고자이책을 선택하게 되었다. 하지만 그것이.. 험난한 여정의 시작이었다.



      책의 전체적 맥락은 게임에 필요한 기본적으로 배경지식이 되는 수학지식을 7가지로 분류하여 독자층에게 전달한다. 9챕터중 마지막 2챕터는 3D프로그램의 꽃이라볼수 있는 셰이더에 대해 다룬다. 사실 처음 기대는 나와 같이 컴퓨터 공학을 전공했지만 수학을 오랜만에 접해본 사람들에게 리프레셔 같은 역할을 하기를 기대했으나 막상 책을 펼쳐보니 각각의 주제에 대해 미리 선지식이 있는사람들만이 이해할수 있을정도의 설명과 함께 예제를 보여주는 식으로 책이 진행된다. 선형대수학을 배웠고 3D개발을 학부 시절 수업 텀프로젝트로 했었지만 책을 읽는 동안 어려움이 있었고 부족한 설명들은 온라인 검색과 예전에 공부했던 책을 많이 참고했다. 사실 각각 한챕터에서 다룬 내용들이 다른 전문책에서 보면 수십페이지 혹은 수백 페이지넘는 양에 걸쳐 설명하는 내용이기에 어쩌면 이책에서 정도의 설명을 기대하는 것이 처음부터 잘못된 가정이란 생각이 책을 읽고난 생각이 들었다. 책에서는 이미 어느정도 업계 경험 혹은 선수 지식이 있는 분들이라는 가정하에 개념들의 포인트를 짚어가며 나중에 어떻게 코드로 적용하는지 설명한다. 현재 그래픽스 프로그래밍을 하시는 분들에게는 자신이 알고 있는지식들의 테크닉을 다듬는 역할을 하는데 도움이 될거라 생각한다.


       


       



      3D 수학관련 기초적이고 자세한 설명이 필요하면서 영어 문서 읽는 것에 무리가 없으시다면 아래 책도 추천합니다. 이해안가는 3D개념들을 공부하는데 좋은 참고가 되었습니다



      https://www.amazon.com/Math-Primer-Graphics-Game-Development/dp/1568817231

    • 유니티로 배우는 게임 수학(한빛미디어)


       


       

          저자가 의도한 이 책의 타겟 독자층은 책에서 다루는 수학 개념들을 경험해보셨으나 

      아직 미숙하거나, 오래되어 까먹으신 분들에게 잘 맞는 책입니다.

      이러한 저자의 의도가 잘 반영되어있고 게임 엔진에 적용된 수학의 원리를 파헤치는 이론과 실습이 잘 어우러진 책입니다.

       

          이 책으로 수학의 힘을 다시한번 느꼈습니다. 게임을 시각적으로 표현하기위해 수학개념들이 적용되는 것을 보며


      지금까지 제가 경험했던 게임들이 정말 엄청난 지식이 녹아들어있는 것이라 생각하니 게임 하나하나가 달리 보이고 있습니다.


      또한, 하위 개념을 먼저 설명하고 상위 개념을 설명함으로써 독자들의 이해를 유도합니다.


       


          하지만 내용 전개가 지루합니다. 저자는 하위 개념들을 하나씩 설명하면서 상위 개념을 설명하는 Bottom-up 방식으로 내용을 전개합니다.


      후반에 전체적인 게임 그래픽스의 개괄 내용을 다루는 Top-down 설명이 있지만, 전체적인 그림이 제시되지않은 상태에서 


      수학 개념이 처음부터 등장해 꽤 애먹었습니다.


          


          1장의 삼각함수부터  -> 좌표계 -> 벡터 -> 행렬 -> 좌표변환 -> 사원수 -> 곡선 -> 게임 환경 -> 셰이더 까지..

      유니티 엔진의 셰이더를 설명하기까지 먼저 알아야 되는 수학적 개념들과 유니티 프로그래밍을 실습하면서 

      독자들의 이해를 도우려한 저자의 노력을 느낄 수 있었습니다.

       

      게임 수학이라고 하지만, 게임만을 위한 수학 개념은 아닙니다. 

      이 책은 제목처럼 "수학"을 설명하는 책이며 수학의 개념을 실제로 체험해볼 수 있는 친절한 책입니다.

       

      목차를 보시고 필요성을 느끼셨다면 꼭 한번 보시길 추천드립니다. 

       

    • 게임 개발자를 위한 물리(개정2판) : 차량, 스포츠, 폭발, 모바일 등 게임 물리의 모든 것

      브라이언 비발레츠 , 데이비드 버그

    • 게임 프로그래밍 패턴

      로버트 나이스트롬

    • 코딩의 기술 : C와 C++ 게임 코드로 알아보는

      오즈 모리하루

닫기

해당 상품을 장바구니에 담았습니다.
장바구니로 이동하시겠습니까?