UE 材质学习补充

news2024/11/22 16:07:45

Add Name Reroute Node ...(本地变量)

        该节点可以整理节点,优化界面

Texture

        Texture(纹理图像),一般由RGB三个通道混合构成,RGB三个通道的值代表亮度,RGB三个通道分别都是0-1(0-255)的黑白图。

补充:Texture有四个通道(RGBA),A:透明通道,通常我们并不会塞入A通道反而是把A通道删去,因为在UE游戏引擎里A通道的体积较大,所以我们只需要RGB通道即可。

        我们可以在RGB通道里分别塞入,金属度,粗糙度,AO,置换贴图等等一些只有灰度的纹理图像,这样做可以小幅度优化性能减少采样次数。 此时Texture由多个贴图混合而成,每个通道代表一张贴图。

补充:如果你的三个通道都塞入了一些灰度图纹理,命名方式也要按照RGB的顺序来表示分别塞入了什么纹理,比如R通道:粗糙度,G通道:金属度,B通道:AO。所以我们通常命名为“T_RMAO”。如果B通道为置换贴图,那么我们可以命名为“T_RMD”等等

例子 

        通过改变Roughness(粗糙度),实现生锈(脏)的效果

 Texture设置

 Has Alpha Channel表明没有透明通道(即该纹理没有A值,只有RGB),此时应该勾选Compress Without Alpha。

Compression Setting:设置纹理压缩模式,根据作用选择不同的值(一般选默认),如果是法线纹理选法线。

当该纹理参与基础颜色显示时,勾选sRGB,否则不勾选。

当纹理不参与基础颜色显示时,Sampler Type设置为:Linear Color(即sRGB不勾选),当纹理参与基础颜色显示时,Sampler Type设置为:Color(即sRGB勾选),为法线纹理时选择法线。

TexCoord(UV)

        通过UV进行平铺,值越大,图片重复的越多,蹄片越小,U从左到右,V从上到下。将三维的物品映射到二维。

例子:

 Panner

        让贴图平移,达到流动的效果,(通过改变UV坐标实现效果)

补充: 两种效果一样

 拓展:多行贴图平移

Sine

        用于做周期变化,输出【-1,1】区间的值

Staturate

        将值限制到【0,1】区间,开销比clamp小,更节省性能。

补充:

 当将某一区间值限制到另一区间时,可以考虑用映射。

拓展:

当想控制水平与垂直做不同行为时,可以用两张贴图

World Position Offest(世界位置偏移)

        输入允许网格体的顶点在世界空间中由材质操纵。这有助于实现使对象移动、改变形状、旋转和各种其他效果。这适用于环境动画之类的内容 

补充:

但需要注意:当使用世界位置偏移(World Position Offset)将对象扩展到超出其原始边界时需注意,渲染程序仍将使用那些原始边界。这意味着你可能会看到剔除和阴影错误。你可以进入一个网格体的属性,设置它的 范围边界(Scale Bounds) 属性来进行补偿,但这样会影响性能,并可能导致投影错误。

例子: 改变石头位置

 通过两个sine相加,制造随机性。

CheapContrast(低成本对比度)

CheapContrast(低成本对比度)函数通过将直方图的高端重新映射到低端值,并将直方图的低端重新映射到高端值,提升输入的对比度。这类似于在 Photoshop 中应用色阶调整,以及将黑色和白色标志拉入到一个位中。用户可控制提升对比度的程度。

补充: 

CheapContrast_RGB(低成本对比度_RGB)

CheapContrast_RGB(低成本对比度_RGB)函数通过将直方图的高端重新映射到低端值,并将直方图的低端重新映射到高端值,提升输入的对比度。这类似于在 Photoshop 中应用色阶调整,以及将黑色和白色标志拉入到一个位中。用户可控制提升对比度的程度。

与普通的 *CheapContrast(低成本对比度)函数*不同,此函数可接收"矢量 3"作为输入,从而允许其对彩色图像执行对比度操作。

SmoothThreshold(平滑阈值)

SmoothThreshold(平滑阈值)函数接收渐变、插值率和阈值(分界值)。然后,它根据输入,将平滑对比度应用于渐变。

Tip:尽可能用一个高纬变量代替几个低纬变量

 可以减少节点数量,便于维护与拓展,提高开发效率。

  材质节点的输出值,是根据输入值决定的,RGB通道不是一定输出的就是颜色。

颜色 

构成:Brightness(亮度), Stauration(饱和度), Contrast(对比度), Tint(色彩)

Desaturation(去饱和度) :

表达式对其输入进行去饱和,即根据特定百分比将其输入的颜色转换为灰色阴影 

Fraction = 0时

Fraction = 10时

Normal:法线 

UE支持的是DirectX格式的法线,如果想用OpenGL的法线,需要勾选Flip Green Channel

 补充:

DirectX是左手坐标系,OpenGL是右手坐标系,区别是y轴相反。

FlattenNormal:改变法线强度

 

材质属性

建立材质属性(Make Material Attributes) 

        节点用于定义主材质节点上的标准材质属性,将其集合,然后在一个输出进行传送。这对于创建分层材质非常有用,因为它允许你在材质函数中定义一整个材质并在父级材质中使用该数据。你还可以将其用于复杂的材质设置,定义多个材质类型并将其混合,全部在一个材质资产中进行。

建立材质属性节点

将建立材质属性节点连接到材质时,必须确保材质属性中的使用材质属性选项设为true(勾选)。这会将主材质节点折叠为一个输入,可以接收来自建立材质属性节点的输入数据。

使用材质属性选项

 建立材质属性会被设置材质属性节点覆盖,大部分情况下应该使用后者。

设置材质属性(Set Material Attributes) 

        表达式和建立材质属性的功能一样。它用于定义一组材质属性,并将其打包后在单根引线中传输。

        建立材质属性节点默认显示所有标准材质属性,而设置材质属性节点上显示的输入由用户在 细节面板(Details panel) 中定义。这意味着你可以仅使用需要的材质属性。

设置材质属性数组

用设置材质属性表达式替代建立材质属性可以节约空间,让材质图表更加简洁。 

 中断材质属性(Break Material Attributes)

        表达式可以切分输入的一组材质属性,并将每个属性在单独的引脚输出。这对于创建分层材质非常有用,因为它允许你在材质分层函数中访问每个单独的属性。这样你可以选择要插入主材质节点的属性,并且可以用材质图表中的逻辑选择性地编辑属性。

中断材质属性示例

获取材质属性(Get Material Attributes)

        与中断材质属性作用相同,但是有很多工作流程上的好处。它不会像中断材质属性那样分割所有的输入材质属性,而是可以选择要提取的属性。选中该节点然后在 细节面板(Details Panel) 中点击 添加元素(Add Element) 图标来添加输出节点 

获取材质属性细节面板

你可以使用下拉菜单来定义每个数组元素对应哪个材质属性。

修改获取材质属性节点的数组元素

下图展示的材质复原了中断材质属性小节中的染色镀铬示例,但是使用了获取和设置材质属性表达式。注意图表看起来更简洁,引线更少。

材质图表中的获取材质属性

在该示例中,只有粗糙度数据从材质属性中分割出来。一个染色参数添加到了粗糙度映射,以此来造成表面的变化,其结果由一个设置材质属性节点传送进基础颜色。其余的材质属性不经过修改直接传送。

材质属性输出引脚

混合材质属性(Blend Material Attributes) 

        表达式使用两组材质属性,并且用Alpha输入中定义的像素级别操作来将其混合在一起。举个例子,该材质分层混合将上下两组材质属性用一个遮罩纹理进行混合。

混合材质属性示例

Texture Object 

        当讲材质函数的输入类型改为Tuxture2D时,需要输入Texture Object而不是Texture Sample

TextureObject(纹理对象)

        表达式用来为函数内的纹理函数输入提供默认纹理。此节点不会对该纹理进行实际取样,因此必须与"纹理取样"(TextureSample)节点配合使用。 

TextureSample 

        表达式输出纹理中的颜色值。此纹理可以是常规Texture2D(包括法线贴图)、立方体贴图或电影纹理。

