« C.O.F.F.E.E.での繰り返しはfor/whileだね。XPressoでは? | トップページ | C4D XPressoの「光線の衝突」ノードで遊んでみる。 »

更にXPressoでくり返し

「ベジェスプラインを弛ませる」XPressoで、スプラインのポイントをオブジェクトに追従させました。そのXPressoの作り方では、ポイントが増えると大変面倒です。ではXPressoのくり返しノードを使ってポイントが増えても簡単に対処できるようにして見ましょう。

追従させるオブジェクトをリストアップし、リストの順にオブジェクトと番号を出力するようにします。

では、作成してみよう。
まずは、新規ノード/XPresso/一般/「リンクリスト」を追加。
このノードはリンクリストに登録されたものを入力された番号のものを出力します。

Loop_12

C.O.F.F.E.E.ノードも追加し入出力を全て削除します。新規で入力「リンク」を追加します。

Loop_13

前回と似たC.O.F.F.E.E.を使います。今回は入力されたオブジェクトの名前を表示します。

/*
入力の確認
2009.1.26
*/


main()
{
  println(Input1->GetName());

}

シーンに適当に種類の違うオブジェクトを数個追加します。

Loop_10

では、この4個のオブジェクトをリンクリストノードの属性「リンクリスト」に追加します。

Loop_11

では、リンクリストノードの出力「リンク」とC.O.F.F.E.E.ノードの入力「Input1」に連結します。

Loop_14

コンソールを出し表示を消去します。
リンクリストノードの属性で番号を0から順に1、2、3、4、5、と増やしていきます。

Loop_15

コンソールを見てください。

ピラミッド
オイルタンク
正多面体
円柱
ピラミッド
オイルタンク

リストの上から順にオブジェクトが表示されます。下まで表示すると再び上から表示され繰り返されます。

では、このリンクリストノードの入力「番号」にくり返しノードの出力「くり返し」を連結すれば、リストの順に出力されます。
新規ノード/XPresso/くり返し/「くり返し」を追加します。
「くり返し開始」は0、
「くり返し終了」はリンクリストの(登録数-1)
と言う事で、リンクリストノードの出力「オブジェクト数」を追加。
「計算:減算(整数)」ノードも追加します。
次のように連結です。

Loop_16

後は、リンクリストノードの入力「番号」と、くり返しノードの出力「くり返し」を連結してリンクリストノードの出力「リンク」からオブジェクトを受け取れば終了。なんですが、ワイヤーは循環できないので、リンクリストを複製します。複製したリンクリストの入力「番号」にくり返しノードの出力「くり返し」を連結します。

Loop_17

これで、右のリンクリストノードの出力「リンク」と、くり返しノードの出力「くり返し」をポイントノードに適用すると完成です。

では、このXPressoを消さないように、「ピラミッド」「オイルタンク」「正多面体」「円柱」をシーンから削除します。
自動的にリンクリストノードに登録したリストも消えます。
新たに「球体」を追加し、20個になるように複製しましょう。
ここではファンクションメニューの複製でインスタンスを19個複製しました。

Loop_18

スプラインも追加しポイント数が20個になるよう調整します。

Loop_19

では、XPressoにスプラインと球体1個とポイントノードを追加します。
スプラインの出力には「オブジェクト」、球体には入力に「オブジェクト」と出力に「絶対座標」、ポイントノードの入力には「ポイントの位置」を追加します。

Loop_20_2

先ほどの2つのリンクリストに球体とその複製18個を登録します。

Loop_21

では、次のように連結します。

Loop_22_2

これで完了です。
XPressoに追加した球体は別に球体でなくてもいいのです。オブジェクトノードであれば。
リンクリストから出力されたオブジェクトのグローバル座標を取得する為だけです。

前回のXPressoです。

Loosens_09

ポイントが100個あれば球体とポイントノードが100個づつ必要ですが、今回のXPressoは、 これ以上増えません。

スプラインは、この様になりました。

Loop_23

残念なのは、追従するポイント数を変更する場合は、2個のリンクリストも変更しなければならないことですね。
今回は、リンクリストも覚えられました。でも他にも似たようなノードがありますね。

|

« C.O.F.F.E.E.での繰り返しはfor/whileだね。XPressoでは? | トップページ | C4D XPressoの「光線の衝突」ノードで遊んでみる。 »

コメント

この記事へのコメントは終了しました。