JANGUN


컴퓨터 그래픽스


지음 : 이병래



목차

Chapter 1 컴퓨터 그래픽스의 개관
Chapter 2 컴퓨터 그래픽스 소프트웨어
Chapter 3 컴퓨터 그래픽스의 기본 요소
Chapter 4 그래픽스의 기본요소의 속성
Chapter 5 기하변환
Chapter 6 이차원 뷰잉
Chapter 7 3차원 뷰잉
Chapter 8 선과 면의 표현
Chapter 9 가시면 결정
Chapter 10 조명 및 표면 렌더링


Chapter 1 컴퓨터 그래픽스의 개관

- 컴퓨터 그래픽스는 그림을 그리거나 조작하기 위해 사용되는 컴퓨터 기술을 연구하는 학문 분야이다.
- Ivan Sutherland가 제시한 Sketchpad는 벡터 디스플레이와 라이트펜을 이용하여 대화식으로 물체를 설계할 수 있는 대화형 컴퓨터 그래픽스 시스템의 시초이다.
- 컴퓨터 그래픽스의 주요 활용 분야는 CAD, 디지털 아트, 과학적 가시화, 가상현실, 교육 및 훈련, 영화 및 애니메이션 제작 등이 있다.
- 래스터 주사 디스플레이 방식에서는 주사변환 과정을 통해 픽셀 단위로 표현한 그림을 화면에 디스플레이 한다. 다양한 표면 패턴, 조명 효과 등을 나타낼 수 있도록 픽셀 값들을 계산하여 사실적인 영상을 디스플레이 할 수 있지만, 주사변환이 필요하며, 에일리어싱 현상이 발생할 수 있는 단점이 있다.
- 벡터 디스플레이 방식은 선 그리기 방식으로 물체를 디스플레이하며, 매끄러운 선을 그리게 되는 장점이 있지만, 패턴, 사실적 음영 등의 표현에 어려움이 있다.
- 그래픽스 시스템에서는 그래픽스 처리 장치(GPU)를 사용하여 고속으로 그래픽스 처리를 전담하게 함으로써 CPU의 그래픽스 처리 부하를 줄인다.



Chapter 2 컴퓨터 그래픽스 소프트웨어

- 래스터 그래픽스 영상은 사각형 격자 좌표 현태의 픽셀 배열로 그림을 표현하며, 벡터 그래픽스 영상은 수학 방정식을 기반으로 점, 직선, 곡선 등을 표현하여 그림을 구성한다.
- 컴퓨터 그래픽스 패키지에는 CAD 패키지나 3dsMax 등과 같이 응용 분야에 맞는 그림을 생성하기 위한 특수 목적 패키지와 프로그래밍 언어에 그래픽스 함수를 사용할 수 있도록 라이브러리 형태로 제공되는 범용 그래픽스 API가 있다.
- 저수준 그래픽스 API는 장면을 정의하여 컴퓨터 화면에 표시하는 일련의 과정을 지시하는 함수들을 제공하며, 고수준 그래픽스 API는 제공되는 다양한 모형을 이용하여 장면 묘사를 위주로 하는 기능제공
- OpenGL은 Silicon Graphics 사의 GL을 바탕으로 다양한 컴퓨터에서 활용할 수 있도록 개발한 저수준 절차적 그래픽스 API로서, 비영리 산업체 컨소시엄인 Khronos Group에서 OpenGL의 유지·관리를 담당
- OpenGL에는 기본 도형 그리기, 변환, 조명 및 렌더링 함수 제공 - 기본 라이브러리, 보다 높은 수준의 그리기 루틴 제공 - GLU 라이브러리, 윈도 입출력을 위한 WGL, GLX, AGL 루틴- 특정 윈도시스템에 활용
- GLUT는 임의의 윈도 시스템과 상호작용할 수 있는 윈도 독립적 함수들을 제공한다.



Chapter 3 컴퓨터 그래픽스의 기본 요소

