UE4_后期处理_后期处理材质四—场景物体描边

news2024/12/25 10:47:30

一、效果如下图:

二、分析:

回顾复习:在后期处理材质三中,我们通过计算开启自定义深度通道物体的像素点上下左右4个像素SceneTextureCustomDepth深度之和来判断物体的外部(包含物体的边)和内部,只有内部像素他的上下左右4个像素自定义深度之和才为有限值,边和外部都为无限大(这与没有自定义深度物体用无穷大填充有关),这样我们使用if语句就能判定它与无穷大的关系,从而让边和外部为描边颜色,内部为场景颜色。我们通过自定义模具得到物体外部为0内部为模具值的蒙版,这样我们可以用lerp节点,当为0时为场景色,而边和内部为上一步if语句的结果就可以了。

那么场景物体描边怎么来确定这个边呢?

边有什么特点呢?相信理解了场景深度、自定义深度和自定义模具知识的朋友们,会发现边的场景深度是不是悬殊很大?因为2个物体有间隔,所以两个物体的场景深度悬殊大,差值是不是很大?那么我们怎么得到这个差值呢?是不是边的上边像素减去边的下边像素是有很大的值?这能不能作为边的判定条件呢?

三、所涉知识点:

SceneTextureSceneDepth(场景深度)

场景深度图代表的意思是物体离摄像机越远数值就越大,离摄像机越近数字就越小越接近黑色 。测试如下图:

四、制作步骤:

1、当前像素的场景深度减去右下方像素的场景深度

根据我们的分析,如果我们把一张场景深度图减去偏移一个像素的深度图,那么在场景深度有断层的附近将会有数值相对较大的差值出现,我们就可以用这种方法得到场景的描边勾线 。

效果制作如下:

得到效果图如下:

画面有抖动,材质的可混合位置为色调映射前就解决这个问题了。

2、分析结果出现原因

上一步,我们运用之前偏移像素点的方法,以SceneTexelSize作为偏移单位,接着与保存UV各个像素点uv坐标的 ScreenPosition进行相加,然后输出给SceneTextureSceneDepth的UV来获得临近的场景深度,最后用原本的场景深度减去获得的结果,就得到了上面的结果。我会发现不是我们想要的结果。

从不同的角度去观察墙面会得到不同的效果,如下图:

为什么会出现这种情况呢?我们来分析一下:

先用场景深度图的变化来看看:

水平方向偏移50个场景文素单位后得到的图:

发现场景深度发生了移动,如果两者相减(调整下文素大小),会得到下图:

发现上图只是对左边的边就行了描边,而右边没有描边,文素大小不调整看看效果:

 如果还是不理解我们可以用具体的数值进行解释:

这是右边,你会发现都是正的。下面看看左边的具体数值,都是负的,就是黑色的。

3、场景物体边缘判断

这样我们得到了左边边缘的描边,要想得到右边就需要偏移方向相反,如果我们把它们加起来就得到了左右的边缘描边,如下图:

如果你对上面不理解,那么我们还是需要具体的数值来加深理解,如下图:

经过左右偏移相加之后,你会发现除了边缘为正的,其它都是为0或者为负的,也就是黑色。

同理,我们获得上下边缘的描边再加上去。

4、拓展

(1)但是这个描边勾线还不是最精确的,因为当在同一平面的场景深度时,线框就没了。

为了得到更精确的描边勾线,我们可以用SceneTextureSceneNormal(场景法线),可以让细小的凹槽部分(面的朝向不同)也能有颜色上的差异,而颜色的差异也就是数值上的差异。

同样用上面的方法再制作一遍(这边直接复制修改SceneTexture的ID就好了),然后会得到一个法线版本的描边勾线(注意最后除的5000是为了观察效果的,得去掉,否则一片黑)。

(2)遮罩范围内是真实的,另一边是线框的效果

就是用一个遮罩来判断使用场景纹理:postprocessinput0还是场景描边。这里需要用到一个蓝图节点spheremask,知识点如下:

SphereMask的参数

SphereMask有四个输入参数。

A:待检查的位置。

B:圆心的位置。

Radius:半径。

Hardness:硬度,0是完整过渡,100是没有过渡。

输出的是一个0~1之间的数。当A在B之外时,输出0,当A在B的位置时,输出1。A在园内时,输出0~1,具体取决于是否有硬度以及位置。

注意,A和B可以1~4维的vector。

我们可以在小白人蓝图中把小白人的位置传递给材质参数集中向量参数location,其为为B的输入,worldposition为A的输入,Radius为材质参数集中的标量参数,可以让它在3秒内,随着时间变化,让它作为Radius的输入。蓝图节点如下:

后期处理材质中:

小白人蓝图中:

材质参数集:

这样的话就有了动态的效果了。

(3)如何添加遮罩的发光圈

五、参考教程:

https://zhuanlan.zhihu.com/p/87762783

UE4后期处理材质的一些应用(下) - 哔哩哔哩

【UE4】虚幻4使用后期处理制作的发光轮廓线效果_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2119154.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【漏洞利用】2018年-2024年HVV 6000+个漏洞 POC 合集分享

此份poc 集成了Zabbix、用友、通达、Wordpress、Thinkcmf、Weblogic、Tomcat等 下载链接: 链接: https://pan.quark.cn/s/1cd7d8607b8a

Java小白一文讲清Java中集合相关的知识点(七)

LinkedHashSet LinkedHashSet是HashSet的子类 LinkedHashSet底层是一个LinkedHashMap,底层维护了一个数组双向链表 而在之前讲的HashSet中的链表是单向的哈,注意区分! LinkedHashSet根据元素的hashcode值来决定元素的存储位置,同时使用链表…

从搜索热度上看Arcgis的衰退

Arcgis已被qgis快速赶上 google trends是一个google综合了每日的搜索情况的统计网站,可以追踪从2004年开始各个关键字的搜索热度。 我用arcgis和qgis作为对比,简单探索了arcgis和qgis的全球相关热度。 假设,搜索arcgis越高的区域&#xff…

机器学习 第8章 集成学习

目录 个体与集成BoostingBagging与随机森林Bagging随机森林 结合策略平均法投票法学习法 个体与集成 定义:集成学习,也叫多分类器系统、基于委员会的学习等,它是一种通过结合多个学习器来构建一个更强大的学习器的技术。如下图所示 在这里&a…

轨道交通系统详解,以及地铁如何精准停靠站台

ATC系统 全称“自动列车控制系统”,Automatic Train Control,ATC ATC是地铁运行的核心系统,它包括列车自动防护(ATP)、列车自动运行(ATO)和列车自动监控(ATS)三个子系统。…

嵌入式day41

哈希表 将要存储的数据的关键字和位置建立对应的关系,通过哈希函数(散列函数)将数据映射到存储的位置,方便快速查找 哈希冲突/哈希矛盾: key1 ! key2 f(key1) f(key2) 解决方法: 链地址法 算法 解决…

都2024年了还不明白Redis持久化?RDB文件、AOF文件、AOF重写

都2024年了,不会还有人不知道redis的RDB和Aof吧?不知道没关系,看完这篇文章我相信你就会有个大概的了解和认识了 1. Redis持久化 1.1 持久化概念 Redis本身是一个基于内存的数据库,它提供了RDB持久化、AOF持久化两种方式&#…

黑神话,XSKY 星飞全闪单卷性能突破310万

当下,云计算仍然是企业主要的基础架构,随着关键业务的逐步虚拟化和云化,对于块存储的性能要求也日益提高。企业对于低延迟、高稳定性的存储解决方案的需求日益迫切。为了满足这些日益增长的 IO 密集型应用场景,众多云服务提供商正…

大奖收割机!望繁信科技荣获年度技术创新和应用品牌奖

2023年8月14日,第七届GAIR全球人工智能与机器人大会在新加坡如期举行。 会上公布了「GAIR 2023 GPT Pioneer 5」榜单,望繁信科技凭借完全自主研发的流程智能平台,以及一系列在头部企业中的成功实践案例,与百度智能云、阿里云、知…

