Share

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 
PurposeEvaluates the Boolean expression (a and b).
ReceivesTwo Boolean values.
Sends(1) when both (a) and (b) equal (1). Otherwise, (0) is sent.(a)(b)(Result) 000 010 100 111.
Flip flop 
PurposeThis is a special box that acts like a switch.
ReceivesTwo Boolean values, (b) and (Clear).
SendsWhen (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) 
PurposeBoolean trigger operator which keeps triggering while a second trigger is received.
ReceivesTwo Boolean values, (b1) and (REC).
SendsThe value (b1) is sent to (result) when (REC) equals (1).
Memory (last trigger) 
PurposeBoolean trigger operator which keeps the last trigger until a new trigger is received.
ReceivesTen Boolean values: (b1-b10) and (Clear).
SendsTen 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 
PurposeEvaluates the Boolean expression not ((a) and (b)).
ReceivesTwo 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 
PurposeEvaluates the Boolean expression not ((a) or (b)).
ReceivesTwo 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 
PurposeEvaluates the Boolean expression not (a).
ReceivesA Boolean value.
SendsThe opposite of (a). (a) (Result) 0 1 1 0.
OR 
PurposeEvaluates the Boolean expression (a or b).
ReceivesTwo 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 
PurposeEvaluates the Boolean expression (a is equivalent to b).
ReceivesTwo 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 
PurposeEvaluates the Boolean expression not (a is equivalent to b).
ReceivesTwo 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 
PurposeConverts an angle from a degree to a radian.
ReceivesA numerical value.
SendsA numerical value.
HSB to RGB 
PurposeConverts HSB to RGB mode.
ReceivesThree numerical values (h), (s), and (b), where h = hue, s = saturation, and b = brightness.
SendsThree numerical values: (x), (y), and (z).
Number to RGBA 
PurposeConverts four numbers into a color vector.
ReceivesFour numerical values: (r), (g), (b), and (a).
SendsA color vector as (result) = {r,g,b,a}. Where (r) = red, (g) = green, (b) = blue, and (a) = alpha.
Number to Vector 
PurposeConverts three numbers into a vector.
ReceivesThree numerical values: (x), (y), and (z).
SendsA vector as (result) = {x,y, z}.
Number to Vector2 
PurposeConverts two numbers into a vector.
ReceivesTwo numerical values: (x) and (y).
SendsA vector as (result) = {x,y}.
Rad to Deg 
PurposeConverts representation from a radian to a degree.
ReceivesA numerical value.
SendsA numerical value.
RGB to HSB 
PurposeConverts RGB to HSB mode.
ReceivesThree numerical values: (x), (y), and (z).
SendsThree numerical values (h), (s), and (b), where h = hue, s = saturation, and b = brightness.
RGB to RGBA 
PurposeConverts RGB to RGBA with Alpha channel mode.
ReceivesThree numerical values: (r), (g) and (b).
SendsFour numerical values: (r), (g), (b), and (a).
RGBA to Number 
PurposeConverts a color vector into four numbers.
ReceivesA color vector: {r, g, b, a}.
SendsFour numerical values (r), (g), (b), and (a) where (r) = red, (g) = green, (b) = blue, and (a) = alpha.
RGBA to RGB 
PurposeConverts RGB with Alpha channel to RGB mode.
ReceivesFour numerical values: (r), (g), (b), and (a).
SendsThree numerical values: (r), (g) and (b).
Seconds to Time 
PurposeConverts a number of seconds to a time format.
ReceivesNumber of seconds.
SendsTime in time format.
Time to Seconds 
PurposeConverts time to a timecode.
ReceivesTime in time format.
SendsTimecode.
Time to TimeCode 
PurposeConverts time to a timecode.
ReceivesTime in time format.
SendsTimecode.
TimeCode to Time 
PurposeConverts time to a number of seconds.
ReceivesTime in time format.
SendsNumber of seconds.
Vector to Number 
PurposeConverts a vector into three numbers.
ReceivesA vector: {x, y, z}.
SendsThree numerical values: (x), (y), and (z).
Vector2 to Number 
PurposeConverts a vector into two numbers.
ReceivesA vector: {x, y}.
SendsTwo 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 
SendsInput (Boolean).
Macro Input ColorAndAlpha 
SendsInput (ColorAndAlpha).
Macro Input Number 
SendsInput (number).
Macro Input Time 
SendsInput (time).
Macro Input Vector 
SendsInput (vector).
Macro Output Bool 
ReceivesOutput (Boolean).
Macro Output ColorAndAlpha 
ReceivesOutput (ColorAndAlpha).
Macro Output Number 
ReceivesOutput (time).
Macro Output Time 
ReceivesOutput (number).
Macro Output Vector 
SendsOutput (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|) 
PurposeSends the absolute value of a received number.
ReceivesA numerical value: (a).
SendsThe positive value of the received number.For example, if (a) = -3, the (result) is 3.
Add (a + b) 
PurposeAdds two numbers.
ReceivesTwo numbers: (a) and (b).
SendsThe sum of the two numbers. (result) = (a) + (b).
arccos (a) 
PurposePerforms the arccosine function on a numerical value.
ReceivesA numerical value: (a).
SendsThe arccosine of a. (result) = arccos(a).
arcsin (a) 
PurposePerforms the arcsine function on a numerical value.
ReceivesA numerical value (a).
SendsThe arcsine of a. (result) = arcsin(a).
arctan (a) 
PurposePerforms the inverse of a tangent function.
ReceivesA numerical value: (a).
SendsThe inverse tangent of (a).
arctan2 (b/a) 
PurposePerforms the arctangent function using two numerical values.
ReceivesTwo numerical values: (a) and (b).
SendsThe arctangent of (b) divided by (a). (result) = arctan(b/a).
Cosine cos (a) 
PurposePerforms the cosine function on a numerical value.
ReceivesA numerical value: (a).
SendsThe cosine of a. (result) = cos(a).
Damp 
PurposeApplies damping to a numerical value.
ReceivesTwo 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) 
PurposeSimilar 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.
ReceivesA (number), Damping Factor (number) and Play Mode (number).
SendsResult (number).
Distance Numbers 
PurposeCalculates the distance between two positions.
ReceivesTwo numbers: (a) and (b).
SendsThe distance between (a) and (b).
Divide (a/b) 
PurposeDivides two numbers.
ReceivesTwo numerical values: (a) and (b).
SendsThe quotient of the first number (a) divided by the second number (b). (result) = (a/b).
Exp (a) 
PurposeMultiplies the base value [e] by itself (a) times. [e=2.718].
ReceivesA numerical value: (a).
Sends(result) = (e^a). For example (e^2) is 2.718 x 2.718 = 7.3875.
Exponent (a^b) 
PurposeMultiplies the numerical value (a) by itself (b) times.
ReceivesTwo numerical values: (a) and (b).
Sends(result) = (a^b), or (a) to the power of (b).
If Cond Then A Else B 
PurposeEvaluates an If, Then, Else statement.
ReceivesTwo numerical values: (a) and (b), and a condition: (bool).
SendsIf 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 
PurposeRounds numerical values down to the next full digit.
ReceivesA numerical value: (a).
SendsThe numerical value rounded down to the next full digit.
Invert (1/a) 
PurposeInverts a numerical value.
Receivesa numerical value (a).
Sends1 divided by a numerical value. (result) = (1/a).
Is between A and B 
PurposeChecks if one value is between two others.
ReceivesTwo 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) 
PurposeChecks if two values are not equal.
ReceivesTwo 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) 
PurposeChecks if one value is greater than another.
ReceivesTwo 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) 
PurposeChecks if one value is greater than or equal to another.
ReceivesTwo 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) 
PurposeChecks if two values are equal.
ReceivesTwo 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) 
PurposeChecks if one value is less than another.
ReceivesTwo 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) 
PurposeChecks if one value is less than or equal to another.
Receivestwo 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) 
PurposeCalculates the natural logarithm.
ReceivesA numerical value: (a).
SendsThe natural logarithm of (a). (result) = ln(a).
Log(a) 
PurposeCalculates the base-10 logarithm of a number.
ReceivesA numerical value: (a).
SendsThe base-10 logarithm of (a). (result) = log(a).
Max Pass-thru 
PurposeGiven a set of numbers, returns the maximum number.
ReceivesMultiple numerical values.
SendsThe maximum value of the inputs.
Memory (a when REC) 
PurposeThe value (a) is sent to (result) when (REC) equals (1). Use this operator to send a value when a trigger is received (REC).
ReceivesA numerical value: (a) and a Boolean value: (REC which is either 0 or 1).
Sends(a) when (REC) is true (1).
Min Pass-thru 
PurposeGiven a set of numbers, returns the minimum number.
ReceivesMultiple numerical values.
SendsThe minimum value of the inputs.
Modulo mod (a,b) 
PurposeDivides two values and sends the remainder.
ReceivesTwo numerical values: (a) and (b).
SendsThe quotient of dividing the first value (a) by the second value (b).
Multiply (a x b) 
PurposeMultiplies two values.
ReceivesTwo numerical values: (a) and (b).
SendsThe product of multiplying the first value (a) by the second value (b). (result) = (a)(b).
Precision numbers 
PurposeCuts 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).
SendsResult (number).
Pull number 
PurposeContinuously 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)
SendsResult (number)
Scale and offset (Number) 
PurposeScales and offsets a numerical value.
ReceivesFive 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).
SendsThe 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) 
PurposePerforms the sine function on a numerical value.
ReceivesA numerical value: (a).
SendsThe sine of (a). (result) = sin(a).
sqrt(a) 
PurposeFinds the square root of a numerical value.
ReceivesA numerical value: (a).
SendsThe square root of the received value. (result) = sqrt(a).
Subtract (a-b) 
PurposeSubtracts two numerical values, (a) and (b).
ReceivesTwo numerical values: (a) and (b).
SendsThe result of the first number subtracted by the second number. (result) = (a) - (b).
Sum 10 numbers 
PurposeAdds 10 to a numerical value.
ReceivesTen numerical values: (a),(b),(c),(d),(e),(f),(g),(h),(i),(j).
SendsNumerical value + 10. (result) = (a)+10.
Tangent tan(a) 
PurposePerforms the tangent function on a numerical value.
ReceivesA numerical value: (a).
SendsThe tangent of (a). (result) = tangent(a).
Triggered delay (Number) 
PurposeDelays sending a numerical value.
ReceivesA delay in time format, the number to be sent following the delay, a panic button, and an “Enabled” button that starts the counter.
SendsThe 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) 
PurposeDelays sending a numerical value.
ReceivesA delay in time format, the number to be sent following the delay, and a toggle switch.
SendsThe received number after a time delay.

Other

These are miscellaneous operators.

Bezier curve 
PurposeCreates 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.
ReceivesFour 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.
SendsResult (Number)
Clip trigger 
ReceivesThree translations (Front, Source, and Target) and a Stop Range.
SendsAccel, Decel, Forward, Left 45, Left 90, Right 45, Right 90, Turn 180.
Damping (3D) 
PurposeDamps the position of a vector using a specified damping factor.
ReceivesA numerical damping factor (Damping Factor) and the vector to be dampened (P).
SendsA vector after applying damping.
Damp (3D) (Clock-based) 
PurposeSimilar to Damp (clock-based), except this relation is based on the Damp (3D) relation.
ReceivesP (Point), Damping Factor (Number) and Play Mode (Number).
SendsResult (Number).
FCurve number (%) 
PurposeRight-click and select Edit from the context menu to edit the FCurve manually. Shown as a percentage relative to the length of the curve.
ReceivesPercentage 0-100% (number).
SendsValue (number).
FCurve number (Time) 
PurposeRight-click and select Edit from the context menu to edit the FCurve manually. Sends a value relative to the current time.
ReceivesPosition % (number).
SendsValue (number).
Real Time Filter 
PurposeApplies a low‐pass filter to incoming live data.
ReceivesDrop Analysis, Drop Error, Enable, Filter Len, Filter Type (numbers) and In P 0 - In P 31 (vectors).
SendsOut P 0 - Out P 31 (vectors).
Triggered plus minus counter 
PurposeCreates a trigger to add the increment/decrement. (You must specify the value of the increment/decrement.) Also contains a Loop option.
ReceivesIncrement, Max, Min (numbers) and Loop, Trigger Increase, Trigger Decrease (Boolean).
SendsNumber. (result) = (a)+ or (a)-.
Triggered random 
PurposeGenerates a random number on demand.
ReceivesMax, Min, Precision, Seed (number) and Trigger Get Number (Boolean.)
SendsNumber.

