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.

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