## FCurveKey.Interpolation

### Description

Sets or returns the interpolation type of the right side of the fcurve segment (one of the values from the siFCurveKeyInterpolation enum.
Fcurve segment interpolation only applies to standard fcurves (where the type is siStandardFCurve). All other fcurve types return the siConstantKeyInterpolation value.
If you try to set the key interpolation with the siDefaultInterpolation value, it is ignored and returns S_FALSE in C++.
For more information, see "FCurve Interpolation and Extrapolation" in the Softimage user guide.

### C# Syntax

    // get accessor

    siFCurveKeyInterpolation rtn = FCurveKey.Interpolation;

    // set accessor

    FCurveKey.Interpolation = siFCurveKeyInterpolation;

### Examples

#### 1. JScript Example

    /*

    	This example illustrates how to set interpolation for individual keys

    */

    NewScene( null, false );

    var n = Application.ActiveSceneRoot.AddNull();

    SIAddCustomParameter( "null", "X", siDouble, 0, 0, 100, null, 5, 0, 5 );

    var cpset = Dictionary.GetObject( "null.CustomPSet" );

    var x = cpset.Parameters("X");

    Application.LogMessage( "x value = " + x.Value  );

    Application.LogMessage( "x min/max = " + x.Min + ", " + x.Max );

    // Add a standard fcurve with 5 keys

    var fc = x.AddFCurve2( new Array( 1,0.52, 25.5,5, 50,0.45, 75,10.23, 100,0.76 ), siStandardFCurve );

    // Set the interpolation for the individual keys

    var k; var i = 0;

    // Set constant interpolation

    k = fc.Keys(i)

    Application.LogMessage( "fcurve key " + i + " interpolation before = " + k.Interpolation );

    k.Interpolation = siConstantKeyInterpolation;

    Application.LogMessage( "fcurve key " + i + " interpolation after = " + k.Interpolation );

    Application.LogMessage( "fcurve key " + i + " left = " + k.Left + " right = " + k.Right );

    i++;

    // Set cubic interpolation

    k = fc.Keys(i)

    Application.LogMessage( "fcurve key " + i + " interpolation before = " + k.Interpolation );

    k.Interpolation = siCubicKeyInterpolation;

    Application.LogMessage( "fcurve key " + i + " interpolation after = " + k.Interpolation );

    Application.LogMessage( "fcurve key " + i + " left = " + k.Left + " right = " + k.Right );

    i++;

    // Set linear interpolation

    k = fc.Keys(i)

    Application.LogMessage( "fcurve key " + i + " interpolation before = " + k.Interpolation );

    k.Interpolation = siLinearKeyInterpolation;

    Application.LogMessage( "fcurve key " + i + " interpolation after = " + k.Interpolation );

    Application.LogMessage( "fcurve key " + i + " left = " + k.Left + " right = " + k.Right );

    i++;

    // Expected results:

    //INFO : x value = 0

    //INFO : x min/max = 0, 100

    //INFO : fcurve key 0 interpolation before = 3

    //INFO : fcurve key 0 interpolation after = 1

    //INFO : fcurve key 0 left = 0.52 right = 0.52

    //INFO : fcurve key 1 interpolation before = 3

    //INFO : fcurve key 1 interpolation after = 3

    //INFO : fcurve key 1 left = 5 right = 5

    //INFO : fcurve key 2 interpolation before = 3

    //INFO : fcurve key 2 interpolation after = 2

    //INFO : fcurve key 2 left = 0.45 right = 0.45

#### 2. VBScript Example

    '

    ' This example illustrates how to set interpolation for individual keys

    '

    NewScene , false

    set n = Application.ActiveSceneRoot.AddNull()

    SIAddCustomParameter "null", "X", siDouble, 0, 0, 100, , 5, 0, 5

    set cpset = Dictionary.GetObject( "null.CustomPSet" )

    set x = cpset.Parameters("X")

    Application.LogMessage "x value = " & x.Value

    Application.LogMessage "x min/max = " & x.Min & ", " & x.Max

    ' Add a standard fcurve with 5 keys

    set fc = x.AddFCurve2( array( 1,0.52, 25.5,5, 50,0.45, 75,10.23, 100,0.76 ), siStandardFCurve )

    ' Set the interpolation for the individual keys

    dim k, i

    ' Set constant interpolation

    i = 0

    set k = fc.Keys(i)

    Application.LogMessage "fcurve key " & i & " interpolation before = " & k.Interpolation

    k.Interpolation = siConstantKeyInterpolation

    Application.LogMessage "fcurve key " & i & " interpolation after = " & k.Interpolation

    Application.LogMessage "fcurve key " & i & " left = " & k.Left & " right = " & k.Right

    i = i + 1

    ' Set cubic interpolation

    set k = fc.Keys(i)

    Application.LogMessage "fcurve key " & i & " interpolation before = " & k.Interpolation

    k.Interpolation = siCubicKeyInterpolation

    Application.LogMessage "fcurve key " & i & " interpolation after = " & k.Interpolation

    Application.LogMessage "fcurve key " & i & " left = " & k.Left & " right = " & k.Right

    i = i + 1

    ' Set linear interpolation

    set k = fc.Keys(i)

    Application.LogMessage "fcurve key " & i & " interpolation before = " & k.Interpolation

    k.Interpolation = siLinearKeyInterpolation

    Application.LogMessage "fcurve key " & i & " interpolation after = " & k.Interpolation

    Application.LogMessage "fcurve key " & i & " left = " & k.Left & " right = " & k.Right

    i = i + 1

    ' Expected results:

    'INFO : x value = 0

    'INFO : x min/max = 0, 100

    'INFO : fcurve key 0 interpolation before = 3

    'INFO : fcurve key 0 interpolation after = 1

    'INFO : fcurve key 0 left = 0.52 right = 0.52

    'INFO : fcurve key 1 interpolation before = 3

    'INFO : fcurve key 1 interpolation after = 3

    'INFO : fcurve key 1 left = 5 right = 5

    'INFO : fcurve key 2 interpolation before = 3

    'INFO : fcurve key 2 interpolation after = 2

    'INFO : fcurve key 2 left = 0.45 right = 0.45

#### 3. Python Example

    #

    # This example illustrates how to set interpolation for individual keys

    #

    from win32com.client import constants as c

    Application.NewScene( "", 0 )

    n = Application.ActiveSceneRoot.AddNull()

    Application.SIAddCustomParameter( "null", "X", c.siDouble, 0, 0, 100, None, 5, 0, 5 )

    cpset = Application.Dictionary.GetObject( "null.CustomPSet" )

    x = cpset.Parameters("X")

    Application.LogMessage( "x value = %d" % (x.Value) )

    Application.LogMessage( "x min/max = %d, %d" % (x.Min,x.Max) )

    # Add a standard fcurve with 5 keys

    fc = x.AddFCurve2( [ 1,0.52, 25.5,5, 50,0.45, 75,10.23, 100,0.76 ], c.siStandardFCurve )

    # Set constant interpolation for key 0

    i = 0

    k = fc.Keys(i)

    Application.LogMessage( "fcurve key %d interpolation before = %d" % (i,k.Interpolation) )

    k.Interpolation = c.siConstantKeyInterpolation

    Application.LogMessage( "fcurve key %d interpolation after = %d" % (i,k.Interpolation) )

    Application.LogMessage( "fcurve key %d left = %d right = %d" % (i,k.Left,k.Right) )

    i = i + 1

    # Set cubic interpolation for key 1

    k = fc.Keys(i)

    Application.LogMessage( "fcurve key %d interpolation before = %d" % (i,k.Interpolation) )

    k.Interpolation = c.siCubicKeyInterpolation

    Application.LogMessage( "fcurve key %d interpolation after = %d" % (i,k.Interpolation) )

    Application.LogMessage( "fcurve key %d left = %d right = %d" % (i,k.Left,k.Right) )

    i = i + 1

    # Set linear interpolation for key 2

    k = fc.Keys(i)

    Application.LogMessage( "fcurve key %d interpolation before = %d" % (i,k.Interpolation) )

    k.Interpolation = c.siLinearKeyInterpolation

    Application.LogMessage( "fcurve key %d interpolation after = %d" % (i,k.Interpolation) )

    Application.LogMessage( "fcurve key %d left = %d right = %d" % (i,k.Left,k.Right) )

    i = i + 1

    # Expected results:

    #INFO : x value = 0

    #INFO : x min/max = 0, 100

    #INFO : fcurve key 0 interpolation before = 3

    #INFO : fcurve key 0 interpolation after = 1

    #INFO : fcurve key 0 left = 0 right = 0

    #INFO : fcurve key 1 interpolation before = 3

    #INFO : fcurve key 1 interpolation after = 3

    #INFO : fcurve key 1 left = 5 right = 5

    #INFO : fcurve key 2 interpolation before = 3

    #INFO : fcurve key 2 interpolation after = 2

    #INFO : fcurve key 2 left = 0 right = 0