Search Unity

유니티 “셔먼” 프로젝트 소개(1부): 애니메이터를 위한 HDRP, 비주얼 이펙트 그래프, 실시간 캐릭터 퍼(fur) 제작 기능

, 6월 11, 2019

셔먼(Sherman)은 베이맥스 드림즈(Baymax Dreams)로 에미상을 수상한 팀이 제작한 유니티의 실시간 단편 애니메이션 신작으로, 최신 기술을 적용하여 실시간으로 캐릭터의 퍼(fur)를 구현하였습니다.

저는 유니티의 미디어 및 엔터테인먼트 이노베이션 그룹(Media and Entertainment Innovation Group)의 기술 부문 책임자인 Mike Wuetherick입니다. 3년 전에 유니티에 입사한 직후, 이노베이션 팀 조직 구성에 참여하였으며 CG 애니메이션 및 영화 제작을 위한 Unity 기능을 강화하는 데 전념했습니다. 이후 팀은 Neill Blomkamp가 이끄는 오츠 스튜디오(Oats Studios)의 아담(ADAM) 에피소드 2, 3화, Neth Nom의 손더(Sonder) 및 최근에는 디즈니 TV 애니메이션(Disney Television & Animation)의 베이맥스 드림즈 단편 제작에 참여해 함께 작업했습니다.

이 글은 셔먼 프로젝트에 대한 블로그 중 첫 번째 파트로, 프로젝트를 제작하게 된 배경에 대해 먼저 설명드리고, 이 애니메이션에서 단편 애니의 블로킹(blocking), LookDev 및 카메라 배치(layout)에 사용한 기술에 대해 다뤄보겠습니다. 또한 2부에서는 캐릭터의 애니메이션을 위한 Alembic 사용, 비주얼 이펙트 그래프(Visual Effect Graph) 및 퍼 구현에 관해 좀 더 자세히 살펴보겠습니다.

 

목차

  1. 프로젝트 배경
  2. 시작하기 – 툴
  3. 셔먼 제작 성공에 기여한 애니, 선물(The Gift)
  4. 단편 애니 블로킹
  5. HDRP를 이용한 Lookdev
  6. 시네머신을 이용한 카메라 배치

프로젝트 배경

베이맥스 드림즈 프로젝트가 끝난 후에도 저희는 리드 애니메이터인 Bryan Larson과 새로운 단편을 만드는 등 베이맥스 단편 제작에 참여했던 핵심 멤버들과 계속해서 일할 기회를 가졌습니다.

당시 제작팀에는 핵심 팀 멤버인 John Parsaie(그래픽스 엔지니어), Jean-Philippe Leroux(조명 감독) 및 Adam Myhill(시네머신 크리에이터 및 크리에이티브 디렉터)은 물론 Mark Droste(베이맥스 드림즈 조감독), Steven Shmuely(베이맥스 드림즈 캐릭터 모델 담당)도 참여했습니다.

이 프로젝트의 초기 제작은 베이맥스 드림즈의 리드 애니메이터 Bryan Larson이 이끌었으며, Nicolas Langois-Demers가 캐릭터 리깅(rigging)을 담당했습니다. 베이맥스 프로젝트가 끝난 후 Mark와 Steven이 전담으로 팀에 합류한 건 저희한테는 큰 행운이었습니다. 이 기회를 통해 애니메이션 부문의 Unity 역량을 강화할 수 있었습니다. 제작 측면에서는 팀장이자 총괄 프로듀서인 Isabelle Riva와 함께 Andy Wood(베이맥스 드림즈의 라인 프로듀서)가 제작을 맡았습니다.  또한 새로운 비주얼 이펙트 그래프(Visual Effect Graph) 작업을 위해 Vlad Neykov가 합류하여 드림팀을 구축할 수 있었습니다.

