接続を作成する

 
 
 

組み込みの Softimage オペレータのオペレータ接続に関する全般的な情報については、「コネクション セットについて」を参照してください。

ポートについて

各オペレータは、少なくとも 1 つの出力ポートを持ちますが、入力ポートはゼロの場合もあります。 各ポートには方向があるため、特定のオブジェクトに対して読み書きを実行する場合は、2 つのポート(入力および出力)が必要です。 デフォーマは、既存のジオメトリを読み込み、入力ポートと出力ポートを介してそのジオメトリを変形させるオペレータの例です。

ポート接続は、読み書きを実行する必要のある特別なデータに対して行われます。 Property または PropertyClusterProperty または ClusterPropertyKinematicState または KinematicStatePrimitive または Primitive または Parameter または Parameter のいずれかに接続する有効なオブジェクト。 X3DObject そのものへの接続ではなく、X3DObject または X3DObject 内の特定のデータに接続する必要があります。 このルールを維持するために、オブジェクトモデルまたは C++ API は、X3DObject または X3DObject のネストデータを検索するように設計されている一部のメソッドやプロパティへのアクセスを回避します。たとえば、Geometry.Clusters または Geometry::GetClusters カスタム オペレータ内でブロックされています。オペレータは、それがアクセスしようとする各クラスタに接続すると予想されるからです。

カスタム オペレータの作成時の主な作業の 1 つとして、ポートの定義があります。ポートを定義することによって、必要な入力データすべてが読み込まれ、計算の結果が出力オブジェクトを更新するために使用されるようになります。

ポートのインデックス

Update 関数内でポートにアクセスするには、ポートを名前やインデックスで指定できる OperatorContext.GetInputValue または OperatorContext::GetInputValue を使用できます。 名前よりもインデックスでポートにアクセスする方が迅速です。インデックスは、ポートが追加された順序でわかります。

Update 関数外のポートにアクセスするには、Operator.InputPorts または Operator::GetInputPorts および Operator.OutputPorts または Operator::GetOutputPorts を使用できます。

注:

ポートをインデックスで取得できるメソッドは他にもあります(Operator.PortAt または Operator::GetPortAt)。 ただし、このメソッドがインデックスをどのように読み込むかを理解することが重要です。実装される順序にかかわらず、すべての入力ポートが出力ポートに優先します。

OperatorContext.GetInputValue または OperatorContext::GetInputValue(または Operator.GetInputValue または Operator::GetInputValue)および Operator.InputPorts または Operator::GetInputPorts または Operator.OutputPorts または Operator::GetOutputPorts を代わりに使用することを推奨します(この方が安全です)。

ポート グループ

ポート グループは、オペレータのポートを構成するための優れたツールです。 各ポートは単一のグループに属す必要があり、オペレータは複数のグループを定義できます。

ヒント:

グループという用語は、Group または Group オブジェクトとは一切関係ありません。

ポート グループの主な目的は以下の 2 つです。

  • 作成時にオペレータへの接続を簡単にする。

  • 1 つのオペレータに接続するためのオブジェクトの数を自由に設定する。

ダイナミック オペレータや、不定数の入力から読み込みを行う複雑なオペレータなど、高度なオペレータを作成しているのでない限り、ポート グループに関しては特別な注意は必要ありません。詳細については、「スタティック オペレータとダイナミック オペレータ」を参照してください。

ターゲットとは?

ターゲットとは、ポートを介してオペレータに接続されるオブジェクト(Primitive または PrimitiveKinematicState または KinematicStateProperty または PropertyParameter または Parameter など)です。 パラメータに接続されている場合、パラメータの現在を取得します(たとえば、double 値)。それ以外の場合は、接続オブジェクトを取得します(たとえば、 Primitive または Primitive オブジェクトなど)。

使用するメンバ

パラメータ コネクション

非パラメータ コネクション

OperatorContext.GetInputValue または OperatorContext::GetInputValue

パラメータの値を返します。

オブジェクトを返します。

OperatorContext.OutputTarget または OperatorContext::GetOutputTarget

 

出力ポートに接続されたオブジェクトを返します。

OperatorContext.OutputPort または OperatorContext::GetOutputPort

ポート オブジェクト自体を返します。 続けて、OutputPort.Value または OutputPort::PutValue を使用して、ポートに接続するパラメータに新しい値を書き込むことができます。