티스토리 뷰

1. 변환 파이프 라인  ( Transformation pipeline )

 

 

 

▶ 변환 파이프 라인

: 3차원 모델 좌표계의 정점들을 2차원 화면 좌표계로 변환하는 과정

  ( 3D 공간 상의 Object 들이 2D 화면으로 보여지는 과정 )

 

 파이프 라인은 기하적인 데이터를 하나의 물체나 장면으로 표현하는 역할을 하며, 그로부터 2차원의 이미지를 만든다.

 

 

 


▶ 6단계 

 

 

① 모델 공간

② 전역 공간

③ 시점 공간

④ 절단 공간

⑤ 정규화 된 장치좌표계

⑥ 윈도우 좌표계

 

 

 

 

변환 파이프 라인 단계

 

 

공간 변환

 

 

 

 

 


(1) 모델 공간 ( Model Space / Local Space )

: 로컬 공간으로, Object Pivot이 Local 좌표계 상에서 원점에 존재하는 공간이다.

 하나의 캐릭터를 표현할 때 ' 모델 공간 ' 이라는 하나의 좌표계에서 정점의 위치를 저장한다.

 

 

 

 

(2) 전역 공간 ( World Space )

: 3차원 공간 상의 최종적인 원점 좌표계이다.

 Object를 공간 상에서 특정한 World로 이동 및 회전, Scale 된 좌표이다.

 Object 를 World 곳곳에 놓는 작업이다.

 Model Matrix ( 모델 행렬 ) 로 변환이 이루어진다.

 

 

 

(3) 시점 공간 ( Camera Space )

: 카메라가 바라보는 공간을 시점 공간이라 한다.

 시점이 그 공간 좌표계의 원점이 된다. ( = 카메라가 원점이 된다. )

 World 상에서 놓여진 Object 를 바라보는 카메라의 시점으로 옮긴 공간이다.

 

 카메라 앞쪽에 있는 모든 Object 를 볼 수는 없다. ( 우리 눈으로 앞쪽에 있는 모든 물체를 볼 수 없는 개념과 같다. )

 Position , Rotation , Scale 이 적용된다.

 View Matrix ( 뷰 행렬 ) 의 곱하기 연산으로 이루어진다.

 

 

 

 

(4) 절단 공간 ( Clip Space )

: 어떤 물체가 보여지는 위치에 있는지, 그렇지 않은지를 판단한다.

 시야절두체를 통해서 이루어진다.

 

 카메라의 공간 밖 ( 보여지는 공간 밖 ) 에 위치해 있어서 보여지지 않는 Object 를 걸러낸다.

 카메라의 뷰에 따라서 Perspective View / Orthogonal View 를 적용한 상태로 만드는 변환 공간이다.

 Projection Matrix ( 투상 행렬 ) 적용으로 이루어진다.

 

 

 

 

(5) 정규화된 장치 좌표계 ( Normalized Device Coordinates )

: 절단 공간에서 측 정렬된 육면체의 크기인 W 를 1로 놓으면 정규화된 장치 좌표계를 얻을 수 있다.

 정규화된 장치 좌표계를 기준으로 표현 된 ( x , y , z ) 좌표계에서 z 값을 0 으로 놓아서 좌표 ( x , y ) 를 얻는다.

 

 Device 에서 사용하기 쉬운 Normalized 된 형태의 좌표계로 변환 시키는 연산이다.

 ( x , y , z , w )  →  ( x/w , y/w , z/w , 1 )

 

 

 

 

(6) 윈도우 좌표계 ( Screen Space )

: 정규화된 장치 좌표계를 실제 모니터 상의 ( x , y ) 좌표로 변환해야 하는데 이를 뷰 포트 ( ViewPort ) 변환이다.

 정규화된 장치 좌표계에서 게이머가 설정한 뷰 포트의 크기를 곱하여 실제 윈도우의 ( x , y ) 좌표를 얻어낸다. 

 

 절단 공간의 좌표들을 Screen 좌표계, 즉 화면에 보이는 공간으로 이동시키는 변환이다.

 -1.0 ~ 1.0 사이에 있었던 점들이 디바이스의 픽셀 화면 비율로 맵핑 ( Mapping ) 이 이루어진다.

 Viewport Transformation ( 뷰 포트 변환 ) 연산으로 이루어진다.

 

 

 

 

 

 


* 시야절두체 : 실제 카메라가 비추는 공간 ( 피라미드 모양 )

                   카메라에 의하여 보일 수 있는 것들을 담는 범위

시야절두체

 

 

 

 

 


2. Transformations Function

 

 

 

 

 

 

 유니티 엔진을 잘 쓰기 위해서는 변환 파이프 라인의 공간 변환 개념들을 확실하게 이해하는 것이 좋다.

 

 

 

 

 


 

댓글