UDN
Search public documentation:

CreatingCinematicsKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 마티네와 시네마틱 > 언리얼 엔진 3 로 시네마틱 만들기
UE3 홈 > 시네마틱 아티스트 > 언리얼 엔진 3 로 시네마틱 만들기

언리얼 엔진 3 로 시네마틱 만들기


문서 변경내역: Greg Mitchell 작성. Grayson Edge, Richard Nalezynski, Jeff Wilson 업데이트. 홍성진 번역.

개요


언리얼 엔진 콘텐츠 파이프라인을 사용한 시네마틱 제작을 단계별로 알아보는 입문서 입니다.

실시간 vs 미리 렌더링


마티네는 게임플레이 도중 실시간 시네마틱을 만들기 위해 등장했습니다. 실시간 시네마틱은 로드된 게임 애셋을 라이브로 조작하여 씬을 만들어 냅니다. 실시간 시네마틱을 만들 때, 엔진의 리소스를 최고조에 달하게 하지 않으면서도 성능을 한계까지 끌어내는 조화점을 찾아야 합니다. 마티네는 미리 렌더링된 시네마틱을 만드는 데도 쓸 수 있기에, 미리 렌더링된 씬이냐 실시간 씬이냐 상황에 맞는 최선책 결정이 중요합니다.

미리 렌더링 시네마틱에는 고해상도 캐릭터나 이펙트, 라이팅, 세트 디자인 등이 필요할 수도 있습니다. 그렇다 해도 엔진에 의해 사용되는 리소스 예산 제약은 염두에 두어야 합니다. 엔진내 도구뿐 만 아니라 미리 렌더링된 시네마틱은 경우에 따라 비디오 편집 소프트웨어나 별도의 녹화 장비가 필요할 수도 있습니다.

씬 제작용 파이프라인에 있어서는 둘 다 같은 식으로 수행됩니다만, 최종적으로는 리소스 제약이 미리 렌더링이냐 실시간이냐를 좌지우지하게 됩니다.

언리얼 파이프라인


언리얼에서의 시네마틱 파이프라인은, 씬-바이-씬으로 하는게 훨씬 쉬울 것입니다. 즉 각 파일은 다수 카메라 샷의 씬이 될 것이며, 카메라 샷별로 파일이 하나씩이진 않을 거라는 것입니다. 이런 방식이 필요한 상황이 있을 수 있습니다; 하지만 대화 기반 씬에서는 파일 하나면 충분할 것입니다.

언리얼에서, 특히나 실시간 시네마틱을 만들 때 파이프라인은 씬을 중심으로 돌아갑니다. 즉 전형적인 20샷 미리 렌더링 씬에 대해서라면, 마야같은 3D 스위트에서 각각의 샷(이나 각 샷에 대한 언리얼 프로젝트)에 대한 씬 작업을 해야 할 것입니다. 언리얼에서는, 전체 씬을 집어다가 카메라 컷 작업을 하고 마티네에서 시네마틱 도구를 사용하는 식으로 하게 됩니다.

요약하자면: 언리얼의 실시간 시네마틱에서는, 액터는 실시간으로 움직이고 (카메라와 같은) 몇몇 작업은 백그라운드로 처리하는 동안 카메라를 통해 컷해 들어가게 되는 것입니다.

기타 고려 사항


언리얼에서 시네마틱 씬을 만들 때 염두에 둘 사항은 다음과 같습니다:

  • 씬 복잡도. 씬에 필요한 메시 및 필수 부분 전체에 대한 인자
  • 배경. 한 레벨 씬에 샷 전부를 담을 수 있는지, 아니면 더 필요한지?
  • 캐릭터 수. 5-8명 정도면 씬을 실시간으로 돌릴 수 있습니다만, 군중에 대해서는 미리 렌더링해야 할 것입니다.
  • 배경과의 상호작용. 몇몇 작업은 실시간 처리가 가능하지만, 대부분의 경우엔 속임수를 써야 합니다. 씬을 좀 더 사실적으로 묘사하려면, 씬을 미리 렌더링하는 쪽이 낫습니다.
  • 씬의 길이.
  • 기타:
    • 라이팅 복잡도.
    • 이펙트. 파티클 - 크기 및 디테일.
    • 캐릭터 복잡도. 디테일 측면에서 보면, 디테일이 높아 질수록 리소스도 커집니다.

실시간은 리소스 관리를 제대로 해 줘야 하니, 그러고 싶지 않은 경우엔 미리 렌더링을 고려해 보십시오.

