좌표변환의 순서
Local -> World -> View -> Projection -> Screen
(Projection과 Screen은 다음 글에서 작성 예정)
로컬은 말 그대로 물체 A를 기준으로 한 좌표계를 의미한다.
월드행렬은 물체마다 다 따로 따로 있음
어떤 행렬의 좌표를 나타내는 것은 월드행렬이며, 따라서 물체마다 독립적으로 존재한다
어떤 물체 A의 로컬에 월드행렬을 곱하면 내가 원하는 위치와 각도, 크기로 배치가 된다.
카메라의 경우도 월드행렬을 곱해서 월드에 위치하게 해준다.
뷰 행렬이란
카메라의 기준을 원점으로 잡고 카메라가 찍는 방향을 Z로 잡는 뷰 행렬을 연산해주게 된다.
1. Local
- 모델러가 만들어주는 기본 좌표계
- 모델들의 구조를 잡는 좌표
2. World
- 월드의 좌표에 이 물체를 놓기 위해 사용하는게 월드 행렬
- 물체에다가 월드 행렬을 곱하면 월드에 위치가 되는 행렬
- 한마디로 정리해서 로컬 좌표에 있는 물체 A에 크기, 회전, 이동 행렬을 거치면 월드 행렬이 된다.
3. View
- World -> View (View 행렬로 변환)
- 카메라를 원점으로 잡고 카메라가 바라보는 방향을 Z축으로 잡는 새로운 좌표계
- 카메라를 월드에 배치시킨 후 카메라의 역행렬을 구해서 다시 카메라의 로컬로 돌아가는 것도
- 로컬 -> 월드 -> 뷰의 순서로 변환되었다고 볼 수 있다.
Translation의 역행렬은 순전히 이동량이므로 그 이동량에 마이너스 부호를 붙이면 해결되고,
Rotation의 역행렬은 Rotation 행렬이 직교행렬이다보니 역행렬 = 전치행렬이기 때문에 행렬을 전치하면 쉽게 구할 수 있다.
4.Projection
- 카메라가 찍는 영역 안에 들어가 있는 물체들을 프레임마다 잡아주는 단계
- 이 안에는 -1 ~ +1 사이읭 값으로 찍히게 된다 (NDC 좌표계)
5. Screen
- NDC 좌표를 스크린 좌표에 맞게 출력해주는 부분
'DirectX > [Inflearn_rookiss] Part2: DirectX12' 카테고리의 다른 글
13. Translation 정리 & Camera 클래스 추가 (0) | 2023.01.24 |
---|---|
12. Projection, Screen 변환 행렬 (2) | 2023.01.23 |
10. 좌표계 변환 행렬 (0) | 2023.01.22 |
9. SRT 변환 행렬 (0) | 2023.01.21 |
8. 행렬 (0) | 2023.01.19 |
댓글