Math & Physicss

[Math] World, View 변환 행렬

송만덕 2022. 2. 3. 02:41

 

Loacl -> World -> View -> Projection -> Screen

 

  • Local Space = Object를 기준으로 한 좌표계
  • World Space = Object를 인게임에 배치하려면 Local -> World Space로 좌표계를 변환해주어야 한다. (카메라 또한 인게임에 배치를 해주어야 한다. RT 적용)
  • View(Camera) Space = 카메라를 원점으로 새로운 좌표계를 만들어 좌표계를 변환해야 한다. (인게임 화면이 됨)
  • Projection = 투영 단계(Projection)를 통해 카메라를 기준으로 Near와 Far를 나누어 출력할 Obejct를 추려낸 뒤 원근투영을 수행할 경우 비율을 통해 Object가 비춰질 크기를 설정한다. (직교투영은 비율 x)
  • Clip Space = Frustum 내의 물체들이 비율에 따라 NDC로 변환된 뒤 <<<< 투영
                      NDC 내의 상태를 Clip Space라고 한다.

정규좌표(Normalized Device Coordinate)

  • Screen(View Port) Space = 출력화면(스크린)에 맞게 해상도에 따른 비율을 설정하여 최종적으로 화면에 출력한다

 

 

 

 


 

World 변환

 

 

SRT 참조 : https://blog.daum.net/manduk8412/44?category=2014237

 

World 행렬을 통한 SRT 정보 추출법은 다음과 같다.

  • Position = 하단의 Pos x, Posy y, Pos z 를 참고.
  • Scale = Right, Up, Look에 곱해진 Scale 값을 참고.
  • Rotation = 각 Right, Up, Look 방향을 알고있기 때문에 Rotation 값을 구할 수 있음.

 


 

 

View 변환

 

 

View(Camera) Space를 이해하는 방법론은 두 가지가 있다.

 

1.Object들을 Camera의 Local Space로 가져와서 배치 시킨다.

 

이를 수행하기 위해선 Camera를 World로 배치시키기 위해서 사용한 World 변환행렬의 역행렬을 사용한다.

=> Object에 Camera의 World 변환행렬(RT)의 역행렬(T˘¹R­­˘¹)을 곱해줌으로써 배치시킨다.

이는 결국 Camera를 World에 위치시키기 위한 변환을 역방향으로 Object에게 해줌으로써 Camera는 원점으로 이동하고, Object는 Camera가 World에서 찍던 상태로 변환이 되는 것이다.

 

2. 카메라 변환의 반대로 오브젝트를 변환 시킨다.

 

사실 이는 위와 다른점이 없지만, 이해하는데에 있어서 이게 더 편할 수가 있다.

만약 카메라가 오른쪽으로 이동하겠다고 가정한다면 오브젝트를 좌측으로 이동시켜주면 된다.

이는 사실 카메라는 중점에 그대로 있고 오브젝트만 이동하게 되지만, 카메라가 이동한것과 같은 효과를 볼 수 있다.