Curve

RealFlow has strong built-in animation features and most of its parameters can be changed over time. When we talk about animations we have to differentiate between curves and keys. The curve's shape and progress is determined by the keys. The keys, on the other hand, are defined by two values: current time and the value's magnitude. All these attributes can be manipulated with graphs. Additionally, there is also a wide variety of nodes to combine curves, add keys, or remove certain parts.

Nodes

NameDescription
ArrayCurveConcatThis node concatenates the inputs 'array0' and 'array1' into a single 'out' array.
ArrayCurveConstantThis node returns a constant array.
ArrayCurveFilterByMaskThis node returns the elements of the input 'array' at positions specified by the 'mask' parameter.
ArrayCurveFindAllElementIndicesThis node returns all positions in the input 'array', which fit to the input 'element' values.
ArrayCurveFindElementThis node returns the first position of appearance of the input 'element' within the input 'array'. If the array does not contain the element, -1 is returned.
ArrayCurveInsertElementThis node inserts all elements from the 'element' input into the input 'array' at the position specified by 'position'. If 'position' is equal or lower than 0 then the elements are inserted at the beginning of the array. If 'position' is greater or equal than the inputs 'array' size, elements are appended at the end.
ArrayCurveMixThis node creates an output array based on the two inputs 'array0' and 'array1' and the input mask. If the mask value equals 0 then the value of 'array0' is used, if the mask value is 1 the value of 'array1' is used.
ArrayCurvePushElementThis node appends all the elements from the 'element' at the end of the input 'array'.
ArrayCurveRemoveElementThis node removes all elements of the 'by_value' from the input 'array'. The returned mask has the same size as the input 'array' and is set to 0 at removed positions.
ArrayCurveRemoveIndexThis node removes all input array positions by the 'index' input.
ArrayCurveRemoveRepeatedElementsThis node removes all repetitions of elements from the input 'array'. The 'new_to_old' array can be used as an 'index' input for a GetArrayElement-Node to restore the original array. The returned mask has the same size as the input 'array' and is set to 0 at removed positions.
ArrayCurveResizeThis node resizes the input 'array'. If the result is bigger than the input array, the last value is repeated accordingly.
ArrayCurveReverseThis node reverses the order of the input 'array'.
ArrayCurveSliceThis node returns an array containing the range of the input 'array' from the 'first' position with the given input 'size'.Thus, the output array is a subarray or slice of the input.
ArrayKeyConcatThis node concatenates the inputs 'array0' and 'array1' into a single 'out' array.
ArrayKeyConstantThis node returns a constant array.
ArrayKeyFilterByMaskThis node returns the elements of the input 'array' at positions specified by the 'mask' parameter.
ArrayKeyFindAllElementIndicesThis node returns all positions in the input 'array', which fit to the input 'element' values.
ArrayKeyFindElementThis node returns the first position of appearance of the input 'element' within the input 'array'. If the array does not contain the element, -1 is returned.
ArrayKeyInsertElementThis node inserts all elements from the 'element' input into the input 'array' at the position specified by 'position'. If 'position' is equal or lower than 0 then the elements are inserted at the beginning of the array. If 'position' is greater or equal than the inputs 'array' size, elements are appended at the end.
ArrayKeyMixThis node creates an output array based on the two inputs 'array0' and 'array1' and the input mask. If the mask value equals 0 then the value of 'array0' is used, if the mask value is 1 the value of 'array1' is used.
ArrayKeyPushElementThis node appends all the elements from the 'element' at the end of the input 'array'.
ArrayKeyRemoveElementThis node removes all elements of the 'by_value' from the input 'array'. The returned mask has the same size as the input 'array' and is set to 0 at removed positions.
ArrayKeyRemoveIndexThis node removes all input array positions by the 'index' input.
ArrayKeyRemoveRepeatedElementsThis node removes all repetitions of elements from the input 'array'. The 'new_to_old' array can be used as an 'index' input for a GetArrayElement-Node to restore the original array. The returned mask has the same size as the input 'array' and is set to 0 at removed positions.
ArrayKeyResizeThis node resizes the input 'array'. If the result is bigger than the input array, the last value is repeated accordingly.
ArrayKeyReverseThis node reverses the order of the input 'array'.
ArrayKeySliceThis node returns an array containing the range of the input 'array' from the 'first' position with the given input 'size'.Thus, the output array is a subarray or slice of the input.
CurveAddKeyThis node adds a copy of the input keys to the input 'curve'.
CurveEulerFilterThis node applies an Euler filter to the input curve. This means that the entire curve is processed searching and fixing for angle discontinuities, i.e. always taking the least angle difference between the last and the current key.
CurveEvalThis node returns all the keys stored in the curve.
CurveRemoveKeyThis node removes the input keys from the input 'curve'.
CurveRemoveKeysAllThis node removes all the keys stored in the input curve.
GetArrayCurveElementThis node returns the elements of the input 'array' at positions specified by the 'index' parameter.
GetArrayKeyElementThis node returns the elements of the input 'array' at positions specified by the 'index' parameter.
GetCurveGlobalVariableThis node returns a reference to previously stored variables in global memory (using the SetGlobalVariable-Nodes).
GetCurveKeysThis node returns all the keys stored in the curve.
GetCurvePropertiesThis node returns information about the input 'curve' properties.
GetKeyGlobalVariableThis node returns a reference to previously stored variables in global memory (using the SetGlobalVariable-Nodes).
GetKeyPropertiesThis node returns all the input'key' properties.
GetParameterCurveThis node returns the curve of the input 'node' parameter.
KeyThis node creates a Key element to be added to a Curve later. The created key has initially all its values set to 0 and is of type TCB.
SetArrayCurveElementThis node returns the elements of the input 'array' at positions specified by the 'index' parameter.
SetArrayKeyElementThis node returns the elements of the input 'array' at positions specified by the 'index' parameter.
SetCurveGlobalVariableThis node creates a reference to the input pin in global memory to be used within other RealFlow graphs through the GetGlobalVariable nodes.
SetCurvePropertiesThis node changes properties of the input 'curve'.
SetKeyGlobalVariableThis node allows the user to create a reference or a copy of the input pin in global memory to be used within other RealFlow graph through the GetGlobalVariable nodes.
SetKeyPropertiesThis node sets the input 'key' properties. Only the properties related to input pins with an input connection are modified for the keys.

 

