使用命令行进行批量渲染

批量渲染简介 

使用带有 Movie Pipeline 参数的命令行启动 Unreal 项目是开始自动化线性内容渲染的有效方法,利用 Python 实现自定义的 Movie Pipeline 可以为您提供每个渲染步骤回调的极大灵活性(MRQ 文章)。但是,我们也可以将渲染本身的执行留给 Python 来逐步处理所有事情,这使您能够对作业处理进行更离散的控制。 

过去,示例在启动时使用-game标志,但这会导致渲染结果与艺术家在编辑器中运行时看到的渲染结果不同。这可能是由于不同的设备配置文件造成的,因此我们现在建议先启动编辑器,以尽可能接近创作镜头的艺术家的渲染结果。此外,在渲染之前加载关卡也可能减少由于操作顺序问题导致渲染不匹配的可能性。

启动命令

让我们看一下在启动时使用 Python 脚本启动已保存队列资产的 MRQ 渲染的命令行。

配置

使用 UnrealEditor 启动项目并开始电影渲染的命令行

 

ExecutePythonScript="F:\AutoRenderMRQ.py" -queue=/Game/Levels/Rendering/Main_seq_queue.Main_seq_queue

我们运行UnrealEditor-CMD.exe,指定要启动的 UProject 文件并添加一些基本标志来指定我们的自动化方法。 

  • 即使我们没有编辑器,Log 也会弹出另一个窗口来监控引擎的输出。这也可以用于导出到特定文件(例如 -log=filename.log)

  • 无人值守允许我们绕过引擎中需要用户输入的任何部分,例如可能弹出并阻止引擎的对话框。

  • ExecutePythonScript 指定要运行的 Python 文件的路径。在这种方法中,完整的虚幻编辑器将启动,打开您指定的项目,加载默认的启动级别,然后在所有东西都加载并准备就绪后运行您的脚本。注意:ExecutePythonScript 等待资源注册表加载后再运行,因此对于大型项目,您可能会看到延迟,编辑器已加载并可交互,但不会执行您的脚本,直到它完成异步发生的注册表处理。

    • 注意:ExecutePythonScript 会等待资产注册表加载后再运行,因此对于大型项目,您可能会看到延迟,此时编辑器已加载并可交互,但直到异步完成注册表处理后才会执行脚本。 

我们将 MRQ 保存的资产路径作为我们自己的任意-queue参数传递给命令行。我们的 Python 脚本AutoRenderMRQ.py需要提供此参数,以便定位我们要渲染的队列资产。 

在下面的代码中,我们使用 MoviePipelineQueueSubsystem 加载队列并在 MoviePipelineExecutor 上设置回调,并在渲染完成后退出。请参阅上面的简单自动化示例:

https://docs.google.com/document/d/1C1Q4vLA6m0PezkLTaC_x076b3RnVo6K-jYbOSY_6DdM/edit#heading=h.dlvl05du2ief

Python 启动脚本示例

#AutoRenderMRQ.py

import unreal

def executor_finished_callback(job, outData):

    print("executor_finished_callback successful, quitting editor")

    unreal.SystemLibrary.quit_editor()

if __name__ == "__main__":

#Parse unreal  command line arguments

(cmd_tokens, cmd_switches, cmd_parameters) = unreal.SystemLibrary.parse_command_line(unreal.SystemLibrary.get_command_line())

queue_asset_path = cmd_parameters['queue']

if queue_asset_path:

unreal.EditorPythonScripting.set_keep_python_script_alive(True)

#Load the saved queue, add the callback on the executor, and execute

subsystem = unreal.get_editor_subsystem(unreal.MoviePipelineQueueSubsystem)

subsystem.load_queue(unreal.load_asset(queue_asset_path))

subsystem_executor = unreal.MoviePipelinePIEExecutor(subsystem)

subsystem_executor.on_executor_finished_delegate.add_callable_unique(executor_finished_callback)

subsystem.render_queue_with_executor_instance(subsystem_executor)

使用诸如-ExecutePythonScript之类的命令行时,执行命令后,引擎将在命令完成时关闭。由于渲染过程是异步的,我们需要通过调用来阻止自动关闭set_keep_python_script_alive(True)。

因此,我们必须确保脚本在完成所有任务后使用 来关闭编辑器quit_editor()。我们在executor_finished_callback 函数中执行此操作,并使用 将其绑定到执行器add_callable_unique。这使我们能够定义执行后过程,在此示例中,执行后过程只是在执行器完成运行时退出编辑器。

启动时的附加命令行参数:

您还可以向批处理脚本中添加其他有用的参数。 

dpc变量

代表设备配置文件控制台变量,一种在启动时覆盖控制台变量的方法。示例:r.RayTracing.EnableInEditor=1,r.RayTracing.Enable=1,r.SkinCache.Mode 1

诺斯普莱什

这可以防止在编辑器启动时启动加载图像。

固定种子

这将使用固定种子 0 初始化随机数生成器。 

标准输出

这告诉编辑器将虚幻日志的内容直接输出到 StdOut,这是一个可以写入文件以捕获作业详细信息的缓冲区。

允许StdoutLog详细程度

 将日志详细程度设置为 ELogVerbosity::Log

FullStdOut日志输出

将日志详细程度设置为 ELogVerbosity::All,即最高详细程度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值