3D Computer Graphics
- 3차원 데이터를 입력 받아서 2차원 영상을 출력하는 작업을 말한다.
- 생성하는 영상을 프레임(frame)이라고도 하는데, 물체의 움직임을 묘사하려면 연속적인 프레임을 보여주면 된다.
- 이러한 프레임을 빨리 만들어내는 것에 초점을 둔 실시간 그래픽스(게임, 증강현실 등)와 실사같이 정교한 영상을 만드는 것에 초점을 둔 비실시간 그래픽스(영화)로 나뉜다.
- 그래픽스에 따라 알고리즘, 기법이 많이 다르고 여기서는 실시간 그래픽스에 초점을 둔다.
Computer Graphices Production
- Computer Graphics 제작 과정은 통상 5개의 단계로 구성된다.
- modeling
- 컴퓨터가 처리할 수 있는 방식으로 표현한 물체를 model이라고 하는데, 이러한 model을 만드는 작업을 총칭해서 modeling라 한다
- 일반적으로 polygon(다각형)으로 구성된 물체를 사용하는데 이를 polygon mesh라 부르고 이러한 polygon mesh에 입혀질 texture도 제작한다.
- rigging
- 만들어진 polygon mesh의 움직임을 표현하려면 기본적으로 skeleton을 사용하는데 각 polygon하고 bone의 상관관계를 정의해주고 bone을 움직이면 polygon mesh 또한 움직이게 되는데 이러한 작업을 rigging이라 한다.
- animation
- 그래픽 디자이너가 off-line에서 animation을 만들고 runtime에는 그 animation이 재생된다.
- rendering
- 3차원 장면으로부터 2차원 영상, 즉 프레임으로 만드는 작업을 rendering이라 말한다.
- 물체에 texture를 입히는 texturing, 빛과 물체의 상호 작용을 처리하는 lighting가 rendering의 핵심을 이룬다.
- post-processing
- 마지막으로 motion blur, depth of field(dof) 같은 추가 작업은 post-processing(후처리)을 통해 이루어진다.
- post-processing은 필수가 아니기 때문에 생략될 수 있다.
Graphics API
- 앞서 보인 modeling, rigging, animation 작업은 off-line에서 만들어지는 반면, run-time animation, rendering, post-processing 같은 작업은 application이 수행하게 된다.
- 게임 제작 같은 경우는 게임 엔진을 이용하여 제작하는데, 게임 엔진은 위 3가지와 더불어 사운드, 시뮬레이션 등의 다양한 기능을 갖춘 개발 툴이라 생각하면 된다.
- 이러한 게임 엔진은 graphics API의 기반으로 제작되는데, graphics API에서 제공하는 함수들은 대부분 GPU(graphics Processing Unit) 하드웨어로 구현되어 있다.
- 때문에 application이 graphics API의 함수를 호출하면 graphics API는 GPU를 가동하게 되는데 이에 따라 graphics API는 GPU에 대한 소프트웨어 인터페이스라고 할 수 있다.
- graphics API는 대표적으로 Direct3D와 OpenGL 등이 있다.