본문 바로가기

프로그램

Blender (블렌더) – 오픈소스 3D 그래픽 툴

오픈소스 프로그램 중에서는 상용 프로그램 못지 않거나 더 좋은 기능을 보여주는 프로그램들 있습니다. 그래픽 툴에서는 김프, 사운드 편집에는 Audacity, 벡터 편집에는 Inkscape 등등 강력한 오픈소스 툴들이 있습니다. 지금 소개할 프로그램은 오픈소스 3D 제작 툴인 Blender입니다.

Blender는 3D MAX와 MAYA와 필적할 만한 프로그램입니다. 오히려 개인적인 생각으로는 3D MAX와 MAYA의 기능을 훌쩍 뛰어넘는다고 봅니다. Blender의 렌더러가 3D MAX와 MAYA의 V-ray, Mental-ray에 비해서는 떨어지지만, 기능 자체는 훨씬 강력합니다. 게다가 오픈소스 여러 무려 공짜 프로그램입니다. 3D MAX와 MAYA를 사기에는 돈이 부담스럽고, 불법 다운로드 받자니 양심이 찔리고(양심이 안 찔리면 문제가 있습니다.) 하지만 블렌더는 그냥 홈페이지에서 Download에 들어가면 바로 다운로드 받을 수 있습니다. 그리고 Blender가 정말 좋다고 생각되고, 앞으로도 크게 발전했으면 하는 마음이 있으면 donation을 하면 됩니다. 보통 상용툴들은 윈도우 전용 프로그램이 많습니다. 몇몇은 맥까지 지원하기도 합니다. 하지만 블렌더는 윈도우, 맥, 리눅스 모두 완벽하게 지원합니다. 여러 프로그램으로부터 소외된 리눅스 사용자들도 블렌더의 강력한 기능을 모두 이용할 수 있습니다.

User Interface

Blender의 작업화면 입니다. Blender가 2.5버전으로 업데이트 되면서 UI가 굉장히 멋있게 바뀌었습니다. 상용 툴에 비해서 굉장히 예쁩니다. UI가 예쁠 뿐만 아니라 자유자재로 옮기고 변형할 수 있어서 효율적인 작업을 도와줍니다.

일단 UI 부분에 있어서도 상용 툴을 능가 할 뿐만 아니라 편리한 기능들이 많이 있어서 쓸데없는 작업들을 줄일 수 있습니다. 예를 들어 Armature을 형성한다고 했을 때, 여러 개의 bone을 이어서 만들어야 하는데, bone 하나를 만들 후에 컨트롤 클릭 클릭만 하면 하나의 기다란 Armature을 형성할 수 있습니다.

편리한 단축키들이 많아서 정말 편리하게 작업할 수 있다는 것이 Blender의 특징입니다.

Physics & Particle

Blender에는 Physics, Particle등도 포함되어 있어서 멋있는 효과들을 만들 수 있습니다. 간단한 도넛을 만드는 과정을 보시죠.

Blender에서는 Physics와 Particle을 이용하면 도넛 만들기 참 쉽습니다. 또한 Particle에 있는 hair particle로 머리카락을 만든 후, comb로 머리를 빗어 주기만 하면(정말 머리를 빗는 것 같습니다.) 머리를 쉽게 만들 수 있습니다.

(위 동영상은 테스트 영상으로 만든 것으로 필자의 얼마 되지 않은 실력으로 대충 한 것이기에 퀄리티는 좋지 않습니다.)

Blender를 하다 보면 정말 이렇게 말이 안 나오는 기능들을 많이 보게 됩니다.

Z-Brush라는 유명한 프로그램이 있습니다. 이 프로그램에서는 붓으로 그리듯이 3D를 제작합니다. 붓이 z축을 조절하는 기능을 해서 z-brush라는 이름을 붙인 것 같습니다. 저는 처음에 이 프로그램을 봤을 때, 정말 멋있다고 생각했습니다. 게다가 타블렛에서는 필압이 들어가서 더욱 정교한 작업도 가능합니다. 그런데 Z-brush의 기능이 Blender에도 들어가 있다는 사실이 더욱 놀라울 뿐입니다.

