| |
|
开发:
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相比,运行时虚拟纹理的优势如下:
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 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |