문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. [[분류: 그래픽스 파이프라인]] [[파일:Viewport transformation.png|700px|섬네일|가운데]] == 개요 == Viewport Transformation 이란 [[Canonical view volume]]을 화면에 출력하기 위한 2D이미지로 변환하는 과정이다. == 방식 == [[파일:Raster Image.png|350px|섬네일|오른쪽]] *viewport transformation에선 z 값을 유지시킨다. 2D이미지라서 z 값이 필요없다고 생각할 수도 있지만, z값은 나중에 이미지의 깊이 정보를 이용하여 가려지는 물체나 비치는 물체처럼 깊이 정보를 이용해야 하는 경우에 이용된다. [[Z-Buffer]]참고. *[[Canonical view volume]]은 <math>[-1,1]^2</math>의 범위를 가지는데 이를 <math> [-0.5,n_x-0.5]\times[-0.5,n_y-0.5]</math>의 점위로 조사한다. 여기서 <math> n_y, n_x </math>의 값은 각각 우리가 조사해야 하는 이미지 (화면에 출력되는 이미지)의 높이와 너비의 픽셀수를 의미한다. 그렇다면 왜 하필 -0.5가 필요한 것일까? 이것은 옆의 그림을 보면 이해할 수 있다. 0.5값으로 조정을 해야 우리가 원하는 픽셀의 가운데에 정확히 놓여지게 된다. 아니면 픽셀의 중간이 아니라 왼쪽 아래를 가르키게 된다. == 수식 == 우선 기본적인 [[행렬 변환]]을 복기 하자면 다음과 같다. 이 식은 <math> [x_l,y_l][x_h,y_h] </math> 에서 <math> [x_l',y_l'][x_h',y_h'] </math>로 변환하는 식이다. [[파일:행렬 변환.png|600px|프레임없음|가운데]] 이 행렬 변환에 <math> x_h=-1, x_l=1, y_h=-1, y_l=1, x_h'=-0.5, x_l'=n_x-0.5, y_h'=-0.5, y_l'=n_y-0.5 </math>를 대입하고 정리하면 다음과 같이 된다. [[파일:Viewport Transformation.png|600px|프레임없음|가운데]] 이것이 최종 Viewport Transformation의 식이며 이 식을 이용하여 3D canonical 좌표계에서 2D 스크린 공간으로 변환 시킨다. Viewport transformation 문서로 돌아갑니다.