이것이 Blender에 있는 Sculpting 기능입니다. Z-Brush와 비슷한 역할을 하게 됩니다. z-brush는 써보지 않아서 잘 모르겠지만, Blender에서는 단축키를 이용해 브러쉬 사이즈나 강도를 쉽게 조정할 수 있어서 편리합니다. 브러쉬의 종류도 다양하고 독특한 브러쉬들도 많이 있습니다.

Blender에서 Sculpting에 능숙해 지면 저 정도는 할 수 있나 봅니다. 저한테는 참 머나먼 이야기네요.

Blender의 기능들이 너무 많아서 여기서 다 이야기 하기가 힘드네요. 그래도 살짝 이라도 설명을 하고 넘어가도록 하겠습니다.

Compositing

Blender에는 Compositing이라는 기능이 있습니다. 렌더링을 마친 후에 이미지를 보정 하는 작업입니다. 결과 이미지는 포토샵 같은 툴로 보정해도 되지 않느냐고 생각할 수 있습니다. 하지만 Blender의 Compositing의 보정 방식은 이미지 툴과 좀 다릅니다. 정확한 메커니즘은 저도 잘 몰라서 확실히 이야기 할 수 없습니다. Blender는 렌더링을 할 때 최종 2D 결과물만 내 놓는 것이 아니라 각각의 요소들을 따로 저장해 두는 듯 합니다. 그래서 렌더링 이후에 특정 오브젝트만 Glow 효과를 준다거나 색상 보정을 한다거나 하는 작업이 가능하게 됩니다.

이것이 Compositing 화면입니다. 각각의 작은 창을 node라고 부릅니다. node들을 보면 glow, RG curve, alpha, background 등등 여러 가지 효과를 나타내고 있음을 확인할 수 있습니다. 이런 node들이 유기적으로 연결되어 결과물을 보정하게 됩니다. Compositing을 통해 최고 퀄리티의 결과물을 얻게 될 수 있는 거죠. 이것도 참 대단한 기능입니다.

Animation

Blender는 3D 제작 툴인 동시에 애니메이션 제작도 가능합니다. Amarture을 이용하여 뼈대를 형성하고 이를 움직여서 에니메이션을 만들 수 있습니다. 그 뿐만 아니라 morphing 애니메이션도 가능하고 AnimAll이나, AutoBezier같은 addon들을 사용하면 더욱 특이한 애니메이션도 가능하게 됩니다.

Scripting

블렌더는 python scripting을 지원합니다. 3D MAX에서는 max script, Maya에서는 python을 지원하는 것으로 알고 있습니다. 블렌더는 python을 지원하고 있습니다. Script를 이용하면 반복적인 노가다의 양을 획기적으로 줄일 수 있습니다. 예를 들어 도시를 만든다고 할 때 script가 없으면 건물을 하나 하나 일일이 올려야 합니다. 하지만 script를 만들면 script를 실행만 하면 도시가 자동으로 만들어 집니다.

위 사진은 piiichan이라는 사람이 만든 city generator와 dungeon generator입니다. 정말.. 말이 안 나옵니다. 저건 정말 잘 만든 스크립트이기 때문에 저렇게 멋있게 만들 수 있는 것이긴 한데, 아무튼 스크립트의 힘은 대단합니다.

이것이 스크립트 작업 화면입니다. (물론 UI 커스터마이징이 가능하니 자기 입맛대로 화면을 구성할 수 있습니다.) 왼쪽에는 text editor가 있어서 스크립트 파일을 편집할 수 있고, 아래에는 python console이 있어서 실시간으로 파이썬 코드를 실행해 볼 수 있습니다. Blender에서 제공하는 API의 범위가 굉장히 넓어서 스크립트로 엄청 많은 일을 할 수 있습니다.

 

Game Engine

이럴 수가…… 3D 제작 툴이 게임엔진까지 내장하고 있습니다. 세상에는 여러 가지 종류의 게임엔진이 있고 여러 가지 종류의 3D 툴이 있지만, 3D 툴과 게임 엔진이 통합된 프로그램은 블렌더 밖에 없을 듯합니다. (물론 유니티에서 terrain editing 같은 작업은 가능하지만, 그건 3D 툴이라고 보기에는 좀 무리겠지요.) 블렌더 게임엔진은 성능도 괜찮고 계속 개선중에 있습니다. 게다가 무료!

블렌더의 게임엔진에 대해 자세히 분석해 보지는 않아서 정확한 구조를 파악하진 못했지만 대충 어떤 건지는 알겠습니다. 블렌더의 게임엔진은 C++ backend에 python 스크립트로 작동합니다. Python 스크립트들은 logic brick이라고 불리는 로직 단위들이 모여서 만들어 집니다.

이것은 기본 게임 로직 제작 화면 입니다. 이 또한 자기 입맛대로 커스터마이징 할 수 있겠죠?

로직은 python으로 직접 짤 수도 있고, blender의 logic editor을 이용해서 GUI 환경에서 만들 수도 있습니다. 보통 프로그래머라면 파이썬으로 직접 짜는 것을 선호하겠지만, 전문 프로그래머가 아니 여도 GUI 환경에서 어렵지 않게 logic을 구현할 수 있어 쓸모가 많을 듯 합니다.

보통 3D 게임 제작을 할 때 가장 큰 문제는 툴의 효율입니다. 많은 게임 개발자 블로그에 가보면 툴 타령이 정말 많습니다. 하지만 블렌더 게임엔진으로 게임을 제작한다면? 블렌더라는 엄청 좋은 툴이 이미 있기 때문에 툴은 전혀 문제가 되지 않게 됩니다. 게다가 블렌더에는 게임제작에 쓸만한 addon들도 많아서 3D 게임을 만들 때 있어서 정말 좋은 친구가 될 것입니다.

또한 중요한 사실이 있습니다. 블렌더 굉장히 강력한 scripting api를 제공하고 있기 때문에 addon 제작이 용이하다고 말했었습니다. 그래서 다른 게임 엔진을 블렌더와 통합시킬 수 있습니다. Gamekit이라는 프로젝트가 있습니다.

Gamekit: http://code.google.com/p/gamekit/

이 프로젝트는 원래 Ogre 3D와 irrlicht(일리히트) 엔진을 안드로이드, 아이폰 환경에서도 작동 할 수 있도록 하는 프로젝트였습니다. Ogre 3D와 일리히트엔진을 그래픽 backend로 사용하고, bullet(물리엔진), OpenAL(사운드 라이브러리)를 통합하여 만든 것이 gamekit이였습니다. 그런데 이 프로젝트에서 blender addon을 만들었습니다. 즉 블렌더에서 Ogre3D, 일리히트 게임 제작이 가능하게 된 것입니다. 게다가 안드로이드, 아이폰 포팅까지 손쉽게 되어 굉장히 매력적이라고 생각됩니다. Gamekit은 아직 계속 진행중인 프로젝트 이기 때문에 유심히 지켜보는 것도 나쁘지 않을 듯 합니다.

블렌더에서 Gamekit 제작 화면입니다. 위 툴바에 Gamekit으로 설정되어 있음을 확인 할 수 있습니다.

Start Game 버튼을 누르면 즉석에서 게임을 실행해 볼 수 있습니다. 이것은 마치 Unity의 그것을 보는 것 같습니다. 하지만 Unity 툴과 Blender을 비교해 보면 Blender가 훨씬 강력하지요.

결론적으로, 어떤 게임 엔진을 사용하던지 좋은 툴을 사용해서 게임을 개발하고 싶다면 일단 blender addon을 제작해서 blender에 통합시키는 것이 좋은 방법이라고 생각합니다. 게임 개발이 훨씬 쉬워지고 디자이너나 기획자 분들도 한시름 놓을 수 있겠지요.

 

Video Editing

블렌더에서는 비디오 편집도 가능합니다.

