本文是《Unreal Engine 4 渲染目标(Render Target)教程之 使用渲染目标绘制》的下半部分,上半部分请见《Unreal Engine 4 渲染目标(Render Target)教程之 使用渲染目标绘制(上)》
作者|Tommy Tran Jun 18 2018 | 翻译 开发游戏的老王

文章目录

  • 用笔刷在渲染目标上绘制
  • 摄像机射线检测
  • 修改笔刷大小
  • 修改笔刷纹理

用笔刷在渲染目标上绘制

创建新的函数并命名为DrawBrush。首先,为笔刷纹理、笔刷大小以及绘制位置设置参数:

  • BrushTexture: 类型Texture 2D
  • BrushSize: 类型float
  • DrawLocation: 类型Vector 2D

在用笔刷绘制之前,实现如下连接,一定把Parameter Name设为BrushTexture


接下来,创建如下高亮节点,就可以在渲染目标上绘制了:

Begin Draw Canvas to Render Target节点会告知引擎我们要在某个渲染目标上开始绘制了。 Draw Material允许我们以指定的位置、大小和旋转来绘制材质。

计算绘制的位置需要两个步骤。首先,我们需要缩放DrawLocation来适应渲染目标的分辨率。将DrawLocation乘以Size就可以了:

默认情况下,引擎以左上角为原点绘制材质,这使得笔刷纹理就不在目标位置的中央了。所以,我们得把BrushSize除以2,然后从先前的步骤中减去这个结果:


接下来,完成如下链接:


最后,我们得告诉引擎什么时候结束绘制。按如下连接添加End Draw Canvas to Render Target 节点:


这样,只要调用DrawBrush,它就会先为BrushMaterial 设定指定的纹理,然后将BrushMaterial按指定的位置和大小绘制到RenderTarget上。

以上就是绘制函数。点击编译然后关闭BP_Canvas。下面就该实现从摄像机发出射线,并且当射线和平面发生碰撞就绘制的功能了。

摄像机射线检测

绘制到画布之前,我们要先指定笔刷纹理和大小。在Blueprints文件夹中打开BP_Player。然后将BrushTexture设为T_Brush_01并将BrushSize设为500。本例中笔刷纹理被设为猴子图片,大小为500×500像素。

接下来,进行射线检测。定位到InputAxis Paint节点并创建如下连接:


于是,只要玩家按下Paint事件的绑定按键(本例中为鼠标左键),射线就会沿摄像机的前方向检测了。

接下来我们要检查射线是否碰到了画布。添加如下节点:


这样,如果射线碰到了画布,DrawBrush函数就会以给定的笔刷参数和UV坐标执行。

想让Find Collision UV正常工作,我们得做两个设置。在LineTraceByChannel节点上开启Trace Complex


接下来Edit\Project SettingsEngine\Physics开启Support UV From Hit Results,然后重启项目。

重启完毕,点击Play然后按住左键就开始绘制了。

我们甚至可以创建多个画布并且分别绘制。因为每个画布都可以动态为自己创建渲染目标。

在下面的章节,我们将实现让玩家修改笔刷大小得功能。

修改笔刷大小

打开BP_Player定位到InputAxis ChangeBrushSize节点。这个轴事件(Axis)被绑定到了鼠标滚轮上。要修改笔刷大小,只需要让BrushSize的值依赖Axis Value就可以了。如下图创建连接:

每次玩家使用鼠标滚轮BrushSize都会增加或减少。上图的乘法节点会决定加/减的速度。为了安全度量,我们使用了一个Clamp (float) 来确保笔刷大小在0到1000之间。

点击编译并回到主编辑器。使用鼠标滚轮调整一下笔刷大小。

最后的章节,我们将实现玩家修改笔刷纹理的功能。

修改笔刷纹理

首先,我们需要一个数组来存储玩家可选的纹理列表。打开BP_Player然后创建一个array变量,将其类型设为Texture 2D并命名为Textures

Textures中添加3个元素。并分别设置为:

  • T_Brush_01
  • T_Brush_02
  • T_Brush_03


这几个都是玩家可选的纹理,想要更多的纹理只需要把它们添加到数组就可以了。

接下来,我们需要一个变量来存储数组索引。创建一个整型变量并命名为CurrentTextureIndex

接下来,我们需要一种循环选择纹理的方法。本教程中,我们在输入设置中将右键点击设为NextTexture。玩家按下这个按键,就会切换到下一个纹理。定位到InputAction NextTexture节点创建如下连接:

这样每次点击右键CurrentTextureIndex 都会加1.如果索引到头了,就会被重置为0.最终BrushTexture会被设置为对应的纹理。

点击编译并关闭BP_Player。点击Play并按下鼠标右键就可以循环选择纹理了。

