v4.0
カスタムオペレータが常にデータの要求ごとに評価されるかどうかを Boolean として戻したり、設定したりします。このプロパティは、デフォルトで off になっています。つまり、オペレータの入力またはパラメータが変更されるまでは、Softimage ではカスタムオペレータが新しい評価を必要としているとは判断されません。ただし、一部のシミュレーションスタイルのオペレータではこの最適化が適さないので、その場合はこのプロパティを true に設定する必要があります。
注:Softimage の「ゆるい評価」のプルモデルが存在するため、このプロパティは、オペレータで実際に各フレームが評価されることを保証しません。この場合でも、UI、スクリプト、レンダリング、または一部の依存オブジェクトでは、オペレータの出力を要求する必要があります。
自己インストールカスタムオペレータでこのプロパティを設定するために推奨されるコールバックは、_Define コールバックにあります。
注:このプロパティはカスタムオペレータのアップデート関数から読み取れますが、プロパティの設定はできません。
// get accessor Boolean rtn = CustomOperator.AlwaysEvaluate; // set accessor CustomOperator.AlwaysEvaluate = Boolean; |
NewScene( null, false ); var null1 = GetPrim("null"); SetExpr( null1.posx, "10"); var sop = null1.posx.AddScriptedOp( MyExpr_Update.toString(), null,"MyExpr", "JScript" ); SetValue( "PlayControl.Current", 3, null ); sop.AlwaysEvaluate = true; val = GetValue( "null.kine.local.posx" ); Application.LogMessage( val ); SetValue( "PlayControl.Current", 4, null ); val = GetValue( "null.kine.local.posx" ); Application.LogMessage( val ); // Force scene to reevaluate sop.AlwaysEvaluate = false; Refresh(); SetValue( "PlayControl.Current", 5, null ); val = GetValue( "null.kine.local.posx" ); Application.LogMessage( val ); // Scripted operator's update function function MyExpr_Update(ctx,out) { Application.LogMessage( "MyExpr_Update: " + out.name ); out.Value = ctx.CurrentFrame; } // Expected results: //INFO : MyExpr_Update: Outposx //INFO : 3 //INFO : MyExpr_Update: Outposx //INFO : 4 //INFO : MyExpr_Update: Outposx //INFO : 4 |