컴퓨터 상 영상(Image)를 다루는 분야는 크게 3가지가 있다.
1. 컴퓨터가 현실에 있는 물체 즉 시각 정보를 인식하는 컴퓨터 비전 분야
2. 컴퓨터가 영상을 우리의 용도에 맞게 다양하게 처리하는 영상처리(Image Processing) 분야
3. 컴퓨터가 영상을 만들어서 이를 세상에 보여주는 컴퓨터 그래픽스 분야.
내가 말하고 싶은 것은 이 중 3번에서 사용되는 기술이다. 대표적인 예로는 Virtual Reality 줄여서 VR이다. 이 분야는 대체적으로 HMD(Head Mount Display)라는 기기에 실시간으로 영상을 뿌리는 분야로 Flight Simulator, 군사 트레이닝 장비 등으로 사용된다. 또한 영화에서는 정밀하고도 리얼한 무언가를 렌더링해서 사용을 한다.
Parasite - VFX Breakdown by Dexter Studios - YouTube
(영화 기생충에서 사용된 CG)
또 게임에서 이 기술은 알파이자 오메가이다. 실시간으로 렌더링을 하며 사용자의 입력을 받아 그대로 처리를 하고 이를 렌더링해야하기 때문이다. 즉 Computer Graphics 분야는 굉장히 넓고 다양하다. 그렇다면 이러한 그래픽스에는 어떠한 기술들이 들어갈 지 앞으로 적어보도록 하겠다.
빛이란 무엇인가
빛은 전자기파의 일종으로써, 이 중 가시광선은 사람의 눈에 보이는 빛으로 파장은 390nm부터 720nm분포한다. 파장이 낮을수록 보라색에 가까운 색이며 파장이 증가할수록 빨간색으로 변화한다. 또한 태양광이나 형광등과 같은 일반적인 빛은 백색광을 발하며, 이 백색광에 보라색부터 빨간색까지의 모든 주파수(Frequency) 성분이 내포되어 있으며, 반사된 빛 중 가장 많은 에너지를 지닌 파장의 주파수를 우세 주파수라고 한다. 이 우세 주파수의 특성 중 색을 나타내는 것을 이번에 우리가 알아볼 색상(Hue, Color)이라고 하는 개념이다.
컴퓨터 그래픽스에서 색이란
그렇다면 이러한 빛의 색상들을 어떻게 컴퓨터 그래픽스에서 적용할까? 빛의 R(Red), G(Green), B(Blue)라는 세 가지의 파장 색으로 구성되며, 이는 컬러 매칭이라는 우리 눈이 파형이 다르더라도 사람 눈에는 동일한 색으로 인식하는 특성을 이용해서 이 세 가지의 빛으로 다른 빛을 표현한다.
하지만 중요한 사실은 이런 컬러 매칭으로는 모든 자연색을 표현할 수 없다는 것이다. 1931년 CIE 위원회는 3개의 가상 원색을 설정함으로써 모든 자연색을 이들 세 가지 빛을 합성함으로써 모델링을 하고자 했는데 이 때 컬러 매칭 즉 RGB값을 얼마만큼의 세기로 빛을 쏘는가를 통해서는 모든 자연색을 표현할 수 없기에 가상 삼원색의 파형인 X, Y, Z를 이용해서 유도해냈다.
여기서 Y는 명도에 해당을 하며 명도에 무관하게 색을 결정하는 것은 X, Z이다. 이 때 이 식을 정규화 하면 다음과 같다.
이 정규화 결과 x, y, z의 합은 항상 1이 된다. 결과적으로 x, y 값에 따라 z 값은 자동으로 결정되기 때문에 x와 y 값의 변화로 인해 생기는 결과는 아래의 표와 같이 표현된다.
이 때 표현할 수 있는 색상을 모두 총망라한 것을 색 범주라고 하며 오른쪽으로 x축, 위로는 y축으로써 값을 변화시키며 나온 값들을 표현한 것이다. 또 오른쪽 사진을 보면 알 수 있듯이 바깥 경계선을 따라서 색상이 변하며, 중앙의 백색으로부터 멀어질수록 채도가 점점 진해지는 것을 왼쪽 사진을 통해서 확인할 수 있다. 또한 오른쪽 사진의 A와 B처럼 백색을 기점으로 반대에 있는 색들은 보색으로써 두 색을 섞으며 빛의 특성처럼 백색이 나온다.
하지만 사전에 언급했듯이 색을 이렇게 정의를 했다 쳐도 모든 컴퓨터의 장비나 IO에서 모두 표현해낼 수는 없다. 아래의 사진의 예시처럼 이 CIE의 색의 범주 중 전형적인 RGB 컬러 모델을 사용하는 컬러 모니터나 CMY 컬러 모델을 사용하는 컬러 모델은 다음과 같은 색 정도 까지만 표현해낼 수 있다.
컬러 모델이란 무엇인가
그렇다면 컬러 모델이란 무엇인가? 사람의 눈은 파장 630nm(Red), 530nm(Green), 450nm(Blue) 파장에 가장 민감하게 반응하며 이 세 가지의 파장의 빛의 세기만을 합성하여 색을 인식한다는 삼층 자극 이론을 따르는 모델이다. 그리고 이 색들을 3차원으로 표현하고 x, y, z축의 가중치에 따라 색을 정의한 것을 RGB 컬러 모델이라 한다.
이 컬러 모델은 RGB의 모든 색의 길이가 각각 최대 1로 설정되어 있으며, 예로 들어 적색은 (R, G ,B) = (1, 0, 0)으로 표기하며, 이는 OpenGL에서는 glColor3f(1.0f, 0.0f, 0.0f)와 같이 선언한 것과 같다. 또 이 빛들은 서로 섞어서 다른 색을 만들어낼 수 있는데 예로 들어 Yellow는 (R, G ,B) = (1, 1, 0)에 위치하며 하며 이는 적색과 녹색을 합친 것과 같다.
이런 식으로 빛을 합성하여 다른 색상을 만들어내는 이 방식을 가산 모델이라고 하며 이 RGB를 모두 더하면 빛의 삼원색을 모두 더한 것과 동일한 하얀색(White)가 만들어진다.
한 편 이 RGB 컬러 모델의 보색을 이용하여 또 다른 모델을 만들어냈는데 이를 바로 CMY(Cyan(G+B), Magenta(R+B), Yellow(R+G)) 컬러 모델이라고 하며 이 색을 모두 더한 값은 RGB를 모두 더한 색과 보색이 되는 검은 색이다. 또한 이 모델은 실제 물감의 삼원색과 동일하다.
위에서 언급했듯이 빛의 합성을 이용하는 RGB 컬러 모델은 주로 우리가 흔히 보는 컬러 모니터에서 사용되며, 물감의 합성을 이용하는 CMY 모델은 우리가 책을 인쇄하거나 할 때 쓰는 컬러 프린터 등에서 사용한다.
참고 문헌
주우석. OpenGL로 배우는 3차원 컴퓨터 그래픽스, 서울:한빛미디어, 2013
Graham Sellers, Richard S Wright Jr., Nicholas Haemel. OpenGL SuperBible, Addison-Wesley, 2015
'Graphics' 카테고리의 다른 글
[Graphics] 05. 3차원상 물체 변환 (0) | 2021.12.21 |
---|---|
[Graphics] 04. 2차원상 물체 변환 (0) | 2021.12.21 |
[Graphics] 03. 윈도우 클리핑 (0) | 2021.12.21 |
[Graphics] 02. 디스플레이와 그리기 방정식 (0) | 2021.12.21 |
[Graphics] 쉐이더란 무엇인가 (0) | 2021.12.21 |