UE4_后期_ben_模糊和锐化滤镜

学习笔记,不喜勿喷,侵权立删,祝愿生活越来越好!

本篇教程主要介绍后期处理的简单模糊和锐化滤镜效果,学习之前首先要回顾下上节课介绍的屏幕扭曲效果:

这是全屏效果,然后又介绍了几种蒙版,方形蒙版,圆形边缘蒙版,角滤镜三种蒙版效果。忘记的同学需要去复习下知识点。

让我们来介绍下模糊和锐化滤镜效果:

一、模糊滤镜效果制作

我们将从采样场景本身开始,我们会对场景进行多次采样,然后把它们结合起来一起创建一个模糊的图像,我们需要做七个样本,

我们要在当前像素的正中央做一个样本进行渲染,然后再做六个样本,在样本周围形成一个环,中间的样本要比周边样本的权重更重,然后我们把所有的样本混合在一起。

我们的结果是模糊的,所以我们首先要做的是如何得到这7个uv坐标样本,一旦我们有了uv坐标,我们将使用它们对场景进行采样,第三步,我们将七个样本组合在一起,为了创建这个模糊的图像,我们有一个简单的三步过程。

1、获取采样点的uv坐标值

我们首先要弄清楚的是如何获取屏幕采样点坐标,以使他们的场景采样七次,首先我们按下2键,然后得到7个二维常数向量值,这些值代表我们制作的每个采样点,我们知道第一个采样点在正中间,可能是(0,0),那么它的左边和右边的采样值,悬殊2和-2,最后采样点是4个角,在中心采样点的上面和下面,大体位置应该如下图所示:

这是我们7个采样点,我们接下来要做的是将这些值转换成实际像素的值,为了做到这一点,我们我们需要一个节点叫屏幕分辨率ScreenResolution,

其中Visible Resolution会告诉我们像素的数量,以及我们当前所处的视口中向下的像素数,渲染并获得实际像素的大小,

我们需要做的就是用1除以可见屏幕的分辨率,所以我们添加一个除法蓝图节点,这样会获得单个像素的大小。

我们现在就可以得到正确的像素偏移,我们只需要乘以每个值,所以我要继续加一个乘法蓝图节点,乘以每一个值:

这样我们就有了7个像素的偏移,剩下要做的就是添加这些偏移到我们的纹理坐标,添加一个纹理坐标节点,然后让我们的7个纹理偏移加到纹理坐标上去,

这样就分别得到了它们的uv坐标值,我们有了7组uv坐标值。我们可以对场景进行采样,这是创建uv的第一步。表示我们正在做的采样点。

2、用UV坐标来采样我们的场景

uv坐标允许我们在场景中进行采样,然后是围绕中心的六个采样点的uv坐标,我们现在用uv坐标来采样我们的场景,我们添加场景纹理节点,

细节面板选择后期处理输入0,

这个蓝图节点复制7个,我们把我们的uv坐标连接起来,

我们采样了我们的场景7次,现在我需要把我们的采样组合在一起,为了做到这一点,我们需要对中心的采样权重分配多一点,周围采样的权重小一些,我们的方法是我们的采样乘以一个小于1的值,我们把中心的占比设置为0.3,我们所有的采样占比加起来要为1,剩余的6个采样比重均分0.7,那么也就中每一个约为0.1167,节点设置如下:

剩下的就是把它们采样到的颜色加起来。

3、叠加采样颜色

我们用加法节点把它们组合起来。

运行效果如下:

我们来看看,直接采样场景颜色的效果:

模糊效果还是比较明显的。根据需要我们可以使用lerp节点在模糊和清晰之间进行插值。

我们来添加一个线性插值节点,我们把模糊的带入B,清晰的带入A,alpha来通过数值或者蒙版来控制场景区域的模糊或者清晰程度。

当alpha值为10时,我们来看看效果:

注意插值的计算公式:(1-α)XA+αXB。

二、锐化滤镜效果制作

我们可以在模糊滤镜的基础上,利用lerp蓝图节点的神奇魔力来锐化我们的场景,我们知道模糊滤镜的lerp值为0时是清晰的场景,如果是0以下呢?当值为-1时,我们来算一下,你知道原理是什么吗?0是普通场景,1是模糊场景,-1是锐化场景,我把模糊变成负的,它把模糊推开,结果是锐化,当值为-2时,你会发现变得更加尖锐,当值为-5时,会更加锐化,对通常会模糊的场景进行多次采样,然后往反方向锐化,它的作用是增加每个个体边缘的像素的对比,我们有个滤镜,当往负方向走我们可以锐化,我们往正方向走,可以模糊,酷毙了!

运行效果如下图:

想法是你取多个像素进行混合,它们一起得到一个平均值,然后更高的值会模糊,如果是负值会锐化。

下图是usm锐化的方法:

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

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

相关文章

MySQL与PostgreSQL关键对比四(关联查询性能)

引言:MySQL单表的数据规模一般建议在百万级别,而PostgreSQL的单表级别一般可以到亿级,如果是MPP版本就会更多。从基础数据建议上,不难看出,MySQL在Join的情况下也就是主要查询的情况下性能和PostgreSQL相差还是很大的。…

Vue35-生命周期小结

一、8个,4对生命周期函数 第一对:数据监测、数据代理,创建之前和创建之后。 注意:不是vm的创建!!! 第二队:beforeMount和mounted 第三队:beforeUpdate和update 第四队…

vue-element-admin后台集成方案

官网:介绍 | vue-element-adminA magical vue adminhttps://panjiachen.github.io/vue-element-admin-site/zh/guide 1.git环境安装配置及简单操作 1.1git环境安装配置 git软件官网:Git - Downloads (git-scm.com)https://git-scm.com/downloads 下载…

