IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> UE4运行时虚拟纹理教程【RVT】 -> 正文阅读

[游戏开发]UE4运行时虚拟纹理教程【RVT】

运行时虚拟纹理(RVT)是虚幻引擎4.23版开始提供的一项功能,它可以在运行时使用GPU按需生成和缓存纹理数据。借助此功能,材质可以直接绘制到材质编辑器中的运行时虚拟纹理 (RVT),以及对 RVT 纹理进行采样。

在这里插入图片描述

1、过去的解决方案

在虚幻引擎中引入运行时虚拟纹理之前,通常使用Render Target来实现地形混合和景观变形系统。Render Target是可以在运行时绘制的纹理。可以使用蓝图代码将形状和材质绘制到特定纹理。Render Target要求所有材质都是addtive类型,以便它们可以在相同的纹理中相互绘制。将所有内容绘制到纹理后,需要通过在蓝图代码中调用"ClearRenderTarget 2D"节点来手动清除纹理,以便重置并再次启动该过程。此过程有时会导致闪烁问题。

Render Target有以下缺点:

  • 纹理尺寸有限
  • 要执行大量步骤才能完成绘制
  • 无法将大小和位置从命中点转换为Render Target的大小
  • 设置为不同掩码的通道数量有限(RGB 和 alpha 要求材料设置为AlphaComposite)
  • 不支持的照明
  • "世界位置"节点有时会返回意外值

与Render Target相比,运行时虚拟纹理的优势如下:

  • 支持较大的纹理分辨率(横向着色)
  • 无需蓝图即可将材质的图纸处理到纹理上
  • 适用于程序化图案和复合层状材料
  • 植被实例(用于贴花散射)
  • 可用于创建样条贴花类型效果
  • 将草地、岩石和水与景观融为一体,呈现自然外观

2、用RVT实现雪痕

让我们看看如何使用运行时虚拟纹理为角色创建雪迹。在本演示中,使用了Drawer材质和Receiver材质。

首先,转到"项目设置"。在"引擎>渲染>虚拟纹理"类别下,将"启用虚拟纹理支持"设置为 true。

在这里插入图片描述

然后在项目目录中创建名为"RVT"的运行时虚拟纹理资源:

在这里插入图片描述

转至Add New > Blueprint Class,在All Classes部分下搜索 RuntimeVirtualTextureVolume,然后选择它以创建名为"RVT_Volume"的新蓝图类。

在这里插入图片描述

打开"RVT_Volume"蓝图类,转到VirtualTextureComponent的详细信息选项卡,然后在"Virtual Texture"类别下,将"RVT"资源分配给Virtual Texture。

在这里插入图片描述

将"RVT_Volume"放在关卡中,然后缩放和旋转它以包含景观。完成此缩放是因为,如果景观超出体积边界,Drawer将停止渲染到 RVT。

在这里插入图片描述

现在,创建一个名为"M_Footprint"的封装材质,它将充当运行时虚拟纹理中的Drawer。Drawer将使用RadialGradientExponential 函数将一个圆输出到 RVT 基色输出中。

在这里插入图片描述

确保将RadialGradientExponential 函数连接到 RVT 的Opacity输出,以便在多个轨迹可以相互重叠的情况下实现平滑变形。封装的"Radius"和"Density"也可以通过创建两个标量参数并将其连接到RadialGradientExponential函数中的相应输入引脚来调整。

在这里插入图片描述

创建一个名为"M_Snow"的景观材质,该材质将充当运行时虚拟纹理中的Receiver。Receiver将采样"RVT"资源,使用其 BaseColor 在"Snow Color"和"Ground Color"之间线性插值,并将其连接到材质的"Base Color"输出。

在这里插入图片描述

在景观材质的详细信息选项卡的"Tessellation"类下,将"Tessellation Mode"设置为"PN Triangles",将"Maximum Displacement"设置为任何正值(例如:256),并将"Crack Free Displacement"设置为 true,以便在材质中启用"World Displacement"和"Tessellation Multiplier"输出。

在这里插入图片描述

RVT 样本中的 BaseColor 与沿顶点法线的名为"Height"的标量参数一起使用,以便达到可变形雪面的高度。在这里,应为Tessellation Multiplier应用一个正值,以便在游戏中实现世界位移的可见性。

在这里插入图片描述

将材料"M_Snow"应用于景观。

在这里插入图片描述

现在,让我们来看看如何在角色行走时获得雪的变形。

打开角色蓝图,放置两个"Add Static Mesh Component"节点,并将其Relative Transform连接到角色双脚的套接字位置。这可以通过与事件 Tick 连接来调用每一帧。
在这里插入图片描述

将"Add Static Mesh Component"节点的"静态网格体"和"材质"分别设置为"平面"和"M_Footprint"。

在这里插入图片描述

此外,将"碰撞预设"设置为"NoCollision"。取消选中"投射阴影",然后将"RVT"资源添加到渲染到虚拟纹理数组。将"虚拟纹理传递类型"设置为"仅虚拟纹理",以便在播放时看不到这些平面。
在这里插入图片描述

RVT 现在应显示为已应用接收器材质的景观。

为了避免在角色跳跃时创建轮廓线,在添加轮廓线平面网格之前,可以连接Branch节点以检查角色是否在行走。

在这里插入图片描述

在这里插入图片描述

检查字符速度是否大于零的条件可以使用AND节点与前一个条件联接,以避免在字符处于空闲状态时连续创建占用空间。
在这里插入图片描述

在这里插入图片描述

高度也可以通过Drawer材料进行控制。在"M_Footprint"材料中,将具有正值(例如:10)的名为"强度"的标量参数与径向梯度指数相乘,以获得所需的变形深度。请注意,Drawer的强度将限制为Receiver材料中设置的高度。假设Receiver是Drawer可以达到的最大高度乘数。
在这里插入图片描述

完成所有这些过程后,当玩家沿着雪面行走时,角色的雪迹将可见。
在这里插入图片描述

这个实现角色基本可变形雪迹的演示是使用虚幻引擎4.25制作的。该过程还可用于变形不同类型的表面,如沙子,泥土,水,草等。

请注意,蒙皮基元和动画基元不能用于渲染到 RVT。但是,运行时虚拟纹理允许执行许多以前可能仅限于呈现器目标的可能性。由于运行时虚拟纹理仍在开发中,我们希望虚幻引擎的未来更新中将提供许多功能。


原文链接:UE4运行时虚拟纹理 — BimAnt

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-12-14 16:17:43  更:2021-12-14 16:18:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 20:28:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码