流控制
在编程时,开发者需要控制计算机每一步需要执行的动作,类似于一条流水线,从上到下依次进行。条件分支、循环,这些是流控制中最重要的概念。
在 Virtools 中,流控制主要通过 Logics/Streaming 和 Logics/Looping 类的 BB 来实现。
条件分支
条件分支,即大多数编程语言中的 if 语句。在 Virtools 中有多种实现方式:
Test:简单比较两个数值,支持常见的数值比较与空值判断。Binary Switch:根据一个 Boolean 值进行分支,上游数据需自行转化为 Boolean。Switch On Parameter:类似于 C 语言中的switch语句,根据固定的条件参数发生跳转。
如果分支是为了选择不同变量,可以使用 Parameter Selector,不同的逻辑输入对应不同的参数,最后只有一个逻辑输出。
迭代循环
最简单的循环即直接将末尾的 BB 连接至开头,形成一个闭环即可。
如果我们需要引入条件,或者是在特定的语境下进行循环,则需要用到如下的 BB:
While:在条件成立时无限循环。Iterator:对Array的Row(行)进行迭代循环,并且拿到每一行的数据。Group Iterator:对Group中的物体进行迭代循环,并且拿到组内的每一个对象。Hierarchy Parser:对一个物体的子级进行迭代循环,并且拿到目标物体的每一个子级。
如果需要在一定的值、范围、次数,或一定时间内,进行循环,可用使用以下 BB:
Timer:在指定时间内循环。Counter:在指定次数内循环。Linear Progression:将值从 A 演变为 B,用 step 参数控制循环次数。Bezier Progression:将值从 A 演变为 B,演变的过程遵循给定的贝塞尔函数。
特殊
Virtools 基于 BB 的脚本支持多线同时进行,因此会有一些特殊的 BB 专门服务于特殊的场景:
Wait For All:等待所有输入全部激活后才激活输出。Keep Active:激活一次除Reset以外的任意输入后,会不断激活对应的输出。激活Reset可以停止循环。
更多
由于此类 BB 均为 Virtools 所提供,因此他们都能查到使用文档。建议在了解到脚本能做到什么程度的控制后就自行尝试。