준비


씬은 보통 개요, 스크립트, 스토리보드 등의 초기 디자인을 기반으로 합니다.

여기서부터 콘텐츠를 결정할 수 있겠습니다:

  • 캐릭터
    • 게임에서 다시 사용되지 않을 씬 전용 캐릭터를 만들기 전에, 많이 중요한지? 그럴 가치가 있는지? 따져본 뒤 거짓이라면 재사용을 고려하십시오.
  • 애니메이션
    • 늘상의 게임플레이 세트 일부가 아닌 것
    • 모션 캡처 데이터 및 추가 키프레임 데이터
    • 더이상 사용되지 않을 데이터 추가는 피하면서, 다시 찍지는 않아도 되게끔 정의하는데 필요한 것들을 구하기
  • 오디오
    • 대화 구하기: 보이스 오버; 수정 사항은 가급적 초기에
    • 스크립트 리뷰; "라디오 플레이" - 모션 캡처 동안: 캐릭터를 보이스-실행 스크립트 리딩에 따라 행동하게끔
    • 또한 "퍼포먼스 캡처" (vs. 라디오 플레이)도 고려: 한 샷에 (보이스 스크립트 등) 모두 캡처
  • 이펙트
  • 프로퍼티(props)

여기에서 전체 제작 완성 이전의 초기에 결정을 내릴 수 있습니다. 이 와중의 초기 실수는 비용이 훨씬 쌉니다. 목적은 캡처나 슛을 다시 하지 않으면서도 보이스 오버나 모션 캡처 데이터가 남아돌지 않게 하는 것입니다.

(애니매틱스 등의) 미리보기는 대화에 맞춰 스켈레탈 메시를 T-포즈로 움직이는 방식을 통해 엔진 내에서 가능합니다. 이를 통해 씬이 어때 보이는가 감을 잡아볼 수 있습니다.

애셋


시네마틱 씬은 애니메이션 및 오디오 제작시, 세트용 레벨 제작시, 라이팅과 이펙트와 메시 추가시의 애셋을 사용하여 만들어 집니다.

엔진 도구


언리얼 에디터 스위트의 다음 도구 주요 용도는:


씬 레이아웃 및 팔레트

팔레트는 그냥 hooking만 하면 되는, 미리 만든 마티네 데이터 텍스트 파일입니다. 근본적으로 키즈멧의 모든 오브젝트는 단지 코드일 뿐이며, 텍스트로 복사할 수도 있습니다. 이를 통해 비슷한 설정을 사용하는 씬을 세팅하는 데 드는 시간을 절약할 수 있습니다.

팔레트를 만들려면:

  1. 활성 오브젝트를 클릭하고, Ctrl-C로 클립보드에 복사합니다.
  2. 빈 텍스트 파일에 텍스트로 붙여 넣습니다. (Begin Object 참고)
  3. 이런 파일 모두에 대한 텍스트 문서를 만듭니다.
    • 텍스트로 필요한 것들을 복사한 후 키즈멧에서 여기에 붙여넣기... 를 사용합니다.

예제:

  1. 새 마티네를 만들면, 공백 씬이 나타납니다.
  2. 길이를 1:00 또는 원하는 대로 설정합니다.
  3. 디렉터 트랙, 카메라 트랙 몇, 캐릭터 스켈레탈 메시 트랙, 소품(prop) 그룹, 파티클 이펙트 트랙, 빈 사운드 그룹에 빈 사운드 파일, 라이팅 등을 추가합니다. 이 그룹들을 하위폴더로 묶어 조직화시켜도 됩니다.
  4. 팔레트 로 저장된 데이터가 자리잡힙니다.
  5. 텍스트 데이터를 복사하고, 키즈멧에 놓으면, 기본 씬 환경설정이 자리잡힙니다.
  6. 시네마틱 신 설정시 매번 직접 만드는 것에 비해 이 방법을 통해 시간을 많이 절약할 수 있습니다.

마티네 씬 팔레트 예제입니다: Big_Matinee_Pallette.txt 이 파일의 코드를 모두 복사한 뒤 키즈멧에 붙여넣으십시오. 하위프로젝트가 하나 나타날 것입니다. 열어 보십시오. 지원 시네마틱 키즈멧 함수가 추가된 새 마티네가 보일 것입니다. 마티네 오브젝트를 열어 어떤 그룹과 트랙이 만들어져 있는지 확인해 보십시오. 그냥 집어다가 사용해 보시면 준비 시간이 절약될 것입니다!

