
内容示例项目中的 Math_Hall(数学运算大厅) 地图旨在让你更加了解如何在虚幻引擎4的 蓝图 和 材质 中进行数学运算。
第一个部分的标题为 函数(Functions) ,它涵盖了数学运算和材质函数(位于地图墙体左侧),以及示例的应用实例(位于墙体右侧)。 这个部分可以帮助你更好地了解混合材质以及如何将逻辑应用到材质以便创建事件,例如生成水面的涟漪效果,或完全在 材质编辑器(Material Editor) 内生成弹力球。
第二个部分包括 向量学(Vector Math) ,描述了向量的不同类型以及如何在材质中使用,并介绍了向量在蓝图中的重要性(例如,向量可以用于创建面向玩家的物体、查看玩家是否正在看向某个物体,或者了解玩家与物体之间的距离)。
函数

以下列表为 函数 部分提供的示例,可以沿着墙体右侧查看对应的应用实例。
示例 | 展示内容 |
---|---|
1.1 介绍 | 描述如何阅读函数部分中的图表,并分别绘制了关于X的不同函数图像。 |
1.2 绝对值(ABS) | 可以得到X的绝对值(Absolute),即x为负值时读作正值(例如,通过使用时间的正弦值并取绝对值,可以创建小球的弹跳运动)。 |
1.3 取小数部分(Frac) | 使用Frac函数来移除任意数字的整数部分,对于生成伪随机数十分有用(例如,原始时间的值从1开始向上计算,Frac函数用于表示从0到1的时间,从而增加原始时间的值)。 |
1.4 向下取整(Floor) | floor函数从任意数字中移除小数部分,只保留整数(例如,0.9取0,或1.9取1等等。)。 |
1.5 向上取整(Ceil) | ceil函数和floor函数类似,但ceil函数是向上取整而非向下取整,因此ceil函数的运算结果总是比floor函数的运算结果要大1(例如,0.1取1,1.1取2等等。此外,我们还提供了创建马赛克效果的示例)。 |
1.6 求余数(FMod) | FMod代表浮点模块,并同时具有A、B输入模块。FMod函数会将A除以B并返回余数值(例如,我们提供了在材质上生成条纹图案的示例)。 |
1.7 幂(Power) | 幂函数采用基础输入并应用了指数。运算后,和绝对值函数一样,负值会成为正值,并且1的幂和1的绝对值具有相同的运算结果(例如,我们提供了一个可以调整纹理对比度的示例)。 |
1.8 插值(Lerp) | 线性插值(Lerp函数)会返回一个基于alpha输入的A与B输入间的混合值。在示例中,当alpha值为0时,将返回100%的A的值。当alpha值为1时,将返回100%的B的值(例如,提供了在两种贴图间使用插值进行混合的示例)。 |
1.9 高度插值(Height Lerp) | 高度插值(Height Lerp)是使用高度图来调节混合的插值(Lerp)函数(例如,该示例展示了纹理的高度图用于在两种贴图间进行混合,比如将草地纹理与鹅卵石纹理进行混合)。 |
1.10 限制(Clamp) | 限制函数用于将输入值限定在指定的最小值和最大值的范围内(例如,使用限定函数来指定监控摄像机的最小/最大视角)。 |
1.11 正弦(Sine) | 正弦函数是一种角度函数,代表了直角三角形中直角边与斜边的比例(例如,正弦函数具有多种用途,可以创建蓝图或材质内的摇摆运动,还可以用于创建水中的“波浪”)。 |
1.12 余弦(Cosine) | 与正弦函数类似,余弦函数也是一种三角函数。它表示直角三角形中直角边与斜边长度的比例。某个角的余弦函数是该角的邻边和直角三角形斜边的比值(如示例所示,当我们创建波浪时,正弦和余弦函数是非常类似的)。 |
1.13 一减(OneMinus) | 一减(OneMinus)可以用于生成纹理或图像的相反值(例如,示例展示了黑白徽标反转进行色彩反转,变为白黑徽标)。 |
1.14 指数密度(Exponential Density) | 指数密度(Exponential Density)可以创建两端具有平滑曲线的梯度曲线(例如,指数密度最常用于创建雾的密度,也可以用于创建其他效果)。 |
1.15 球体蒙板(Sphere Mask) | 球体蒙板(Sphere Mask)具有A、B输入以及半径和硬度输入,并且可以获取A与B之间的距离(例如,示例展示了纹理间混合的硬度)。 |
1.16 球体梯度 - 二维(Sphere Gradient - 2D) | 球体梯度 - 二维(Sphere Gradient - 2D)是一种材质函数,它会返回球体形状衰减并使用V2输入坐标、中心位置以及标量半径值(例如,示例展示了如何构建具有斜角形状的材质)。 |
基础向量运算

下方列出了 Basic Vector Math(基础向量运算) 部分中提供的示例。
示例 | 展示内容 |
---|---|
2.1 向量运算介绍(Introduction to Vector Math) | 介绍了材质和蓝图中的向量运算的重要性。 |
2.2 什么是向量(What is a vector) | 解释了向量是什么以及向量的类型。 |
2.3 一维向量(1D Vectors) | 使用路线图模拟的基础一维向量。 |
2.4 二维向量(2D Vectors) | 解释使用二维图表的二维向量。 |
2.5 距离(Distance) | 如何使用勾股定理来计算距离(请注意: 距离是在材质和蓝图中自动计算的)。 |
2.6 实际距离(Distance in practice) | 在蓝图和材质中计算的距离。 |
2.7 三维向量(3D Vectors) | 可视化演示使用三维网格的三维向量。 |
2.8 规格化向量(Normalized Vectors) | 使用具有规格化节点的规格化向量,可以在蓝图或材质中找到。 |
2.9 作为旋转的向量(Vector as rotation) | 将向量转换为旋转值(例如,示例展示了向玩家位置旋转的角色)。 |
2.10 世界位置(WorldPosition) | 世界位置以及如何使用数据(例如在编辑器中拖曳对象,它在世界中的位置也会更新)。 |
2.11 世界对齐纹理(World Aligned Texture) | 使用世界对齐纹理,在球体周围混合纹理(例如可以用于这创建外观更加自然的岩石材质)。 |
2.12 摄像机向量(CameraVector) | 展示了摄像机向量和显示向量路径的图表。 |
2.13 摄像机前向向量(Camera Forward Vector) | 展示了摄像机前向向量和显示前向向量路径的图表。 |
2.14 点积(Dot Product) | 解释了什么是点积,可以用于检查玩家是否正在看向特定的点。 |
2.15 用代数方法继承点积(Deriving Dot Product Algebraically) | 如何对点积进行继承(请注意:在虚幻引擎4中,我们通常使用节点(node)来解析点积)。 |
2.16 点积示例(Dot Product Example) | 展示了摄像机向量和点积,而且基于玩家和物体之间的距离,材质可以进行混合并追踪玩家的移动(请注意: 这个操作完全在材质中进行,无需蓝图)。 |
2.17 点积示例2(Dot Product Example 2) | 使用摄像机前向向量和点积来确定玩家是否正在查看物体(请注意:这个操作完全在材质中进行,无需蓝图)。 |
2.18 向量积(Cross Product) | 使用带有图表的向量积,展示如何通过读取向量值来继承向量积。 |
2.19 创建第三正交向量(CreateThirdOrthogonalVector) | 介绍了创建第三正交向量材质函数,并展示该函数如何有效创建完整的正交(垂直)向量。 |
2.20 摄像机朝向运算(Camera Facing math) | 显示摄像机位置-物体位置(CameraPosition - ObjectPosition),可以创建物体旋转以面向玩家的效果(例如,在此示例中,当我们站在多个物体前,正好位于玩家面前的物体不会旋转,而在玩家左侧或右侧的物体会向内旋转)。 |
2.21 摄像机朝向运算2(Camera Facing math 2) | 我们使用摄像机的向左向量(Camera Left Vector)以及摄像机的向上向量(Camera Up Vector)来创建物体旋转以面向玩家的效果(例如在此例中,与2.20不同,外侧的物体在所有物体共同旋转时不会向内旋转)。 |
2.22 三角函数提示(Trig tips) | 正弦、余弦以及正切与解析直角三角形有关,知道任意两边的长度后可以计算出X的角度(例如,Our House is A House Of Animals这个口诀可以帮助记忆三角函数,每个大写字母可以代表三角形的一边,即O=Opposite(对边),H=Hypotenuse(斜边),A=Adjacent(邻边)。) |