No More Retake

3DCG屋さん向けTips&Referenceサイト

メニュー

Houdiniノード:For Loop(SOP)

Houdiniノード勉強回。

今回は、Houdini15から追加のBlock Begin(SOP) / Block End(SOP)ノードにしてみました。
「なんじゃこりゃ」、「どうやって使うのさ」、と思って調べたヤツです。

forloop_v03

繰り返し処理のためのノードで、H14以前の”For Eeach(SOP)”と(ほぼ)同様の機能を提供するもの。
(H14以前のfor each(SOP)は”For-Each SubnetWork(SOP)”として残っています)
Tabメニューから“For Loop”もしくは、“For-Each Loop”でBlock Begin / End(SOP)をセットで作ってくれます。(違いは後述)

forloop_v01

Block Begin / End(SOP)の間にノードを挟むとそのノードがループ処理されます。
他の処理と同一階層で行えるのが利点。いちいち階層を潜らなくてもよいと。

Block Begin/End(SOP)ループ処理は大きく2タイプに分かれます。
蓄積型バラバラ型(by管理人呼称)

蓄積型は、一つのジオメトリを繰り返し処理し、結果を蓄積していくタイプです。
バラバラ型は、複数のジオメトリ全部に対して同じ処理を施すタイプです。

forloop_v04

同じノードを使ってますが、それぞれ設定が異なります。

まずは蓄積型から、ざっと。

ForLoop_v01

上絵のような設定。これで、蓄積型のループが出来ます。
パラメータ見てみます。

ForLoop_v02

次にバラバラ型。
設定はこんな感じ。

ForLoop_v03

Piece Attributeを指定しない場合は、すべてのPrimitive(またはPoint)に対して個別に処理されるようです。

さらに、蓄積型とバラバラ型を組み合わせた蓄バラ型も可能です。
マニュアルにあるサンプルでは、トーラスを球でガシガシ削ってました。
(Block Begin(SOP)のExamplesの一つ、「SwissCheese」)

ForLoop_v04

ネットワークはこんな感じでした。

ForLoop_v05


 

さて、Loop処理する度にこの設定をするのは面倒なので、プリセットが用意されています。
tabメニューの、”For Loop”と”For-Each Loop”がそれです。

ForLoop_v11

“For Loop”が蓄積型
“For-Each Loop”がバラバラ型
これらの設定をしたBlock Begin / End(SOP)のセットが作成されます。


 

Block Begin(SOP)にはLoopの開始を指定する以外にも、大事な機能があります。
メタデータ(情報)を生成する、という機能です。
ここでのメタデータとは、例えば、「今何回目のループ処理をしている」、「全部で何回ループ処理する」、「今、どの破片を処理している」とか、そういった情報です。

Block Begin(SOP)にある、”Create Meta Import Node”ボタンを押すことで、Meta情報を格納するBlock Begin(SOP)を新しく作成することができます。

ForLoop_V05

ForLoop_v06

このノードをGeometry Spreadsheetで見てみると、detailに幾つかパラメータがあるのが分かります。

ForLoop_v08

「今、何回目の反復処理中」、だとか「今、どのPieceを処理している」だとか、そういうのが分かります。
値を参照したいときは、エクスプレッションのdetail関数使って取得できます。

そんな感じ。


※一点、groupベースでのLoop処理について注意が必要。
for each subnet(SOP)だと可能だった、groupベースのPiece Loop処理の機能は提供されていません。
これはgroupが互いに素とは限らないため(構成要素に重複があり得るということ)らしい。
もしPiecesの定義にgroupを使いたい場合は、Name(SOP)等を使って、Primitiveにgroupの名前を持つNameアトリビュートを作成し、それでPieceを区別すると良いらしい。

ForLoop_v09

Name(SOP)を使ってgroup名からnameアトリビュートを作成する手順は次の通り。
1:Name(SOP)を作成
2:”Name form Group”をON
3:Group Maskを*に
4:Number of Namingsを0に

ForLoop_v10

これで、groupの名前を持つNameアトリビュートが作られます。


以上、間違い等ありましたらご指摘を!

サンプルファイルForLoop_Sample.hiplc

 

「参考」
マニュアル
http://www.sidefx.com/docs/houdini15.0/nodes/sop/block_begin
http://www.sidefx.com/docs/houdini15.0/model/looping

関連記事

コメントをお待ちしております

このサイトについて

3DCG Tipsサイト。Houdiniの記事が多めです。

RSS

follow us in feedly

アンケート

記事の難易度についてどう思いますか?

View Results

Loading ... Loading ...

言語切り替え

  • English (United States)
  • 日本語

Archives

  • 2017 (7)
  • 2016 (36)
  • 2015 (64)
  • 2014 (54)
  • 2013 (60)
  • 2012 (54)

スポンサードリンク