2015년 9월 30일

언리얼 엔진4 영화, Miss Daisy 제작기!

저자: Francis Christophe David Samuel Alexandre Patrick & Jocelyn

프로젝트의 시작

프로젝트를 공식적으로 시작하기 몇 달 전, NAD School에서 졸업작품으로 단편 영화를 만들어야겠다는 아이디어가 있었습니다. 실제로 진행하고 스토리라인을 짰던 것은 1월 학교가 시작하기 전 연휴 기간동안이었습니다. 학교의 비디오 게임 코스에서, 저희는 스토리보드와 애니메이션이 저희에게 어려운 도전임을 알았는데, 왜냐하면 특수효과/영화 용도로 게임엔진을 사용해 보지 않아서 였습니다.

캐릭터 애니메이션 제작 전에 모든 컷씬과 화각을 설정하는 것이 필요했습니다. 영화를 제작할 때 이 과정을 넘어가는 것은 불가능했는데, 왜냐하면 조금의 수정이 다양한 것 들에 영향을 주기 때문이었습니다. 컷씬에 1초만 추가해도 상당히 많은 수정이 필요하고, 특히나 트랙이 많은 마티네 같은 경우 더 그랬습니다.

첫 2주간 저희는 대강 잡힌 카메라를 이용해 마야로 시간과 구성을 확인하기 위해 애니메이션을 만들었습니다. 그리고 나서, 1월 말 쯤에 저희는 언리얼 엔진으로 인 게임 애니메이션 을 제작하였습니다. 이 때는 수 많은 애셋들이 그냥 더미로 놓여 있었습니다.

불가피하게, 수 많은 씬들이 얼굴 표현 기능 탑재와 최종 애니메이션 제작에 따라 삭제되었습니다.

제작 기간 중의 마지막 달에, 저희는 마감 작업을 시작하였고, 사운드 디자인/ 배경음악을 개시하였습니다. 아트쪽에는 단 몇 주만이 필요했습니다.

애니메이션

저희의 애니메이션 작업전개는 매우 단순했습니다. 저희는 컷씬의 카메라를 기준으로 해서 캐릭터 애니메이션을 만들고, 마야의 상대적 중심점을 언리얼 엔진 4로 익스포트 하였습니다. 저희는 이렇게 해서 모든 애니메이션이 제 위치에 있을 수 있도록 하였습니다. 저희는 언리얼 엔진4의 수 많은 익스포트 옵션을 이용해서 애니메이션이 올바른 크기로 재생될 수 있도록 하였습니다

Timeline

거의 모든 컷이 캐릭터의 애니메이션 시퀀스를 가지고 있었고, 그 사이에 물리적 연속성이 없었습니다. 이런 특징은 컷씬 구성에 있어 자유를 안겨주었습니다. 저희는 모든 오브젝트와 캐릭터 애니메이션, 레벨의 로딩과 스트리밍을 조절하는 이벤트를 쌓아 놓은 단 하나의 마티네만을 가지고 있었습니다. 결국에는 200개의 트랙을 만들게 되었는데도, 엔진은 여전히 런타임에서 매우 부드럽게 동작하였습니다.

라이팅

IntoScene

라이팅 설정은 제작 과정에서 많이 수정되었습니다. 처음에, 저희는 폭풍우 직전과 같이 더 어둡고 회색 계열인 느낌을 찾고 있었습니다. Miss Daisy 식당에 더 미스테리하고 섬뜩한 모습을 주기 위한 장치 였습니다. 캐릭터 제작이 만화적인 느낌으로 만들어짐에 따라, 채도가 더 높은 컬러들을 사용해야 됨이 명확해 졌습니다.

라이팅 컬러에, 저희는 메쉬 볼륨을 강조하고 스타일리쉬하게 보이도록 몇 가지 시원하고 따뜻한 변화들을 찾아보았지만, 대비가 너무 높아서 드라마틱하게 보이지는 않도록 하고자 하였습니다. 그래서 저희 는 디퓨즈를 더 높이고 주변 환경 라이팅이 부드럽게 보이도록 하는 것을 선택하였습니다. 스태틱 라이팅 레벨 씬과 같이 라이트매쓰 툴의 수 많은 파라미터를 조정하면서 얻어낼 수 있었습니다.

Bounce Lighting

캐릭터 라이팅

프로젝트에서 라이팅을 통해 달성하고자 하는 주요한 목적은 스토리에서 핵심적인 것에 시청자들의 이목을 집중시키는 데 있었습니다, 주로 캐릭터였죠. 이러한 애셋들이 스켈레탈 메시로, 언리얼에서 만들 어지는 볼륨 라이트 샘플을 통해 특별한 주의집중을 받을 수 있게 하였습니다. 이 시스템이 최적화 이슈에 따라 정확한 라이팅을 만들어 내지 않기 때문에, 저희는 여기에서 발생하는 노이즈 등을 줄이기 위해 수 많은 다이나믹 라이트들을 사용하였습니다. 제일 어려운 부분이 스태틱과 다이나믹 메시가 같이 있을 때 그 사이에서 명확히 드러나는 차이였습니다.

저희는 다이나믹 라이트를 추가하여 캐릭터의 주름과 드라마틱한 그림자를 돋보이도록 하게 되었습니다.

Character Lighting

주변환경 라이팅

프로젝트에서 또 다른 어려운 점은 동일한 씬에서 영화적인 품질을 유지하면서 실내와 실외를 다루는 것이었습니다. 실외에서 실내로 갑자기 이동하는 컷씬 등에서(2개의 레벨로 나눔) 어려움이 있었는데, 텍스쳐 스트리밍과 튀는 메시 등의 문제를 가지고 있었습니다.

라이트맵 사이즈를 조절하여 로딩 시간을 줄이고 화질의 한계를 두었습니다. 프리랜더라면 전혀 문제가 되지 않았겠지만, 저희는 언리얼 엔진 4의 성능을 통해 영화 전체를 실시간으로 랜더링 하고 싶었습니 다.

Gobo Lighting

몇 씬에 흥미로운 모습을 만들어 주기 위해, 저희는 숨어있는 물체의 가짜 그림자를 만들어 두었습니다.

식당 안에, 외부에서 들어오는 빛은 디렉셔널 라이트에서 온 것이 아닙니다. 그 대신에 저희는 스태틱 라이트로 식당 안에 반사되는 빛을 모사하였습니다. 그리고 나서 태양으로부터의 선명한 그림자를 다이나믹 라이트를 가지고 만들어 냈습니다.

지붕으로 부터 들어오는 라이트는 동일한 블루프린트를 공유하기 때문에 수정 및 적용이 매우 빠릅니다.


Rooftop Lighting

시각 효과

시각 효과에 있어, 저희는 먼저 애니메이션 영화와 비디오 게임들을 돌아봤습니다. 저희는 현재 세대의 연기와 불 등의 프리랜더 시각 효과를 봤고, 유체 시뮬레이션은 주로 품질과 깊이를 얻기 위해 사용되 었습니다. 저희는 이 프로젝트에서도 동일한 수준의 품질을 얻고자 하였습니다. 저희는 시각효과에 일정 수준의 부드러움을 유지하여 캐릭터보다 높은 대비를 피하기를 바랬습니다. 이걸 만들어내기 위해서 저희는 간단히 RBG 컬러로 구성된 라이트 릭을 만들어서 노멀맵을 랜더하였습니다.

Light Rig

노멀맵을 이용한 효과

With Normal Map

노멀맵이 없을 때 효과

Without Normal Map

그 이후, 참고용으로 수 많은 조사를 했습니다. 영향을 받는 것도 중요하지만, 받은 영향을 보관해 두는 것도 중요하기 때문인데, 자신이 해온 것으로부터 많은 것을 배울 수 있기 때문입니다. 영향을 받는 것은 특정한 스타일을 만들고 특정한 모습을 완성해 내는 것을 도와주고, 참고용으로 저장을 해 두는 것은 제작 속도 향상에 매우 도움이 됩니다.

미술적인 비전이 세워지고 나서, 계속 조사를 하고 난 뒤, 저희는 가장 중요하고 위험한 효과 시뮬레이션을 시작하였습니다. 저희는 Fume FX와 Realflow로 시뮬레이션을 하였습니다. 시뮬레이션을 제작해 내는 것은 시간을 많이 소모하고 특히나 졸업작품 기간 등의 소중한 제작 시간을 까먹습니다. 사용할 시물레이션 시스템에 대한 양질의 지식을 가지고 있는 것 또한 중요합니다. 왜냐하면 씬에 쓰지도 않을 효과에 시간을 쏟을 뻔 했기 때문입니다. 저희는 애셋의 재사용이 시간절약에 그만이라는 것을 배우게 되었습니다.

시뮬레이션이 다 되고 나서, 언리얼 엔진 4 속에서 이들을 합칠 때가 되었습니다. 언리얼 엔진 4는 훌륭한 머티리얼 에디터와 파티클 에디터가 있습니다. 온라인에는 저희가 달성하고자 하는 것을 도와 주는 수 많은 문서와 튜토리얼등이 있습니다. 게임 엔진에 시뮬레이션을 올리기 위해, 저희는 스프라이트 시트를 만들어야 했습니다. 그렇게 해서, 저희는 시뮬레이션을 프레임 별로 애니메이션 할 수 있었고, 언리얼 엔진 4에서 이 작업은 정말 쉬웠습니다. 스프라이트 시트를 만드는 쉬운 방법은 Contact Sheet II 라는 포토샵용 무료 플러그인을 사용하는 것이었습니다.

