ループとは、多数の入力に対して一つの処理を繰り返すことです。CINEMA 4Dではポリゴンオブジェクトやスプラインオブジェクトのポイントを操作する場合によく使います。まず、ポリゴンAの「位置」データをポリゴンBに複製したいとします。それは簡単で、ポリゴンAの位置ポートとポリゴンBの位置ポートをワイアでつなぐだけです。
図803-1
さて、それでは次にポリゴンAの「形状」データをポリゴンBに複製したいとします。しかし「形状」というデータタイプは存在しません。したがって、ポリゴンAとポリゴンBを形状ポートでつなぐことはできません。それではどうしたらいいのでしょうか。
「形状」というのは、つまり「多数のポイントの位置データが集まった結果」です。そして位置というデータタイプは存在します。ですから、ポリゴンAに含まれる全てのポイントの位置データをポリゴンBに含まれる全てのポイントに複製すれば、原理的には形状を複製できるはずです。問題なのは、ポイントの数が何千個もあった場合、「どうやってそれを実行するか」ということです。そのような場合に、ループ(くり返し)機能を使います。
それではさっそく形状を複製するXPressoを作ってみましょう。まず新規シーンを作成し、「平面」オブジェクトを作成します。そのままだと細かすぎるので、分割数を10に減らし、編集可能にして下さい。
次に平面オブジェクトを複製し、横に並べ、片方の名前を「平面A」、もう片方を「平面B」として下さい。
次にXPressoタグを作成しますが、このような場合はグループ化して親のヌルに作成するのがいいでしょう。
図803-2
次に、XPresso編集の中に平面Aと平面Bをドラッグアンドドロップします。平面Aから平面Bに形状を複製するので、平面Aが左に、平面Bが右になるように少し離して並べて下さい。そして、ノードの右上をクリックし「オブジェクト」ポートを追加します。
図803-3
次に、XPresso編集の空いている部分を右クリックして、「XPresso -> 一般」から「ポイント」ノードを作成してください。ポイントノードをオブジェクトノードにリンクすると、ここからポイントのデータを取り出せるようになります。さらに、ポイントノードを複製して平面Aと平面Bのオブジェクトポートにリンクして下さい。
図803-4
次に、平面Bにリンクされたポイントノードの左上をクリックし「ポイントの位置」入力ポートを追加し、平面Aの「ポイントの位置」出力ポートにリンクして下さい。これでとりあえず、平面Aのポイント位置データを平面Bに複製できたはずです。
図803-5
この状態でエディタービューを見てみましょう。一見しておかしいですが、これから順を追って修正していきます。
図803-6
まず、平面Aの左端のポイント(ポイント番号0)を動かしてみます。すると、確かに平面Bのポイントもついてきます。つまり、形状の複製ができています。
図803-7
最初の問題は、ポイントの位置情報がローカル座標ではなく、グローバル座標で扱われていることです。もちろんグローバル座標で位置データを扱うケースもありますが、今回は「形状の複製」が目標なので、ローカル座標で扱う必要があります。そこで、ポイントノードを両方とも選択し、属性マネージャで「マトリックスモード」をグローバルからローカルに切り替えます。
この状態で平面Aのポイント0を動かすと、平面Bのポイント0が「正しく」動くはずです。
図803-8
しかし、平面Aのポイント1を動かしても平面Bのポイント1は動きません。これはポイントを複製する作業が一回しか行われていないからです。そこで、この作業がくり返し行われるようにループ機能を追加します。
図803-9
|
Comments are closed.