制限事項

 
 
 

文字列パラメータへの接続

カスタム オペレータは、文字列パラメータに直接接続することはできません。 カスタム オペレータから文字列パラメータに対して読み書きを行うには、そのパラメータを所有するオブジェクト(たとえば、CustomProperty または CustomProperty など)に接続します。

ブロックされたメソッドおよびプロパティ

  • 一部のメソッドおよびプロパティは、カスタム オペレータのコンテキストでブロックされます(レガシーおよびランタイム オペレータについても同じことが言えます)。 入力の値を変更したり、入力として接続されていないシーンのエレメントを読み込んだりすることはできません。

    使用するメソッドまたはプロパティが、カスタム オペレータで使用しても安全であるかどうかを確認するには、この項目の各リファレンス ページを参照してください。 安全に使用できる場合、その横にアスタリスク(*)が示されます。

使用できないコマンド

  • シーン データにまったく影響を与えない場合を除き(たとえば、PickObject など)、オペレータの内部からコマンドを呼び出すことはできません。

  • ジオメトリやシーン オブジェクト(CreatePrimやAddNull など)を生成するコマンドや、トポロジを変更したり項目をクラスタに追加するあらゆるコマンドは、シーン データを変更し、Softimage の動作を不安定にするおそれがあるため、呼び出しは厳禁です。

トポロジの変更

  • トポロジの変更は、ジオメトリの整合性を乱すおそれがあるため、カスタム オペレータでは許可されていません。

シーン時間の制限

  • シーン グラフは、オペレータが評価されるタイミング以外のタイミングで読み込むことはできません。 ただし、シーンが最初から最後まで注意深く評価されている場合は、回避策として、オペレータ内にデータをキャッシュすることができます。 この回避策を実装する方法の例については、「ParticleOp の例」を参照してください。

  • オペレータが評価されるタイミングが再生コントロールによって設定された現在の時間であると想定すること、またはフレームごとに評価が1つしかないと想定することはできません。 OperatorContext.Time または OperatorContext::GetTime を使用して、現在の評価時間を取得できます。

デフォーマ接続をセットアップする

  • デフォーマ オペレータは、同じポート グループ内で入力接続と出力接続を定義する必要があります。

  • デフォームのブランチ/グループ ジオメトリのバウンディング ボックスに関する情報を取得する方法はありません。

ポート グループ内での複数接続

  • 可能であれば、各ポート グループにポートを 1 つずつ使用して、接続を明確にしておくことをお勧めします。 ダイナミック オペレータについては、数多くのインスタンスを含む 1 つのポートを定義できます。 詳細については、「スタティック オペレータとダイナミック オペレータ」を参照してください。

パーシステンス(持続性)に関する問題

  • カスタム オペレータの数多くの用途の 1 つとして、カスタム パーティクル シミュレーションの作成があります。 シーンに定義されているパーティクル タイプは、Scene.ParTypes コンテナに保存されます。 Scene.ParTypes に接続することは可能ですが、シーンを再ロードすると接続が失われます。

ブランチまたはグループで操作する

  • グループまたは階層に追加(または削除)されたオブジェクトは、カスタム オペレータがプリミティブに書き込む出力ポートを定義している場合にのみ、カスタム オペレータに自動的に接続(または切断)されます。 これは、グループ/ブランチ オペレータ機能の既知の制限事項です。

  • PortGroup が Filter を定義し、オペレータがブランチ グループ接続をサポートしている場合、フィルタにはグループ フィルタが含まれている必要があります。 これにより、オペレータをブランチ内のオブジェクトやグループ オブジェクト上に適用する場合、ApplyOp コマンドまたは Operator.Connect メソッドによって入力オブジェクトを評価できるようになります。

  • グループ/ブランチ フラグは、Primitive 上の IO ポートにのみ使用できます