오르카의 아틀리에


작업을 하다 보면 Unity에서 세팅한 오브젝트나 씬이 실제 디바이스 위에서는 어떤 느낌으로 보일지 궁금해진다. 만들어진 아트 작업물을 Unity 에디터 위에 그대로 올렸다 하더라도 실제 디바이스 위에 결과물을 올려두면 에디터에서는 느끼지 못했던 느낌들이나 개선점이 있기 마련이다. 그 때문에 나는 작업 중간중간 스크린샷을 통해 그런 느낌들을 하나하나 체크해가면서 작업하고 있다.


실제로 이 작업은 크게 3-step으로 이루어진다. 

1) 화면 캡쳐

2) 비율에 맞게 캡쳐본 자르기

3) 디바이스에 전송해서 느낌보기

정도일 것이다. 손이 빠른 아티스트라면 고민 없이 쓱싹 해치우고 올려보겠지만, 나는 편집에 그리 손이 빠른 편이 아니라 작업을 할 때마다 불편함을 느낄 수밖에 없었다. 자세히 보면 작업의 난이도가 단순하고, 프로세스가 명확해서 코드를 통해 쉽게 자동화할 수 있으리라 판단했고, 자신의 장점을 살려 Unity 플러그인으로 제작해보기로 했다.


1~2 Step : 화면 캡쳐 / 비율에 맞게 자르기

Unity에서 화면을 캡쳐하는 방법은 여러 가지가 있다. 카메라에 스크립트를 달아 캡쳐하는 방식도 있고 Unity에서 제공하는 화면 캡쳐 API를 사용할 수도 있다. 나는 에디터를 확장시켜서 플러그인용 윈도우를 하나 만들 것이고, 카메라가 2개이상 달려있는 경우도 있었기 때문에 Unity에서 제공하는 API를 사용하기로 했다. (사실 귀찮아서...)



Unity 2017에서는 API가 살짝 달라졌기 때문에 분기를 태워주어야 하지만 비교적 간단하게 Game Scene을 캡쳐할 수 있었습니다. 단점이 있다면 1) 속도가 생각보다 느린 편이고, 2) 화질이 실제 렌더링 된 것보다 좋지 못했습니다. Unity 내부에서 뭔가 다른 알고리즘으로 돌리나 봅니다.


코드를 통해 캡쳐하는 것이기 때문에 기존에 대략 캡쳐하고 비율에 맞게 잘라내기를 했던 작업이 불필요해졌습니다. :)


3 Step : 디바이스에 전송하기

실제 디바이스에 캡쳐한 사진을 보내는 방법은 여러 가지가 있지만, 그중에서 가장 Bot을 만들기 쉬운 방법으로 Slack을 택했습니다. Slack은 기본적으로 무료이고, Bot에 관련된 API를 비교적 쉽게 사용할 수 있기 때문에 선택했습니다.



이런 코드로 진행되는데 Slack은 Bot을 등록하고 Bot의 토큰과 필요한 정보들을 정해진 Url로 쏘는 과정이 필요하기 때문에 간단하게 Image만 업로드 가능한 Slack Helper를 제작했다.



Slack Helper는 위 코드와 같고, 읽어보면 알겠지만, WWW를 통해 원하는 정보를 착착 담아서 Url로 데이터를 쏘기 위해서는 일단 Slack에 Bot을 만들어 token을 가져와야한다. 방법은 이곳을 참조 (개발자라면 api 문서를 읽는 정도의 삽질은 필요하다고 생각)


 Non-playmode에서 Coroutine

그런데 문제가 하나 있다. Slack API는 물론이고 Unity 캡쳐 API가 느리기 때문에 기다리는 동작에서 코루틴을 사용하게되는데 아는 사람은 알겠지만 일반적인 Coroutine은 Play 중이지 않으면 사용할 수 없다. 그래서 Coroutine을 Non-playmode에서 사용하기 위해 트릭을 사용하는데 이미 Asset Store에도 등록되어있다. 그냥 다운로드를 해서 사용하면 된다.


결과


플러그인은 깃허브에 공유하고 있고, 이곳에서 확인 가능하다. 


기본적으로 Unity  API를 사용하기 때문에 백업으로 저장될 곳의 파일 경로와 Slack bot의 token, 그리고 채널의 이름과 원한다면 코멘트도 한줄 작성할 수 있다. 작성이 끝나면 언제든지 카메라 모양의 버튼을 통해 캡쳐가 진행된다.


- 당연하겠지만 화면의 해상도가 높을 수록 캡쳐가 늦어진다.