UE4_材质_材质节点_Fresnel

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

一、问题导入

在创建电影或过场动画时,你常常需要想办法更好地突显角色或场景的轮廓。这时你需要用到一种光照技术,称为边沿光照或边缘光照,它的原理是通过添加额外光源来帮助区分角色轮廓与背景。虽然这能够很好地适用于电影,但将额外光源添加到3D场景会增加额外的复杂度,使其很快变得难以管理。

虚幻引擎在材质层面提供了相应的解决方案。 美术师可以使用 菲涅尔(Fresnel) 在角色或道具的材质中模拟边沿光照,更好地控制效果的外观体验。 菲涅尔是一种固有属性,在许多材质中自然存在,其中包括玻璃、水以及一些类型的织物和油漆。本教程中的技术将帮助你更准确地模拟这些材质。

二、材质蓝图节点定义

菲涅尔(Fresnel) 这一术语用于说明你看到的光线如何根据视角的变化以不同的强度反射。例如,你站在水池边,低头看脚下的水,你会发现水面的反射不是特别强烈。随着你抬起头,使你的视线与水池中的水面平行,你会开始发现水面越来越波光粼粼。水和玻璃都表现出很强的菲涅尔倾向,即视线垂直于表面时,它们看起来相对透明,视线未垂直于表面时,它们会反射更多光线。

从正面看时,相框中的玻璃是透明的,

从侧面看时,玻璃中的反光会更明显。

在虚幻引擎中,菲涅尔(Fresnel) 材质表达式会根据表面法线与摄像机方向的点积来计算衰减。当表面法线指向摄像机时,输出值为0。当表面法线垂直于摄像机时,输出值为1。结果限制在[0,1]范围内,以确保不会在中央产生任何负颜色。下图演示了此概念。

在球体中间(标记为0),没有菲涅尔效果。这是因为摄像机径直指向表面法线。朝向球体边缘(标记为1),表面法线趋于与摄像机垂直,菲涅尔效果也越来越明显。 这会造成球体边缘被照亮的感觉。

三、节点详解

在控制板或上下文菜单中搜索"菲涅尔(Fresnel)"时,你会发现 工具(Utility) 下有一个菲涅尔材质表达式,向量操作(Vector Ops) 下有一个材质函数。虽然这两个节点的用途相同,但设置它们的设置方式有所不同。

1、菲涅尔 材质表达式

工具(Utility) 下的 菲涅尔 材质表达式是本教程中使用的选项,并且在这两个选项中更易于配置。

项目

说明

属性

指数(Exponent)

指定输出值的衰减速度。值越大,意味着衰减越快。

基本反射小数(Base Reflect Fraction)

指定从正对表面的方向查看表面时,镜面反射的小数。值为1将有效地禁用菲涅耳效果。

Inputs

指数输入(ExponentIn)

指定输出值的衰减速度。值越大,意味着衰减越紧或越快。如果使用此输入,那么值将始终取代"指数"(Exponent)属性值。

基本反射小数(Base Reflect Fraction)

指定从正对表面的方向查看表面时,镜面反射的小数。值为1将有效地禁用菲涅耳效果。如果使用此输入,那么值将始终取代"指数"(Exponent)属性值。

法线(Normal)

接收三通道矢量值,该值代表表面在全局空间中的法线。要查看应用于菲涅耳对象表面的法线贴图的结果,请将该法线贴图连接到材质的"法线"(Normal)输入,然后连接一个 PixelNormalWS 表达式到Fresnel上的此输入。如果未指定任何法线,那么将使用网格的切线法线。

你可以输入法线贴图来更改菲涅尔效果的渲染方式。法线贴图必须从切线空间变换为世界空间

你可以将法线贴图拖到 法线(Normal) 输入来更改菲涅尔效果的外观。如果你使用法线贴图纹理,必须通过 Transform材质节点表达式传递它,然后再将其连接到法线输入。这会将法线贴图从切线空间变换为世界空间。如果不进行此变换,法线贴图可能无法按你所需的方式影响菲涅尔。

2、菲涅尔 材质函数

向量操作(Vector Ops) 类别中的 Fresnel_Function 材质函数是高度可自定义的菲涅尔版本,用于提供对菲涅尔效果的多个不同方面的控制。这个新增加的功能有其缺点,因为设置出错可能导致菲涅尔效果的渲染存在瑕疵或错误。

你应该仅在 工具(Utility) 下的菲涅尔材质表达式不能产生你所需的结果时使用此材质函数。

属性说明
法线向量(V3)(Normal Vector (V3))你可以在此处输入法线来修改菲涅尔效果的渲染。为获得准确的结果,你必须通过变换节点(切线空间到世界空间)来传递法线贴图。
摄像机向量(V3)(Camera Vector(V3))手动更改用于确定摄像机和表面法线之间点积的摄像机向量。
反转菲涅尔(B)(Invert Fresnel(B))反转菲涅尔的效果。如果你希望菲涅尔仅在中心或边缘应用,这会很有用。
能力(S)(Power(S))输入标量以控制菲涅尔效果的范围(或衰减)。输入的数字越大,受影响的区域越小。输入的数字越小,那么菲涅尔节点影响的表面区域越大。
使用低开销对比度(B)(Use Cheap Contrast(B))启用此属性后,菲涅尔节点会使用开销更低的方法来计算亮色与暗色之间的对比度。
低开销对比度暗色(S)(Cheap Contrast Dark (S))此属性将控制菲涅尔的昏暗程度。这仅在启用 使用低开销对比度(Use Cheap Contrast) 时有效果。
低开销对比度亮色(S)(Cheap Contrast Bright (S))此属性将控制菲涅尔效果的明亮程度。这仅在启用 使用低开销对比度(Use Cheap Contrast) 时有效果。
限制菲涅尔点积(B)(Clamp Fresnel Dot Product (B))将菲涅尔点积的结果限制在0到1之间。 此属性默认为true,但你可以使用设置为false的 静态布尔(Static Bool) 将其覆盖。

四、如何在材质中使用菲涅尔

1、创建节点。

2、修改参数名称及默认值。

3、将 Multiply 节点添加到图表,然后使用下图作为指南来连接所有材质表达式。

4、编译并保存材质后,关闭材质编辑器并在内容浏览器中找到 资产。 右键点击 缩略图并选择上下文菜单中的 创建材质实例(Create Material Instance) 。

5、双击 实例,在材质实例编辑器中打开。选中每个参数名称旁边的复选框,启用你想覆盖的参数。启用参数后,你可以修改值来更改菲涅尔效果的颜色和外观。

在 菲涅尔衰减(Fresnel Falloff) 中输入较大的数字会将菲涅尔效果愈加推向边缘,而输入较小的数字则会使效果更靠近中心。下面是 菲涅尔衰减(Fresnel Falloff) 值从0增加到10的效果展示。请注意,随着数字增加,蓝色会逐渐推向球体边缘。

五、菲涅尔和法线贴图

由于菲涅尔会根据朝向的表面法线计算,所以你可以使用法线贴图来影响菲涅尔效果在材质中的分布。菲涅尔节点的运用原理是检查表面法线是否与摄像机垂直。如果与摄像机垂直,则菲涅尔效果可见。在光滑的球体上,这意味着菲涅尔效果仅在边缘发生。

但是,引入法线贴图时,表面法线会被修改,可能使网格体的轮廓中出现起伏和轮廓线。 这意味着菲涅尔效果可以高亮或突显在表面法线光滑时不可见的细节。

如需直观了解其运作原理,可以参考下面的两张图片。左图(1)显示了菲涅尔节点在使用扁平表面法线时的输出情况。菲涅尔效果仅在球体边缘可见。 右图(2)输入了法线贴图,显著改变了网格体的表面法线。 现在,菲涅尔效果沿法线贴图中定义的轮廓线可见。

下图显示了不同的法线贴图对菲涅尔的影响。

上述比较中使用的材质是之前创建的相同材质,但进行了以下修改。

  • 材质的 混合模式(Blend Mode) 从 不透明(Opaque) 更改为 半透明(Translucent) 。
  • 在细节(Details)面板中,半透明光照模式(Translucency Lighting Mode) 从 体积无方向(Volumetric Non Directional) 更改为 表面半透明体积(Surface Translucency Volume) 。(这里是让材质引脚的opacity和normal可用)
  • 插入到 自发光颜色(Emissive Color) 输入的Multiply输出也插入到 不透明度(Opacity) 输入。
  • 新的2D纹理取样器已添加并插入到 法线(Normal) 输入。初学者内容包中的 Tech_Hex_Tile_N 用作法线纹理。
  • 新的标量参数已添加并乘以纹理坐标表达式,在法线贴图上实现了一些基本的均匀倾斜。

