[강의] 게임 수학
카테고리: Math
게임수학에 대한 이해
✔ 게임수학의 기본부터 공부해보기
✔ 3차원 그래픽은 게임엔진(unity, unreal) 그래픽 라이브러리(DirectX, OpenGL) 을 사용
1. 공간에 대한 수학
✔ 벡터 공간 : 게임이 사용하는 가상 3D공간
✔ 변환(Transformation) : 원하는 모습으로 가상세계를 변환
✔ 선형 변환(Linear Transformation) : 빠르고 단순하게 변환
✔ 행렬(Matrix)을 통해 가상공간을 빠르게 변환할 수 있게 도와준다.
✔ 절두체(Frustum)를 통하여 보이는 물체만 랜더링할 수 있다.
2. 물체에 대한 수학
✔ 게임에서 물체가 이동하는 것은 물체를 구성하는 점이 이동하는것이 아닌 물체를 담는 공간이 이동한다.
✔ 4차원 공간을 생성하고, 3차원 공간으로 대상을 표현한다.
✔ 확장한 1차원 공간으로 이동을 구현.
삼각형과 정점
✔ 아핀 조합을 통해 점-> 선(Line(직선),Ray(반직선),LineSegment(선분))
✔ 선 -> 삼각형(면) -> 물체(매시 데이터)
✔ 삼각형의 무게중심좌표, 픽셀화(Resterization)를 사용해 색을 나타낼 수 있다.
✔ 정점(Vertex) 삼각형을 구선하는 점에 색상, UV, 노멀, 등 부가적인 데이터의 묶음
✔ 랜더링 파이프 라인으로 그래픽카드가 자동으로 처리해준다.
셰이더
✔ 정점셰이더(Vertex Shader), 픽셀 셰이더(Pixel Shader)를 통해 원하는 기능을 더 사용할 수 있다.
✔ 정점셰이더(Vertex Shader) : 삼각형을 구성하는 각 정점의 최종 데이터를 결정하는 함수
✔ 정점셰이더(Vertex Shader)를 사용하여 시간에따라 흔들리는 물체를 표현 할 수 있다.
✔ 픽셀 셰이더(Pixel Shader) : 삼각형 내부를 구성하는 각 필셀의 최종 색상을 결정하는 함수
게임 개발 과정
✔ 로컬 공간 : 개별 물체의 공간
✔ 로컬 공간에 모델링한 결과물 ->(Mesh)데이터로 변환되어 게임 엔진에 들어간다.
✔ (Mesh)데이터는 세개의 정점으로 구성된 삼각형으로 분해된다.
✔ 월드 공간 : 물체들이 모인 게임의 공간
✔ 카메라 공간 : 플레이어가 보는 공간 (프러스텀 컬링)을 통한 최적화 기법이 있다.
✔ 최종 렌더링 진행
백터의 연산
✔ 벡터와 벡터의 덧셈
✔ 벡터와 스칼라(실수)의 곱셈
✔ 벡터의 내적 - 두벡터의 직교, 앞뒤 위치 확인, 시야각에 들어와 있는지 등 사용된다.
✔ 벡터의 외적 - 평행성, 좌우 판별, 등 확인 가능.
✔ 내적과 외적은 상호보완적인 성질이 있다.
3. 회전에 대한 수학
✔ 물체를 담은 공간이 회전한다.
✔ 표준기저벡터를 활용한 공간 변환
✔ 삼각 함수를 통해 표준기저벡터를 회전하여 회전을 나타낸다.
축각회전, 오일러 회전
✔ 축-각회전, 오일러 각 회전
✔ 축-각회전(축을 하나 정하고 돌린다) 단점 - 직관적x, 행렬 변환어렵다.
✔ 오일러 각 회전(하나의 회전을 3번의 회전으로 나누어서 회전) 단점 - 부드러운 회전 어려움, 짐벌락 발생
사원수(Quaternion)
✔ 회전이란 크기가 1인 수와의 곱이다?.
✔ 사원수(Quaternion) - 하나의 실수, 세개의 허수로 구성
✔ 축-각 방식으로 3차원 공간을 회전한다.
✔ 빠르게 벡터를 회전시킬 수 있다.
✔ 직관적으로 사용하기 어려움.
✔ 게임 제작에서 오일러 각은 여전히 유용하지만 사원수는 짐벌락 해결, 행렬변환 가능하다.
잡담, 일기?
유니티를 통해 이동, 회전을 구현하였을 때 왜 그런숫자가 들어가는지 sin cos 등 왜 그걸 사용하는지 완전히 이해하지 못하고 사용하였는데 간단하게나마 배우고 왜 그런수가 나오고 그렇게 사용되는지 알 수 있었다.
벡터의 내적, 외적, 행렬, 사원수등 깊은 부분은 잘 모르겠지만 게임개발에서 공간, 물체, 회전이 어떻게 이루어지는지 알 수 있었다.
댓글남기기