Language:
Share
此中文页面内容对应的英文页面有后续更新,如需浏览最新文档可切换至英文页面浏览。

数学表达式节点

概述

要想创建一个数学表达式节点,请右击图表并从关联菜单中选择 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. 如果之前的两种情形都不符合,那么该字母名称将会变成数学函数节点上的一个浮点型输入。

  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等)

支持的操作符

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

  • 乘除法操作符:

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

    +, -
  • 关系操作符:

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

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

    ||, &&, ^

不支持的操作符

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

  • 条件操作符:

    ?:
  • 位操作符:

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

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

    ++, --, [] 等