选择表面半透明体积后,材质根节点中的normal可用。

效果:

你还可以将法线贴图传递到菲涅尔节点上的 法线(Normal) 输入。 如果你希望菲涅尔效果的法线不同于底层材质的法线,这尤其有用。例如,你可以使用菲涅尔节点在材质上显示诸如能量护盾之类的效果,但仍使该材质在护盾未激活时看起来正常。

要使用上述材质实现这种情况,请对材质做出以下修改。

  1. 添加初学者内容包中的 T_Brick_Clay_New_D 纹理,并将其插入到 基础颜色(Base Color) 和 粗糙度(Roughness) 。

    2、更改法线输入,使其使用 T_Brick_Clay_New_N ,你还可以在初学者内容包中找到它。

3、搜索 变换(Transform) 材质表达式节点并将其添加到材质图表中。确保它设置为从 切线空间到世界空间 进行变换。

4、将旧的法线贴图纹理节点连接到变换(Transform)节点的输入,并将其输出连接到菲涅尔(Fresnel)节点上的法线(Normal)输入。

完成后,材质看起来应该类似于以下图表。

现在,菲涅尔节点中的表面法线完全不同于砖块纹理中的表面法线。 菲涅尔效果就像砖块上有一个半透明层。如果你认为效果太强烈,可以进一步添加Multiply节点和标量参数(Scalar Parameter)来控制菲涅尔效果的强度。下面是在材质中实现强度控制的方式。

通过调整 菲涅尔强度(Fresnel Intensity) 参数,你可以控制表面上菲涅尔效果的强度。将值设置为 0 会关闭效果,设置为其他值会逐渐提高菲涅尔效果的可视性,如下所示。

输入混合

菲涅尔节点是一种多功能工具,用于在 Lerp 节点中的两个不同输入之间进行alpha混合。

在下图中,Alpha 输入中的菲涅尔节点将控制Lerp上的输入A和B中红色和绿色之间的过渡。

通过相同的逻辑,你可以使用菲涅尔控制网格体上不同 粗糙度(Roughness) 值的位置。在下图中,菲涅尔用于在边缘处的粗糙度值0.1与朝向球体中心处的0.9之间过渡。这会造成球体在边缘附近反射性更强的错觉,类似于玻璃的表现方式。

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

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

相关文章

Threejs环境、透视相机、坐标系、光源

文章目录 如何引入threejsnpm方式script方式script module方式 基本流程与坐标摄像机Geometry(几何体)和Material(材质)光源 如何引入threejs 对于很多刚刚上手threejs的朋友,可能第一步引入threejs就出问题了, 明明已经导入了,就是这样问题…

【搭建Nacos服务】centos7 docker从0搭建Nacos服务

前言 本次搭建基于阿里云服务器系统为(CentOS7 Linux)、Nacos(2.0.3)、Docker version 26.1.4 本次搭建基于一个新的云服务器 安装java yum install -y java-1.8.0-openjdk.x86_64安装驱动以及gcc等前置需要的命令 yum install …

【nvm管理nodejs版本,切换node指定版本】

nvm管理nodejs版本 nvm管理nodejs版本主要功能使用 nvm nvm管理nodejs版本 nvm(Node Version Manager)顾名思义node版本管理器,无须去node管网下载很多node安装程序;用于管理多个 Node.js 版本的工具。它允许你在同一台机器上同时安装和管理…

Appium启动APP时报错Security exception: Permission Denial

报错内容Security exception: Permission Denial: starting Intent 直接通过am命令尝试也是同样的报错 查阅资料了解到:android:exported | App quality | Android Developers exported属性默认false,所以android:exported"false"修改为t…

基于java+springboot+vue实现的图书商城管理系统(文末源码+Lw)283

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本图书商城管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信…

rpm包下载

内网无法下载、选择外网的一台机器下载rpm包 下载后上传rpm包 1、创建下载目录 mkdir /data/asap/test 2、下载能留存包的工具 sudo yum install yum-utils -y 报错就是环境问题没下载成功,我换了个环境正常的机器就可以了 3、下载rpm包到指定目录/data/asa…

测试人员如何管理项目与风险预警