ArrayCurveConcat

This node concatenates the inputs 'array0' and 'array1' into a single 'out' array.

Inputs

NameTypesPassThroughDescription
array0Curve
 Optional

out array

The array0

array1Curve
 Optional

out array

The array1

Outputs

NameTypesPassThroughDescription
out arrayCurve
 Optional

array0
array1

The out array

 

ArrayCurveConstant

This node returns a constant array.

Inputs

NameTypesPassThroughDescription
constantCurve 

The constant

sizeInteger (1) 

The size

Outputs

NameTypesPassThroughDescription
out arrayCurve 

The out array

 

ArrayCurveFilterByMask

This node returns the elements of the input 'array' at positions specified by the 'mask' parameter.

Inputs

NameTypesPassThroughDescription
arrayCurve
 Optional

result

The array

maskBit 

The mask

Outputs

NameTypesPassThroughDescription
resultCurve
 Optional

array

The result

 

ArrayCurveFindAllElementIndices

This node returns all positions in the input 'array', which fit to the input 'element' values. .

Inputs

NameTypesPassThroughDescription
arrayCurve 

The array

elementCurve 

The value to find in the input array

Outputs

NameTypesPassThroughDescription
indexInteger 

The index

maskBit 

The mask

 

ArrayCurveFindElement

This node is executed in parallel according to its input pins size.

This node returns the first position of appearance of the input 'element' within the input 'array'. If the array does not contain the element, -1 is returned.

Inputs

NameTypesPassThroughDescription
arrayCurve 

The array

elementCurve 

The value to find in the input array

start indexInteger 

The first index to search the element from

Outputs

NameTypesPassThroughDescription
indexInteger 

The index

 

ArrayCurveInsertElement

This node inserts all elements from the 'element' input into the input 'array' at the position specified by 'position'. If 'position' is equal or lower than 0 then the elements are inserted at the beginning of the array. If 'position' is greater or equal than the inputs 'array' size, elements are appended at the end.

Inputs

NameTypesPassThroughDescription
arrayCurve
 Optional

out array

The array

elementCurve 

The value to insert

indexInteger (1) 

The position to insert the input element on

Outputs

NameTypesPassThroughDescription
out arrayCurve
 Optional

array

The out array

 

ArrayCurveMix

