2012년 6월 12일

텍스처 하나로 만든 놀라운 환경

저자: Unreal Engine

텍스처 하나로 만든 놀라운 환경

한 명의 개발자가 하나의 텍스처와 UDK 의 능력으로 어디까지 가능할 것인가? 재능이 넘치는 3D 아티스트 Tor Frick 과의 인터뷰를 통해 그의 뛰어난 솜씨를 확인해 보세요. 멋진 공상과학 연구소 환경에 쓰인 콘텐츠를 다운로드 받으실 수도 있습니다.

오늘날의 게임 플랫폼군 에서는 미려한 3D 환경도 중요하지만 뛰어난 퍼포먼스를 위한 최적화도 우습게 볼 일이 아닙니다. 여러 프로젝트에서 UV, 텍스처, 셰이더 최적화 작업을 하고난 후, Tor Frick 은 자신의 기량을 테스트해볼 겸 메모리를 가급적 적게 쓰는 환경을 만들어 보기로 했습니다. 256x512 텍스처 하나만 사용해서 현실적인 씬을 만들어 보자는 목표를 세운거죠.

Frick 의 설명에 의하면, "보통 이런 씬에는 텍스처도 많이 있고, 그 각각이 보통 이것 하나보다 큽니다. 메모리를 엄청 차지하게 되요. 환경에서 텍스처 메모리를 적게 사용한다는 것은, 캐릭터나 다른 곳에 더 많이 할애할 수 있다는 뜻입니다. 이러한 티끌이 하나하나 모이면, 특히나 모바일 디바이스에서는 더 나은 느낌의 콘텐츠를 만들어 내는 데 태산같은 도움이 될 수 있을 것입니다."

"텍스처 크기를 최소화시키면서도 머티리얼 중복을 피해 드로 콜을 줄이고자 했습니다. 이러한 노력을 하다 보니 텍스처를 다른 관점으로 바라보게 되더군요. 텍스처를 있는 그대로 사용하기 보다는, 텍스처와 셰이더의 최대한을 뽑아낼 수 있도록 노력을 했으며, 보통은 고려조차 않았을 방식으로 UV 를 활용하여 득을 많이 봤습니다." 

실험과 반복

Amazing One - Texture Environment

Frick 은 지나온 시행착오 과정을 설명하면서, 기본적인 규칙과 접근법에 대한 심사숙고를 거친 끝에 씬의 다양성을 더욱 드높일 수 있었다 합니다. 

예를 들자면, "노멀맵의 파랑 채널을 철과 플라스틱 또는 칠된 부분 사이의 마스크로 사용, 그 둘을 스페큘러, 컬러 등으로 분리시킬 수 있었습니다. 그러나 잠시 후, 철에 붙은 소품 하나 당 색을 하나씩 할당하는 것이 꽤나 제약이 심하다는 것을 깨닫게 되었습니다. 애초의 생각은 메시에 절단면을 만들고, 그 폴리곤에 다른 머티리얼을 입혀 다른 색을 내고자 했었는데, 그러려면 드로 콜이 추가로 필요해 질 것이니 그런 상황은 피하고 싶었습니다." 

"대신 어떤 해결책을 썼냐면, UV 세트 중 하나에서, 색을 바꾸려는 폴리곤을 한 UV-그리드에서 측면으로 옮긴 다음, 컬러 채널 하나의 작은 영역을 마스크로 하여 머티리얼 에디터에서 스케일을 높여주는 방식을 사용했습니다."

"모든 것을 텍스처와 셰이더에 맞춰 넣고자 달리 생각을 했던 예 중 하나에 불과합니다. UV 좌표나 텍스처 채널처럼 이미 갖고 있는 데이터를 가지고 다양성을 만들어 내는 방법을 찾는 것은, 정말이지 멋진 도전이지요. 텍스처를 엄격히 디퓨즈, 노멀 등의 용도로만 볼 것이 아니라, 씬의 느낌을 살리는 데 가장 필요한 것이 무엇이고 그것을 최소한으로 이루어낼 수 있는 방법이 무엇인지 생각하려 노력했습니다. 이를테면 데칼에 쓸 마스크를 파내버리고 셰이더 안에서 대신 해결하도록 한다든가 말이죠." 

"UDK 로 작업을 해 보니, 콘텐츠 제작에 있어 이만큼의 자유도가 보장되는 경험은 처음이었습니다. 머티리얼 에디터에서 포스트 프로세싱과 렌더링에 이르는 모든 것을 아트 파이프라인을 통해 얻을 수 있다는 것에 약간 놀랐습니다. 머티리얼 에디터는 전에도 본 적이 있지만, 셰이더만 가지고도 할 수 있는 작업이 이렇게 엄청날 줄은 미쳐 몰랐거든요."

Amazing One - Texture Environment

과유불급이라, 과도한 최적화는 오히려 귀중한 시간만 낭비할 수 있기에 새로운 접근법을 시도해 보려 싶었다고 Frick 은 설명합니다. 

