一部のノードは、リファレンスを使用してシーン内のエレメントを参照できます。たとえば、リファレンスでは次のものを指定できます。
リファレンスは名前で解決されます。文字列では大文字と小文字は区別されません。オブジェクト名、プロパティ名、属性名はピリオド(.)で区切ります。たとえば、「grid.PointPosition」や「sphere.cls.WeightMapCls.Weight_Map.Weights」のようになります。
シーン リファレンスを指定するには、ノードのプロパティ エディタにあるコントロールを使用するか、ノードのコンテキスト メニューの[ポート データを Explorer で開く]を使用します。
シーン リファレンスを使用するノードのプロパティ エディタには、特別なコントロールが用意されています。
[In Name]ポートおよび[Out Name]ポートを使用すると、コンピュータのデイジー チェーン接続のように、リファレンスを[Get Data]などのノードに連続して接続することができます。たとえば、最初に「sphere」を取得し、続けて「sphere.PointPosition」、「sphere.PointNormal」などのように取得することができます。後で「sphere」を「torus」に変更する場合、変更する必要があるのは 1 つのノードだけです。一番左にあるリファレンスを表示すればよいだけなので、コンパウンドを作成する際に特に便利です。
この方法で接続されたリファレンスは連鎖した状態になります。たとえば、[Get Data](「Self」)を[Get Data](「PointPosition」)につなぐと、「Self.PointPosition」になります。リファレンスの最初と最後にあるピリオドについては気にしなくてかまいません。ピリオドは、必要に応じて自動的に追加または削除されます。
ノードの[In Name]ポートにリファレンスが接続されている場合、[Explore]ボタンと[ポート データを Explorer で開く]コマンドは現在のパスから開始されます。たとえば、リーフ(一番左)の[Get Data]のプロパティ エディタで[Explore]をクリックすると、シーン ルートから始まるものであればどのようなエレメントでも選択できます。ただし、[Get Data]の[In Name]にジオメトリック オブジェクトへのリファレンスが接続されている場合は、そのオブジェクトのプロパティと属性を選択できます。同様に、ノードにシーン グループへのリファレンスが接続されている場合は、そのグループのすべてのオブジェクト(交差)に存在するあらゆるプロパティや属性を選択できます。
[Set Data]コンパウンドの文字列が[In Name]ポートに接続されている場合、その文字列は、コンパウンドによって設定されたすべての属性の先頭に付加されます。たとえば、オブジェクト名「pointcloud」を接続し、その後に[PointPosition]や[PointVelocity]など、任意の数の属性を設定できます。[In Name]が[Set Data]コンパウンドに接続されたときに新しい属性を追加するには、まず右クリックして[前にポートを挿入]または[後にポートを挿入]を選択し、新しいポートを追加します。次に属性のリファレンスを指定し、最後に値を接続します。
トークン「self」は常に、ICE ツリーが直接適用されているオブジェクトを参照します。このトークンを使用すると、特定のオブジェクト名に依存しない、簡単に再利用できるツリーを作成できます。
「self」を使用するリファレンスの詳細なコンテキストは、属性によって異なります。たとえば、「Self.PointPosition」はポイントごと、「Self.EdgeLength」はエッジごと、「Self.PolygonArea」はポリゴンごと、「Self.NbPoints」はオブジェクトごとです。
使用できるその他のトークンには、「this」(「self」と同じ)と「this_model」(ICE ツリーにオブジェクトを含むモデルを参照)があります。
特定のオブジェクト名を使用して ICE ツリーを作成し、他のオブジェクトで使用するコンパウンドを作成できるように汎用的なツリーにする場合は、そのオブジェクト名を自動的に「Self」に置き換えることができます。
シーン リファレンスは、シーンを変更すると自動的に保持されます。
「sphere」という名前のオブジェクトがあり、その名前を「ball」に変更すると、「sphere」へのリファレンスは自動的に「ball」へのリファレンスに更新されます。
「sphere」というオブジェクトを削除した場合は、それに対するすべてのリファレンスが無効になり、影響を受けるノードが赤で表示されます。後で「sphere」という名前の別のオブジェクトを追加するか、既存のオブジェクトの名前を「sphere」に変更すると、リファレンスは再び解決済みになります。
「sphere」という名前のオブジェクトを「Fluffy」という名前のモデルに追加すると、「sphere」へのリファレンスは自動的に「Fluffy.sphere」へのリファレンスに更新されます。ICE ツリーが「Fluffy」モデルのオブジェクトにある場合は、「this_model.sphere」へのリファレンスに更新されます。