此篇是对 材质蓝图 中经常使用的 材质节点 进行的介绍。
纹理坐标:TextureCoordinate


点击节点,展示在细节面板的参数:
坐标索引:材质可以拥有不止一套UV通道,设置索引值使用通道。(0 第一个通道,1 第二个通道)
U平铺:指定 U 方向上的平铺量。
V平铺:指定 V 方向上的平铺量。
快捷键:U+鼠标左键
一:加、减、乘、除
1.加 Add

相关计算涉及到常量+常量,同维向量+同维向量,多维向量+常量。
(1)常量+常量:
0.6+0.4 结果为:1
(2)同维向量+同维向量:
(0.2,0.3,0.4)+(0.1,0.2,0.3)
结果为:(0.3,0.5,0.7)
解释:材质中每个通道分别相加,最后输出颜色值。
(3)多维向量+常量:
(0.2,0.2)+1 结果:(1.2,1.2)
(0.1,0.2,0.3)+1 结果:(1.1,1.2,1.3)
解释:常量1在材质中表现颜色是白色,白色中的RGBA值全是1,所以常量1转换成多维向量各通道值均为1.然后各通道值进行相加。
2.减 Subtract

原理与加一致,各通道的值进行减法计算,最后输出结果。
示例:0.5与0.2相减得0.3;(0.2,-0.4,0.6)与(0.1,0.1,1.0)相减得(0.1,-0.5,-0.4);(0.2,0.4,1.0)与0.2相减得(0.0,0.2,0.8)
3.乘 Multiply

原理与加一致,各通道的值进行乘法计算,最后输出结果。
示例:0.4与0.5相乘得0.2;(0.2,-0.4,0.6)与(0.0,2.0,1.0)相乘得(0.0,-0.8,0.6);(0.2,-0.4,0.6)与0.5相乘得(0.1,-0.2,0.3)。
注意:最后结果不局限于0-1之间,值大于1时,材质亮度会增加。
4.除 Divide

原理与加一致,各通道的值进行除法计算,最后输出结果。
二:分量蒙版、追加、乘方、贴图旋转、时间驱动、1-、正弦、余弦、常量偏差比例、坐标转换、限制、归一化、点积、线性插值
1.分量蒙版 ComponentMask
可以选择特定通道值进行输出。

上图中提取UV通道值,UV是二维矢量值,所以只有RG两个通道,R通道取得是UV中的U值,G通道取得是UV中的V值。想要输出R通道,就取消勾选G通道。
注意:勾选单个通道输出的是一维向量,勾选两个通道输出的是二维向量。
2.追加 AppendVector

将数值组成新的向量组。例如:A为常量0.2和B为常量0.4使用节点之后,输出结果为(0.2,,04)。
A为向量(0.2,0.4)和B为常量0.1使用节点之后,输出结果为(0.2,0.4,0.1)。
3.次方 Power

Base:基数,就是哪个数
Exp:乘方值,计算多少次方
含义:哪个数要进行多少次方,输出最终值。
4.旋转 CustomRotator

UVs:接受UV坐标值
RotationCenter:旋转中心点坐标值
RotationAngle:旋转角度(输入值会自动转化成0-360度,输入值1,经过节点转换对应的角度为360度)

5.时间驱动

随着时间旋转材质效果,由4、5两个节点完成,

参数:
忽略暂停:如果为true,时间将一直推进,不受游戏暂停的影响。在游戏运行过程中调用暂停命令,勾选此选项的材质会继续产生效果。
6.OneMinus 1- 节点

解释:接受输入值“X”并输出“1 - X”。此操作逐逐通道执行。
举例:0.4的OneMinus值为0.6;(0.2,0.5,1.0)的OneMinus值为(0.8,0.5,0.0);(0.0,-0.4,1.6)的OneMinus值为(1.0,1.4,-0.6)。
7.正弦、余弦
正弦:Sine
注意:不要拼错,是Sine 不是Sign

余弦:Cosine

数学中的正弦、余弦函数,这两个节点可以对输入值进行处理,将输出值控制在-1到1之间。
扩展:
sign节点功能是:
输入值如果为负数,输出值为-1。
输入值如果为0,输出值为0。
输入值如果为正数,输出值为1。
8.常量偏差比例 ConstantBiasScale

输出值为:输入值+1,乘以0.5。
9.坐标转换 搜索 Transform 选择 向量项中的节点名称

将三通道矢量值从一种参考坐标系转换到另一种参考坐标系。输入值是RGB通道的。
简单说 就是用于 空间转换 的节点。选择节点在细节面板可以设置由什么空间转换到什么空间。
10.限制节点Clamp

设置上最小值和最大值后,对输入值进行判断,如果在区间范围内则输出输入值,如果输入值小于Min的值,则返回Min值,如果输入值大于Max的值,则输出Max的值。
11.归一化 Normalize

该节点将输入向量,转换为单位向量。值压缩到(0~1)的范围内
12.点积 DotProduct

可以描述为一个矢量投影到另一个矢量上的长度,最后输出的是一个数。DotProduct要求两个矢量输入具有相同数量的通道。
13.线性插值 LinearInterpolate

根据Alpha的值将A、B两个值进行混合。
如果Alpha为0,那么将使用第一个输入。
如果Alpha为1,那么将使用第二个输入。
如果Alpha介于0.0与1.0之间,那么输出是两个输入之间的混合。
注意:混合按通道进行。Alpha的值要在0-1之间
三、移动、混合、法线强度调整、选择、世界空间顶点法线、菲尼尔、开启置换、深度节点
1.移动节点Panner

参数:
Coordinate接受传入的UV值,如果不连接,默认为ConstCoordinate。
Time:如果不连接,默认跟随游戏时间,一直进行偏移。设置固定值,计算出此值对应的偏移量进行显示,不进行动态变化。此值可以通过蓝图或者过场动画控制输入。
Speed:移动速度。此值为二维向量,分别对应RG通道,影响图片UV两个方向的移动速度。
2.混合 Blend_Overlay

对“底色”(Base)和“混合”(Blend)进行过滤或相乘混合。
Base基色值啊a,0 <= a <= 1, Blend混合色值b,0 <= b <= 1,ab进行混合,输出值分为两种情况:
1.a < 0.5时,输出值为:c = 2ab,0 <= c < 2b
2.a > 0.5时,输出值为:c = 2(1-b)a+(2b-1),2b < c < 1
官方示例:

3.法线强度调整 FlattenNormal

参数:
Normal:法线值
Flatness:平坦度
此节点是用来调节法线强度,经测试输入Flatness值在0-1之间时,值越大材质上的法线效果越平坦。
超过1或者小于0,法线效果会增强。
4.选择 StaticSwitch

参数:
Value:判断条件,用来控制输出值,此值是Bool值。
True:正确时输入的参数
False:错误时输入的参数
5.世界空间顶点法线 VertexNormalWS

此节点输出世界空间顶点法线,只能用于顶点着色器的材质输入,比如WorldPositionOffset。用于设置mesh的增长或收缩。
注意:默认情况下,材质的所有着色器计算都在切线空间中完成。
示例:

通过运算节点,使每个顶点在自己的法线方向上移动,球体看起来会随着正弦运动而缩放。
注意:最后输出连接的是世界场景位置偏移。
6.菲尼尔 Fresnel

菲涅尔公式计算的衰减基于标量乘积的表面法线和相机的方向。当曲面法线朝向摄像机时,输出值为0。当曲面法线垂直于摄像机时,输出值为1。结果限制在[0,1]范围内,以确保中心不产生负片色彩。
Exponentln:指定输出值衰减的速率。值越大,表示衰减越紧密或越快。
BaseReflectFractionln:从表面的方向查看表面时的镜面反射的强度。值越小反射越强,值为1将有效地禁用菲涅耳效应。菲尼尔效果为7.开启置换中第一个图的球体。
利用的是 模型顶点法线与相机法线
示例:玻璃材质制作




7.开启置换

在材质球蓝图编辑器中,点击空白处,细节面板找到曲面细分,修改曲面细分模式及无裂纹置换。

无裂纹置换:置换后不带接缝。
如果想要在此物体上有置换效果需要与世界空间法线顶点节点配合。
注意:结果与世界场景位移连接,

曲面细分乘数:控制表面上曲面细分数量,值越大效果越明显。
置换与法线贴图效果对比:
1.法线贴图是让物体看上去像有凹凸效果。置换是对模型进行了变形。
2.置换更消耗资源。
四、世界场景位置偏移和世界场景位移的区别
世界场景位置偏移:是允许通过材质在世界空间中操作网格体顶点。是对模型顶点进行的操作。
世界场景位移:允许材质在世界空间中操纵曲面细分顶点,是开启置换的操作。
8.深度节点 DepthFade

作用:用来隐藏半透明对象与不透明对象相交时出现的不美观接缝。
参数:
Opacity:接收深度消退前对象的现有不透明度。
FadeDistance:消退距离。

官方示例:


9.CameraVectorWS
表达式输出一个三信道矢量值,该值表示摄像机相对于表面的方向,即像素到摄像机的方向。
示例:
CameraVector通常通过将CameraVector连接到ComponentMask并使用CameraVector的x和y信道作为纹理坐标,来用于虚设环境贴图。

效果:物体表面看到的贴图随着相机移动发生变化。
我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
一、引擎主循环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
我使用“newapp_name”创建了一个新的Rails应用程序,我正在尝试编辑.gitignore文件,但在我的应用程序文件夹中找不到它。我在哪里可以找到它?我安装了Git。 最佳答案 .gitignore位于项目的root中,而不是app子目录中。首先打开终端并进入您的目录。您需要使用ls-a来显示stash文件。然后使用打开.gitignore 关于ruby-on-rails-尝试打开.gitignore以在文本编辑器中对其进行编辑,但在OSXMountainLion上找不到文件位
电脑上可以截取图片吗?如果可以,该如何操作呢?相信很多小伙伴都只知道一两种截图的方式,知道的并不全面。其实,电脑上有多种方式截图的,而且非常方便。电脑怎么截图?今天我们就来教大家如何使用电脑截取图片的8种常用方式!操作环境:演示机型:Delloptiplex7050系统版本:Windows10方法一:系统自带截图具体操作:同时按下电脑的自带截图键【Windows+shift+S】,可以选择其中一种方式来截取图片:截屏有矩形截屏、任意形状截屏、窗口截屏和全屏截图。 方法二:QQ截图具体操作:在电脑登录QQ,然后同时按下【Ctrl+Alt+A】,可以任意截图你需要的界面,可以把截图的页面直接下载,
文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定
写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c
基本上我想选择一个节点(div),其中它的子节点(h1,b,h3)包含指定的文本。Childtext1Childtext2...Childtext3我期待的是/html/div/而不是/html/div/h1我在下面有这个,但不幸的是返回了child,而不是div的xpath。expression="//div[contains(text(),'Childtext1')]"doc.xpath(expression)我期待的是/html/div/而不是/html/div/h1那么有没有一种方法可以简单地使用xpath语法来做到这一点? 最佳答案
尝试使用bundleopen命令打开gem源代码,accordingtoofficialdocumentationandinstruction.因此,我在.profile中导出编辑器:exportBUNDLER_EDITOR=viexportEDITOR=vi并尝试打开例如rails使用控制台的源代码:bundleopenrails出现错误CouldnotlocaleGemfile[ruby-2.1.1][~/]$:rails-vRails4.0.3[ruby-2.1.1][~/]$:bundle-vBundlerversion1.5.3[ruby-2.1.1][~/]$:bundle
我有一个存储JSON数据的列。当它处于编辑状态时,我不知道如何显示它。serialize:value,JSON=f.fields_for:valuedo|ff|.form-group=ff.label:short=ff.text_field:short,class:'form-control'.form-group=ff.label:long=ff.text_field:long,class:'form-control' 最佳答案 代替=f.fields_for:valuedo|ff|请使用以下代码:=f.fields_for:va