Choose your operating system:
Windows
macOS
Linux
在此页面中,您将找到可用的矢量表达式,这些表达式可输出映射至RGBA的矢量。这些表达式可用于大量不同的效果,用于为操作创建材质,例如,获取对象在世界场景空间中的位置 以便材质可以做出响应,或者当进入特定区域时变换字符的颜色。此外,还有许多其他表达式 允许您控制空间局部风格材质效果,您可以查看下面的示例了解更多信息。
ActorPositionWS
ActorPositionWS 输出矢量3(RGB)数据,该数据表示对象在世界场景空间中的位置以及其上的材质。
在此示例中,您可以看到ActorPositionWS被直接输入到材质的底色(Base Color)中。因此,当每个球体被移至三维空间中的不同位置时,每个球体以及应用于它们的材质将显示不同的颜色。请注意,ActorPositionWS节点的结果将除以1600,以创建一个漂亮的混合颜色,而不是流行颜色。
CameraPositionWS
CameraWorldPosition 表达式输出三信道矢量值,该值表示摄像机在世界场景空间中的位置。
当摄像机旋转时,预览球体会改变颜色。
CameraVectorWS
CameraVector 表达式输出一个三信道矢量值,该值表示摄像机相对于表面的方向,即像素到摄像机的方向。
使用示例: CameraVector通常通过将CameraVector连接到ComponentMask并使用CameraVector的x和y信道作为纹理坐标,来用于虚设环境贴图。
Constant2Vector
Constant2Vector(常量 2 矢量)表达式输出双通道矢量值,即输出两个常量数值。
项目 |
说明 |
|
---|---|---|
属性 |
||
R |
指定表达式所输出的矢量的红色(第一个)通道的浮点值。 |
|
G |
指定表达式所输出的矢量的绿色(第二个)通道的浮点值。 |
示例:(0.4, 0.6) 和 (1.05, -0.3)
用法示例:Constant2Vector(常量 2 矢量)对于修改纹理坐标非常有用,因为这些坐标也是双通道值。
通过在材质编辑器的图形区域中按住 2 键并 单击鼠标左键,可快速创建 Constant2Vector(常量 2 矢量)节点。
Constant3Vector
Constant3Vector(常量 3 矢量)表达式输出三通道矢量值,即输出三个常量数值。您可以将 RGB 颜色看作 Constant3Vector(常量 3 矢量),其中每个通道都被赋予一种颜色(红色、绿色、蓝色)。
项目 |
说明 |
|
---|---|---|
属性 |
||
R |
指定表达式所输出的矢量的红色(第一个)通道的浮点值。 |
|
G |
指定表达式所输出的矢量的绿色(第二个)通道的浮点值。 |
|
B |
指定表达式所输出的矢量的蓝色(第三个)通道的浮点值。 |
示例:(0.4, 0.6, 0.0) 和 (1.05, -0.3, 0.3)
通过在材质编辑器的图形区域中按住 3 键并 单击鼠标左键,可快速创建 Constant3Vector(常量 3 矢量)节点。
Constant4Vector
Constant4Vector(常量 4 矢量)表达式输出四通道矢量值,即输出四个常量数值。您可以将 RGBA 颜色看作 Constant4Vector(常量 4 矢量),其中每个通道都被赋予一种颜色(红色、绿色、蓝色、alpha)。
项目 |
说明 |
|
---|---|---|
属性 |
||
R |
指定表达式所输出的矢量的红色(第一个)通道的浮点值。 |
|
G |
指定表达式所输出的矢量的绿色(第二个)通道的浮点值。 |
|
B |
指定表达式所输出的矢量的蓝色(第三个)通道的浮点值。 |
|
A |
指定表达式所输出的矢量的alpha(第四个)通道的浮点值。 |
示例:(0.4, 0.6, 0.0, 1.0) 和 (1.05, -0.3, 0.3, 0.5)
通过在材质编辑器的图形区域中按住 4 键并 单击鼠标左键,可快速创建 Constant4Vector(常量 4 矢量)节点。
LightVector
该表达式在虚幻引擎4中已被弃用,因为照明计算现已被推迟。
Object Bounds
对象边界(Object Bounds) 表达式输出对象在每个轴中的大小。如果用颜色表示,X轴、Y轴、Z轴分别对应于R、G、B。
在上面的示例中,您可以看到对象的颜色对应于对象的最长轴。
ObjectOrientation
ObjectOrientation 表达式输出对象的世界场景向上矢量。换言之,对象的局部正z轴正指向此方向。
ObjectPositionWS
ObjectPositionWS 表达式输出对象边界的世界场景空间中心位置。例如,这对于为植物创建球形照明很有用。
粒子位置WS
粒子位置WS(ParticlePositionWS) 表达式输出代表世界场景空间中每个单独粒子位置的Vector3(RGB)数据。
在这幅图像中,粒子位置WS(ParticlePositionWS)被馈送到自发光颜色中来显示数据。粒子系统被放大以显示颜色是如何根据位置变化的。
PixelNormalWS
PixelNormalWS 表达式根据当前法线输出矢量数据,该数据表示像素所面对的方向。
在此示例中,PixelNormalWS被输入到底色(Base Color)中。请注意,法线贴图用于给出逐像素结果。
Pre-Skinned Local Normal
预蒙皮局部法线(Pre-Skinned Local Normal) 矢量表达式输出一个三信道矢量值,该值表示骨架网格体和静态网格体的局部表面法线。这让您能够实现局部对齐的三平面 材质以及在材质中实现网格体对齐效果。
在此示例中,材质使用与网格体局部表面法线对齐的三平面纹理。
|
|
---|---|
三平面预蒙皮局部法线(Tri-Planar Pre-Skinned Local Normal)矢量表达式 |
三平面材质 |
Pre-Skinned Local Position
预蒙皮局部位置(Pre-Skinned Local Position) 矢量表达式输出一个三信道矢量值,该值允许访问骨架网格体的默认姿势位置以便在每个顶点 输出中使用。这使您能够在动画角色上获得局部化效果。该矢量表达式也可用于静态网格体,它将返回 标准局部位置。
在此示例中,骨架网格体的默认姿势用于对比贴图与右侧的默认UV贴图。
|
|
---|---|
预蒙皮局部位置(Pre-Skinned Local Position)矢量表达式 |
骨架网格体的默认UV布局 |
ReflectionVectorWS
ReflectionVectorWS 表达式在本质上类似于CameraVectorWS,但它输出一个三信道矢量值,该值表示通过表面法线反射的摄像机方向。
使用示例:ReflectionVector通常用于环境贴图,其中反射矢量的x/y分量被用作UV输入立方体贴图纹理。
VertexNormalWS
VertexNormalWS 表达式输出世界场景空间顶点法线。它只能用于在顶点着色器中执行的材质输入,例如WorldPositionOffset。该表达式对于设置网格体增大或缩小很有用。请注意,沿法线偏移位置会导致几何图形沿UV缝隙拆分。
在上面的示例中,由于每个顶点在各自的法线方向上移动,预览球体似乎会随着正弦运动按比例放大和缩小。
Vector Noise
矢量噪点材质(Vector Noise Material)表达式添加了更多的三维或四维矢量噪点结果以在材质中使用。由于这些函数会产生运行时间开销,建议在使用它们开发外观之后,使用虚幻引擎4.13及其后续版本中引入的绘制材料以渲染目标蓝图功能将所有或部分计算烘焙到纹理中。这些材质表达式允许在最终资源的引擎中开发程序外观,从而提供了一种使用外部工具创建程序生成的纹理以应用于UE4中的资源的替代方法。在矢量噪点材质表达式(Vector Noise Material Expression)中,您将看到以下矢量噪点类型。
图像 |
选项 |
说明 |
---|---|---|
|
单元格噪点(Cellnoise) |
为三维网格中的每个对象返回随机颜色(即从应用于节点输入的数学下限运算)。对于给定位置,结果始终保持一致,因此可以提供一种可靠的方法来将随机性添加到材质中。该矢量噪点(Vector Noise)函数的计算非常便宜,因此没有必要为了性能而将它烘焙到纹理中。 |
|
Perlin三维噪点(Perlin 3D Noise) |
为三维网格中的每个对象返回随机颜色(即从应用于节点输入的数学下限运算)。对于给定位置,结果始终保持一致,因此可以提供一种可靠的方法来将随机性添加到材质中。该矢量噪点(Vector Noise)函数的计算非常便宜,因此没有必要为了性能而将它烘焙到纹理中。 |
|
Perlin梯度(Perlin Gradient) |
计算标量Perlin Simplex噪点的分析三维梯度。输出为四个信道,其中前三个(RGB)为梯度噪点,第四个(A)为标量噪点。该噪点类型对于表面上的凹凸或者流动贴图很有用。 |
|
Perlin梯度(Perlin Gradient) |
计算矢量Perlin Simplex噪点(又名旋度噪点)的分析三维旋度。输出为一个三维有向旋度矢量,它对流体或粒子流动很有用。 |
|
Voronoi |
计算与标量噪点材质节点相同的Voronoi噪点。标量Voronoi噪点在三维空间中散射种子点,并返回与相隔最近的一个种子点的距离。矢量噪点(Vector Noise)变体返回RGB中最近的种子点的位置,以及在A中与它相隔的距离。特别是与单元格噪点(Cellnoise)结合使用时,这可以允许每个Voronoi单元格执行一些随机行为。 |
下面是一个简单的石床材质,使用矢量噪点(Vector Noise)/Voronoi的距离分量,并结合矢量噪点(Vector Noise)/单元格噪点(Cellnoise),来调整一些表面凹凸并在缝隙和种子位置中混合苔藓,以更改每块岩石的颜色和凹凸高度。
正如普通的Perlin噪点一样,基于导数的Perlin旋度和Perlin梯度运算也可以按倍频添加在一起。对于更复杂表达式的导数,有必要计算表达式结果的梯度。为了帮助实现这一点,可以将要计算的表达式放入一个材质函数中,并将其与以下辅助节点一起使用。
选项 |
说明 |
---|---|
Prepare3DDeriv |
利用四面体图形中的位置偏移计算三维导数。在该函数产生的每个偏移位置计算同一个三维函数,然后将结果值输入Compute3DDeriv。 |
Compute3DDeriv |
利用四面体图形中的位置偏移计算三维导数。与Prepare3DDeriv一起使用。 |
GradFrom3DDeriv |
根据Prepare3DDeriv/Compute3DDeriv的结果计算三维梯度矢量。 |
CurlFrom3DDeriv |
根据Prepare3DDeriv/Compute3DDeriv的结果计算三维矢量场的旋度。 |
这些辅助材质函数使用四面体图形中间隔的基本表达式的四个求值来近似计算这些基于导数的运算。
您将在下面看到各种噪点函数的相关说明,这些函数可以在矢量噪点材质表达式(Vector Noise Material Expression)中找到。
项目 |
说明 |
||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
属性 |
|||||||||||||
函数 |
|
||||||||||||
质量(Quality) |
外观/性能设置。值越小,速度越快,但可能外观越差;值越大,速度越慢,但可能外观越好。 |
||||||||||||
平铺(Tiling) |
对于支持它的噪点函数,它允许平铺噪点。此函数使用成本较高,但在将噪点烘焙到无缝缠绕纹理时很有用。 |
||||||||||||
平铺大小(Tile Size) |
平铺时噪点应多久重复一次。对于Perlin噪点变体,平铺大小(Tile Size)必须是三的倍数。 |
||||||||||||
Inputs |
|||||||||||||
位置(Position) |
允许通过三维矢量来调整纹理大小。 |
单元格噪点(Cell Noise) 材质示例:
Perlin梯度(Perlin Gradient) 材质示例:
Voronoi 材质示例: