[인벤게임컨퍼런스(IGC) 발표자 소개] 엔씨소프트 홍상범 과장은 블레이드&소울 개발실 이펙트팀에서 무기에 효과를 입히는 등의 역할을 맡고 있다.

3D 게임에서 각종 이펙트는 뗄레야 뗄 수 없는 관계다. 휘황찬란한 이펙트가 감긴 무기를 들고 있을 때 유저는 스스로의 성장을 실감하고, 몬스터를 때렸을 때 시원하게 터져나오는 각종 효과는 유저들이 그토록 중시하는 '타격감'에 큰 영향을 주기도 한다.

하지만 3D 그래픽에 대해 잘 모르는 사람이 언뜻 보기에도 그래픽 및 효과 작업은 결코 쉬운 일로 보이지 않는다. 오죽하면 사람을 '갈아넣는다'란 표현이 있을 정도이니 말이다. 엔씨소프트 블레이드&소울 이펙트팀에서 각종 이펙트 연출을 맡아온 홍상범 과장은 3D 아티스트들에게 더 효율적인 제작 방법을 알려주기 위해 입을 열었다.


■ 강연주제: 3D 아티스트를 위한 제작환경 개선하기


홍상범 과장은 "3D 아티스트를 위한 제작환경 개선하기. 사실 그런 거창한 것보다는 '반복 작업은 안녕~ 스마트하게 작업하기'가 더 중요하다"며 강연을 시작했다.

아티스트는 늘 시간과의 싸움을 한다. 그들에게 가장 중요한 것 중 하나는 작업 효율을 최대한으로 늘리고 무의미한 반복 작업을 최소화하는 것이다. 홍상범 과장은 블레이드&소울을 맡으면서 본인이 했던 고민, 그리고 주변에서 비슷한 일을 하는 지인들의 고민을 종합한 결과 3D 아티스트들이 힘들어하는 몇 가지 이유와 그 해결책을 제시했다.

⊙ 카툰 이펙트, 그리지 말자!

홍상범 과장은 본인은 반 실사 이펙트 위주로 작업을 해 왔지만 주변에는 카툰 이펙트를 쓰는 사람도 많았다고 한다. 카툰 이펙트는 그림을 그려가며 작업을 하는 경우가 많은데, 그러다보면 자연스레 반복 작업이 늘어나곤 한다. 그래서 홍상범 과장은 한 가지 생각을 떠올렸다. 컴퓨터의 손을 빌리는 것. 물론 사람이 직접 그린 드로잉의 맛을 컴퓨터 프로그램이 100% 살려줄 수는 없겠지만 그 도움만으로도 충분한 케이스가 꽤 많았다고 한다.


이걸 그리지 않으려면 결국 컴퓨터가 그려줘야 하는데, 그러려면 뭘 해야 할까? 홍상범 과장이 그 해답으로 찾은 것 중 첫 번째는 HLSL 셰이더 언어였다. 쉽게 말해 컴퓨터한테 그림을 그리게 하는 언어라는 것이다. 프로그래머가 게임을 제작할 때 C언어 등을 써서 컴퓨터에게 게임을 실행시키는 것처럼 컴퓨터가 그래픽을 이해할 때 이런 셰이더 언어들이 사용된다.

두 번째는 디포메이션이다. 이것도 쉽게 말해 오브젝트에 움직임을 주는 대부분의 것들이 디포메이션이라고 불린다. 이 두 가지를 동시에 적용시킬 수 있는 툴이 과연 있을까?

게임 엔진들의 최대 단점이라면 디포메이션을 하기가 상당히 불편하다는 것이다. 여러 방법을 통해 디포메이션을 구현할 수는 있지만 아티스트 입장에서는 자유도가 떨어지기 마련이다. 그래서 홍상범 과장은 3D 맥스를 선택했다. 한국 게임 업계에서 3D 아티스트들이 제일 많이 쓰는 툴 중 하나인 3D맥스는 디포메이션과 HLSL 셰이더를 다 지원하기 때문이다.


홍상범 과장은 본인이 좋아하는 캐릭터라고 밝힌 아이언맨과 손오공을 예로 들며 말을 이었다. 홍상범 과장은 우리가 어떤 그림을 보고 '툰'이라고 느끼는 이유는 색깔의 경계가 확실한 차이를 보이고, 외곽에 라인이 있으며 내부 라인들로 묘사가 들어가기 때문이라고 말했다. 그는 셰이더 언어를 통해 셰이더를 만들어서 3D 이펙트를 카툰처럼 보이게 바꿔치기를 하기로 했다. 그는 엔비디아가 제공하는 FX 컴포저를 통해 위의 세 가지를 구현하는 데 초점을 맞췄다.

툰 이펙트를 만드는 방법 중 첫 번째는 '툰 FX 라이팅 기법'이라고 이름 지은 방법이다. 더 널리 알려진 말로는 '카툰 이펙트 알고리즘' 또는 '툰 셰이더 언어'가 되겠다. 쉽게 말해 라이팅의 방향, 위치만 바꾸면 거기에 맞춰서 좌표들이 자동으로 바뀌게 세팅을 해서 손쉽게 카툰 이펙트를 만든다는 것이다.

두 번째는 '툰 FX 등고선 방식'이라 명명한 방식이다. 카툰 이펙트에서 제일 많이 쓰이는 것 중 하나는 불이나 연기 효과다. 그리고 이들 중 상당수는 홍상범 과장이 말한대로 등고선 형태를 띄고 있다. 당장 우리가 불에 대한 이미지를 떠올렸을 때 가운데는 노랗고, 그 외곽은 주황색이며 바깥은 빨간색인 비대칭 등고선을 쉽게 떠올리듯이 말이다. 노이즈 이미지의 수치 강약 제어를 하고, 두 가지 노이즈 패턴을 섞어서 또다른 노이즈 패턴을 만드는 등 여러가지 시도가 있었다. 자기가 어떤 수치를 얼만큼 주느냐에 따라 결과물은 천차만별이다. 또, HLSL 셰이더는 맥스에서만 적용되는 것이 아니라 대부분의 HLSL 셰이더 기반의 게임 엔진에서 다 적용시킬 수 있다는 범용성까지 갖추고 있다.

마지막은 디스토션이다. 이따금씩 3D 아티스트들은 개성이 강한 이미지를 만들어야 할 때가 있다. 예를 들면 '정형화된 이미지가 아니라 우리 게임만의 이미지를 이펙트처럼 만들었으면 좋겠다'는 매우 까다로운 그런 주문들 말이다. 홍상범 과장은 디스토션에서 답을 찾았다. 하나의 고정된 이미지와 움직이는 노이즈 패턴을 만든 뒤 둘을 합치자 실상은 전혀 움직이는 이미지가 아닌데도 우리 눈에는 움직이는 것처럼 보였다. 원하는 부분별로 강하게, 혹은 약하게 조절하면서 알고리즘을 짜 두면 이미지만 바꿔도 바로 적용이 되기에 시간 단축에 매우 좋다는 것이다.


⊙ 언리얼 소스 가져오기와 시네마틱 프리뷰 보기


언리얼 소스를 다룰 때의 단점 중 하나는 양이 너무 방대하기 때문에 기존의 소스를 찾는 데 시간이 낭비된다는 것이다. 고민 끝에 홍상범 과장이 찾은 답은 유모델이라는 툴이었다. 언리얼 소스들을 풀어서 맥스로 가져올 수 있게 만드는 툴이다.

유모델의 작동 방식은 언리얼 소스의 압축을 풀어서 메쉬로 전환을 하고 그걸 맥스 안으로 불러오는 것이다. 따라서 회사의 경우 타 부서에 어떤 소스가 있는지 물어볼 필요 없이 모든 엔진 안에 사용하는 소스들이 다 올라와있기 때문에 그 소스를 검색해서 가져오면 끝난다.

일반적인 경우 언리얼로 모델 소스를 가져올 때는 좌표를 0, 0, 0으로 맞추고 틀어진 좌표까지 다 맞춘 후에 가져와야하는 번거로움이 있다. 이런 소스들은 좌표값도 틀어져있고 위치도 0에 있지 않기 때문에 매번 맞춰줘야 했는데 원클릭으로 알아서 필요한 부분을 뜯어내서 좌표값까지 정렬시킨 후에 불러올 수 있다. 블레이드&소울에 존재하는 수많은 무기에 각자 다른 효과를 입힐 때도 이 방법이 애용됐다고.


