Unreal Engine - 自动截图

Unreal Engine - Taking screenshots automatically

我有一组表示相机位置的变换矩阵。我想用这些来截取许多屏幕截图(数千张)。

我想按如下方式执行:

  1. 从数组读取转换
  2. 将相机放在需要的地方
  3. 截图(自动)
  4. 转到 1。

我创建的蓝图如下:

使用此蓝图,unreal engine 崩溃,我认为这是由于循环试图 运行 低于 1 帧。

如何正确截取这些自动截图?

PS: UE 新手。

不管崩溃问题如何,您可能不得不限制自己每帧只能截取一个屏幕截图,因为您需要在截取屏幕截图之前让渲染器有时间更新新的相机角度。

所以我建议在你的蓝图上有一个索引变量,并且你的每一帧:

  1. 截图
  2. ++索引
  3. 如果索引>=CameraTransforms.Count,退出
  4. 否则,将相机设置为 CameraTransforms[Index]

那就等下一帧吧。我建议先截取屏幕截图的原因是,您可以给 game/render 线程时间来更新您在最后一帧结束时设置的最后一个相机变换。

希望对您有所帮助! P.s。您可能想查看 Sequencer,特别是 rendering out videos。工作流程与我上面概述的大致相同,但您可以跳过屏幕截图步骤并渲染出图像序列。我没有完整的端到端解决方案供您使用,只是提出一个想法供您研究。

您应该在调用之间使用合理的延迟,足以保存文件。

不要使用 for 循环,因为它会导致阻塞调用太多操作。

这里有一些应该有用的东西:

Blueprint graph

调用“开始”一次,然后调用“下一步”。 “Take next”是递归的,所以在这之后,你只需要等待所需的时间,直到所有图像都制作完成。

您也可以考虑使用“文件存在”节点,检查您要制作的屏幕截图是否已经制作,如果是则跳过。这样即使中途崩溃了,也不需要全部重新截图。