- OpenGL에서 꼭짓점을 지정하기 위해서는 glVertex* 함수를 사용한다.
- penGL에서 도형을 그릴 때는 glBegin 함수와 glEnd 함수 사이에 꼭짓점을 나열한다. 이때 glBegin 함수에 그리고자 하는 도형 및 그리기 방법을 나타내는 상수를 전달한다.
- 선분을 그리기 위해서는 GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP 상수 중 하나를 glBegin 함수에 전달한다.
- DDA 알고리듬은 x축(또는 y축)의 좌표를 1씩 변화시킬 때, y축(또는 x축)의 좌표를 직선의 기울기(또는 기울기의 역수)만큼 변화시켜 다음 점의 좌표를 계산한다. 계산된 좌표는 반올림 연산을 통해 정수 좌표로 변환
- Bresenham 직선 알고리듬은 정수형 덧셈 연산만으로 직선상의 점들의 위치를 계산할 수 있는 알고리듬이다. 기울기가 0과 1 사이의 값이라고 가정할 때, 어느 점에서 x좌표가 1 증가할 경우 y좌표는 그대로이거나 1만큼 증가하는데, 이를 판단할 수 있는 판별식을 통해 점증적으로 직선상의 점들의 위치를 계산한다. 모든 연산은 정수 덧셈 연산으로 구현된다. 원뿔곡선은 꼭짓점을 대칭으로 맞대어 놓은 직원뿔을 그 꼭짓점을 지나지 않는 평면으로 잘랐을 때 생기는 단면으로 형성되는 평면곡선으로, 원 및 타원, 포물선, 쌍곡선 등이 이에 해당된다.
- 중간점 원 그리기 알고리즘
1) 단위 x 좌표 변화에 대한 y 좌표 변화 크기가 1보다 작은 구간에서 원주상의 좌표를 구한 후, 이를 대칭변환하여 전체 좌표를 구한다.
2) k번째 점 (xk, yk)의 다음 점은 (xk+1, yk) 또는 (xk+1, yk-1)이며, 두 점의 중간점인 (xk+1, yk-0.5)가 원의 내부에 있다면 (xk+1, yk), 외부에 있다면 (xk+1, yk-1)을 선택한다.
3) 이를 위한 판별식의 값은 매 단계에서 이전 단계 판별식 값에 정수 덧셈 연산을 하여 구할 수 있다.

- 꼭짓점을 나열하는 와인딩에 의해 다각형의 앞면 방향을 정의할 수 있다.
- 볼록 다각형은 꼭짓점을 와인딩 순서에 따라 연결하는 벡터들에 대해 두 인접 벡터 쌍의 외적의 방향이 모두 같다
- 다각형 외부의 점으로부터 어떠한 점을 잇는 선이 다각형 경계와 교차하는 횟수가 홀수이면 그 점은 다각형 내부이고, 짝수이면 외부이다.



Chapter 4 그래픽스의 기본요소의 속성

- 색의 3요소는 빛의 색을 결정하는 요소인 색조(hue), 색이 순수 스펙트럼 색에 얼마나 가까운가를 나타내는 채도(saturation), 빛의 전체적인 에너지 크기에 해당되는 명도(brightness)이다.
- 삼원자극이론 : 서로 다른 파장의 빛에 가장 높은 흡수율을 보이는 세 종류의 원추세포에 흡수되는 빛의 양에 의해 색을 느끼며, 서로 다른 스펙트럼의 색이라도 이 흡수량이 같으면 동일한 색으로 인지한다.
- R, G, B 삼원색을 혼합하여 표현할 수 있는 색 영역은 사람의 가시 색의 일부만을 포함한다.
- CIE XYZ 색 모델은 인간의 시각 특성에 맞추어 정의된 가상의 표준 원색을 이용하여 평균적인 인간의 눈에 보이는 모든 색을 표현할 수 있다.
- RGB 색 모델은 빨강, 초록, 파랑을 삼원색으로 하는 가산색 모델이고, CMY 색 모델은 청록, 자홍, 노랑을 삼원색으로 하는 감산색 모델이다. HSV 색 모델은 색조 채도, 명도로 색을 표현한다.
- 많은 그래픽스 패키지들은 현재 속성 값들의 목록을 보관하고, 이를 갱신할 수 있는 함수를 제공한다. 그래픽스 기본요소를 그릴 때는 이 속성 목록의 현재 값을 적용한다.
- 알파 성분을 이용하여 색 혼합 기능을 제공한다.