8명 정도로 구성된 소수 정예 팀이 9월 중순에서 12월 중순경까지 이 단편 애니에서 핵심적인 부분을 제작하였으며, 그 이후부터는 애니메이션 제작은 더 이상 진행하지 않고, 캐릭터의 퍼 표현을 위한 R&D에 중점을 두었습니다.

셔먼 제작 중에 도움을 주신 유니티의 모든 관계자 분들과 특히 및 애니메이션 R&D 및 EDU 팀에 감사를 드리고 싶습니다. 셔먼과 같은 프로젝트 협업을 통해 Unity 플랫폼의 무한한 가능성을 확인할 수 있었습니다. 협업에 참여하신 분들의 헌신적인 지원이 없었다면 불가능했을 겁니다.

이제 드디어 Unity로 제작한 최신 단편 “셔먼”을 소개하겠습니다. 먼저 아래의 동영상을 감상해 보세요!

시작하기

베이맥스 드림즈를 제작하는 동안 셔먼 제작팀은 Unity의 새로운 HDRP 렌더러를 매우 익숙하게 사용하게 되었습니다. 그림자 필터링과 PCSS의 개선을 위한 몇 가지 중요한 수정 사항에 대한 의견을 제시하기도 했습니다. 새로운 셔먼 프로젝트에서는 이외에도 렌더러와 툴세트를 최대한 활용하고자 했습니다. 그래픽스 엔지니어인 John Parsaie가 주도적인 역할을 맡았으며, 그는 여러 영역 중에서도 특히 실시간으로 캐릭터의 퍼를 렌더링하는 기술을 한 차원 높이는 데 크게 기여했습니다.

셔먼 제작에는 Unity 2018.3 버전(현재는 2018.4 LTS 버전)이 사용되었으며, 타임라인, 시네머신, 리코더, Alembic, FBX 익스포터, 비주얼 이펙트 그래프, 포스트 프로세싱, HDRP 등 여러 패키지가 활용되었습니다.

본 단편을 제작하는 동안에도, 여러 툴과 유틸리티를 개발하였으며, 그중 일부는 우수한 기능을 인정받아 Unity의 패키지 관리자에서 제공하는 Film/TV toolbox 패키지에 포함되었습니다. 나머지 툴은 ‘Film 라이브러리’에서 제공되며, 이 라이브러리는 현재 툴박스로 마이그레이션하는 중에 있습니다.

셔먼 프로젝트의 성공에 기여한 애니, 선물(The Gift)

대부분의 프로젝트들이 그러하듯이, 셔먼 프로젝트에서 이룰 수 있던 성과는 단지 셔먼 제작팀만의 노력으로 된 것은 아닙니다. 특별히 여기서는 Marza Animation Planet의 단편 애니인 ‘선물’에 대해 말씀드리고 싶습니다.

2016년에 공개된 ‘선물’은 Unity 일본 지사의 동료들과 협업을 통해 제작되었습니다. 제작 기간 중 Marza와 Unity 일본 팀이 수행한 작업은 오늘날 Unity 실시간 애니메이션 기능의 중요한 토대가 되었습니다. Unity에서 최초로 구현된 퍼 셰이더(Fur Shader)뿐 아니라, Alembic 지원, Unity 리코더(원본 프레임 캡처 시스템 기반)까지 이 모든 기능들이 셔먼 프로젝트의 기초로 사용되었습니다.

단편 애니 블로킹

단편 애니에 대한 개념적 블로킹(blocking) 작업은 애니메이터인 Bryan Larson부터 시작되었습니다. 당시 팀원 대부분은 지난 가을에 있었던 유나이트 LA를 준비하고 있었습니다. Bryan은 Blue Sky에서 아이스 에이지(Ice Age)의 스크랫(Scrat)과 같은 다수의 클래식 캐릭터를 애니메이션화한 경력이 있으며 아마 그의 작품을 접하신 분들도 있을 것입니다. Bryan은 Steven Shmuely가 창조한 대략적인 캐릭터 조형을 사용하여 자신이 구상한 기본 스토리를 전달할 수 있도록 첫 번째 애니메이션 블록 패스를 빠르게 만들었습니다.

Mark Droste는 시작할 때 애니메이션의 대략적인 흐름을 가지고 있었으며 이것을 Unity로 가지고 들어 왔습니다. 그런 다음 Unity의 절차적 카메라 시스템인 시네머신을 활용하여 첫 번째 카메라 패스를 빠르게 블로킹하였으며, 약 하루 만에 팀에 보여주기 위한 대략적인 애니메틱을 만들었습니다.

 

셔먼 애니메틱의 클립: 아티스트는 대충 만들어진 에셋을 바탕으로 스토리를 빠르게 다듬을 있었습니다.

Unity의 강력한 애니메이션 및 카메라 툴을 사용하여 셔먼 제작팀은 단 며칠 만에 대략적인 아이디어를 완성도 있는 애니메틱으로 구현할 수 있었습니다. 실시간으로 신속하게 아이디어를 개선하고 시험해 보는 것은 매우 유용했으며, 크리에이티브 팀에서 매우 빠르게 ‘스토리를 찾아 완성할 수 있도록’ 도움을 주었습니다.

이 단편의 애니메틱을 완성하고 난 후, 셔먼 팀은 실제로 단편 애니를 제작하기 위해 필요한 모든 것에 대해 감을 잡을 수 있었습니다.

HDRP 이용한 Lookdev

베이맥스 드림즈를 제작했을 때 HDRP가 유용하게 활용되었기 때문에 셔먼 프로젝트에서도 HDRP를 사용하기로 결정을 쉽게 내렸습니다. 셔먼 팀은 렌더러 기술에 대해 잘 알고 있으며, 필요할 때마다 커스터마이징하고 렌더러 확장을 전담할 수 있는 그래픽스 엔지니어링 리소스를 보유하고 있습니다.

셔먼은 단편으로 제작되긴 했지만 의도적으로 매우 높은 화질 기준을 설정했습니다. 캐릭터의 털을 매우 높은 품질로 구현한 드림웍스의 최근 단편인 ‘Bilby’와 Unit Image의 최근 디즈니 광고는 셔먼 팀원들에게 많은 영감을 주었습니다. 매우 빠른 작업 환경과 최고 품질의 렌더링 출력을 지원하는 품질 기준을 설정하고 Unity에 이러한 수준의 캐릭터의 퍼 품질을 구현하고자 하였습니다.

전반적인 컬러 그레이딩 표현을 위해 전역 포스트 프로세싱 프로파일과 함께 노출, DoF, 비네트 효과 등 모든 ‘렌즈와 같은(lens-like)’ 효과를 위해 샷 단위 포스트 컨트롤에 시네머신 카메라 클립 프로파일을 사용했습니다.  샷 단위 렌즈 PPS와 연계된 이러한 씬/비트당 컬러 그레이딩은 렌즈가 주는 느낌을 유지하면서 여러 장의 사진에 다양한 컬러 그레이딩을 빠르게 시도해 볼 수 있어서 매우 효과적입니다.

제작 과정 전반에서 시네머신 스토리보드 확장 기능을 사용하여 현재 비주얼과 레퍼런스 이미지를 함께 비교할 수 있었습니다. 스토리보드에서 Split View 기능을 사용하여 프로젝트와 비주얼 타겟 레퍼런스 이미지를 대조했으며, Waveform Monitor를 사용하여 엔진 내 프레임이 비주얼 타겟과 색상 측면에서 어떻게 다른지 확인할 수 있었습니다(아래 그림 참조). 이러한 수준의 색상 개선을 샷 단위로 실시간 할 수 있게 되어 이 기능은 매우 효과적으로 사용됩니다.

WaveForm Monitor SplitView(좌/우는 레퍼런스 vs. 엔진 내 waveform을 나타냄)