캐릭터 팔레트를 만드는 데도 좋습니다. 일정한 씬 세트에 대해서라면, 보통 한 씬에 캐릭터가 넷 있고, 여기다가 팔레트를 설정해 두면 각 씬에 대한 셋업 절차를 단순화할 수 있겠습니다. 빈 마티네에서 원하는 대로 만들고 정렬시킬 수 있습니다. 모든 플랙이 제대로 설정되었는지 확인하십시오. – 카메라에 잡히지 않을 때 모든 애니메이션이 확실히 그려지게 하기 위해 렌더링되지 않을 때도 스켈레탈 매시가 업데이트되도록 플랙을 켰는지, 확실히 이동시키기 위한 보간 이동용 피직스, 할당된 피직스 애셋 등을 확인하십시오. – 캐릭터용 기본 룰이 초기 셋업용으로 환경설정되었는지 확실히 하기 위함입니다. 총도 미리 부착해 두면 나중에 따로 부착할 필요가 없겠죠. 한 번 설정한 후, 모든 캐릭터를 선택하고 복사한 뒤 텍스트로 붙여넣은 다음 캐릭터 팔레트로 저장하면 됩니다.

마티네는 물론 캐릭터를 불러온 후, 캐릭터를 선택하고 키즈멧에서 변수 생성을 위해 오른클릭 합니다. 캐릭터에 대한 모든 변수 hookup을 생성하고 나면 마티네에 연결할 수 있게 됩니다. 마티네가 열리면 모든 캐릭터가 애니메이션 적용 및 이동 가능하게끔 hookup됩니다.

팔레트 작업을 할 때, 별도로든 캐릭터 그룹에 포함시키든 카메라도 같이 작업해 주는 게 좋습니다.

알아두실 점은 팔레트에 캐릭터를 같이 넣을 때는 무기 부착에 대해 나란히 수행하는 것이 최적입니다. 모든 모션 캡처 데이터는 (0,0) 참조점을 갖기 (월드에서 영점화되기) 때문에, 서로의 위에다가 놓을 수도 있습니다. 그리고서 영점에서 옮겨지게 됩니다. 그 상태에서 모든 애니메이션을 넣으면, 모두 그에 맞춰 이동하게 됩니다. 이를 통해 영점에서의 재위치조정을 피할 수 있습니다. 알아두셔야 할 중요한 점은 캐릭터가 원점에서 이동되면, 원래 모션 캡처된 방법에 관련해서 모든 것을 미세조정하느라 작업이 늘어날 수도 있을 것입니다. 이는 대화 씬에서 시간 절약에 특히나 유용합니다. 물론 어떤 경우에는 꽤나 멀어 이런 작업이 불필요할 수도 있습니다.

씬 촬영하기(shooting) 및 다듬기(polish)

모든 설정과 준비가 끝나면, 씬을 촬영 해야 하겠습니다. 씬이 (카메라 등의) 게임 환경에 막히는 경우 높은 디테일 작업, 즉 다음과 같은 2차 작업을 할 수 있겠습니다. (총 집기, 갑옷 관통해 삐져나오지 않게 하기 등의) "pan hands" 정리, (카메라에 잡히지 않을 때는 입을 움직일 필요가 없을 테니) 얼굴 작업, 이펙트, (씬에 활기를 더하기 위한 기후 요소나 추가 소품용) 메시 작업, 라이팅 등등 말입니다. 동시에 이펙트 이후에는 (폭발, 총알 튀는 소리, 음악 등의) 사운드 디자인 패스, 즉 씬에 대한 사운드큐 입니다.

(오디오, 음악) 사운드 디자인 이후에는 약간의 다듬기 (키프레임 최적화, "손으로 든" 것 같은 효과를 내기 위해 부드럽게 또는 거칠게 하기, 포스트 프로세스 등의 카메라 미세조절) 패스를 해야 겠죠. 꽤나 긴 작업이 될 것입니다!

그 외 이차적 요소들은 그냥 다시 가져오면 되겠습니다.

최적화


꼭 이해해 주셨으면 하는 점은 씬에 대한 예산과 리소스의 중요성입니다.

씬에 대해서, 애니메이션은 보통 큰 패키지에서 로딩됩니다. 그 결과로서, 특히나 콘솔에는 메모리 족적이 크게 남습니다. 옵션이라면 마티네에서 사용되는게 뭐가 있나 보기 위한 bake and prune (굽고 쳐내기) 절차가 있겠습니다. 좀 더 대표성을 띌 수 있는 메모리 족적에 적합하도록, 딱 필요한 것만, 딱 최소한만 집어내는 것을 목표로 삼아야 합니다.

