Unreal Engine 4 渲染目标(Render Target)教程之 使用渲染目标绘制(上)
原文|《Unreal Engine 4 Tutorial: Painting With Render Targets》
作者|Tommy Tran Jun 18 2018 | 翻译 开发游戏的老王
阅读时长|15分钟 内容难度|入门级
本教程将介绍如何使用材质和渲染目标(Render Target)在模型上进行多样的绘制
文章目录
- 开始吧
- 绘制方法
- 创建画布材质
- 创建渲染目标
- 显示渲染目标
- 创建笔刷材质
简单来讲,渲染目标(Render Target)就是一种可以在运行时写入的纹理。从引擎的角度讲,渲染目标会存储颜色、法线以及AO等信息。
从用户的角度讲,渲染目标可以视为第二个摄像机。我们可以让一个scene capture组件指向某处,并将图像存储到一个渲染目标上。然后让渲染目标显示在模型上。我们可以用这个技术实现类似监控摄像机的效果。
在4.13版本以后,UE4允许用户通过蓝图直接在渲染目标上绘制材质。这个机制可以实现诸如流体模拟和雪痕等很多高级特效。听起来很刺激,是吧?然而在实现高级效果之前,最好还是先从简单的入手。
本教程中吗,我们将介绍:
- 使用蓝图动态创建渲染目标
- 将渲染目标显示到网格上
- 在渲染目标上绘制纹理
- 游戏中改变笔刷大小和纹理
注意:本教程假定读者已经掌握了Unreal Engine的基本用法。
注意:本教程渲染目标系列教程四部曲之一:
- 第一部分:使用渲染目标绘制 (当前位置!)
- 第二部分:可变形的雪(敬请期待)
- 第三部分:可交互的草(敬请期待)
- 第四部分:网格模型绘制(敬请期待)
开始吧
译者注: 本教程提供了范例工程,如果需要可以到原文网站免费注册并下载
下载并解压范例工程,找到CanvasPainterStarter文件夹,打开CanvasPainter.uproject。点击Play,你将会看到如下画面:
中间的方块(画布)就是我们要花花的地方。左边的UI就是绘制的材质。
接下来,咱们一起了解一下绘制原理。
绘制方法
首先,我们需要一个渲染目标作为画布。为了找到绘制渲染目标的位置,需要先沿着摄像机的前方朝向进行一下射线检测。如果射线碰到了画布,那么我们就可以获得撞击位置的UV坐标。
例如,假设画布的UV映射非常完美,那么射线撞击到其中心点将返回 (0.5, 0.5);如果撞击到其右下角将返回**(1, 1)**。使用简单的数学计算就可以通过撞击位置计算出UV坐标。
为什么使用UV坐标?为什么不使用实际的世界坐标?如果使用世界坐标,我们得先计算出撞击点和画布平面的相对位置,还得考虑画布平面旋转和缩放。
使用UV坐标,就无须这些计算了。在一个UV完美映射的平面,无论如何旋转缩放,其中心点的位置永远是 (0.5, 0.5)。
注:本篇教程中的方法一般仅用于平面或者类平面的表面。其它类型的几何体,将会使用一种更加高级的方法,我们将会在以后的教程中介绍它。
接下来,我们要创建显示渲染目标的材质。
创建画布材质
找到Materials文件夹,打开M_Canvas。
本教程中,我们会使用蓝图动态创建渲染目标。这就意味着,我们得设置一个纹理作为参数,并将它传给渲染目标。那么,创建一个TextureSampleParameter2D并命名为RenderTarget,然后将它连接到BaseColor。
别着急设定纹理,因为我们会在蓝图中做这事。点击应用,然后关闭M_Canvas。
下一步就是创建渲染目标,并在画布材质中使用它。
创建渲染目标
创建渲染目标的方法有两种。第一种是在编辑器中通过Add New\Materials & Textures\Render Target。这种方法允许我们在不同的actor之间引用相同的渲染目标。然而,如果有多个画布,我们就得为每个画布手动创建渲染目标了。
更好的办法就是使用蓝图创建渲染目标。优点就是需要的时候就创建并且不会增加你的项目文件。
来,我们创建一个渲染目标并将其保存起来备用。在Blueprints文件夹中,打开BP_Canvas。在Event BeginPlay上添加如下高亮的节点:
将Width 和Height 都设为1024。这样渲染目标的分辨率就是1024×1024。更高的值能够提升画质,同时也会消耗更多的显存。
接下来是Clear Render Target 2D节点,我们用它来设置渲染目标的颜色。将Clear Color设为 (0.07, 0.13, 0.06)。这样整个渲染目标会呈现绿了吧唧的颜色。
下面,我们让渲染目标显示到画布网格(canvas mesh)上。
显示渲染目标
当前,画布网格使用的是默认材质。要显示渲染目标,我们得创建M_Canvas的动态实例(dynamic instance)并使其支持渲染目标。然后,再把动态材质应用到画布网格上。按下图高亮所示连接节点:
将Create Dynamic Material Instance节点的Parent设为M_Canvas。这样就为M_Canvas创建了动态实例。
然后将Set Texture Parameter Value节点的Parameter Name设为RenderTarget。这样就把渲染目标传递给了刚才我们创建的纹理参数。
这时画布网格就会显示渲染目标了。点击编译并回到主编辑器,点击Play查看画布颜色变化。
现在画布有了,我们得创建一个材质当笔刷。
创建笔刷材质
在Materials文件夹中创建一个材质并命名为M_Brush。打开它,将Blend Mode 设为 Translucent。这样我们就可以使用带透明通道的纹理了。
和画布材质一样,我们也得在蓝图中为笔刷设置纹理。创建TextureSampleParameter2D并命名为BrushTexture。如下图连接节点:
点击应用,并关闭M_Brush。
接下来,创建笔刷材质的动态实例,这样就可以更改笔刷纹理了。打开BP_Canvas然后添加高亮节点。
将Create Dynamic Material Instance节点的Parent设为M_Brush。
笔刷材质搞定以后,我们需要实现将笔刷画到渲染目标上的函数。
Unreal Engine 4 渲染目标(Render Target)教程之 使用渲染目标绘制(上)相关推荐
- 【学习笔记】Unreal Engine 4 虚幻引擎蓝图中级教程物理碰撞教程
教程链接:Unreal Engine 4 虚幻引擎蓝图中级教程物理碰撞 想共享的小伙伴可以E-mail我:lxbcolorgalaxy@qq.com 目录 第一章 常见的物理现象及分析 1蓝图模板中的 ...
- ArcGIS Maps SDK for Unreal Engine通过UI方式显示地图教程
前言 一个 UE 项目,可以包括多个关卡(level),关卡可以在菜单栏中新建(文件->新建关卡). 使用快捷键 Ctrl+S 可以保存当前关卡,你可以保存到上面提到的演示文件放置的位置,你可以 ...
- Unreal Engine 4(UE4)下载教程
首先登陆到UE官方网站https://www.unrealengine.com 下载EpicGamesLauncherInstaller-2.1.3-2533468.msi文件 按照提示进行安装 如 ...
- pyecharts源码解读(10)渲染包render之templates目录:渲染模板
当前pyecharts版本为1.9.0 概述 render包结构 render包位于pyecharts包顶级目录中,用于渲染图表.render包结构如下: ├─render # 渲染设置包 │ │ d ...
- 深度学习和目标检测系列教程 19-300:关于目标检测AP、IoU和mAP简介
@Author:Runsen R-CNN 和YOLO等对象检测模型,使用了平均精度 (mAP).mAP 将真实边界框与检测到的框进行比较并返回分数.分数越高,模型的检测就越准确. Precision ...
- 什么是渲染目标(render target) 渲染到纹理(Render To Texture, RTT)详解
渲染到纹理(Render To Texture, RTT)详解 RTT是现在很多特效里面都会用到的一项很基本的技术,实现起来很简单,也很重要.但是让人不解的是网上搜索了半天只找到很少的文章说这个事儿, ...
- UNREAL ENGINE 4.13 正式发布!
这次的版本带来了数百个虚幻引擎 4 的更新,包括来自 GitHub 的社区成员们提交的 145 个改进!感谢所有为虚幻引擎 4 添砖加瓦贡献的人们: alk3ovation, Allegorithmi ...
- keyshot渲染图文教程_KeyShot渲染教程,KeyShot渲染基础教程步骤图文详解
KeyShot渲染教程,KeyShot渲染基础教程步骤图文详解 KeyShot渲染教程,在我们导入了项目之后,接着我们就要输出图片或者动画了.这里有许多动态的方式来完成,在开始渲染之前,我们来设置我们 ...
- Unreal Engine 4 渲染目标(Render Target)教程 之 使用渲染目标绘制(下)
本文是<Unreal Engine 4 渲染目标(Render Target)教程之 使用渲染目标绘制>的下半部分,上半部分请见<Unreal Engine 4 渲染目标(Rende ...
- Unreal Engine 4 渲染目标(Render Target)教程 之 实现雪地足迹(下)
本文是<Unreal Engine 4 渲染目标(Render Target)教程 之 实现雪地足迹>的第三部分 第一部分请见<Unreal Engine 4 渲染目标(Render ...
最新文章
- 基于OHCI的USB主机 —— 结束语
- give root password for maintenance 启动异常的解决
- Asp.Net中MVC缓存详解
- 操作系统第二章作业(2020@usc)
- Content Aware ABR技术
- kafka使用_kafka使用Interceptors实现消息端到端跟踪
- Linux网络编程——黑马程序员笔记
- 如何将h5网页改成微信网页
- [html] HTML为什么要语义化?语义化有什么好处?
- ASP.NET MVC5 与EF6学习系列
- 表单提交Post方法、Get方法
- 蓝桥杯评分标准_新闻 | 人工智能学院创新创业实践中心开展蓝桥杯国赛经验分享会...
- python gridview_Python笔记
- 教你如何在STM32中使用DSP指令
- 尝试Python的websockets库的最基础功能
- 【UI】关于如何画设计稿(基础篇)
- 尚学堂视频笔记五:IO流
- “应用程序配置不正确,程序无法启动”的解决方法资料收集
- linux+pid的管理,Linux 进程管理
- 投中5G+IoT时代的操作系统,TCL凭什么?