728x90 반응형 게임수학/행렬6 게임수학) Chapter6. World,View,Projection,Screen 행렬 (3) XMMATRIX XM_CALLCONV XMMatrixLookAtLH( FXMVECTOR EyePosition, FXMVECTOR FocusPosition, FXMVECTOR UpDirection); //EyePosition:카메라의 월드 기준의 좌표 //FocusPosition:카메라가 주시하고 있는 점 //UpDirection:대략적인 Up벡터 통상적으로 를 넣는다 //리턴값:World Space에서 View Space로 변환해줌 그림과 같이 EyePos,FocusPos,UpDirection를 넣어주면 이것들이 만들어내는 사각형과 직교인 Right벡터를 추출해 낼수있다. 또한 구한 Right 벡터와 Look벡터를 통해 실제적인 UP벡터를 구함으로써 View Space를 반환해줄수 있다. Projecti.. 게임수학/행렬 2021. 11. 29. 게임수학) Chapter6. World,View,Projection,Screen 행렬 (2) 카메라 (Local Local Space ↔ World Space) 변환행렬 보통 게임을 제작할 경우 우리가 보고 있는 쪽을 +로 하는 왼손 좌표계를 사용한다. 위의 식은 Wolrd변환행렬의 일반식이다. S.x/S.y/S.z는 x,y,z의 스케일값(스칼라배수)이며 Right/Up/Look은 Rotation의 행렬에 해당한다.마지막으로 Pos는 Translate에 해당하는 행이다. 하지만 카메라에는 스케일이 필요치 않다. 그러므로 카메라에는 다음과 같은 Wolrd행렬 식이 성립한다. World Space ↔View Space 변환행렬 View Space는 카메라를 원점으로 카메라의 Z축방향을 찍는 좌표계를 의미한다. 즉, 카메라의 Local좌표로 모든 오브젝트들을 데려오면 그것이 카메라의 View Spac.. 게임수학/행렬 2021. 11. 27. 게임수학) Chapter6. World,View,Projection,Screen 행렬 (1) World Space 오브젝트들은 각자의 고유 Local Space(SRT)를 가진다.캐릭터 모델같은 경우 발바닥 사이의 중앙점을 기준으로 (0,0,0)으로 좌표를 정한다. 이 Local Space는 모델러 및 아트쪽 직군에서 정해주는 캐릭터가 가지고있는 좌표이다. 하지만 실제 게임을 제작하는데 있어서 이러한 Local Space가 아닌 특정 좌표와 스케일 및 로테이션에 오브젝트들이 있기를 원한다. 이러한 게임내에서의 좌표를 World Space라고 부르며 Local Space에서 World Space로의 좌표변환을 필요로 한다. 카메라 카메라 또한 이러한 고유의 Local Space와 Wolrd Space를 가지며 SRT가 정해진다. 게임은 자유카메라로 플레이하는것이 아닌 제작자가 만들어 놓은 카메라의.. 게임수학/행렬 2021. 11. 26. 게임수학) Chapter5. 좌표계 변환행렬 좌표계 변환 행렬 변환행렬에는 SRT변환행렬로 인해 오브젝트가 변화할수도 있지만, 실제 오브젝트는 가만히 있음에도 좌표계의 변경에 따라 좌표를 변화시켜야 될때도 존재한다. 기준점A와 임의의 점 M(x₁,y₁)인 위 그래프를 벡터로 표현해보면 이 된다. 여기서 기준점이 B로 변경된다고 가정한다면 새로운 x축 y축이 생기게 되고 기준점에서 M까지를 라는 백터로 표현이 가능하며, 본래 기준점에서 M까지의 (vec)AM은 라는 식이 성립하게 되는데, 위에서 언급했듯이 (vec)AM은 이므로, 의 식에서 BM을 구할수 있다. 여기서 (vec)u₁을 B좌표계에서 생각하고 임의의 ux,uy를 지정하면 가 되며 또한 로 구분할수 있다. 구해진 식을 대입해보면 이며, 양변에 (vec)BA를 더해주면 가 되는데 (vec).. 게임수학/행렬 2021. 11. 17. 게임수학) Chapter4. 변환행렬(SRT) Translation 행렬 변환행렬(Translation Matrix)은 위치벡터에서 크기,회전,위치변환을 위해 곱해지는 행렬을 의미한다. 예를 들면 행렬 A(x,y,z)인 1x3의 행렬을 3x3의 행렬로 곱하여 원하는 값을 얻기 위한것이다. 위의 그림과 같이 계산하게된다면 x->X =ax+dy+gz y->Y =bx+hz+ye z->Z =cx+fy+jz 가 되며 계산된 각 원소는 x,y,z의 값에 영향을 받게 된다는 것을 알게된다. 이럴 경우 변환행렬에 관계없이 원하는 좌표로 이동이 불가하게 된다. 따라서 변환행렬을 할때는 n차원의 행렬은 n+1차원의 행렬로 변환하여 계산하게 된다. x->X =ax+ey+jz+n y->Y =bx+fy+kz+o z->Z =cx+gy+lz+p w->W =dx+hy+mz+q .. 게임수학/행렬 2021. 11. 17. 게임수학) Chapter3. 행렬 행렬 게임수학에서 행렬은 다방면으로 유용하게 사용되어 지고 있다. 기본적으로 벡터와 행렬을 같이 사용하는 경우가 많다. 예시로 캐릭터나 오브젝트이 좌표 자체는 위치벡터로 관리되어 지겠지만, 변화하는 과정 자체는 행렬로 연산되는것이다. 행렬의 연산 ㆍ행렬의 덧셈/뺄셈 크기와 모양이 같은 행렬은 원소 끼리 덧셈 및 뺄셈을 할수 있다. ㆍ행렬의 곱 행렬의 곱은 크기와 모양이 다소 다른 행렬끼리도 계산이 가능하다. 이때의 조건은 앞에 곱하는 행렬의 행벡터와 뒤에 곱하는 행렬의 열벡터가 동일할때 행렬끼리의 곱을 할수 있다. 행렬 A가 m x n이고 행렬 B가 n x p이면 행렬곱인 AB가 가능하며 m x p의 행렬이 된다. 이 행렬의 곱은 교환법칙이 성립하지 않지만 교환법칙은 성립한다. ㆍ대각행렬 행렬에서 행과 .. 게임수학/행렬 2021. 11. 17. 이전 1 다음 728x90 반응형