簡述
這篇文章主要是分享如何在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 參數為編譯后的目標路徑)
"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
# line 338 if setting.get_class() == unreal.MoviePipelineGameOverrideSetting.static_class(): game_override_class = setting.game_mode_override
查看一下setting
是個unreal.MoviePipelineGameOverrideSetting
對象。 文檔里有說明game_mode_override
方法被棄用,推薦用soft_game_mode_override
修改代碼,重啟UE。
if setting.get_class() == unreal.MoviePipelineGameOverrideSetting.static_class(): game_override_class = setting.soft_game_mode_override
再試一次,提交成功并渲染完成了。
使用腳本提交渲染
1.首先創建Deadline Job Preset
import unreal presets_name = 'my_seq_deadline_presets' path = '/Game/Sequencer/Presets' asset_tool = unreal.AssetToolsHelpers.get_asset_tools() # 創建Deadline任務預設 presets = asset_tool.create_asset(asset_name=presets_name, package_path=path, asset_class=unreal.DeadlineJobPreset, factory=unreal.DeadlineJobPresetFactory())

2.修改deadline任務參數,并保存。
# 修改一些任務參數 presets.job_preset_struct.name = 'My Test Preset' presets.job_preset_struct.comment = 'This is a test preset...' presets.job_preset_struct.priority = 100 presets.job_preset_struct.group = 'unreal' # 保存 unreal.EditorAssetLibrary.save_asset(presets.get_path_name(), True)

3.創建渲染設置
presets_name = 'my_seq_render_presets' path = '/Game/Sequencer/Presets' # 創建渲染設置 render_config = asset_tool.create_asset( asset_name=presets_name, package_path=path, asset_class=unreal.MoviePipelinePrimaryConfig, factory=unreal.MoviePipelinePrimaryConfigFactory() )

4.修改渲染設置
# 輸出路徑 output_path = r'D:\test\test_ue_output\{version}' # 獲取輸出設置對象 output_setting = render_config.find_or_add_setting_by_class(unreal.MoviePipelineOutputSetting) # 修改一些輸出設置 output_setting.output_directory = unreal.DirectoryPath(output_path) output_setting.file_name_format = r'{sequence_name}_lay_{version}.{frame_number}' output_setting.use_custom_frame_rate = True output_setting.output_frame_rate = unreal.FrameRate(numerator=24000, denominator=1001) output_setting.output_resolution = unreal.IntPoint(1920, 1080) # 添加渲染格式 render_config.find_or_add_setting_by_class(unreal.MoviePipelineImageSequenceOutput_EXR) # 添加延遲渲染設置 render_config.find_or_add_setting_by_class(unreal.MoviePipelineDeferredPassBase) # 保存 unreal.EditorAssetLibrary.save_asset(render_config.get_path_name(), True)

5.在Movie Render Queue
里添加Sequencer
渲染任務。
# 創建一個新的渲染任務 new_job = pipeline_queue.allocate_new_job(unreal.MoviePipelineDeadlineExecutorJob) # 設置level level_path = "/Game/testaa.testaa" level_asset = unreal.SoftObjectPath(level_path) new_job.map = level_asset # 設置Sequencer sequence_path = "/Game/my_seq.my_seq" level_sequence = unreal.SoftObjectPath(sequence_path) new_job.sequence = level_sequence # 任務名稱 new_job.job_name = 'my_seq'

6.指定config
和job preset
new_job.job_preset = presets new_job.set_configuration(render_config)

到這里就設置完成了,點擊渲染即可。
參考文檔
deadline文檔如何在UE中配置插件 https://docs.thinkboxsoftware.com/products/deadline/10.3/1_User%20Manual/manual/app-unreal-engine-5.html
如何將影片渲染隊列用于高質量渲染 https://dev.epicgames.com/documentation/zh-cn/unreal-engine/rendering-high-quality-frames-with-movie-render-queue-in-unreal-engine?application_version=5.0#renderinglocallyversusremotely
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
全文完
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.