Relations reference

 
 
 

This section lists the Relations operators supported by MotionBuilder. The list of operators used in a Relations constraint is further divided by numeric type or usage. Operators are shown only in the Relations pane.

Boolean

Use Boolean operators to evaluate Boolean expressions. The following Boolean expressions are supported by MotionBuilder:

AND  
Purpose Evaluates the Boolean expression (a and b).
Receives Two Boolean values.
Sends (1) when both (a) and (b) equal (1). Otherwise, (0) is sent.(a)(b)(Result) 000 010 100 111.
Flip flop  
Purpose This is a special box that acts like a switch.
Receives Two Boolean values, (b) and (Clear).
Sends When (b) is equal to (1) the (result) is reversed (0). For example, the first time (b) equals (1) the (result) is (1). The second time the (result) is (0). The third time the (result) is (1), and so on.When (Clear) equals (1), (result) is reset to (0).
Memory (B1 when REC)  
Purpose Boolean trigger operator which keeps triggering while a second trigger is received.
Receives Two Boolean values, (b1) and (REC).
Sends The value (b1) is sent to (result) when (REC) equals (1).
Memory (last trigger)  
Purpose Boolean trigger operator which keeps the last trigger until a new trigger is received.
Receives Ten Boolean values: (b1-b10) and (Clear).
Sends Ten Boolean output values (Out1-Out10) and a result number.When any (bn) is set to (1), its relative (Outn) is set to (1) and kept until another (bn) receives a (1).If any (Outn) equals (1), (result) equals (1).When (Clear) equals (1), all (Outn) are reset to (0).If you need to use more than ten entry connectors, you can connect two of these operators together by sending the (result) of the first operator into the (Clear) of the second operator. You also have to connect the (Clear) of the second into the (result) of the first.
NAND  
Purpose Evaluates the Boolean expression not ((a) and (b)).
Receives Two Boolean values.
Sends (0) when (a) and (b) equals (1). Otherwise, (1) is sent.(a) (b) (Result) 0 0 1 0 1 1 1 0 1 1 1 0
NOR  
Purpose Evaluates the Boolean expression not ((a) or (b)).
Receives Two Boolean values.
Sends (0) when (a) or (b) equals (1).(a) (b) (Result) 0 0 1 0 1 0 1 0 0 1 1 0
NOT  
Purpose Evaluates the Boolean expression not (a).
Receives A Boolean value.
Sends The opposite of (a). (a) (Result) 0 1 1 0.
OR  
Purpose Evaluates the Boolean expression (a or b).
Receives Two Boolean values.
Sends (1) when (a) or (b) equals (1). (a) (b) (Result) 0 0 0 0 1 1 1 0 1 1 1 1.
XNOR  
Purpose Evaluates the Boolean expression (a is equivalent to b).
Receives Two Boolean values.
Sends (0) when (a) and (b) are different.(a) (b) (Result) 0 0 1 0 1 0 1 0 0 1 1 1.
XOR  
Purpose Evaluates the Boolean expression not (a is equivalent to b).
Receives Two Boolean values.
Sends (1) when (a) and (b) are different.(a) (b) (Result) 0 0 0 0 1 1 1 0 1 1 1 0.

Converters

Use converters to convert between numerical and vector types. MotionBuilder supports the following converters:

Deg to rad  
Purpose Converts an angle from a degree to a radian.
Receives A numerical value.
Sends A numerical value.
HSB to RGB  
Purpose Converts HSB to RGB mode.
Receives Three numerical values (h), (s), and (b), where h = hue, s = saturation, and b = brightness.
Sends Three numerical values: (x), (y), and (z).
Number to RGBA  
Purpose Converts four numbers into a color vector.
Receives Four numerical values: (r), (g), (b), and (a).
Sends A color vector as (result) = {r,g,b,a}. Where (r) = red, (g) = green, (b) = blue, and (a) = alpha.
Number to Vector  
Purpose Converts three numbers into a vector.
Receives Three numerical values: (x), (y), and (z).
Sends A vector as (result) = {x,y, z}.
Number to Vector2  
Purpose Converts two numbers into a vector.
Receives Two numerical values: (x) and (y).
Sends A vector as (result) = {x,y}.
Rad to Deg  
Purpose Converts representation from a radian to a degree.
Receives A numerical value.
Sends A numerical value.
RGB to HSB  
Purpose Converts RGB to HSB mode.
Receives Three numerical values: (x), (y), and (z).
Sends Three numerical values (h), (s), and (b), where h = hue, s = saturation, and b = brightness.
RGB to RGBA  
Purpose Converts RGB to RGBA with Alpha channel mode.
Receives Three numerical values: (r), (g) and (b).
Sends Four numerical values: (r), (g), (b), and (a).
RGBA to Number  
Purpose Converts a color vector into four numbers.
Receives A color vector: {r, g, b, a}.
Sends Four numerical values (r), (g), (b), and (a) where (r) = red, (g) = green, (b) = blue, and (a) = alpha.
RGBA to RGB  
Purpose Converts RGB with Alpha channel to RGB mode.
Receives Four numerical values: (r), (g), (b), and (a).
Sends Three numerical values: (r), (g) and (b).
Seconds to Time  
Purpose Converts a number of seconds to a time format.
Receives Number of seconds.
Sends Time in time format.
Time to Seconds  
Purpose Converts time to a timecode.
Receives Time in time format.
Sends Timecode.
Time to TimeCode  
Purpose Converts time to a timecode.
Receives Time in time format.
Sends Timecode.
TimeCode to Time  
Purpose Converts time to a number of seconds.
Receives Time in time format.
Sends Number of seconds.
Vector to Number  
Purpose Converts a vector into three numbers.
Receives A vector: {x, y, z}.
Sends Three numerical values: (x), (y), and (z).
Vector2 to Number  
Purpose Converts a vector into two numbers.
Receives A vector: {x, y}.
Sends Two numerical values: (x) and (y).

Macro Tools

Use the Macro Tools to create customized relation boxes. Any input and output boxes you drop into your Macro become connectors on your customized Relations box.

Change the name of your connectors by right-clicking the input or output boxes, and selecting Rename from the contextual menu

Macro Input Bool  
Sends Input (Boolean).
Macro Input ColorAndAlpha  
Sends Input (ColorAndAlpha).
Macro Input Number  
Sends Input (number).
Macro Input Time  
Sends Input (time).
Macro Input Vector  
Sends Input (vector).
Macro Output Bool  
Receives Output (Boolean).
Macro Output ColorAndAlpha  
Receives Output (ColorAndAlpha).
Macro Output Number  
Receives Output (time).
Macro Output Time  
Receives Output (number).
Macro Output Vector  
Sends Output (vector).

My Macros

Any new Relations constraint you create appears in the My Macros operators. You can rename the constraint in the Scene browser and use the My Macros operator to store your custom Relations constraints.

Drag custom Macro constraints from Operators into the Viewer window. For more on macros, see Creating Macro relations.

Number

The Number operators evaluate mathematical expressions involving numbers. If you want to evaluate vector mathematics, use the appropriate rotation or vector operator.

Absolute (|a|)  
Purpose Sends the absolute value of a received number.
Receives A numerical value: (a).
Sends The positive value of the received number.For example, if (a) = -3, the (result) is 3.
Add (a + b)  
Purpose Adds two numbers.
Receives Two numbers: (a) and (b).
Sends The sum of the two numbers. (result) = (a) + (b).
arccos (a)  
Purpose Performs the arccosine function on a numerical value.
Receives A numerical value: (a).
Sends The arccosine of a. (result) = arccos(a).
arcsin (a)  
Purpose Performs the arcsine function on a numerical value.
Receives A numerical value (a).
Sends The arcsine of a. (result) = arcsin(a).
arctan (a)  
Purpose Performs the inverse of a tangent function.
Receives A numerical value: (a).
Sends The inverse tangent of (a).
arctan2 (b/a)  
Purpose Performs the arctangent function using two numerical values.
Receives Two numerical values: (a) and (b).
Sends The arctangent of (b) divided by (a). (result) = arctan(b/a).
Cosine cos (a)  
Purpose Performs the cosine function on a numerical value.
Receives A numerical value: (a).
Sends The cosine of a. (result) = cos(a).
Damp  
Purpose Applies damping to a numerical value.
Receives Two numerical values. The first value (a) is the value to be damped. The second value (Damping Factor) is the damping factor.
Sends (result) = (a) with damping.
Damp (clock-based)  
Purpose Similar to Damp, except this relation is based on the MotionBuilder clock instead of the refresh rate. This relation is recommended over the Damp relation, as it makes your scene identical on every computer.
Receives A (number), Damping Factor (number) and Play Mode (number).
Sends Result (number).
Distance Numbers  
Purpose Calculates the distance between two positions.
Receives Two numbers: (a) and (b).
Sends The distance between (a) and (b).
Divide (a/b)  
Purpose Divides two numbers.
Receives Two numerical values: (a) and (b).
Sends The quotient of the first number (a) divided by the second number (b). (result) = (a/b).
Exp (a)  
Purpose Multiplies the base value [e] by itself (a) times. [e=2.718].
Receives A numerical value: (a).
Sends (result) = (e^a). For example (e^2) is 2.718 x 2.718 = 7.3875.
Exponent (a^b)  
Purpose Multiplies the numerical value (a) by itself (b) times.
Receives Two numerical values: (a) and (b).
Sends (result) = (a^b), or (a) to the power of (b).
If Cond Then A Else B  
Purpose Evaluates an If, Then, Else statement.
Receives Two numerical values: (a) and (b), and a condition: (bool).
Sends If Cond is non-zero, the (a) input is output as the Result. If the Cond is zero, the (b) input is output as the Result.
Integer  
Purpose Rounds numerical values down to the next full digit.
Receives A numerical value: (a).
Sends The numerical value rounded down to the next full digit.
Invert (1/a)  
Purpose Inverts a numerical value.
Receives a numerical value (a).
Sends 1 divided by a numerical value. (result) = (1/a).
Is between A and B  
Purpose Checks if one value is between two others.
Receives Two numerical values: (a) and (b).
Sends (result) = true (1) if the first value (a) is between the second value (b). Otherwise, (result) is false (0).
Is different (a != b)  
Purpose Checks if two values are not equal.
Receives Two numerical values: (a) and (b).
Sends (result) = true (1) if the first value (a) is not equal to the second value (b). Otherwise, (result) is false (0).
Is greater (a > b)  
Purpose Checks if one value is greater than another.
Receives Two numerical values: (a) and (b).
Sends (result) = true (1) if the first value (a) is greater than the second value (b). Otherwise, (result) is false (0).
Is greater or equal (a >=b)  
Purpose Checks if one value is greater than or equal to another.
Receives Two numerical values: (a) and (b).
Sends (result) = true (1) if the first value (a) is greater than or equal to the second value (b). Otherwise, (result) is false (0).
Is identical (a == b)  
Purpose Checks if two values are equal.
Receives Two numerical values: (a) and (b).
Sends (result) = true (1) if the first value (a) is equal to the second value (b). Otherwise, (result) is false (0).
Is less (a < b)  
Purpose Checks if one value is less than another.
Receives Two numerical values: (a) and (b).
Sends (result) = true (1) if the first value (a) is less than the second value (b). Otherwise, (result) is false (0).
Is less or equal (a <= b)  
Purpose Checks if one value is less than or equal to another.
Receives two numerical values: (a) and (b).
Sends (result) = true (1) if the first value (a) is less than or equal to the second value (b). Otherwise, (result) is false (0).
ln(a)  
Purpose Calculates the natural logarithm.
Receives A numerical value: (a).
Sends The natural logarithm of (a). (result) = ln(a).
Log(a)  
Purpose Calculates the base-10 logarithm of a number.
Receives A numerical value: (a).
Sends The base-10 logarithm of (a). (result) = log(a).
Max Pass-thru  
Purpose Given a set of numbers, returns the maximum number.
Receives Multiple numerical values.
Sends The maximum value of the inputs.
Memory (a when REC)  
Purpose The value (a) is sent to (result) when (REC) equals (1). Use this operator to send a value when a trigger is received (REC).
Receives A numerical value: (a) and a Boolean value: (REC which is either 0 or 1).
Sends (a) when (REC) is true (1).
Min Pass-thru  
Purpose Given a set of numbers, returns the minimum number.
Receives Multiple numerical values.
Sends The minimum value of the inputs.
Modulo mod (a,b)  
Purpose Divides two values and sends the remainder.
Receives Two numerical values: (a) and (b).
Sends The quotient of dividing the first value (a) by the second value (b).
Multiply (a x b)  
Purpose Multiplies two values.
Receives Two numerical values: (a) and (b).
Sends The product of multiplying the first value (a) by the second value (b). (result) = (a)(b).
Precision numbers  
Purpose Cuts the number at a specified precision value, for example, if a = 12.36 and the assigned precision value is 0.1, then the output is 12.30.
Receives (a)(number) and Precision (number).
Sends Result (number).
Pull number  
Purpose Continuously pulls the value from the input parameter and stores the result in the internal buffer, which is then used as the Result value. Gives you the value of the last evaluation, which is useful if you need to constrain an object with its own data.
Receives (a)(number)
Sends Result (number)
Scale and offset (Number)  
Purpose Scales and offsets a numerical value.
Receives Five numerical values: a maximum clamping number (Clamp Max), a minimum clamping number (Clamp Min), an offset (Offset), a scaling factor (Scale Factor), and the original value (x).
Sends The original value (x) multiplied by the scaling factor (Scale Factor) and offset by an offset value (Offset). If the result is greater than the maximum clamping value (Clamp Max), the maximum clamping value is sent.If the result is lower than the minimum clamping value (Clamp Min), the minimum clamping value is sent. (result) = [(x) multiplied by (Scale) + (Offset)]. (result) is no less than (Clamp Min) and no greater than (Clamp Max).
Sine sin(a)  
Purpose Performs the sine function on a numerical value.
Receives A numerical value: (a).
Sends The sine of (a). (result) = sin(a).
sqrt(a)  
Purpose Finds the square root of a numerical value.
Receives A numerical value: (a).
Sends The square root of the received value. (result) = sqrt(a).
Subtract (a-b)  
Purpose Subtracts two numerical values, (a) and (b).
Receives Two numerical values: (a) and (b).
Sends The result of the first number subtracted by the second number. (result) = (a) - (b).
Sum 10 numbers  
Purpose Adds 10 to a numerical value.
Receives Ten numerical values: (a),(b),(c),(d),(e),(f),(g),(h),(i),(j).
Sends Numerical value + 10. (result) = (a)+10.
Tangent tan(a)  
Purpose Performs the tangent function on a numerical value.
Receives A numerical value: (a).
Sends The tangent of (a). (result) = tangent(a).
Triggered delay (Number)  
Purpose Delays sending a numerical value.
Receives A delay in time format, the number to be sent following the delay, a panic button, and an “Enabled” button that starts the counter.
Sends The received number after a time delay, which starts counting when the box is enabled. Trigger the panic button to send the number before the time delay is reached.
Triggered Delay with Memory (Number)  
Purpose Delays sending a numerical value.
Receives A delay in time format, the number to be sent following the delay, and a toggle switch.
Sends The received number after a time delay.

