[Computer Graphics] Graphics Pipeline 7 Steps

세동네·2022년 11월 4일
1
post-thumbnail

· Overview

  • 기본 도형(Primitives)는 위 일련의 단계에서 처리된다.
  • 각 스테이지가 결과를 다음 스테이지로 전달한다.
  • 파이프라인은 다양한 방식으로 그려지고 구현될 수 있다.
  • 하드웨어에 있는 단계, 소프트웨어에 있는 단계가 구분된다.
  • 일부 단계는 최적화 및 추가 프로그래밍이 가능하다.

1. Modeling Transformations

  • Modeling Transformation 단계는 3D 모델을 Object space라는 각자의 좌표계에서 World space라는 공통된 좌표계로 변환한다.

2. Illumination(Shading)

  • 질감이나 소재와 같은 머티리얼 특성, 표면(Surface) 특성과 광원에 따른 정점의 빛 표현(Vertices lit)
  • Diffuse, Ambient, Phong 등의 지역 조명 모델(Local Lighting model)

3. Viewing Trransformation

  • World spaceEye space로 변환하는 과정이다.
  • 이때 Eye space에서 관찰점(eye)인 Eye position은 좌표계의 원점, 관찰 방향은 특정 축(주로 z)을 따라 지정된다.
  • 실제 카메라의 특성을 담은 모델을 이용해 촬영 위치, 시점과 각도(Orientation), 시야의 넓이 즉, 가로세로 비율(Aperture), 곡률 등의 매개변수를 전달해 보여질 영역을 정한다.

- u-v-n Viewing coordinate frame

Eye spaceViewing coordinate space라고도 하는데, 특이하게 xyz 좌표축이 아닌 uvn 좌표축을 사용한다. 오른손 좌표계를 따르며, 각 벡터는 다음을 의미한다.

  • u(VUP, View Up vector) : View plane의 Y 방향 벡터. VPN에 수직 방향이기만 하면 되기 때문에, 반드시 정확히 위쪽 방향일 필요는 없다.
  • v : VUP 과 VPN을 외적하여 나온 X 방향 벡터.
  • n(VPN, View Plane Normal) : View plane에서 Eye position 쪽으로의 방향(Z) 벡터.

- Viewing Specifcation

  • Eye Position으로부터 시작되는 Eye space는 위와 같은 요소들로 구성된다.

    요소설명
    View plane- 카메라의 필름과 같이 3D 월드를 2D 화면에 투영시킬 기준이 되는 무한한 평면.
    u-v 벡터의 평면이기도 하다.
    - View plane보다 앞에 있는 물체는 보이지 않고, 뒤는 보인다.
    Clipping window- View plane에서 실제 화면으로 보여질 영역의 크기 및 비율을 결정한 창.
    Front/Back clipping plane- Near/Far 라고도 하며, 관찰할 수 있는 Clipping window의 최소, 최대 영역.
    - 직교(정사영, Orthogonal) 투영이라면 Front/Back의 크기는 같고,
    원근(Perspective) 투영이라면 Front보다 Back의 크기가 크다.
    View volume- Eye position부터 Clipping window로 만들어질 수 있는 사각뿔 모양의 3D 영역.
    Viewport- View volume 내에서 화면에 실제로 보여질 영역. View plane과 평행하다.
    위 그림에서 View plane으로 가리켜지고 있는 영역이라고 생각하면 쉽다.
    View frustum- View volume을 Front/Back clipping window로 감싼 절두체.

4. Clipping

  • Eye space에서 NDC(Normalized Device Coordinates)로 변환하는 과정이다.
  • View frustum(View volume) 바깥의 오브젝트들을 잘라내고, 물체가 카메라에 보이는 면을 뽑아내거나 물체가 카메라에 가려지는 면을 지워낸다(사실 둘은 같은 작업이다).

5. Projection

  • NDC에서 Screen space로 변환하는 과정이다. 이때 3D object가 2D vector image가 된다.

6. Rasterization(Scan conversion)

  • 2D화된 물체를 픽셀 데이터로 표현한다. 이렇게 2D vector image를 그에 대응하는 Pixel pattern image로 변환하는 것을 래스터화(Rasterization)이라 한다.
  • 물체의 색깔, 투명도, 깊이(Depth) 등의 요소를 종합하여 해당 픽셀의 최종 색깔을 표현한다.

7. Visibility / Display

  • 최종적으로 결정된 픽셀 데이터를 화면에 표현한다.

· 참고

[MIT csail] The Graphics Pipeline: Projective Transformations

0개의 댓글