1. 비트맵 패턴의 채우기는 정해진 크기의 마스크를 반복적으로 이어 붙이는 타일 붙이기 형식으로 처리된다.
2. 타일 붙이기는 윈도의 원점이나 도형 경계상자의 모서리점을 기준으로 적용한다.
3. R, G, B 삼원색을 혼합하여 표현할 수 있는 색 영역은 사람의 가시 색의 일부만을 포함한다.
4. 주사선 다각형 채우기
- 각각의 주사선 단위로 홀-짝 규칙을 적용한다.
- 주사선이 꼭짓점을 만나는 경우의 처리를 위해 각 변에서 y축 좌표의 값이 큰 꼭짓점 좌표는 제외한다. 또한 수평 선분은 처리에서 제외한다.
- 다각형 선분 테이블에는 각 주사선 단위로 그 주사선 y 좌표에서 시작되는 변들의 리스트를 x좌표 순서에 따라 저장한다.
- 활동 선분 목록은 현재 처리중인 주사선과 교차하는 변들의 리스트를 저장한다.
5. 범람 채우기 알고리즘은 동일한 색으로 되어 있는 영역을 지정된 색으로 채운다.
6. 에일리어싱은 낮은 해상도로 인한 정보 왜곡이다. 래스터 그래픽스 시스템에서 실제와 다른 왜곡된 패턴이 나타나거나 선분이나 영역 경계가 계단형으로 출력되는 현상이 나타난다.
7. 안티 에일리어싱은 에일리어싱 현상을 완화하기 위한 기술로서, 물체가 차지하는 픽셀 면적에 따라 픽셀의 값을 결정하는 전 필터링(또는 영역 샘플링), 하나의 픽셀을 여러 개의 작은 픽셀로 분할한 후, 물체 영역이 차지하는 서브픽셀의 수에 따라 픽셀 색 결정하는 슈퍼 샘플링, 이웃 샘플들의 가중치 평균으로 픽셀 값을 결정하는 후 필터링 기법 등이 있다.



Chapter 5 기하변환

- 비기본 2차원 변환에는 이동변환, 크기변환, 회전변환이 있다.
- 데카르트 좌표 (x, y)에 대한 동차좌표는 (hx, hy, h), h≠0이며, h=1인 경우 (x, y, 1)이다.


- 2차원 기본변환에 대한 동차좌표 변환행렬은 다음과 같다.
- 3차원 기본변환은 2차원 기본변환 행렬과 기본적으로 동일한 형태이다. 회전변환의 경우 중심축을 고려하여 확장할 수 있다.

- 기하변환행렬 M1에 의해 변환된 좌표를 다시 M2에 의해 변환하는 복합 변환행렬 M은 M = M2M1이다.
- 고정점을 기준으로 한 크기변환이나 회전변환은 먼저 고정점이 원점으로 이동하기 위한 이동변환을 한 후 크기 또는 회전변환을 하고 다시 원점이 고정점 위치로 이동하는 변환의 복합변환으로 나타낼 수 있다.
- 2차원 대칭변환에 대한 동차좌표 변환행렬은 다음과 같다.


- 2차원 밀림변환에 대한 동차좌표 변환행렬은 다음과 같다.


- 아핀 변환의 결과 동일 직선상에 놓인 세 점은 하나의 직선상에 놓이며, 하나의 직선상에 놓인 서로 다른 세 점 사이의 거리의 비는 변환 후에도 동일하다.
- 변환 후 물체의 크기나 모양이 변화하지 않는 변환을 강체변환이라 하며, 변환 행렬에 이동과 회전변환의 성분만 포함된다.



Chapter 6 이차원 뷰잉

