如何在 Unreal Engine 4 中获取帧缓冲区?
How to get framebuffer in Unreal Engine 4?
我使用虚幻引擎作为模拟服务器。现在我可以通过 UDP 从 Python 客户端和 transmit/receive 数据连接到它。但是我仍然没有找到合适的方法来捕获帧并将其流式传输到 Python 客户端以在 OpenCV 中进行处理。
我试过截图保存到文件,但是这种方式太慢了。
我也尝试渲染到纹理目标,但这对我来说也不是最佳方式,因为我需要渲染 2 次(相机和 2d 捕获器)。
现在我找到了一种访问 Vulkan 帧缓冲区的方法(我在 Linux),但我找不到任何文档或示例以及如何操作。
如何在自定义 C++ actor 中获取原始帧缓冲区字节数组?
您要查找的内容在 unreal engine 中称为渲染目标和场景捕获。
无法为您提供如何将这些信息从 ue4 导出到您的 python 应用程序的确切代码,因为我不太清楚您到底需要什么,但也许是一个好的开始搜索引擎代码。
教程设置渲染目标
https://docs.unrealengine.com/en-US/Engine/Rendering/RenderTargets/index.html
我很确定您能够从 gpu 查询帧缓冲区/渲染目标纹理并在 C++ 中读取它们。然后将其传递给您的应用程序。
unreal engine 也不支持直接在进程之间访问 gpu 资源。我知道使用渲染目标太慢了,也许可以看看 UE4 中的 twitch 流插件以找到他们的流式传输快速解决方案。
您好,您实际上可以从委托访问此信息:FSlateApplication::Get().GetRenderer()->OnBackBufferReadyToPresent() 这将在框架准备就绪时调用,它将 return渲染的 SWindow 的指针和包含实际后备缓冲区的 FTexture2DRHIRef,拥有 RHI 纹理是您捕获字节的机会。
UE 已经有一个 class 在他们的实现中为他们使用 iPad 的虚拟相机做你想做的事情。它称为 FFrameGrabber,您可以使用它,或者如果您需要更复杂的东西,您可以查看如何实现 OnBackBufferReadyToPresent 委托
我使用虚幻引擎作为模拟服务器。现在我可以通过 UDP 从 Python 客户端和 transmit/receive 数据连接到它。但是我仍然没有找到合适的方法来捕获帧并将其流式传输到 Python 客户端以在 OpenCV 中进行处理。
我试过截图保存到文件,但是这种方式太慢了。
我也尝试渲染到纹理目标,但这对我来说也不是最佳方式,因为我需要渲染 2 次(相机和 2d 捕获器)。
现在我找到了一种访问 Vulkan 帧缓冲区的方法(我在 Linux),但我找不到任何文档或示例以及如何操作。
如何在自定义 C++ actor 中获取原始帧缓冲区字节数组?
您要查找的内容在 unreal engine 中称为渲染目标和场景捕获。
无法为您提供如何将这些信息从 ue4 导出到您的 python 应用程序的确切代码,因为我不太清楚您到底需要什么,但也许是一个好的开始搜索引擎代码。
教程设置渲染目标 https://docs.unrealengine.com/en-US/Engine/Rendering/RenderTargets/index.html
我很确定您能够从 gpu 查询帧缓冲区/渲染目标纹理并在 C++ 中读取它们。然后将其传递给您的应用程序。
unreal engine 也不支持直接在进程之间访问 gpu 资源。我知道使用渲染目标太慢了,也许可以看看 UE4 中的 twitch 流插件以找到他们的流式传输快速解决方案。
您好,您实际上可以从委托访问此信息:FSlateApplication::Get().GetRenderer()->OnBackBufferReadyToPresent() 这将在框架准备就绪时调用,它将 return渲染的 SWindow 的指针和包含实际后备缓冲区的 FTexture2DRHIRef,拥有 RHI 纹理是您捕获字节的机会。
UE 已经有一个 class 在他们的实现中为他们使用 iPad 的虚拟相机做你想做的事情。它称为 FFrameGrabber,您可以使用它,或者如果您需要更复杂的东西,您可以查看如何实现 OnBackBufferReadyToPresent 委托