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 context 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, editing, renaming, and deleting 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 context 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 context 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). |