3차원으로 표현된 물체를 입력으로 받아서 2차원 영상을 출력하는 작업.
그러한 2차원 영상의 정지된 한 장면을 'frame' 이라고 하는데 frame 을 얼마나 빨리 만들어내는가에 따라 '실시간(Real-Time) 그래픽스'와 '비실시간(Non-Real-Time) 그래픽스'로 구분할 수 있음.
구분하는 기준은 24fps, 30fps, 60fps 등 모호하지만 일반적으로 30fps 이상 달성할 때 실시간 그래픽스. 대표적으로는 게임. 비실시간 그래픽스는 오프라인 렌더링을 통해 프레임을 생성하며, 굉장히 많은 계산량의 그래픽 처리가 동반되어 사진과 같은 아주 사실적인 영상 제작에 사용됨. 실제로 양쪽에서 쓰이는 알고리즘과 기법들은 상당히 다를 수 있다.
아래의 그림은 게임이 수행하는 작업들. 실시간성을 방어하기 위해 정말 많은 연산을 최적화하여 계산해야 한다.

실시간이든 비실시간이든 다음과 같은 5단계로 구분됨.

Modeling, Rigging, Animation 과정은 그래픽 아티스트에 의해 오프라인에서 수행됨. 그렇게 제작된 애니메이션을 실시간으로 재생하고 Rendering 과 Post-Processing 과정을 수행하는데, 이들은 런타임에 이루어지며 컴퓨터 프로그램이 자동적으로 실행함. 코딩을 통해 계산을 해주는 영역이며, 앞으로 컴퓨터 그래픽스에서 다룰 내용임. 실시간 그래픽스의 원리와 기본적인 알고리즘을 배운다.
'Model' 은 컴퓨터가 이해하고 처리할 수 있는 형태로 물체를 표현한 것. 모델링 기법은 여러 가지 있을 수 있지만, 대개 물체의 표면은 'Polygon Mesh' 를 통해 표현함. 다각형들이 그물처럼 촘촘하게 엮여진 형태이며, 삼각형 메시가 가장 널리 쓰임. 다각형 메시를 깎아나가며 조작하는 것이 모델링의 핵심. Maya, 3ds Max, Blender 등을 통해 그래픽 디자이너들이 수행함.

모델링 단계에서는 Polygon Mesh 를 만들어낼 뿐더러, 폴리곤 메시에 입혀질 'Texture'를 만들어냄. Texture 는 색깔이 들어간 이미지이며, 쭉 펴놓은 텍스처 이미지를 그래픽 디자이너가 일일이 픽셀 대응을 해서 폴리곤 메시에 안착시키면, 런타임 시에 폴리곤 메시의 표면에 입혀져서 제법 그럴듯한 영상이 만들어짐. 이러한 과정을 Texturing 이라고 함.

요약하자면 모델링 단계는 3차원 폴리곤 메시를 만들고 텍스처를 만드는 단계이다.
모델의 움직임을 표현하기 위해 여러 방법이 존재할 수 있는데, 가장 기본적인 방법은 모델이 움직일 수 있도록 폴리곤 메시에 'Skeleton' 또는 'Rig' 라고 불리는 골격을 사용하는 것임. Skeleton 을 폴리곤 메시 안에 집어넣고 폴리곤 메시와 잘 대응시키면 뼈의 움직임에 따라 폴리곤 메시도 같이 움직이게 됨.
디자이너들은 Skeleton 의 움직이는 동작들을 순서대로 만들어 붙여 애니메이션을 만듦. 이렇게 뼈대나 애니메이션 데이터가 붙어 오브젝트가 움직일 수 있게 된 상태를 'Animated Mesh' 라고 함.


💡 물리 기반 애니메이션
애니메이션은 캐릭터 애니메이션만 존재하는 것이 아니다. 게임의 경우 물리 엔진을 통해 생성하는 물리 기반 애니메이션도 존재한다. 이 컴퓨터 그래픽스에서 물리 기반 애니메이션의 내용까지는 다루지 않는다.
위 과정을 통해 만들어진 모델을 런타임에 애니메이트 시키고, 'Rendering' 이라는 작업을 수행함. Rendering 은 3D 컴퓨터 그래픽스의 정의와 같이, 3차원 광경으로부터 2차원 영상을 만들어내는 것임.'Texturing' 과 'Lighting' 이 수행되는데, Texturing 은 단순히 정의된 색깔을 입히는 것 뿐이고, 사실적인 효과를 위해서는 빛을 계산해서 명암을 표현할 수 있어야 함. 이렇게 빛을 계산하는 과정이 Lighting.
마지막으로 선택적으로 'Post-Processing', 후처리 단계가 수행됨. 예를 들면 Motion Blur.
앞서 살펴본 대로, 런타임 시에 수행되는 애니메이션 재생, 렌더링, 후처리는 프로그램이 수행하는데, 게임의 경우 게임 엔진을 사용함. 게임 엔진은 게임을 만들기 위해 필수 불가결한 라이브러리들이 포함된 하나의 프레임워크. 게임 엔진의 하위에는 그래픽스 인터페이스가 있는데, 대표적으로 Microsoft 의 Direct3D, Khronos 의 OpenGL, OpenGL ES 등이 있음. 게임 엔진에서 그래픽 처리를 위해 그래픽 드라이버에 그래픽스 API 를 통해 명령을 내리고, 그래픽 드라이버는 GPU 를 가동해서 그래픽 처리를 수행하는 것.

따라서 앞으로 컴퓨터 그래픽스의 수학적 지식과 컴퓨팅적인 지식을 배우고, 이를 반영하여 잘 계산한 후 그래픽 처리를 하드웨어에 요청할 때는 그래픽 API 인 OpenGL 과 OpenGL ES 를 사용한다!
- 작성 일자: 2025-03-30(일)
- 소스 목록:
- HUFS 25-1학기 컴퓨터그래픽스 1차시
- [KUOCW] 한정현 컴퓨터그래픽스 (1장-서론)
- OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문