뷰 트랜스폼 행렬은 뷰의 위치와 회전을 정의합니다. 뷰 행렬은 신에 대해서 사용되는 카메라 입니다.
다음 코드는 뷰 트랜스폼 행렬을 작성해 Direct3D 디바이스에 대한 현재의 뷰 트랜스폼을 설정합니다.
D3DXVECTOR3 vEyePt ( 0.0f, 3.0f,-5.0f );
D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f );
D3DXVECTOR3 vUpVec ( 0.0f, 1.0f, 0.0f );
D3DXMATRIXA16 matView;
D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );
g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
처음에는 D3DXMatrixLookAtLH 를 호출해 뷰 행렬을 정의합니다. 첫번째 파라메터는 연산의 결과가 되는 D3DMATRIX 구조체로의 포인터입니다. 두번째, 세번째, 네번째 파라메터는 각각 시점(eye point), 주시점(look-at point), “위쪽(up)” 방향을 정의 합니다. 여기에서 시점은 z축에 따라 5단위(unit) 복귀, 3단위 상승하도록 설정되어있습니다. 주시점은 원점으로 설정되어있습니다. “위쪽” 방향은 y 방향으로 정의 되어있습니다.
다음에는 IDirect3DDevice9::SetTransform 를 호출해 Direct3D 디바이스에 대한 뷰 트랜스폼을 설정합니다. IDirect3DDevice9::SetTransform 에 넘긴 첫번째 파라메터에 의해 설정한 트랜스폼을 Direct3D에 지시합니다. 이 샘플에서는 D3DTS_VIEW 플래그를 사용해 설정할 필요가 있는 뷰 트랜스폼을 지정합니다. 두번째 파라메터는 현재의 트랜스폼으로 설정된 행렬로의 포인터입니다.
뷰 트랜스폼의 자세한 사항은 「뷰 트랜스폼 (Direct3D 9)」을 참조해 주세요.
신에 대한 월드 트랜스폼을 정의하면 사영 트랜스폼 행렬(projection transform matrix)을 사용할 수 있게 됩니다. 이 경우도 트랜스폼을 정의하는 순서는 중요하지 않습니다. 다만, Direct3D 는 다음 순서로 신에 행렬을 적용합니다.
- 월드(World)
- 뷰 (View)
- 사영 (Projection)
사영 트랜스폼 행렬의 정의에 대해서는「 3 – 사영 트랜스폼 행렬 정의」를 참조해 주세요.