블렌더에서 video editing쪽을 만져 본적이 없어서 여기에 대해서는 뭐라 할 말이 전혀 없네요. UI는 깔끔해서 좋은 것 같고 기능적인 부분은 좀더 알아봐야 할 것 같습니다. 하지만 Premiere나 Vegas 같은 비디오 편집 전용 상용 툴들에 비해서는 기능은 조금 떨어지는 듯 합니다. 3D 툴에 통합되어 있다는 자체에 큰 의미가 있다고 봅니다. 가령 3D 애니메이션을 제작한 후에 애니메이션을 편집할 필요가 있을 때 3D 툴과 비디오 편집 툴을 왔다 갔다 하기에는 아무래도 불편하잖아요?

Renderer

블렌더의 자체 렌더러는 정말…… 뭐라 말하기 힘들 정도로 연약하다고 할 수 있습니다. 보통 CG라고 생각하는 그런 화면을 연출해 내기 힘들지요. 사실 자체 렌더러가 약한 것은 3D MAX나 MAYA도 마찬가지 입니다. 외부 렌더러를 사용해야 하죠. V-ray가 가장 대표적인 외부 렌더러이죠. 하지만 블렌더는 v-ray나 mentalray같은 상용 렌더러들이 지원되지 않고 있습니다. V-ray/blender integration 프로젝트가 진행 중이긴 하나 아직 완벽한 v-ray의 효과를 보여주진 못하고 있습니다. 대신 많은 오픈소스 렌더러들이 블렌더를 지원하고 있습니다. Yafaray나 LuxRender같은 것들이 대표적이지요.

그리고 블렌더 2.5버전으로 업데이트 되면서 자체 렌더링 엔진으로 Blender renderer말고 Cycle이라는 렌더러가 포함되었습니다. Cycle은 blender 내장 렌더러에 비해 고 퀄리티 렌더링을 할 수 있습니다. Cycle 엔진은 Blender renderer와 작동 방식이 많이 다릅니다. Cycle은 한번에 구간구간 렌더링 하는 방식이 아닙니다.(V-ray 같은 경우 구간 구간으로 렌더링을 진행합니다. 사실 이 말이 무슨 말인지 이해하기 힘들 텐데, 설명하기가 힘드네요.ㅠㅠ ) Cycle은 전체 화면을 한번에 렌더링을 한 후에 계속해서 반복적으로 렌더링을 해 나갑니다. 무한히 렌더링을 해나가게 되고, 적절한 퀄리티까지 렌더링이 됐다고 생각하면 그때 수동으로 중단하면 됩니다.

위쪽 그림이 구간 구간 렌더링 하는 방식이고 아래 그림이 Cycle의 렌더링 방식입니다. 자세히 보시면 노이즈가 많을 것을 볼 수 있습니다. 현재 샘플링이 5번밖에 되지 않았기 때문입니다. 계속 반복적으로 렌더링을 해서 노이즈를 제거하며 퀄리티를 높여갑니다.

 

그리고 Cycle이 나올 때 핫 이슈가 되었던 기능들이 몇 가지 있습니다. 선례를 찾아보기 힘든 기능들이었는데요.

  • GPU 렌더링 - 이건 정말 획기적이었습니다. 기존의 3D 렌더러들은 CPU렌더링만 지원했는데, Cycle은 CPU와 GPU 모두 지원합니다. 좋은 그래픽 카드를 가지고 있으면 렌더링 속도가 획기적으로 빨라집니다.
  • 실시간 렌더링 - 말 그대로 렌더링을 작업 중에 실시간으로 할 수 있습니다. 이건 Cycle이 전체화면을 렌더링 한 이후 지속적으로 퀄리티를 높여가는 메커니즘을 가지고 있기 때문에 가능한 것입니다. Cycle 실시간 렌더링은 생각보다 버벅이지 않습니다.

  • 환경 렌더링 - 사실 이건 명칭이 맞는지 잘 모르겠네요. 2D 배경을 적용했을 때 그것이 3D 형태로 환경을 이루고 있다고 가정을 하고 렌더링을 해 나가는 것입니다. 말로는 설명이 힘드네요.

Cycle 데모 영상


