17.1 스켈레탈 애니메이션 스켈레탈 애니메이션(Skeletal animation) : 가상의 뼈대인 본(Bone)을 캐릭터 메시에 심은 후, 해당 본의 움직임에 맞춰 캐릭터 메시가 변형되는 방식을 사용 본을 구성하는 3가지 정보 이름 : 본을 식별할 수 있는 고유한 이름 트랜스폼 : 캐릭터 메시에 본이 심어질 때 본의 배치 정보 (현재의 정보) 바인드포즈(Bindpose) : 최초의 배치 정보, 향후 본이 움직일 때 상대적인 변화량을 파악하는데 사용 리깅(Rigging) : 메시에 본 정보를 추가한 후 본의 움직임에 따라 메시의 정점이 움직이도록 본과 정점을 연결하는 작업 웨이트(Weight) : 한 정점에 영향을 주는 본들의 연결 정보 게임 엔진은 시간에 따라 값의 변화를 저장한 키프레임(Keyfra..
사원수(Quaternion) : 4개의 독립된 체계로 구성된 4차원의 수집합, 2차원의 복소평면을 4차원 공간으로 확장한 개념 16.1 사원수 대수 사원수를 구성하는 세 허수 사원수는 3개의 허수부 i,j,k 로 구성되어있지만 허수단위 i와 같은 성질을 가진다. 사원수의 구조 사원수의 덧셈 q1 + q2 = (a1 + a2) + (b1 + b2)i + (c1 + c2)j + (d1 + d2)k 결합법칙 : q1 + (q2 + q3) = (q1 + q2) + q3 = (a1 + a2 + a3) + (b1 + b2 + b3)i + (c1 + c2 + c3)j + (d1 + d2 + d3)k 교환법칙 : q1 + q2 = q2 + q1 = (a1 + a2) + (b1 + b2)i + (c1 + c2)j + (..
15.1 자연지수함수 //오일러 공식 e^iθ = cosθ + i sinθ 무리수 e y = (1 + 1/x)^x e = lim/x->∞ (1 + 1/x)^x 자연 지수 함수 거듭제곱(Exponentiation) : 같은 수를 여러 번 곱하는 작업 지수(Exponent) : 거듭제곱에서 곱하는 횟수 밑(Base) : 거듭제곱에서 곱하는 수 거듭제곱을 구성하는 밑과 지수가 가지는 연산의 특징을 지수 법칙(Law of exponents)라고 한다. 밑이 같은 거듭제곱 간의 곱셈은 지수를 더한 거듭제곱과 동일 하다. (a^m · a^n = a^m+n) 거듭제곱의 거듭제곱은 지수를 곱한 거듭제곱과 동일하다. (a^m)^n = a^m·n 지수가 0인 거듭제곱은 항상 1의 값을 갖는다. (a^0 = 1) 지수함수(..
14.1 복소수 복소수(Complex number)는 실수(Real number)와 허수(imaginary number)두 개의 값으로 구성되는 수집합을 뜻하며, 집합 기호는 C로 표현한다. 허수 허수는 제곱해서 음수가 되는 상상의 수이다. 실수와 구분하기 위해 허수에 i라는 기호를 사용한다. 이를 허수 단위(Imaginary unit)라 부른다. 허수단위 i는 제곱했을 때 -1가 나오는 수를 말한다. 복소수 내에서 서로 완전히 분리된 실수 집합과 허수 집합은 각각 실수부(Real part)와 허수부(Imaginary part)로 부르고 허수부는 항상 i를 사용해 표기한다. 복소수의 구조 복소수의 덧셈 연산의 성질 결합법칙 : (a,b) + ((c,d) + (e,f)) = ((a,b) + (c,d)) +..
13.1 절두체 컬링 절두체 컬링(Frustum culling) : 절두체의 영역 밖에 있는 게임 오브젝트를 파악하고 걸러내는 기능 평면의 방정식 하나의 평면을 정의하려면 최소 3개의 점이 필요하다. 3차원 공간의 평면은 앞면과 뒷면이 존재하기 때문에 이를 구분할 수 있는 정보도 필요하다. 법선 벡터 n과 평면위의 점 P_0 에서 점 P로 향하는 벡터를 내적해보자. n·(P - P_0) = (a,b,c)·(x-x_0, y-y_0, z-z_0) = 0 = ax + by + cz - (ax_0 + by_0 + cz_0) = 0 여기서 법선 벡터 (a,b,c)와 평면의 점(x_0, y_0, z_0)는 사전에 주어진 값이므로 -(ax_0 + by_0 + cz_0)는 미리 계산할수 있는 상수값 d로 치환한다. 이..
12.1 원근 투영 변환의 원리 투시 원근법(Perspective projection) : 눈에 보이는 상을 그대로 화폭에 담기 위해 시선을 한 점에 고정시키고, 고정된 점으로부터 화폭까지 곧게 뻗은 실을 활용한 화법이며 르네상스 시대에 창안된 기법 원근 투영 변환(Perspective projection transformation) : 우리 눈이 바라보는 방식으로 가상 공간을 변환하는 것 화각(Field of view) : 카메라가 바라보는 범위 투영 평면(Projection plane) : 모든 물체의 상이 맺히는 가상의 평면 초점 거리(Focal length) : 투영 평면의 위치를 지정하기 위해 설정한 카메라로 부터 투영 평면까지의 거리 NDC(Normalized device coordinate)..
11.1 벡터의 외적 3차원 벡터의 외적은 x기호를 사용한다. 3차원 벡터 u와 v의 외적 u x v는 다음과 같다 u = (u_x, u_y, u_z), v = (v_x, v_y, v_z) u x v = (u_y v_z - v_y u_z, u_z v_x - v_z u_x, u_x v_y - v_x u_y) 외적은 교환법칙이 성립하지 않는다. 외적은 결합법칙도 성립하지 않는다. 하지만 덧셈에 대한 분배법칙은 성립한다. 평행성 판별 동일한 벡터를 내적하면 벡터 크기를 제곱한 값이 나온다. 그러나 동일한 벡터를 외적하면 영벡터가 나온다. 또한 평행한 벡터를 외적해도 여벡터가 나온다. 이처럼 외적의 성질은 평행성을 판별하는 데 사용된다. 내적의 경우 두 벡터의 직교성을 판별하는 데 사용된다. 벡터 외적의 크기는..
10.1 3차원 공간의 설계 3차원 공간을 설계하는 방법은 왼손 좌표계와 오른손 좌표계 크게 두가지로 구분된다. 왼손 좌표계는 내가 바라보는 정면이 +z축 이고 위가 +y, 오른쪽이 +x인 방향이다. 오른손 좌표계는 나한테 오는 방향(나의 뒤방향)이 +z 축이고, 위가 +y, 오른쪽이 +x인 방향이다. 왼손과 오른손은 z축의 방향차이로 확인할 수 있다. 10.2 3차원 공간의 트랜스폼 3차원 트랜스폼 체계는 2차원 공간의 트랜스폼에서 기저벡트가 하나더 증가했을 뿐이다. 이동 변환을 위해 한 차원 더 늘어난 4차원 공간을 사용한다. ┌ S_x 0 0 0 ┐ S = │ 0 S_y 0 0 │ │ 0 0 S_z 0 │ └ 0 0 0 1 ┘ ┌ 1 0 0 t_x ┐ T = │ 0 1 0 t_y │ │ 0 0 1 ..
9.1 게임 엔진의 구성요소 게임 엔진의 인터페이스는 게임 콘텐츠가 담기는 게임 공간을 설계하는 작업 공간과 게임 데이터를 관리하는 작업 공간으로 나뉜다. 게임 공간은 씬(Scene)혹은 레벨(Level)이라 부르며, 데이터는 리소스(Resource) 혹은 애셋(Asset)이라 부른다. 씬의 구조 게임 엔진은 개발자가 생성한 다양한 종류의 물체를 효과적으로 관리하기 위해 물체가 가져야 할 규격을 제시해주는데, 이를 게임오브젝트(GameObject) 또는 액터(Actor)라고 부른다. 게임 오브젝트는 게임 엔진에서 콘텐츠를 구성하는 기본 단위로 관리된다. 씬을 구성하는 게임 오브젝트는 게임 공간에 항상 존재해야 하기 때문에 언제나 공간 내 배치 정보를 가져야 한다. 게임 엔진은 게임 오브젝트의 배치 정보를..
8.1 세점의 결합 세점 P1, P2, P3 를 결합하는 경우 스칼라는 2개에서 3개로 늘어나는데 세 스칼라의 합은 1이 되어야 하므로 아핀 결합식은 다음과 같이 전개 된다. P` = s·P1 + t·P2 + (1-s-t)·P3 (P` - P3) = s(P1 - P3) + t(P2 - P3) //w = (P` - P3) //u = (P1 - P3) //v = (P2 - P3) 치환 w = s·u + t+v 아핀 결합식에서 스칼라 값을 [0,1] 범위로 제한하면 시작과 끝의 범위가 명확해지므로 도형이 만들어 진다. 아핀 결합에서 모든 스칼라 값을 [0,1] 범위로 한정한 결합을 컨벡스 결합(Convex combination)이라고 부른다. 선분이나 삼각형처럼 컨벡스 결합으로 만든 영역을 컨벡스 영역(Con..
벡터 내적의 계산법과 내적이 가지는 성질을 알아보고 삼각함수와 어떤 연관성을 가지는지 알아보자 7.1 벡터의 내적 벡터의 내적(Dot product)은 같은 차원의 두 벡터가 주어졌을 때 벡터를 구성하는 각 성분을 곱한 후 이들을 더해 스칼라를 만들어내는 연산이다. u = (a,b) v = (c,d) u·v = a·c + b·d 내적의 성질 내적은 스칼라의 곱셈과 덧셈으로 구성되어 있으므로 교환법칙이 성립한다. 하지만 결과가 벡터가 아닌 스칼라로 나오는 성질로 인해 결합법칙은 성립하지 않는다. u·v = a·c + b·d v·u = c·a + d·b ∴ u·v = v·u u·(v·w) ≠ (u·v)·w 내적은 덧셈에 대한 분배법칙이 성립된다. w·(u+v) = (e,f)·(a+c, b+d) = ae + ..
이동이 가능한 부분 공간을 아핀 공간(Affine space)이라고 부른다. 6.1 이동 변환을 위한 아핀 공간 임의의 벡터 (x,y)를 지정한 크기(a,b)만큼 이동시키는 기능은 행렬의 덧셈으로 구할 수 있다. ┌ x ┐ + ┌ a ┐ = ┌ x + a ┐ └ y ┘ └ b ┘ └ y + b ┘ A · ┌ x ┐ = ┌ x + a ┐ └ y ┘ └ y + b ┘ ┌ 1 0 a ┐ ┌ x ┐ ┌ x + a ┐ │ 0 1 b │ · │ y │ = │ y + b │ └ 0 0 1 ┘ └ 1 ┘ └ 1 ┘ //이동 변환행렬(Translate transformation matrix) ┌ 1 0 a ┐ T = │ 0 1 b │ └ 0 0 1 ┘ 벡터 공간에서 이동을 위해 마지막 차원의 값을 1로 한정한 부분 공간..