UE4 中 Render Target的 用法

**

UE4 中 Render Target的用法

**

一, 用法

主要使用此指令实现在某个平面上进行绘画操作 或者实现 刮刮乐的效果,基本上都需要用到此方面的相关知识。

二, 使用流程

1, 先 定义一个 Canvas Render Target 2D , 可以理解为一个画布 RT。
2, 定义一个材质Mat_1。 这个材质中 我们将 Texture 部分设置为一个变量。后面我们将 画布和此材质进行绑定,画布作为材质中 Texture 的一个变量(此部分在后续蓝图中进行操作。)。

2, 在一个蓝图中 初始化的时候, Draw Material To Render Target 。 这一句指令 一开始很拗口,有点绕。但是从常识方面进行判断,个人理解。就是把 材质Mat_1 和 画布进行了一个绑定,如果理解为 把画布赋值给材质反而从逻辑上更好理解一些。
同时 ,还需要记得 将材质 设置为 动态材质实例。 这样后面才可以 随时更改 材质中的 变量
在这里插入图片描述
在这里插入图片描述

3, 在上一步绑定的基础上 ,我们 调用 Set Texture Paramter Value .
Target —————— Mat_1
Value ——————— RT
Paramter——————“Texture” : 这是一个字符串
直观上理解 就是 将 画布 赋值为 材质中 的变量 Texture 。画布上的变化 将会直接影响到材质的变化。

4,Panit 函数。 这是一个自定义功能函数。
核心思想:
(1) 鼠标左键按下的时候, 获取鼠标当前的点 和上一个时刻的点 ,做一个连线。
上面的蓝图函数 是对原来函数的重载。 主要做了两个工作。

  • 设置bool 变量,判断当前是否为按下状态。

  • 获取当前鼠标点击时, 在屏幕上的坐标点。

    (2) 调用 Draw Canvas to Render Target 和 End Canvas to Render Target
    在这里插入图片描述

在这里插入图片描述

(3)在 Tick 中进行调用。 根据bool 变量 ,调用 paint
paint 需要输入 两个坐标点 。一个是当前鼠标在屏幕上坐标点 ,另一个是鼠标按下的时候的 坐标点 last positon 。

在这里插入图片描述

(4) 材质的一些设置

在这里插入图片描述

因为此项目是要实现一个在三维场景中随时进行绘画的功能。实际上 是调用一个UMG . 在UMG 上贴了一张透明的图。 这张图的 材质设置 就是上面的箭头标注的地方。

小知识“:
Alpha 通道是透明度。值越大,就越不透明;范围是 0~255,即 255 是不透明,0是全透明。
当对应 RGB 颜色时,Alpha 会叠加到颜色上面;只有当 Alpha 通道是255时,才是其真正的颜色。比如 RGB = #FF0000 时,Alpha = 255,则才是全红,当Alpha 逐渐变小时,颜射也开始逐渐变淡,知道最后看不见为止。
有点不好理解,需要测试。

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用Cubemap Render TargetUE4 C++例子: 首先,你需要在UE4创建一个Cubemap Render Target。在Content Browser,右键点击并选择 "Material Render Target",然后选择 "Cubemap" 选项。你可以选择你想要的分辨率和采样率等选项,然后保存Render Target。 接下来,在你的C++类,你需要声明一个指向Cubemap Render Target的指针。在你的.h文件添加以下代码: ```c++ class ACubemapActor : public AActor { GENERATED_BODY() public: // Constructor ACubemapActor(); // Cubemap Render Target UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Cubemap") UTextureRenderTargetCube* CubemapRenderTarget; }; ``` 然后,在你的.cpp文件,你需要在构造函数初始化Cubemap Render Target指针。你还需要创建一个Scene Capture Component,并将其附加到Actor上。在这个Scene Capture Component,你需要将Cubemap Render Target设置为目标,并启用Cubemap渲染。以下是示例代码: ```c++ ACubemapActor::ACubemapActor() { // Create Cubemap Render Target static ConstructorHelpers::FObjectFinder<UTextureRenderTargetCube> CubemapRenderTargetObject(TEXT("/Game/MyCubemapRenderTarget")); CubemapRenderTarget = CubemapRenderTargetObject.Object; // Create Scene Capture Component USceneCaptureComponentCube* SceneCaptureComponent = CreateDefaultSubobject<USceneCaptureComponentCube>(TEXT("SceneCaptureComponent")); SceneCaptureComponent->RegisterComponent(); SceneCaptureComponent->AttachToComponent(RootComponent, FAttachmentTransformRules::KeepRelativeTransform); // Set Cubemap Render Target as Target SceneCaptureComponent->TextureTarget = CubemapRenderTarget; // Enable Cubemap Rendering SceneCaptureComponent->CaptureSource = ESceneCaptureSource::SCS_SceneColorSceneDepth; SceneCaptureComponent->bCaptureScenePerFrame = true; SceneCaptureComponent->bCaptureEveryFrame = true; SceneCaptureComponent->bCaptureOnMovement = false; SceneCaptureComponent->bCaptureRotation = false; SceneCaptureComponent->bCaptureReflectiveObjects = true; } ``` 现在,你可以在ActorMaterial使用Cubemap Render Target。只需创建一个使用Cubemap的材质,并将其应用于Actor的Mesh组件即可。以下是示例代码: ```c++ UMaterialInstanceDynamic* DynamicMaterial = UMaterialInstanceDynamic::Create(Material, this); DynamicMaterial->SetTextureParameterValue("CubemapTexture", CubemapRenderTarget); MeshComponent->SetMaterial(0, DynamicMaterial); ``` 这样,你就可以使用Cubemap Render Target来渲染你的场景,并将其用于材质

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值