마티네 데이터 버블의 bakeandpruneonbuild (빌드시 굽고 쳐내기) 플랙으로 애님셋에서 필수 애니메이션을 끌어내어 게임 레벨 자체에다 구워낼 수 있습니다. 이 작업은 보통 콘솔로의 쿠킹에만 수행되며, 레벨 디자이너가 레벨 크기 및 애셋 사용량을 쉽게 파악하는데 도움이 됩니다.

가끔 이 방법은 게임내 애니메이션에다 사용하기에 문제가 있을 수가 있습니다. 굽고 쳐내면 데이터가 실제로는 달라지게 되는 것입니다! 그래서 이런 경우가 저장된 것보다 메모리를 더 차지하게 되는 경우가 되는 것입니다. 굽고 쳐내기 절차는 대부분 시네마틱용으로 생성된 맞춤 애니메이션에 효과적입니다만, 잉여 애니메이션을 없애는 것 보다는 레벨 크기를 줄이는 것이 더욱 중요합니다.

팁과 꼼수


여러 도구로 작업할 때, 항상 도구의 다변화를 통해 작업 방식에 조절을 가할 수 있도록 마음먹는 것이 좋습니다. 최신 툴셋으로 최선의 결과를 끌어내기 위한 전략과 유용한 팁을 소개합니다.

트랙 상대성

이동 트랙이 있을 경우, 초기(기본값)에 상대적일 수도 있고, 월드에 상대적일 수도 있습니다.

월드에 상대적
3D 공간의 물리 월드 어디에 있건 간에 키프레임을 놓으면 월드의 해당 지점에 바로 놓이게 됩니다.
초기에 상대적
캐릭터가 동작중이지 않을 때마다 초기 위치로 가게 되며, 키프레임은 월드에 놓인 초기 지점을 기반으로 합니다. 재작업이나 씬이 지저분해 지는 걸 방지하기 위해 기본값으로 이렇게 설정됩니다.

예로 씬의 주방 레이아웃을 들어 봅시다. 씬의 모든 것을 움직일 필요가 있는 경우, 그냥 마티네가 닫힌 상태에서 오브젝트를 전부 선택해다가 움직입니다. 그러고 나면 모든게 있어야 할 곳에 있게 됩니다. 이 방법을 통해 월드에서 무언가를 움직여야 할 경우에 유연성이 확보됩니다. 그렇지 않고서야 모든 키프레임을 다시 애니메이트, 즉 근본적으로 전체 씬 작업을 죄다 다시 해야 하는 것입니다.

절단하기(Razoring)

꽤나 오랜 기간에 걸친 카메라 샷이 있을 경우 마티네에서 편집하기란, 다른 카메라도 들여와야 할꺼고, 꽤나 까다로울 수 있습니다. NLE에서는 그냥 드래그만 해도 되겠지만 마티네에서는 그룹내 키프레임을 전부 고려하지 않으면 죄다 망치는 수가 있습니다. 단축시킬 필요가 있는 어떤 카메라 컷에 대해, 이벤트 트랙은 디렉터 그룹에 놓을 수 있겠으며; 시간 바가 원하는 곳에 있는지 확인하고서 키프레임을 놓고; 거기서 다음 편집점으로 이동하여 애니메이션에 대한 타임바를 놓고 절단하여 깨끗이 잘라냅니다. 키프레임이 거기 있는지 확인하고; 그룹에 대한 입력/출력을 집어넣고 편집 메뉴의 범위 내의 키 선택 을 고르면 녹색 부분의 모든 키를 선택하고 전부 옮길 수 있습니다. 그냥 옮길 수도 있고, 화살표 키를 통해 키프레이밍도 가능합니다. 해당 키포인트를 옮기려는 곳의 마커가 생기게 됩니다. 이벤트 트랙은 지점 편집에 유용합니다; 나중을 위해 "여기서 컷" 같은 라벨을 붙일 수도 있습니다.

오디오

언리얼의 사운드는 3D 공간(5.1)에 있습니다.

