FCurve.SI3DStyle

Introduced

v3.0

Description

Sets or returns the SI3DStyle property of the fcurve as a Boolean (true for SI3DStyle). If the fcurve is set as SI3DStyle then the key tangents are constrained using the SI3D tangent constraints. This forces all the key tangents to have a slope length where the horizontal component is 1/3 of the distance between 2 consecutive keys. Furthermore, the adjust tangent constraint (siFCurveKeyConstraint) is turned off. If you change an existing fcurve to use the SI3D style then all tangents are adjusted to meet the SI3D tangent constraints.

The SI3D style is only applicable to standard fcurves (FCurve.Type == siStandardFCurve). If you set this property on other fcurve types the method returns S_FALSE in C++ and getting the SI3DStyle always returns VARIANT_FALSE.

C# Syntax

// get accessor

Boolean rtn = FCurve.SI3DStyle;

// set accessor

FCurve.SI3DStyle = Boolean;

Examples

1. VBScript Example

'

'	This example illustrates how to create an fcurve with

'	the SI3D style for constraining tangents.

'

set o = getprim( "Null" )

set fc = o.posx.addfcurve()

fc.setkeys( Array(1,50,50,0,100,50) )

fc.si3dstyle = true

' Get the object as though it was selected and get the fcurve 

' on its local.posx parameter

set o = selection(0)

set fc = o.posx.source

if fc.si3dstyle then

	LogMessage "fcurve has SI3D style of tangent constraints."

end iF

' Outputs:

'INFO : fcurve has SI3D style of tangent constraints.

2. JScript Example

/*

	This example illustrates how to create an fcurve with

	the SI3D style for constraining tangents.

*/

// Create a null

Application.NewScene( "", false );

var nullobj = ActiveSceneRoot.AddNull();

// Get the posx, posy parameters from the null

var posx = nullobj.posx;

var posy = nullobj.posy;

// Create an fcurve on posx, posy

var fc1 = posx.AddFCurve();

var fc2 = posy.AddFCurve();

// Define the number of keys

var nbkeys = 100;

// Start editing the fcurves

fc1.BeginEdit();

fc2.BeginEdit();

// Set the style of fc1 to SI3D style

fc1.SI3DStyle = true;

var tangents = new Array( nbkeys * 4 );

// Add keys to the fcurve

for ( i=0, j=0; i<nbkeys; i++, j+=4 )

{

	val = (Math.cos( (i+1)/10 ) * 100);

	fc1.AddKey( i, val );

	fc2.AddKey( i, val );

	tangents[j] = 0;

	tangents[j+1] = 0;

	tangents[j+2] = 0;

	tangents[j+3] = 0;

}

// Set the tangent to zero to illustrate the difference 

// between the Softimage & SI|3D styles

fc1.SetKeyTangents(tangents);

fc2.SetKeyTangents(tangents);

// End editing the fcurve and put undo event onto the

// undo/redo stack

fc1.EndEdit();

fc2.EndEdit();

// Print the key tangents from both curves to compare

var key1;

var key2;

for ( i=0; i<nbkeys; i++ )

{

	key1 = fc1.GetKeyAtIndex(i);

	key2 = fc2.GetKeyAtIndex(i);

	str = "fc1: " + key1.lefttanx + ","+ key1.lefttany + ","+ key1.righttanx + ","+ key1.righttany;

	str += " fc2: " + key2.lefttanx + ","+ key2.lefttany + ","+ key2.righttanx + ","+ key2.righttany;

	LogMessage(str);

}

// Outputs:

//INFO : fc1: 0,0,0.3333333333333333,0 fc2: 0,0,0,0

//INFO : fc1: -0.33333333333333326,0,0.33333333333333326,0 fc2: 0,0,0,0

//INFO : fc1: -0.33333333333333326,0,0.3333333333333335,0 fc2: 0,0,0,0

//	etc.

//INFO : fc1: -0.3333333333333343,0,0.3333333333333343,0 fc2: 0,0,0,0

//INFO : fc1: -0.3333333333333343,0,0.3333333333333343,0 fc2: 0,0,0,0

//INFO : fc1: -0.3333333333333343,0,0,0 fc2: 0,0,0,0