しかし、現在のXGroupにはポートがありません。サブルーチンで言えば「引数」のない状態です。これでは他のノードと組み合わせられません。それでは、これからXGroupにポートを追加します。XGroupにポートを追加するには構成を少し変える必要があるので、まずXGroupのタイトルバーを右クリックして「XGroupを開く」を選択して下さい。これで元に戻ります。 次に、このXPressoを「入出力部分」と「処理部分」に明確に分けます。サンプル806bを開いて下さい。 図806-12 変更点は、Rootオブジェクト(つまり、XPressoタグが適用されたオブジェクトであり、ターゲットの方向を向くオブジェクト)に「オブジェクト」ポートを追加したことです。最初のXPressoではこれが「オブジェクトへの直接リンク」になっていたので、XPresso内部では変更できませんでした。 そこで、Rootオブジェクトへのリンクを、オブジェクトポートを通して他のノードから間接的にもらうように変更したのです。こうしておけば、後でリンク先を自由に変更できます。 左から2列目のCOFFEEノードには次のようなプログラムが書かれています。 o_out= o_in->GetObject(); ここで、「GetObject()」はタグからそれが適用されているオブジェクトを取得する関数です。これはXPressoノードでは作れません。もしCOFFEEを使いたくない場合は、Targetオブジェクトを指定した時と同じように、Rootを指定するためのユーザデータを追加し、そこから取得して下さい。 さあ、これで入出力部分と処理部分を分離できました。左の2個のノードが入出力部分で、それ以外が処理部分です。それでは、処理部分のノードを選択し、どれか一つのノードのタイトル部分を右クリックし、「XGroupに変換」を選択して下さい。すると、処理部分だけがXGroupに変換されます。 図806-13 なお、COFFEEノードから出ているワイアが二股に分かれてしまいますが、これは同じものなので、一つのポートにまとめて下さい。 図806-14 さらに、XGroupのタイトルバーを選択して「表示 -> 標準」を選択すると、複雑な内部が隠れて非常にシンプルになります。 図806-15 しかし、内部を非表示にすると何のXGroupだかわからなくなってしまうので、XGroupとポートに適切な名前を付けておきましょう。 図806-16 このように入出力用のポートを明確にしておくと、XGroupを一種の「サブルーチン」として他のプログラムと組み合わせて使えるようになります。ただし、普通のプログラムのように「一つのサブルーチンを何回も使い回す」という使い方はできません。必要な数だけXGroupを複製する必要があります。しかし、それでも毎回全てのXPressoを組み直すよりはずっと簡単です。 |
0 comments:
Post a Comment