Bootstrap

ue4cmd怎么调用_[UE4,automation]UE4批渲染cmd篇

之前做项目的过程中,有一部分工作是在UE4里制作输出小短片。由于要完成的量比较大,所以研究了一些批渲染的方法。

逻辑上跟以前在maya里用batch render差不多,不过UE4这边的设置相对繁琐一点点。

本文讲解了在不打开UE4软件的前提下,批量输出预先设置好的sequence序列 的方法。

文章内容粗浅简单,权当抛砖引玉了。

注意:本文调用的是"/Script/MovieSceneCapture.AutomatedLevelSequenceCapture",也就是相当于4.24及以前版本中,在sequence面板里点击render moive一样。 跟4.25更新的movie render queue无关。

为什么要用cmd做批渲染:

我们已经知道UE4.25中更新了非常好用的movie render queue工具,质量高而且方便自定义和输出。 奈何UE更新速度之迅猛,应该有不少项目还没切到4.25 ,还用不了render queue。

另外,在cmd指令里配置多任务,编辑效率和方便性我个人用下来是感觉比render queue高的,而且可以通过开动小脑筋实现简单的分布式渲染。让局域网内的多台机器同时处理一批序列。比如说我一共要渲20个序列,有四台肉鸡,那么可以每台肉鸡自动分5个去渲。

所以,总的来说,研究下怎么用cmd做批渲染,依然有用武之地;而且灵活性便利性都不错。

用cmd打开UE4地图:

我们先从基本的来——打开UE4项目里的某一张地图。

要打开某张地图的话,首先我们需要知道的信息是:

UE4Editor.exe 文件的位置

想要打开的地图所在的项目位置

所要打开的地图位置

比如说:

UE4Editor路径 —— "D:\Program Files\UE_4.24\Engine\Binaries\Win64\UE4Editor.exe"

项目路径—— "D:\Projects\UnrealProjects\renderMovieTest\renderMovieTest.uproject"

地图路径—— "D:\Projects\UnrealProjects\Test\Content\Maps\testLaunch"

其中UE4的项目路径可以用相对路径表示,为—— /Game; 所以地图路径可以写为“/Game/Maps/testLaunch”

然后我们新建一个txt文本文件,在文本中写入

"D:\Program Files\UE_4.24\Engine\Binaries\Win64\UE4Editor.exe" D:\Projects\UnrealProjects\renderMovieTest\renderMovieTest.uproject /Game/maps/shot0010

这样一串文本,ctrl+s 保存一下;再把txt文件的后缀改成bat。再双击运行这个bat,你就可以看到我们的UE4启动了,并且正在打开我们指定好的那张图。目标达成。

聪明的朋友可能会在琢磨一件事,就是为什么UE4Editor路径 加了双引号,而另外两个路径没有加双引号呢?

因为cmd命令,基本上是在玩字符串,每一条字符串就是一条command,而在cmd里输入的绝大多数字符,都会被理解成字符串,不管你有没有加 单引号 或者 双引号。而字符串的分隔就是用空格或者回车的。

也就是说 D:\Projects\UnrealProjects\renderMovieTest\renderMovieTest.uproject 这一条路径,在cmd里实际上是一个字符串,是一条command,而D:\Program Files\UE_4.24\Engine\Binaries\Win64\UE4Editor.exe 因为路径里有空格,所以会被理解成两条字符串—— D:\Program 和Files\UE_4.24\Engine\Binaries\Win64\UE4Editor.exe。

这当然不是我们想要的结果,我们需要把这两条字符串当成一个command来处理,这个时候就需要用双引号把这个路径括起来,这样,其中的空格也会理解成字符串的一部分。

也就是说,任何没有空格的一条字符串,你都可以不加双引号(也可以加)。而如果出现了空格,就必须加双引号。

用cmd渲染一个序列:

在上一节打开一张地图的基础上,我们只要继续加一些指令就可以渲染了。

其中必须要加的一条是: -MovieSceneCaptureType="/Script/MovieSceneCapture.AutomatedLevelSequenceCapture"

这条可以让我们使用渲染相关的各种cmd指令。

然后需要定义需要渲染的sequence文件路径,这里需要加上-LevelSequence=:

-LevelSequence="/Game/Sequence/testRende02"

另外我们还需要指定输出序列的文件夹位置,这里需要加上 -MovieFolder=:

-MovieFolder=&