发布于

虚幻引擎录制场景内视频

虚幻引擎录制场景内生成视频文件

UE录制场景内视频

通过OpenCV库的辅助,将连续的场景画面录制为视频并保存到磁盘上。本节和上一节一样,不可避免地用到了OpenCV作为第三方的依赖库。
为此,我们还是选择暂时降级到UE 4.27版本,并且希望Unreal官方能够尽快解决这个看起来显而易见的问题。为了包含必要的头文件,链接到OpenCV的.lib导入库,以及在运行时能够找到.dll动态库,我们沿用上一节中对于Build.cs这个文件的修改,依然是通过BuildWithOpenCV()这个自定义函数来完成对OpenCV库的添加。并且提前将动态库文件拷贝到工程的Binaries/Win64目录中,确保启动编辑器时可以自动找到对应的动态链接库文件。注意,opencv_videoio_ffmpeg460_64.dll这个文件一定也要拷贝到工程的Binaries/Win64目录中,它是视频编解码算法的实际功能依赖库,采用动态加载的方式在运行时被调用。要实现Unreal场景的画面截取。

我们需要用到经典的“渲染到纹理”方案:即,建立一个自己的摄像机(UCameraComponent)组件对象,设置它的位置、姿态以及FOV角度等属性,将这个摄像机的输出画面对应到一个特定的纹理对象(UTextureRenderTarget2D)上,然后从这个纹理对象中获取具体的像素数据并通过OpenCV输出。需要注意的是,Unreal中需要一个特别的功能组件USceneCaptureComponent2D来辅助进行画面的截屏。我们将这个截屏器对象绑定到摄像机之上,再把摄像机绑定给某个场景Actor的根组件,这样就可以同时实现截屏画面的预览和调整,以及具体截屏输出流程的执行了。我们首先需要在Unreal编辑器中创建一个新的Actor继承类,名为ScreenCapturer。
它需要额外包含的头文件主要有以下几项:
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include "Camera/CameraComponent.h"
#include "Components/SceneCaptureComponent2D.h"
#include "Engine/TextureRenderTarget2D.h"

链接:https://pan.baidu.com/s/1lJaQ37VypJc05xVTGIQNrQ?pwd=987e
提取码:987e

浏览 (579)
点赞
收藏
评论