Bezier Controller Keys
For Bezier controller keys, the following properties are accessible:
Properties
<key>.time Time
Time value or number (interpreted as frames)
<key>.selected Boolean
Specifies whether the key is selected
<key>.value varies
Class determined by its containing controller
<key>.inTangent varies-- float or point3 (see below)
<key>.outTangent varies-- float or point3 (see below)
<key>.inTangentType Name-- see list of permitted names below
<key>.outTangentType Name-- see list of permitted names below
<key>.inTangentLength Float
<key>.outTangentLength Float
<key>.freeHandle Boolean
<key>.x_locked Boolean default: true
<key>.y_locked Boolean default: true
<key>.z_locked Boolean default: true
<key>.constantVelocity Boolean default: false
The .inTangent
and .outTangent
values are Floats in keys of float controllers and Point3s for the other appropriate controllers. Default value is 0 for float controllers, [0,0,0] otherwise.
The .inTangentType
and .outTangentType
properties have symbolic name values representing the possible tangent types available in the drop-down menu in the Bezier key property dialog:
#smooth #linear #step #fast #slow #custom #auto
.inTangentLength
and .outTangentLength
, (typically a fraction from 0 to 1) represent how long the handle is towards the adjacent key. For example, a value of 0.5 means the handle reaches halfway from the current key to the adjacent key, and a value of 1 reaches all the way. If the handle reaches beyond the adjacent key, it will be greater than one. If there is no previous key, the value of .inTangentLength
will be -1.
There is a check box to the key property/Driver Point control dialog found in the Motion Panel. It is called Free Handle. When Free Handle is checked, the user can move the horizontal handle. Otherwise, the user is constrained to prevent discontinuities.
Correspondingly, there is a bezier key property called .freeHandle
that implements the functionality described above.
EXAMPLE
s = sphere()
c = bezier_position ()-- create and assign new controller
s.pos.controller = c
k = addNewKey c 0f-- add a key at frame 0
k.value = [10,0,0]-- set value there
k.outTangentType = #slow-- and outgoing tangent type
k = addNewKey c 100f-- add another key at 100
k.value = [200,10,0]-- set value
k.inTangentType = #custom-- make inTangent custom
k.inTangent = [0.2, 0.02, 0.112]-- set its tangents
k.x_locked = false-- and unlock handles
showproperties
method. MAXKey is one of them. .getPropNames
is not implemented for it either.