셔먼 제작팀에는 3D 모델 담당자가 Steven Shmuely 1명뿐이었으므로, 에셋을 많이 만들지 않고 환경을 단순하게 유지해야 한다는 점을 알고 있었습니다.  셔먼의 캐릭터와 소품은 모두 오토데스크 Maya(일부는 3ds Max도 사용)에서 모델링되었으며, Substance Painter에서 표면 처리를 수행했습니다. 단, 몇 개의 에셋은 예외적으로 사자의 서(Book of the Dead) 환경 팩에서 가져와 프로젝트 기간 중에 Steven이 스타일 및 컬러 팔레트에 어울리도록 수정하였습니다.

셔먼의 에셋 대부분은 원하는 느낌을 실현하기 위한 다양한 옵션을 제공하는 표준 HDRP 릿 셰이더를 사용합니다.

Steven은 캐릭터부터 시작하여, 너구리와 기타 히어로 에셋(스프링클러, 사료 그릇 등)을 몇 가지 버전으로 빠르게 모델링했습니다.

아래의 비디오는 제작 기간 중 만들어진 이러한 히어로 에셋의 초기 WiP 렌더 중 일부를 보여줍니다.

 

 

셔먼을 제작하면서 관심을 가지고 집중했던 또 다른 에셋은 땅속 요정 석상(Gnome)입니다. 요정 석상의 머티리얼은 아래의 이미지와 같이 Substance Painter에서 작업되었습니다.

서브스턴스 페인터에서 작업된 요정 석상

Lookdev 단계에서는 검토 및 승인을 위해 빠르게 돌아가는 턴테이블을 Unity에서 렌더링하였습니다.

 

요정 석상은 표준 HD/릿 셰이더를 사용하며, 아래 이미지와 같이 설정됩니다.

HDRP Lit 머티리얼로 석상의 머티리얼 설정.

머티리얼을 위한 셰이더 그래프

표준 HD Lit 머티리얼을 사용하는 것 외에도, 씬의 많은 요소에 고급 머티리얼이 필요했습니다. 이러한 특정 머티리얼 제작을 위해 Unity의 비주얼 노드 기반 머티리얼 에디터인 셰이더 그래프(Shader Graph)가 사용되었습니다.

호스 파이프의 경우 Steven은 Stacklit 셰이더 그래프 마스터(Master) 노드를 사용하여 커스텀 셰이더 노드를 구축하고 2개의 독립된 스페큘러 로브(specular lobe)를 만들었는데, 하나는 파이프 외부의 플라스틱 코팅을 자연스럽게 반사하기 위한 것이고, 다른 하나는 섬유로 짠 내부 레이어를 위한 것입니다. 또한 호스 파이프 셰이더 그래프에는 버블, 시뮬레이션한 커스틱스(caustics) 및 표면의 물결(surface wave)을 애니메이션하는 개별 컨트롤도 포함됩니다.  이렇게 노출된 파라미터는 모두 독립적으로 타임라인에 입력될 수 있으므로, 호스 파이프 크기가 커져 가는 씬에 역동적이며 풍성한 모습을 구현할 수 있습니다.

호스 및 셰이더 그래프 프로퍼티

호스 파이프의 셰이더 그래프 머티리얼 섹션을 확대한 모습

셰이더 그래프는 Steven이 그래픽 엔지니어의 도움 없이 호스 파이프 디자인을 제작하고 개선하는 데 매우 중요한 역할을 했습니다.

아이 셰이더(Eye Shader)

캐릭터와 관련된 프로젝트에서 아이 셰이딩과 렌더링은 매우 중요한 요소입니다. 셔먼의 경우, 우리는 아이 셰이더를 여러 가지 버전으로 만들어 실험하였고, 그 결과 최종 결과물은 커스텀 셰이더와 이에 상응하는 MonoBehaviour 스크립트를 조합하여 눈의 패럴랙스(parallax) 디렉션을 제어하는 것으로 결정하였습니다.

