Houdini勉強回。取り上げるのはForループとTimeShift(SOP)。
ここで言うForループとは、Block Begin/End(SOP)ノードによる繰り返し処理のことを指しています。
これとTimeShift(SOP)の併用についてがメインテーマです。
上図のように、Forループ内にTimeShift(SOP)を組み込んだ場合、大抵TimeShift(SOP)が機能しないのですが、まれに機能している例を見かけ、はて?と思いリサーチしてみた次第です。
結論から述べると、現状Forループ内でTimeShift(SOP)が機能するのは、以下の2パターンのみ。
・・・たぶん、・・・おそらく、・・・めいびぃ。
ひとつはカウント系のループ。
もうひとつの方はひとことで説明するのが難しいので、それについては後述します。
カウント系ループとTimeShift(SOP)の併用について
ここで言うカウント系ループとは、”n回”処理を繰り返す、というように回数を指定するループ処理のことを指します。
Tabメニューからだと”For-Each Number”。
Block End(SOP)ではパラメータのIteration Method=”By Count”の設定のループ処理です。
この設定であれば、特に難しいことを考えずにForループとTimeShift(SOP)の併用が可能。
ためしに、こんなのを作ってみました。
シーンファイルはこんな。forloop_Sample01.hiplc
基本は入力のジオメトリを複製しながら時間をずらすため、瓦礫など複数あるものに適用するとなるとちょっと難しいです。
またカウント回数を指定しなければならないので、プロシージャルに作ろうとするとひと工夫必要。
しかし、確実にTimeShift(SOP)が機能するという点、手法として分かりやすいという点では重宝するかと。
別解
先に述べた、もうひとつの設定。
解説用として、こんなのを作ってみました。
これは本来、下絵のように一斉に落下する破片のシミュレーションですが、この各破片に対してForループでTimeShift(SOP)を適用して1フレームずつ落下のタイミングをずらして作成しています。
ネットワークはこんな。
手法のイメージはこんな感じ。わかる?
一旦、全部Forループ内に取り込んで、処理したい破片だけ残して他削除、TimeShiftを適用。これを破片の数だけ繰り返して、結果を統合する。少々強引な印象も受けるが、ともかくこれならTimeShiftが効く。
あとはシーンファイルを見てくれ。forloop_Sample02.hiplc
他の設定のForループはどうなのか?
上記の2つ以外にもForループの設定はいろいろあるが、それらはどうなんだというと・・・試した結果ダメ。
詳しく知りたい人はシーンファイルを見てくれ。forloop_Sample03.hiplc
Forループ処理が現在の仕様になって今は昔。このTimeShift(SOP)との併用だけが、前のが使いやすかったなと感じていたのですが、現在の仕様でもやりようはあると分かりました。
調べてみるものですね。
他にうまくいく設定や組み合わせがあったら教えてください。
以上! また次回!!
参考 https://www.sidefx.com/forum/topic/53471/
コメント