坐标表达式
- ActorPositionWS(Actor 全局空间位置)
- CameraPositionWS(摄像机全局空间位置)
- LightmapUVs(光照贴图 UV)
- ObjectOrientation(对象方向)
- ObjectPositionWS(对象全局空间位置)
- ObjectRadius(对象半径)
- Panner(平移)
- ParticlePositionWS(粒子全局空间位置)
- PixelNormalWS(像素全局空间法线)
- Rotator(旋转)
- SceneTexelSize(场景纹素大小)
- ScreenPosition(屏幕位置)
- TextureCoordinate(纹理坐标)
- VertexNormalWS(顶点全局空间法线)
- ViewSize(视图大小)
- WorldPosition(全局位置)
ActorPositionWS(Actor 全局空间位置)
ActorPositionWS(Actor 全局空间位置)输出 Vector3 (RGB) 数据,该数据代表使用此材质的对象在全局空间中的位置。
在此示例中,您可以看到 ActorPositionWS(Actor 全局空间位置)直接输送到材质的“底色”(Base Color)。因此,此材质所应用于的每个球体在 3D 空间中移动到不同位置时将显示不同的颜色。请注意,ActorPositionWS(Actor 全局空间位置)节点的结果将除以 1600 以创建美观的混合颜色,而不是让颜色突变。
CameraPositionWS(摄像机全局空间位置)
CameraWorldPosition(摄像机全局空间位置)表达式输出三通道矢量值,该值代表摄像机在全局空间中的位置。
当摄像机旋转时,预览球体的颜色将发生变化。
LightmapUVs(光照贴图 UV)
LightmapUVs(光照贴图 UV)表达式以双通道矢量值形式输出光照贴图 UV 纹理坐标。如果无法获得光照贴图 UV,那么将输出双通道矢量值 (0,0)。
ObjectOrientation(对象方向)
ObjectOrientation(对象方向)表达式输出对象的全局空间向上矢量。即,对象的局部正向 Z 轴指向此方向。
ObjectPositionWS(对象全局空间位置)
ObjectPositionWS(对象全局空间位置)表达式输出对象界限的全局空间中心位置。例如,在为植物创建球面照明时,此表达式很有用。
ObjectRadius(对象半径)
ObjectRadius(对象半径)输出给定对象以 Unreal 单位计的半径值。系统会对比例缩放加以考虑,并且对于每个对象,结果可能是唯一的。
在此示例中,两个网格都接收此材质,而在此材质中,ObjectRadius(对象半径)将输送到“漫射”(Diffuse)中。ObjectRadius(对象半径)输出将除以 512,以提供更有意义的视觉效果。
Panner(平移)
Panner(平移)表达式输出可用于创建平移(或移动)纹理的 UV 纹理坐标。
项目 | 说明 |
---|---|
属性 |
|
速度 X(SpeedX) | 指定在 U 方向上平移坐标的速度。 |
速度 Y(SpeedY) | 指定在 V 方向上平移坐标的速度。 |
输入 |
|
坐标(Coordinate) | 接收可以通过表达式来修改的基本 UV 纹理坐标。 |
时间(Time) | 接收用来确定当前平移位置的值。这通常是用来提供常量平移效果的 Time(时间) 表达式,但是,也可以使用 Constant(常量) 或 ScalarParameter(标量参数) 来设置特定偏移,或者通过 Matinee 或蓝图来控制平移。 |
Panner(平移)会生成根据“时间”(Time)输入而变化的 UV。“坐标”(Coordinate)输入可用于处理 Panner(平移)节点所生成的 UV(例如,使其偏移)。
ParticlePositionWS(粒子全局空间位置)
ParticlePositionWS(粒子全局空间位置)表达式输出 Vector3 (RGB) 数据,该数据代表每个粒子在全局空间中的位置。
在此图中,将 ParticlePositionWS(粒子全局空间位置)输送到自发光颜色,以将数据可视化。粒子系统已按比例放大,以显示颜色根据位置而变化的情况。
PixelNormalWS(像素全局空间法线)
PixelNormalWS(像素全局空间法线)表达式输出矢量数据,该数据代表像素所面对的方向(基于当前法线)。
在此示例中,PixelNormalWS(像素全局空间法线)输送到“底色”(Base Color)。请注意,使用了法线贴图按像素产生结果。
Rotator(旋转)
Rotator(旋转)表达式以双通道矢量值形式输出 UV 纹理坐标,该矢量值可用来创建旋转纹理。
项目 | 说明 |
---|---|
属性 |
|
中心 X(CenterX) | 指定旋转中心的 U 坐标。 |
中心 Y(CenterY) | 指定旋转中心的 V 坐标。 |
速度(Speed) | 指定以顺时针方向旋转坐标的速度。 |
输入 |
|
坐标(Coordinate) | 接收可以通过表达式来修改的基本 UV 纹理坐标。 |
时间(Time) | 接收用来确定当前旋转位置的值。这通常是用来提供常量旋转效果的 Time(时间) 表达式,但是,也可以使用 Constant(常量) 或 ScalarParameter(标量参数) 来设置特定偏移,或者通过 Matinee 或蓝图来控制旋转。 |
SceneTexelSize(场景纹素大小)
SceneTexelSize(场景纹素大小)表达式允许按纹素大小进行偏移,正如您使用 SceneColor(场景颜色)和 SceneDepth(场景深度)表达式时执行的偏移操作。这对于在多分辨率系统中检测边缘十分有用,因为不进行此计算时,您就必须使用较小的静态值,从而导致分辨率较低时结果不一致。
ScreenPosition(屏幕位置)
ScreenPosition(屏幕位置)表达式输出当前所渲染像素的屏幕空间位置。
TextureCoordinate(纹理坐标)
TextureCoordinate(纹理坐标)表达式以双通道矢量值形式输出 UV 纹理坐标,从而允许材质使用不同的 UV 通道、指定平铺以及以其他方式对网格的 UV 执行操作。
项目 | 说明 |
---|---|
属性 |
|
坐标索引(Coordinate Index) | 指定要使用的 UV 通道。 |
U 平铺(UTiling) | 指定 U 方向上的平铺量。 |
V 平铺(VTiling) | 指定 V 方向上的平铺量。 |
撤销镜像 U(Un Mirror U) | 如果为 true,那么撤销 U 方向上的所有镜像。 |
撤销镜像 V(Un Mirror V) | 如果为 true,那么撤销 V 方向上的所有镜像。 |
用法示例:要访问网格的第二个 UV 通道,请创建一个 TextureCoordinate(纹理坐标)节点,将其“坐标索引”(CoordinateIndex)设置为 1(0 表示第一个通道,1 表示第二个通道,等等),并将其连接到 TextureSample(纹理取样)节点的 UV 输入。
VertexNormalWS(顶点全局空间法线)
VertexNormalWS(顶点全局空间法线)表达式输出全局空间顶点法线。它只能在顶点着色器(例如 WorldPositionOffset(全局位置偏移))中执行的材质输入中使用。此表达式对于使网格伸缩而言非常有用。请注意,使位置沿法线偏移将导致几何体沿 UV 缝合分裂。
在以上示例中,预览球体随正弦运动而放大和缩小,这是因为每个顶点都在它们自已的法线方向上移动。
ViewSize(视图大小)
ViewSize(视图大小)表达式输出一个 2D 矢量,以给出当前视图的大小(以像素为单位)。这对于使材质根据当前屏幕分辨率产生各种变化来说非常有用。
预览窗口大小:740x700 | 预览窗口大小:740x280 |
在此示例中,ViewSize(视图大小)输送到“底色”(Base Color)。结果将除以 2,400,以提供更有意义的结果。
WorldPosition(全局位置)
WorldPosition(全局位置)表达式输出当前像素在全局空间中的位置。要实现可视化,只需将输出连接到“自发光”(Emissive):
常见用法是确定从摄像机到像素的径向距离,而不是像 PixelDepth(像素深度)那样确定正交距离。WorldPosition(全局位置)也可用作纹理坐标,并让不相关的网格在它们彼此邻近时进行纹理坐标匹配。以下是使用 WorldPosition.xy 对纹理进行二维贴图的基本示例: