Python在Unreal中提交Deadline渲染
Python在Unreal中提交Deadline渲染
lingyun简述
这篇文章主要是分享如何在UE里面配置Deadline渲染,以及如何用Python来实现自动化。
deadline下载页面: https://downloads.thinkboxsoftware.com/
- Deadline版本:10.3.1
- Unreal Engine版本:5.6
需要注意的是,UE不像通常DCC软件,它不能单个机器渲染单个帧。
农场分发最小单位为单个Level Sequence
,即为每台电脑渲染一个Sequencer
。
在UE中安装Deadline插件
1.在你的项目目录中,新建Plugins
文件夹。
将插件从Deadline仓库的plugins\UnrealEngine5\UnrealEnginePlugins
这个位置拷贝进项目的Plugins
文件夹。
然后启动项目,这个时候大概率会弹提示,说版本不对要重新编译。
点完Yes大概率也编译不成功,接下来试试我的方法。
先把两个插件从Plugins
目录移除,放在一个别的位置。
执行下面的命令来编译UnrealDeadlineService
(-package 参数为编译后的目标路径)
1 | "C:\Program Files\Epic Games\UE_5.6\Engine\Build\BatchFiles\RunUAT.bat" BuildPlugin -plugin="D:\test\rebuild_ue_plugins\UnrealDeadlineService\UnrealDeadlineService.uplugin" -package="D:\test\rebuild_ue_plugins\5.6\UnrealDeadlineService" |
注意:编译前需要安装 Visual Studio 2022,并按照官方说明文档进行组件安装。
编译UnrealDeadlineService
成功后,拷贝到自己项目的Plugins
中,启动UE。
在插件管理器中加载UnrealDeadlineService
插件,然后关闭UE。
再将MoviePipelineDeadline
拷贝到Plugins
目录,启动UE。
这个时候应该会弹窗,提示编译MoviePipelineDeadline
,点击Yes。
等待编译成功,就可以在插件管理器加载两个插件了。
尝试手动提交Deadline任务
1.打开Project Settings
,搜索”movie render”关键字,修改Default Remote Executor
和Default Executor Job
两个设置。
2.创建一个Deadline Job Preset
创建后,右键Edit,可以修改这个任务的任务名,用什么池或组。
3.创建一个新的Level
,Sequencer
和相机
,简单key一个动画,然后打开Movie Render Queue
。
4.在打开的Movie Render Queue
中,为任务指定deadline预设。
5.点击 Render(Remote)
按钮,提交渲染。
正常来说这里就把任务提交到Deadline了。
不过遇到了报错:
看下日志
找到插件中的这个文件 Plugins\MoviePipelineDeadline\Content\Python\remote_executor.py
1 | # line 338 |
查看一下setting
是个unreal.MoviePipelineGameOverrideSetting
对象。
文档里有说明game_mode_override
方法被弃用,推荐用soft_game_mode_override
修改代码,重启UE。
1 | if setting.get_class() == unreal.MoviePipelineGameOverrideSetting.static_class(): |
再试一次,提交成功并渲染完成了。
使用脚本提交渲染
1.首先创建Deadline Job Preset
1 | import unreal |
2.修改deadline任务参数,并保存。
1 | # 修改一些任务参数 |
3.创建渲染设置
1 | presets_name = 'my_seq_render_presets' |
4.修改渲染设置
1 | # 输出路径 |
5.在Movie Render Queue
里添加Sequencer
渲染任务。
1 | # 创建一个新的渲染任务 |
6.指定config
和job preset
1 | new_job.job_preset = presets |
到这里就设置完成了,点击渲染即可。
参考文档
deadline文档如何在UE中配置插件
https://docs.thinkboxsoftware.com/products/deadline/10.3/1_User%20Manual/manual/app-unreal-engine-5.html
Movie Render Queue使用说明
https://dev.epicgames.com/documentation/en-us/unreal-engine/render-cinematics-in-unreal-engine?application_version=5.4
MoviePipelineExecutorJob 对象
https://dev.epicgames.com/documentation/en-us/unreal-engine/python-api/class/MoviePipelineExecutorJob?application_version=5.6#unreal.MoviePipelineExecutorJob
如何使用命令行渲染
https://github.com/leixingyu/unrealUtil/blob/master/render/renderCmd.py