Operator

Operator

Object Hierarchy | 関連する C++クラス:Operator

継承

SIObject

ProjectItem

オペレータ

導入

v1.5

詳細

Operator オブジェクトは、シーングラフのオペレータです。オブジェクトまたは Parameter は、InputPort または OutputPort を介してオペレータに接続され、PortGroup に配列することができます。SDK ユーザは独自のオペレータを作成でき、これはオブジェクト モデルに CustomOperator として示されます。

オペレータの役割は、出力オブジェクトをアルゴリズムの結果で変更することです。オペレータがシーンから読み取ることができるデータは、入力ポートとパラメータを使用して取得したデータだけです。たとえば、一般のオペレータが、1 つのオブジェクトの位置(入力)を、他の複数のオブジェクトの位置(出力)に基づいて変更するものとします。この場合、同じオブジェクトがオペレータの入力と出力の両方として動作します。たとえば、一般のデフォーメーションオペレータはジオメトリを読み取り、同じジオメトリのポイント位置の変更バージョンを出力します。SDK Explorer ビューでオペレータを選択することは、ポートとパラメータについて学習する良い方法です。

自己インストールカスタムオペレータの評価の内部から個々のポートにアクセスする場合は、OperatorContextオブジェクトを使用します。評価コールバックの外部からアクセスする場合は、Operator.PortAtメソッドを使用します。

ほとんどのオペレータは、オペレータの動作を制御する1 つまたは複数のParameterを表示します。たとえば、ポリゴンメッシュのジオメトリオペレータ上の"subdivu"と"subdivv"パラメータは、ポリゴンメッシュが作成されるポリゴンの数を制御します。

組み込みオペレータを作成および接続する一般的な方法は、ApplyOpコマンドを呼び出すことです。ただし、他にもApplyTopoOpApplyHairOpApplyGenOpなど、オペレータを作成する特殊なコマンドが多くあります。また、オペレータは間接的に作成されます。たとえば、X3DObject.AddGeometryを呼び出してジオメトリを作成するオペレータを作成できます。

メソッド

AddCustomOp AddICEAttribute AddScriptedOp AddScriptedOpFromFile
AnimatedParameters2 BelongsToオペレータ Connect ConnectToGroup
Copy Disconnect DisconnectGroup EvaluateAt
GetICEAttributeFromName GetInputValue GetNumInstancesInGroupオペレータ GetNumPortGroupsオペレータ
GetNumPortsInGroupオペレータ GetPort2オペレータ GetPort3オペレータ GetPortAtオペレータ
IsA IsAnimated2 IsClassOfオペレータ IsEqualToオペレータ
IsKindOf IsLockedオペレータ IsSelectedオペレータ LockOwners
PortAtオペレータ RemoveICEAttribute SetAsSelectedオペレータ SetCapabilityFlagオペレータ
SetLock SupportsBranchGroupオペレータ TaggedParameters UnSetLock

プロパティ

Application BranchFlagオペレータ Capabilitiesオペレータ Categories
EvaluationID Familiesオペレータ FullNameオペレータ Help
HierarchicalEvaluationID ICEAttributes InputPortsオペレータ IsConnectedオペレータ
LockLevelオペレータ LockMastersオペレータ LockTypeオペレータ Model
Muteオペレータ Nameオペレータ NestedObjects ObjectID
Origin OriginPath OutputPortsオペレータ Owners
PPGLayoutオペレータ Parametersオペレータ Parent Parent3DObject
Portオペレータ PortGroupsオペレータ Selectedオペレータ Typeオペレータ

JScript の例

/*

	This example illustrates how to generate a mesh by using the loft operator and

	a number of input curves. The code also illustrates how to traverse the operator's

	port group, port group instances and ports and logs the name of the port, its type

	and the full path name of the object connected to the port.

*/

NewScene( null, false );

var arc = ActiveSceneRoot.AddGeometry( "Arc", "NurbsCurve" );

// Duplicate arc 4 times and translate in y

var args = new Array(19);

args[0] = arc;                                       // source object

args[1] = 4;                                         // number of copies

args[9] = siApplyRepeatXForm;                        // Xform

args[18] = 1;                                        // Ty

var objs = Application.ExecuteScriptCommand( "Duplicate", args );

// Create array containing arc and duplicates

var aobjs = new Array(5)

aobjs[0] = arc;

for ( var i = 0; i < objs.count; i++ ) aobjs[i+1] = objs(i);

// Apply loft operator

var op = ApplyOp( "Loft", aobjs )(0);

// Traverse port group, instances and ports and log port connections

// For each port group ...

for ( var idxGroup = 0; idxGroup < op.GetNumPortGroups(); idxGroup++ )

{

	// For each instance in a port group ...

	for ( var idxInstance = 0; idxInstance < op.GetNumInstancesInGroup( idxGroup ); idxInstance++ )

	{

		// For each port in a  port group instance ...

		for ( var idxPort = 0; idxPort < op.GetNumPortsInGroup( idxGroup ); idxPort++ )

		{

			// Get a specific port

			var port = op.PortAt( idxPort, idxGroup, idxInstance );

			// If the port is an input port ...

			if ( port.PortType == siPortInput )

				porttypestr = "input"

			else if ( port.PortType == siPortOutput )

				porttypestr = "output"

			else

				porttypestr = "error"

			var target = port.Target2;

			// ... and the connected type is an object connection

			if ( typeof(target) == "object" )

			{

				Application.LogMessage( op.Name + " group:" + port.GroupIndex + " " + " instance:" + port.GroupInstance 

								+ " " + porttypestr + "port:" + port.Index + ":" + target.FullName );

			}

		} 

	}

}

// Expected results:

//INFO : "Loft group:0  instance:0 inputport:0:arc.crvlist"

//INFO : "Loft group:0  instance:0 inputport:1:arc.kine.global"

//INFO : "Loft group:0  instance:1 inputport:0:arc1.crvlist"

//INFO : "Loft group:0  instance:1 inputport:1:arc1.kine.global"

//INFO : "Loft group:0  instance:2 inputport:0:arc2.crvlist"

//INFO : "Loft group:0  instance:2 inputport:1:arc2.kine.global"

//INFO : "Loft group:0  instance:3 inputport:0:arc3.crvlist"

//INFO : "Loft group:0  instance:3 inputport:1:arc3.kine.global"

//INFO : "Loft group:0  instance:4 inputport:0:arc4.crvlist"

//INFO : "Loft group:0  instance:4 inputport:1:arc4.kine.global"

//INFO : "Loft group:1  instance:0 inputport:0:surfmsh.kine.global"

//INFO : "Loft group:1  instance:0 outputport:1:surfmsh.surfmsh"

関連項目

ConstructionHistory CustomOperator Envelope ApplyOp FreezeObj