아롱이 탐험대

Overview of computer graphics 본문

CS/Computer graphics

Overview of computer graphics

ys_cs17 2022. 4. 6. 20:32
반응형

컴퓨터 그래픽스에서는 가장 기본적인 2가지 요소가 있다.

1. Modeling: scene안에서 object를 정의한다.

2. Rendering: 정의된 object를 그린다.

 

컴퓨터 그래픽스를 위한 개념적 framework는 3가지 구성 요소가 존재한다.

1. Application model

Application model은 화면에 표시되는 object 또는 데이터를 표현한다. object의 표현을 수학적, 기하학적으로 진행한다. 특정한 디스플레이 시스템으로부터 독립적이고 application 별 model이 독립되어 있다.

 

다음과 같은 set으로 구성된다.

- 기하학적 구성 요소들 (선, 구, 등등..)

- fractal과 같은 절차들

- vector, scalar data

- 위치 또는 방향, 색과 질감, 빛 위치 및 방향 등등의 physical 한 속성들로 구성된다.

2. Application program

Application model에 있는 data 또는 model을 생성, 삭제, 수정 등을 진행한다. logical level에서 user와 상호작용을 하고, 장면을 만들기 위해 graphics system에게 commnad를 보낸다. command의 대략적인 종류는 다음과 같다.

- modeling command

- viewing condition specification

- 모양 및 밝기에 대한 parameter setting

- 특수 효과 등등

OpenGL로 할 수 있는 프로그래밍을 의미한다고 생각하면 된다.

논리적으로 생각한 것들을 직접 구현, 수정, 구체화하는 과정이다.

3. Graphics system

실제로 picture를 만들고 user input을 application program에 보내는 역할을 한다. 주사 변환 및 clipping과 같은 raster 작업을 진행한다. 이것 또한 OpenGL로 가능하다.

여기서 raster란 컴퓨터에서 어떠한 도형 혹은 이미지를 픽셀로 구성하고, 이 점들의 모습을 조합, 일정한 간격의 픽셀들을 나열하여 하나의 화면을 표현하는 것을 의미한다.

 

 

Graphics process of 3D computer graphics

3D 컴퓨터 그래픽의 과정은 input으로 3D geometric mode, annimation definition, texture information를 rendering을 통해 이미지를 display 하거나 device로 전송한다.

Geometric model: 3D 스캔, geometric modeling, model library 등등을 활용하여 만들어진다.

Annimation definition: 모션 연산, 모션 캡처, 모션 디자인을 통해 만들어 진다.

Texturing: 이미지 스캔, 이미지 캡처, painted image를 통해 만들어진다.

texture 예시

Rendering process

Rendering은 크게 3가지 단계로 진행된다.

(1) 응용 단계: 충돌 검출, 가속 알고리즘, 애니메이션 등

(2) 기하 단계: 기하 변환, 조명 처리

(3) rasterization 단계: 이미지 생성, texture information 적용

Rendering을 사용해 병렬 처리를 하고, 이를 통해 더욱 빠른 작업이 가능하다. rendering 단계를 거치고 이를 통해 Image display 및 output device를 진행한다. 즉 모니터에 화면을 띄우거나, 프린터로 출력한다는 의미이다.

 

Display Technology

이미지는 depth에 해당하는 color에 대한 3바이트 픽셀이 각각 존재한다. 또한 이미지는 오로지 width와 height에 대한 픽셀을 가지고 있고, 모니터는 헤르츠 rate를 통해 image를 계속 refresh 한다.

Vector vs Raster display 

Beam에 대한 패턴은 규칙적 (raster)이거나 방향 (vector)가 필요할 수도 있다. vector CRT는 osiloscope technology의 정립으로부터 개발되었다. raster 그래픽은 memory cost를 떨어뜨리는 것을 실현하였다. CRT 디바이스 안에 색들은 빨강, 초록, 파란색 형광채로 구분되어 만들어진다.

vector와 raster는 다음과 같이 curve에 대해 다르게 나타나고, 그려지는 방법도 다르다.

raster 이미지는 0과 1로 구성된 프레임 버퍼를 통해 비디오 컨트롤러가 이미지를 만들지만 벡터 이미지는 일종의 수식을 통해 이미지를 생성한다.

 

Frame Buffer architecture

raster에 표시되는 그래픽 데이터는 frame buffer에 의해 저장되고, scan conversion이라는 과정이 존재하는데, 이는 기하학적 모양을 갖는 raster grid를 형성하는 과정이다.

Frame buffer는 위 그림과 같이 육면체로 구성이 되어 있다. 행 기준으로 왼쪽에서 오른쪽 방향이 scan line이고, depth는 precision이라고 부른다. 각 element는 pixel로 구성된다.

Raster 이미지는 고정된 순서에 의해 픽셀들을 순차적으로 그리는 것을 통해 시각화된다.

그림과 같이 scan line을 따라 진행되고, vertical retrace는 대략 1.3 msec, horizontal retrace는 대략 10 usec가 걸린다.

만약 line이 512개 존재하고 픽셀이 1024개 있다면 50 nsec/pixel이 걸린다.

 

3D Rendering pipeline

3D object를 display 하려면 2D화 해야 한다. 물론 실제 object는 3D이지만 우리 눈에 보이는 화면은 다르기 때문이다.

이 과정은 다음과 같다.

3D primitives -> model transformation -> lighting -> viewing transformation -> projection transformation -> clipping -> viewport transformation -> scan conversion -> image

여기서 project transformation 까지는 3D로 존재하고, 그 이후부터 2D이다. 각 단계별 주요 내용은 추후 자세히 알아볼 것이다.

 

Color Model

RGB model

red, green, blue가 기본적인 요소이고, additive model이라고도 부른다. 조명을 base로 하는 모델이다. 이 말은 모니터에서 눈에 들어오는 색들은 모니터가 발산하는 조명 빛에 달려 있다는 말이다.

 

CMYK model

RGB 모델에서 cyn, magenta, yellow, black이 추가가 되었고, subtractive model이라고도 부른다. 반사를 기반으로 하는 model이고, 컬러 프린터에서 많이 사용된다.

반사 기반이라는 말은 아래 그림 보면 이해하기가 쉽다. 빛이 흡수가 안되고 반사되어야지 보이는 것이라고 이해하면 된다.

색에 대한 표현은 RGB model이 CMYK model보다 더 많다. RGB는 총 24bit (8+8+8)로 되어 있어 $2^{24}$가지의 색을 표현할 수 있다.

모니터는 시간이 지날수록 성능이 떨어진다. 이 말은 즉슨 밝기의 표현이 되지 않아 점점 어두워진다는 의미이다. 이럴 때는 역함수를 취해 보정할 수 있다. 하지만 요즘 나오는 모니터들은 자동으로 보정을 한다.

 

Graphics system

그래픽 시스템 중 video controller는 가장 많은 시간을 소비한다. 시스템 버스는 다른 부품들과 함께 사용하는 공통 자원인데, video controller 입장에서는 답답해한다. 따라서 기존 시스템과 그래픽 시스템이랑은 맞지 않다.

따라서 그래픽 비디오 메모리가 따로 만들어졌다. 그리고 이에 대한 별도의 unit으로 분리하였는데, 이것이 바로 GPU다.

위 그림 빨간색 영역이 GPU이다.

 

Coordinate system

window 상에서 2D 좌표계는 왼쪽 아래를 기준점으로 하고 (논리적), 스크린에서는 왼쪽 위를 기준점으로 진행한다. (물리적)

3D 좌표계는 대부분의 표준 그래픽 패키지들은 z 축을 기준으로 오른손 법칙을 사용하고, 비디오 모니터 좌표계의 경우에는 왼손 법칙을 적용한다. 이는 사용자 입장에서 distance를 더 쉽게 알 수 있다.

왼쪽 그림이 오른손 법칙, 오른쪽 그림이 왼손 법칙을 사용의 예시이다.

 

방향을 지정하는데 유리한 극좌표계도 도입할 수 있다. 만약 원을 일반 좌표계에서 그린다면 일정하게 점이 찍히지 않고, tan 함수의 불안정성이 존재하지만 극좌표계는 등각 속도 운동을 이용해 일정하게 그릴 수 있다.

 

반응형

'CS > Computer graphics' 카테고리의 다른 글

2D Transformation and Viewing  (0) 2022.04.07
Comments