在平时工作过程中,你有没有因项目延时,需求频繁变更,开发提测质量不高,以及漏测的情况下,背了不少锅的情况呢? 作为测试人员,我们应该如何发挥积极主动性,进行项目管理,有…

【学术会议征稿】2024年第十届机械制造技术与工程材料国际学术会议(ICMTEM 2024)

2024年第十届机械制造技术与工程材料国际学术会议(ICMTEM 2024) 2024 10th International Forum on Manufacturing Technology and Engineering Materials 第十届机械制造技术与工程材料国际学术会议(ICMTEM 2024)将于2024年10月…

(七)[重制]C++命名空间与标准模板库(STL)

​ 引言 在专栏C教程的第六篇C中的结构体与联合体中,介绍了C中的结构体和联合体,包括它们的定义、初始化、内存布局和对齐,以及作为函数参数和返回值的应用。在专栏C教程的第七篇中,我们将深入了解C中的命名空间(nam…

linux 基础命令、gcc的基础用法

1、ls——>列出目录下的内容 语法:ls [-a -l -h] [Linux路径] (1)-a -l -h 是可选的选项 (2)Linux路径是此命令的可选参数 ①当不使用选项和参数,直接使用 ls 命令本体,表示:…

kubernetes集群部署:环境准备及master节点部署(二)

主机名IPv4地址IPv6地址角色安装组件操作系统k8s130-node190192.168.XX.190240a:XX::190masterkubeadm、kubelet、containerdAnolis OS 8.94.19.91-28.1.an8.x86_64k8s130-node191192.168.XX.191240a:XX::191nodekubeadm、kubelet、cri-oAnolis OS 8.94.19.91-28.1.an8.x86_64k…

Java基础-接口与实现

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 Java 接口 什么是接口? 声明接口 实现接口 继承接口 接口的多继承 标记接口 Java 接口 …

华为仓颉可以取代 Java 吗?

大家好,我是君哥。 在最近的华为开发者大会上,华为亮相了仓颉编程语言,这是华为历经 5 年,投入大量研发成本沉淀的一门编程语言。 1 仓颉简介 按照官方报告,仓颉编程语言是一款面向全场景智能的新一代编程语言&#…

好消息!Stable Diffusion 3 允许商业化,很快开源更大版本模型

7月6日凌晨,著名开源大模型平台Stability AI修改了社区许可协议,最新发布的文生图模型Stable Diffusion 3 Medium允许商业化(以下简称“SD3-M”)。 如果企业、个人开发者每年收入低于100万美元(大约726万元人民币&…

《安全行业大模型技术应用态势发展报告(2024)》

人工智能技术快速迭代发展,大模型应用场景不断拓展,随着安全行业对人工智能技术的应用程度日益加深,大模型在网络安全领域的应用潜力和挑战逐渐显现。安全行业大模型技术的应用实践不断涌现,其在威胁检测、风险评估和安全运营等方…

腐蚀服务器如何设置管理员

可以设置服主与管理员 控制台中设置(需游戏账号在线) 服主 添加:在控制台中输入ownerid空格SteamID 删除:在控制台中输入removeowner空格SteamID 管理员 添加:在控制台中输入moderatorid空格SteamID 删除&#…

C++:二维数组的遍历

方式一&#xff1a; #include <vector> #include <iostream> int main() { // 初始化一个2x3的二维向量&#xff08;矩阵&#xff09; std::vector<std::vector<float>> matrix { {1.0, 2.0, 3.0}, // 第一行 {4.0, 5.0, 6.0} // 第二行 };…

【Python文件】操作终极指南:高效管理和处理文件系统的必备技能

目录 ​编辑 1. 文件的基础操作 1.1 打开/关闭文件 ​编辑 示例代码 文件对象 使用with语句打开文件 2. 读文件 2.1 使用read方法读取文件 2.2 使用readline方法读取文件 2.3 使用readlines方法读取文件 2.4 使用for循环读取文件 3. 写文件 3.1 使用write方法写文…

B组亚太赛数学建模

问题1 1.对训练数据集进行数据清洗&#xff0c;处理缺失值和异常值。 2.采用散点图作为可视化手段。 3.采用皮尔逊相关系数进行相关性分析。 4.提出预防措施。 问题2 1.采用k-means聚类算法将洪水概率分为高中低三个群组。 2.通过线性回归模型计算特征权重。 3.选择特定…