눈은 겉으로 보이는 것보다 훨씬 복잡합니다. 여러 실시간 제작의 경우, 눈은 안쪽 및 바깥쪽 쉘을 나타내기 위한 이중 쉘(double shell) 구조로 단순화되는데, 이 경우 눈의 시각적 정확도가 크게 저하됩니다. 이 영상에는 셔먼(새)과 너구리 모두 클로즈업 샷이 많이 있었기 때문에 좀 더 정확도를 높이는 작업이 필요했습니다.

고품질의 아이 셰이딩을 구현하기 위해 시작해야 할 가장 중요한 작업은 눈 자체를 실제적으로 제작하는 것입니다. 셰이더가 아이 셰이딩에 필요한 패럴랙스 효과를 제대로 적용하도록 하기 위해 우리는 다음과 같이 0~1 범위 내에서 눈의 UV 작업을 시작했습니다.

너구리의 눈 제작을 위한 UV 맵

우측 상단은 눈동자의 뒷면을, 중앙은 눈의 전면을 나타내며, UV 공간에서 0.5,0.5에 위치해 있습니다. 이처럼 UV를 사용하여 눈동자를 설정하면 셰이더가 UV를 수정하여 아래와 같은 패럴랙스 효과를 얻을 수 있습니다.

또 하나의 중요한 디테일은 패럴렉스 효과를 잘 살리기 위한 눈동자의 중심좌표 설정입니다. 이 것은 카메라가 비추고 있는 방향을 비교 계산하기 위한 기준점을 제공하는 역할을 합니다. 눈의 굴절은 패럴렉스 효과가 얼마나 적용되어야 하는지 알려주는 두 개의 벡터값(눈동자의 방향 vs 카메라의 방향)을 가진 함수에 의해 정의됩니다.

John이 아이 셰이딩을 위해 추가한 마지막 시각적 디테일은 눈 주변의 앰비언트 오클루전(ambient occlusion)입니다. 이를 위해 눈꺼풀에 레이마칭(raymarching)을 적용하고 파라미터를 공개하여, Steven이 적용할 앰비언트 오클루전(AO)의 양을 제어할 수 있도록 했습니다.

 

위의 최종 결과는 MonoBehaviour ‘eye controller’ 스크립트에서 볼 수 있었기 때문에 우리 팀은 씬에서 샷 단위로 눈 프로퍼티를 작성하고 애니메이션화할 수 있었으며, 최종 결과를 얻는 데 필요한 눈의 홍채 세부 정보를 완벽하게 제어할 수 있었습니다.

셔먼의 아이 셰이딩

우리는 이러한 노력으로 얻어낸 최종 결과물에 매우 만족하며, 이는 전체 셔먼 프로젝트에서 확인하실 수 있습니다. 또한 여러분의 프로젝트에서 직접 사용해볼 수 있도록 셰이더 및 컨트롤러를 스탠드얼론 패키지로 제공할 예정입니다.

시네머신을 이용한 카메라 배치

Mark Droste는 셔먼에 사용되는 모든 카메라를 시네머신을 활용하여 배치했습니다. 또한 애니메이터가 애니메이션화할 수 있도록 FBX 익스포터(패키지 관리자에서도 사용 가능)를 사용하여 카메라 경로를 Unity에서 Maya로 익스포트했습니다.

이 작품 제작의 초기에는 Bryan이 애니메이션에 생명을 불어 넣을 수 있는 여지를 주기 위해 충분한 빈틈을 열어 두었습니다. 애니메이션 제작이 블로킹 단계에서 최종 단계로 넘어가면서, Mark는 카메라 샷과 움직임을 더욱 섬세하게 다듬을 수 있었습니다.

