MAXScript Language Reference > 3ds Max Objects > Animation Controllers > Controller Types > Bezier Controllers >

# Bezier Controller Keys

| Animation Controllers - Quick Navigation

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/Master 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 where ever s/he feels. Otherwise, s/he is constrained, to prevent discontinuities.

Correspondingly, there is a bezier key property called .freeHandle that implements the functionality described above.

EXAMPLE
    c = bezier_position ()-- create and assign new controller
    $bar.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

NoteThere are a fair number of classes that do not implement the showproperties method. MAXKey is one of them. getPropNames is not implemented for it either.

#### See Also

- Key Common Properties, Operators, and Methods

- Value Common Properties, Operators, and Methods

- Bezier Controllers

- BezierDefaultParams Structure