通常、ICE ノードを接続するには、一方のノードの右側にある出力ポートをクリックして別のノードにドラッグしてから、入力ポートを選択します。反対に、入力ポートから出力ポートにドラッグして、2 つのノードを接続することもできます。データは出力ポートから入力ポートへ接続に沿って移動し、チェインの次のノードによって処理されます。
ポートが接続されると、対応するパラメータの値がその接続によって設定されます。パラメータの値をノードのプロパティ エディタで設定することはできなくなります。さらに、そのコントロール(チェックボックス、スライダなど)が表示されなくなります。接続を削除すると、コントロールはプロパティ エディタに再び表示されるようになります。
2 つの特定のポートを接続できるかどうかは、次のような特別な要素によって決まります。
ある 2 つのポートを接続できない場合、これらの要素のうち 1 つまたは複数が互換性を持たないことが原因であると考えられます。
[Divide by Scalar]など、一部のノードの入力ポートの数は固定されています。ただし、その他のノードでは接続の数に制限はありません。たとえば、[Multiply]では、いくつの値を掛け合わせてもかまいません。「複数のポートを管理する」を参照してください。
展開: すべての出力ポートと入力ポートを表示します。この表示状態は、ノードの接続を頻繁に作成および調整する場合に便利です。
接続のみ表示: 部分的に展開され、部分的に集約された状態で、すべての出力ポートとすべての接続された入力ポートを表示します。この表示状態は、すべての入力接続の作成を終えたけれど、引き続きその接続状態を確認する場合に便利です。
接続されているポートが非表示の場合、マウス ポインタを接続線の上に移動すると、そのポートの情報を表示できます。
ノードが既にツリーに存在する場合、出力ポートのアイコンを別のノードにドラッグすることによって、その出力ポートを接続することができます。または、(コンパウンドでなく)ベース ノードであれば、ノードを Preset Manager からポートまたは接続にドラッグして、新しいノードを追加すると同時に接続することもできます。
ノードの右側にある出力ポートをクリックしてから、別のノードにドラッグします。ドラッグしている間、接続を表す矢印が表示されます。ワークスペースの端に接続をドラッグすると、自動的にビューがスクロールされます。
ポートのリストが完全に展開されていない(つまり、一部の入力ポートが表示されていない)場合は、マウス ボタンを離すと、その接続に有効なすべての入力ポートを示すポップアップ メニューが表示されます。メニューからポートを選択し、そのポートに接続します。既に接続されているポートは、メニューに黒丸付きで表示されます。既に接続されているポートを選択すると、古い接続が新しい接続で置き換えられます。[Shift]キーを押すと、複数のポートを選択する間、メニューを開いたままにしておくことができます。
ポートのリストが完全に展開されている場合は、特定の入力ポート上でマウス ボタンを離して接続します。マウス ポインタを有効なポートの上に置くと、ポートが白でハイライトされます。
データ タイプは、ブール、整数、スカラ、ベクトルなど、ポートが渡したり受け取ったりすることができる値の種類を定義します。
データ タイプ間に互換性がない場合は、2 つのポートを接続することはできません。ただし、[Conversion]カテゴリ([ツール])のノードを使用すれば、複数のデータ タイプ間で変換を実行できます。場合によっては、ポートを接続しようとしたときに変換ノードが自動的に追加されることもあります。たとえば、スカラ出力を整数入力に接続すると、[Round]ノードが挿入されます。
さまざまなポート タイプと各関連データ タイプについて、次の表で説明します。
タイプ |
説明 |
|
---|---|---|
多様型 |
さまざまなデータ タイプの入力に使用します。「多様型ポート」を参照してください。 |
|
ブール |
ブール値。True または False。 |
|
整数値 |
小数部分のない正または負の数値。たとえば、7、–2、0。 |
|
スカラ |
小数値として表される実数。たとえば、3.14。内部的には、これは単精度浮動小数値です。 |
|
カラー |
RGBA チャンネルを示す 4 つのスカラ値で表されるカラー値。 |
|
2D ベクトル |
スカラ値で表される 2 次元ベクトル[x, y]。たとえば、UV 座標。 |
|
3D ベクトル |
エントリがスカラである 3 次元ベクトル[x, y, z]。たとえば、位置、速度、フォースなど。 |
|
4D ベクトル |
スカラ値で表される 4 次元ベクトル[w, x, y, z]。 |
|
クォータニオン |
クォータニオン[x, y, z, w]。クォータニオンは通常、向きを表すために使用します。クォータニオンは簡単にブレンドおよび補間でき、アニメートされた回転を処理する際のジンバルロック問題の回避に役立ちます。 |
|
回転 |
軸ベクトル[x, y, z]および角度(単位: 度)によって表される回転。 |
|
3x3 マトリクス |
実数で表される 3x3 マトリクス。3x3 マトリクスは多くの場合、回転およびスケーリングを表すために使用します。 |
|
4x4 マトリクス |
実数で表される 4x4 マトリクス。4x4 マトリクスは多くの場合、変換(スケーリング、回転、移動)を表すために使用します。 |
|
シェイプ |
プリミティブ ジオメトリ シェイプ。または、シーン内のオブジェクトのシェイプへのリファレンス。このデータ タイプは、パーティクルのシェイプを決定するために使用されます。 |
|
ジオメトリ |
シーン内のジオメトリ オブジェクトへのリファレンス。たとえば、ポリゴン メッシュ、NURBS カーブ、NURBS サーフェイス、ポイント クラウドなど。ジオメトリのサーフェイスをサンプリングして、パーティクル放出のためのサーフェイスの場所を生成できます。 |
|
サーフェイスの場所 |
ジオメトリ オブジェクトのサーフェイス上の場所。ロケータがオブジェクトのサーフェイスに固定され、オブジェクトが変形またはデフォームした場合も、ロケータはオブジェクトと共に移動し、同じ相対的な位置にあり続けます。 |
|
文字列 |
文字列。文字列は、ファイル パスなどを保存するためにカスタム ノードで使用できます。 |
|
トポロジ |
ポリゴンメッシュオブジェクトのトポロジー。これは ICE モデリングに使用されます。 |
|
実行 |
従来の意味でのデータ タイプとは異なります。[Set Data]の出力などの[Execution]ポートを[Execute]またはルート ノードに接続し、ツリーでの実行の流れを制御します。 |
|
リファレンス |
このタイプも、従来の意味でのデータ タイプとは異なります。シーン内のオブジェクト、パラメータ、属性へのリファレンスであり、文字列として表現されます。「リファレンスを連結する」で説明されているとおり、リファレンスは連結することができます。 |
多様型ポートでは、複数の異なるデータ タイプを受け取ることができます。たとえば、[Add]ノードを使用すると、複数の整数、複数のスカラ、複数のベクトルなどをまとめて追加することができます。
値を多様型ポートに接続すると、そのポート タイプは解決済みになります。同じノードおよび接続されたノードにある他の入力ポートと出力ポートも解決済みになり、特定のデータ タイプしか受け取らなくなる可能性があります。これは、たとえばベクトルに整数を追加できないという事実を反映しています。
何も接続されていない状態では、[Add]ノードのポートは未解決です(黒)。 |
ノードを[Value1]に接続し、その後[Value2]に接続すると、結果は解決済みになります。この場合、ポートは 3D ベクトルの黄色になります。 |
ポートのタイプが解決済みになった後でも、接続を別のデータ タイプで置き換えることによって変更できます。ただし、これはポートがツリー内の他の接続によって解決されていない場合のみ機能します。
接続されているノードによってデータ タイプが強制されなくなると、ポートの色は元に戻りません。これは、別の場所に接続すると変化する場合もありますが、データ タイプが解決済みの状態になっていることを示します。その意味では、多様型であるといえます。この動作は、ツリーに追加するコンパウンドにも当てはまります。ポートの色が特定の接続のみを受け取ることを示していても、実際にはどのような接続でも実行できます。
ポートのタイプが未解決の場合、値をプロパティ エディタで設定することはできません。解決されると、プロパティ エディタに適切なコントロールが表示されるようになります。データ タイプによって、使用するコントロールは異なります。たとえば、ブールにはチェックボックス、スカラにはスライダ、などです。
多様型ポートは複数のデータ タイプを受け取りますが、すべてのタイプの接続を受け取るとは限りません。たとえば、[Pass Through]ノードのポートはあらゆるタイプの値を受け取りますが、一方[Multiply by Scalar]ノードでブール値を使用することはできません。
2 つのポートを接続できるようにするには、それぞれのコンテキストに互換性が必要です。コンテキストは、基本的にデータの所有者(オブジェクト自体、またはそのポイント、ポリゴン、エッジ、ポリノードなど)です。たとえば、オブジェクト全体に対する 1 つの値が存在する場合、ポイントごとに新しい値を設定することはできません。一方、コンテキストがポイントごとに存在する場合、それぞれが独自の値を持つため、1 つのポイントに値を設定しても、他のポイントの値には影響しません。
データのコンテキストは、多様型ノードのデータ タイプと同様、ノード接続全体で継承されます。
ツリー内のデータのコンテキストの一部は、関連付けられているエレメントのタイプ(ポイント、エッジ、ポリゴン、オブジェクトなど)によって決まります。たとえば、ポリゴン法線にはポイント位置を追加することはできません。どちらの値も 3D ベクトルですが、典型的なメッシュでは、ポイントよりポリゴンの方が少なく、どのポイント位置をどのポリゴン法線に追加するか決定する適切な方法はありません。つまり、それぞれが異なるコンテキストに属しているといえます。
次の表は、コンテキストを定義するさまざまなエレメント タイプを示しています。
コンテキスト |
説明 |
---|---|
シングルトン |
1 つの値のみを含むデータ セット。 例: オブジェクトの位置、ボーンの長さ、メッシュのボリュームなど。 詳細については、「シングルトン コンテキスト」を参照してください。 |
ポイント |
ジオメトリ オブジェクト(ポイント クラウド、ポリゴン メッシュ、NURBS サーフェイス、カーブ、ラティスなど)の各ポイントに 1 つの値を含むデータ セット。 例: ポイント位置、エンベロープ ウェイトの割り当てなど。 |
ライン |
各エッジ、サブカーブ、サーフェイス境界に 1 つの値を含むデータ セット。 例: エッジの長さなど。 |
フェイス |
各ポリゴンまたはサブサーフェイスに 1 つの値を含むデータ セット。 例: ポリゴン法線、ポリゴン エリアなど。 |
サンプル |
ジオメトリの各テクスチャ サンプルに 1 つの値を含むデータ セット。サンプルは通常、ポリゴン メッシュ上のポリゴン ノードですが、NURBS サーフェイスやカーブにもサンプルがある場合があります。 |
コンポーネント データのタイプによってコンテキストが決まるように、コンポーネントが属するオブジェクトによってもコンテキストが決まります。たとえば、あるオブジェクトのポイント位置を別のオブジェクトのポイント位置に追加することはできません。ポイント位置のどの特定のペアを追加すべきか決定する適切な方法はなく、通常は 2 つのオブジェクトが同数のポイントを持っていることすら考えにくいものです。ただし、例外もあります。オブジェクトが複製されているケースです。この場合、「コンテキストを切り替える」で説明されているとおり、[Switch Context]ノードを使用できます。
オブジェクトのコンポーネントではなくオブジェクトに属するデータは別のコンテキストです。ほとんどの場合、このデータは、次に説明するシングルトン コンテキストに属します。
シングルトン コンテキストに属する 1 つの値のみを含むデータ セットです。シングルトン データは、関連付けられているオブジェクトに関わらず、常に他のシングルトン データと互換性があります。
また、シングルトン データは通常、他のデータ コンテキストとも互換性があります。たとえば、オブジェクトの位置(シングルトン コンテキスト)をそのポイント位置(ポイント コンテキスト)に追加できます。オブジェクトの位置を別のオブジェクトのポイント位置に追加することも可能です。
データ セットがシーン内のオブジェクトのエレメントにバインドされていない場合があります。たとえば、[Generate Sample Set]ノードは、ジオメトリ オブジェクトのサーフェイスにランダム ポイント ロケータのセットを生成します。次の図では、各ポイント ロケータのポイント クラウドにポイントが追加されています。
[Generate Sample Set]ノードから[Add Point]ノードに渡されるポイント ロケータのセットのサイズは、シーン内のあらゆる種類のエレメントの数と必ずしも一致しません。セットのサイズは、実際には[Generate Sample Set]ノードの[Rate]パラメータによって制御されています。このような場合、このデータのコンテキストは[Generate Sample Set]が所有していることになります。
通常、ノードバインド コンテキスト同士では互換性がありません。たとえば、同じジオメトリに 2 セットのロケーションを生成すると、それぞれが異なるノードにバインドされ、結合できなくなります。
データ タイプとコンテキストに加えて、ポートの互換性を決定する要因としてストラクチャが挙げられます。ストラクチャの種類には、シングルと配列(順序集合)の 2 つがあります。
シングル ストラクチャは、データ セットの各エレメントに 1 つの値を持ちます。たとえば、各ポイント位置は単一の 3D ベクトルです。
配列ストラクチャは、データ セットの各メンバにゼロ、1 つ、または複数の値を持ちます。配列の値の数は、データ セットのメンバごとに異なります。たとえば、ポリゴン メッシュの隣接するポイントは、各ポイントの接続に応じて異なる数の値を持つ配列になります。
配列の操作の詳細については、「ICE Tree で配列を操作する」を参照してください。