컴퓨터 그래픽스
컴퓨터의 도움으로 영상을 창조(create), 조작(manipulate), 저장(store), 표현(display)하는 것
영상을 만들고 조작하는 것 뿐만 아니라 저장하고 출력하는 입출력도 포함된 개념이다.
컴퓨터 그래픽스도 다른 컴퓨터 작업과 마찬가지로 어떤 일이 주어졌을 때, 이를 수학적으로 잘 표현한 뒤
이를 기반으로 알고리즘 또는 슈도 코드를 작성하는 과정을 거친다.
컴퓨터 그래픽스는 다양한 분야에서 사용된다.
게임, 애니메이션과 같은 엔터테이먼트 분야, 시뮬레이션, CAD, 과학 연구의 시각화, 의학, 교육, VR, AR 등에서 활용될 수 있다.
그래픽스의 역사는 1950년대부터 시작되었다.
1950년대에는 CRT 디스플레이, 라이트 펜을 이용한 드로잉, 벡터 그래픽의 시대였다.
이때 tennis for two 라는 첫 번째 비디오 게임도 등장했다.
1960년대에는 PDP1 이라는 게임기로 돌아가는 space war 라는 비디오게임이 등장했으며
처음으로 그래픽스 기술로 만든 영화도 등장했다.
자연스러운 곡선을 만들기 위한 Bezier 곡선 알고리즘도 등장했고, 상업용 비디오 게임도 등장했다.
또한 시각 광선이 닿는 곳의 색을 기반으로 그림을 그리는 Ray Casting 알고리즘도 이때 만들어졌다.
1970년대에는 어도비, 픽사와 같은 회사가 만들어졌다.
또한 에드윈 캣멀에 의해 텍스처 매핑 기술도 등장했으며,
다른 물체에 가려진 부분을 계산해서 그리는 Hidden Surface Determination 알고리즘이 등장했다.
Ray Casting 보다 계산량이 적은 Shading 알고리즘도 70년대에 등장했다.
텍스처매핑은 평면에만 적용할 수 있었다면, 곡면에도 적용할 수 있는 Bump Mapping 이 새로 등장했다.
1980년대에는 pc 시대가 열렸으며,
일반적인 그림을 컴퓨터로 그리는데 사용되는 General Rendering Equation 이 등장했다.
빛 반사에는 global illumination (벽에 반사된 빛이 물체에 닿아서 반사되는 것도 고려) 과 local illumination(빛, 물체, 관찰자만 고려하여 표현) 이 있는데, General Rendering Equation 은 global illumination 에 사용된다.
1990년대에는 3D 모델링 기술이 발전하면서 CG 퀄리티가 높아지기 시작했다.
또한 Bump Mapping 에서 더 발전한 Normal Mapping 이 등장했으며,
GPU 도 이때 등장했다.
2000년대에는 GPU가 더 발전했고, CG 가 발편하면서 불쾌한 골짜기 개념도 이때 등장했다.
그래픽스 개발에는 OpenGL 과 DirextX 가 경쟁했고, 여러 쉐이딩 언어(HLSL, GLSL)도 등장했다.
Graphics Primitive
- Polylines : 연결된 직선의 나열
- Polygons : 해당 직선의 연결이 닫혀서 하나의 다각형을 만든 것
- Text
- Filled regions : 다각형 내부를 색칠하는 것
- Raster Images : pixel map, bitmap image, 2차원 배열의 숫자(픽셀 또는 picture element)로 이미지를 구성하는 것
픽셀당 bit 수를 depth 라고 부른다. 이런 이미지는 직접 만들거나, 스캔하거나, 컴퓨터로 계산해서 만든다. (렌더링)
이미지에는 gray scale 이 존재한다.
이 값은 이미지의 depth 가 n 일 때, 2^n 개의 gray level 이 존재한다. (흑백이미지를 생각)
색상(color)을 표현할 때는 (r, g, b) 순으로 정렬된 3개의 값을 사용하며, 각각 n bit 씩 균일하게 구성한다.
따라서 depth 가 3n 비트라면, 표현가능한 색상의 가짓수는 2^3n 개 색상을 표현할 수 있다.
예를 들어 true color 라고 하면 (r, g, b) 각각 8bit 를 사용하는데
이 경우 표현가능한 색상의 가짓수는 2^3*8 = 2^24 가지 = 1600만 가지이다.
보통 이 값은 unsigned 정수로 저장하지만, 실수로 저장하는 경우도 있다고 한다.
Graphics Display
크게 Line drawing display 와 raster display 로 나뉘는데, 현재는 raster display 를 주로 사용한다.
raster display 에는 '해상도(resolution)' 라는 개념이 있으며,
row x column 으로 표현한다. (가로축 개수 x 세로축 개수)
디스플레이에서는 위와 같이 y축이 아래로 뻗는 형태의 좌표계를 사용한다.
(옛날에는 모니터에서 그림을 그릴 때 위에서부터 아래로 그려서 그렇다고 한다)
위 그림의 디스플레이 해상도는 640 x 480 이다.
그리고 모니터의 각 픽셀의 값을 저장하는데 메모리가 필요하다.
이 메모리를 가리켜 Frame Buffer 라고 부르며, 보통 그래픽 카드 안에 존재한다.
그리고 이 디지털 숫자값을 실제 아날로그 색(전기 신호)으로 변환하기 위한 Converter 가 존재한다.
그 밖에도 3D TV 와 같은 디스플레이 기술도 있다.
3D TV 기술은 편광 방식과 무안경 방식이 있다.
편광 방식은 TV 앞에 편광 필터를 두고, 사람이 편광 필터가 달린 3D 안경을 착용하면 빛의 파장이 다른 점을 이용하여 왼쪽 눈과 오른쪽 눈이 서로 물체를 다르게 인식하게 함으로써 물체를 3D로 인식하게 한다.
이 방식은 왼쪽 눈이 볼 영상과 오른쪽 눈이 볼 영상을 따로 출력해야하기 때문에 영상 해상도가 반으로 줄어드는 단점이 있다.
또한 똑바로 앉을 때는 괜찮으나 비스듬하게 누워서 보면 3D 로 잘 보이지 않는 단점이 있다.
(LG에서 사용한 방식, FPR 3D)
다른 편광 방식으로는 Shutter Glasses 방식도 있다.
이 방식은 1초에 60개 영상을 보내준다면 30개는 왼쪽 눈에 들어갈 영상, 나머지 30개는 오른쪽 눈에 들어갈 영상을 짝수 홀수를 번갈아 쏜다. 그리고 Shutter Glasses 를 끼면 왼쪽 눈에 들어갈 영상이 올 때는 오른쪽 눈을 가리고, 오른쪽 눈에 들어갈 영상이 올 때는 왼쪽 눈을 가리게 되어 좌우 눈에 초당 30개씩 영상이 들어오게 되어 물체를 3D로 인식한다.
이 방식은 TV 와 안경의 동작 싱크를 맞춰야 하므로 TV 와 안경을 연결해야 하며, 가격도 비싸다는 단점이 있다.
(삼성에서 사용한 방식, Shtter 3D)
그 외에도 홀로그램, VR 기기, 3D 프린터 등의 출력기기가 존재한다.
Graphics Input
input 에도 graphics primitive 가 존재한다.
크게 String, Choice, Valuator, Locator, Pick 이 존재한다.
말 그대로 문자열을 직접 입력하거나, 제시된 선택지 중에 고르거나, 연속된 실수 중에서 하나의 값을 고르거나
2차원 또는 3차원에서 하나의 점을 선택하거나, 영역을 선택하는 것이다.
이런 값을 선택하는 input device 로는 마우스, 키보드, 조이스틱 등의 장치를 활용한다.
가상현실에서는 사람의 손 동작을 인식하기 위해 장갑같은 장비를 끼기도 한다.
'CS > 컴퓨터그래픽스와 메타버스' 카테고리의 다른 글
[그래픽스] 2. Modeling (0) | 2025.06.08 |
---|