어쩌다 보니 Cycle 이야기만 하게 되었네요. Cycle이 저에게 너무 인상적이어서 그만…… 아무튼 블렌더에도 상용 툴의 렌더러 못지 않은 렌더러들을 갖추고 있다는 것입니다. 어쩌다 보니 설명을 안하고 지나갔지만 Yafaray나 LuxRender의 성능은 v-ray만큼 강력합니다.

Plugins & Addons

지금까지 여러 번 말했듯이 블렌더는 강력한 스크립트 API를 제공합니다. 덕분에 강력한 python 스크립트 제작이 가능합니다. 이렇게 만들어진 스크립트들을 addon 형태로 만들 수 있습니다.

블렌더 addon 카탈로그: http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts

위 링크에 보시면 스크립트로 만들어진 수많은 addon들을 볼 수 있습니다. 각각의 addon들은 가지 각색의 기능들을 수행합니다. 3D 모델링 및 애니메이션 제작에 직접적으로 도움을 주는 AnimAll, RotoBezier, cloud generator (이외 수십 개) 뿐만 아니라 위에서 언급했던 gamekit addon도 있고, 특이한 addon들도 있습니다. 렌더링을 마치면 특정 음악을 재생하는 addon도 있고, Tutorial 영상 같은 것을 제작할 때 현재 자신이 무슨 키를 누르고 있는 지 보여주는 screencast key addon도 있습니다. 여러 가지 addon을 잘 활용하면 훨씬 멋있는 3D를 제작할 수 있겠지요.

Community

어쩌면 이 부분이 블렌더의 최 강점이라고도 할 수 있을 것 같습니다. 블렌더는 수많은 관련 커뮤니티들이 존재합니다. 덕분에 tutorial 영상과 서적들도 엄청 많아서(하지만 대부분 영어. 한국에서 blender를 전문적으로 하는 사람이 존재하기나 할지) Blender에 입문하기도 어렵지 않습니다. 수많은 addon들도 존재할 수 있으면, 자신의 3D 작품들을 그대로 공개해서 다른 사람들이 서로의 작품들을 보고 연구하면서 블렌더 실력을 향상시켜 가기도 합니다.

블렌더 커뮤니티 리스트: http://www.blender.org/community/user-community/

아래는 괜찮다고 생각하는 커뮤니티들입니다.

Blender 튜토리얼

Blender Guru: http://www.blenderguru.com/ (이 사람 여자친구가 한국인입니다. 그래서 간간히 한국에 관련된 이야기가 나옵니다.)

Blendertuts: http://www.blendtuts.com/

Blender Cookie: http://cgcookie.com/blender/

Blender Nerd: http://www.blendernerd.com/

Blender 아트

Blender Artists: http://www.blenderartists.org/forum/

Blender Swap: http://www.blendswap.com/

 

이 작품은 블렌더 커뮤니티에서 대작으로 칭송 받는 작품입니다. 그런데 이 작품의 탄생은 조금 특이하다고 할 수 있습니다. 처음에 Chris Kuhn이라는 사람이 비행선을 모델링 했습니다.

Chris Kuhn의 Hyperspace shuttle: http://www.blendswap.com/blends/vehicles/hyperspace-shuttle-2-0/

그 이후에 Greg zaal이라는 사람이 Blendswap에서 찾은 이 작품을 보고 너무 인상적이어서 텍스처를 입혔습니다.

Greg zaal의 완성물: http://www.blendernerd.com/download-hyperspace-shuttle/

전혀 모르는 두 사람에 의해 완성된 이 작품. 뭔가 대단하다고 생각되지 않습니까? 블렌더는 오픈소스라는 태생 덕분에 개방성을 가지게 되었고, 결과적으로 커뮤니티가 빠르게 활성화 되면서 이런 것이 가능해 진 것입니다.

마지막으로 2011, 2012 Blender Showreel 를 보도록 하겠습니다. 2012 Blender Showreel에서 위의 비행선이 등장합니다.

아 정말 블렌더 기능들이 너무 많아서 글 쓰기가 힘들었네요. 블렌더는 최고의 3D툴이라고 생각합니다. (쿨럭.. 너무 썻더니 병들겠다.)