씬의 오디오 디자인에 대해서는, 디렉터 트랙에다가든 다른데다가든 사운드 트랙을 넣을 수 있습니다. 사운드큐가 디렉터 트랙에 놓인 경우라면, 풀 스테레오(좌우 센터)가 될 거라는 뜻입니다. 사운드 큐가 캐릭터, 즉 스켈레탈 메시 그룹같은 곳에 놓인 경우라면 사운드는 3D 공간의 메시에서 나게 됩니다. 이는 오디오 사운드가 한 방향으로, 또는 카메라의 위치에 따라 한 방향으로 흘러나오는 것처럼 들리게 만들어 줍니다.

현재는 캐릭터에 사운드큐를 놓으면 캐릭터의 원점(zero mark, 영점)에 기반하게 되며; 모션 캡처 애니메이션은 보통 원점에서 꽤나 멀리 이동하게 됩니다! 추천할 만한 해결책이라면, 게임에서는 보이지 않은 마티네의 널 큐브 오브젝트를 사용하는 것입니다. 널 큐브를 씬에다 만들고, 캐릭터의 머리에 부착합니다. 그리고서 박스에 부착된 그룹을 만들고, 그 박스에 대한 사운드 트랙을 넣으면 됩니다.

키보드 단축키

(마티네의) NLE형 추가 조작에 대한 키보드 환경설정 일부는 이와 같습니다.

스페이스바 시작/정지
J 역재생 1
K 일시정지
L 프레임율로 재생
I 입력용: 입력지점 2
O 출력용: 출력지점
R 애니메이션 클립을 반으로 잘라( 또는 절단(razor) 해) 내어 타임바 왼쪽에 있는 애니메이션 트랙을 반전시키고, 누르면 2개의 애니메이션으로 분할합니다.
+ 타임라인상으로 줌인, 타임바가 있는 곳으로. (숫자키패드쪽이 아닌, 백스페이스 옆의 +)
- 줌아웃, 타임바가 있는 곳으로. (숫자키패드쪽이 아닌, 백스페이스 옆의 -)
왼쪽 화살표
오른쪽 화살표
한 번에 한 프레임씩 이동 3

1. 알림: JKL 콘트롤은 Final Cut Pro 등에서 사용되던 방법과 비슷합니다. JKL은 가운데 세 손가락의 위치에 있는 키입니다.

2. : 타임라인에다 마커 놓기에 대해, 마티네의 녹색 구역은 루핑 구간입니다. 마티네의 타임바를 문질러 이동한 뒤 I 를 누르고, 다른 곳으로 또다시 문질러 이동하여 O 를 누르면 다른 루핑 마커가 생깁니다.

3. 프레임: 문질러 이동하려면 (공백 구역을 클릭하여) 아무것도 선택 안된 상태인지를 확인하십시오. 시퀸스에 걸쳐 한 번에 한 프레임씩 움직일 때는 왼쪽이나 오른쪽 화살표 키를 사용합니다. 키프레임을 선택하고서는 화살표 키를 사용해 개별 키프레임을 좌우로 움직일 수 있습니다.

시네마틱 시퀸스 렌더링하기


다음 명령을 통해 시네마틱 시퀸스를 전부 에디터 내에서 각 프레임별로 렌더링할 수 있습니다.

GameName.exe -dumpmovie -benchmark -fps 30

시네마틱의 처음 10-15 프레임에서는 레벨 텍스처가 완전히 로드되지 않는게 보일것입니다. 시네마틱 전부를 로드하는 데 몇 초간의 버퍼 시간을 두느니, 그냥 환경설정 파일을 찾아 수정하여 텍스처 스트리밍을 꺼버릴 수도 있겠습니다. 게임 빌드의 Config 폴더로 들어가 Engine.ini 파일을 수정합니다. 키 bUseTextureStreaming 를 검색해 보면 아마 몇 개쯤 나올 것입니다. 얘들 값을 false 로 설정해 줍니다. 파일을 저장하면 텍스처 스트리밍 문제는 없을 것입니다.

알림: 환경설정 파일 원본을 백업해 두시면 나중에 되돌릴 때 편합니다.

미리 렌더링에 대해서는, 다음 명령을 사용하면 최대 품질이 나옵니다:

Game.exe <MapName> -Benchmark -MAXQUALITYMODE -NoTextureStreaming -DumpMovie -FPS=30 -ResX=1280 -ResY=720

비디오 캡처


각기 다른 요구에 의해 고유의 하드웨어나 소프트웨어가 필요하겠지만, 저희 에픽이 현재 사용하는 방법은 이렇습니다:

  • HDMI 직접 캡처용 Aja IO Board, 추가적인 비디오 처리 불필요
  • Mac에서 Final Cut Pro 편집