무비 렌더 큐(Movie Render Queue) 유저 인터페이스를 사용하여 렌더링하는 것 외에도, 런타임 배포 빌드에서 블루프린트 를 사용하여 렌더를 실행할 수도 있습니다. 이렇게 하면 최종 사용자 디바이스에서 렌더를 생성할 수 있습니다.
이 문서에서는 블루프린트를 사용하여 렌더를 생성하는 방법과 다양한 세팅을 환경설정할 수 있는 함수에 대해 간략하게 살펴봅니다.
전제조건
- 페이지의 전제조건 단계를 완료해야 합니다.
- 언리얼 엔진에서의 블루프린트 사용법에 대해 알고 있어야 합니다.
무비 파이프라인 서브시스템
블루프린트에서는 Movie Pipeline Runtime Subsystem 노드를 사용하여 무비 렌더 큐에 액세스합니다. 이 서브시스템에는 렌더링 작업 목록을 포함하는 큐(Queue) 가 있습니다. 작업마다 하나 이상의 샷 을 포함할 수 있으며, 각 작업에는 샷 렌더링에 사용하는 렌더 세팅이 포함된 고유한 환경설정 도 있습니다. 비디오를 렌더링하려면 작업 목록을 빌드하고, 작업을 큐에 할당한 다음, 무비 렌더 큐 서브시스템의 실행자(Executor) 를 호출하여 큐를 처리해야 합니다.
이를 추가하려면 이벤트 그래프(Event Graph) 를 우클릭하고 엔진 서브시스템(Engine Subsystems) > Get MoviePipelineQueueEngineSubsystem 을 선택합니다.
기본 렌더 생성하기
Movie Pipeline Runtime Subsystem 노드에는 블루프린트를 사용하여 렌더링하기 위해 필요한 세 가지 주요 함수와 단계가 있습니다.
- Allocate Job - 레벨 시퀀스(Level Sequence) 를 렌더 작업에 할당하는 데 사용되는 함수입니다.
- Set Configuration - 렌더 환경설정 할당에 사용됩니다.
- Render Job - 제공된 시퀀스 및 환경설정을 사용하여 작업을 렌더링합니다.
Allocate Job
먼저, Movie Pipeline Runtime Subsystem 노드를 드래그하고 무비 렌더 파이프라인(Movie Render Pipeline) > 렌더링(Rendering) > Allocate Job 을 선택합니다.
Target 핀에 Subsystem 노드를 연결한 다음, 렌더링하려는 레벨 시퀀스를 In Sequence 핀에 할당합니다.
Set Configuration
다음으로 Allocate Job 노드의 Return Value 핀을 드래그하여 Set Configuration 노드를 생성합니다.
커스텀 렌더 환경설정을 이미 프리셋으로 저장했다고 가정하고, 이를 In Preset 핀에 할당합니다.
Render Job
마지막으로 Movie Pipeline Runtime Subsystem 노드를 드래그하여 Render Job 함수를 생성합니다. 이 함수는 Set Configuration 후에 실행되어야 하며, In Job 을 Allocate Job 에 연결해야 합니다.
이러한 함수를 실행하면 로컬 컴퓨터에서 Allocate Job 에서 할당된 시퀀스와 Set Configuration 에서 할당된 렌더 세팅을 사용하여 렌더링을 수행합니다.
추가 함수 및 세팅
다음과 같은 함수와 워크플로를 사용하여 렌더를 더 세밀하게 제어할 수 있습니다.
렌더 환경설정 커스터마이징하기
작업을 위해 새로운 렌더 세팅을 생성하거나 편집하려는 경우, Allocate Job 이후 Get Configuration 및 Find or Add Setting by Class 노드를 연결할 수 있습니다.
다음으로 In Class 핀에서 특정한 익스포트 포맷, 이미지 세팅 또는 렌더 패스를 설정합니다.
세팅을 선택한 다음에는 Return Value 핀에서 드래그하여 해당 세팅 클래스에 관련된 프로퍼티 변수를 가져오거나(get) 설정(set) 할 수 있습니다.
기본 환경설정 세팅 없이 커스텀 렌더 환경설정을 빌드하는 경우, 베이스 렌더 패스 및 출력 포맷을 추가해야 합니다. 이는 일반적으로 디퍼드 패스(Deferred Pass) 및 PNG 또는 JPG 같은 출력을 추가해야 한다는 뜻입니다. 에디터와 달리 이러한 세팅은 기본적으로 추가되지 않습니다.
작업 취소하기
함수를 사용하여 활성 렌더 작업을 취소할 수도 있습니다. 이는 렌더링이 진행되는 동안 시뮬레이션이 종료되는 경우를 대비한 보호 기능으로 중요할 수 있습니다. 이러한 보호 기능이 없으면 에디터가 소프트락 상태에 들어갈 수 있습니다.
모든 렌더 작업을 취소하려면, Movie Pipeline Runtime Subsystem 노드를 Get Active Executor 에 연결한 다음, Cancel All Jobs 에 연결합니다.
시뮬레이션 종료 시 보호 기능으로 취소를 구현하려면, End Play Event 를 생성하여 이를 Is Valid 체크에 연결한 다음, Is Valid 를 Cancel All Jobs 에 연결합니다.
렌더 완료 이벤트
렌더 완료 이벤트는 Movie Pipeline Runtime Subsystem에서 커스텀 이벤트에 바인딩하여 생성할 수 있습니다. 이렇게 하려면 Movie Pipeline Runtime Subsystem에서 드래그하여 Assign On Render Finished (Bind 및 Custom Event 노드 모두 생성) 또는 Bind Event to On Render Finished (Bind 노드만 생성하여 기존 커스텀 이벤트에 연결)를 선택합니다.
커스텀 이벤트에 연결한 다음에는 결과(Results) 핀을 우클릭하고 구조체 핀 분할(Split Struct Pin) 을 선택합니다. 렌더 완료 이벤트는 이 이벤트 발동 시 발생한 렌더링과 관련된 다음과 같은 정보를 출력합니다.
| 이름 | 설명 |
|---|---|
| 결과 파이프라인(Results Pipeline) | 이 이벤트를 생성한 내부 UMoviePipeline 오브젝트입니다. 이는 고급 옵션이며 트래킹에만 사용됩니다. |
| 결과 작업(Results Job) | 이벤트를 생성한 UMoviePipelineExecutorJob입니다. 앞에 나온 Allocate Job 과 같은 결과이며 트래킹에 사용할 수 있습니다. |
| 결과 성공(Results Success) | 렌더링 성공 여부에 따라 true 또는 false 를 출력합니다. |
| 결과 샷 데이터(Results Shot Data) | 디스크에서 생성된 파일의 파일 경로 및 렌더 패스 목록이 포함되어 있습니다. 추가 처리를 위해 이러한 이미지를 로드하려는 경우에 사용할 수 있습니다. |
렌더 UI 변경
디버그 위젯(Debug Widget) 은 렌더링 중 무비의 프리뷰 프레임을 표시하는 UI 위젯입니다. Movie Pipeline Runtime Subsystem 에서 Set Configuration 을 사용하여 실행자가 다른 디버그 위젯을 사용하도록 설정할 수 있습니다.
진행 중 위젯 클래스(In Progress Widget Class) 드롭다운 메뉴를 선택하고 사용할 위젯을 선택합니다. 다음 중에서 선택할 수 있습니다.
- MovieRenderDebugWidget - 베이스 클래스이며 빈 화면을 표시합니다.
- UI_MovieRenderPipelineScreenOverlay - 위에 보이는 기본 렌더링 진행률 UI를 표시합니다.
- UI_MovieRenderPipelineScreenOverlayBlank - 빈 화면을 표시합니다.
위젯 블루프린트(Widget Blueprint) 를 생성한 다음 부모 클래스(Parent Class) 를 MovieRenderDebugWidget 으로 설정하여 고유한 커스텀 디버그 위젯을 생성할 수 있습니다. 그런 다음, 생성한 커스텀 위젯을 실행자의 디버그 위젯 클래스로 선택할 수 있습니다.
제한사항
일부 세팅은 에디터 전용 함수 기능을 기반으로 하기 때문에 런타임 빌드에서는 이용할 수 없습니다. 이러한 세팅에는 다음이 포함됩니다.
- FinalCut Pro XML 출력 포맷
- 오브젝트 ID 렌더 패스
- WAV 출력(애플리케이션이
-deterministicaudio및-audiomixer로 시작되지 않는 경우)