SpriteSheet

스프라이트 시트는 좋아 보였지만, 시각 효과로는 너무 많은 드로우콜과 오버드로우가 있었습니다. 그래서 플랜 B를 마련하는 것이 중요했고 저희는 각 컬러 채널에서 3개의 서로 다른 패턴을 갖는 단일 텍스쳐를 뿜어내는 단순한 연기 머티리얼을 만들었습니다. 그리고 나서 컬러 채널 두 개를 사용하였고 세 번째 채널로 UV 디스토션 효과를 만들어 냈습니다. 저희는 타일링과 디스토션 강도를 조절하는 컨트롤을 추가하여서 연기가 나는 상태에 서로 다른 뉘앙스를 주고, 아주 적은 드로우콜을 가지면서도 다양한 효과를 낼 수 있도록 하였습니다. 이런 종류의 효과에 관한 머티리얼 정보들은 인터넷에 많이 있습니다.

UV Distortion Sheet

또 다른 트릭으로는 메시를 사용하는 것이 있습니다! 볼륨 라이트를 생성하기 위해 넓은 영역을 덮어서 가짜 볼륨을 만들고자 하는 경우에 있어 여러분에게 최고의 친구가 되어 줄 것입니다. 저희는 가짜 볼륨 라이트와 넓은 영역을 덮는 연기 등에 메시를 사용하였습니다.

저희는 또한 퍼포먼스를 위해서 가능한 많은 GPU파티클을 사용하고 싶었습니다. 이들은 또한 벡터 필드를 이용하는 5만개의 스프라이트를 사용할 수 있도록 해 줍니다. 아래에 예제가 있습니다.

GPU  Particles

결국, 불가피한 결론은 최적화입니다. 저희는 다양한 시각 효과를 특정 앨리멘트 제거와 스프라이트 시트 사이즈 축소로 텍스쳐 드로우콜을 줄였고 원하는 퍼포먼스에 도달하였습니다.

파괴

이 프로젝트에서 저희는 물체 파괴에 있어 특정한 테크닉을 사용하였습니다. 여러 다른 컷씬들에 사용하기 위해 , 저희는 내장된 피직스 엔진을 사용하지는 않았는데, 그 이유는 랜덤해 보이는 결과와(상황 에 많이 좌우됨) 비용때문이었습니다. 저희가 찾은 해결 방법은 3DS의 MassFX 시뮬레이션으로 물체 파괴를 구워서 가져오는 것이었습니다. 저희는 그리고 나서 애니메이션을 스킨 있는 메시로 프로젝트용 애니메이션 굽는 스크립트 (여기서 다운로드)로 보냈습니다. MassFX는 씬의 물리 애니메이션에 있어 많은 옵션을 조정할 수 있게 하였는데, 플러그인에서 모든 파라미터를 조절할 수 있었기 때문입니다.

애니메이션을 굽고 나서, 저희는 스켈레탈 캐릭터처럼 임포트 하였고 마티네에서 트랙을 만들어 플레이 시켰습니다.

Destruction

주변 환경

Miss Daisy의 작업을 시작하였을 때, 주변환경 제작 팀은 두 개의 서로 다른 오브젝트를 만들었습니다. 첫 번째로 저희는 실시간 엔진과 최적화에 대해 배우면서 시각적으로 인상깊은 단편을 만들고 싶었습니다. 둘째로, 저희는 주변 환경을 통해서 스토리텔링을 강조하고 싶었습니다.

스토리를 명확하게 하고, 캐릭터를 완성해나가기 위해, 팀이 가능한 나레이션 부분을 강조하는 것이 중요했습니다. 이야기를 전개할 시간이 몇 분 밖에 되지 않기 때문에, 아티스트들이 가능한 한 시각적으로 과거 스토리와 할머니의 캐릭터를 보여 주는 것이 중요했습니다. 식당은 다양한 무기와 벽붙이, 랜덤한 장식품 등을 통해 할머니의 괴팍하고 위험한 면을 보여주기 좋은 장소입니다. 많은 종류의 서로 다른 무기 들을 만들어 내면서, 가볍고 만화같은 단편 분위기를 만들며, 저희는 할머니를 둘러싼 미스테리를 만들어 낼 수 있었습니다.

Env Reference

사전 제작중이었던 첫 번째 달에, 저희는 여러 무드 보드, 참조 문서와 컨셉트 등의 도움으로 만들고 싶은 아트의 방향을 결정하였습니다. 첫 번째 주변 환경의 모양으로, 저희는 잘 알려진 세쿼이아덴드론(측백나무과 거대한 나무)을 스타일있게 바꾸고 독특한 컬러를 잎에 사용하려고 하였습니다. 저희는 인상적인 나무의 크기와 독특한 잎의 색깔들에 매료되었습니다. 두 번째 주변 환경 섹션은 Miss Daisy 식당이었습니다. 저희는 1950년대 식당에서 영감을 얻어 오래된 식당을 만들기로 하였습니다. 외따로 떨어진 식당인 점을 감안하여, 저희는 도시적인 머티리얼들 보다는 나무를 더 배치해서 건물에 오두막 느낌을 살렸습니다.

Concept Reference

주변환경은 코믹 단편의 모든 카메라 화각에 맞게 만들어졌습니다. 저희는 흥미롭고 다양한 구성을 만들어 내기 위해 각 카메라 화각을 검사하였습니다. 레벨의 아트 제작은, 새 에셋과 라이팅을 추가할 때 마다 각 구성을 편집해야 하는 반복적인 업무였습니다. 각 카메라 샷과 라이팅 설정은 집중할 부분에 촛점을 맞출 수 있도록 돕고, 다양한 샷을 꾸며 주었습니다.

Scene Finals

랜드스케이프

언리얼 엔진에는 랜드스케이프 제작을 위해 월드 머신과 호환되는(지형 생성 툴) 멋진 작업흐름이 있습니다. 저희는 먼저 기본 랜드스케이프를 언리얼 내장 툴로 만들었습니다. 그리고 RAW16 포맷으로 익스포트해서 월드 머신에서 열었습니다. 저희는 비슷한 지형 스타일을 위해 침식 과정을 시뮬레이션하는 매크로를 만들었습니다. 매크로는 하이트맵 파일을 침식 맵과 플로우 맵을 포함해 다시 익스포트 시켜 주었고 랜드스케이프 쉐이더로 다시 임포트해 주변 지역의 색을 소상히 설정할 수 있게 도와 주었습니다.

Terrain Shader

랜드스케이프 쉐이더 경사에 맞추고 산 지형의 높이에 맞게 눈 쌓인 모습, 돌이나 잔디가 난 모습을 표현해 줍니다.

최적화

최적화는 프로젝트의 큰 부분이었습니다. 왜냐하면 24프레임 이하로 내려가지 않도록 하는 게 매우 중요해했기 때문입니다. 24프레임 이하에서, 관찰자는 깨지는 모습이나 끊기는 느낌 때문에 애니메이션에 집중하지 못할 것입니다. 비디오 게임에서는 덜 신경이 쓰이는데 왜냐하면, 플레이어는 자신이 하고 있는 액션에 집중할 것이기 때문입니다. 하지만 단편 영화에서 관찰자는 수동적이며 주로 발견하는 위치에 있습니다. 또한 실시간으로 랜더링하는 것이 효과적인 방법이라는 것을 증명하기 위한 프로젝트이기 때문에 프리랜더 무비만큼이나 유연하게 흘러가야만 했습니다.

같은 씬에서 실내 장식과 실회 장식을 다루는 것은 아주 큰 도전과제였습니다. 퍼포먼스를 많이 잃지 않기 위해, 저희는 씬을 여러 개의 스트리밍 레벨로 나누고 필요할 때 마다 전략적으로 로드하였습니다. 저희는 마티네에서 visibility 트랙을 스켈레탈 메시처럼 비용이 비싼 오브젝트를 숨기는 데 사용하였습니다.

나무와 식물들같이 무거운 메시들에는 3개 까지의 디테일 레벨을 갖도록 하였습니다. 저희는 LOD의 튀는 모양을 외부 카메라가 천천히 움직이도록 하여 제한할 수 있었습니다.

팀원들

Team Photo

David Bastien Robert, 주변환경 제작 아티스트  
Francis Bouthillier, 테크니컬 아티스트 
Patrick Chamberland, 애니메이터
Samuel Gauthier, 주변환경 제작 아티스트, 라이팅 아티스트 
Alexandre Grenier-Marcil, 특수효과 아티스트  Christophe Lessard St-Gelais, 주변환경 제작 아티스트
Medhat Hanbali. 작곡가
Valentino Lercher, 오디오 디자이너

수퍼바이저: Jocelyn Benoit, Marc-André Houde

Special Thanks:
Nadial El Mokhtari, Character Artist
Erwan Jonathan Mayel, Character Artist
Michel Quach, Character Artist
Edwin Jang, Concept Artist
Raphaël Nadeau, Concept Artist
Jahanzaib Chughtai, Rigging

NAD | UQAC