こんにちは。篠島です。これから数回に渡ってDOPシミュレーションについて書いてみたいと思います。DOPはあまりにも複雑でどこから始めたらいいのかが難しい所ですが、今回はメニューから作られるDOPのリジッドボディでシミュレーションを説明してみたいと思います。
今回のサンプルファイルです。といってもメニューから作っただけなので特に何も編集していません。
dop1.zip
まずメニューバーからDOPシミュレーションを作ってみます。
すると下のようなネットワークが作られると思います。メニューからSphereを作り、RBD Objectをクリックして作りました。メニューからノードを作ると全部やってくれるので便利といえば便利なのですが、本人が裏で何をされているのかが分からないとHoudiniがどんどん分からなくなっていく諸刃の剣の様な物です。
メニューから自動的に作られたネットワークは見ての通り汚いです。というか無駄なMergeノードやらRestやDop Importノード等・・・。最初のうちはメニューから作ってもいいですが、なるべく自分でノードを作れるようにしておくといいと思います。
Fluid系のシミュレーションはポイントからメッシュを張ったり複雑なノードになっているので、これメニューから作ったほうが簡単ですが、やり方を知っていると便利に越したことはありません。Houdiniのバージョン毎にメッシュの貼り方が異っているので、バージョンごとのメッシュの貼り方を調べてみると色々と勉強になります。
まずメニューによってHoudiniが自動的に作るノードを見てみましょう。
Restノードはrestアトリビュートを作ってくれるノードです。Restアトリビュートは何かというと、オブジェクトのデフォルトの位置を記録したものです。単にPアトリビュートの複製です。Restがどのように使われるかというと3Dテクスチャを使ったきに、オブジェクトがデフォームしてもテクスチャがオブジェクトにくっついて泳がないようにするのに使われます。と言うことは3Dテクスチャ使わなければ必要ないノードです。
DOP Importノードは実際にDOPシミュレーションのデータをオリジナルのSphereオブジェクトに流し込んでいます。ノードのパラメーターは沢山あり目を背けたくなるかもしれませんが、重要なのはImport Styleで後の設定はデフォルトでだいたい問題ないです。メニューからノードが作られているのでDOP NetworkやObject Maskも自動的に記入されています。
DOPネットワークに関してはMerge以外は必要なノードです。Mergeを消してノードの配置をちょっと変えたものが下です。
sphere_object1という名のRBD Objectノードが、Sphereジオメトリを読み込み、シミュレーションに必要なデータを追加しています。そしてRigid Body Solverがジオメトリのシミュレーションをし、Gravityノードはその名のとおり重力を追加しています。Outputノードがシミュレーションの結果が表示されるノードです。
RBD ObjectノードのSOP Pathの所を前回のブログで説明した様に中クリックすると、エクスプレッションの結果の値を見ることができます。Sphereオブジェクトに繋がれたRestノードを読み込んでいるのが確認できます。
シミュレーション結果はただSphereが自由落下をしているだけの単純な物です。