프로젝트에 MoviePipelineMasterConfig.h 를 참조하는 기존 C++ 코드가 포함되어 있는 경우 MovePipelinePrimaryConfig.h 로 이 레퍼런스를 바꿔야 합니다.
언리얼 엔진 에서 무비 렌더 큐(Movie Render Queue, MRQ)를 사용하여 시퀀서 프로젝트를 렌더링할 때 MRQ 에셋 환경설정, 간소화된 명령줄 렌더링 실행인자, Python 실행자의 조합을 사용하여 렌더링 워크플로를 커스터마이징할 수 있습니다.
기존 오프라인 렌더 팜은 주로 한 머신에서 한 프레임을 처리하는데, 이와 달리 언리얼 엔진에서 배포할 수 있는 최소 작업 유닛은 단일 카메라 컷, 즉 레벨 시퀀스(Level Sequence) 샷입니다. 이는 언리얼 엔진의 리얼타임 기능이 전 프레임의 정보에 의존하는데, 이 데이터를 다른 머신들과 공유할 수 없기 때문입니다.
무비 렌더 큐 환경설정 파일은 레거시 렌더 무비 기능보다 복잡할 수 있습니다. MRQ는 레거시 시스템에서 사용하던 명령줄 실행인자에서 벗어나, 명령줄에서 렌더링을 호출하는 새로운 시스템을 사용합니다. 지원되는 명령줄 실행인자 목록은 몇 개의 기본 실행인자로 줄어들었지만, 언리얼 엔진은 Python을 사용하여 렌더링 프로세스를 커스터마이징할 수 있도록 지원합니다. 다시 말해, 명령줄 렌더가 실행되는 방식을 훨씬 세밀하게 제어할 수 있기 때문에 레거시 렌더 무비 시스템보다 더 유연하게 사용할 수 있습니다.
높은 수준에서 다음과 같은 세 가지 모드를 실행할 수 있습니다.
-
단일 레벨 시퀀스 및 환경설정 에셋을 지정합니다.
-
렌더링할 전체 큐를 지정합니다.
-
커스텀 Python 실행자를 사용하여 렌더링을 완전하게 제어합니다.
다음 문서에서는 지원되는 세 가지 실행인자 모드와 MRQ를 통해 프로젝트 렌더링에 사용하고 커스터마이징할 수 있는 커스텀 Python 실행자에 대해 설명합니다.
레벨 시퀀스 실행인자
-LevelSequence 실행인자를 사용하면 MRQ를 통해 렌더링할 특정 레벨 시퀀스 에셋의 경로를 지정할 수 있습니다. 이 루트를 사용하는 경우, UMoviePipelinePrimaryConfig 프리셋 에셋을 가리키는 -MoviePipelineConfig 실행인자도 지정해야 합니다. 그래야 렌더링할 에셋에 적절한 세팅이 할당됩니다.
이 메서드는 명령줄로 MRQ 렌더를 시작하는 가장 기본적인 메서드입니다. 명령줄은 다음과 같은 모습이 됩니다. 여기서 subwaySequencer_P 는 로드할 맵을 말하며, SubwaySequencerMASTER 는 레벨 시퀀스 에셋을, SmallTestPreset 은 UMoviePipelinePrimaryConfig 프리셋 에셋을 말합니다.
UnrealEditor-Cmd.exe "E:\SubwaySequencer\SubwaySequencer.uproject" subwaySequencer_P -game
-LevelSequence="/Game/Sequencer/SubwaySequencerMASTER.SubwaySequencerMASTER"
-MoviePipelineConfig="/Game/Cinematics/MoviePipeline/Presets/SmallTestPreset.SmallTestPreset" -windowed -resx=1280 -resy=720 -log -notexturestreaming
이 예시 메서드는 단일 맵에서 단일 작업의 렌더링만 지원하며 해당 레벨 시퀀스에 포함된 모든 샷을 렌더링합니다.
무비 파이프라인 환경설정 실행인자
레벨 시퀀스 실행인자를 토대로 빌드하는 것은 프라이머리 환경설정(Primary Config) 및 레벨 시퀀스 에셋 대신 MRQ UI를 통해 저장된 UMoviePipelineQueue 에셋의 경로로 작동하는 -MoviePipelineConfig 실행인자를 지정하기 위해서입니다. 이는 큐의 항목으로 지정된 맵에서 큐에 등록된 각 작업을 자동으로 처리하며, 이때 큐에 저장된 각 작업의 환경설정을 사용합니다. 이 실행인자의 경우, 명령줄은 다음과 같은 모습이 됩니다.
UnrealEditor-Cmd.exe "E:\SubwaySequencer\SubwaySequencer.uproject" subwaySequencer_P -game
-MoviePipelineConfig="/Game/Cinematics/MoviePipeline/Presets/BigTestQueue.BigTestQueue" -windowed -resx=1280 -resy=720 -log -notexturestreaming
Python을 사용한 커스텀 파이프라인 함수 기능
Python의 커스텀 실행자를 사용하여 고유한 파이프라인 함수 기능을 빌드할 수도 있습니다. 이 실행자를 사용하면 명령줄에서 실행인자를 읽거나 MRQ 작업을 환경설정하거나 생성하는 등 여러 가지 작업을 할 수 있습니다. 이렇게 하려면 -MoviePipelineLocalExecutorClass=/Script/MovieRenderPipelineCore.MoviePipelinePythonHostExecutor 를 사용한 다음, Python 실행자 클래스를 - ExecutorPythonClass=... 로 지정해야 합니다.
커스텀 Python 실행자를 실행하는 경우 명령줄은 다음과 같은 모습이 됩니다.
UnrealEditor-Cmd.exe "E:\SubwaySequencer\SubwaySequencer.uproject" subwaySequencer_P -game
-MoviePipelineLocalExecutorClass=/Script/MovieRenderPipelineCore.MoviePipelinePythonHostExecutor
-ExecutorPythonClass=/Engine/PythonTypes.MoviePipelineExampleRuntimeExecutor -windowed -resx=1280 -resy=720 -log -notexturestreaming
이 명령줄을 사용하면 엔진 부팅 후 Python 기반 실행자(이 경우, MoviePipelineExampleRuntimeExecutor )의 인스턴스를 생성합니다. 실행자가 생성되면 명령줄 실행인자를 읽고 MRQ 작업을 실행하고 외부 서버와 통신하면서 작업 정보를 결정하는 등의 일을 할 수 있습니다.
자신만의 Python 기반 실행자를 빌드하고 싶다면 unreal.MoviePipelinePythonHostExecutor 를 상속하는 Python 기반 UClass를 생성한 다음, execute_delayed 함수를 오버라이드해야 합니다. 커스텀 모듈을 임포트하는 /Content/Python 폴더에 "init_unreal.py" 클래스를 생성해야 합니다. 이 init_unreal.py 파일은 언리얼이 Python 파일을 파싱하고 엔진에서 지원되는 UClass로 재작성하여 추후 명령줄에서 지정할 수 있도록 만드는 데 필요합니다. 그 방법에 대한 예시는 예시 스크립트를 참조하세요.
\Plugins\MovieScene\MovieRenderPipeline\Content\Python\MoviePipelineExampleRuntimeExecutor.py 에서 샘플 Python 실행자를 확인할 수 있습니다. 이 샘플은 명령줄을 읽고 HTTP 요청을 만들고 로컬 소켓 연결을 시도하는 방법을 보여줍니다. 이 샘플의 정확한 실행인자는 위에 보여준 것보다 내용이 약간 더 많으므로 테스트해 볼 때는 예시 파일 상단에 있는 정보를 확인해 주세요.