This node creates an output array based on the two inputs 'array0' and 'array1' and the input mask. If the mask value equals 0 then the value of 'array0' is used, if the mask value is 1 the value of 'array1' is used.

The size of the output is the same as mask's size.

Inputs

NameTypesPassThroughDescription
array0Curve
 Optional

out array

The array0

array1Curve
 Optional

out array

The array1

maskBit 

The mask

Outputs

NameTypesPassThroughDescription
out arrayCurve
 Optional

array0
array1

The out array

 

ArrayCurvePushElement

This node appends all the elements from the 'element' at the end of the input 'array'.

Inputs

NameTypesPassThroughDescription
arrayCurve
 Optional

out array

The array

elementCurve 

The value to append at the end

Outputs

NameTypesPassThroughDescription
out arrayCurve
 Optional

array

The out array

 

ArrayCurveRemoveElement

This node removes all elements of the 'by_value' from the input 'array'. The returned mask has the same size as the input 'array' and is set to 0 at removed positions.

Inputs

NameTypesPassThroughDescription
arrayCurve
 Optional

out array

The array

elementCurve 

The value to remove all its instances from the input array

Outputs

NameTypesPassThroughDescription
out arrayCurve
 Optional

array

The out array

maskBit 

The mask

 

ArrayCurveRemoveIndex

This node removes all input array positions by the 'index' input. .

Inputs

NameTypesPassThroughDescription
arrayCurve
 Optional

out array

The array

indexInteger 

The positions of the input array to remove

Outputs

NameTypesPassThroughDescription
out arrayCurve
 Optional

array

The out array

 

ArrayCurveRemoveRepeatedElements

This node removes all repetitions of elements from the input 'array'. The 'new_to_old' array can be used as an 'index' input for a GetArrayElement-Node to restore the original array. The returned mask has the same size as the input 'array' and is set to 0 at removed positions.

Inputs

NameTypesPassThroughDescription
arrayCurve
 Optional

out array

The array

Outputs

NameTypesPassThroughDescription
new to oldInteger 

The new to old

maskBit 

The mask

out arrayCurve
 Optional

array

The out array

 

ArrayCurveResize

This node resizes the input 'array'. If the result is bigger than the input array, the last value is repeated accordingly.

Inputs

NameTypesPassThroughDescription
arrayCurve
 Optional

out array

The array

sizeInteger (1) 

The size

Outputs

NameTypesPassThroughDescription
out arrayCurve
 Optional

array

The out array

 

ArrayCurveReverse

This node reverses the order of the input 'array'.

Inputs

NameTypesPassThroughDescription
arrayCurve
 Optional

out array

The array

Outputs

NameTypesPassThroughDescription
out arrayCurve
 Optional

array

The out array

 

ArrayCurveSlice

This node returns an array containing the range of the input 'array' from the 'first' position with the given input 'size'.Thus, the output array is a subarray or slice of the input.

Inputs

NameTypesPassThroughDescription
arrayCurve
 Optional

out array

The array

firstInteger (1) 

The position of the element that will be the first of the output array

sizeInteger (1) 

The total number of elements to copy from the input array. If value is negative, all the elements from 'first' are copied to the output array

Outputs

NameTypesPassThroughDescription
out arrayCurve
 Optional

array

The out array

 

ArrayKeyConcat

This node concatenates the inputs 'array0' and 'array1' into a single 'out' array.

Inputs

NameTypesPassThroughDescription
array0Key
 Optional

out array

The array0

array1Key
 Optional

out array

The array1

Outputs

NameTypesPassThroughDescription
out arrayKey
 Optional

array0
array1

The out array

 

ArrayKeyConstant

This node returns a constant array.

Inputs

NameTypesPassThroughDescription
constantKey 

The constant

sizeInteger (1) 

The size

Outputs

NameTypesPassThroughDescription
out arrayKey 

The out array

 

ArrayKeyFilterByMask

This node returns the elements of the input 'array' at positions specified by the 'mask' parameter.

Inputs

NameTypesPassThroughDescription
arrayKey
 Optional

result

The array

maskBit 

The mask

Outputs

NameTypesPassThroughDescription
resultKey
 Optional

array

The result

 

ArrayKeyFindAllElementIndices

This node returns all positions in the input 'array', which fit to the input 'element' values. .

Inputs

NameTypesPassThroughDescription
arrayKey 

The array

elementKey 

The value to find in the input array

Outputs

NameTypesPassThroughDescription
indexInteger 

The index

maskBit 

The mask

 

ArrayKeyFindElement

This node is executed in parallel according to its input pins size.

This node returns the first position of appearance of the input 'element' within the input 'array'. If the array does not contain the element, -1 is returned.

Inputs

NameTypesPassThroughDescription
arrayKey 

The array

elementKey 

The value to find in the input array

start indexInteger 

The first index to search the element from

Outputs

NameTypesPassThroughDescription
indexInteger 

The index

 

ArrayKeyInsertElement

This node inserts all elements from the 'element' input into the input 'array' at the position specified by 'position'. If 'position' is equal or lower than 0 then the elements are inserted at the beginning of the array. If 'position' is greater or equal than the inputs 'array' size, elements are appended at the end.

Inputs

NameTypesPassThroughDescription
arrayKey
 Optional

out array

The array

elementKey 

The value to insert

indexInteger (1) 

The position to insert the input element on

Outputs

NameTypesPassThroughDescription
out arrayKey
 Optional

array

The out array

 

ArrayKeyMix

This node creates an output array based on the two inputs 'array0' and 'array1' and the input mask. If the mask value equals 0 then the value of 'array0' is used, if the mask value is 1 the value of 'array1' is used.

The size of the output is the same as mask's size.

Inputs

NameTypesPassThroughDescription
array0Key
 Optional

out array

The array0

array1Key
 Optional

out array

The array1

maskBit 

The mask

Outputs

NameTypesPassThroughDescription
out arrayKey
 Optional

array0
array1

The out array

 

ArrayKeyPushElement

This node appends all the elements from the 'element' at the end of the input 'array'.

Inputs

NameTypesPassThroughDescription
arrayKey
 Optional

out array

The array

elementKey 

The value to append at the end

Outputs

NameTypesPassThroughDescription
out arrayKey
 Optional

array

The out array

 

ArrayKeyRemoveElement

This node removes all elements of the 'by_value' from the input 'array'. The returned mask has the same size as the input 'array' and is set to 0 at removed positions.

Inputs

NameTypesPassThroughDescription
arrayKey
 Optional

out array

The array

elementKey 

The value to remove all its instances from the input array

Outputs

NameTypesPassThroughDescription
out arrayKey
 Optional

array

The out array

maskBit 

The mask

 

ArrayKeyRemoveIndex

This node removes all input array positions by the 'index' input. .

Inputs

NameTypesPassThroughDescription
arrayKey
 Optional

out array

The array

indexInteger 

The positions of the input array to remove

Outputs

NameTypesPassThroughDescription
out arrayKey
 Optional

array

The out array

 

ArrayKeyRemoveRepeatedElements

This node removes all repetitions of elements from the input 'array'. The 'new_to_old' array can be used as an 'index' input for a GetArrayElement-Node to restore the original array. The returned mask has the same size as the input 'array' and is set to 0 at removed positions.

Inputs

NameTypesPassThroughDescription
arrayKey
 Optional

out array

The array

Outputs

NameTypesPassThroughDescription
new to oldInteger 

The new to old

maskBit 

The mask

out arrayKey
 Optional

array

The out array

 

ArrayKeyResize

This node resizes the input 'array'. If the result is bigger than the input array, the last value is repeated accordingly.

Inputs

NameTypesPassThroughDescription
arrayKey
 Optional

out array

The array

sizeInteger (1) 

The size

Outputs

NameTypesPassThroughDescription
out arrayKey
 Optional

array

The out array

 

ArrayKeyReverse

This node reverses the order of the input 'array'.

Inputs

NameTypesPassThroughDescription
arrayKey
 Optional

out array

The array

Outputs

NameTypesPassThroughDescription
out arrayKey
 Optional

array

The out array

 

ArrayKeySlice

This node returns an array containing the range of the input 'array' from the 'first' position with the given input 'size'.Thus, the output array is a subarray or slice of the input.

Inputs

NameTypesPassThroughDescription
arrayKey
 Optional

out array

The array

firstInteger (1) 

The position of the element that will be the first of the output array

sizeInteger (1) 

The total number of elements to copy from the input array. If value is negative, all the elements from 'first' are copied to the output array

Outputs

NameTypesPassThroughDescription
out arrayKey
 Optional

array

The out array

 

CurveAddKey

This node adds a copy of the input keys to the input 'curve'.

Inputs

NameTypesPassThroughDescription
curveCurve (1)out curve

The curve

keyKey 

The key to add to the curve. It is copied before being added

Outputs

NameTypesPassThroughDescription
out curvePassThroughcurve

The out curve

 

CurveEulerFilter

This node applies an Euler filter to the input curve. This means that the entire curve is processed searching and fixing for angle discontinuities, i.e. always taking the least angle difference between the last and the current key.

Inputs

NameTypesPassThroughDescription
curveCurveout curve

The curve

Outputs

NameTypesPassThroughDescription
out curvePassThroughcurve

The out curve

 

CurveEval

This node returns all the keys stored in the curve.

Inputs

NameTypesPassThroughDescription
curveCurve 

The curve

tReal 

The t

Outputs

NameTypesPassThroughDescription
resultReal 

The result

 

CurveRemoveKey

This node removes the input keys from the input 'curve'.

Inputs

NameTypesPassThroughDescription
curveCurve (1)out curve

The curve

keyKey 

The key to remove from the curve. It must belong to it

Outputs

NameTypesPassThroughDescription
out curvePassThroughcurve

The out curve

 

CurveRemoveKeysAll

This node removes all the keys stored in the input curve.

Inputs

NameTypesPassThroughDescription
curveCurveout curve

The curve

Outputs

NameTypesPassThroughDescription
out curvePassThroughcurve

The out curve

 

GetArrayCurveElement

This node returns the elements of the input 'array' at positions specified by the 'index' parameter.

Inputs

NameTypesPassThroughDescription
arrayCurve 

The array

indexInteger 

The index

Outputs

NameTypesPassThroughDescription
elementCurve 

The element

 

GetArrayKeyElement

This node returns the elements of the input 'array' at positions specified by the 'index' parameter.

Inputs

NameTypesPassThroughDescription
arrayKey 

The array

indexInteger 

The index

Outputs

NameTypesPassThroughDescription
elementKey 

The element

 

GetCurveGlobalVariable

This node returns a reference to previously stored variables in global memory (using the SetGlobalVariable-Nodes).

Inputs

NameTypesPassThroughDescription
nameString (1) 

The name

Outputs

NameTypesPassThroughDescription
outCurve 

The out

 

GetCurveKeys

This node returns all the keys stored in the curve.

Inputs

NameTypesPassThroughDescription
curveCurve 

The curve

Outputs

NameTypesPassThroughDescription
keysKey 

The keys

 

GetCurveProperties

This node returns information about the input 'curve' properties.

Inputs

NameTypesPassThroughDescription
curveCurve 

The curve

Outputs

NameTypesPassThroughDescription
has expressionBit 

True if the curve has an expression

expressionString 

The expression stored in the curve. Or an empty string if there is no expression for this curve

expression plus splineBit 

True if the evaluation of the curve implies adding the expression and the spline values

key countInteger 

The number of keys

pre behaviour
 Numeric

Integer
Integer64
Real
Vector3
Color4
ColorGradient
Quaternion
Matrix4

 

The behaviour of the curve before its first key: 'zero'(0) or 'constant'(1)

post behaviour
 Numeric

Integer
Integer64
Real
Vector3
Color4
ColorGradient
Quaternion
Matrix4

 

The behaviour of the curve after its last key: 'zero'(0), 'constant'(1), 'loop'(2), 'loop-offset'(3) or 'follow-tangent'(4)

 

GetKeyGlobalVariable

This node returns a reference to previously stored variables in global memory (using the SetGlobalVariable-Nodes).

Inputs

NameTypesPassThroughDescription
nameString (1) 

The name

Outputs

NameTypesPassThroughDescription
outKey 

The out

 

GetKeyProperties

This node returns all the input'key' properties.

Inputs

NameTypesPassThroughDescription
keyKey 

The key

Outputs

NameTypesPassThroughDescription
xReal 

The x coordinate of the key. It is the time value, in seconds

yReal 

The y coordinate of the key. It is the value at position x

typeInteger 

The type of the key. 'linear'(0), 'bezier'(1), 'tcb'(2), or 'step'(3)

ease fromReal 

The Ease From value. To smooth the way the curve arrives at this key

ease toReal 

