목록게임 수학 (21)
cyphen156

이제 이 책의 마지막 장이다. 17장에서는 지금까지 배운 내용들을 종합하여 가상의 3차원 공간에서 움직이는 캐릭터를 구현하는 방법에 대해서 알아본다고 한다.스켈레탈 애니메이션보통 게임에서 캐릭터의 움직임은 "애니메이션이라는 기법"을 통해 표현된다.이 애니메이션을 위해 필요한 기술이 캐릭터를 구성하는 부분 부분(머리, 상체, 팔, 다리 등)을 각각 따로 만든 뒤, 이들을 연결하는 가상의 뼈대인 본을 캐릭터 메시에 심어 본의 위치(Position)와 스케일(Scale), 회전값(Roatation)에 따라 캐릭터의 구성하는 부품의 메시를 변형하는 방식을 사용하는데, 이것을 스켈레탈 애니메이션이라고 부른다.본은 게임 캐릭터의 움직임을 제어하기 위해 설정된 가상의 뼈 구조로, 각 부위 간의 연결관계(계층 구조)..

16장에서는 앞서 14장에서 배운 2차원 복소 평면을 확장하여 4차원의 수 체계인 사원수에 대해 배우게 된다.사원수는 3차원 가상 공간에서의 물체의 회전 표현에 주로 사용되며, 오일러 회전의 짐벌락 현상을 극복하기 위한 주요 도구로서 사용된다.사원수는 각 요소들이 모두 독립적인 스칼라들로 구성되어 있으며, 복소수보다 한 차원 높은 수 체계를 형성한다.사원수(Quaternion)사원수는 복소수와 동일하게 허수를 사용하지만, 다른점은 세개의 허수와 하나의 실수로 구성된 수 체계이다.Quaternion H = a + ix + jy + kz (i, j, k는 허수)여기서 Q가 아닌 H를 사용하는 Q라는 문자를 이미 유리수 집합에서 사용하고 있기 때문에 사원수 집합은 H로 표기한다.사원수 요소의 특징i^2 = j..

이 장에서 소개할 오일러 공식은 현실에서 복소수를 실수와 허수의 단순한 결합으로 보는 것을 넘어서 삼각함수와 자연지수함수 간의 수학적 관계를 우리에게 수학적으로 보여준다. 이런 오일러 공식은 전기공학의 신호 처리 분야에서 기초가 되는 아주 중요한 공식이며, 3차원 공간에서의 회전의 짐벌락과 같은 문제를 해결하는데 중요한 역할을 수행해주는 유용한 공식이라고 설명하고 있다.오일러 공식오일러 공식을 제대로 이해하려면, 다음 두 가지에 대한 수학적 기초가 필요하다자연지수함수 e^x삼각함수인 sin함수와 cos함수, 그리고 이들의 미분 특성 무리수 e무리수 e(Exponential)은 은행 복리 이자로 얻을 수 있는 수익을 연구하다가 특정 상수로 수렴한다는 사실을 알아내면서 사용하게 되었다.x의 값이 커질 수..

이번 장에서는 아직 해결하지 못한 문제인 3차원공간에서의 물체를 회전시킬 때 생기는 문제를 해결하기 위한 해결책인 사원수의 기본이 되는 복소수에 대해서 알아볼 것이다.여태까지 우리는 체의 구조를 갖는 수의 집합으로 실수를 사용해왔다. 그런데 이런 체의 구조를 가지는 수의 집합은 복소수로 확장될 수 있다. 복소수는 실수에 허수의 개념을 도입함으로써 1차원 수직선으로 표현되던 실수를 2차원 평면상에 표현할 수 있게 한다.복소수(Complex Number)복소수는 실수와 허수라는 독립된 2개의 요소의 조합으로 표현된다. T = (1 + 3i)/실수부 + 허수부허수(Imaginary Number)허수란 사실 그 이름에 사용된 단어를 통해 의미를 알 수 있듯이 상상속의 수 = 허상속에 존재하는 수다.하지만 허수는..