- 2차원 뷰잉 파이프라인은 2차원 세계좌표에 정의된 장면을 뷰포트에 디스플레이하기 위한 일련의 변환 과정을 의미한다.
- 뷰포트 변환을 하는 한 가지 방법은 클리핑 윈도를 정규화된 좌표계로 변환하여 클리핑 등 제반 처리를 한 다음 이 영역을 윈도 뷰포트에 위치하도록 변환하는 것이다.
- Cohen-Sutherland 선분 클리핑 알고리듬에서는 각각의 꼭짓점에 대해 네 개의 클리핑 경계를 기준으로 내부에 존재하는지 외부에 존재하는지를 각각 1비트씩 네 비트로 표현한다. 이와 같이 정의된 꼭짓점의 영역코드를 이용하여 선분과 클리핑 윈도의 관계를 파악하여 클리핑을 한다.
- Lian-Barsky 선분 클리핑은 매개변수 선분 방정식을 사용하며, 선분을 무한히 연장한 직선이 시작점에서 끝점 방향으로 진행할 때 클리핑 경계와 교차하는 점의 네 개의 매개변수 를 계산한다. 이때 클리핑 영역 내부 방향으로 진입하면서 클리핑 경계와 교차하는 점에 대한 두 중 큰 것과 클리핑 영역 내부 방향으로 진입하면서 클리핑 경계와 교차하는 점에 대한 두 중 작은 것의 범위가 클리핑 윈도 내부 영역으로 보고 클리핑을 한다.
- Sutherland-Hodgeman 다각형 클리핑은 좌, 우, 상, 하 클리핑 경계에 대해 각각 단계별로 클리핑을 수행한다. 각 단계의 처리는 파이프라인 방식으로 처리할 수 있다.



Chapter 7 3차원 뷰잉

- 3차원 뷰잉 파이프라인 : 모델링 변환 → 뷰잉 변환 → 투영 변환 → 정규화 및 클리핑 → 뷰포트 변환
- 뷰잉 좌표계는 관찰자의 눈 위치에 해당되는 뷰 원점, 뷰 평면의 방향을 나타내는 뷰 평면 법선 벡터, 뷰 평면의 상향 방향을 나타내는 뷰 업 벡터를 통해 설정할 수 있다.
- 뷰잉 변환은 뷰 원점을 세계좌표 원점으로 이동하는 변환과 이동된 뷰잉 좌표계의 세 좌표축을 세계좌표계 좌표축에 일치하도록 회전하는 변환으로 구성된다.
- 평행투영은 좌표점을 평행한 투영선을 따라 뷰 평면에 투영하는 방식으로, 물체의 비례관계가 그대로 유지되며 평행한 선은 투영 후에도 평행하다.
- 평행투영에는 투영선이 뷰 평면에 수직인 직교투영과 수직이 아닌 경사평행투영이 있다.
- 직교투영의 뷰 체적은 직육면체 형태이며, 정면도, 측면도, 평면도, 축각 직교투영 등이 있다.
- 경사평행투영의 뷰 체적은 기울어진 사각기둥 형태이며, 캐버리어 투영이나 캐비닛 투영이 경사평행투영에 속한다.



- 원근투영은 투영 기준점으로 수렴하는 경로를 따라 뷰 평면에 물체를 투영하는 방법으로, 물체는 원근법에 의해 표시된다.
- 투영 기준점이 뷰 평면에 가까우면 동일한 클리핑 윈도에 투영되는 가시각이 커지며, 이에 따라 원근효과가 증대된다. 반면 멀어질수록 원근감은 감소하며, 무한히 멀어지면 마치 평행투영처럼 원근감이 없는 결과가 나오게 된다.
- 원근투영 결과 뷰 평면과 평행하지 않는 평행 선분들의 연장선은 소실점으로 모인다.
- 원근투영의 뷰 체적은 사각 절두체 형태이다.
- 원근투영 변환은 아핀변환이 아니며, z축 좌표에 해당되는 값이 동차 파라미터에 포함된다.



- 3차원 클리핑은 2차원 클리핑의 알고리즘을 3차원으로 확장하여 적용할 수 있다.






Chapter 8 선과 면의 표현

- 3차원 객체는 경계표현, 공간분할표현, 구성적 입체 기하, 스위핑 등의 방식으로 모델링할 수 있다.
- 스플라인 곡선은 제어점에 의해 결정되는 매개변수 다항식으로 정의한다.
- 스플라인 곡선이 얼마나 부드럽게 연결되는가를 나타내는 속성을 연속성이라고 한다. n차 매개변수 연속성이 만족된다면 n차 기하학적 연속성도 만족한다.

- Hermite 곡선은 G0, G1, C1을 만족할 수 있도록 곡선을 연결할 수 있다.
- Hermite 스플라인 곡선은 곡선의 양 끝점에 해당되는 2개의 제어점과 이 두 점에서의 1차 미분에 의해 정의된다.


