v4.0
シーン内にその定義を保存する、ランタイムのスクリプト オペレータを作成します。ランタイムのスクリプト オペレータとは、シーンに組み込まれ、SPDL ファイルのインストールや自己インストール カスタム オペレータを必要としないオペレータです。
スクリプト オペレータの実装は、ディスク上の指定のファイルから取得します。 ディスク上の実装ファイルを実行時に指定する場合(文字列変数を使用する場合など)は、代わりに AddScriptedOp コマンドを使用します。インスタンス化されると、オペレータはコードのコピーを保存し、指定されたファイルの内容は参照しなくなります。
oReturn = AddScriptedOpFromFile( OutputObjs, FileName, InputObjs, [Name], [Language], [ConstructionMode] ); |
ランタイム用に設計されたスクリプト オペレータを含む CustomOperator を戻します。
パラメータ | タイプ | 説明 |
---|---|---|
OutputObjs | リスト | 出力ポートの接続先となるオブジェクトまたはパラメータのリスト。 |
FileName | 文字列 | スクリプト オペレータの実装を含むスクリプトのファイル名 |
InputObjs | リスト | 入力ポートに接続するオブジェクトまたはパラメータのリスト |
Name | 文字列 |
新しいオペレータの名前 デフォルト値: ScriptedOp |
Language | 文字列 |
オペレータのスクリプト言語。 デフォルト値:Application.Preferences.Scripting.Language から取得した値 |
ConstructionMode | siConstructionMode |
オペレータを適用するコンストラクション モードを指定します。 これは、Geometry オブジェクトに対して確立された出力接続にのみ適用されます。その他のすべての接続タイプでは、モードは無視されます。
デフォルト値:現在のコンストラクション モードを使用 |
/* This example demonstrates how to create and connect a scripted operator that constrains the local posx of an object to the value of 2. */ // ------------------------------------------------------------ // // This is an easy way to specify the code as a string: // define it as a regular function as part of this // example and then use the JScript function toString() // to set the contents of the new implementation file. // function fred_Update( ctx, out ) { LogMessage( "fred::Update()" ); out.Value = 2; } // Create the script file on disk using the JScript FileSystemObject // utility (consult a JScript scripting guide for more details). var file_loc = InstallationPath( siUserPath ) + "\\Data\\Scripts\\fred_sop.js"; var fso = new ActiveXObject( "Scripting.FileSystemObject" ); var ts = fso.CreateTextFile( file_loc, true ); ts.Write( fred_Update.toString() ); ts.Close(); // ------------------------------------------------------------ // // Set up the null and apply the scripted operator to // its posx parameter. Print the value of the posx // parameter before and after. // // Create scene and apply operator NewScene( null, false ); GetPrim( "null" ); // Get the value of posx before applying the operator Application.LogMessage( "posx = " + GetValue( "null.kine.local.posx" ) ); // Create and apply the operator to the null's posx var op = AddScriptedOpFromFile( "null.kine.local.posx", file_loc, null, "fred" ); // Get the constrained value Application.LogMessage( "posx = " + GetValue( "null.kine.local.posx" ) ); // ------------------------------------------------------------ // // Since the scripted operator is returned, we can use // the methods and properties of the Operator object. // // Log details of operator Application.LogMessage( "Scripted Operator: " + op.FullName ); Application.LogMessage( "\tClassName: " + ClassName(op) ); Application.LogMessage( "\tType: "+ op.Type ); Application.LogMessage( "\tLanguage: "+ op.Language ); Application.LogMessage( "\tAlwaysEvaluate: "+ op.AlwaysEvaluate ); Application.LogMessage( "\tDebug: "+ op.Debug ); Application.LogMessage( "\tMute: "+ op.Mute ); Application.LogMessage( "\tFileName: "+ op.FileName ); Application.LogMessage( "\tCode: "+ op.Code ); // ------------------------------------------------------------ // // Output of this example. Notice that Code returns the // contents of the implementation file: // //INFO : "posx = 0" // //INFO : "fred::Update()" //INFO : "posx = 2" //INFO : "Scripted Operator: null.kine.local.fred" //INFO : " ClassName: CustomOperator" //INFO : " Type: fred" //INFO : " Language: JScript" //INFO : " AlwaysEvaluate: false" //INFO : " Debug: 0" //INFO : " Mute: false" //INFO : " FileName: <your_user_path>\Data\Scripts\fred_sop.js" //INFO : " Code: function fred_Update( ctx, out ) //{ // LogMessage( "fred::Update()" ); // // out.Value = 2; //}" |