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