CustomOperator.AlwaysEvaluate

導入

v4.0

詳細

カスタムオペレータが常にデータの要求ごとに評価されるかどうかをBooleanとして戻したり、設定したりします。このプロパティは、デフォルトで off になっています。つまり、オペレータの入力またはパラメータが変更されるまでは、Softimage ではカスタムオペレータが新しい評価を必要としているとは判断されません。ただし、一部のシミュレーションスタイルのオペレータではこの最適化が適さないので、その場合はこのプロパティを true に設定する必要があります。

注:Softimage の「ゆるい評価」のプルモデルが存在するため、このプロパティは、オペレータで実際に各フレームが評価されることを保証しません。この場合でも、UI、スクリプト、レンダリング、または一部の依存オブジェクトでは、オペレータの出力を要求する必要があります。

自己インストールカスタムオペレータでこのプロパティを設定するために推奨されるコールバックは、_Define コールバックにあります。

注:このプロパティはカスタムオペレータのアップデート関数から読み取れますが、プロパティの設定はできません。

JScript の例

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