DirectX 스터디: 월드 변환, 카메라 변환, 투영 변환
1. 월드 변환(World Transform)
월드 변환(World Transform)이란 현재 물체가 사용하는 지역 좌표계로부터 월드 좌표계로의 변환을 하는 동안 이동, 회전, 크기 변환 등의 변환을 거칩니다. 3차원 그래픽에서 모든 정점은 각자 자기만의 지역 좌표계상에서 정의됩니다. 이 지역 좌표계는 모델 좌표계라고도 합니다.
<지역 좌표계/원점을 기준으로 모델링 된 물체>
위의 이미지를 한번 보시면, 위의 물체는 고유한 원점을 기준으로 모델링되어 있습니다. 그런데, 한개가 아닌 여러개의 물체를 3차원 공간에 출력할 경우 어떤일이 벌어질까요? 여러개의 물체 모두 원점을 공유하는 일이 벌어져, 3차원 공간상에 모두 배치하게 되면 물체가 겹치게 됩니다. 이것들을 따로따로 출력하기 위해 로컬 좌표계를 월드 좌표계로 변환할 필요성이 생깁니다. 로컬 좌표계를 월드 좌표계로 변환해야 우리가 생각한대로 출력되게 되는데, 위에서 말한 그대로 지역 좌표계를 월드 좌표계로 변환을 하는 동안 크기 변환, 이동, 회전 등의 변환이 이루어지며, 이렇게 변환이 끝나면 물체는 월드 내의 자신의 위치로 이동합니다.
2. 카메라 변환(Camera Transform)
이렇게 월드 변환을 거쳐 3차원 공간상에 물체를 배치시켰으면, 이를 보기 위한 카메라가 필요합니다. 카메라 변환(Camera Transform)은 월드 좌표계에 카메라를 배치하여, 정점들을 카메라 공간으로 변환하는 것을 말합니다. (카메라를 중심으로 하는 좌표계로 변환) 카메라는 양의 z-축의 정방향을 바라보며, 왼손 좌표계를 사용하는 Direct 3D에서는 z가 장면(scene)의 정방향을 바라봅니다.
<월드 좌표계 -> 카메라 좌표계>
3. 투영 변환(Projection Transform)
이번에는 3가지 변환중에서 가장 복잡한 투영 변환인데, 기하 도형(Geometry)를 2D 뷰포트 공간으로 옮기는 것을 말하며(3차원 좌표계를 2차원 좌표계로 바꿔주는 변환 필요), 가장 많이 사용되는 변환은 원근 투영(perspective projection) 기법입니다. 원근 투영 기법에서는 카메라와의 거리에 따라 투영되는 비율이 달라지며, Z축의 값(깊이 버퍼, Z버퍼로 사용함)에 따라 그려지는 대상을 확대하거나 축소하여 화면에 그립니다. 카메라 좌표계에서 투영 좌표계로 변환되는 단계에서 원근감(멀리있는 것은 작게, 가까이 있는 것은 크게)이 추가됩니다.
투영 변환된 정점 정보는 (-1, -1, 0) ~ (1, 1, 1) 사이에 위치합니다. 참고로, 저기서의 FOV는 File Of View의 약자로, 시야를 가르키며, 카메라의 가시 부피를 정하기 위해 사용됩니다.
'정리 > Direct 3D' 카테고리의 다른 글
D3D Tutorial 05: Textures (1) | 2012.12.08 |
---|---|
D3D Tutorial 04: Lights (0) | 2012.12.02 |
D3D Tutorial 03: Matrices (0) | 2012.11.23 |
D3D Tutorial 02: Vertices (0) | 2012.11.22 |
D3D Tutorial 01: CreateDevice (1) | 2012.11.22 |