Other

These are miscellaneous operators.

Bezier curve  
Purpose Creates spline behavior, like “Paths” in other 3D applications.One box creates one segment if a spline.Join multiple boxes to create a spline with many segments. Four objects are required to serve as control points.
Receives Four translations (Control points 1-4 and previous segment’s result), Position ratio (0-100%. Represents the position on the curve sent to the result. If you use multiple segments connected to the same source value for every bezier curve boxes), Segment count (the number of segments, or Bezier curve boxes, used), and Segment index (the order of this box when used in a series of segments, starting at 1.
Sends Result (Number)
Clip trigger  
Receives Three translations (Front, Source, and Target) and a Stop Range.
Sends Accel, Decel, Forward, Left 45, Left 90, Right 45, Right 90, Turn 180.
Damping (3D)  
Purpose Damps the position of a vector using a specified damping factor.
Receives A numerical damping factor (Damping Factor) and the vector to be dampened (P).
Sends A vector after applying damping.
Damp (3D) (Clock-based)  
Purpose Similar to Damp (clock-based), except this relation is based on the Damp (3D) relation.
Receives P (Point), Damping Factor (Number) and Play Mode (Number).
Sends Result (Number).
FCurve number (%)  
Purpose Right-click and select Edit from the contextual menu to edit the FCurve manually. Shown as a percentage relative to the length of the curve.
Receives Percentage 0-100% (number).
Sends Value (number).
FCurve number (Time)  
Purpose Right-click and select Edit from the contextual menu to edit the FCurve manually. Sends a value relative to the current time.
Receives Position % (number).
Sends Value (number).
Real Time Filter  
Purpose Applies a low‐pass filter to incoming live data.
Receives Drop Analysis, Drop Error, Enable, Filter Len, Filter Type (numbers) and In P 0 - In P 31 (vectors).
Sends Out P 0 - Out P 31 (vectors).
Triggered plus minus counter  
Purpose Creates a trigger to add the increment/decrement. (You must specify the value of the increment/decrement.) Also contains a Loop option.
Receives Increment, Max, Min (numbers) and Loop, Trigger Increase, Trigger Decrease (Boolean).
Sends Number. (result) = (a)+ or (a)-.
Triggered random  
Purpose Generates a random number on demand.
Receives Max, Min, Precision, Seed (number) and Trigger Get Number (Boolean.)
Sends Number.

Rotation

The Rotation operators are used specifically for rotation values. All rotation values are vectors.

Add (R1 + R2)  
Purpose Adds two rotation vectors together.
Receives Two rotation vectors: (Ra) and (Rb).
Sends A vector sum. (result) = (Ra) + (Rb).
Angle difference (Points)  
Purpose Calculates the angle between two vectors, or points, using a supplied radius.
Receives Two vectors for the position of each point: (P1) and (P2), and the radius (Radius).
Sends The angle as a numerical value.
Angle difference (Rotations)  
Purpose Calculates the difference between the rotation of two objects. The result can be scaled and offset.
Receives The scaling factor (Mult. Factor) and numerical offset (Offset) followed by the two rotations to be compared (R1 and R2).
Sends The angle difference between the two rotations, scaled and offset.
Angular acceleration  
Purpose Returns the angular acceleration of a rotation vector.
Receives Rotation value (R).
Sends Result (vector).
Angular speed  
Purpose Returns the angular speed of a rotation vector.
Receives Rotation value (R).
Sends Result (vector).
Damp (Rotation)  
Purpose Applies damping to a rotation vector.
Receives Damping (number), Maximum acceleration (Max acc), Maximum speed (Max speed), and rotation vector (R).
Sends Dampened rotation vector.
Global to local  
Purpose Converts a rotation vector from global to local coordinates.
Receives A base rotation vector (Base) and a Global rotation vector (Global Rot).
Sends The converted local rotation.
Interpolate  
Purpose Interpolates between two rotations.
Receives A numerical ratio (c) and two rotation vectors: (Ra) and (Rb).
Sends The difference between rotation vectors (Ra) and (Rb). The difference is sent as a vector. (result) = (Ra) + c[(Rb) - (Ra)].
Local to global  
Purpose Converts a rotation vector from local to global coordinates.
Receives A base rotation vector (Base), and Local rotation vector (Local Rot).
Sends The converted global rotation.
Rotation scaling  
Purpose Scales a rotation vector based on a numerical ratio.
Receives A numerical ratio (b) and the rotation vector to be scaled (Ra).
Sends A scaled rotation vector. (result) = (b)(Ra).
Sensor rotation helper  
Receives A rotation vector from the model (Model), a rotation offset (Offset), the rotation vector from the sensor (Sensor), and a numerical scaling factor for each coordinate (X factor, Y factor, and Z factor).
Sends A rotation vector.
Subtract(R1 - R2)  
Purpose Subtracts two rotation vectors.
Receives Two rotation vectors: (Ra) and (Rb).
Sends The result of the first rotation vector subtracted by the second rotation vector. (result) = (Ra) - (Rb).
Three-point constraint  
Purpose Creates a rotation from three vectors.
Receives Three position vectors: (Pa, Pb, and Pc).
Sends A rotation vector based on the three received vectors.

Shapes

Shape operators are special operators for use with models that have shape animations (also known as morph targets).

Select exclusive  
Purpose Calculates the shape’s values relative to the ratio (percent / [SUM shape n]) only when [SUM shape n] is greater than (Percent).
Receives A percentage (Percent) and six shapes as well as a Default Shape.
Sends Result (shapes) = (percent / [SUM shape n]) x (shape n). Result (Default Shape) = (percent - [SUM shape n]).For example, (percent = 80), (Shape 1= 60), (Shape 2= 50) and (Shape 3= 90). Result is (Shape 1= 24), (Shape 2= 20) and (Shape 3= 36).
Select exclusive 24  
Purpose Same as Select exclusive, except it offers twenty-four shapes.
Receives A percentage (Percent) and up to twenty-four shapes as well as a Default Shape.
Sends Result (shapes) = (percent / [SUM shape n]) x (shape n). Result (Default Shape) = (percent - [SUM shape n]).For example, (percent = 80), (Shape 1= 60), (Shape 2= 50) and (Shape 3= 90). Result is (Shape 1= 24), (Shape 2= 20) and (Shape 3= 36).
Shape calibration  
Purpose Calculates the percentage of a value interpolated between a minimum and a maximum value.
Receives A maximum numerical value (Max), a minimum numerical value (Min), a Boolean reverse value (0 or 1), and the value to be calibrated (Value).
Sends A percentage. If (reverse) is 1, the result is reversed. (result) = 100 - (result).

Sources

You can use source operators to create automatic movement, rotation, and shape animation by providing an oscillating data source. For example, the Sine Ramp creates a sine wave that can be used to make a model’s eyes blink.

Counter with play pause  
Purpose Similar to Counter with Start Stop, this source operator also lets you create a counter.
Receives Bounce (bool), Loop (number), Max (number), Min (number), Play Mode, Speed, Trigger (Bool), and Trigger Reset.
Sends Count (number). The counter begins counting when the Trigger connector receives a non-zero value. The counter increases from the Start value to the Stop value.If the Bounce connector is set to true (1), the counter decreases back to the Start value. Use the Freq value to set the number of times the count is performed.
Counter with start stop  
Purpose This source operator lets you create a counter.
Receives Bounce (bool), Freq (number), Start (number), Stop (number), and Trigger (Bool).
Sends Count (number).The counter begins counting when the Trigger connector receives a non-zero value.The counter increases from the Start value to the Stop value. If the Bounce connector is set to true (1), the counter decreases back to the Start value. Use the Freq value to set the number of times the count is performed.
Half circle ramp  
Purpose Applies the input values to a half circle ramp.
Receives Three numerical values: the amplitude (Amp), frequency (Freq), and phase percentage (Phase %).
Sends A half circle ramp based on the received amplitude, frequency, and phase percentage.
Isosceles triangle ramp  
Purpose Applies the input values to an isosceles triangle ramp.
Receives Three numerical values: the amplitude (Amp), frequency (Freq), and phase percentage (Phase %).
Sends An isosceles triangle ramp based on the received amplitude, frequency, and phase percentage.
Pulse  
Purpose Sends an alternating stream of zeroes and ones at the specified frequency. For example: 010101010101. Use the Enabled connector to activate and disable the Pulse constraint.
Receives Enabled (Bool), Freq Hz (number), Play Mode.
Sends Result (number).
Ramp  
Purpose Applies the input values to a ramp.
Sends A numerical count. Starts at zero when the Ramp operator is first added to the Relations window and continues counting upwards.
Random  
Purpose Creates a stream of random numbers at a specified frequency.
Receives Freq, Max, Min, Play Mode, Precision, Seed (number).
Sends Result (number).
Right triangle ramp  
Purpose Applies the input values to a right triangle ramp.
Receives Three numerical values: the amplitude (Amp), frequency (Freq), and phase percentage (Phase %).
Sends A right triangle ramp based on the received amplitude, frequency, and phase percentage.
Sine ramp  
Purpose Applies the input values to a sine ramp.
Receives Three numerical values: the amplitude (Amp), frequency (Freq), and phase percentage (Phase %).
Sends A sine wave ramp based on the received amplitude, frequency, and phase percentage.
Square ramp  
Purpose Applies the input values to a square ramp.
Receives Three numerical values: the amplitude (Amp), frequency (Freq), and phase percentage (Phase %).
Sends A square wave ramp based on the received amplitude, frequency, and phase percentage.

System

System operators let you use a time code and the play or record state in your Relations constraints.

Current time  
Purpose Uses the current time code.
Sends The current time code.
Local time  
Purpose Uses the local time code.
Sends The local time code shown in the Local Time code field.
Play Mode  
Purpose Verifies that MotionBuilder is in playback mode.
Sends A Boolean value: true (1) if MotionBuilder is in playback mode. Otherwise, sends false (0).
Reference Time  
Purpose Uses the reference time code.
Sends The reference time code shown in the Reference Time code field.
System Time  
Purpose Uses the computer’s system clock.
Sends The system time in SMPTE time code.
Transport Control  
Purpose Acts like buttons on the Transport Controls.
Receives Play (Bool), Play Backward (Bool), Record (Bool), Step Forward (Bool), Step Backward (Bool), Goto Beginning (Bool), Goto End (Bool), Goto Position Trigger (Bool), and Goto Position Value (Time).
Sends Play (Bool), Play Backward (Bool), and Record (Bool).

Time

Use the Time operators to compare two different times expressed in either SMPTE time code or frames per second. These operators can be used, for example, to trigger rotations, translation, or animation based on the current time code.

If Cond Then T1 Else T2  
Purpose Evaluates an If, Then, Else statement based on Time (T1).
Receives Three values: Cond (bool) and T1 and T2 (Time).
Sends If Cond is non-zero, the (T1) input is output as the Result. If the Cond is zero, the (T2) input is output as the Result.
Is Different (T1!= T2)  
Purpose Checks if Time (T1) is different than (T2).
Receives Two time values: (T1) and (T2), measured in frames per second or SMPTE.
Sends A Boolean value: true (1) if (T1) does not equal (T2) and sends false (0) if (T1) equals (T2).
Is Greater (T1 > T2)  
Purpose Checks if Time (T1) is greater than (T2).
Receives Two time values: (T1) and (T2), measured in frames per second or SMPTE.
Sends A Boolean value: True (1) if (T1) is greater than (T2) or sends false (0) if (T1) is less than or equal to (T2).
Is Greater or Equal (T1 >= T2)  
Purpose Checks if Time (T1) is greater than or equal to (T2).
Receives Two time values: (T1) and (T2), measured in frames per second or SMPTE.
Sends A Boolean value: True (1) if (T1) is greater than and equal to (T2) or sends false (0) if (T1) is less than (T2).
Is Identical (T1 == T2)  
Purpose Checks if Time (T1) is equal to (T2).
Receives Two time values: (T1) and (T2), measured in frames per second or SMPTE.
Sends A Boolean value: True (1) if (T1) is equal to (T2) or sends false (0) if (T1) does not equal (T2).
Is Less (T1 < T2)  
Purpose Checks if Time (T1) is less than (T2).
Receives Two time values: (T1) and (T2), measured in frames per second or SMPTE.
Sends A Boolean value: True (1) if (T1) is less than (T2) or sends false (0) if (T1) is greater than or equal to (T2).
Is Less or Equal (T1 <= T2)  
Purpose Checks if Time (T1) is less than or equal to (T2).
Receives Two time values: (T1) and (T2), measured in frames per second or SMPTE.
Sends A Boolean value: true (1) if (T1) is less than or equal to (T2). Sends false (0) if (T1) is greater than (T2).

Vector

The Vector operators evaluate vector mathematics and other calculations involving vectors. All translation, rotation, and scaling values for models and assets are expressed as vectors.

Acceleration  
Purpose Calculates the acceleration of a vector (Position) based on how fast the vector’s values change over time. You can use this operator to calculate, for example, how fast an object is translated or rotated.
Receives A vector (Position).
Sends A vector indicating the acceleration of the supplied vector (Position).
Add (V1 + V2)  
Purpose Adds two vectors.
Receives Two vectors: (V1) and (V2).
Sends Sum of two vectors. (result) = (V1) + (V2).
Angle  
Purpose Creates the angle between two vectors (expressed in degrees).
Receives Two vectors (V1) (V2).
Sends Number. (result) = (V1) - (V2).
Center of Mass  
Purpose Computes the center of a set of vectors (expressed as 3D space coordinates).
Receives Two vectors (V1) (V2).
Sends Computed center point (average) as a vector.
Damp position  
Purpose Applies damping to a position vector.
Receives A numerical damping factor (Damping), a numerical maximum acceleration (Max acc), a numerical maximum speed (Max speed), and a position vector (T).
Sends Dampened vector.
Derive  
Purpose Derive with reset. The Reset connector only accepts Boolean values (either 0 or 1). Send 1 to the Reset connector to reset the Derive operator to its original vector (Initial Vector).
Receives Reset (Bool), V1 (Initial vector), and V2 (vector).
Sends A vector derived from the two vectors. If the Reset (bool) connector is sent a 1, Derive is reset to its original vector (Initial Vector).
Determinant  
Purpose Gives the determinant of a 3x3 column (I, J, K) matrix.
Receives Three vectors: I, J, and K.
Sends A number.
Displacement  
Purpose Eliminates the dependency on display frame rates.
Receives Velocity (Vector) and Reset (Action to reset original position to zero).
Sends A vector (0 position computed from live input velocity).
Distance  
Purpose Calculates the distance between two positions.
Receives Two vectors: (V1) and (V2).
Sends The distance between the two vectors, expressed as a numerical value.
Dot product (V1 . V2)  
Purpose Calculates the dot product of two vectors.
Receives Two vectors: (V1) and (V2).
Sends Dot product of two vectors, expressed as a numerical value. (result) = (V1). (V2).
Gravity  
Purpose Returns a position.
Receives Three vectors: (Acceleration, Position and Speed).
Sends A number. (result)= (a)(b)(c).
If cond then A else B  
Purpose Evaluates an If, Then, Else statement.
Receives Two vectors: (a) and (b), and a condition (bool).
Sends If Cond is non-zero, the first vector (a) is output as the Result. If the Cond is zero, the second vector (b) is output as the Result.
Is different (V1 != V2)  
Purpose Checks if vector (V1) is different than vector (V2).
Receives Two time values: (V1) and (V2), measured in frames per second or SMPTE.
Sends A Boolean value: True (1) if (V1) does not equal (V2) and sends false (0) if (V1) equals (V2).
Is identical (V1 == V2)  
Purpose Checks if vector (V1) is equal to vector (V2).
Receives Two time values: (V1) and (V2), measured in frames per second or SMPTE.
Sends A Boolean value: True (1) if (V1) is equal to (V2) and sends false (0) if (V1) does not equal (V2).
Length  
Purpose Calculates the distance between a vector and the world zero point.
Receives A vector: (V1).
Sends The distance between the vector and the world zero point, expressed as a numerical value.
Memory (V1 when REC)  
Purpose Use this operator to send a vector when a trigger is received (REC).
Receives ]A vector (V1) and a Boolean value (REC, which is either 0 or 1).
Sends (result) = (V1) when (REC) is true (1).
Middle point  
Purpose Interpolates between two vectors relative to a given ratio.
Receives Two vectors: (V1) and (V2), and a ratio (Ratio) between 0 and 1.
Sends An interpolated vector. (result) = V1 + ratio[(V2) - (V1)].
Normalize  
Purpose Normalizes a vector.
Receives A vector.
Sends A normalized vector where each coordinate is normalized between 0 and 1.
Orbit attraction  
Purpose Returns a position.
Receives A number (Acceleration) and three vectors: (Origin, Position, and Speed.)
Sends A vector. (result)= (a)(b)(c)(d).
Precision vectors  
Purpose Use this constraint to apply a precise value to every component of the vector: X, Y, and Z can each have different precision values.
Receives A (number) and Precision (number).
Sends Result (number).
Pull vector  
Purpose Continuously pulls the value from the input parameter and stores it in the internal buffer, which is then used as the Result value. This gives you the value of the last evaluation. This is useful when you need to constrain an object with its own data.
Receives V (Vector).
Sends Result (Vector).
Scale (a x V)  
Purpose Scales a vector by a numerical value.
Receives A scaling factor (number) and a vector (Vector).
Sends The scaled vector. (result) = (number) x (Vector).
Scale and offset (Vector)  
Purpose Scales and offsets a vector.
Receives A maximum clamping vector (Clamp Max), a minimum clamping vector (Clamp Min), an offset vector (Offset), a scaling factor expressed as a numerical value (Scale), and the original vector (x).
Sends The original vector (x) multiplied by the scaling factor (Scale) and offset by the offset vector (Offset).If the result is greater than the maximum clamping vector (Clamp Max), the maximum clamping vector is sent. If the result is lower than the minimum clamping vector (Clamp Min), the minimum clamping vector is sent. (result) = (x) multiplied by [(Scale Factor) + (Offset)]. (result) is no less than (Clamp Min) and no greater than (Clamp Max).
Scale damping  
Purpose Applies damping to a scaling vector.
Receives A numerical damping factor (Damping), a numerical maximum acceleration (Max acc), a numerical maximum speed (Max speed), and a scaling vector (S).
Sends A scaled vector with damping.
Speed  
Purpose Calculates the speed of a vector based on its change of position over time.
Receives A vector (Position).
Sends The speed of the vector expressed as a vector (Translation).
Subtract (V1 - V2)  
Purpose Subtracts two vectors.
Receives Two vectors: (V1) and (V2).
Sends The result of the first vector subtracted by the second vector. (Result) = (V1) - (V2).
Sum 10 vectors  
Purpose Adds 10 to a numerical value.
Receives Ten vectors: (a),(b),(c),(d),(e),(f),(g),(h),(i),(j).
Sends Vector + 10. (result) = (a)+10.
Triggered delay (Vector)  
Purpose Delays sending a vector value.
Receives A delay in time format, the vector to be sent following the delay, a panic button, and an “Enabled” button that starts the counter.
Sends The received vector after a time delay, which starts counting when the box is enabled.Trigger the panic button to send the vector before the time delay is reached.
Triggered delay with memory (Vector)  
Purpose Delays sending a vector value.
Receives A delay in time format, the vector to be sent following the delay, and a toggle switch.
Sends The received vector after a time delay.
Vector product (V1 x V2)  
Purpose Multiplies two vectors.
Receives Two vectors: (V1) and (V2).
Sends The product of two vectors. (result) = (V1) x (V2).