草庐IT

UE5学习笔记(二)——3D材质蓝图的常用节点介绍

weixin_35106335 2024-04-24 原文
什么是材质:材质是模型表面涂抹的油漆,多层油漆形成了物理基础渲染(PBR Physically Based Rendering),它可以模拟自然界的任何材料的视觉效果。

双击一个材质,可以打开材质蓝图(Material Graph)
基础的四个属性为:

在使用材质蓝图时,以下几个快捷操作可以方便你使用:
按住右键移动整个蓝图
滚轮可以放大缩小蓝图视图
拖动左键框选可以选中多个节点
右键空白后,输入关键词,快速加入节点
法线纹理可以直接拖入蓝图中,生成节点
按住alt点击已连接的接口,可以断开接口
以下几个快捷键可以快速插入常用节点:
按住数字1,2,3左键点击空白区域,可以快速插入常数值、二位数值、三维数值
空白处按住U点击左键,添加纹理坐标(Texture Coordinate)节点,用于调整贴图的UV信息,放大缩小或是移动贴图
空白处按住M点击左键,添加正片叠底(Multiply)节点,用于对图片进行快速处理,规则类似PS里的正片叠底
空白处按住L点击左键,添加插值(Lerp)节点,通过一张蒙版图混合两个图片/颜色
以下会有详细说明。

先介绍一下UE5新手包中的贴图类型及用法:
漫反射贴图:为材质提供基本颜色。上下左右连贯,颜色丰富。
粗糙度贴图:基本为灰度图,提供材质上的细节质感。
法线贴图:由RGB构成,用色值代表向量值,去模拟光影,最终可以在平面上模拟出凹凸感。
每一种贴图的生成方式暂未明确,后续补充。

接下来说一下上文提到的几个常用节点的详细用法:

纹理坐标(Texture Coordinate)

任何贴图都是由UV值的,简单说来就是XY轴,U相当于X,代表横向坐标;V相当于Y,代表纵向坐标。
打个简单的比喻,如果模型是一头羊,贴图就是羊皮,纹理坐标就是控制这个羊皮在特定的位置。
当我改变了纹理坐标,有可能会把羊的脸移动到羊的背上,或者在屁股上出现两只羊角。
当想改变贴图位置,大小时,就可以使用这个节点。是一个非常常用的节点。
右键后搜索Texture Coordinate可以找到,或者快捷键U+鼠标左键。
用法就是把这个连在贴图的UVs上,并改变里面的U值和V值。
当有多个贴图想要同时变化时,就可以全部连上1个,改一个节点就可以引起多个变化,不会出现不同步。

正片叠底(Multiply)

用过PS的朋友都知道正片叠底,大致原理就是会取两张图片同一位置色值大的那个。
例如一个白色的羽毛球加一个红色图片,就会变成一个红色的羽毛球,但是对黑色无效。
右键后搜索Multiply,或者快捷键首字母M+鼠标左键,可建立该节点。
该节点支持2个资源混合,就不用在ps里费劲的调色了。
这张图可以很明显看出效果:
这个节点的另一种用法是改变值,如图所示,它可以通过传入一个值,改变整张贴图的深浅,值的范围是0-1。

插值(Lerp)

这个节点的打开方式稍微有点复杂,需要右键后搜索LinearInterpolate,搜lerp是没法直接定位到的,但是可以 快捷键首字母L+鼠标左键。
这个节点是通过蒙版Alpha的强度,去确定两个输入值获取颜色的比例,蒙版黑色区域显示为A值,白色的区域显示为B值。
因为本地没有明显的黑白通道图,我找到一张很棒的示意图,一眼就能看懂。截图资源来自网络视频,如有侵权请联系我。

调节法线强度(FlattenNormal)

这是一个比较冷门的节点,据说在官方文档上查不到,但是如果使用到了法线贴图,这个节点就用来调整凹凸程度。
值的范围在0-1,如果大于1的话,原本凹下去的位置会凸出来。
用法如下图

切换参数(Switch Param)

右键搜索StaticSwitchParameter,添加这个节点,因为是个参数,所以一定要为该节点起名。
这个节点里面一共true和false两个值,就好像一个火车轨道,如果搭了true,就走上面,如果搭了false,就走下面。
用法是这样的:
如上图所示,我新建了一个Has Cover的开关,并且为它接了两条路。
但其实我的起点都是Base texture,只不过如果为True,我的小火车就要绕道从上面的红油漆里走一下,就是这个原理。
这个节点最大的用途是在建立父素材的时候,可以在初期就想好一些可以快速调整的设置,当建立子素材之后,通过打勾就可以很快的改动里面的效果,比如这个红油漆的效果,我就可以直接关掉。
目前想到的应用场景就是用开关控制身上溅了血,过一会血消失了,就把开关关了。还没用都开始想上了,不愧是我。

父素材机制

UE5提供了一个很强大的父素材机制,这在ps里面叫智能对象,在axure里面叫母版,在unity里面叫perfab,在c#里面叫父类继承(略微有点不一样,但是目标是一致的)
这个功能的目的,是为开发者在开发过程中提供便捷。
在制作多个内容时,如果有很大一部分内容是重复,就可以将重复的部分封起来,只将需要修改的部分露出来,提供给后续制作相同内容时使用,让开发过程逻辑更加清晰,更加方便。
不过这种开发方式,对开发者也产生了新的要求,只完成逻辑是不够的,还需要有大局观,在开发父素材的时候就要考虑到后续的扩展性,并开放必要的参数出来调整。
当一个节点内容需要被开放出来时,可以点击节点,选择Convert to Parameter,并起名。
在父素材上右键,选择Create Material Instance,双击新建的子素材,就不需要再去做一次蓝图,而是在面板的Parameter Groups中看到被开放出来的各种参数,直接进行调节。

有关UE5学习笔记(二)——3D材质蓝图的常用节点介绍的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  3. UE4 源码阅读:从引擎启动到Receive Begin Play - 2

    一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame

  4. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  5. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  6. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

  7. [Vuforia]二.3D物体识别 - 2

    之前说过10之后的版本没有3dScan了,所以还是9.8的版本或者之前更早的版本。 3d物体扫描需要先下载扫描的APK进行扫面。首先要在手机上装一个扫描程序,扫描现实中的三维物体,然后上传高通官网,在下载成UnityPackage类型让Unity能够使用这个扫描程序可以从高通官网上进行下载,是一个安卓程序。点到Tools往下滑,找到VuforiaObjectScanner下载后解压数据线连接手机,将apk文件拷入手机安装然后刚才解压文件中的Media文件夹打开,两个PDF图打印第一张A4-ObjectScanningTarget.pdf,主要是用来辅助扫描的。好了,接下来就是扫描三维物体。将瓶

  8. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  9. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  10. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

随机推荐