Rotation

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

Add (R1 + R2) 
PurposeAdds two rotation vectors together.
ReceivesTwo rotation vectors: (Ra) and (Rb).
SendsA vector sum. (result) = (Ra) + (Rb).
Angle difference (Points) 
PurposeCalculates the angle between two vectors, or points, using a supplied radius.
ReceivesTwo vectors for the position of each point: (P1) and (P2), and the radius (Radius).
SendsThe angle as a numerical value.
Angle difference (Rotations) 
PurposeCalculates the difference between the rotation of two objects. The result can be scaled and offset.
ReceivesThe scaling factor (Mult. Factor) and numerical offset (Offset) followed by the two rotations to be compared (R1 and R2).
SendsThe angle difference between the two rotations, scaled and offset.
Angular acceleration 
PurposeReturns the angular acceleration of a rotation vector.
ReceivesRotation value (R).
SendsResult (vector).
Angular speed 
PurposeReturns the angular speed of a rotation vector.
ReceivesRotation value (R).
SendsResult (vector).
Damp (Rotation) 
PurposeApplies damping to a rotation vector.
ReceivesDamping (number), Maximum acceleration (Max acc), Maximum speed (Max speed), and rotation vector (R).
SendsDampened rotation vector.
Global to local 
PurposeConverts a rotation vector from global to local coordinates.
ReceivesA base rotation vector (Base) and a Global rotation vector (Global Rot).
SendsThe converted local rotation.
Interpolate 
PurposeInterpolates between two rotations.
ReceivesA numerical ratio (c) and two rotation vectors: (Ra) and (Rb).
SendsThe difference between rotation vectors (Ra) and (Rb). The difference is sent as a vector. (result) = (Ra) + c[(Rb) - (Ra)].
Local to global 
PurposeConverts a rotation vector from local to global coordinates.
ReceivesA base rotation vector (Base), and Local rotation vector (Local Rot).
SendsThe converted global rotation.
Rotation scaling 
PurposeScales a rotation vector based on a numerical ratio.
ReceivesA numerical ratio (b) and the rotation vector to be scaled (Ra).
SendsA scaled rotation vector. (result) = (b)(Ra).
Sensor rotation helper 
ReceivesA 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).
SendsA rotation vector.
Subtract(R1 - R2) 
PurposeSubtracts two rotation vectors.
ReceivesTwo rotation vectors: (Ra) and (Rb).
SendsThe result of the first rotation vector subtracted by the second rotation vector. (result) = (Ra) - (Rb).
Three-point constraint 
PurposeCreates a rotation from three vectors.
ReceivesThree position vectors: (Pa, Pb, and Pc).
SendsA 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 
PurposeCalculates the shape’s values relative to the ratio (percent / [SUM shape n]) only when [SUM shape n] is greater than (Percent).
ReceivesA percentage (Percent) and six shapes as well as a Default Shape.
SendsResult (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 
PurposeSame as Select exclusive, except it offers twenty-four shapes.
ReceivesA percentage (Percent) and up to twenty-four shapes as well as a Default Shape.
SendsResult (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 
PurposeCalculates the percentage of a value interpolated between a minimum and a maximum value.
ReceivesA maximum numerical value (Max), a minimum numerical value (Min), a Boolean reverse value (0 or 1), and the value to be calibrated (Value).
SendsA 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 
PurposeSimilar to Counter with Start Stop, this source operator also lets you create a counter.
ReceivesBounce (bool), Loop (number), Max (number), Min (number), Play Mode, Speed, Trigger (Bool), and Trigger Reset.
SendsCount (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 
PurposeThis source operator lets you create a counter.
ReceivesBounce (bool), Freq (number), Start (number), Stop (number), and Trigger (Bool).
SendsCount (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 
PurposeApplies the input values to a half circle ramp.
ReceivesThree numerical values: the amplitude (Amp), frequency (Freq), and phase percentage (Phase %).
SendsA half circle ramp based on the received amplitude, frequency, and phase percentage.
Isosceles triangle ramp 
PurposeApplies the input values to an isosceles triangle ramp.
ReceivesThree numerical values: the amplitude (Amp), frequency (Freq), and phase percentage (Phase %).
SendsAn isosceles triangle ramp based on the received amplitude, frequency, and phase percentage.
Pulse 
PurposeSends 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.
ReceivesEnabled (Bool), Freq Hz (number), Play Mode.
SendsResult (number).
Ramp 
PurposeApplies the input values to a ramp.
SendsA numerical count. Starts at zero when the Ramp operator is first added to the Relations window and continues counting upwards.
Random 
PurposeCreates a stream of random numbers at a specified frequency.
ReceivesFreq, Max, Min, Play Mode, Precision, Seed (number).
SendsResult (number).
Right triangle ramp 
PurposeApplies the input values to a right triangle ramp.
ReceivesThree numerical values: the amplitude (Amp), frequency (Freq), and phase percentage (Phase %).
SendsA right triangle ramp based on the received amplitude, frequency, and phase percentage.
Sine ramp 
PurposeApplies the input values to a sine ramp.
ReceivesThree numerical values: the amplitude (Amp), frequency (Freq), and phase percentage (Phase %).
SendsA sine wave ramp based on the received amplitude, frequency, and phase percentage.
Square ramp 
PurposeApplies the input values to a square ramp.
ReceivesThree numerical values: the amplitude (Amp), frequency (Freq), and phase percentage (Phase %).
SendsA 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 
PurposeUses the current time code.
SendsThe current time code.
Local time 
PurposeUses the local time code.
SendsThe local time code shown in the Local Time code field.
Play Mode 
PurposeVerifies that MotionBuilder is in playback mode.
SendsA Boolean value: true (1) if MotionBuilder is in playback mode. Otherwise, sends false (0).
Reference Time 
PurposeUses the reference time code.
SendsThe reference time code shown in the Reference Time code field.
System Time 
PurposeUses the computer’s system clock.
SendsThe system time in SMPTE time code.
Transport Control 
PurposeActs like buttons on the Transport Controls.
ReceivesPlay (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).
SendsPlay (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 
PurposeEvaluates an If, Then, Else statement based on Time (T1).
ReceivesThree values: Cond (bool) and T1 and T2 (Time).
SendsIf 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) 
PurposeChecks if Time (T1) is different than (T2).
ReceivesTwo time values: (T1) and (T2), measured in frames per second or SMPTE.
SendsA Boolean value: true (1) if (T1) does not equal (T2) and sends false (0) if (T1) equals (T2).
Is Greater (T1 > T2) 
PurposeChecks if Time (T1) is greater than (T2).
ReceivesTwo time values: (T1) and (T2), measured in frames per second or SMPTE.
SendsA 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) 
PurposeChecks if Time (T1) is greater than or equal to (T2).
ReceivesTwo time values: (T1) and (T2), measured in frames per second or SMPTE.
SendsA 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) 
PurposeChecks if Time (T1) is equal to (T2).
ReceivesTwo time values: (T1) and (T2), measured in frames per second or SMPTE.
SendsA Boolean value: True (1) if (T1) is equal to (T2) or sends false (0) if (T1) does not equal (T2).
Is Less (T1 < T2) 
PurposeChecks if Time (T1) is less than (T2).
ReceivesTwo time values: (T1) and (T2), measured in frames per second or SMPTE.
SendsA 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) 
PurposeChecks if Time (T1) is less than or equal to (T2).
ReceivesTwo time values: (T1) and (T2), measured in frames per second or SMPTE.
SendsA 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 
PurposeCalculates 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.
ReceivesA vector (Position).
SendsA vector indicating the acceleration of the supplied vector (Position).
Add (V1 + V2) 
PurposeAdds two vectors.
ReceivesTwo vectors: (V1) and (V2).
SendsSum of two vectors. (result) = (V1) + (V2).
Angle 
PurposeCreates the angle between two vectors (expressed in degrees).
ReceivesTwo vectors (V1) (V2).
SendsNumber. (result) = (V1) - (V2).
Center of Mass 
PurposeComputes the center of a set of vectors (expressed as 3D space coordinates).
ReceivesTwo vectors (V1) (V2).
SendsComputed center point (average) as a vector.
Damp position 
PurposeApplies damping to a position vector.
ReceivesA numerical damping factor (Damping), a numerical maximum acceleration (Max acc), a numerical maximum speed (Max speed), and a position vector (T).
SendsDampened vector.
Derive 
PurposeDerive 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).
ReceivesReset (Bool), V1 (Initial vector), and V2 (vector).
SendsA 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 
PurposeGives the determinant of a 3x3 column (I, J, K) matrix.
ReceivesThree vectors: I, J, and K.
SendsA number.
Displacement 
PurposeEliminates the dependency on display frame rates.
ReceivesVelocity (Vector) and Reset (Action to reset original position to zero).
SendsA vector (0 position computed from live input velocity).
Distance 
PurposeCalculates the distance between two positions.
ReceivesTwo vectors: (V1) and (V2).
SendsThe distance between the two vectors, expressed as a numerical value.
Dot product (V1 . V2) 
PurposeCalculates the dot product of two vectors.
ReceivesTwo vectors: (V1) and (V2).
SendsDot product of two vectors, expressed as a numerical value. (result) = (V1). (V2).
Gravity 
PurposeReturns a position.
ReceivesThree vectors: (Acceleration, Position and Speed).
SendsA number. (result)= (a)(b)(c).
If cond then A else B 
PurposeEvaluates an If, Then, Else statement.
ReceivesTwo vectors: (a) and (b), and a condition (bool).
SendsIf 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) 
PurposeChecks if vector (V1) is different than vector (V2).
ReceivesTwo time values: (V1) and (V2), measured in frames per second or SMPTE.
SendsA Boolean value: True (1) if (V1) does not equal (V2) and sends false (0) if (V1) equals (V2).
Is identical (V1 == V2) 
PurposeChecks if vector (V1) is equal to vector (V2).
ReceivesTwo time values: (V1) and (V2), measured in frames per second or SMPTE.
SendsA Boolean value: True (1) if (V1) is equal to (V2) and sends false (0) if (V1) does not equal (V2).
Length 
PurposeCalculates the distance between a vector and the world zero point.
ReceivesA vector: (V1).
SendsThe distance between the vector and the world zero point, expressed as a numerical value.
Memory (V1 when REC) 
PurposeUse 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 
PurposeInterpolates between two vectors relative to a given ratio.
ReceivesTwo vectors: (V1) and (V2), and a ratio (Ratio) between 0 and 1.
SendsAn interpolated vector. (result) = V1 + ratio[(V2) - (V1)].
Normalize 
PurposeNormalizes a vector.
ReceivesA vector.
SendsA normalized vector where each coordinate is normalized between 0 and 1.
Orbit attraction 
PurposeReturns a position.
ReceivesA number (Acceleration) and three vectors: (Origin, Position, and Speed.)
SendsA vector. (result)= (a)(b)(c)(d).
Precision vectors 
PurposeUse this constraint to apply a precise value to every component of the vector: X, Y, and Z can each have different precision values.
ReceivesA (number) and Precision (number).
SendsResult (number).
Pull vector 
PurposeContinuously 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.
ReceivesV (Vector).
SendsResult (Vector).
Scale (a x V) 
PurposeScales a vector by a numerical value.
ReceivesA scaling factor (number) and a vector (Vector).
SendsThe scaled vector. (result) = (number) x (Vector).
Scale and offset (Vector) 
PurposeScales and offsets a vector.
ReceivesA 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).
SendsThe 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 
PurposeApplies damping to a scaling vector.
ReceivesA numerical damping factor (Damping), a numerical maximum acceleration (Max acc), a numerical maximum speed (Max speed), and a scaling vector (S).
SendsA scaled vector with damping.
Speed 
PurposeCalculates the speed of a vector based on its change of position over time.
ReceivesA vector (Position).
SendsThe speed of the vector expressed as a vector (Translation).
Subtract (V1 - V2) 
PurposeSubtracts two vectors.
ReceivesTwo vectors: (V1) and (V2).
SendsThe result of the first vector subtracted by the second vector. (Result) = (V1) - (V2).
Sum 10 vectors 
PurposeAdds 10 to a numerical value.
ReceivesTen vectors: (a),(b),(c),(d),(e),(f),(g),(h),(i),(j).
SendsVector + 10. (result) = (a)+10.
Triggered delay (Vector) 
PurposeDelays sending a vector value.
ReceivesA delay in time format, the vector to be sent following the delay, a panic button, and an “Enabled” button that starts the counter.
SendsThe 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) 
PurposeDelays sending a vector value.
ReceivesA delay in time format, the vector to be sent following the delay, and a toggle switch.
SendsThe received vector after a time delay.
Vector product (V1 x V2) 
PurposeMultiplies two vectors.
ReceivesTwo vectors: (V1) and (V2).
SendsThe product of two vectors. (result) = (V1) x (V2).

Was this information helpful?