破片の回数だけ、繰り返しできる仕組み。
1)ForEach SOP
2)Cop SOP によるDelete Stamp(ってHoudini Cook Bookには確か記載されてました)
1)ForEach SOP
voronoiは分割と同時に各破片をGroupに分けてくれるので、
ForEach SOPでGroupで繰り返し処理させる。
voronoiで作ったのを利用するならGroup Maskに「piece*」。
ForEach SOPの中身をこんな感じ。
ForEachが一つずつグループを取り出してくれるので、センターにpointをadd。
プリミティブをdeleteして中心点だけに。
球を適当に割って中心点だけにするとこんな感じ。
こっからはbestかわからないけど、
voronoi node下の左側で破片を取り出し、右側が先ほどの中心点の集まり。
左側はcopyの反復処理にたいして、一つずつpieceを取り出すために、group指定。
今回は、
`arg(primgroupmask("../voronoifracture1","piece*"),stamp("../copy1","copynum",0))`
取り出した破片は、transformで真ん中に。
stampはcopy SOPの2nd inputに入れた点の数までカウントするように、$PT。
2nd inputが無ければ$CYでNumber of Copiesを参照。
transformノードを表示させて一つ取り出せていればこんな感じ。
copy SOPを表示させて、元通りになっていれば完了。
中心点に特定のアトリビュートを与えておけば、いろいろいじれる。
今回は、pscaleを作ってvopsopでnoiseを加えるとこんな感じになる。
2)Cop SOP によるDelete Stamp
copyで複製するとなんかバグっていくので、好かないんだけど、
copyで複製する数は、今回はnullから「piece」を含むgroupの配列作って、
argcで何個あるかカウントさせたもの。
$CYで上のNumber of Copiesまでカウントアップしていくstampを作っておく。
ここはforEachで使ったのと同じ、、というかここからパクリました。
これで中心点だけ取り出せる。後はforEachと同じように、またcopyを使いましょう。
破片の数を変えたりすると、ファイル開きなおさないと点と破片が一対一対応せず
ぐちゃぐちゃになるのよね。
とりあえず、ForEachのほうが、loop処理がまとめられて自分的には好き。
以上、メモ。