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轮廓描边【非后处理】 -> 正文阅读

[游戏开发]UE4轮廓描边【非后处理】

轮廓是在 3D 环境中突出显示对象的绝佳工具。到目前为止,我尝试过的大多数 Unreal 解决方案都是基于后处理 (PP) 技术来实现对象轮廓的。对我来说,PP 解决方案在行为和外观方面一直是最有效的。就个人而言,我最常使用Tom Looman的多色轮廓(和对象突出显示)方法。

不幸的是,PP 的问题在于它的成本,这对手机和笔记本电脑影响很大。如果你在做 VR,节省 PP 成本肯定也是一个好主意。

关于虚幻中 PP 轮廓的一些琐碎事实(此列表肯定不完整):

  • 最初,可以使用自定义深度缓冲区来在 PP 中生成轮廓。不幸的是,没有办法(据我所知)在 PP 中仅基于自定义深度来区分对象。这将轮廓限制为仅一种颜色(例如,无法区分对象)。
    随着虚幻引擎中自定义模板缓冲区的引入,可以创建多色轮廓,因为该缓冲区允许通过为对象分配模板值来区分对象。
  • 作为 PP 中生成的轮廓,很难根据虚拟环境中发生的情况创建自定义效果。这是因为大多数信息在 PP 域中不可用,和/或在那里获取它是困难和不方便的。
  • 即使你不显示轮廓或具有轮廓的对象,PP 仍然会在你的环境中增加其成本。

最近,Tom Looman 在他的网站上提到了一种无需使用 PP 即可实现轮廓的解决方案。基于他提供的信息,我给出了自己的实现,这适合我正在从事的项目。它的主要限制是我没有添加模糊效果来使轮廓 “更温和”。此外,这些轮廓实际上存在于你的环境中,因此它们会影响它(例如考虑反射捕获或类似的)。

2、逐网格轮廓技术

PP 轮廓材料使用 Sobel 边缘检测器以及基于用例的一些其他滤波器来计算轮廓。滤波处理的结果是一个“蒙版”,其中包含将着色的像素,以便在屏幕上获得轮廓。这种技术的想法是将轮廓材质从 PP 移动到基于每个对象应用的材质。

实际上,新的 Outline 材质将应用于我们要勾勒的网格周围的网格。这个外部网格上,除了绘制轮廓所需的像素之外其他所有像素都是透明的。

为了做到这一点,建议的解决方案使用了一个 Actor 组件,它可以添加到我们想要勾勒的 Actor 中。

一旦 Begin Play 触发,组件将

  • 检索在其Owner找到的所有静态网格(我们称它们为原始网格)
  • 创建它们的副本(我们将这些副本称为外部网格)。
  • 稍微放大它们,以便每个外部网格包含自己的原始网格(当前为 1.3 因子比例)
  • 为外部网格指定轮廓材质。
  • 使原始网格在自定义深度缓冲区上渲染。此步骤是必需的,因为轮廓材质将在自定义深度缓冲区上执行轮廓提取。

下图显示:

  1. 外部网格及其原始网格。
  2. 包围其原始网格的外部网格。
  3. 真实的设置,带有轮廓的对象。

在这里插入图片描述

上面图像用于说明外部网格的形状和比例,前两张图片中的缩放比例被夸大了以突出差异。

轮廓组件还提供了显示/隐藏大纲以及更改其颜色的工具。该工具目前在蓝图中实现,但我计划制作 C++ 版本并将其添加到 Magic Utilities 插件中。

3、轮廓材料

轮廓材质使用材质函数从自定义深度缓冲区中提取轮廓。材质函数看起来不太好,如果可能的话,我想用自定义节点或不同的实现来替换它。无论如何,有趣的是,一个自定义节点执行完全相同的操作可能不如当前材质函数优化,因为虚幻引擎优化了材质节点,但可能跳过了自定义节点内部代码的优化。

在这里插入图片描述

材质本身是相当基本的,产生一个简单的、非平滑/模糊的轮廓:

在这里插入图片描述

4、轮廓描边示例

最后,这里是一些工作实现的图片:
在这里插入图片描述

单个对象上的轮廓示例,单色

在这里插入图片描述

轮廓示例,在多个对象上,每个对象都有自己的颜色。

在这里插入图片描述

同样,多个对象,具有较粗的轮廓。

在这里插入图片描述

轮廓不是后期处理的,因此可以定制效果


原文链接: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
上一篇文章      下一篇文章      查看所有文章
加:2022-02-03 01:27:13  更:2022-02-03 01:27:20 
 
开发: 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 18:26:48-

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