印尼slot游戏pwa做Facebook广告代投推广流程

印尼slot游戏pwa做Facebook广告代投推广流程 随着互联网的普及和移动设备的广泛应用,社交媒体平台如Facebook成为了企业和个人进行品牌推广的重要渠道。在印尼的slot游戏行业中,利用PWA(Progressive Web App)技术进行Facebook广告…

第N4周:中文文本分类-Pytorch实现

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制🚀 文章来源:K同学的学习圈子 目录 一、准备工作 1.任务说明 文本分类流程图: 2.加载数据 ​编辑 二、…

conda添加镜像源与channels

文章目录 一、conda下添加国内镜像源(window下)二、pip配置国内镜像源(window下,临时修改)三、conda源的定义 一、conda下添加国内镜像源(window下) 1、为【channels】配置清华镜像通道 直接在…

【Pandas】已完美解决:AttributeError: ‘DataFrame‘ object has no attribute ‘ix‘

文章目录 一、问题背景二、可能出错的原因三、错误代码示例四、正确代码示例(结合实战场景)五、注意事项 一、问题背景 在Pandas的早期版本中,ix 是一个方便的索引器,允许用户通过标签和整数位置来索引DataFrame的行和列。然而&a…

Pixi.js学习 (四)鼠标跟随、元素组合与图片位控

目录 一、鼠标移动跟随 1.1 获取鼠标坐标 1.2 鼠标跟随 二、锚点、元素组合 2.1 锚点 2.2 元素组合 三、图片图层 四、实战 例题一:完成合金弹头人物交互 例题二:反恐重击瞄准和弹痕 例题一代码: 例题二代码: 总结 前言 为了提高作…

ADS基础教程20 - 电磁仿真(EM)参数化

EM介绍 一、引言二、参数化设置1.参数定义2.参数赋值3.创建EM模型和符号 四、总结 一、引言 参数化EM仿真,是在Layout环境下创建参数,相当于在原理图中声明变量。 二、参数化设置 1.参数定义 1)在Layout视图,菜单栏中选中EM&g…

大模型出现的不断重复的现象

无论是大语言模型还是多模态模型,都遇到过这个问题,该如何解决呢? 1.调整推理参数 [BUG] 返回重复的内容 Issue #277 QwenLM/Qwen GitHub是否已有关于该错误的issue或讨论? | Is there an existing issue / discussion for this? 我已经搜索过已有的issues和讨论 | I…

【Linux】基础IO——系统文件IO

我之前是讲过c语言的文件操作的,但是说实话我压根就不知道它在干什么,后面c语言/c,数据结构的学习过程中也没用过文件操作,今天我们就来会会这个文件操作 1.回顾c语言文件接口 1.1.fopen r :只读模式打开,文件流指针…

【LeetCode 92.】 反转链表 II

1.题目 虽然本题很好拆解,但是实现起来还是有一些难度的。 2. 分析 尽可能抽象问题,然后简化代码 我在写本题的时候,遇到了下面这两个问题: 没有把[left,right] 这个区间的链表给断开,所以导致反转起来非常麻烦。…

【iOS】KVO相关总结

目录 1. 什么是KVO?2. KVO的基本使用3. KVO的进阶使用observationInfo属性context 的使用KVO触发监听方法的方式自动触发手动触发 KVO新旧值相等时不触发KVO的从属关系一对一关系一对多关系 4. KVO使用注意5. KVO本质原理分析伪代码保留伪代码下的类并编译运行对比添…

小白都能看懂的 “栈”

什么是栈?首先引用维基百科的解释: 栈(stack)是计算机科学中的一种抽象资料类型,只允许在有序的线性资料集合的一端(称为堆栈顶端,top)进行加入数据(push)和移…

Go语言结构体内嵌接口

前言 在golang中,结构体内嵌结构体,接口内嵌接口都很常见,但是结构体内嵌接口很少见。它是做什么用的呢? 当我们需要重写实现了某个接口的结构体的(该接口)的部分方法,可以使用结构体内嵌接口。 作用 继承赋值给接口…

信号与系统实验MATLAB-实验1-信号的MATLAB表示及信号运算

实验1-信号的MATLAB表示及信号运算 一、实验目的 1、掌握MATLAB的使用; 2、掌握MATLAB生成信号波形; 3、掌握MATLAB分析常用连续信号; 4、掌握信号运算的MATLAB实现。 二、实验内容 编写程序实现下列常用函数,并显示波形。…

PyTorch -- Visdom 快速实践

安装:pip install visdom 注:如果安装后启动报错可能是 visdom 版本选择问题 启动:python -m visdom.server 之后打开出现的链接 http://localhost:8097Checking for scripts. Its Alive! INFO:root:Application Started INFO:root:Working…

数据网格和视图入门

WinForms数据网格(GridControl类)是一个数据感知控件,可以以各种格式(视图)显示数据。本主题包含以下部分,这些部分将指导您如何使用网格控件及其视图和列(字段)。 Grid Control’s…

BUUCTF-Web题目1

目录 [HCTF 2018]admin 1、题目 2、知识点 3、思路 [极客大挑战 2019]BuyFlag 1、题目 2、知识点 3、思路 [HCTF 2018]admin 1、题目 2、知识点 BP暴力破解密码 3、思路 打开题目,查看页面源代码,发现需要admin用户才可以登录 这一台有很多解法…

LeetCode | 20.有效的括号

这道题就是栈这种数据结构的应用,当我们遇到左括号的时候,比如{,(,[,就压栈,当遇到右括号的时候,比如},),],就把栈顶元素弹出,如果不匹配,则返回False,当遍历完所有元素后…