Make Unreal REAL.
article thumbnail
완독 및 후기

이득우의 게임 수학 총 쪽수: 652p 공부 기간: 2023.04.03 - 2023.06.11 (70일) 평점: ★★★★☆ 좋은 내용들로 구성되어 있으나, 삼각함수나 행렬에 대한 지식이 부족한 사람에게는 꽤 어렵게 느껴질 수 있는 책이라고 생각한다. 물론 수학 개념들이 생략되어 있지 않고 모두 설명되어 있긴 하나, 그래도 쉬운 내용들은 아니다. 게임 엔진을 통해 게임을 만들 때 필요한 수학보다는 게임 엔진 자체를 구성하는 개념들에 관한 책이다. 책에서 다음과 같은 내용들을 배웠다. 벡터의 결합과 기저 삼각함수와 그 역함수 극좌표계 행렬과 역행렬 아핀 공간과 아핀 결합 브레젠험 알고리즘 코헨-서덜랜드 라인 클리핑 알고리즘 내적과 외적의 활용 램버시안 반사율 모델 메시 텍스처 매핑과 UV 모델링 행렬의 설계..

article thumbnail
캐릭터 메시와 애니메이션

이득우의 게임 수학 트랜스폼의 계층 구조 시스템이 완성됐으니, 이를 기반으로 계층 구조를 이루는 캐릭터를 직접 제작해본다. 실습해 볼 캐릭터의 본 구조는 다음과 같다. 책의 예제인 CK소프트렌더러에서 캐릭터 메시를 생성하고 계층 구조로 본을 생성한 후, 리깅을 진행해 스킨드 메시를 완성하는 부분은 다음과 같다. 하나의 정점에 하나의 본만 연결하는 단순한 구조로 리깅한다. // 책의 예제인 CK소프트렌더러에서 캐릭터 메시를 선언하고 데이터를 설정하는 부분 bool GameEngine::LoadResources() { // 각 부위의 직육면체 크기를 지정 constexpr Vector3 headSize(0.5f, 0.5f, 0.5f); constexpr Vector3 bodySize(0.5f, 0.75f, ..

article thumbnail
트랜스폼 계층 구조

이득우의 게임 수학 이번에는 캐릭터를 제작하기 위한 트랜스폼의 계층 구조에 대해 알아본다. 실습해 본 예제에서는 Left와 Right 본이 서로 연결되지 않고 독립적으로 움직였지만, 일반적으로 캐릭터를 구성하는 본은 모두 유기적으로 연결되어 있으며, 부모-자식 관계의 계층 구조가 형성되어 있다. 손가락이 움직이지 않아도 팔목이 움직이면 손가락의 최종 위치가 달라지듯이, 게임 캐릭터도 부모-자식의 계층 구조를 가져야 사람의 움직임을 구현할 수 있다. 부모-자식 계층 관계에서 부모와 자식 트랜스폼이 가져야 하는 규칙을 정리하면 다음과 같다. 부모가 움직이면 그만큼 자식도 움직이지만, 자식의 움직임에 부모는 영향을 받지 않는다. 부모는 여러 자식을 가질 수 있지만, 자식은 하나의 부모만 갖는다. 계층 구조에서..

article thumbnail
스켈레탈 애니메이션

이득우의 게임 수학 게임에서 캐릭터 애니메이션은 가상의 뼈대인 본(Bone)을 캐릭터 메시에 심은 후, 해당 본의 움직임에 맞춰 캐릭터 메시가 변형되는 스켈레탈 애니메이션(Skeletal Animation) 방식을 사용한다. 스켈레탈 애니메이션을 구현하려면 기존의 메시 체계를 확장해 본을 추가해야 한다. 본은 단순히 이동만 하는 것이 아니고 회전하거나 크기도 변경되므로, 본의 정보는 트랜스폼에서 관리한다. 게임 오브젝트뿐만 아니라 본에서도 트랜스폼이 필요하고, 책의 예제인 CK소프트렌더러에서 제공하는 트랜스폼 구조체는 다음과 같다. // 책의 예제인 CK소프트렌더러에 정의된 트랜스폼 구조체 struct Transform { public: Transform() = default; Transform(cons..

article thumbnail
사원수의 보간

이득우의 게임 수학 사원수는 로드리게스 회전과 동일한 축-각 방식을 사용해 3차원 공간의 회전을 표현한다. 사원수를 사용하는 경우의 장점은 다음과 같다. 1. 오일러 각과 쉽게 변환이 가능하며, 회전 행렬 제작이 용이하다. 2. 행렬과 상호 변환이 가능하다. 3. 임의의 축에 대한 회전 표현이 가능하기 때문에 짐벌락 현상을 방지할 수 있다. 4. 임의의 축에 대한 회전 보간 값을 구할 수 있다. 5. 4개의 숫자로 표현하기 때문에 저장 공간을 효율적으로 쓸 수 있다. 회전 방식별 장단점은 다음과 같다. 오일러 각 행렬 사원수 저장 공간 3 9 4 짐벌락 현상 없음 X O O 회전 보간 한 기저 축에 대해서만 가능 X 임의의 축에 가능 직관성 O X X 다른 회전 방식에 비해 사원수의 장점은 회전 보간이 ..

article thumbnail
사원수의 변환

이득우의 게임 수학 사원수를 활용해 3차원 벡터를 회전시키는 기능을 구현했지만, 사원수를 구성하는 실부수와 허수부 요소 값은 직관적이지 않아 회전을 설계할 때 어려움이 따른다. 3차원 공간에서 물체의 회전을 설정할 때에는 사원수보다 오일러 각 방식이 직관적이고 편리하기 때문에, 오일러 각 값을 사원수로 변환해주는 기능을 만들면 게임 제작에 유용하게 활용할 수 있다. 오일러 각의 회전은 x, y, z 기저 축이 회전축의 역할을 수행하며, 예를 들어 3차원 공간에서 x축을 중심으로 각 θ만큼 회전시키는 데 사용하는 회전 사원수는 다음과 같다. 따라서, 오일러 각을 구성하는 Roll, Pitch, Yaw 회전에 대응하는 각 사원수는 다음과 같이 표기된다. 오일러 각의 회전 순서를 Roll - Pitch - Y..

검색 태그