数学表达式节点

数学表达式节点允许您输入一个数学表达式并构建适当的子图表来创建那个表达式。

Windows
MacOS
Linux

要想创建一个数学表达式节点,请 右击 图表并从关联菜单中选择 Add Math Expression(添加数学表达式)...

AddMathExpression.png

数学表达式节点就像一个合并的图表。它是一个独立的节点,您可以 双击 它来打开构成其功能的子图表。 最初,该名称/表达式是空的。任何时候,当您重命名该节点时,都将会解析新表达式并生成新的子图表。

要想重命名该节点,并更新子图表,请 右击 该节点,并选择 Rename(重命名)

比如,您可以使用以下表达式来重命名该数学表达式节点:

(1+x)*sin(myVar)-2.4/rand()

这将会更新该数学表达式节点,使其具有两个浮点型输入 XMyVar ,及一个浮点型输出。

mathnodeexample.png

如果您 双击 具有该表达式的节点,那么您将看到以下这个子图表:

mathnodeexpand.png

子图表是根据以下规则创建的:

  1. 字母名称 (以字母开头的符号) 应该变为数学表达式上的变量、输入引脚,或者函数调用。上面的示例中字母名称有: xsinmyVarrand

    1. 如果一个字母名称和BSlueprint中的一个现有变量一样,那么它将变成一个变量获取节点 (也就是如果蓝图已经具有了 myVar 变量)。

    2. 如果字母名称后面有一个左括号(比如 sin(rand( ),那么它将会变成一个函数节点。

    3. 如果之前的两种情形都不符合,那么该字母名称将会变成数学函数节点上的一个浮点型输入。

    4. 如果该名称匹配节点上现有引脚的名称,则还将被用于输入。

  2. 数值常量将总是变成引脚输入。它们自身永远不会创建一个节点,但是会使用它们来填充其他节点的输入文本域。

  3. 数学运算符(像+ 、*、 -) 会变成函数节点。

  4. 和数学运算中的处理一样,括号内的表达式具有优先权,需要优先计算。

变量

变量命名非常灵活,但是记住以下几点非常重要:

  • 变量名称本身可以包含数字,但是不能以数字开头。

  • 变量名称不能和隐藏的蓝图变量名称一样。

  • 确保您正在使用正确的变量类型。比如, boolVar+1.5 就不是一个有效的表达式。

运算顺序

运算顺序如下所示(按照优先级从高到底的顺序):

  1. 括号内的表达式

  2. 阶乘

  3. 指数

  4. 乘除法

  5. 加减法

可用的蓝图函数

代码函数库中的蓝图纯函数应该都是可用的。这包括:

  • 三角函数 (sin/cos/tan、asin、acos, 等):

    sin(x)
  • 区间限定函数 (min, max, clamp,等):

    clamp(y,0,20)
  • 四舍五入函数 (floor, fceil, round等):

    round(z)
  • 指数函数(square, power, sqrt, loge, e/exp等)

某些函数具有多个经常使用的名称。为了处理这个问题,同一个函数或节点会有几个相关联的别名。一些示例:

  • Power(幂数)别名: power, pow

  • 三角函数 (asin/arcsin, acos/arccos, 等)

因为您正在输入函数,而不是连接引脚,所以请确保输入正确的数值及参数类型。如果数值和参数类型不匹配,那么该数学该表达式节点 将会显示一个错误。

基本结构体类型

在数学中,有一些经常要用到的基本结构体: 向量、变换等。您可以在表达式中轻松地创建及操作这些类型。

  • vector 关键字生成一个MakeVector节点:

    vector(x,y,z)
  • rotator 关键字生成一个MakeRotator 节点:

    rotator(x,y,z)
  • transform 关键字生成一个MakeTransform 节点:

    transform(vec(x,y,z), rot(p,y,r), vec(6,5,4))

正如某些函数有别名一样,向量和旋转量也有别名。

  • Vector(向量)别名

    vector, vec, vect
  • Rotator(旋转量)别名

    rotator, rot

支持的操作符

支持以下所有操作符,这些操作符可以同逻辑操作符和比较操作符结合使用,来创建复杂的表达式。

  • 乘除法操作符:

    *, /, %
  • 加减法操作符:

    +, -
  • 关系操作符:

    <, >, <=, >=
  • 等于:

    ==, !=
  • 逻辑操作符:

    ||, &&, ^

不支持的操作符

目前,不支持以下操作符。

  • 条件操作符:

    ?:
  • 位操作符:

    |, &, <<, >>
  • 一元前缀操作符:

    +, -, ++, --, ~, !  等。
  • 后缀操作符:

    ++, --, [] 等
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback