플레이어가 월드 공간을 탐험할 때, 일정한 영역을 모니터에 표현해야 한다.
월드 공간의 일부를 화면에 보여주기 위해 재배치한 공간을 뷰 공간이라 한다.
한마디로 뷰 공간은 화면을 찍는 카메라를 원점으로 월드 공간을 재배치한 공간이다.
월드에 배치된 오브젝트 좌표가 뷰 공간에 배치될 때 좌표는 아래 식과 같다
ViewPoint = -CameraPoint + WolrdPoint
이를 행렬로 나타내면 아래와 같이 나타낼 수 있다.
V=Tc−1⋅To
게임 오브젝트의 메시 데이터 한점은 로컬 좌표에서 월드 좌표로 계산됨
vwolrd=TRS⋅vlocal
그리고 월드 좌표가 카메라 위치 좌표에 따라 뷰 좌표로 변환 된다.
vview=Tc−1⋅vwolrd=Tc−1⋅TRS⋅vlocal
Tc−1을 뷰 행렬이라하며 카메라의 트랜스 폼 정보로 생성된다.
카메라가 회전한다면 플레이어는 오브젝트들이 반대 방향으로 회전하는 것으로 보인다.
이는 회전 행렬에 역행렬을 취하여 적용한 것과 같다.
vview=(TcRc)−1⋅TRS⋅vlocal=Rc−1Tc−1⋅TRS⋅vlocal
- 카메라로부터 뷰 행렬을 구해 계산
- 씬에 속한 오브젝트를 순회
- 오브젝트의 모델링 행렬 계산
- 뷰 행렬과 모델링 행렬 곱 결과를 저장
- 곱 결과와 메시 정점을 곱하여 뷰 공간 좌표로 변환
- 변환된 정점들로 삼각형을 만들고 이를 색칠
- 오브젝트마다 3~6 반복