캐릭터가 Bryan의 스테이징 위치에 이미 배치되어 있었으므로 Mark는 시네머신으로 Unity에서 직접 카메라를 움직여 블로킹 작업을 할 수 있었습니다.  대부분의 샷에서 너구리를 자동으로 추적하며 하나의 타임라인에서 여러 개의 시네머신 카메라 트랙을 사용하여 새로운 카메라를 시험 사용해 보면서, Mark는 어떤 샷이 효과적이며 더 흥미로운 구성을 만들어 낼 수 있는지를 Maya와 같은 기존 툴에서 카메라를 애니메이션화하는 것보다 훨씬 빠르게 파악할 수 있었습니다.

시네머신 카메라 클립과 애니메이션 트랙을 결합하여 카메라 프로퍼티를 애니메이션화함으로써, Mark는 단편을 위해 빠르게 카메라를 배치하고 빠르게 재조정하여 최종 결과를 얻을 수 있었습니다.

요약

이로써 셔먼에 대한 블로그 시리즈 1부를 마치도록 하겠습니다. 셔먼 팀이 프로젝트를 구현하는 과정에서 사용한 제작 기술과 팁이 유익하셨길 바랍니다. 곧 2부도 한글 버전으로 업데이트될 예정입니다. 2부에서는 캐릭터의 애니메이션을 위해 어떻게 Alembic을 활용했는지 자세히 알아보고, 셔먼 캐릭터에 사용할 퍼를 구현한 방법과, Unity를 이용한 선형적 애니메이션(Linear Animation)을 제작하는 팀 지원을 위해 이노베이션 그룹이 추가로 제작한 툴 몇 가지에 대해 자세히 살펴보겠습니다.

우리는 셔먼을 소개하게 되어 매우 기쁘게 생각하며, 여러분이 앞으로도 애니메이션에 Unity를 어떻게 활용하는지에 대해 더 많은 소식을 접할 수 있기를 바랍니다.  아, 그리고 위에서 알아채셨겠지만 마지막으로 셔먼은 너구리가 아니라, 사실은 솜털이 보송보송한 귀여운 새입니다!

Unity를 사용하여 애니메이션 프로젝트를 진행하는 방법에 대해 더 배우고 싶으시면, 유니티의 EDU 팀이 여러분에게 맞춤화된 현장 교육 워크샵을 제공할 수 있습니다.  각 워크숍은 Unity 인증을 받은 강사가 진행하며, 구현을 위한 베스트 프랙티스뿐만 아니라 Unity 기술을 배워볼 수 있는 실습 프로젝트도 제공합니다.

전체 프로젝트에 대한 액세스를 포함하여 셔먼에 대해 자세히 알아보려면 영화 애니메이션 솔루션 페이지 방문하여 문의 주시기 바랍니다. 유니티와 Innovation Group 여러분의 아이디어를 실제 프로젝트로 실현하는 어떻게 도움이 되는지 알아보세요.

 

9 코멘트

코멘트 구독

코멘트를 달 수 없습니다.

  1. Jeez. So that racoon full-on died in the end. Pretty hardcore coming from Unity.

  2. this is really impressive i kinda like your work i am an animal illustrator i have trying some cool experiment i wish i had this kind of creativity skills.
    https://wildlifeillustration.net/

  3. Mike Wuetherick

    6월 17, 2019 2:14 오후

    If you have questions or would like to discuss the Sherman Project or find out more, there is a thread on the forum:

    https://forum.unity.com/threads/sherman-animation-project-giveaway-great-scene-setup-fur.694057/

    Thanks!

  4. My god, that’s impressive!

    Also I disagree with kp. Many games have in-game cinematics and customer expectations will continue to increase. By pushing this kind of content Unity is able to continue to delivery state of the art and next gen features.

  5. Impressiveness Unity can be used to achieve such result, didn’t know that was possible.

  6. Great short! Thank you so much for sharing.

  7. Oh, and lovely short film.

  8. Just be a game engine.

    Being all things to all people is why it now requires a PhD to operate your tools.

    No clarity in who your user is, or what product you’re developing.

  9. Astounding work!