컴퓨터 그래픽스
컴퓨터 그래픽스
  • 김용진 / 컴퓨터공학과 박사과정
  • 승인 2007.12.06 00:00
  • 댓글 0
이 기사를 공유합니다

새로운 아이디어와 기술발전으로 우리를 더욱 즐겁게 해줄 것
▲ 컴퓨터 그래픽을 통해 실사를 회화같은 느낌이 들도록 작업하는 과정.
마치 실제인 것처럼 시속 300㎞로 질주하면서 레이싱을 하거나, 자리에 앉아 친구들과 총을 들고 서바이벌 게임을 하고, 불과 수십명의 배우들로 수십만 내지 수백만명의 군사가 있는 것처럼 보이게 하는 등의 기술은 이제 더 이상 사람들을 놀랠만한 일이 아니다. ‘니드 포 스피드’, ‘스페셜 포스’, ‘300’ 등 시장에 출시되는 게임들이나 그래픽스 기술을 적용한 영화는 이미 우리의 실생활에 깊숙이 들어와 있으며, 이제는 실제로 그러한 게임들을 플레이하고 그러한 영화를 보는 것이 너무도 자연스러운 일이 되었다.

넓은 의미에서 보자면 컴퓨터 그래픽스는 디지털 영상의 생성이나 조작에 관련된 모든 주제들을 포괄하지만, 주로 컴퓨터 그래픽스라는 용어는 3차원 그래픽스를 의미하는 경우가 많다. 위에서 언급한 ‘니드 포 스피드’, ‘스페셜 포스’ 등의 게임이나 픽사·드림웍스 등에서 내놓는 ‘라따뚜이’, ‘슈렉’ 등의 3차원 애니메이션 등은 모두 이러한 범주에 해당된다. 특수효과와 같은 경우에는 3차원 그래픽스와 2차원 영상기술 및 여러 다른 기술들이 혼합되어 사용된다.

3차원 그래픽스에서는 어떤 물체를 나타내기 위해 물체의 표면을 3차원 정보로 표현해 두고, 그 정보를 물리적으로 조작하여 움직임을 표현하거나, 빛의 효과에 대한 수학적 모델을 적용해 이미지를 만들어낸다. 물체의 3차원 표현, 이렇게 표현한 정보의 조작, 그리고 빛의 효과의 적용이라는 세가지는 그래픽스의 3가지 대표적인 연구분야에 해당되며, 이를 각각 모델링, 애니메이션, 렌더링이라고 한다.
3DSMAX나 MAYA 등의 프로그램은 건축에서 사용하는 CAD와 본질적으로 비슷하며 모델링을 위한 대표적인 소프트웨어이고, 흔히 접하는 모션 캡쳐는 복잡한 움직임에 대한 정보를 효과적으로 얻기 위한 방법이다. 한편 실제와 구분하기 힘들만큼 사실적인 화면을 컴퓨터가 만들어 낼 수 있는 것은 빛의 효과에 대한 수학적 모델과 그것을 계산하기 위한 렌더링 알고리즘들이 있기 때문이다.

실생활에서 그래픽스가 적용되는 상황은 크게 두 가지로 나누어 생각할 수 있다. 첫 번째는 애니메이션 영화와 같이 한번 만들어낸 이미지를 기록해놓고 보여주기만 하면 되는 경우이고, 다른 하나는 게임과 같이 유저와의 상호작용에 따라 그때그때 다른 이미지를 보여주어야 하는 경우이다.
우리가 게임에서 애니메이션 영화수준의 세밀한 그래픽을 볼 수 없는 이유는 바로 여기에 있다. 사용자의 행동이 정해져있지 않기 때문에, 매 순간마다 보여주어야 하는 이미지를 즉각 계산해야 하기 때문이다. 일반적으로 사용자가 화면의 끊김을 느끼지 않으려면 매 순간의 이미지가 최소 1/30초 안에 계산되어 보여야 하며, 이것을 실시간이라고 한다. 반면 영화에서 보여주는 매 순간의 이미지는 우리의 눈에는 1/30초 내지 1/24초밖에 보이지 않지만, 작게는 1시간에서 많게는 수십여 시간에 걸친 계산 끝에 만들어 진다. 애니메이션 영화의 제작기간이 길고 엄청난 제작비가 드는 이유는 이렇게 한장한장의 이미지를 만드는데 오랜 시간이 소요되기 때문이다.

