« 以前作ってHDDの片隅で眠っていた「ベジェスプラインを弛ませる」XPresso | トップページ | 更にXPressoでくり返し »

C.O.F.F.E.E.での繰り返しはfor/whileだね。XPressoでは?

いきなりXPressoで繰り返し処理と言われても「どうするんだっけ?」と言う具合で、面倒だからC.O.F.F.E.E.で…
ま、やり慣れた方で出来るならそれでも良いのだが。

「ベジェスプラインを弛ませる」XPressoで、ポイントの数だけオブジェクトを追加し、そのオブジェクトの位置にポイントを追従させる。と言うものを作成しました。
ポイント数が少なかったので、1対1で指定しましたが、100個や200個だったらどうするんだ?
そうだね、どうするんだろう。ま、「自分にはC.O.F.F.E.E.があるから大丈夫…。」と言いたい所だけど、少しはXPressoも使えるようになった方が良いのかなぁ…

XPressoで繰り返しか…何があるんだ?
XPressoのノードを一個づつ見ていくと、微妙に予想できない物がありますね。
今回は、「繰り返し」。

新規ノード/XPresso/くり返し/「くり返し」

だね。

他にも「オブジェクトリスト」「タグ」「マテリアル」「選択範囲」「階層」がありますね。

まず「くり返し」ノードを使ってみよう。
入力には「くり返し開始」「くり返し終了」「前のくり返し」「ON」
出力には「くり返し」「くり返し数」「前のくり返し」と…

Loop_01

C.O.F.F.E.E.のfor()だね…。「前のくり返し」?よく分からないなぁ。ま、適当に…
くり返しノードの属性の「くり返し開始」と「くり返し終了」フィールドに適当な数字を入れて…

Loop_02

「くり返し」から出てくる数値を確認…確認はC.O.F.F.E.E.ノード使うか…

C.O.F.F.E.E.ノードを追加して、入出力を全部削除して、入力に「整数」で追加。

/*
入力の確認
2009.1.26
*/


main()
{
  println(Input1);

}

たったこれっぽちだと照れますね…

くり返しノード「くり返し」とC.O.F.F.E.E.ノードの「Input1」を連結。

Loop_03

コンソールを表示して、表示内容を消去。
適当にイベントを発生させて…アバウト過ぎですか?じゃあエクスプレッションエディタの「実行」ボタンを押して確認。一気に7~19の整数が出てきました。
XPressoの1回の実行でC.O.F.F.E.E.ノードは、繰り返しの数だけ実行されるんだね。

では「くり返し」ノードを使ってスプラインのポイントを操作してみよう。
20個のポイントを持つスプラインを適当に追加。
タイプはベジェ以外であればOKです。

Loop_04

これを等間隔で(0.0 , 0.0 , 0.0)~(100.0 , 0.0 , 0.0)に配置してみよう。
スプラインオブジェクトをXPresso編集ウィンドウへドロップし、スプラインオブジェクトの出力をオブジェクトで追加。

新規ノード/XPresso/一般/「ポイント」を追加します。
ポイントノードの入力の「ポイントの位置」を追加。
スプラインオブジェクトの出力「オブジェクト」とポイントノードの入力「オブジェクト」を連結。

Loop_05

くり返しノードの入力「くり返し開始」に0を、「くり返し終了」に19を入力。

Loop_06

直接入力でもかまいません。
くり返しノードの出力「くり返し」をポイントノードの入力「ポイント番号」へ連結。

Loop_07

後は、ポイントの位置の計算です。C.O.F.F.E.E.を使うと簡単ですが、他のノードで作りましょう。
計算式は、

(100.0 , 0.0 , 0.0) × (「くり返し」/「くり返し終了」)

ですね。
追加するノードは、「計算:乗算(ベクトル)」「定数(ベクトル)」「計算:除算(実数)」です。
では、一気に連結します。

Loop_08

この様に連結します。
問題は無いのですが、くり返しノードの入力の定数が「実数」になっていますが、「整数」にしましょう。 なるべく型は揃えましょう。

結果は

Loop_09

奇麗に揃いました。
これで、XPressoで簡単なくり返しが出来るようになったと思う。

|

« 以前作ってHDDの片隅で眠っていた「ベジェスプラインを弛ませる」XPresso | トップページ | 更にXPressoでくり返し »

コメント

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