[TECH] 3D 영화를 위한 영상 압축 기술 소개 (MPEG 3DG)

필자가 관심을 가지고 있는 분야 중의 하나는 전역 조명 기반의 실시간 렌더링 기술이다. 그리고 이를 활용하는 증강/가상 현실과 3D 영화 분야도 늘 관심있게 지켜보고 있었는데, 얼마 전에 아시는 분과 이야기를 하다가 2D 영화는 기존의 수많은 압축 기술을 이용하여 배포하는데 3D 영화는 어떻게 해야하나는 의문이 생겼었다. 그때 막연히 이런저런 것들이 필요하겠구나라는 생각만 하고 넘어갔었는데, 최근에 우연히 관련 연구가 MPEG 쪽에서 이미 꽤 오랜 시간 동안 진행되고 있었다는 사실을 알게 되었다. 그래서 오늘은 MPEG 에 포함되어있는 3DG 관련 부분에 대해 간단히 소개하고자 한다. 필자가 영상 압축과 관련된 분야의 전문가가 아니기 때문에 상세한 이야기는 할 수 없고, 말그대로 간단한 소개 및 개념 이해 정도라고 보면 좋겠다.

우선 필자가 관심을 가지고 있는 3D 영화에 대한 정의부터 하겠다. 기존에도 3D 영화가 있었고, 현재도 JauntVR 과 같은 회사가 새로운 형태의 3D 영화 제작 기술을 공개하고 있지만, 필자가 관심을 가지고 있는 3D 영화는 영화를 관람하는 사람의 시점에서 실시간으로 렌더링을 하는 형태의 영화를 의미한다. 즉, 폴리곤, 텍스처, 그리고 3D 장면을 구성하는데 필요한 모든 정보를 실시간으로 넘겨받아 관람자의 시점에서 렌더링을 한다는 것이다. 여기에는 기본적으로 해결해야 할 두 가지 문제가 있다. 첫 번째는 3D 장면을 구성하는데 필요한 데이터가 기존의 2D 영화와 비교해 굉장히 많다는 것이고, 두 번째는 이러한 많은 데이터를 이용해 실시간으로 고품질의 렌더링을 해야한다는 것이다. 두 번째 문제는 필자가 직접적으로 관심을 가지고 있는 분야이기 때문에 관련된 글을 몇 번 올린 적이 있고, 오늘은 첫 번째 문제와 관련하여 MPEG 쪽에서는 어떤 연구를 진행하고 있는지를 살펴보려고 한다.

겨울왕국과 같은 3D 애니메이션 영화를 이용하여 2D 영화와 3D 영화의 차이점을 좀 더 알아보자. 3D 애니메이션의 제작 과정을 살펴보면, 물체의 형태를 만들고, 물체의 표면에 입혀질 이미지를 만들고, 물체의 움직임을 표현할 수 있는 애니메이션까지 만든 다음, 모든 장면을 렌더링하여 2D 영상으로 제작/배포한다. 즉, 아무리 많은 데이터를 이용해서 렌더링을 하더라도 렌더링된 장면은 지정된 해상도의 크기를 넘지 않는다. (HD급(1080p)은 장면당 1920x1080x4 bytes 만큼) 하지만, 실시간으로 렌더링하기 위해서는 렌더링에 필요한 모든 데이터가 필요하므로 배포해야할 데이터의 양이 기하급수적으로 늘어나게 된다. 또한, 기존의 2D 영상 압축 기술은 기본적으로 연속된 장면에서 중복 데이터를 제거해서 압축 효율을 높이는 것이다. 이를 위해 앞, 뒤에 있는 장면들을 재활용하는 등의 다양한 기술이 활용되는데, 3D 영상 압축 기술은 렌더링에 필요한 폴리곤, 텍스처, 애니메이션 등 데이터의 특성에 맞는 새로운 압축 기술이 필요하다.

우선 물체의 형태를 표현하는 폴리곤과 애니메이션에 대해 살펴보자. 기존의 3D 게임이나 그래픽 관련 작업을 해본 사람은 알겠지만, 일반적으로 3D 모델링을 할 때는 세 개의 점을 연결한 삼각형(폴리곤)을 이어붙여서 물체를 표현한다. 그래서 물체를 매끈하게 표현하기 위해서는 무수히 많은 폴리곤이 필요해지는 것이다. 이외에도 NURBS 와 3차원 베지어 곡선과 같은 수학적인 표현기법을 이용하는 경우도 있지만, 서로 다른 장단점을 가진다. 2차원 그래픽과 비교해서 설명하면, 폴리곤이 비트맵 방식이고, NURBS 가 벡터 방식이라고 보면 된다. 폴리곤은 표현의 자유도가 높지만 해상도와 애니메이션에서 문제가 있고, NURBS 는 자유도는 조금 낮지만 해상도와 애니메이션에서 장점을 가지고 있다. 그래서 물체의 애니메이션을 어떻게 나타낼지는 물체의 형태를 어떻게 표현했는지와 직접적인 연관이 있다. 경우에 따라 하나하나 따져봐야하지만, 실사 느낌이 강할 수록 폴리곤이 유리할 것이고, 겨울왕국 같은 애니메이션 느낌이 강할 수록 NURBS 와 같은 수학적인 표현기법이 유리할 것이다. (실제로 2D 에서도 비슷한 형태로 사용된다. 실사 사진이나 복잡한 이미지를 저장할 때는 JPEG 나 PNG 를 사용하고, 간단한 아이콘이나 이미지를 저장할 때는 SVG 와 같은 벡터 방식을 주로 사용한다.)

그리고 물체의 표면을 표현하는 방식에는 텍스처와 재질이 있다. 텍스처는 말그대로 물체의 표면에 특정 이미지를 덮어씌우는 용도로 사용되고, 재질은 전역 조명 렌더링에서 주로 사용되는 방식으로 물체가 가지는 물리적인 성질을 표현하는 용도로 사용된다. 예를 들어, 거울이나 플라스틱, 철과 같은 느낌은 적절한 재질과 적절한 렌더링을 통해 표현될 수 있다.

이처럼 3D 영상을 렌더링하기 위해서는 다양한 데이터가 필요하고, MPEG 에서는 폴리곤, 텍스처(재질), 애니메이션 각각의 데이터에 맞는 압축 기법을 제시하고 있다. 하지만 위에서 설명한 것처럼 3D 영상을 표현하는 방식에도 다양한 형태가 존재하고, 아직 구체적인 사례가 거의 없기 때문에 MPEG 에서 정의된 내용들은 아직은 초기 단계라고 보는 것이 좋을 것 같다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중