The Ease From value. To smooth the way the curve exits this key

incomingReal 

The Incoming value. For Bezier type keys, it changes the angle of the tangent at the left of the key

outgoingReal 

The Outgoing value. For Bezier type keys, it changes the angle of the tangent at the right of the key

tReal 

The Tension of a TCB key

cReal 

The Continuity of a TCB key

bReal 

The Bias of a TCB key

unify tanBit 

True to unify the tangent at both sides of the key in Bezier and TCB mode

 

GetParameterCurve

This node returns the curve of the input 'node' parameter.

Parameter might not have a curve.

Inputs

NameTypesPassThroughDescription
nodeRealFlow Node 

The node

parameterString (1) 

The parameter

Outputs

NameTypesPassThroughDescription
curveCurve 

The curve of the parameter

 

Key

This node creates a Key element to be added to a Curve later. The created key has initially all its values set to 0 and is of type TCB.

Outputs

NameTypesPassThroughDescription
keyKey 

The key

 

SetArrayCurveElement

This node returns the elements of the input 'array' at positions specified by the 'index' parameter.

Inputs

NameTypesPassThroughDescription
arrayCurve
 Optional

result

The array

indexInteger 

The index

elementCurve 

The element

Outputs

NameTypesPassThroughDescription
resultCurve
 Optional

array

The result

 

SetArrayKeyElement

This node returns the elements of the input 'array' at positions specified by the 'index' parameter.

Inputs

NameTypesPassThroughDescription
arrayKey
 Optional

result

The array

indexInteger 

The index

elementKey 

The element

Outputs

NameTypesPassThroughDescription
resultKey
 Optional

array

The result

 

SetCurveGlobalVariable

This node creates a reference to the input pin in global memory to be used within other RealFlow graphs through the GetGlobalVariable nodes.

Inputs

NameTypesPassThroughDescription
nameString (1) 

The name

inCurvethrough

The in

Outputs

NameTypesPassThroughDescription
throughPassThroughin

The value connected to the input

 

SetCurveProperties

This node changes properties of the input 'curve'.

Inputs

NameTypesPassThroughDescription
curveCurve 

The curve

expressionString 

The expression to store in the curve. If left empty, the existing expression is removed

expression plus splineBit 

True if the evaluation of the curve implies adding the expression and the spline values

pre behaviour
 List

zero
constant
loop
loop-offset
follow-tangent

 

The behaviour of the curve before its first key: 'zero'(0) or 'constant'(1)

post behaviour
 List

zero
constant
loop
loop-offset
follow-tangent

 

The behaviour of the curve after its last key: 'zero'(0), 'constant'(1), 'loop'(2), 'loop-offset'(3) or 'follow-tangent'(4)

Outputs

NameTypesPassThroughDescription
out curvePassThrough 

The out curve

 

SetKeyGlobalVariable

This node allows the user to create a reference or a copy of the input pin in global memory to be used within other RealFlow graph through the GetGlobalVariable nodes.

Inputs

NameTypesPassThroughDescription
nameString (1) 

The name

inKeythrough

The in

store copyBit (1) 

The store copy

Outputs

NameTypesPassThroughDescription
throughPassThroughin

The value connected to the input

out copyKey 

The value copied in memory in case a copy has been performed. The same input value otherwise

 

SetKeyProperties

This node sets the input 'key' properties. Only the properties related to input pins with an input connection are modified for the keys.

Inputs

NameTypesPassThroughDescription
keyKeyout key

The key

xReal 

The x coordinate of the key. It is the time value, in seconds

yReal 

The y coordinate of the key. It is the value at position x

typeInteger 

The type of the key. 'linear', 'tcb', 'bezier' or 'step'

ease fromReal 

The Ease From value. To smooth the way the curve arrives at this key

ease toReal 

The Ease From value. To smooth the way the curve exits this key

incomingReal 

The Incoming value. For Bezier type keys, it changes the angle of the tangent at the left of the key

outgoingReal 

The Outgoing value. For Bezier type keys, it changes the angle of the tangent at the right of the key

tReal 

The Tension of a TCB key

cReal 

The Continuity of a TCB key

bReal 

The Bias of a TCB key

unify tanBit 

True to unify the tangent at both sides of the key in Bezier and TCB mode

Outputs

NameTypesPassThroughDescription
out keyPassThroughkey

The out key