vector 容器基础操作及用法

目录 vector 容器基础操作及用法 一:定义及初始化 二:添加数据 三:删除数据 vector 容器基础操作及用法 CSTL是一个非常强大的容器库,其中 vector 是最为常用也较为方便的容器之一,下面主要介绍一下 vector 的一些…

学习threejs,创建立方体,并执行旋转动画

文章目录 一、前言二、代码示例三、总结 一、前言 本文基于threejs&#xff0c;实现立方体的创建&#xff0c;并加入立方体旋转动画 二、代码示例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>l…

数据同步方式何来“高级”与“低级”之说?场景匹配才是真理!

导读&#xff1a;数据同步方式的重要性对于数据集成领域的兴从业者不言而喻&#xff0c;选择正确的数据同步方式能让数据同步工作的成果事半功倍。目市面上的数据同步工具很多&#xff0c;提供的数据同步方式也有多种&#xff0c;不同的数据同步方式有什么区别&#xff1f;如何…

免费SSL证书正在逐渐被淘汰,证书部署自动化的发展趋势即将到来!

目录 背景解决方案。1.使用自签证书&#xff08;浏览器报警、免费&#xff09;2.更换支持自签自续的CA机构&#xff08;免费&#xff09;3.付费选择CA机构 免费SSL证书正在逐渐被淘汰&#xff0c;证书部署自动化的发展趋势即将到来免费的SSL证书有以下弊端1.有效期短&#xff1…

Python的安装与配置并在本地盘符创建共享路径打造低成本私人云盘

文章目录 前言1.本地文件服务器搭建1.1.Python的安装和设置1.2.cpolar的安装和注册 2.本地文件服务器的发布2.1.Cpolar云端设置2.2.Cpolar本地设置 3.公网访问测试4.结语 前言 本文主要介绍如何在Windows系统电脑上使用python这样的简单程序语言&#xff0c;在自己的电脑上搭建…

Leetcode面试经典150题-98.验证搜索二叉树

解法都在代码里&#xff0c;不懂就留言或者私信 二叉树的递归套路&#xff0c;练练就习惯了 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this…

内联汇编 (28)

1 首先是基本的格式。 网上的截图&#xff1a; 命令换行使用 \n\t 这里的constraint 指的就是 寄存器。 r , m , 比较重要。 这里的输出的意思是 &#xff0c; 从汇编到 C语言。 输入指的是 从C语言到 汇编语言 这是个具体的例子 %1, %2,%3, 是指 从上往下算&#xff0c;…

【Canvas与电脑桌面】白褐橘三色立方桌面(1920*1080)

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>白褐橘三色立方桌面Draft1</title><style type"text/c…

应用层协议-HTTPS协议

应用层协议-HTTPS协议 一.概述 HTTP协议&#xff1a;初衷未考虑到安全性 HTTPS是在HTTP的基础上对应用层数据进行加密操作&#xff0c;HTTPSHTTPSSL/TLS HTTPS &#xff08;全称&#xff1a;Hypertext Transfer Protocol Secure [5]&#xff09;&#xff0c;是以安全为目标…

用于客户支持的 GenAI:探索 Elastic Support Assistant

作者&#xff1a;Chris Blaisure, Cory Mangini 我们很高兴地宣布推出 Elastic 的支持助手。本博客将带你了解我们最新的生成式 AI 工具以及它可以帮助你使用 Elastic 技术的一些常见场景。 Elastic 支持助手现已在 Support Hub 上可用 今天&#xff0c;我们宣布 Elastic 支持…

vue3的el-tree的default-checked-keys无法勾选的问题解决

前言:有些树形控件是需要默认勾选的 但是请求后渲染不显示 刷新外部的key值也没有用 看了一下文档 我们使用自带的方法来解决 <el-treenode-key"id":data"state.parentMenuList":default-checked-keys"state.checkIdList":check-on-click-n…