【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.xdnf.cn/news/4741.html

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

相关文章

简单的ATM提款机案例

要求&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title></head><body></body> <script>use striclet money100//想要money不重置要放循环外while(tr…

linux perf 环境部署和基本测试(基于Ubuntu20.04)

1,linux 安装perf sudo apt-ge install linux-tools-common sudo apt-get install linux-tools-$(uname -r) linux-tools-generic -y 2 补充安装 sudo apt-get install python3-q-text-as-data 3&#xff0c;perf常用命令 larkubuntu:~$ perf usage: perf [--version] [--hel…

基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 这里实现的是256*256双线性插值到512*512的系统模块 局部放大&#xff1a; 将数据导入到matlab&#xff0c;得到插值效果…

SMBIOS基础

一、INTRODUCTION The System Management BIOS&#xff08;SMBIOS&#xff09;解决了主板和系统供应商如何通过平台固件以标准格式展现其产品信息&#xff0c;这些信息包括CPU/Memory的serial number、manufacture、speed等资料&#xff0c;也有PCIe Devices、USB Device、Red…

网易数据中台实践:高效管理与成本优化的秘密

文章目录 一、数据中台概览二、元数据中心三、数据服务四、全链路数据质量中心五、数据资产管理六、数据中台实施效果 网易通过建立一套统一的数据架构与平台&#xff0c;成功实现了数据的高效管理与应用。剖析网易在互联网产品数据管理工作中的经验与做法&#xff0c;涵盖从数…

蓝桥杯真题——三角回文数(C语言)

问题描述 对于正整数 n, 如果存在正整数 k 使得 n123⋯kk(k1)2n123⋯kk(k1)/2​, 则 n 称为三角数。例如, 66066 是一个三角数, 因为 66066123⋯36366066123⋯363 。 如果一个整数从左到右读出所有数位上的数字, 与从右到左读出所有数位 上的数字是一样的, 则称这个数为回文数…

Spark SQL大数据分析快速上手-DataFrame应用体验

【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客 《Spark SQL大数据分析快速上手》【摘要 书评 试读】- 京东图书 大数据与数据分析_夏天又到了的博客-CSDN博客 本节主要介绍如何使用DataFrame进行编程。 4.1.1 SparkSession 在旧版本中&#xff0c;Spark SQL提供…

磁盘的分区

硬盘管理 硬盘的概念 硬盘是一种计算机的存储设备&#xff0c;通常是由一个或多个磁性盘片组成。硬盘既可以安装在计算机的内部&#xff0c;也可以外接计算机 硬盘主要是用来保存数据的 数据包括&#xff1a;操作系统&#xff0c;应用程序&#xff0c;文档多媒体文件等等 计算…

IEEE TRO综述论文:抓取合成领域的深度学习方法

TRANSACTIONS ON ROBOTICS综述论文&#xff1a;抓取合成领域的深度学习方法抓取是机器人在现实世界中操纵物体的基本技能之一&#xff0c;涉及在一组接触点上施加力和扭矩来控制物体的运动&#xff0c;而近些年深度学习方法的突破性研究使机器人在抓取方面取得了快速进展。近期…

旋转位置编码

1. Transformer为什么需要位置编码 因为 transformer 结构本身是和位置编码无关的&#xff1a; Y T ( X ) F ( A ( X ) ) Y\Tau(X)F(A(X)) YT(X)F(A(X))&#xff0c;其中 A ( ) A() A() 是 attention 变换&#xff0c;只进行了矩阵变换&#xff0c;跟位置无关&#xff0c; …

ssm+vue683基于VUE.js的在线教育系统设计与实现

博主介绍&#xff1a;专注于Java&#xff08;springboot ssm 等开发框架&#xff09; vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不…

【Wi-Fi】WiFi IEEE 802.11ad(60 GHz Wi-Fi)知识整理

参考链接 【技术规范】详解IEEE 802.11ad&#xff08;60GHz Wi-Fi&#xff09;技术 - 天线设计 - RF技术社区 IEEE 802.11ad Tutorial | WiGig (60 GHz Technology) basics IEEE 802.11ad&#xff08;60 GHz Wi-Fi&#xff09; IEEE 802.11ad是一种无线网络标准&#xff0c…

苹果MacOS最常用快捷键(一)

1、利用find命令查找文件 可参考链接&#xff1a;find使用_mac find命令-CSDN博客文章浏览阅读3.2k次。find 使用_mac find命令https://blog.csdn.net/poinsettia/article/details/129187641 举例&#xff1a; 2、虚拟机系统将Ctrl设置为苹果的Command键 实际上就是将Ctrl键和…

壁纸鸭 1.1 |提供许多优质壁纸,并且支持本地图片像素化

壁纸鸭是一款不错的壁纸软件&#xff0c;提供简单的分类和搜索功能&#xff0c;无需注册登录即可免费使用。壁纸质量较高&#xff0c;支持将本地图片像素化&#xff0c;为用户提供多样化的壁纸选择。 大小&#xff1a;29M 下载地址&#xff1a; 百度网盘&#xff1a;https://…

对于一个需要渲染300帧的动画项目,云渲染要多久

探讨云渲染动画300帧需要多久的问题时&#xff0c;我们今天来从多个角度进行分析&#xff0c;对于一个需要渲染300帧的动画项目&#xff0c;传统的本地渲染方式可能会因为硬件限制而变得耗时且效率低下。幸运的是&#xff0c;【渲染101】云渲染技术的出现为这一问题提供了解决方…

项目活动进度计算题

六个时间参数①最早开始时间ESmax{紧前工作最早完成时间EF}&#xff08;紧前取大&#xff09; 最早完成时间EFES工期&#xff0c;从左→右计算&#xff0c;累加取大 ②最迟完成时间LFmin{紧后工作最迟开始时间LS}&#xff08;紧后取小&#xff09; 最迟开始时间LSLF-工期&am…

如何查看局域网内的浏览记录?总结五种方法,按步操作!一学就会!「管理小白须知」

如何查看局域网内的浏览记录&#xff1f; 你是否也曾为如何有效监控局域网内的浏览记录而苦恼&#xff1f; 监控局域网内电脑的浏览记录是确保员工工作效率、维护网络安全以及规范上网行为的重要手段。 别担心&#xff0c;今天我们就来聊聊这个话题&#xff0c;为你揭秘五种简…

5本地方法接口本地方法栈

什么是本地方法&#xff1f; 简单地讲&#xff0c;一个 Native Method 是一个 Java 调用非 Java 代码的接囗 在定义一个 native method 时&#xff0c;并不提供实现体&#xff08;有些像定义一个 Java interface&#xff09;&#xff0c;因为其实现体是由非 java 语言在外面实…

飞书 富文本(Markdown)

飞书机器人webhook支持Markdown格式&#xff0c;包括表格 表格 |Syntax | Description |\n|-------- | -------- |\n|Header | Title |\n|Paragraph | Text |参考 富文本&#xff08;Markdown&#xff09;

Django Admin

Django Admin模块是Django框架提供的一个功能强大且易于使用的后台管理工具&#xff0c;它允许开发者通过Web界面来管理网站的后台数据和功能。 主要功能和特点 自动生成管理界面&#xff1a;Django Admin模块可以根据模型类&#xff08;Model&#xff09;自动创建表单和列表视…