【UE5】一种老派的假反射做法,可以用于移动端,或对反射的速度、清晰度有需求的地方

没想到大家这篇文章呼声还挺高
这篇文章是对它的详细实现,建议在阅读本篇之前,先浏览一下前面的文章,以便更好地理解和掌握内容。

这种老派的假反射技术,适合用于移动端或对反射效果的速度和清晰度有较高要求的场合。该技术通过一些简单的技巧,能够在性能有限的设备上,实现类似反射的视觉效果,而不需要高昂的计算成本。此外相比于屏幕空间反射,这种方法能够提供更加清晰且无延迟的反射效果。

在开始前,还有一些说明:

在这篇文章中,我们首先创建了一个BP_FakeReflection。如果您不需要大规模放置反射物体,可以选择手动摆放,并跳过BP_FakeReflection这一节内容。

教程中使用了一个平面模型,并以“大屏幕倒影”作为示例(这是最常见的需求)。然而,在实际应用中,这种方法并不限于平面表面。您甚至可以使用模型来实现倒影效果。一些移动端项目和VR项目的角色倒影,通常是通过将角色模型翻转并放置在地面下方来实现的。例如下图中人物的反射效果:
在这里插入图片描述


BP_FakeReflection

创建一个蓝图BP_FakeReflection,它的功能很简单,就是自动摆放面片。

在这里插入图片描述

添加两个Plane,地面上面片为PlaneU,地下为PlaneD
在这里插入图片描述
在这里插入图片描述

实现也很简单,我们看一下:
在这里插入图片描述

  1. 这个默认的Plane模型是向上的,这里对其进行了旋转。
  2. 因为有旋转,缩放也需要调整,这样面片才能匹配Actor的缩放
  3. 下方的Plane要垂直对称(旋转以后Y对应Z轴)
  4. 向下发射了500cm的射线检测地面
  5. 将反射设置到以地平线为轴对称的高度

在这里插入图片描述

制作材质 M_FakeReflection

贴图

随便截了一张图,修改一下作为贴图。关键在于确保这张图片的尺寸是2的幂,例如512x512、1024x1024或2048x2048等,我们后续需要使用生成的Mip。
在这里插入图片描述
在这里插入图片描述

制作屏幕材质

新建材质M_FakeReflection
在这里插入图片描述

首先勾选使用材质属性:
在这里插入图片描述

在这里插入图片描述
将其设置给PlaneU
在这里插入图片描述

MI_FakeReflection_Screen

创建实例材质MI_FakeReflection_Screen,他就是用于上半部分PlaneU的普通材质
在这里插入图片描述

将材质属性重载
在这里插入图片描述

MI_FakeReflection_Screen_Reflection

再以MI_FakeReflection_Screen为父,创建实例MI_FakeReflection_Screen_Reflection,像名字一样,它是地下反射PlaneD的材质。
在这里插入图片描述
将其材质属性重载为半透明 无光照,并设置给PlaneD
在这里插入图片描述

同时要禁用深度测试,忘截图了

在这里插入图片描述

地下反射材质制作

MI_FakeReflection_Screen_Reflection 是这篇教程的核心,现在我们要开始制作它了

回到M_FakeReflection,首先修改材质属性为半透明 无光照
在这里插入图片描述

实现法线

  1. 这一步,本质是在计算“干净的反射向量”与“场景反射向量”的不同,取XY限制为纹理坐标,加到TexCoord:
    在这里插入图片描述

  2. 增加一个SwitchReflection,用于切换地上地下两种实现,然后将其连接:
    在这里插入图片描述

  3. 加入一个倍数,负责从艺术的角度控制强度:
    在这里插入图片描述

  4. 最后,将亮度调整移动到了最后,使 PlaneU·, PlaneD可以同步调整亮度在这里插入图片描述

  5. MI_FakeReflection_Screen_Reflection 勾选:
    在这里插入图片描述

法线Fix

法线部分还没结束,还有一些细节需要修复,首先看看效果:
在这里插入图片描述

