[Houdini] 再帰

Houdiniは上から下へ、上から下へ、というネットワークになっているので、
そのままでは再帰構造のようなことが実現できません。なのでそういう場合はL-systemを使ったりします。

ですがHoudiniはbgeoなどの外部ファイルを使うことによってネットワークの流れを分断して再帰構造を作ることが可能です。
というわけで以下は今回作成したテスト動画です。



この動画は、パーティクルを発生させて、その軌跡をポリゴン化しているのですが、
枝が何世代にも渡って進化しているのがわかるかと思います。

普通にPOP内部で完結させてしまうと、こういうことは出来ません。
splitした回数に応じて世代が決まってしまいます。

今回のテストでは、枝を生やす種となるポイントをbgeoに吐き出すことで、再帰構造を実現しています。
bgeoに吐き出すのは、流れを一旦断ち切って外に出してしまうことで、
ネットワークのループを作らず、データをループさせるためです。

HoudiniもMayaと一緒でネットワークのループは不可能です。当然ですが。
でも再帰はネットワークのループみたいなもの。
ネットワークを直接つなぐのが無理ならばデータだけでいいからループして欲しい。
であれば下流のデータを上に戻してしまえ!、という流れからbgeoをエクスポートしています。
これを毎フレ行うことで、次のフレームでは前のフレームで作成した種のデータを使うことが可能になり、
再帰構造が実現可能となります。

これはいろんなケースで使えるんじゃないかと思うのですが、
パーティクルみたいに時間軸に沿って状態が変化するものじゃないとあまり有効じゃない気はします。

ともあれ百聞は一見にしかず、この先は説明もややこしくなるので実際にデータをご覧になってみてください!
データダウンロード

こういうテクニックを使って何か出来ないかなーと考えていますが、はてさて。

お粗末さまでした。

「[Houdini] 再帰」への8件のフィードバック

  1. >Houdini Guruこと井上さん
    おーーーこれは!!!!!!!!!!!
    何とシンプルなネットワーク!!
    まだまだPOPの事が良く分かってなかったんだなと気付かされました。
    Preserve Group、、なるほど。。
     
    splitの結果が上流のノードでも評価されるというのが全くの盲点でした。
    奥が深い・・・。ちょっとまだ理解がぼんやりしてるので突き詰めて見てみます。
     
    ところで井上さんのVimeoの動画かっこいいです!!!!!
    レンダリングもMantraでしょうか?
    うーむ、、、さすが・・・!!
    勉強になります!!ありがとうございます!!!

  2. より深い理解のために自分で同じデータ作ったり、応用であれこれいじってテストしてみました!!!
    これの肝は井上さんがおっしゃる通りグループを工夫する、なんですね。
    下流にあるデータを上流で使用するのは不可能だと思っていたのですが、グループはPOP全体として有効になるのかなぜか定義箇所より上流でも有効になっていて、それを使ってさらにグループを作ると再帰構造を作ることが・・・!!!
    すばらしい!
    これは目から鱗です。
    情報、感謝感謝でございますm(_ _)m

  3. どーも ありがとウサギ
    自分もSoothsayerさんのファイルを見るまでは知りませんでした
    びっくりした勢いで動画まで作ってしまったのですが
    吐き出して作る方法もまたスゲーなと関心したりして

    レンダリングは全部Mantraです

  4. >井上先生
    いやーーー、これは本当にすごいです。
    自分もrecursive cube 3Dを作ってみたいなーと思ってやってみました!!
    楽しいですねこれ。
    bgeoの方法に関しても、これとはまた違った利点がありそうな気がするので
    あとで諸々まとめてUPしたいと思います!
    Mantraに関しても、あれこれどころか全くわからないので徐々に勉強していきたいです。

    ありがとウサギ好きにはこれを貼っておきます:)

  5. 再帰構造素晴らしい!!再帰構造ってのがよくわからないけどw
    ようはループしてやるぜ!って事だと、データ見て初めてわかりましたw

    僕も以前CGWの方で似たような事をやったのですが、その時は3世代にわたってSplitするようなものだったので、こちらの方法は断然スマートですね!
    あの時、なぜあのように世代を分けたのかは今となっては忘れてしまいましたけど。。

    でも、考えてみたら、POPやDOPってもともと再帰構造みたいなシステムになってたりするもんじゃないんでしょうかね?
    なんか、そのつもりで使っていたんですが、まだまだ理解が浅いようですね。
    確か、CGWで火花作ったときはこんな事やっていたような気もするんですが、
    思いつきでやってたりするので、完全に理解して使っていないみたいです。

    お二方のおかげで、すごく勉強になりました。
    近々これを使って何かしたいと思います。

    そういえば、Soothsayerさんって、ギャラクシーのマークさんですねw
    石の大好きな気さくな外人さんでした。

  6. 書き忘れたんですが、
    ネットワークのループは、Houdiniだと不可能ではないと考えています。
    その辺の知識は疎いのですが、CopySOPのStampなどで、それと同等なことが出来るのではないかと。
    ForEachSOPとは違い、ネットワークを行ったり来たり出来ます。

    ネットワークのループが不可能だと言うのは、こう言うことではないですかね?

  7. >akimoto先生
    どーもどーも。
    そうそう、ここに至るまでは、
    秋元先生のCGWの蔦のやつ見て、なんだやっぱり再帰ってダメなんじゃん→bgeo使えばやれるんじゃね?→出来た!!→ブログで公開→「いやbgeo使わなくてもいけますよ」→出来た!!! という流れになっていますw
    火花では再帰?なの?
    ちょっとデータDLしてきます。あざす。
    やっぱりどんな形でも外に出すと反響あっていいですね。完璧です。
     
    >そういえば、Soothsayerさんって、ギャラクシーのマークさんですねw
    まさにw
    あのスレッドの主要部分は日本から発信されていたという新事実w
    なのにこんなにも使われていないHoudini!!!まさに冷遇!!
    広めていきましょう。

    >CopySOP云々
    その辺出来ないものかなーと常々思ってたんだけども、
    再帰ってそもそもその直前のデータを参照してどうのこうの、というものなので、
    フレーム毎に処理が分断されるというか、前フレームの情報をtimeshiftとか使わないと参照出来ないSOPは、POP程スマートにはやれないのかなーと思いました。それこそbgeo吐いたりとかあれこれ?
    ただ秋元先生の言っているであろう部分が全く理解できてないので、もしかしたら出来るのかも???
    何かシーン作れたら是非見せて欲しい!!です!!!
     
    よろしくどうぞ!!

コメントを残す

メールアドレスが公開されることはありません。