v3.0
F カーブの Mmt1306 プロパティをBooleanとして設定したり、戻したりします(SI3DStyle の場合は true)。F カーブが SI3DStyle として設定されている場合、キータンジェントは SI3D タンジェントコンストレイントを使用して拘束されます。この拘束により、すべてのキータンジェントにおいて、スロープの長さの水平コンポーネントが2 つの連続するキー間の距離の 1/3になります。さらに、調整タンジェント定数(siFCurveKeyConstraint)がオフになります。既存の F カーブを SI3D スタイルを使用して変更する場合は、タンジェントはすべて SI3D タンジェントコンストレイントに一致するよう調整されます。
SI3D スタイルは標準 F カーブ(FCurve.Type == siStandardFCurve)にのみ適用できます。このプロパティを他の F カーブタイプに設定するとメソッドは C++ の S_FALSE を戻し、SI3DStyle を取得すると常に VARIANT_FALSE を戻します。
// get accessor Boolean rtn = FCurve.SI3DStyle; // set accessor FCurve.SI3DStyle = Boolean; |
' ' 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. |
/* 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 |