ポートデータへのアクセス

 
 
 

Evaluate 関数から入力ポート データにアクセスするために、ICENode の登録時に定義された入力ポートと出力ポートのタイプに一致する一連のクラスが SDK で提供されています。

複雑なデータ タイプにアクセスするために、次のクラスが用意されています。

XSI::MATH::CVector2f -> siICENodeDataVector2

XSI::MATH::CVector3f -> siICENodeDataVector3

XSI::MATH::CVector4f -> siICENodeDataVector4

XSI::MATH::CQuaternionf -> siICENodeDataQuaternion

XSI::MATH::CMatrix3f -> siICENodeDataMatrix33

XSI::MATH::CMatrix4f -> siICENodeDataMatrix44

XSI::MATH::CColor4f -> siICENodeDataColor4

XSI::MATH::CRotationf -> siICENodeDataRotation

XSI::MATH::CShape -> siICENodeDataShape

CICEGeometry -> siICENodeDataGeometry

注:

CICEGeometry は、BeginEvaluate コールバックからアクセスできますが、どのカスタム評価コールバックでも使用できます。 ただし、Singleton コンテキストでないマルチスレッド モードでは、Evaluate コールバックからは使用できません。 CICEGeometry メソッドを呼び出しても、このコンテキストにデフォルト値が返されるだけです。

カスタム ICENode に送信された入力データ バッファは、ICENode の登録時に設定されたポートの構造タイプに応じて、1D または 2D の配列に格納されます。 CDataArray および CDataArray2D テンプレート クラスを上記のクラスのいずれかと結合すると、これらの配列を処理することができます。 たとえば、ポートタイプが siICENodeDataVector3 + siICENodePortStructureSingle として定義されている場合、CDataArray<CVector3f>を使用してデータにアクセスする必要があります。 また、ポートが siICENodeDataRotation + siICENodePortStructureArray として定義されている場合は、CDataArray2D<CRotationf> を使用する必要があります。浮動小数やブールなど、単純なポート データ タイプについては、そのタイプをテンプレート パラメータ(CDataArray< float > または CDataArray2D< bool > など)として使用します。入力データは、読み取り専用とみなされるため、変更できません。また、これらのテンプレート クラスを使用して項目を削除することもできません。

重要:

不適切なテンプレート クラスを使用して特定のポート データにアクセスすると、予期しない動作が発生する場合があります。

便宜上、ポート データ タイプごとに多数の配列タイプが定義されています(CDataArrayLongCDataArrayBoolCDataArrayShapeCDataArray2DVector2f など)。