본문 바로가기
Computer Graphics

CG12 - 윈도우와 뷰포트

by 아무키 2022. 5. 23.
반응형

그림의 제작에서 출력까지의 전체 뷰잉과정과 그림의 일부분만을 출력시키는 윈도우 - 뷰포트

 

뷰잉 파이프라인(윈도우와 뷰포트의 개념), 뷰잉과정이라고도 함

 

모델 좌표계 ->  모델링변환 -> 월드좌표계 -> 윈도우뷰포트 변환 -> 뷰잉좌표계 -> 뷰잉좌표계의 정규화 -> 정규화된 뷰잉좌표계 ->장치 좌표계로 변환 -> 장치좌표계

 

개별 객체를 표현하기 위해 사용되는 각자의 좌표계를 모델 좌표계라 한다.

 

각자의 모델좌표계에서 설계된 객체들을 모아서 하나의 그래픽 장면을 구성하게 된다. 하나의 장면을 구성하고 난 후에도 각자의 모델좌표계를 사용하고 있으면 객체간의 관계가 파악이 되지 않으며 동일한 기하변환을 적용할 때에도 효율적이지 못하다. 따라서 그래픽 장면 전체를 위한 하나의 좌표계로 통합이 되며 이를 월드 좌표계라고한다. 이때, 모델좌표계에서 월드좌표계로 좌표계 변환이 되는 과정를 모델링 변환이라고 한다.

 

 월드 좌표계에서 완성된 그림은 전체가 출력되기도 하고 일부분 영역만 출력되기도 한다. 사용자가 창문들 통하여 보듯이 원하는 영역만 출력하기를 원할 떄 보통 직사각형 모양의 윈도우를 설정한다.  출력장치에서도 사용자가 출력될 위치 및 크기를 설정할 수 있으며, 보통 직사각형 모양의 영역인 뷰포트를 설정한다. 이에 따라 윈도우로 설정된 영역에 대해 기하변환을 하여 뷰잉좌표계의 뷰포트 영역으로 바뀌고 최종적으로 출력장치에 출력된다.

 

윈도우 연역의 그림을 뷰포트 영역의 그림으로 기하변환하는 과정을 윈도우-뷰포트 변환이라고 하며, 뷰포트는 크기와 방향이 다양하게 존재할 수 있다.

 

그래픽 장면에서 윈도우 영역에 포함되지 않은 부분의 그림은 제거하여 처리해야 하는데 이 과정을 클리핑이라고 한다.

 

마지막 과정으로, 정규화된 뷰잉좌표계에서 표현된 뷰포트 영역이 출력장치의 해상도에 따라 설정된 장치좌표계로 변환되어 출력된다.

 

뷰잉변환을 이용하여 다양한 효과를 만들 수 있으며, 그중에서 줌잉(Zooming)효과는 윈도우-뷰포트 변환을 이용하여 얻을 수 있다.

뷰포트의 크기는 고정시키고 윈도우의 크기를 연속적으로 축소하면 고정된 뷰포트에 나타나는 그림은 연속적으로 확대가 되어 줌인(Zoom in)효과가 나타난다. 반대로 윈도우의 크기가 확대되면 뷰포트는 고정되어 있으므로 넓은 범위의 그림이 출력되어 줌아웃(Zoom Out)효과가 나타난다. 또한 윈도우의 크기가 고정된 채로 원하는 경로를 따라 움직이면서 윈도우-뷰포트 변환을 하면 마치 카메라 각도를 돌려가면서 비디오를 촬영하는 것과 같은 패닝(Panning) 효과도 얻을 수 있다.

 

윈도우-뷰포트 좌표변환

 

 그래픽 장면에서 윈도우로 설정된 영역이 뷰포트로 출력될 떄에는 주로 위치와 크기가 변한다. 이 경우 윈도우 영역 내의 그림에서 각 좌표값들을 이동변환과 신축변환을 이용하여 뷰포트의 좌표로 변환한다.

 

 윈도우와 뷰포트가 향하고 있는 방향이 다른 경우 회전변환도 적용한다.

 

 윈도우 내의 점 (Xw, Yw)이 윈도우 - 뷰포트 변환을 하여 뷰포트 내부의 점 (Xv, Yv)가 되었을때, 점 (Xv,Yv)는 이동변환과 신축변환을 이용하여 다음과 같이 구할 수 있다.

 

 

 XwL과 XwR은 직사각형 모양의 윈도우 영역에서 x방향으로 최소값과 최대값

 YwB와 YwT는 윈도우의 y방향으로 최소값과 최대값이다.

 

 뷰포트 영역에서는 XvL과 XvR이 x방향으로 최소값가 최대값, yvB와 yvT는 y방향으로 최소값과 최대값이다.

 

뷰포트가 하나로 고정되있지 않고 윈도우 영역 안의 그림이 어러 개의 뷰 포트로 변환되거나 혹은 뷰포트 위치나 크기가 변하는 경우 윈도우-뷰포트 변환을 매번 다시 적용해주어야 한다.

 

 화면의 뷰포트에 출력된

1. 그림의 위치가 바뀌거나

2. 화면 해상도가 변하는 경우도 있으며

3. 프린터로 출력할 때

등 츨력장치의 장치좌표계로 뷰포트가 바뀌게 된다.

 

이런 경우 윈도우 영역을 가로 세로의 크기가 1로 정규화된 뷰잉 좌표계로 변환하고, 이 정규화된 뷰포트를 출력장치의 장치좌표계로 변환하여 처리해주면 계산이 쉽다.

 

 두 단계로 분리하여 구하면 다음과 같다.

 

윈도우에서 한점 Pw를 정규화 뷰포트에서 좌표 Pn으로 변환, 이후 뷰포트에서 Pv로 변환

 

이처럼 윈도우 -뷰포트 변환에서 양쪽의 변환이 독립적으로 이루어진다면 윈도우 또는 뷰포트 중 어느 한쪽만이 변할 떄 처리과정이 쉽다.

 

반응형

댓글