TextureProperty 

        用于公开你选择的纹理属性,例如纹理大小或纹素大小。

深度 

DepthFade(深度消退)

        表达式用来隐藏半透明对象与不透明对象相交时出现的不美观接缝。

PixelDepth(像素深度)

        表达式输出当前所渲染像素的深度,即该像素与摄像机之间的距离。

SceneDepth(场景深度)

        表达式输出现有的场景深度。这类似于 PixelDepth(像素深度),但是 PixelDepth(像素深度)只能在当前所绘制像素处进行深度取样,而 SceneDepth(场景深度)可以在 任何位置 进行深度取样。

CameraDepthFade

 

 

 

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

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

相关文章

征服FarmerJohn(二) Naptime【USACO05JAN】

题解目录 前言题目内容题目描述输入输出样例题目思路示例代码AC图片 后记往期精彩 前言 在上一期征服FarmerJohn(一)三角形【USACO2020FEB-B】结束之后,我们来看一道难度有所提升的DP问题,也就是常说的动态规划,今天我…

Please set the ROCKETMQ_HOME variable in your environment!

原因 启动ROCKETMQ执行命令start mqnamesrv.cmd时报错 翻译意思是请在您的环境中设置ROCKETMQ_HOME变量! 查看mqnamesrv.cmd可以看到如果"%ROCKETMQ_HOME%\bin\runserver.cmd"不存在会报此错误 配置上环境变量ROCKETMQ_HOME即可

《深入理解计算机系统》(美)布赖恩特(Bryant,R.E.) 等

适合对象:对计算机感兴趣的朋友。 需要相关资料的可私信我。 持续更新中: 第一章:计算机系统漫游 主要知识点:解读全书结构框架,解释OS的原理和相关硬件软件。计算机系统是由硬件和系统软件组成,共同协作…

kafka消费者api和分区分配和offset消费

