Computer Graphics

Chapter 01-02. 시작과 상식

CodeJB 2021. 5. 19. 02:20

Computer Graphics

- 시작과 상식 -


컴퓨터 그래픽스에 대한 본격적인 공부에 앞서서 상식적인 부분에 대해 알아보도록 한다.

컴퓨터 그래픽스란?

컴퓨터 그래픽스란 컴퓨터를 이용해서 이미지나 그림을 만들어내는 일련의 과정을 이를 위한 기술들을 통칭하는 단어이다.

 "당신이 눈으로 보고있는 장면을 컴퓨터 화면에 그려봐라"에 대한 대답을 어떻게 할 수 있을까? 이 세상은 3차원, 4차원 여러 말들이 있다만, 3차원이라고 생각해보자. 이 세상에는 3차원으로된 객체들이 있으며, 그 객체들은 모양, 색깔, 음영, 질감들을 가지고 있다. 그리고 그 객체들은 가만히 있을 수도 있고 항상 움직일 수도 있다. 뿐만 아니라 빛, 그림자, 어떤 현상에 의한 Effect 등 다양한 시각적 요소들로 이루어져 있다. 이러한 모든 시각적인 요소들이 합쳐지면 하나의 "세계"가 만들어지는 것이고 우리는 이 "세계"를 컴퓨터 화면에 그려냄으로써 "가상 세계"를 만들어낼 수 있는 것이다. "세계"를 컴퓨터 화면에 그려내기 위해서 Computer Graphics 기술을 사용하는 것이며 "가상 세계"는 영화가 될 수도 있고 게임이 될 수도 있으며 AR/VR과 같은 4차 산업 기술의 응용학문으로써 존재할 수 있는 것이다.

 

즉, 본인은 컴퓨터 그래픽스를 나만의 생각으로 이해해보자면 : 

 

컴퓨터 그래픽스는 "세계"를 컴퓨터 화면에 그려내는 학문이다.

컴퓨터 그래픽스를 큰 틀로 나누어보면?

1.이미지 2.모델링 3.렌더링 4.애니메이션

 "세계"를 컴퓨터 화면에 그려내기 위해서는 본인이 만들고 싶은 "세계"가 무엇이냐에 따라 다를 것이다. 아무런 색채감도 없이 Static한 세계라면 정말 간단하겠지만 이는 보는이로 하여금 흥미를 일으키기에는 상당히 부족하다. 따라서 영화나 게임과 같이 인터렉티브한 화려한 가상 세계를 구현하기 위해선 상당히 많고 복잡한 요소들이 사용될 것이다.

하지만 이를 크게 네 가지로 구분해보면 1.이미지 , 2.모델링 , 3.렌더링, 4.애니메이션이 된다.

 

01. 이미지

이미지는 2차원의 이미지를 의미하며, 이미지를 통해서 색감을 표현할 수도 있고 무늬를 만들어낼 수도 있으며 더 나아가 질감을 표현할 수 있다. 또한 2D게임의 경우에는 이미지 그 자체가 하나의 객체를 의미할 수도 있다.

02. 모델링

"실제 세계"에 존재하는 객체들을 컴퓨터가 이해할 수 있도록 3차원으로 데이터화 시키는 작업이다. 우리가 [컵]이라는 실제 세계에 존재하는 객체를 컴퓨터에 존재할 수 있도록 하려면 컴퓨터가 이해할 수 있는 3차원 데이터를 기반으로 만들어져야 할 것이다.

03.렌더링

모델링을 통해 만들어진 3차원의 객체를 2차원의 이미지로 표현하는 기술이다. 우리가 궁극적으로 컴퓨터 그래픽을 보는 것은 컴퓨터 화면(디스플레이)를 통해 본다. 결국 3차원의 객체이더라도 2차원의 디스플레이 화면을 통해 보기 때문에 3차원처럼 보이는 2차원의 이미지를 만들어내야 하는 것이다. 초현실주의 그림을 보면, 2차원의 종이에 그림이 존재하지만 그 그림은 마치 3차원의 객체처럼 보이는 것과 같은 이치이다.

04.애니메이션

이 세계가 Static한 세계라면 굳이 필요가 없겠지만 이 세계는 매우 Dynamic하다. 대부분의 사물들은 시간에 따라 움직이고 있기 때문이다. 따라서, 렌더링된 이미지의 움직임을 표현할 필요가 있으며 이를 애니메이션이라고 한다.


위의 네 가지를 구현하기 위해 어떤 기술들이 사용되었을까?

과거부터 사용되어진 다양한 기술들을 상식적으로 알아놓자

01 . 모델링

-GeoMatric Modeling

Maya, 3D Max, Blender, Cinema 4d와 같은 3D Modeling툴을 기반으로 모델링하는 방식으로 디자이너가 한땀한땀 정성들여 3차원 모델을 만들어내는 것이다. 점과 점을 연결하여 선을 만들어내고 선들이 모여 면을 만들어내는 것이다.

-3D Scanning

실제 객체를 Scanning하여 데이터를 얻어내서 모델링하는 방식이다. 어떤 실제 객체를 정말 사실적으로 표현하기 위해 복사하는 방식이라고도 볼 수 있겠다.

-Image Based Modeling and Rendering

다수의 장면을 촬영하여 이미지를 만들어 내고 그 이미지를 기반으로 모델링하는 방식이다. 어떤 객체가 있다면 그 객체를 다양한 각도에서 촬영함으로써 입체감 있는 모델링을 할 수 있는 것이다.

02. Rendering

-Physically Based Rendering & Animdation

물리적 법칙에 의한 Rendering 기법으로, 빛과 물체의 물리적 상호작용을 기반으로 CG물체를 실제와 같이 사실감 있게 표현하는 방식이다.(Particle System이 대표적인 예이다.)

-Volumn Rendering

대용량의 볼륨 데이터를 3차원으로 표현하는 방식으로 3차원 스칼라 장 형태의 이산 샘플링 데이터를 2차원 투시로 보여주는 기술을 말한다.(대표적으로 CT, MRI 등등이 있다.. 뭐 그렇다고 한다..)

-Non Photorealistic Rendering

사실적 랜더링과는 반대로 사람이 그림듯한 느낌으로 랜더링하는 방식이다.

-Real Time Rendering

사용자에 입력에 따라 반응하여 실시간으로 랜더링 하는 방식이다.

03. Animation

-KeyFrame Animation

대상체의 움직임 중 중요한 부분을 애니메이터가 설정하고 그 중간중간을 채워(밑에 사람들이..)나가는 방식이다.

-Motion Capture

광학식 카메라, 자기식 센서, 기계식 센서 등을 이용하여 관절의 움직임을 직접 캡쳐해서 애니메이션에 적용하는 방식이다.

-AI Based Animation

캐릭터에 지능과 행동 양식을 부여하여 실제 인간과 같은 자연스런 행동을 자동 생성하는 방식이다.


사용 분야에 대해서 몇 가지만 알아보자

-3D 영화 분야

-Interactive GPU Programming 분야

본인이 Graphics를 공부하는 목적 중 하나이다.

-HDR(High Dynamic Range) 분야

사진을 찍을 때, 명암의 톤을 적절하게 조절하는 기술

-AR/VR 기술

- Information Visualization

- Simulation

- User Interface

- Design etc...