본문 바로가기

DirectX 12/Vector & Matrix6

[DirectX12 - Vector & Matrix] Chapter 06. Projection, Screen 변환 행렬 PROJECTION SPACE (HOMEGENEOUS CLIP SPACE) 투영행렬 3D화면 좌표계를 2D화면 좌표계로 만드는 변환 행렬 원근투영 near(n) 와 far(f) 가 있다. 그 안에 들어가는 것들만 보여준다. 투영 좌표게는 정사각형 비율은 1로 들어간다. x와 y는 최소 -1,-1 좌표에서 최대 1,1, 좌표다 그래서 뷰에서 투영 좌표계로 들어가려면 어떤 값이던 간에 적절히 비율을 따져서 연산하게 돼서 -1 ~ 1 사이의 점으로 표현이 돼서 나중에 화면의 비율을 이용해서 화면에 물체를 그려준다고 생각하면 된다. 투영좌표계에서 x와 y는 -1에서 1 사이의 범위를 표현한다했는데, 깊이(z)는 0 ~ 1까지를 표현한다 또 이 과정에선 최종적으로 물체를 그릴지말지 체크하는 DSV(뎁스 스텐실 뷰.. 2023. 6. 30.
[DirectX12 - Vector & Matrix] Chapter 05. World, View 변환 행렬 로컬 스페이스 -> 월드 스페이스 -> 뷰 스페이스 투영 - 카메라에 찍힌 모든 물체들을 비율에 맞춰 화면안에다가 맞게 찍히게 변화하는 단계 화면안에 들어오는 것들의 범위를 Clip Space 라 한다. 마지막 단계로 스크린에다가 그려주는 것을 뷰포트 라고 한다. 해상도마다 비율이 다르니 비율에 맞춰주는 작업들. 로컬스페이스 -x,y,z 쪽을 순서대로 right, up, look 벡터라고 한다. 로컬스페이스에서 월드 스페이스로 갈려며 월드행렬을 해주면 된다. 반대로 월드스페이스에서 로컬 스페이스로 갈려며 월드역행렬을 해주면 된다. 월드행렬 (x, y, z, 1) [right.x right.y right.z] = (X, Y, Z, 1) 2023. 6. 30.
[DirectX12 - Vector & Matrix] Chapter 04. Scale, Rotation, Translation 변환 행렬 벡터를 변환시킬 떄 하는 3총사 Scale Rotation Translation SRT라 함 (x, y, z) x (3x3 행렬) = 1 x 3 3d상에서 어떤 문체를 2d화면상으로 옮기는 최종적으로 투영하는 수학적으로 연산을 하게 될건데 그걸 위해서는 위에 말한 3가지처럼 다양한 연산이 필요하다. 근데 xyz 벡터에다 3x3행렬을 사용했을 때는 Translation을 표현한다고자하면 각각의 원소 계산에 x y z의 연산이 들어가기때문에 이동 변환을 할수없다. 그래서 게임에서 계산할 때는 인게임에서는 xyz 3개만을 사용하지만, 4차원으로 하나 더 만들어줘서 (x, y, z, w(1)) 로 사용한다. 이렇게 가상의 4차원 공간인것마냥 추가해줘서 사용하는 것을 동차좌표계라 한다. w가 의미를 갖는다기보단 .. 2023. 6. 30.
[DirectX12 - Vector & Matrix] Chapter 03. 행렬 벡터가 행렬을 갖다오게되면 변환이 된다. 사실은 우리의 좌표 자체는 위치 벡터로 관리하지만, 그 벡터가 위치가 변환하는 과정 자체는 행렬로 묘사하는 걸로 볼 수 있다. 그리고 행렬의 특징이 여러개를 준비해서 하나하나하나 거칠 필요 없이 행렬들끼리도 하나로 합쳐서 모든 동작이 한번에 일어날 수 있게 합칠 수 있다. 행렬의 정의 쉽게 생각하면 2차원 배열 안에는 스칼라 값이 들어가있다고 보면 된다. 행수와 열수 행 row. 열 col 2 x 3, 4 x 4 다양하다 [1 3] [4 2] 에 K를 곱하면 [k 3k] [4k 2k] 그리고 행렬의 덧셈은 포맷이 똑같아야한다 서로 2x2 라든지. 각각의 위치에 맞는 것들끼리 더해주면 된다. 단순함 사실 덧셈은 활용할 상황이 많이 없다 게임속에선 행렬의 곱을 거의 .. 2023. 6. 30.
[DirectX12 - Vector & Matrix] Chapter 02. 벡터 스칼라 : 크기와 방향을 가지는 벡터에 대비하는 개념으로, 크기만 있고 방향을 가지지 않는 양을 말한다. 단위벡터 : 단위 길이 (1)를 갖는 모든 벡터 정규화(노멀라이즈) : 단위벡터를 만드는 일종의 함수 기저벡터 : 벡터 공간 V의 basis는 V라는 공간을 채울 수 있는, 선형 관계에 있지 않은 벡터들의 모음이다. 즉, 서로 독립인 벡터들을 의미한다. 벡터는 (크기)와 (방향) 만을 가진다. = 일반적으로 기하 벡터 라 한다. 벡터가 기본적으로 알고있는 의미는 위의 의미가 맞긴한데, 게임에서 사용할 떄는 다른 이걸 다른 용도로 더 활용을 한다. 벡터를 사용하는 방법이 두 가지라고 보면 된다. 하나는 위에 말한 기하 벡터. 그리고 말한 한 가지는 어떤 물체의 좌표다. 벡터는 x, y, z로 이루어져 .. 2023. 6. 30.
[DirectX12 - Vector & Matrix] Chapter 01. 삼각함수 2023. 6. 30.