Unreal Engine 4 渲染目标(Render Target)教程 之 使用渲染目标绘制(下)相关推荐

  1. 【学习笔记】Unreal Engine 4 虚幻引擎蓝图中级教程物理碰撞教程

    教程链接:Unreal Engine 4 虚幻引擎蓝图中级教程物理碰撞 想共享的小伙伴可以E-mail我:lxbcolorgalaxy@qq.com 目录 第一章 常见的物理现象及分析 1蓝图模板中的 ...

  2. ArcGIS Maps SDK for Unreal Engine通过UI方式显示地图教程

    前言 一个 UE 项目,可以包括多个关卡(level),关卡可以在菜单栏中新建(文件->新建关卡). 使用快捷键 Ctrl+S 可以保存当前关卡,你可以保存到上面提到的演示文件放置的位置,你可以 ...

  3. Unreal Engine 4(UE4)下载教程

    首先登陆到UE官方网站https://www.unrealengine.com  下载EpicGamesLauncherInstaller-2.1.3-2533468.msi文件 按照提示进行安装 如 ...

  4. pyecharts源码解读(10)渲染包render之templates目录:渲染模板

    当前pyecharts版本为1.9.0 概述 render包结构 render包位于pyecharts包顶级目录中,用于渲染图表.render包结构如下: ├─render # 渲染设置包 │ │ d ...

  5. 深度学习和目标检测系列教程 19-300:关于目标检测AP、IoU和mAP简介

    @Author:Runsen R-CNN 和YOLO等对象检测模型,使用了平均精度 (mAP).mAP 将真实边界框与检测到的框进行比较并返回分数.分数越高,模型的检测就越准确. Precision ...

  6. 什么是渲染目标(render target) 渲染到纹理(Render To Texture, RTT)详解

    渲染到纹理(Render To Texture, RTT)详解 RTT是现在很多特效里面都会用到的一项很基本的技术,实现起来很简单,也很重要.但是让人不解的是网上搜索了半天只找到很少的文章说这个事儿, ...

  7. UNREAL ENGINE 4.13 正式发布!

    这次的版本带来了数百个虚幻引擎 4 的更新,包括来自 GitHub 的社区成员们提交的 145 个改进!感谢所有为虚幻引擎 4 添砖加瓦贡献的人们: alk3ovation, Allegorithmi ...

  8. keyshot渲染图文教程_KeyShot渲染教程,KeyShot渲染基础教程步骤图文详解

    KeyShot渲染教程,KeyShot渲染基础教程步骤图文详解 KeyShot渲染教程,在我们导入了项目之后,接着我们就要输出图片或者动画了.这里有许多动态的方式来完成,在开始渲染之前,我们来设置我们 ...

  9. Vue3官网-可复用组合式API(十四)实例 property(\$slots,\$attrs)、渲染函数render(虚拟节点VNode,h() 参数,使用JavaScript代替模板功能),插件

    Vue3官网-可复用&组合式API(十四)实例 property($slots,$attrs).渲染函数render(虚拟节点VNode,h() 参数,使用JavaScript代替模板功能), ...

最新文章

  1. pip: command not found 一系列报错
  2. 理论塔板数 matlab,matlab作图法计算精馏理论板数
  3. 公司的个性制度与团队精神
  4. 数据结构与算法实验题 4.2 Who is the strongest
  5. 三菱GXWorks2 绘制梯形图
  6. android 连接电视,手机连接电视方法大全
  7. 安卓6.0获取相机权限
  8. linux c语言 修改mac地址,C语言根据MAC地址查找网卡并修改IP地址
  9. Mysql数据库——高阶语句(上)
  10. win10系统安装到服务器失败怎么回事,U盘安装win10系统失败,提示Windows无法安装怎么办...
  11. matlab动态图阿基米德螺旋,魔兽世界M基尔加丹阿基米德螺旋线之Matlab动图!国服加油...
  12. Single-stage目标检测网络YOLO相关背景知识
  13. 【模型评价指标】分析模型评价常用指标
  14. HTML一键打包APK工具_安卓app封装_H5打包安卓APP
  15. 线性代数【7】 向量和线性相关性
  16. 有趣的汉语:同音文(二):《施氏食狮史》
  17. 企业6S现场管理推行成功的关键
  18. php阿拉伯数字转汉字,php 阿拉伯数字转中文汉字
  19. 关于Flurry的一些用法
  20. 信息系统项目管理师(2022年)—— 重点内容:项目成本管理(7)

热门文章

  1. rook 排错记录 + Orphaned pod found kube-controller-manager的日志输出
  2. 使用wait函数获取子进程终止状态
  3. 【SPRD CAMERA】1 HAL层初始化流程
  4. 复旦非全日制研究生计算机,信息整合!复旦大学非全日制研究生招生详情
  5. 内网渗透测试:域内权限维持思路总结
  6. USB3014-应用程序开发
  7. CSS选择器 :first-of-type/:last-of-type/ :first-child/:last-child 用法
  8. ctc center-loss在字符识别形近字分类中的使用
  9. 知识图谱学习资料汇总
  10. 安霸Ambarella CV系列芯片