UE4-VIrtualCamera2.0源代码浅析

VirtualCamera是虚幻引擎中的工程示例项目。虚幻引擎4.26版本中将其升级到了2.0(Beta版本),功能和UI都全面更新(如图1-1所示)。虚拟摄像机在虚幻引擎中驱动电影摄像机(Cine Camera),它能够将结果输出到各种外部设备中。我使用它主要用来拍摄镜头预演。 演示连接:https://www.bilibili.com/video/BV195411w75h/ 图1-1 VirtualCamera如何在输出上覆盖自定义的UMG控件 我这边采用的是“BlackMagic”采集卡(型号:)通过SDI线将画面传输到监视设备。根据引擎自带的“BlackMagic”插件是能够将画面采集并输出到监视设备的,但并不能将“UMG”控件采集并输出。“VirtualCamera”中可以实现这样的功能。下面简单分析一下这一块的逻辑是如何执行的。 UMG是在Vcam组件属性中OutputPrivider中指定的,打开源码找到对应的文件 VcamOutputProviderBase.h。简单阅读一遍后很容易就能发现逻辑是从初始化函数“Initialize()”开始执行的,经过一系列判断后一次执行“Acitvate()”、“CreateUMG()”和“DisplayUMG()”。具体代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 void UVCamOutputProviderBase::CreateUMG() { if (!...

五月 3, 2021 · Imrcao

20191004-UE4C++实现异步批量加载资源

目的:异步加载指定路径下的所有Texture2D资源,并将它们显示到WIdget的Image上,每隔一定时间更新一次图片。 知识点包括:1、获取UI组件,2、获得场景中的Actor,3、实现异步批量加载资源,4、UE4定时器使用 一、分别创建继承自UUserWidget和AActor的C++类,UWealthWidget和AWealthActor。 基于UWealthWidget创建一个蓝图UWealthWidget_BP,在蓝图控件中创建Image命名为TexImage。 二、回到VS中,UWealthWidget.h中代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #pragma once #include "CoreMinimal.h" #include "Blueprint/UserWidget.h" #include "WealthWidget.generated.h" class UImage; class UOverlay; UCLASS() class FRAMECOURSE_API UWealthWidget : public UUserWidget { GENERATED_BODY() public: //利用UE4反射机制获得UMG中的控件,这里的名字一定要和蓝图中创建的Image的名字一致。 UPROPERTY(Meta = (Bindwidget)) UImage* TexImage; public: //重载父类的初始化函数 virtual bool Initialize() override; //加载2D图片 void AssignTexture(UTexture2D* InTexture); }; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 UWealthWidget....

六月 4, 2019 · Imrcao

Slate定制样式

一:Slate定制样式 (一)预期效果:用Slate写一个控件,它的样式所用的美术资源默认是从本地加载的,创建一个SlateWidgetStyle能够从项目中加载美术资源(Content文件夹下的资源)。 如下图所示,用slate写的控件可以像UMG一样很容易的设置美术资源。 (二)实现步骤:(开始前已经用Slate写好了一个控件) (1)、创建C++类:MySlateWidgetStyleContainerBase(类创建好后UE4会报错,不用管它,重启一下就好了) (2)、自己定义类的名称和路径后,在VS中打开 1 2 在.h文件中,如下图: 后面创建 SlateWidgetStyle的时候,会选择下面这个类创建。 FMyWidgetStyle是一个结构体,如下图所示: 1 2 在.cpp中有结构体FMyWidgetStyle中函数的相关实现,如下图: (3)获取样式。slate样式制作好后,就是如何获取到FMyWidgetStyle。 在负责生成具体控件的类中获取slate样式FMyWidgetStyle。(最后创建slate样式的时候,样式的名称一定要和这里的名称“MyWidgetStyle_BP”一样。而且需要在指定的目录下创建,具体的路径是在负责slate样式的类中指定的。) (4)在UE4插件自己生成的负责控件样式的类中,更改资源的加载方式,如下图所示: (一定要在指定的路径下创建slate样式) (5)、编译代码,启动程序。在UE4中指定的路径下创建slate Widget Style:单击右键->选择UserWidget->选择slate Widget style。在弹出来的对话框中选择,我们自己创建的C++样式类:UTaskWidgetStyle (6)最后自己添加美术资源进行测试:

六月 3, 2019 · Imrcao