프로그램에서 계산해야 하는 양을 가장 효과적으로 줄이는 방법은 그냥 안그리는 것이다. 이것은 프로그램이 아무리 연산이 빠르더라 하더라도 결국 사용자가 알 수 있도록 화면에 그려야 하는데, 이 그리는 작업을 수행하기 위해 인터페이스를 통해 외부 기기와의 입출력 상호작용이 반드시 일어나게 된다. 그리고 이 입출력 상호작용이 컴퓨터의 실행 중 가장 수행속도가 느리다. 그래서 최대한 적게 그릴 수 있도록 사용자가 보지 않아도 되는 내용들을 잘라내어 필요한 부분만 딱 그려내도록 컴퓨터에게 명령하도록 하는데 이러한 기법을 컬링이라 부른다.우리는 앞서 내적과 외적, 원근 보정을 학습하면서 컬링 기법중 일부분인 백페이스 컬링과 카메라 시야각과 깊이 테스팅을 이미 배웠다. 이번 챕터에서는 절두체에 대해 더 깊이 알아보자..

어제 스터디 그룹에서 내적에 대해 리뷰를 하였는데, 나 스스로도 내적에 대해 다시 정리하다 보니 투영에 대한 설명이 부족했던 것 같아서 추가로 글을 쓴다.벡터의 내적 연산은 여러가지 이점을 준다.이 개념을 이해하기 위해 먼저, 관찰자(나)의 시점을 원점으로 설정하는 전제가 필요하다.'나'를 원점으로 삼아서 어떠한 물체가 나로부터 얼마나 떨어져있는지, 그 거리를 측정한다면그것은 원점에서 물체 까지의 거리벡터라 볼 수 있다.내가 바라보고 있는 시선 방향으로 부터 뻗어 나가는 벡터를 시선 벡터라 지칭하고,시선 벡터는 방향성만이 중요하기 때문에 항상 정규화된 단위 벡터로 표현한다.이렇게 두개의 벡터를 알아냈다면, 두 벡터의 내적 연산을 진행할 수 있다.물체의 위치 판별내가 바라보고 있는 시선과 어떤 물체까지의 ..

이전 글에서 이어서 쓴다.※ 여기서 설명하는 예제 순서는 책에서의 예제보다 1개 인덱스가 높습니다.초점거리 왜곡과 깊이감앞서 경험했던 렌더링 예제에서는 하나의 물체만을 그리고 있었기 때문에 별다른 문제를 발견하지 못했다. 하지만 사실 이건 컴퓨터 그래픽스에서 현실감과 몰입감을 방해하는 요소가 고려되어있지 않다.바로 깊이감이다. 물체를 원근 투영 하여 그렸지만 사물이 화면에 그려지는 순서에 따라 먼저 그려진 그림이 덮어씌워져 나중에 그린 물체에 의해 가려져서 보인다. 예를 들자면 빨간 사각형을 그리고 그 위에 검은 원을 일부 겹쳐 그리는 듯하게 그린다는 것이다. 이러한 그리기 방식 때문에 물체가 가지고 있는 초점거리를 왜곡하는 현상이 발생한다.절두체 :: 3차원 NDC 이제 이차원 평면 NDC를 깊이를 추..

모니터는 항상 2차원 평면이기 때문에, 현실 세계처럼 입체감 있는 그림을 그리는 것은 매우 어렵습니다. 그래서 2차원 이미지를 3차원처럼 보이게 만드는 기법이 중요한데, 이를 원근 투영(Perspective Projection)이라고 부른다.이러한 원근감 표현은 르네상스 시대에도 이미 존재했으며, 한 점을 기준으로 직선 거리를 설정하고, 거리에 따라 같은 사물이라도 비율을 다르게 그리는 방식이 고안되었고, 현대에 이르러서는 이 '한 점'을 카메라와 같은 물체의 시점으로 일반화하여 세상을 바라보게 되었다. 이를 화각(Field of View, FOV)이라고 부릅니다.원근 투영은 기존의 직교 투영 방식에서 한 점으로 모이기 때문에 뷰 모델이 6면체의 형태에서 사각 뿔의 형태로 변화하게 된다. 모든 물체는 하..