houdini勉強第1回は海外の方が作ったこのforeachとcookieを使ったアウトライン検出の
流れを追っていきたいと思います。
foreach便利ですけど、feedback的な処理を行う場合はちょっと
頭をひねる必要がありますね。
まずはblastで最初の要素を抜き出しますgroup==0でDelete Non Selected。
それからforeachのinput1に突っ込みます。
で、input2には生のデータをそのまま入れます。
このforeachで重要なのはMergeRsultsにチェックを入れないこと!
でないとforeachで回ったすべてのresultsが最後に結合されてしまします。
sampleではeachNumberで7回ループしてます。(connectivityでclassつないでeachAttribute
のほうが汎用性は高いかもしれません。)
foreachの中に入り、input1にはeach、input2にはblastをかけてます。
このeach、MergeRsultsのチェックをはずしたことでfeedbackのチェックが
入ってます。つまり一回目の結果が2回目でも利用できるようになっています。
そしてblastでは`stamp(“..”, “FORVALUE”, 1)`でインクリメントされた値が
どんどん入ってすべての要素を抽出してくれます。
注意(“)を入れないとStringにならないのでグループに認識されません
そこで、この2つの要素をcookieでUnionしてやります。え?なんで?あ、そうか、
inputにくる断片的なピースは、独立した要素なので重なりが発生してしまうからか。
それからCheck for Full Enclosureにチェックが入っていると
囲い込みに失敗した要素が消えてしまうからチェックをはずし、DoJitterで整えます。
うまくいかないときはJitterをいじったりsortSOPで並び替えをするのだろうたぶん。
そしてdivideでedgeを消して
加えてvopsop_group_onEdgeで隣り合う頂点で内積見て無駄な頂点をonEdgeに集めてblastで削除
これでアウトラインを取得できます
頭いい!