可以从下面这张截图看到,反射出现两个问题:
在这里插入图片描述

  1. 贴图扭曲后重复
    在这里插入图片描述
    在这里插入图片描述

  2. 反射扭曲受限于模型
    在这里插入图片描述

解决:缩放贴图,使其小于模型,并使用UV绘制蒙版,只保留UV的0-1区间
在这里插入图片描述

在这里插入图片描述

MI_FakeReflection_Screen需要修改重载为已遮罩
在这里插入图片描述

实现粗糙度

Mip此时派上用场,从GBuffer里拿粗糙度,应用进Mip
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

实现反射衰减

随着反射路径长度增加,光线会进行衰减,粗糙度也会产生对应的变化
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

最终效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到,这是一篇很浅显的文章,主要是为了介绍一种思路。
在这思路的基础上,有很多效果都可以实现,也可以衍生出很多Shader玩法。

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

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

相关文章

前端学习Day12 CSS盒子的定位(相对定位篇“附练习”)

一、相对定位 使用相对定位的盒子会相对于自身原本的位置,通过偏移指定的距离,到达新的位置。盒子的本体仍处于文档流中。使用相对定位,除了要将 position 属性值设置为 relative 外,还需要指定一定的偏移量。其中,水…

基于微信小程序的移动学习平台的设计与实现+ssm(lw+演示+源码+运行)

摘 要 由于APP软件在开发以及运营上面所需成本较高,而用户手机需要安装各种APP软件,因此占用用户过多的手机存储空间,导致用户手机运行缓慢,体验度比较差,进而导致用户会卸载非必要的APP,倒逼管理者必须改…

git 工具原理

git 目录 git git的使用 了解git的三个区域 具体操作 如何下载别人上传到git的工程 -- 可以参考菜鸟教程,包括安装配置git Git 安装配置 | 菜鸟教程 -- Git 是一种分布式版本控制系统,用于管理软件项目的源代码。它是由 Linux 之父 Linus Torval…

Linux操作系统:学习进程_对进程的深入了解

目录 前言 开篇 一、进程概念 二、进程的描述与管理 1、如何描述与管理 2、Linux中的PCB-task_struct 3、对进程组织的理解 三、进程的属性 1、系统创建进程 2、查看进程 3、进程的标识符 4、退出进程 1>ctrlc 2>kill命令杀死进程 5、用户进程的创建方式…

力扣:225 用队列实现栈