kafka消费者 消费者的消费方式为主动从broker拉取消息,由于消费者的消费速度不同,由broker决定消息发送速度难以适应所有消费者的能力 拉取数据的问题在于,消费者可能会获得空数据 消费者组工作流程 Consumer Group(CG&#x…

如何在 SwiftUI 中使用 Touch ID 和 Face ID?

1. 需要通过指纹,面容认证后才能打开 App 2. 添加配置 需要向 Info.plist 文件中添加一个配置,向用户说明为什么要访问 添加 Privacy - Face ID Usage Description 并为其赋予值 $(PRODUCT_NAME) need Touch Id or Face ID permission for app lock 3. …

RTC在不同业务场景下的最佳音质实践

背景介绍 WebRTC是目前实时音视频领域最流行的开源框架。2010年Google收购GIPS引擎后,将其纳入Chrome体系且开源后, 命名为“WebRTC”。WebRTC获得各大浏览器厂商的支持并纳入W3C标准,促进了实时音视频在移动互联网应用中的 普及。2021年1月&…

算法练习——力扣随笔【LeetCode】【C++】

文章目录 LeetCode 练习随笔力扣上的题目和 OJ题目相比不同之处?定义问题排序问题统计问题其他 LeetCode 练习随笔 做题环境 C 中等题很值,收获挺多的 不会的题看题解,一道题卡1 h ,多来几道,时间上耗不起。 力扣上的题…

Pytorch个人学习记录总结 06

目录 神经网络-卷积层 torch.nn.Conv2d 神经网络-最大池化的使用 torch.nn.MaxPool2d 神经网络-卷积层 torch.nn.Conv2d torch.nn.Conv2d的官方文档地址 CLASS torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, biasTrue,…

TMS FNC Dashboard Pack Crack

TMS FNC Dashboard Pack Crack TTMSFNCWidgetProgress:循环进度指示器 TTMSFNCWidget设定值:带范围和设定值的值指示器 TTMSFNCWidgetMultiProgress:多个值的基于同心圆的进度指示器 TTMSFNCWidgetDistributionIndicator:各种模式…

【Kubernetes部署篇】ingress-nginx高可用架构实施部署

文章目录 一、环境说明二、实施过程1、部署Ingress Controller2、安装并配置Nginx3、安装并配置Keepalived3、测试keepalived主备切换 三、创建Ingress规则,测试七层转发 一、环境说明 1、环境说明: IP地址主机名称备注16.32.15.201node-1K8S节点16.32…

AMS358i和施耐德TM241 EtherNet 通信

产品、配件及工具型号 设备名称 型号 数量 激光测距 AMS358i 1 直流电源24VDC 1 连接电缆 KD U-M12-5A-V1-050 1 交换机 1 施耐德PLC TM241 1 AMS358i通信网线 KSS ET-M12-4A-RJ45-A-P7-020 1 网线 双向水晶头 2 电气连接图及说明 点击桌面的Somachi…

【NLP】使用 Keras 保存和加载深度学习模型

一、说明 训练深度学习模型是一个耗时的过程。您可以在训练期间和训练后保存模型进度。因此,您可以从上次中断的地方继续训练模型,并克服漫长的训练挑战。 在这篇博文中,我们将介绍如何保存模型并使用 Keras 逐步加载它。我们还将探索模型检查…

虹科活动 | 虹科ADAS自动驾驶研讨会

​​虹科ADAS/自动驾驶研讨会将于8月7日在上海闵行展开——加快ADAS/AD开发步伐! 期待您的参与!

Day45: 300.最长递增子序列,674. 最长连续递增序列,718. 最长重复子数组

目录 300.最长递增子序列 思路 674. 最长连续递增序列 思路 718. 最长重复子数组 思路 300.最长递增子序列 300. 最长递增子序列 - 力扣(LeetCode) 思路 1. 确定dp数组及其下标含义 dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列…

【每日运维】判断服务器时间同步是否正常

对于 ntpd 服务 ntpq -premote:时间同步源的 IP 地址或域名refid:参考 ID,它是一个代表时间源的唯一标识符st:层级,表示时间同步源的层级关系。较低的层级意味着更接近原子钟的时间源t:状态,表…

uni-app:script中设置的data,在界面的显示(包含图片src为data中的数据该如何展示),以及控制台的输出

样式&#xff1a; 两个图标的区别&#xff1a; 第一个图标是图片文件直接在文件夹static中展示 前台代码展示&#xff1a; <image class"logo" src"/static/logo.png"></image> 第二个图标是从服务器端进行的引用 在script中的data中进行的设…

【C++修炼之路】stl 中的容器适配器

&#x1f451;作者主页&#xff1a;安 度 因 &#x1f3e0;学习社区&#xff1a;StackFrame &#x1f4d6;专栏链接&#xff1a;C修炼之路 文章目录 一、stack二、queue三、deque四、priority_queue1、仿函数2、实现 如果无聊的话&#xff0c;就来逛逛 我的博客栈 吧! &#x1…

从新手到大师:优雅的Vim熟练之旅(万文详解)

从新手到大师&#xff1a;优雅的Vim熟练之旅 博主简介一、前言1.1、Vim编辑器的重要性和流行性1.2、目标 二、Vim简介2.1、什么是Vim2.2、历史和背景简介2.3、Vim的优势和适用场景 三、安装和设置Vim3.1、下载和安装Vim编辑器3.2、基本配置&#xff1a;.vimrc文件的重要性和常用…

Spinger ESE独立出版|2023年第二届能源与环境工程国际会议(CFEEE 2023)

会议简介 Brief Introduction 2023年第二届能源与环境工程国际会议(CFEEE 2023) 会议时间&#xff1a;2023年9月1日-3日 召开地点&#xff1a;中国三亚 大会官网&#xff1a;CFEEE 2023-2023 International Conference on Frontiers of Energy and Environment Engineering 由I…

leetcode 491. 递增子序列

2023.7.23 本题本质上也是要选取递归树中的满足条件的所有节点&#xff0c;而不是选取叶子节点。 故在将符合条件的path数组放入ans数组后&#xff0c;不要执行return。 还一点就是这个数组不是有序的&#xff0c;并且也不能将它有序化&#xff0c;所以这里的去重操作不能和之前…