ICENodePort または ICENodePort に接続される(またはこのポートを経由する)データは、3つの異なる方法で記述できます。
これは、ほとんどのプログラミング言語におけるデータ タイプの通常の概念です(ブール、整数や浮動小数値、ベクトル、マトリックス、カラーなどのより複雑な構造)。 siICENodeDataType 列挙型は、基本的に、取り得る値や可能な組み合わせをカプセル化します。ICENodePort.DataType または ICENodePort::GetDataType および ICEAttribute.DataType または ICEAttribute::GetDataType も参照してください。
データがスカラ(1 つの値)または値の配列のどちらとして構造化されるかを定義します。 指定可能な値は、siICENodeStructureType 列挙型で使用できます。ICENodePort.StructureType または ICENodePort::GetStructureType および ICEAttribute.StructureType または ICEAttribute::GetStructureType も参照してください。
プッシュ/プルされるデータのタイプを示します(データ セットに関連付けれられているエレメント セット)。 頂点、ポリゴン、または新しく作成されたパーティクルなどが該当します。 指定可能な値は、siICENodeContextType 列挙型で使用できます。ICENodePort.ContextType または ICENodePort::GetContextType および ICEAttribute.ContextType または ICEAttribute::GetContextType も参照してください。
一部の ICENodePort または ICENodePort では、ポリモーフィズムがサポートされています。これは、渡されるデータがタイプ、構造、またはコンテキストについて事前設定された一部の条件と一致する必要がないことを意味します。たとえば、CompareNode では 2 つの入力ポートで任意の整数、浮動小数、ベクトル、行列、回転、またはクォータニオンを指定できますが、これらのタイプが相互に一致している必要があります。 つまり、まったく条件の違うもの同士を比較しても意味がありません。
ポート データの整合性が強制的に維持されるようにするには、一種のコンストレイントを作成するか、必要に応じてポート データのタイプ、構造、およびコンテキストで制限を適用します。 これらについては、「制限」セクションで詳しく説明されています。 ここでは、前述の CompareNode の例に従って、タイプが 1 番目および 2 番目のポートで接続されているデータで一致している必要があることを明記しておきます(ただし、結果ポートは常にブールになり、制限はありません)。 また、すべての入力ノードと出力ノードは、同じ構造およびコンテキストに拘束されます。
ポート データの拘束方法は、独自のカスタム ノードを作成する場合に非常に重要になります。 詳細については、「ポートのポリモーフィズムを処理する」を参照してください。