栈、队列 栈: 弹夹,后进先出 队列: 排队,先进先出 描述: var MyStack function () {// 定义两个数组,模拟队列this.queue []this._queue [] };/** * param {number} x* return {void}*/ MyStack.protot…

lora训练模型 打造个人IP

准备工作 下载秋叶炼丹器整理自己的照片下载底膜 https://rentry.org/lycoris-experiments 实操步骤 解压整合包 lora-scripts,先点击“更新” 训练图片收集 比如要训练一个自己头像的模型,就可以拍一些自己的照片(20-50张,最少15张&…

IO 多路复用技术:原理、类型及 Go 实现

文章目录 1. 引言IO 多路复用的应用场景与重要性高并发下的 IO 处理挑战 2. IO 多路复用概述什么是 IO 多路复用IO 多路复用的优点与适用场景 3. IO 多路复用的三种主要实现3.1 select3.2 poll3.3 epoll三者对比 4. 深入理解 epoll4.1 epoll 的三大操作4.2 epoll 的核心数据结构…

大数据新视界 -- 大数据大厂之 Impala 性能优化:从数据压缩到分析加速(下)(8/30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

信息学奥赛一本通 1395:烦人的幻灯片(slides)

【题目链接】 ybt 1395:烦人的幻灯片(slides) 【题目考点】 1. 图论:拓扑排序 【解题思路】 先理解题意: 如图,每张幻灯片是一个矩形,在该矩形范围内有一个位置写了这张幻灯片的编号。但实际情况是幻灯片是透明…

DB-GPT系列(三):底层大模型设置(开源模型、在线模型)

前面两篇文章分别对 DB-GPT 的总体情况进行了介绍,同时涵盖了镜像一键部署与源码部署这两种部署方式。 DB-GPT系列(一):DB-GPT能帮你做什么? DB-GPT系列(二):DB-GPT部署&#xff0…

LabVIEW配电产品精度测试系统

开发了一种基于LabVIEW平台的配电产品精度测试系统,通过自动化测试流程实现更高的测试准确性与效率。系统采用串口和TCP通信技术,与多功能交流采样变送器和配电设备无缝数据交互,提升了测试工作的可靠性和一致性。 一、项目背景 在配电产品…

详解Java之Spring MVC篇二

目录 获取Cookie/Session 理解Cookie 理解Session Cookie和Session的区别 获取Cookie 获取Session 获取Header 获取User-Agent 获取Cookie/Session 理解Cookie HTTP协议自身是“无状态”协议,但是在实际开发中,我们很多时候是需要知道请求之间的…

【大数据学习 | kafka】kafka的偏移量管理

1. 偏移量的概念 消费者在消费数据的时候需要将消费的记录存储到一个位置,防止因为消费者程序宕机而引起断点消费数据丢失问题,下一次可以按照相应的位置从kafka中找寻数据,这个消费位置记录称之为偏移量offset。 kafka0.9以前版本将偏移量信…

RabbitMQ 管理平台(控制中心)的介绍

文章目录 一、RabbitMQ 管理平台整体介绍二、Overview 总览三、Connections 连接四、Channels 通道五、Exchanges 交换机六、Queues 队列查看队列详细信息查看队列的消息内容 七、Admin 用户给用户分配虚拟主机 一、RabbitMQ 管理平台整体介绍 RabbitMQ 管理平台内有六个模块&…

推荐一款强大的图像处理软件:Adobe Photoshop2025

AdobePhotoShop赛博日落版是一款强大的图像处理软件,专为用户提供多种先进的图像编辑功能。该版本包含了最新的AI移除工具、AI查找干扰功能以及Neural Filters神经滤镜插件,旨在提升用户的创作效率和成品效果。 主要功能 - AI创意填充:该功能…

PC模块静电放电测试中的宕机黑屏

静电放电(ESD)是电子设备中常见且难以避免的干扰源之一,尤其是在复杂的电子系统中,它对系统的稳定性和可靠性影响极大。近期,在进行静电放电(6KV接触放电、15KV空气放电)测试时,某P C模块在多个端子(如USB、RJ45、HDMI及耳机端子)遭遇了显示黑屏、图像异常及系统宕机…

吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)4.7-4.8

目录 第四门课 卷积神经网络(Convolutional Neural Networks)第四周 特殊应用:人脸识别和神经风格转换(Special applications: Face recognition &Neural style transfer)4.7 深度卷积网络学习什么?&am…

适用于个人或团队的文档管理和知识库系统,NAS快速部署『BookStack』

适用于个人或团队的文档管理和知识库系统,NAS快速部署『BookStack』 哈喽小伙伴们好,我是Stark-C~ 知识库对于很多需要和文字打交道的个人或者团队都不陌生对吧?对于我们个人来说,它可以将常用的学习资料、工作笔记、项目计划和…

并发编程的基础:深入理解内存屏障(Memory Barriers)

内存屏障是一种基础语言,在不同的计算机架构下有不同的实现细节。本文主要在x86_64处理器下,通过Linux及其内核代码来分析和使用内存屏障 对大多数应用层开发者来说,“内存屏障”(memory Barrier)是一种陌生&#xff…

Windows转Mac过渡指南

最近由于工作原因开始使用mac电脑,说实话刚拿到手的时候,window党表示真的用不惯。坚持用一下午之后,发现真的yyds,这篇文章说说mac电脑的基本入门指南。 1. 不会使用mac的触摸板,接上鼠标发现滚轮和windows是反的。 …