UE4RenderTarget应用1——画布

1. 使用渲染目标绘画

绘制方法

为了确定在哪里绘制渲染目标,需要从摄像机向前画一条线。如果线条击中画布,可以在UV空间中得到击中位置。例如,如果画布是完美的UV映射,在中心的点击将返回值(0.5,0.5)。如果它击中右下角,将得到一个值(1,1)。然后可以使用一些简单的数学计算绘制位置

需要设置一个纹理作为参数,这样就可以传递渲染目标。为此,创建一个TextureSampleParameter2D并命名为RenderTarget。然后,将它连接到BaseColor。

创建RT

更好的方法是使用蓝图创建渲染目标。这样做的好处只需根据需要创建渲染目标,它们不会使项目文件膨胀。

首先,需要创建渲染目标并将其存储为变量以供以后使用。转到Blueprints文件夹并打开BP_Canvas。找到Event BeginPlay并添加

在这里插入图片描述

显示RT

目前,画布网格正在使用其默认材质。要显示渲染目标,需要创建M_Canvas的动态实例,并提供渲染目标。然后,需要将动态材质实例应用于画布网格:

在这里插入图片描述

创建笔刷材质

创建一个名为M_Brush的材质,然后打开它。首先,将***混合模式***设置为***半透明***。这将允许使用具有透明度的纹理。

就像画布材质一样,还将在蓝图中设置画笔的纹理。创建一个TextureSampleParameter2D并将其命名为BrushTexture

在这里插入图片描述

接下来要做的是创建画笔材质的动态实例,以可以更改画笔纹理。打开BP_Canvas
在这里插入图片描述

将画笔绘制到渲染目标

创建一个新函数并将其命名为==DrawBrush==。首先,需要使用纹理、画笔大小和绘制位置的参数。创建以下输入:

  • BrushTexture:将类型设置为Texture 2D
  • *BrushSize:*将类型设置为float
  • DrawLocation:将类型设置为Vector 2D

计算绘制位置是一个两步过程。首先,需要缩放DrawLocation以适应渲染目标的分辨率。为此,请将 DrawLocationSize相乘。

默认情况下,引擎将使用左上角作为原点绘制材质。这将导致画笔纹理不会以要绘制的位置为中心。要解决此问题,需要将BrushSize除以2,然后减去上一步的结果。

最后,需要告诉引擎要停止绘制渲染目标。添加一个End Draw Canvas 到 Render Target节点在这里插入图片描述

来自相机的线路追踪

在画布上绘画之前,需要指定画笔纹理和大小。转到Blueprints文件夹并打开BP_Player。然后,将BrushTexture变量设置为T_Brush_01并将BrushSize 设置500。这会将画笔设置为大小为500×500像素的猴子图像。接下来,需要进行线路跟踪。找到InputAxis Paint并创建以下设置:
在这里插入图片描述

现在需要检查射线是否碰到画布。
在这里插入图片描述

Find Collision UV节点工作之前,需要更改两个设置。首先,转到LineTraceByChannel节点并启用Trace Complex

在这里插入图片描述

其次,转到Edit\Project Settings,然后转到Engine\Physics。启用Support UV From Hit Results,然后重新启动项目。
在这里插入图片描述

更改画笔大小

打开BP_Player并找到InputAxis ChangeBrushSize节点。此轴映射设置为使用鼠标滚轮。要更改画笔大小,需要做的就是根据Axis Value更改BrushSize。为此,请创建以下设置:

在这里插入图片描述

更改画笔纹理

首先,需要一个数组来保存玩家可以使用的纹理。打开BP_Player,然后创建一个数组变量。将类型设置为Texture 2D并将其命名为Textures

在这里插入图片描述

接下来,需要一个变量来保存数组中的当前索引。创建一个整数变量并将其命名为CurrentTextureIndex

接下来,需要一种循环浏览纹理的方法。在本教程中,我设置了一个名为NextTexture的动作映射设置为right-click。每当玩家按下此按钮时,它应该更改为下一个纹理。为此,请找到InputAction NextTexture节点并创建以下设置:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JMXIN422

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值