UDN
Search public documentation:

FullScreenMovieKR
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 홈 > 마티네와 시네마틱 > 풀스크린 무비 (FMV)
UE3 홈 > 시네마틱 아티스트 > 풀스크린 무비 (FMV)

풀스크린 무비 (FMV)


문서 변경내역: Sam Zamani 작성. Josh Adams, Jeff Wilson 업데이트. 홍성진 번역.

개요


UE3의 무비 재생 방법은 두 가지가 있습니다: 머티리얼을 포함하는 MovieTexture(무비 텍스처) 리소스를 사용하거나, 풀스크린 무비 플레이어를 사용하거나 입니다. 여기서는 풀스크린 무비 플레이어 기능에 대해 다뤄보도록 하겠습니다.

무비 파일 새로 만들기


무비를 Bink 포맷으로 변환하는 방법, 다양한 가용 인코딩 옵션 목록 등에 대한 정보는 Rad Game Tools (http://radgametools.com/) 제공 문서를 참고해 주시기 바랍니다.

무비 파일 재생하기


재생용 무비 파일을 여는 데는 여러가지 방법이 있습니다. 처음 플레이할 때 메모리에 미리 로드하여 디스크에서 바로 스트리밍할 수도 있고, 무비 스트림을 미리 담아두는 유저-제공 메모리를 사용할 수도 있습니다.

"MOVIETEST <파일명>" 실행 명령을 통해 무비 파일을 사용하는 플랫폼에서 재생되는 무비를 테스트해 볼 수 있습니다. 이 실행 명령으로 요청된 무비의 재생이 끝나고 반환될 때까지 게임 스레드는 멈추게 되니 참고하십시오.

전역 풀스크린 무비 플레이어(GFullScreenMovie)를 사용하여 코드에서 무비를 재생시킬 수도 있습니다. 이 전역 및 그 함수는 메인 게임 스레드에서만 접근할 수 있습니다.

GameThreadPlayMovie (게임 스레드 무비 재생) - 지정된 파일명에서 무비 재생을 시작하는 데 사용되는 함수입니다. 재생 방법은 다음 중 하나입니다:

이름 설명
MM_LoopFromStream (스트림에서 루프) 디스크에서 스트림 및 루프, 메모리 사용 최소.
MM_PlayOnceFromStream (스트림에서 한번 재생) 디스크에서 스트림, 메모리 사용 최소.
MM_LoopFromMemory (메모리에서 루프) 무비를 램으로 로드하여 루프.
MM_PlayOnceFromMemory (메모리에서 한번 재생) 무비를 램으로 로드하여 한 번 재생.
MM_LoopFromSuppliedMemory (제공된 메모리에서 루프) 기존에 로딩된 버퍼에서 루프.
MM_PlayOnceFromSuppliedMemory (제공된 메모리에서 한번 재생) 기존에 로딩된 버퍼에서 한 번 재생.

루핑 무비를 지정하면 무비 스트림의 첫 프레임서부터 재생이 시작되며, 무비를 중지할 때까지 계속해서 재생됩니다. 무비 재생을 시작한 후에는 꼭 GameThreadStopMovie (게임 스레드 무비 중지)를 호출해야 하니 참고하십시오.

GameThreadIsMoviePlaying (게임 스레드 무비 재생중인지) - 지정된 무비가 현재 재생중인지를 확인하는 함수입니다.

GameThreadGetLastMovieName (게임 스레드 지난 무비 이름 구하기) - 지난 번 플레이한 최근 무비 이름을 반환하는 함수입니다.

재생중인 무비 중지하기 및 막기


GameThreadStopMovie (게임 스레드 무비 중지) - GameThreadPlayMovie (게임 스레드 무비 재생)을 호출한 이후에는 꼭 이 함수를 호출해야 합니다. 현재 재생중인 무비를 중지시키며, 무비 재생용으로 생성됐던 뷰포트도 제거합니다.

GameThreadWaitForMovie (게임 스레드 무비 대기) - 이 함수를 호출하면 무비 재생이 끝날 때까지 게임 스레드가 막힙니다. 루핑 무비에서의 경우라면 영원히 막히게 되니 주의하십시오.

GameThreadIsMovieFinished (게임 스레드 무비 끝났는지) - 해당 렌더링 스레드에서 무비가 아직 재생중인지를 알아볼 때 쓰이는 함수입니다. 이를 통해 재생중일 때는 다른 작업을 할 수 있습니다.

환경설정 세팅


Game\Config\DefaultEngine.ini 파일의 [FullScreenMovie] 부분에서 설정할 수 있는 옵션이 여럿 있습니다.

  • "+StartupMovies=MovieName" (시동 무비) - MovieName을 시동 무비 목록에 추가합니다. 시동 무비는 전체 시퀸스가 끝날 때까지 순서대로 재생됩니다. 시동 시퀸스는 플레이 도중 게임 스레드 상에서 일어나는 로딩 초기화를 감추는 데 좋습니다. 목록의 최종 무비가 엔진 부팅까지 필요한 만큼 재생 가능한 루핑 무비로 내정되어 있습니다. 최종 루핑 무비 이전의 무비가 끝나기 전에 엔진이 부팅이 완료되면 루핑 무비는 재생되지 않습니다.
  • "+AlwaysLoadedMovies=MovieName" (항상 로딩되는 무비) - MovieName을 첫 재생 이후 메모리에 상주하게 되는 무비 목록에 추가합니다. 보통 레벨 이행간에 항시 필요하게 되는 로딩 무비의 경우에 좋습니다.
  • "+SkippableMovies=MovieName" (생략가능 무비) - MovieName을 생략할 수 있는 무비 목록에 추가합니다. 생략은 특정 버튼 입력이 감지되거나 수동으로 무비를 중지하려 할 때 발생합니다. 엔진 부팅이 완료된 이후 무비 일부를 생략시키기에 좋습니다. (엔진이 부팅중이라면 무비 생략은 아무 일도 하지 않습니다.)
  • "+LoadMapMovies=MovieName" (로드 맵 무비) - UGameEngine::LoadMap 시작 지점에서 임의로 선택된 무비 배열로, 블로킹 맵 로드 도중 재생할 것입니다.
  • "bShouldStopMovieAtEndOfLoadMap" (로드 맵 종료시 무비 정지?) - 참이면 (UGameEngine::LoadMap 를 통한) 블로킹 맵 로드가 완료될 때 엔진이 StopMovie() 를 호출합니다. 거짓이면 재생중인 무비를 수동으로 정지시켜 줘야 합니다. (LoadMap 완료 후 긴 처리작업이 필요한 경우에 좋습니다.)
  • "bForceNoMovies" (강제 무비 없이?) - 참이면 무비가 재생되지 않습니다.

무비 재생 세부사항


모든 무비 재생은 렌더링 스레드 상에서 수행됩니다. 렌더링 스레드가 존재하지 않거나 중지된 경우라면, 무비 재생이 시작/끝날 때 풀스크린 무비 플레이어가 수동으로 렌더링 스레드를 시작/중지시킵니다. 풀스크린 무비 플레이어는 렌더링 스레드 상에서 틱 가능한 오브젝트입니다만, 무비가 열려 재생중일 때만 틱이 됩니다.

무비 재생시 새로운 뷰포트 창이 생성되며, 무비가 정지되면 소멸됩니다. 입력 이벤트를 제대로 처리하기 위해 필요한 작업입니다.

디코딩 대상이 되는 내부 빙크 텍스처는 물론 YUV->RGB 변환 셰이더도 무비가 처음 재생될 때 생성됩니다. 무비 텍스처 리소스의 재생시 사용되는 구현 방식과 동일한 것입니다.