- n차 베지어 곡선은 n개의 제어점으로 정의하며, 처음과 마지막 제어점을 연결하고 나머지 제어점을 근사화하는 스플라인 곡선이다.
- 베지어 곡선은 제어점에 의해 형성되는 볼록껍질 내부에 포함되며, 아핀 불변성을 갖는다.
- n+1개의 제어점에 의해 정의되는 d-1차 B-스플라인 곡선은 n+d개의 매개변수 구간(n+d+1개의 매듭)으로 설계된다.
- n+1개의 제어점으로 정의되는 d-1차 B-스플라인 곡선은 n+d+1개의 매듭 값으로 정의되는 n+d개의 매개변수 구간에 의해 정의된다. 동일한 수의 제어점에 대해 몇 개의 매듭을 사용하는가에 따라 곡선의 차수를 결정할 수 있으며, d-1차 B-스플라인의 경우 하나의 매개변수 구간에 해당되는 곡선 부분은 d개의 제어점만으로 정의되므로, 곡선의 국부 제어가 가능하다.
- d차 B-스플라인은 Cd-1 연속성을 갖는 곡선을 생성한다.



- 균일 B-스플라인은 매듭의 간격이 동일하며, 제어점을 근사화하는 스플라인 곡선을 정의한다.
- 비균일 B-스플라인은 매듭의 간격이 일정하지 않으며, 조밀하게 배치된 매듭 방향으로 곡선을 끌어당기는 효과가 있다.
- 개방 B-스플라인은 처음과 마지막 제어점을 연결한다.
- NURBS는 유리함수 형태의 배합함수를 사용하며, 가중치를 포함하는 제어점 리스트, 비균일 매듭 벡터로 정의된다.
- NURBS는 아핀 불변성뿐만 아니라 원근투영 불변성도 성립하며, 원뿔곡선을 그릴 수 있다.




Chapter 9 가시면 결정

- 가시면 결정이란 관찰자에게 보이는 표면을 식별하는 기술을 의미한다.
- 후면제거는 후면이 관찰자를 향하고 있는 다각형을 렌더링 대상에서 제외함으로써 가시면 결정의 효율을 높이기 위한 방법이다.
- 깊이 버퍼 알고리즘은 투영 평면의 각 픽셀 위치에서 장면 내의 표면에 대한 깊이 값을 비교하는 방법을 사용한다.
- 주사선 알고리즘은 주사선 단위로 가시성 검사를 하며, 주사선이 다각형의 변과 교차하는 점에서 가시면을 결정한다.
- 깊이 정렬 기법은 깊이 값의 내림차순으로 표면을 정렬한 후 가장 큰 깊이 값을 갖는 표면부터 주사변환한다. 깊이 중첩이 있을 경우 재정렬이 필요할 수 있다.



Chapter 10 조명 및 표면 렌더링

- 전역 조명 모델은 광원으로부터 물체에 직접 도달하는 빛뿐만 아니라 다른 물체에 반사되는 빛까지 고려하는 반면 지역 조명 모델은 광원으로부터 물체에 직접 도달하는 빛만 계산한다.
- 주변광은 모든 면에 균일하게 전달되는 빛으로 근사화한 광원이다.
- 점광원은 한 점에서 모든 방향으로 빛을 방사하는 전방향성 광원으로, 거리가 증가함에 따라 거리 광도 감쇠 함수에 따라 감쇠된다.
- 방향성 광원은 평행한 방향으로 전달되는 광원 모델로서, 거리에 따른 광량 감쇠를 적용하지 않는다.
- 스포트라이트는 제한된 각도로 빛을 내는 광원이다.
- 난반사는 입사된 빛이 여러 방향으로 흩어지는 반사이고, 정반사는 매끄러운 표면에서 밝게 빛나는 반사광이다.
- 퐁 반사 모델은 주변광과 함께 난반사에 의한 확산광, 정반사에 의한 경면광의 합으로 반사광을 모델링한다.
- 구로 음영법은 꼭짓점 색을 구한 후 이를 쌍선형 보간하여 다각형 내부 색을 구하는 음영법이고, 퐁 음영법은 꼭짓점들에서의 법선벡터를 쌍선형 보간하여 다각형 내부 픽셀에서의 법선 벡터를 구한 후 퐁 반사 모델을 적용하여 픽셀의 색을 결정한다.