1

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

我想按如下方式执行此操作:

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

我创建的蓝图如下: 在此处输入图像描述

使用这个蓝图,虚幻引擎崩溃,我认为这是由于试图在 1 帧下运行的循环。

如何正确拍摄这些自动截图?

PS:UE新手。

4

2 回答 2

2

无论崩溃问题如何,您都可能不得不将自己限制为每帧一个屏幕截图,因为您希望在截取屏幕截图之前让渲染器有时间使用新的摄像机角度进行更新。

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

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

然后等到下一帧。我建议先截取屏幕截图的原因是,您已经给了游戏/渲染线程时间来更新您在最后一帧结束时设置的最后一个相机变换。

希望有帮助!Ps 你可能想研究一下 Sequencer,并专门从中渲染出视频。工作流程与我上面概述的大致相同,但您可以跳过屏幕截图步骤并渲染出图像序列。我没有为您提供完整的端到端解决方案,如果您愿意,只是为您提供一个想法供您研究。

于 2021-12-14T00:25:25.540 回答
1

您应该在两次调用之间使用足够的延迟来保存文件。

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

这是应该起作用的东西:

蓝图图表

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

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

于 2021-12-15T18:45:58.297 回答