"여기 사용된 기법을 그대로 사용하여 실제로 게임을 만들지는 않을 테지만, 여기서 배운 교훈을 토대로 나중에 만들 게임 아트에 적용할 수 있을 것입니다. 새로운 꼼수를 몇 가지 도입해 보고, 여러 갈래 막다른 길도 탐험해 보면서 많은 것을 배웠습니다." 

"또한, 최적화를 한 번 해야 한다면 이득이 가장 큰 시점에서 해야 할 것입니다. 똑같은 텍스처를 가지고 애셋을 한 50 개쯤 만들었는데, 새로운 애셋을 만들기 위한 파이프라인도 매우 빨랐습니다. 새 텍스처를 임포트하거나 셰이더를 새로 만들 필요도 없었구요. 그렇다보니 새로운 꼼수나 최적화를 한 번 해줄 때마다 하나가 아닌 50 개의 애셋에 영향을 끼치는 것입니다. " 

"하루 하루 작업의 가치가 높듯이, 1메가바이트 가치도 높습니다. 환경의 텍스처 모양을 유지하면서도 몇 천 킬로바이트씩 계속해서 아낄 수 있다면, 어느샌가 주인공 캐릭터의 텍스처 개수가 백 단위에서 천 단위로 넘어갈 수도 있는 것입니다." 

UDK 의 유용성

Amazing One - Technology Environment

Frick 이 UDK 를 사용하기로 한 것은, 여러가지 다양한 기법을 실험할 수 있는 자유도와 사용 편의성 때문이라 합니다. 

"UDK 에서 가능한 제작 방법 옵션을 대부분 쓸 수 있었습니다. 거대한 커뮤니티와 엄청난 양의 정보 역시도 큰 이점이지요. 언제 막히더라도 간단한 웹 검색이나 포럼에 글 하나 올리면 땡이었습니다." 

"여러가지 엔진을 사용해 봤지만, UDK 가 특히 강력한 부분은 확실히 뛰어난 파이프라인과 사용 편의성은 물론 다용도 적합성에도 있습니다." 

이러한 특정 환경의 관점에서, Frick 은 UE3 의 셰이더 인스턴스 시스템에 찬사를 보냈습니다. "엄청난 도움이 되었죠. 과도하다 할 정도로 사용하여 셰이더 안에서 베리에이션을 만들고, 변수를 미세조정하며, 기능을 조정했습니다." 

"이 씬에 있는 거의 모든 것이 같은 셰이더를 기반으로 하고 있기에, 텍스처를 대상으로 반복처리하여 마스터 셰이더를 쉽게 업데이트하고 바꿀 수 있습니다. 셰이더에서 텍스처 채널과 UV 세트를 완벽 제어할 수 있어서 텍스처의 레이아웃 방식을 확정하기 전까지 계속해서 바꾸던 저로서는 큰 도움이 되었으며, 일일이 수동작업할 필요 없이 그 모든 것을 씬과 모든 인스턴스에 전송시킬 수 있어서 시간이 크게 절약되었습니다. 셰이더 인스턴스가 뷰포트에 실시간 업데이트되니 반복처리 시간을 줄이는 데도 큰 도움이 되었습니다." 

"인터페이스 전체적으로도 접근하기나 찾기가 매우 쉬워 매우 좋았습니다. 머티리얼 에디터가 정말 좋았지요. 이리저리 갖고놀기 얼마나 좋은지 몰라요. 머티리얼 인스턴스 시스템 역시 자주 쓰는데, 이런 씬에서는 머티리얼 인스턴스가 중용되는 경향이 있거든요. 키즈멧과 마티네 역시 고맙게도 매우 사용하기 쉽습니다. 그 덕분에 별다른 고민 없이 씬에 추가적인 폴리싱 작업이나 이동, 상호작용을 추가할 수 있었습니다!"

Amazing One -Texture Environment 
"언리얼 엔진 3 커뮤니티의 규모 역시도 크나큰 장점입니다. 다른 사람들이 개발한 재치있는 해결책을 볼 때마다, 뛰어난 영감을 얻곤 하지요. 저는 아직도 튜토리얼을 엄청 찾아보는데, 어떤 꼼수를 얻을 수 있을 지 알 수 없거든요. UDN 역시 엄청난 자원의 보고입니다. 문제 해결은 물론 엔진의 최신 내용 정보를 입수하기 위해서도 항상 끼고 살지요." 

"에픽과의 작업도 좋았습니다. 정말 엄청나게 배웠으며, 예전에는 상상조차 못했을 아트 제작 신천지에 눈을 뜰 수 있었습니다. 전체 아트 프로세스에 걸쳐 이만큼의 제어가 가능하다니, 상상의 나래를 마음껏 펼칠 수 있었지요." 

저희 에픽은 Tor Frick 의 프로젝트에 깊은 감명과 감화를 받아, 이 자리를 빌어 훌륭한 콘텐츠를 언리얼 엔진 커뮤니티와 공유해준 그에게 깊은 감사의 마음을 전하고자 합니다.</