v4.0
新しいカスタムパラメータ定義を作成します(ParamDefオブジェクト)。
ParamDef オブジェクトには、複数のプロパティセットまたはオペレータの新規パラメータを
1度の操作で作成できるパラメータの定義があります。たとえば、同じ最小値/最大値の範囲を複製して複数のプロパティセットで使用する場合や、スクリプトを使用してランタイムスクリプトオペレータにパラメータをすばやく追加する場合などに有効です。XSIFactoryオブジェクトから新しいParamDef
オブジェクトを作成できます。
注:特性、分類、提示される最小値および最大値を指定する必要がある場合は、代わりにXSIFactory.CreateParamDefを使用します。
oReturn = XSIFactory.CreateParamDef2( ScriptName, Type, [DefaultValue], [Min], [Max] ); |
新しく作成されたParamDefオブジェクト
パラメータ | タイプ | 詳細 |
---|---|---|
ScriptName | String | この引数はパラメータの ScriptName を指定します(Parameter.ScriptNameを参照)。引数のショート名またはロング名が指定されていない場合は、この名前がショート名および説明として使用されます。 |
型 | siVariantType | カスタムパラメータのタイプ。推奨タイプは siString、siBool、siInt4、siUByte、および SiDouble です。使用可能なタイプは、siString、siBool、siDouble、siFloat、siInt4、siInt2、siUInt4、siUInt2、siByte、siUByte です(Parameter.ValueTypeを参照)。 |
DefaultValue | Variant | カスタムパラメータのデフォルト値。ブール値および数値の場合のデフォルト値は 0で、文字列のデフォルト値は""です(Parameter.Defaultを参照)。 |
最小 | Variant | カスタムパラメータの最小値。siString タイプと siBool タイプでは Min値は不要です。その他の数値タイプでは、デフォルト値をそのタイプの最小値にすることができます。たとえば、すべての未署名値には min=0が設定されます(Parameter.Minを参照)。 |
最大 | Variant | カスタムパラメータの最大値。siString タイプと siBool タイプでは Max値は不要です。その他の数値タイプでは、デフォルト値をそのタイプの最小値にすることができます。たとえば、siUByte の最大値は 255です(Parameter.Maxを参照)。 |
// This example illustrates how to add parameters to a custom operator NewScene( null, false ) var null1 = GetPrim("null"); // Create the operator var sop = XSIFactory.CreateScriptedOp( "MySOP", MySOP_Update.toString(), "JScript" ); // Add the ports sop.AddOutputPort( null1.posx ); // Add the parameters var param1 = sop.AddParameter( XSIFactory.CreateParamDef2("text", siString, "hello") ); var param2 = sop.AddParameter( XSIFactory.CreateParamDef2("bool", siBool, true) ); var param3 = sop.AddParameter( XSIFactory.CreateParamDef2("int", siInt4, 10, 0, 100) ); var param4 = sop.AddParameter( XSIFactory.CreateParamDef2("dbl", siDouble, 0.5, 0.0, 1.0) ); // List operator's parameters var eParams = new Enumerator( sop.parameters ); for ( ; !eParams.atEnd(); eParams.moveNext() ) { var param = eParams.item(); Application.LogMessage( param.Name + " = " + param.Value ); } // Connect the operator sop.Connect(); // Operator's update function function MySOP_Update( ctx, out ) { out.Value = ctx.CurrentFrame; } |