在运行时构建中使用影片渲染队列

如何在分布式构建中使用影片渲染队列,以便在最终用户设备上创建视频。

Windows
MacOS
Linux

虚幻引擎4.26 和之后版本中,你可以使用 影片渲染队列(影片渲染队列) 在运行时渲染视频,并使用 蓝图 输出文件到用户的计算机。此功能有助于在特定目标硬件上渲染高质量视频。

工作流程

你可以在蓝图中使用 Movie Pipeline Queue Engine Subsystem 节点来访问影片渲染队列。

MRQSubsystemNode.png

该子系统使用一个 队列(Queue),队列中有一系列渲染 任务(Job)。每个任务可以包含一个或多个 镜头(Shot),并有自己的 配置(Configuration) 界面,显示用于渲染任务内镜头的

[设置](AnimatingObjects/Sequencer/Workflow/RenderAndExport/HighQualityMediaExport/Reference)
。要渲染视频,你需要建立一系列任务,把任务加入队列中,然后调用影片渲染队列子系统的 执行器(Executor) 来处理队列。

步骤

要在运行时渲染Sequencer视频,应用程序必须执行以下步骤:

  1. 创建 Movie Pipeline Queue Engine Subsystem 节点。点击输出引脚并拖出一条引线,然后创建一个 Get Queue 节点,以获得队列引用。

    EngineSubsystemRef.png

  2. 点击"Get Queue"节点上的"返回值(Return Value)"并拖动,然后调用 Allocate New Job。上述操作将在队列中添加一个任务。

    AllocateNewJob.png

  3. 点击Allocate New Job节点的返回值(Return Value)并拖出一条引线,获得任务的一个引用。调用 Set Sequence,将其配置为要播放的关卡序列的 软对象路径(soft object path),然后调用 Set Map,将其配置为序列所在关卡的软对象路径。在此任务启动后,影片渲染队列将加载指定贴图,并启动指定序列。

    SetSequenceAndMap.png

  4. 再次点击Allocate New Job节点上的"返回值(Return Value)"并拖出一条引线,然后调用 Get Configuration,以获得任务设置的引用。

    GetConfig.png

  5. 点击Get Configuration节点上的"返回值(Return Value)"并拖出一条引线,然后调用 Find or Add Setting by Class,以添加一个新设置。点击 In Class 输入引脚的下拉菜单,选择你想要更改的设置。 你可以点击Find or Add Setting by Class节点上的"返回值(Return Value)"并拖出一条引线,以编辑这些设置的属性。

    CreateSettings.png

    一些影片渲染队列设置依赖于编辑器独有的功能,无法在运行时构建中使用。详见下文限制(Limitations)部分。

  6. 根据需要对每个分配的任务重复步骤2至5。

  7. 分配结束后,获取Movie Pipeline Queue Engine Subsystem节点的引用,然后调用 Render Queue with Executor。将 In Executor Type 设置为 MoviePipelineInProcessExecutor。此节点将通知执行器处理你在Movie Pipeline Queue Engine Subsystem中建立的队列,并将引用返回至执行器。

    RenderQueueWithExecutor.png

    MoviePipelineInProcessExecutor是一个执行器类,专用于应用的运行时构建。其他执行器类分别用于不同情况,如在编辑器内运行期间。

  8. 要在执行器处理完队列后调用事件,点击Render Queue with Executor上的"返回值(Return Value)"引脚并拖出一条引线,然后调用 Bind Event to On Executor Finished Delegate。然后便可将事件到此节点,以便在队列结束后运行此事件。

    BindEventOnRenderFinish.png

取消任务

可以从执行器中调用 Cancel Current Job 来取消执行器正在运行的任务,继续处理下一个任务。调用 Cancel All Jobs 将取消队列中的全部任务。

![](CancelingJobs.png)

自定义执行器

可以通过更改执行器的设置项来控制执行器如何处理队列。

使用 Construct Object 节点,可以手动构建执行器对于新建的执行器实例,选择 Movie Pipeline In Process Executor 作为 类(Class),然后将一个引用连接到 Movie Pipeline Queue Engine Subsystem 作为 外部(Outer)

![](ConstructExecutor.png)

你可以用此节点的"返回值(Return Value)"来编辑新建执行器的设置,或者将事件绑定到代理。操作完成后,调用Render Queue With Executor Instance而非 Render Queue With Executor,然后把执行器连接到 In Executor 引脚。

![](ChangeExecutorSettings.png)

如果你想在当前已加载的关卡中运行一个序列而无须再次载入,把执行器的 使用当前关卡(Use Current Level) 变量值设置为 True。此设置将确保在运行过程中保留所有已做出的更改,而不是重启关卡并从头开始。

UseCurrentLevel.png

更改调试控件

Debug调试控件(Debug Widget) 是UI控件,用于在渲染过程中显示视频预览帧。你可以通过设置执行器的 调试控件类(Debug Widget Class) 来更改调试控件。

![](SetDebugWidgetClass.png)

将此属性值设为"None"表示使用缺省调试控件。你可以通过创建一个 控件蓝图(Widget Blueprint) 来创建自己的自定义调试控件,然后将其 父类(Parent Class) 属性设置为 MovieRenderDebugWidget

![](MovieRenderParentClass.png)

然后你可以选择此自定义控件作为执行器的调试控件类。

![](UsingCustomDebugWidget.png)

限制

某些设置在运行时构建中不可用,因为它们依赖于编辑器特有功能。包括:

+ FinalCut Pro XML输出格式
+ Object ID渲染通道
欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消