이렇게 소요되는 계산시간에 엄청난 차이가 있음에도 근래에 ‘Playstation 3’, ‘XBOX 360’, ‘Wii’ 등의 게임기에서 보여주는 화면과, 컴퓨터에서 돌아가는 최근의 ‘FPS(First Person Shooting)’ 게임들이 보여주는 화면의 질적 수준은 놀라울 만큼 사실적이다.

일반적으로 사실적인 영상을 얻기 위해 계산해야 하는 수학적 모델은 복잡한 미분방정식 형태로 되어있는데, 애니메이션 영화의 제작에서는 이러한 복잡한 모델을 매우 정확하게 풀어내어 극도로 사실적인 이미지를 얻는다. 한편, 게임과 같은 실시간 프로그램에서는 이 방정식을 풀기 위한 복잡한 알고리즘을 그래픽스 하드웨어의 계산 구조와 기능에 적합하게 변환하고 근사하는 등 단순화시켜 계산한다.

점점 더 사실적인 게임화면을 우리가 볼 수 있는 것은 더 복잡한 하드웨어 구조가 제시됨에 따라 더 많은 기능이 하드웨어적으로 수행되고, 따라서 같은 시간에 좀 더 많은 계산을 할 수 있으며, 한편으로 새로 제시되는 하드웨어 구조에 맞는 더 적합하고 효율적인 알고리즘들이 계속 제시되고 있기 때문이다. 많이 접하는 ‘DirectX’라고 하는 것은 이러한 그래픽스 하드웨어 구조에 대한 설계와 그것을 사용하기 위한 소프트웨어 라이브러리를 의미하며, ‘DirectX 8, 9, 10’ 등은 그 버전을 의미하고 있다.

그래픽스의 전통적인 연구 목표는 가능한 실제와 비슷한 표현을 하되, 그것을 효율적으로 하기 위한 방법에 대해 다루는 것이었다. 위에서 언급한 대부분의 예들이 이러한 목표에 해당하는데, 최근에는 이런 제한된 목표에서부터 벗어나려는 시도가 많이 이루어지고 있다. 이것을 비사실적 그래픽스라고 하며, 3차원 데이터로부터 화가가 그린 그림과 같은 이미지를 얻어내거나, 만화의 스타일로 표현하거나, 혹은 좀 더 일반적으로 사람이 인식하고 알아보기 쉬운 형태로 나타내는 것을 목표로 하고 있다. ‘카트라이더’나 근래에 출시된 ‘XIII’이라는 FPS 게임 등은 카툰렌더링이라는 비사실적 그래픽스의 만화적 표현 알고리즘을 이용한 것이다.

위에서는 대부분 3차원 그래픽스에 대해서만 다루었으나, 2차원으로 표현된 실제로 촬영한 사진을 입력으로 받아 그 정보를 조작하는 것에 대한 연구도 많이 이루어져왔다. 흐릿한 사진을 좀 더 명확하게 보이게 만들거나, 혹은 반대로 선명한 사진에 고의적으로 아웃포커싱을 적용하거나, 색상을 변화시켜 다른 분위기의 사진을 만들고, 흑백 사진을 컬러 사진과 같이 바꾸는 등 여러 가지 세부적인 목표에 대한 많은 연구가 이루어지고 있다. 사진이나 비디오를 실시간에 만화처럼 바꾸어주는 비사실적 그래픽스의 연구도 최근에 소개되어 주목을 받은 바 있다.

컴퓨터 그래픽스는 컴퓨터를 인간의 일상생활과 밀접하게 하는데 매우 중요한 역할을 하였다. 컴퓨터 그래픽스에서 제시한 수많은 아이디어와 기술들은 컴퓨터의 존재의 의미를 바꾸었다. 오늘날 컴퓨터는 더 이상 포탄의 궤도나 천체의 움직임에 대한 계산을 위한 특별한 기계가 아니다. 편리하게 작업을 수행하기 위한 기계를 넘어, 수많은 경험과 즐거움을 제공하는 도구가 되었다. 앞으로도 컴퓨터 그래픽스가 새롭고 참신한 아이디어와 기술발전을 통해 우리를 즐겁게 해줄 것이라는 점에는 의문의 여지가 없다.