세 번째로 시네마틱 프리뷰를 볼 때의 문제에 대해서 얘기했다. 블레이드&소울이 언리얼 기반인 만큼 언리얼을 예시로 든 홍상범 과장은 "만약 맥스에서 봤던 카메라값의 정보값들을 엔진 안의 카메라에 적용을 시킨다면 쓸데없이 엔진에서 카메라를 잡을 일이 줄어들게 된다"고 말했다. 정보값 전부는 아니더라도 일부를 가지고 와서 엔진에서 확인만 할 수 있다면 능률이 훨씬 오른다는 것이다.

여러 카메라가 존재한다고 가정했을 때 카메라에 보여진 툴 구간만 설정을 하되, 이건 컴퓨터가 알 수 없고 작업자만 알 수 있기 때문에 한 번은 직접 보면서 등록을 해 줄 필요가 있다. 이후 카메라를 추가, 정렬을 시키거나 잘못 추가한 것을 지우는 작업은 손쉽게 가능하다. 세팅이 끝나면 상황에 따라 약간의 줌 아웃 등 변경은 있겠으나 대부분의 카메라 위치나 모션값, 키값들에 대한 데이터가 언리얼 안으로 들어오기 때문에 내부에서 카메라를 잡는 것이 훨씬 수월해진다.


⊙ 게임 애니메이션 익스포터 & P4파이썬 활용

네 번째는 게임 애니메이션 익스포터라는 기능이다. 게임 제작시 애니메이션을 프레임별로 분할해 익스포트 시키는 작업이 불편하다는 3D 아티스트들이 많다. 특히 게임에서는 애니메이션 프레임을 300, 400 정도로 잡은 다음에 전체 애니메이션을 게임 엔진에 불러오는 게 아니라 그것들을 분할해서 게임 엔진으로 불러오는 일이 잦다. 공격기를 쓰다가도 끊어지는 등 여러 상황이 생기는 게임 자체의 특수성 때문이다.

때문에 분할 작업을 할 때 매번 익스포트를 시키는 불편함을 겪어야 한다. 익스포트 시킨 파일 관리가 필요하고, 애니메이션 작업 내용을 타 팀과 공유하는 과정 또한 번거롭다. 일일이 타이핑을 해야 하는데, 애니메이션 캐릭터가 하나고 스킬이 하나면 타이핑하는 데 문제가 없겠지만 보통 애니메이션 하나당 스킬이 여러 개가 있기 때문에 그걸 다 분할했다는 내용을 직접 쓰는 데는 무리가 있다.


'어차피 컴퓨터 정보값을 아는데 사람이 타이핑 할 필요가 있을까?'란 의문을 가진 홍상범 과장은 액터X와 아웃룩을 통해 방법을 모색했다. 액터X로 메쉬를 내보내 일의 능률을 최대한 끌어올리기로 한 것이다. 또, 아웃룩으로 스크립트를 제어하는 방법도 시도했다. 풀 애니메이션을 잡았을 때 그걸 다 가져오는 게 아니라 0~11, 12~25 프레임 등으로 분할을 해서 가져오게 만들고, 이렇게 작업한 맥스 파일을 저장하면 프레임 데이터 정보값들을 맥스 파일이 열릴 때마다 확인을 할 수 있게 세팅이 된다. 덕분에 직접 작업한 사람이 아니더라도 다른 작업자가 맥스 파일을 열었을 때 이전 사람이 프레임 구간을 어떻게 나눴는지 한 눈에 확인할 수 있게 된다.


마지막 다섯 번째는 P4파이썬 활용하기다. 물론 파이썬이 아니라 다른 언어로도 제어가 되긴 하지만 파이썬은 3D 아티스트들에게 가장 잘 알려진 프로그램이기도 하고, 홍상범 과장 역시 개인적으로 가장 친근한 프로그램 중 하나라서 파이썬을 선택했다.

