VGA카드가 장착된 컴퓨터의 강점을 최대로 활용하기 위해서 이 정도는 알아두자. 흑백 모니터에서는 상상도 못했던 화려한 화면이 펼쳐질 것이다.
과학기술의 총아인 컴퓨터와 시각예술이 빚어내는 오묘한 조화. 바로 컴퓨터 그래픽을 설명하는 수식어다. 많은 사람들은 컴퓨터 그래픽을 '컴퓨터의 꽃'이라 부르기에 주저하지 않는다. 환상적인 그림, 멋진 색깔! 이 모두는 초보자를 매혹시키기에 부족함이 없다.
하지만 조금만 들어가 보면 비트맵이 어떻고 벡터가 어떻고 하면서 전문용어가 여기저기서 튀어나오고, 같은 그림이라도 어느 컴퓨터에서는 볼 수 있고 어느 컴퓨터에서는 볼 수 없는 등 어려운 문제가 한 둘이 아니다. 보기에는 문자보다 훨씬 호환성도 높고 접근도 용이할 것 같은 그래픽이 말그대로 '그림의 떡'으로 전락하지 않기 위해서는 어떻게 해야 할까? 컴퓨터 그래픽에 접근할 수 있는 몇가지 지식을 문답형식으로 알아보도록 한다.
붓과 종이로 그림을 그리는 것과 컴퓨터를 이용하는 것은 어떤 차이가 있는가
컴퓨터로 그린 그림은 정확하다. 그것은 컴퓨터의 화면이 정확한 크기로 분할돼 있기 때문이다. 얼핏보면 부드러운 곡선이지만 자세히 들여다보면 픽셀이라 불리는 미세한 점의 집합이며 이 픽셀 단위로 그림을 편집할 수 있다. 컴퓨터 화면의 해상도는 하드웨어의 종류에 따라 우리가 원하는 만큼 높일 수 있으므로 자신이 그리고자 하는 대상을 확대해 수정 또는 편집 등을 행한다면 매우 정밀한 표현이 가능하다. 물론 해상도를 높이기 위해서는 이에 상응하는 하드웨어 성능의 향상을 요구한다.
컴퓨터는 마치 화가가 자신의 팔레트 위에서 여러가지 물감을 섞어 전혀 다른 색상을 만들어 내는 것과 마찬가지로 거의 무한정한 색상을 제공한다. 하지만 둘 사이에는 엄청난 차이가 있다.
팔레트 위에서 뒤섞인 물감은 한번 섞이면 그만이고 같은 색이 더 필요하더라도 다시 만들어진 색상은 처음의 것과 똑같지는 않다. 반면 컴퓨터가 제공하는 팔레트는 다르다. 사용자는 자신만의 색깔을 만들어 저장해둘 수 있고 색깔의 명도와 채도도 조절할 수 있다. 더구나 컴퓨터의 화면은 어느 지우개보다도 강력한 힘으로 구성이나 색상 선택의 시행착오를 몇 백번이라도 되풀이해 수정할 수 있다.
또 컴퓨터그래픽 자료들은 그것이 보관되어 있는 디스크가 물리적인 손상을 받지 않는 한 절대로 소실되거나 퇴색하지 않는다. 이는 우리가 눈으로 보고 즐기는 색상과 형태가 0과 1이라는 디지털 정보로 바뀌어 보존되기 때문이다.
마지막으로 수작업에 의한 표현을 할 때에는 그리고자 하는 대상이 사람의 머리속에 형상화 돼 있어야 하지만 컴퓨터 그래픽의 경우는 꼭 그렇지 않아도 대상에 대한 표현이 가능하다. 다시 말해 수학적 식이나 일정한 무늬의 반복과 조작을 통해 처음에는 상상하지 못했던 결과를 얻을 수도 있는 것이다.
컴퓨터에서 컬러의 구현은 어떻게 하는가
색깔을 표현하는 방법은 빛의 3원색에 의한 표현과 색의 3원색에 의한 표현의 두가지가 있다. 모니터는 빛을 사용하므로 빛의 3원색으로 모든 색을 만들어 낸다. 이때 3원색을 구성하는 세가지 색이란 적(red) 녹(green) 청(blue)이다. 그래서 이를 RGB컬러라고 한다.
빛의 3원색은 모두 더하면 흰색이 되지만 이 색이 모두 죽어있을 때, 즉 모니터가 꺼져 있을 때는 검정색이다. 컴퓨터에서 색을 구성하는 데에는 이들 빛의 3요소에 해당하는 색을 얼마나 배합하는가에 따라 다양한 색을 구성할 수 있는데, 다음표를 보면 이에 대해 자세히 알 수 있을 것이다.
결국 적 2백56(${2}^{8}$)가지 녹 2백56(${2}^{8}$)가지 청 2백56(${2}^{8}$)가지가 가능하다고 했을 때 컴퓨터로 표현 가능한 색은 모두 ${2}^{24}$인 1천6백7십7만7천2백16가지가 된다. 따라서 하나의 픽셀에 24비트의 기억장소를 할당한다면 대략 1천6백만가지의 색깔 구현이 가능한 것이다. 이정도의 색을 사용한다면 거의 사진과 같은 색상의 표현이 가능하다.
그러나 이것은 기억장소의 낭비를 초래하게 되므로 보통 VGA모니터에서는 16가지의 색깔인 4비트 컬러(${2}^{4}$)를 사용하거나 8비트 컬러(${2}^{8}$)인 2백56컬러 정도만을 표현한다. 따라서 정밀한 색을 표현하기 위해서는 동일한 그림이라도 파일 크기가 엄청나게 커지게 되며 처리에 있어 현저한 속도저하를 감수해야 한다.
반면 인쇄에서는 색의 3원색을 사용하기 때문에 이와는 다르다. 인쇄에서 사용되는 색의 3원색은 보통 시안(청 : cyan), 옐로우(황 : yellow), 머젠타(적 : magenta)를 사용하는데 이 세가지 색을 모두 같은 비율로 섞으면 검정이 나온다. 하지만 잉크를 아무리 같은 비율로 잘 섞는다 해도 완전한 검은 색이 나오지는 않으므로 색의 3원색 외에 검정색을 따로 사용한다.
2D 그래픽과 3D 그래픽이란
흔히 우리가 그래픽이라 부르는 것은 바로 2차원 그래픽, 즉 X축과 Y축의 두가지 좌표값을 갖는 2차원적인 평면을 작업의 토대로 삼는 그림을 일컫는 말이다. 평면이건 입체건 간에 모니터상에 보이는 화면 자체가 평면인 것은 변함이 없다. 2차원 그래픽과 3차원 그래픽을 나누는 기준은 화면을 기준으로 삼는 것이 아니라 우리가 컴퓨터를 이용하여 다룰 수 있는 영역이 2차원인가 3차원의 영역인가 하는데 있다.
일러스트, 순수미술, 그래픽 디자인, 멀티미디어 인터페이스 디자인 등 우리가 접하고 있는 매체의 대부분은 평면작업을 이용해 만들고 접할 수 있는 것들이다. 따라서 전통적으로 그림을 그린다는 것은 모두 2차원에 속하는 일이고 그만큼 2차원 그래픽은 사람들에게 친숙하게 받아들여질 수 있다는 것을 의미한다.
반면 3차원 그래픽에서는 3차원으로 작성한 선으로 된 그림(와이어프레임)에 렌더링이란 과정을 거쳐 사실에 가깝게 질감을 준다. 렌더링은 선으로 물체의 윤곽을 작성하는 모델링이 끝난 후 여기에 조명과 표면 질감을 정해주고 이것을 어떤 각도의 카메라 시점에서 보는가를 지정해줌으로써 처리된다. CAD나 애니메이션 분야 등에서 주로 사용된다.
그래픽에도 폰트처럼 비트맵 방식과 벡터방식이 있다는데
비트맵 방식이란 가로로 배열된 점들과 세로로 배열된 점들이 그림의 모양에 따라서 각각 나름대로의 컬러와 음영을 가지고 있는 상태를 말한다. 각각의 점들이 가지고 있는 수학적인 값이 8비트의 정보를 포함하고 있는 상태를 보통 8비트 컬러라고 하는데 여기서는 ${2}^{8}$ 즉 2백 56색을 한 화면에 동시에 표현할 수 있다.
비트맵 방식으로 저장된 그림은 달리 말해 '점으로 이루어진 모자이크 방식'이라고도 할 수 있다. 이러한 저장 방식의 비트맵 그림은 그려진 그림의 복잡성에 상관없이 그림이 차지하는 용량이나 처리속도는 그림을 이루고 있는 점의 갯수, 즉 화면의 크기에 좌우되는 특성을 가지고 있다. 이런 방식의 파일은 마치 폰트에서의 비트맵 폰트와 같아서 확대를 하면 윤곽선이 울퉁불퉁해지는 계단현상이 발생하기 쉽다. 하지만 벡터방식처럼 화면을 그리는데 복잡한 계산을 요구치 않으므로 코프로세서 등이 없어도 속도가 비교적 빠르다.
한편 벡터 그래픽은 비트맵 방식의 약점을 극복하기 위해 탄생한 것이다. 다시 말해 비트맵 방식으로저장된 그림이 확대나 축소, 찌그러뜨리기 등의 변형을 거쳤을 때 정밀도가 많이 떨어지는 현상을 방지하기 위해서 만들어진 것이 바로 벡터방식인 것이다. 벡터방식으로 처리된 그림은 그림을 구성하고 있는 각 오브젝트들의 시작점과 끝점, 곡선 모양의 함수 값 등이 정확한 수치로 기술되어 있는 형태다. 이런 정확한 수치와 함수를 통해 계산된 도형과 그림들은 인쇄용 고해상도 출력기의 높은 해상도로 그 표현능력을 완전히 발휘할 수 있다.
그래픽 파일마다 포맷방식이 다른 이유는 무엇 때문인가
그래픽 파일의 데이터 형식이 통일되지 않고 제각기 다른 이유는 대부분의 그래픽 프로그램들이 데이터를 압축해서 파일을 만들기 때문이다. 데이터를 압축하는 이유는 데이터의 크기 때문인데, 텍스트 데이터의 경우 한 파일의 크기가 아무리 크다해도 1백 KB를 넘기 힘들다. 하지만 이에 비해 그래픽이미지는 모니터에 나타난 한 화면의 그림만을 저장한다해도 VGA해상도라면 1백50KB를 넘는 것이 보통이다.
이렇듯 데이터를 저장할 수 있는 디스크 용량의 한계와 데이터 전송을 위한 속도 등을 감안한다면 데이터의 크기가 가능한 한 작아야 한다. 데이터의 압축상태는 압축방식의 설계에 따라 많은 차이를 보인다. 데이터를 압축하고 푸는데 따른 속도문제를 비롯해서 컬러의 수용한계, 그래픽 파일의 해상도와 컬러수에 따른 확장성도 충분히 고려되어야 한다. 따라서 그래픽 이미지 데이터는 개발업체마다 각기 다른 형식을 갖는다. 확장자의 이름으로 각 그래픽 파일의 성격을 살펴보면 다음과 같다.
*pcx - pcx는 Z-soft사의 페인트브러시와 마이크로소프트사의 윈도우 3.x이 지원하는 파일형식이다. 비트맵 방식의 데이터로서 호환성이 높은 것이 특징이다.
*bmp - 윈도우의 페인트브러시에서 지원하며 압축되지 않은 파일 형태다. 따라서 압축을 푸는데 따른 시간소요가 많지 않아 데이터의 입출력 속도가 빠르지만 데이터의 크기가 매우 크다는 단점이 있다.
*gif(Graphic Interchange Format) - 미국의 대형 통신 네트워크인 컴퓨서브에서 데이터 전송 및 이미지 압축과 복구 등을 위해 규정한 방식으로 높은 압축률과 빠른 속도를 자랑한다. gif가 지원하는 그림의 최대 해상도는 6만5천5백36×6만5천5백36이며 컬러는 최대2백56까지 사용할 수 있다.
*tiff(Tagged Image File Format) - tif는 본래 디지털 이미지 데이터를 전송할 목적으로 만들어졌다. 그리고 운영체제 파일시스템 프로세스 등이 독립적이어서 활용폭이 매우 넓다. IBM PC나 매킨토시 등의 서로 다른 운영체제에서도 데이터 호환이 이루어지도록 설계돼 범용성 또한 넓다. 도스나 유닉스 OS/2 등에서 tiff파일의 확장자는 tif이며 매킨토시에서는 tiff로 사용된다. 특히 tiff가 다룰 수 있는 파일의 최대크기는 ${2}^{23}$으로서 4기가 바이트의 크기까지 다룰 수 있다. 이미지스캐너의 대부분이 사용하는 이 형식은 모노에서 부터 24비트 트루컬러까지 다양하게 지원된다.
*wmf - Windows Metafile Format의 약자로 마이크로소프트 윈도우용 벡터 파일 포맷이다. 벡터 파일 포맷을 지원하는 모든 윈도우용 응용 프로그램에서 wmf 방식으로 저장된 파일의 읽기나 저장이 가능하다.
비트맵과 백터사이에는 변환이 가능한가
하나의 파일 포맷을 자신이 원하는 포맷으로 바꾸어주는 프로그램에는 Graphic WorkShop이나 CompuShow, Picture-EZE 등이 있다. 하지만 비트맵 그래픽과 벡터 그래픽은 생성방법이 다르므로 변환에 어려움이 있다. 특히 대부분의 파일 포맷 변환 프로그램에서는 이 둘 사이의 변환을 지원하지 않는다. 하지만 방법이 없는 것은 아니다.
벡터그래픽을 비트맵으로 바꾸는 작업은 우선 벡터 방식으로 작성된 그림을 화면에 띄우고 이를 캡쳐하여 파일로 저장하면 된다. 이때 파일의 확장명은 .pcx나 .bmp 등을 준다. 하지만 비트맵 그래픽을 벡터 그래픽으로 바꾸는 것은 '트레이싱(tracing)'이라는 과정을 거쳐야만 한다. 트레이싱이란 비트맵으로 그려진 이미지에서 검게 표현된 점만을 추적(trace)해 이를 선으로 바꾸어 그림을 재구성해내는 것인데 이론상으로는 간단하지만 실제에 있어서는 매우 어렵다. 트레이싱으로 먼저 외곽선을 찾아낸 다음 그 안을 칠해주면 되지만 외곽선이 검은 점으로 표현되지 않으면 외곽선을 추출해내는 것이 불가능해 지므로 모호한 그림이 나오는 경우가 많기 때문이다.
그레이스케일, 하프톤, 디더란 용어는 무슨 뜻인가
컴퓨터 그래픽에서 화면상의 각 점에 색깔 대신 흑백의 명암을 지정해 화상을 형성하는 것을 그레이스케일이라 한다. 이는 컬러 그래픽 화상보다는 못하지만 검은색과 흰색의 두 가지만 있는 것보다는 나은 화상을 만들어낸다. 명암단계는 4단계, 16단계, 2백56단계 등이 있다.
한편 하프톤이란 흑백의 두가지 색깔만 표시할 수 있는 출력장치에서 영상의 섬세한 명암을 표시하기 위해 점의 굵기나 농도가 다른 여러가지 점 패턴을 만들어두고 영상의 각 부분의 밝기에 따라 다른 점 패턴을 사용함으로써 명암을 표현하는 기법. 이는 신문에 실리는 사진을 만드는 원리와 일치한다.
디더링이란 원도의 컬러수를 자신이 처리할 수 있는 색상수로 줄이거나 컬러를 단순한 흑백이미지로 바꾸는 작업을 말한다. 이를테면 <;한글>; 1.5x판에서는 컬러 그림을 불러 들일 수 없다. 따라서 이런 프로그램에서 컬러 그림을 불러들이기 위해 필요한 작업이 디더링인 것이다. 또한 2백56컬러로 표현된 그림을 16컬러만 표시할 수 있는 프로그램에서 불러올 때도 역시 디더링이 필요하다.