v4.0
カスタムオペレータにInputPortおよびOutputPortを追加します。CustomOperator.AddInputPortがあとに続くCustomOperator.AddOutputPortの呼び出しに相当します。
注:出力接続と入力接続の両方を設定することは、デフォーメーションオペレータおよびオブジェクトの既存のステートを修正する他のオペレータを正しく機能させるうえで非常に重要です。設定しないと、オペレータは互いのオペレータと正しく共存できなくなります。つまり、同じオブジェクトを表す2 つのポートが存在するようになりますが、それらのポートはそのオブジェクトの別のコピーをポイントする可能性があります。そのため、オペレータは入力からのみオブジェクト状態を読み取り、出力からオブジェクトを変更します。
PortCollection CustomOperator.AddIOPort( Object in_PortTarget, String in_PortName, Int32 in_portgroup, Int32 in_InsertAt, Int32 in_flags ); |
oReturn = CustomOperator.AddIOPort( PortTarget, [PortName], [PortGroup], [InsertAt], [Flags] ); |
PortCollection オブジェクトに新しく作成された入力ポートと出力ポート
| パラメータ | タイプ | 説明 |
|---|---|---|
| PortTarget | Variant | ポートに接続するオブジェクトを表すオブジェクトまたはエクスプレッションSoftimage はオブジェクトのフルネームを記憶しますが、別のオブジェクトに接続するときに上書きされます(Operator.ConnectおよびOperator.ConnectToGroupを参照)。 |
| PortName | String |
ポートの名前。名前を指定しなかった場合は、入力ポートおよび出力ポートの名前は自動的に作成されます。入力ポートの名前には"In"というプリフィックスと、ポートに接続するオブジェクトのParameter.ScriptNameが付きます。出力ポートも同じですが、プリフィックスは"Out"になります。
デフォルト値:""(空文字列) |
| PortGroup | Long |
ポートグループのインデックス デフォルト値:-1(ポートグループの最後に追加) |
| InsertAt | Long |
特定インデックスのポートのインデックス デフォルト値:-1(ポートグループ内のポートの最後に追加) |
| Flags | Long |
siPortFlags により記述されたポートグループフラグのマスク デフォルト値: 0 |
/*
This example illustrates how to use the AddIOPort method to define
an input/output port.
*/
NewScene( null, false );
var obj = CreatePrim( "Cube", "MeshSurface");
var sop = XSIFactory.CreateScriptedOp( "MyOperator", MyOperator_Update.toString(), "JScript" )
sop.AddIOPort( obj.ActivePrimitive );
sop.Connect();
// The operator's update function
function MyOperator_Update( ctx, out, in1 )
{
Application.LogMessage( "MyOperator_Update: " + out.Value );
var aPos = in1.Value.Geometry.Points.PositionArray.toArray();
out.Value.Geometry.Points.PositionArray = aPos;
} |