シーン リファレンスを指定する

 
 
 

一部のノードは、リファレンスを使用してシーン内のエレメントを参照できます。たとえば、リファレンスでは次のものを指定できます。

リファレンスは名前で解決されます。文字列では大文字と小文字は区別されません。オブジェクト名、プロパティ名、属性名はピリオド(.)で区切ります。たとえば、「grid.PointPosition」や「sphere.cls.WeightMapCls.Weight_Map.Weights」のようになります。

ヒント:ポートではなく、[Get Data]ノードを右クリックすると、[オブジェクトの選択](Select Object)から、参照されるオブジェクト、または参照される属性を所有するオブジェクトを選択できます。これは、クラスタ、ウェイト マップ、頂点クラスタの属性では動作しません。

シーン リファレンスを指定する

シーン リファレンスを指定するには、ノードのプロパティ エディタにあるコントロールを使用するか、ノードのコンテキスト メニューの[ポート データを Explorer で開く]を使用します。

プロパティ エディタでリファレンスを指定する

シーン リファレンスを使用するノードのプロパティ エディタには、特別なコントロールが用意されています。

A

リファレンスを入力します。オブジェクト、プロパティ、属性は、ピリオドで区切ります。文字列では大文字と小文字は区別されません。トークン「self」を使用すると、ツリーが存在するオブジェクトを参照できます。また、トークン「this」(「self」と同じ)と「this_model」(ツリーでオブジェクトを含むモデル)を使用することもできます。

B

[Explorer]をクリックしてツリーを展開し、エレメントを選択します。ツリーには、現在のエレメント名のパスまたは場所から取得できる属性が表示されます。このリストには、定義済みの属性とすべてのカスタム属性が含まれています(接続されていない[Set Data]ノードで定義されている属性を含む)。

C

[ピック](Pick)をクリックしてから、ビューポイント、Explorer、Schematic View のエレメントを選択します。

D

A と B の方法を組み合わせることもできます。たとえば、「self」と入力して[Explorer]をクリックし、続けて[PointPosition]などの属性を選択することもできます。

ノードのコンテキストメニューを使用してリファレンスを指定する

この手順は、[Set Data]などのコンパウンドには使用できません。

  1. (ポート上ではなく)シーン リファレンスを含むノードを右クリックします。

  2. [ポート データを Explorer で開く](Explore for Port Data)を選択します。

  3. ポップアップされる 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 ツリーにオブジェクトを含むモデルを参照)があります。

「Self」を使用してオブジェクト名を置換する

特定のオブジェクト名を使用して ICE ツリーを作成し、他のオブジェクトで使用するコンパウンドを作成できるように汎用的なツリーにする場合は、そのオブジェクト名を自動的に「Self」に置き換えることができます。

すべてのノードでオブジェクト名を「Self」に置き換えるには

  • [ユーザ ツール](User Tools) [オブジェクト名を Self. で置換(ネストしたコンパウンド)](Replace Object Name with Self (Nested Compounds))を選択します。

この操作は、ネストしたコンパウンドで使用されているリファレンスなど、ICE ツリーが適用されているオブジェクトの名前へのすべてのリファレンスに影響します。他のオブジェクト名へのリファレンスには影響しません。

特定のノードでオブジェクト名を「Self」に置き換えるには

  • [Get Data]ノードまたは[Set Data]ノードを右クリックして、[オブジェクト名を Self. で置換](Replace Object Name with Self)を選択します。<hbreak/>

「this_model」でモデル名を置き換える

キーワード「self」および「this」が ICE ツリーのオブジェクトを参照するのと同様に、キーワード「this_model」は、ICE ツリーにオブジェクトを含むモデルを参照します。特定のモデル名に対する参照を「this_model」で置き換えることによって、ツリーがより汎用的になり、他のオブジェクトでも利用できるようになります。

すべてのノードでモデル名を「this_model」に置き換えるには

  • [ユーザ ツール](User Tools) [モデル名を this_model で置換(ネストしたコンパウンド)](Replace Model Name with this_model (Nested Compounds)を選択します。

シーン リファレンスを解決する

シーン リファレンスは、シーンを変更すると自動的に保持されます。

  • 「sphere」という名前のオブジェクトがあり、その名前を「ball」に変更すると、「sphere」へのリファレンスは自動的に「ball」へのリファレンスに更新されます。

  • 「sphere」というオブジェクトを削除した場合は、それに対するすべてのリファレンスが無効になり、影響を受けるノードが赤で表示されます。後で「sphere」という名前の別のオブジェクトを追加するか、既存のオブジェクトの名前を「sphere」に変更すると、リファレンスは再び解決済みになります。

  • 「sphere」という名前のオブジェクトを「Fluffy」という名前のモデルに追加すると、「sphere」へのリファレンスは自動的に「Fluffy.sphere」へのリファレンスに更新されます。ICE ツリーが「Fluffy」モデルのオブジェクトにある場合は、「this_model.sphere」へのリファレンスに更新されます。