때때로 아티스트들은 자기가 작업한 이펙트들을 바로 서버에 올리지 않고 인게임에서 확인을 해보고 판단을 내리고 싶은 경우가 있다. 서버에 올리면 바로 인게임에서 확인할 수는 있지만 업로드에 시간이 걸리고 서버에 올릴 때마다 타이핑을 해야 하는 단점이 있다. 그래서 중간 과정을 전부 배제하고 완성됐을 때만 서버에 올리고 데스크탑에서 작업을 하되 인게임에는 적용시킬 수 있는 방법을 찾기로 했다.


보통 작업은 그래픽 망에서 하게 되는데, 이 결과물을 에디터에서만 확인을 할 수 있고 인게임에선 확인할 수가 없었다. 그러나 퍼포스를 통해 관리를 하면 저장 기준에 따라 파이썬이 정보를 쭉 찾아준다. 그 소스들이 어느 경로에 있는지를 찾아주고 그걸 인터넷 망에 카피페이스를 시킨다. 경로를 찾아 들어갈 필요가 없기 때문에 인게임에 바로 적용을 시킬 수도 있다. 서버에 올리는 서밋 방식이 아니라 속도가 느린 것도 아니고 적어서 낼 필요도 없기 때문에 인게임에서 내가 작업한 과정을 한 번 보고 싶을 때 적용하면 그만이다.

백업 후 원래 상태의 파일로 돌아가려면 덮어쓰기를 하고 퍼포스에 그대로 가져와서 파이썬에 적용을 시키면 된다. 그런 퍼포스의 기능을 쓰기 위해선 도스커맨드를 써도 되지만 P4파이썬이 가장 심플하게 적용시키기 쉽게 되어있는 것 같다고.

홍상범 과장은 여기 있는 내용들을 한 번에 다 이해하기는 쉽지 않겠지만 각자 회사에 돌아가거나 업계에 뛰어들 준비를 하는 사람들이 반복 작업을 최소화하고 서로 참신한 아이디어를 더 공유했으면 좋겠다며 발표를 마쳤다.



■ 질의응답

다른 툴을 쓸 때도 같은 방식으로 적용이 가능한가?

= 지브러쉬나 HLSL을 지원하는지는 잘 모르지만 찾아볼 가치는 있을 것 같다. 다만 내가 지브러시 등을 쓰지 않기 때문에 확답을 드리기는 좀 힘들 것 같다.


맥스가 계속 버전업이 되면서 파이썬까지 지원하는 걸로 아는데 아티스트 입장에서 어떤 게 더 접근하기 쉬우며, 또 속도 차이도 있는지?

= 역시 전문 프로그래머가 아니라 100% 확답하긴 어렵지만 아무래도 C계열 언어가 제일 빠를 것 같다. 다만 아티스트가 접근하기엔 상당히 어렵고 배울 내용이 너무나 방대해서 바로 적용하기에 어려운 부분이 있다. 긴 텀을 두고 공부하면 될 것 같다. 아티스트 입장에서 바로 적용을 시켜야 한다면 맥스 스크립트를 쓰는 것도 좋을 것 같다.

전혀 별개의 영역이 아닌 한 다른 C계열 언어를 공부할 때 도움도 되고 파이썬의 경우엔 가장 아트 친화적 언어라고 생각한다. 문법같은 게 맥스 스크립트와 비슷해서 거기에 익숙해지니까 파이썬을 큰 어려움 없이 금방 익힐 수 있었다. 이번에 맥스 17로 업그레이드 되면서 파이썬 에디터 창이 생겨서 바로 맥스 안에서 파이썬을 적용시킬 수도 있다. 맥스에서만 쓸 수 있는 파이썬 언어도 만들어졌다.

추천을 드리자면 빨리 적용해서 결과를 보고싶을 때는 맥스 스크립트를 먼저 배우는 게 좋고, 그 후에 파이썬을 배운다면 개별적인 툴 빌드를 만들 수도 있을 것이다. 파이썬 언어는 3D 아티스트 툴 빌드를 거의 다 지원한다. 공부만 한다면 여러 툴에 적용시킬 수 있어서 아티스트들이 공부하기엔 제일 좋은 언어라고 생각한다.