[그래픽스]02-1. 그래픽 처리과정2

2024. 4. 14. 19:52공부

이미지를 출력하는 카메라 시스템은 인간의 눈과 유사한 구조를 띄고있다. 

Cornea(각막) Lens(수정체) Iris(홍채) Retina(망막) Optic nerve(시신경) Rods and cones(간상체, 추상체)

인간의 눈은 각막을 통해 굴절된 빛을 받으면서, 수정체에서 굴절을 처리해서 초점을 망막에 맞추게된다. 이후 망막은 그 빛을 감지하여 정보로 변환하여 이것이 시신경으로 전달되어 최종적으로 우리가 보는 이미지가 된다.

또한 물체를 볼때 우리의 눈은 간상체와 추상체를 통해 빛의 색상을 감지하게 되는데, 간상체에서는 단색과 야간시야, 추상체에서는 색의 민감도를 감지하는데, 이때 눈은 오직 3가지 종류의 값만을 뇌에 전달하게된다.(3자극치, Red, Green, Blue 3원색)

 

이러한 시스템을 카메라 시스템에 적용하기위해서는 우선 필요한것이 3가지 있다.

 

1. 이미지를 형성하기위한 객체(Object)

2. 어떠한 Viewer 및 이미지 형성 프로세스와도 독립적인 Viewer(Camera)

3. 객체의 이미지를 형성하기위한 광원(Light Sources)

 

또 카메라 시스템에서 오브젝트를 보기위해서는 빛과 객체간의 상호작용이 필요한데 이는 빛이 카메라에 얼마나 들어오는 지를 통해 알수있다. 카메라 역시 마찬가지로 가시광선 의 영역인 350 ~ 780nm의 색상만 표현할수있다. (이 영역을 넘어가면 사람의 눈으로는 볼수없으므로 )

파장이 길면 Red 파장이 짧으면 Blue다

 

 

이 개념을 모두적용하면 통합적인 카메라 모델을 만들수있게된다.

통합적인 카메라 모델은 객체를 출력하기위해 3가지 개념을 가지고있다.

1.  렌즈(Viewer)의 중심에서 물체의 한점까지의 선(Projector)

2.  렌즈(Viewer)의 정중앙 (Center of Projection)

3.  렌즈 (Viewer) 의 앞으로 이동해서 투영된 가상의 이미지(projection plane) [image plane = projection plane]

Synthetic Camera Model은 Human Visual System과 유하게 렌즈와 빛이 굴절되어 물체가 상하반전된 모양으로 맻히게 된다 이를 처리하기위해서 COP(Center of Projection)앞에 평면으로 모습을 투영하여 본래의 모습으로 투영할수 있게 처리한다.

 

카메라 모델에 대해서 알아보았으니 이번에는 해당 카메라 모델을 구현하기위한(3D모델을 화면에 출력하기위한) 과정에대해 알아보겠다.

 

해당 과정들은 존재하는 정점(Vertex)들을 픽셀(Pixel)로 변환시켜 화면에 출력하는 진행하게되는데,

이를 Graphics Pipeline 이라 칭한다. Graphics Pipeline은 4가지 과정으로 이루어져 있으며 아래의 순서대로 진행된다.

 

1. Vertex Processing (Vertex Processor)

2. Clipping and Primitive Assembly (Clipper and Primitive Assembler)

3. Rasterization (Rasterizer)

4. Fragment Processing (Fragment Processor)

 

Graphics Pipeline을 진행하는 목적은 객체를 하나의 좌표계(Coordinates)에서

객체(Object)좌표계, 카메라(눈)(Camera(eye))좌표계, 화면(Screen)좌표계로 변환하기 위해서이며,

모든 좌표계의 변경은 행렬변경과 동일하다.

 

1. Vertex Processing (Vertex Processor)

Vertex Processing 과정에서는 Vertex의 위치를 Local Space(객체 공간)에서 World Space(월드 공간)으로 변환하고,

카메라 시점으로 3D장면을 확인 할수있는 View Space(뷰 공간) 변환합니다.

이후 3D장면을 2D이미지 평면위에 투영하여 그릴수있도록 Projection transformation(투영 변환)을 수행합니다.

투영변환을 수행할때는 Perspective projection(원근 투영), Parallel projection(평행 투영) 2가지중 하나를 선택하여 수행하게되는데 각각의 특징은 아래와 같다.

Perspective projection : 모든 선(Projector)들이 카메라(Projection)에서 만나게된다.

Parallel projection : 선(Projector)들은 평행하며 카메라의 중앙(COP : Center of Projection)은 카메라의 방향으로 대체 된다.

 

또한 Vertex Processing에서는 Vertex의 색상도 변경하게된다.

 

2. Clipping and Primitive Assembly (Clipper and Primitive Assembler)

현실 세계의 카메라가 세계전체를 볼수없듯이 가상 카메라(Projection)역시 World space와 Object Space의 일부만 볼수있다.

Clipping and Primitive Assembly 과정에서는 1번과정에서 변환된 Vertex들중 카메라(Projection)에서 벗어난 Vertex가 존재할수있다. 2번과정에서는 벗어난 Vertex들을 제거하여 불필요한 작업을 수행하지 않도록 돕는다. 또한 이 과정은 openGL같은 그래픽API의 경우 내부적으로 진행하며, 사용자가 따로 처리할 필요는 없다.

 

3. Rasterization (Rasterizer)

2번과정에서 Clipping 에서 제거되지 않은 Vertex들을 2D 평면이미지에 표현하기 위해서 프레임 버퍼 내부에 픽셀에 적절한 색상을 할당해야한다.

이 과정에서 Rasterizer에서 각 개체에 대한 프래그먼트(Fragment) 집합을 생성한다. 

(프래그먼트 : FrameBuffer에 위치를 가지며, 색상(Color)와 깊이(depth) 속성을 가지고있는 잠재적인 픽셀)

 

4. Fragment Processing (Fragment Processor)

Rasterization한 프래그먼트 집합의 최종색상을 프레임버퍼에 결정하는 과정이다.

최종색상은 텍스처 맵핑 이나 보간에 의해 프래그먼트 색상을 결정합니다. 

또한 프래그먼트는 카메라에 가까운 다른 프래그먼트에의해 보이지않을수있다.

(다른 프래그먼트에 의해 가려진 부분은 표현되지 않는다.)

 

 

- 공부하며 배운것을 정리하면서 작성하는 글입니다. 틀린부분은 언제든지 지적해주시기 바랍니다!

'공부' 카테고리의 다른 글

[그래픽스]Viewing  (1) 2024.04.19
[그래픽스]GeoMetry(지오메트리)  (0) 2024.04.17
[그래픽스]02. 그래픽스 처리과정  (0) 2024.04.14
[그래픽스]01. 그래픽스란?  (1) 2024.04.14
[어셈블리]레지스터  (0) 2023.12.29