Houdini

Houdini tutorial 進捗 – 15 Shattering a Glass of Water(2)

いろいろ試しながら復習する関係で、最後のチュートリアルは何日かに分けてこなすことになりそう。まずは、今残ってる疑問点から解消していくことにしよう。

switchを、指定したタイミングで切り替える方法

  • Expression を組めばできるっぽい。9Frame 目で切り替える場合は Select Input に “if($F <= 9 , 0 , 1)” と指定する
  • あれ?このままだと切り替えた後のオブジェクトが表示されない?
  • この方法ではダメで、RBD FracturedObject の Creation Frame を 9 に指定して、Expression に “$FF >= ch(“../glass1/createframe”)”と指定する必要があるらしい。うーん。
    • $FF : $F は 整数、$FF は浮動小数。今回の場合はどちらでもOK。
    • ch() : 指定したパラメータの値を返す
  • “Houdini on the spot” の P.38 には Switch SOP で、if 文を使って切り替えをする例が載っているから if 文を使うこと自体は悪くないと思うんだけど…
  • そうこうしている内に、if文を使った場合でも動くようになっちゃった。ナゼ!?
  • わかった。Creation Frame == 切り替えタイミングじゃないときちんと評価されないのか。
  • マニュアルを読んで納得。
    Creation Frame:”The frame number on which the object will be created. The object is created only when the current frame number is equal to this parameter value. This means the DOP Network must evaluate a timestep at the specified frame, or the object will not be created.”

switch でオブジェクトを切り替えている時のDOP Import での指定のしかた

  • こちらは簡単。何も考えずに Object Mask に “*” を指定しておくだけ
  • しかし、これだと余計なオブジェクトも Import されてしまう。気持ち悪い!!
  • MMB で表示されるオブジェクトの一覧を参考に、テキストでリストアップもできる。”glass piece*” とか。
  • dopobjscreatedby() の結果も列挙できる。
  • 特定のオペレータを通過したオブジェクトのみ列挙できないものか?→dopnodeobjs() でできる

いろいろこだわって詳細まで調べ始めると全然進まないなぁ。まあしかたないか。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です