CustomOperator.AlwaysEvaluate

導入

v4.0

詳細

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

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

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

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

C#構文

// get accessor

Boolean rtn = CustomOperator.AlwaysEvaluate;

// set accessor

CustomOperator.AlwaysEvaluate = Boolean;

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