
完成目标:在虚幻引擎中实时获取虚拟摄像机的镜头图像,并在GUI中显示,类似于赛车游戏中左右后视镜显示图像,或者摄像头实时采集图像信息显示在GUI界面中,或者在VR中实现摄像机的实时画面采集。
测试版本:4.26(多数版本都可通用)
需要用到的知识:
1、场景捕获组件2D(SceneCaptureComponent2D)
2、画布渲染目标材质(CanvasRenderTarget2D)
3、UI中的图像模块(image)
功能实现思路:想要实现获取虚拟摄像机图像并导入UI实时显示,就需要一个实时捕获画面并将其转换为动态材质的方式,通过场景捕获组件2D获得实时画面流,将渲染目标材质转换为普通材质,最后在GUI中创建图像,并为该模块赋予图像材质即可。
以下是操作步骤:
1.打开项目(本文以赛车模板为例)
2.打开赛车的actor蓝图
3.在赛车actor蓝图中点击左上角的添加组件中寻找场景捕获组建2D(SceneCaptureComponent2D),点击添加,然后再下方选中该组件,在右侧的细节面板——场景捕获——纹理目标中选择新建资产——画布渲染目标,创建一个新的材质并为其命名(记好创建的位置,下一步要用)。
4.在赛车actor蓝图中选择视口,并且调整这个摄像机的位置,摄像机采集到的图像取决于此处场景捕获组件2D(SceneCaptureComponent2D)actor放置的位置
5.回到主界面,找到刚刚创建的画布渲染目标材质位置,选中该材质并点击右键,创建材质
6.创建一个新的UI界面蓝图,并放入一个image模块,选中该模块并在右侧的外观-笔刷-图像中选中上一步新创建的材质,编译即可(如果显示黑色的话,需要双击打开该材质,并将材质的RGB和最终颜色节点在蓝图中连接起来)。
7.在关卡蓝图中创建UI显示蓝图,可参考此篇文章:https://www.gongyesheji.org/?p=1942

运行以后最终效果:

bilibili视频:待补充
最后,参考学习来自:https://www.youtube.com/watch?v=bMSE2RibLZQ&ab_channel=AidenWilson
这个链接下还是提供了很大的帮助,但是并不是完全参考,因为需求并不完全相同。
www.gongyesheji.org
20220408
那如果界面显示白色呢?是因为显卡太low了吗
界面如果现实的白色可以看看是不是缩放比什么的设置的不对,导致一个按钮被放大了几百倍这样……或者看看是不是正反面设置反了?正常应该不会白色
咦,啥时候艾伦开始做UE项目了,才发现,教我UE!!! 多来点,最好C++和蓝图都安排上