다음을 통해 공유


변환 보기(Direct3D 9)

이 섹션에서는 뷰 변환의 기본 개념을 소개하고 Direct3D 애플리케이션에서 뷰 변환 매트릭스를 설정하는 방법에 대한 세부 정보를 제공합니다.

뷰 변환은 세계 공간에서 뷰어를 찾아 꼭짓점을 카메라 공간으로 변환합니다. 카메라 공간에서 카메라 또는 뷰어는 원점에서 양의 z 방향을 보고 있습니다. Direct3D는 왼손 좌표계를 사용하므로 z는 장면에 긍정적입니다. 뷰 매트릭스는 카메라 공간의 원점인 카메라 위치와 방향을 중심으로 전 세계의 개체를 재배치합니다.

뷰 행렬을 만드는 방법에는 여러 가지가 있습니다. 모든 경우에 카메라는 장면의 모델에 적용할 뷰 매트릭스를 만들기 위한 시작점으로 사용되는 세계 공간에서 논리적 위치와 방향을 가집니다. 뷰 매트릭스는 개체를 변환하고 회전하여 카메라가 원점인 카메라 공간에 배치합니다. 뷰 행렬을 만드는 한 가지 방법은 각 축에 대한 회전 행렬과 변환 행렬을 결합하는 것입니다. 이 방법에서는 다음과 같은 일반 행렬 수식이 적용됩니다.

뷰 변환수식

이 수식에서 V는 생성되는 뷰 행렬이고, T는 세계의 개체 위치를 변경하는 변환 행렬이고, R을 통한 Rz x-, y 및 z축을 따라 개체를 회전하는 회전 행렬입니다. 변환 및 회전 행렬은 세계 공간에서 카메라의 논리적 위치와 방향을 기반으로 합니다. 따라서 세계에서 카메라의 논리적 위치가 10,20,100개><경우 변환 행렬의 목적은 x축을 따라 개체 -10 단위, y축을 따라 -20 단위 및 z축을 따라 -100 단위를 이동하는 것입니다. 수식의 회전 행렬은 카메라 공간의 축이 세계 공간과 정렬되지 않은 상태로 회전되는 정도를 기준으로 카메라 방향을 기반으로 합니다. 예를 들어 앞에서 언급한 카메라가 바로 아래를 가리키는 경우 다음 그림과 같이 해당 z축은 세계 공간의 z축과 정렬되지 않은 90도(pi/2 라디안)입니다.

세계 공간그림

회전 행렬은 장면의 모델에 동일하지만 반대되는 크기의 회전을 적용합니다. 이 카메라의 뷰 매트릭스에는 x축을 중심으로 -90 도 회전이 포함됩니다. 회전 행렬은 변환 매트릭스와 결합되어 장면의 개체 위치와 방향을 조정하여 위쪽이 카메라를 향하도록 하여 카메라가 모델 위에 있는 모양을 제공합니다.

뷰 행렬 설정

D3DXMatrixLookAtLHD3DXMatrixLookAtRH 도우미 함수는 카메라 위치 및 조회 지점에 따라 뷰 매트릭스를 만듭니다.

다음 예제에서는 왼손 좌표에 대한 뷰 행렬을 만듭니다.

D3DXMATRIX out;
D3DXVECTOR3 eye(2,3,3);
D3DXVECTOR3 at(0,0,0);
D3DXVECTOR3 up(0,1,0);
D3DXMatrixLookAtLH(&out, &eye, &at, &up);

Direct3D는 전 세계와 뷰 행렬을 사용하여 여러 내부 데이터 구조를 구성합니다. 새 세계 또는 뷰 행렬을 설정할 때마다 시스템은 연결된 내부 구조를 다시 계산합니다. 이러한 행렬을 자주 설정하는 것은 계산에 시간이 많이 소요됩니다. 세계와 뷰 행렬을 월드 매트릭스로 설정한 월드 뷰 행렬로 연결한 다음 뷰 행렬을 ID로 설정하여 필요한 계산 수를 최소화할 수 있습니다. 개별 세계의 캐시된 복사본을 유지하고 필요에 따라 월드 매트릭스를 수정, 연결 및 재설정할 수 있는 행렬을 봅니다. 명확성을 위해 샘플은 이 최적화를 거의 채택하지 않습니다.

변환