본문 바로가기

프로그램

블레더의 자바 포팅

오픈소스 3D 그래픽 툴인 Blender가 새로운 시도를 하고 있습니다. 그것은 바로 Blender Java, 즉 자바로 코딩된 블렌더 입니다. Blender Foundation에서 진행하는 것은 아니고 Jason LaDere라는 사람이 개인적으로 진행하고 있는 프로젝트 입니다. 홀로 개발을 해 오다가 최근에 공개 했는데요, 어떤 생각으로 자바 포팅을 시작했고, 앞으로 어떻게 해 갈지에 대한 인터뷰가 블렌더 홈페이지에 올라와 있습니다.

Jason LaDere의 인터뷰: http://www.blendernation.com/2012/08/31/blender-java-source-code

인터뷰 내용을 번역해 보자면 다음과 같습니다.


왜 자바로 코딩을 시작했나? 자바로 하면 어떤 점이 좋나?

나는 자바가 처음 나온 이후로 자바와 굉장히 친해졌기 때문에 자바로 코딩을 하게 되었다. 그리고 나는 자바가 할 수 있는 한계까지 가보고 그 한계를 확인해 보고 싶었다.

자바의 장점에는 다음과 같은 것들이 있다.

  • 가장 유명한 프로그래밍 언어이고 비교적 배우기도 쉽다. (이런 이유 때문에 안드로이드의 메인 개발 언어로 채택되기도 했다.)
  • 코드의 변화없이 크로스 플랫폼으로 제작할 수 있다. 단지 운영체제마다 다른 JVM과 네이티브 라리브러리만 필요할 뿐이다.
  • 자바 개발자 커뮤니티가 굉장히 활성화가 되있다. 또한 자바는 포인터가 없고 가비지 컬랙터를 이용하기 때문에 사람들이 이해하기가 쉽다. (이러한 이유 때문에 대학교에서 교육 언어로 주로 사용된다.

기존 블렌더와 비교해 봤을때 자바 블렌더의 성능은 어떤가?

자바 자체의 속도는 최근들어 C/C++ 과 맞먹을 정도가 되었다. 자바로 포팅된 OpenGL인 JOGL 역시 굉장히 빠르다. 나는 또 다른 오픈소스 프로젝트인 Jario64를 진행하고 있다. Jario64는 Java와 JOGL로 만들어진 닌텐도64 에뮬레이터이다. Jario64의 속도는 C로 만들어진 n64 에뮬레이터와 거의 비슷하다. 하지만 Jython은 아직 python에 비해 느리다. Blender Java는 아직 시작단계이고 최적화가 거의 되있지 않다. Java는 강력한 성능 프로파일러가 있다. 중간 규모의 블렌더 프로젝트에서는 기존의 블렌더와 비교해 봤을때 속도 차이가 거의 없다. (대규모 프로젝트에서는 어떻게 작동 될지는 아직 잘 모르겠고, Jython는 충분히 문제가 될 소지는 있다.)

자바 포팅이 수작업으로 이루어 지는가, 아니면 자동화 툴을 사용하는가?

400 - 600개에 이르는 Blender DNA 오브젝트는 블렌더 파일에서 자동으로 생성되며 RNA 오브젝트들은 기존의 블렌더처럼 자동으로 생성된다. 또한 나는 C 스타일의 문자열 manipulation의 자바 포팅에 도움 되는 자바 라이브러리를 가지고 있다. 하지만 나머지 작업은 모두 수작업으로 이루어 진다.

블렌더의 모든 기능들이 포팅되었는가?

아니다. 이 작업은 아직 시작 단계여서 프레임워크(UI, 이벤트 시스템, DNA, RNA Jython 등)와 mesh/object 편집기능, 그리고 간단한 렌더링 정도만 포팅되었고 나머지는 작업중이다. 3D 모델을 제작하는 기본 기능들이 구현이 되고 렌더링 기능까지 안정적으로 작동되는 단계까지 작업한 이후에 rigging, 에니메이션, painting/sculpting, compositing/nodes 등 다른 작업들을 구현해 나갈 것이다. 마지막에 추가될 기늗들은 아마도 비디오 편집, 게임 엔진, 오디오가 될 것이다.

앞으로의 계획은 어떻게 되는가? 블렌더의 모든 변화에 맞춰서 개발을 진행할건가?

아직 구체적인 계획은 없다. 만약 일이 잘 진행 되어 간다면 스튜디오를 세우고 구체적인 개발 과정을 잡을것이다. 아니면 그저 교육 도구로써 끝나게 될 것이다. 내 생각으론 블렌더의 모든 변화를 따라 개발을 하기에는 힘들것 같다. 그리고 나는 이 프로젝트가 가야할 방향을 확실히 정하기 못하고 있다. 어쩌면 중요한 기능들만 구현된 상태에서 유저 커뮤니티에서 내 프로젝트를 가지고 그들만의 독특한 기능으로 독자적인 길을 찾아갈지도 모른다.

나는 3D 모델링, 애니메이션, 렌더링에 굉장한 열정이 있다. 또한 나는 Java와 C#같은 다른 managed languages에 대해서도 관심이 있다. 그렇게 보면 내가 이 프로젝트를 시작한것은 자연스러운 선택이다. 나는 한계까지 가보고 그 과정을 배우는 것을 좋아한다. 나는 다른 사람들이 할 수 있으면서 생각하지 못했던 것을 만들어 내는 것을 좋아한다. 나와 같은 열정을 가진 다른 사람들이 있으면 이 프로젝트에 나만큼 푹 빠져주었으면 좋겠다. 즐거움은 불가능하거나 가능성이 아직 발견되지 않은 것들을 만들어 내는 것에서 나온다.


이 프로젝트에 대한 반응들을 보면 가지각색입니다. 어떤 사람들은 그저 시간낭비라고도 하고 어떤 사람들은 지금은 쓸데없는 일 같아도 충분히 가치가 있는 일이라고 응원하기도 합니다. 

저는 개인적으로 이 프로젝트가 크게 의미가 있진 않지만 가치가 있는 도전이라고 생각하고, 오픈소스 프로젝트에 있어서 좋은 현상이라고 생각합니다. 블렌더의 크로스 플랫폼 빌드 시스템이 잘 되어 있기 때문에 사실상 비교적 성능이 떨어지는 자바로 포팅하는 것은 크게 의미가 없습니다. 하지만 자바로도 할 수 있다는 한가지의 가능성을 보여주었고, 이 블렌더 자바 프로젝트를 통해 자바 교육에 참고가 될 수 있다는 점에서 높은 점수를 주고 싶습니다.

이 프로젝트에 대한 당신의 생각은 어떤가요?