On this page |
オブジェクト、データ、ソルバ ¶
シミュレーションは、 オブジェクト と データ で構成されています。オブジェクトは単にデータの格納庫にすぎません。RBDボールのようなオブジェクトを見ると、オブジェクトにGeometry
データが入っていることがわかります。お約束事でHoudiniはジオメトリをビューア、レンダーに描画します。
オブジェクトに追加されたデータは、ある意味、任意です。つまり、データはどんなものにも対応することができます。どのようにデータが名付けられていても、なにを拘束していても制約はありません。しかし、特定の名前とデータのタイプに限っては、 ソルバ には意味を持っています。
ソルバはシミュレーションするオブジェクト(RBDオブジェクト、ワイヤー、布、流体など)がどのような動きをするのか計算します。ソルバはオブジェクトに追加されているデータ(またはオブジェクトそのもの)を見て、それによってシミュレーションを実行します。
シェルフからシミュレーションオブジェクトを作成すると、HoudiniはRBD Objectのようなハイレベルのオブジェクトを作成します。RBDオブジェクトの中に入ると、データが追加されたEmpty Objectがあることを確認することができます。データは、RBDソルバがオブジェクトをシミュレーションするのに必要です。
ハイレベルRBDオブジェクト。 | 内側にはEmpty ObjectノードとRBD Configure Objectノードが接続されています。 | RBD Configure DOPオブジェクトノードの中にはたくさんのデータが接続されています。 |
(たくさんのダイナミクスノードがこのようにデジタルアセットとして実装されていて、ソルバが解釈できるように末端にあるソルバ用のオブジェクトにデータを接続したネットワークをハイレベルノードがカプセル化しています。)
ソルバは知っているデータを使い、その他のデータは無視します。つまり、他のソルバ(例えば、スカラーデータ)、任意で名付けたデータ、RBDオブジェクトに使えるデータを接続することができ、そしてRBDソルバはそれを問題なく無視します。
ソルバはオブジェクトとデータを受け取って修正します ¶
ソルバはシミュレーションするオブジェクト(RBDオブジェクト、ワイヤー、布、流体など)がどのような動きをするのか計算します。ソルバはオブジェクトに追加されているデータ(またはオブジェクトそのもの)を見て、それによってシミュレーションを実行します。例えば、RBDソルバは、オブジェクトに追加された密度、力、重力のような物理データを見て、オブジェクトがどこへ動くのか決めます(ポジションデータを更新しながら)。オブジェクトにデータが接続されていなければ、シミュレーションを実行しても何も起きません。
(これは、少し誤解があります。Position
のようなデータフィールドにエクスプレッションを使えば、ソルバがなくてもシミュレーションするオブジェクトを動かすことができます。しかし、あまりおもしろくありません。)
オブジェクトを制御するソルバがオブジェクトに他のデータとして接続されます。異なるタイプのシミュレーションオブジェクトはお互い影響を与え合うことができます。(例えば、煙を出すRBDオブジェクト)。オブジェクトを複数のソルバで制御することはできません。しかし、複数のソルバを使うソルバ(例えば、Blend Solver DOP)をオブジェクトに接続することができます。詳細は、以下のソルバの結合を参照してください。
Note
シェルフツールからシミュレーションオブジェクトを作成すると、ソルバが接続されます。ネットワークで作業していた場合は、自分自身でソルバを作成してオブジェクトに接続する必要があります。
Houdiniは2つのステップでダイナミクスシミュレーションをクッキングします:
-
オブジェクトとデータの接続を構築してネットワークを処理します。
-
処理されたデータツリー上でソルバを起動します。
ノードネットワークとフラグ ¶
ダイナミクスノード(DOP)ネットワーク ¶
DOPネットワークには、オブジェクトやフォースを作成したり読み込むためのダイナミクスノード(DOPs)を格納し、そこで接続を構築し、その相互作用をシミュレーションするためのソルバを設定します。
ダイナミクスシェルフツールを使用すれば、必要に応じて、あなたに代わってDOPネットワークを作成します。また、シーンのネットワークレベルで、あなた独自のDOPネットワークを作成することもできます。
複数のDOPネットワークを作成して、別々のシミュレーションを含めることができます。ダイナミクスメニューでは、シェルフツールが使用するネットワークを選択することができます。
ダイナミクスノードの使用方法に関する詳細は、ダイナミクスを参照してください。
DOPのフラグ ¶
アイコン |
キー |
説明 |
---|---|---|
|
Q または B |
Bypass はノードを無効にし、そのデータツリーを未変更のまま出力に渡します。これは、ビューア内でそのノードの効果をテストして可視化するのに役立ちます。 このBypassフラグがオンの時は、そのノードの左側のフラグが黄色に点灯します。 |
|
E |
Hidden このHiddenフラグがオンの時は、そのノードの右から2番目のフラグがシアン色に点灯します。 |
|
R |
Output は、シミュレーションのデータツリーとして使用する出力のノードをマークします。これにはネットワークの最後をマークして、そのネットワークの累積された出力を表示させることが多いのですが、そのネットワーク内でDisplayフラグを移すことができます。 このOutputフラグがオンの時は、そのノードの右側のフラグがオレンジ色に点灯し、オレンジ色のリングがそのノードに表示されます。 |
オブジェクトとデータの参照の方法 ¶
詳細は、DOPの入力と出力を参照してください。
シミュレーションを仕上げるときは、ジオメトリをディスクにキャッシュ化します ¶
シミュレーションしたジオメトリをディスクにキャッシュ化を参照してください。
Set Initial vs. Set Always ¶
データを接続したダイナミクスノードでは、各フィールドにポップアップメニューがあり、右側の値がいつ入力オブジェクトに設定されるのか制御します。
デフォルトは、 Set Initial で、これは、シミュレーションの最初のフレームのデータを設定/インポートします。
フレームに応じて(例えば、時間依存エクスプレッションを使う変形ジオメトリや他のネットワークから参照した値)インポートするものが変化するDOPの外から値やジオメトリをインポートしているのであれば、アップデートされる値を“Set Always”に変更します。
Set Always は とても遅いです 。なぜなら、常にデータツリーを書き換えなければならないからです。そのため、本当に更新する必要がない限りは使わないほうがいいです。できるだけ少ないパラメータにだけ使ってください。
Set Initial
シミュレーションの最初のフレーム で値を設定し、その時点からの値を使ってシミュレーションをします。
Set Always
フレーム毎に この値を更新します。値をフレーム毎に一定にしたいなら、この設定を使ってください。または、値がアニメーションするなら、これはシミュレーションで制御されるべきではありません。
Set Never
この値を設定/変更しません。それは最初のフレームでもそうです。
Use Default
このノードの Default Operation ドロップダウンメニューから設定を使います。これは一度にたくさんのパラメータの方針を設定/変更するのに役に立ちます。“デフォルト”は、“Set Initial”です。
計算順と同時計算について ¶
Houdiniは、計算するオブジェクトの順番をリレーションシップに基づいてシーンのオブジェクトを整理します。一方向のリレーションシップでは、影響を受けるオブジェクトよりも影響を与えるものが先に計算されます。双方向のリレーションシップが存在する箇所や、リレーションシップの階層グループがループを作成している箇所では、そのグループのすべてのリレーションシップは 同時に 計算されなければなりません。
同時計算は、実際には見せかけにすぎません。なぜなら、コンピュータは順番通りに処理をするものなので同時にイベントを処理することは実際にはできません。つまり、Houdiniは反復処理で細かい近似処理を行おうとします:
-
順番通りに力をオブジェクトに加えます(ネットワークで左から右、上から下)。
-
衝突を探します。
-
何か衝突していれば、衝突の力をオブジェクトに反映します。静的なオブジェクトに関しては、このフィードバックステップは最適化されています。
-
衝突がなくなるまで、または、 Max Feedback Loops に達するまで繰り返します。
シミュレーションを含んだDOP Networkの Max Feedback Loops パラメータは、Houdiniが実行する衝突フィードバックループの数を制限します。これによって、シミュレーションが高速化し、無限ループを防止することができます。
RBDシミュレーションを計算する一番良い順番は、先に重いオブジェクトを評価し、それから軽いオブジェクトを評価します。手動でノードを接続するとき、Merge DOPでは、重いオブジェクトを軽いオブジェクトの左側に接続するようにしてください。自動的にネットワークが作成される時は、Houdiniはパーティクル(パーティクルソルバで計算される)が軽いものだと決め込んでしまうので、他のオブジェクトは右側に接続されます。もし重いパーティクルをシミュレーションしていれば、接続の順番を変更した方がよいでしょう。
ユーティリティソルバ ¶
Houdiniにはユーティリティソルバがあり、これを使うとより高度なネットワークをセットアップすることができます。
-
Multiple Solver DOPは同じオブジェクトに対して複数のソルバを起動します。
-
Blend Solver DOPは複数のソルバを起動し、それらの効果を各オブジェクトのブレンド係数データでブレンドします。Blend Factor DOPを使ってブレンド係数データを各オブジェクトに接続します。
-
Switch Solver DOPはオブジェクトを各オブジェクトのswitchデータに基づいて別のソルバに切り替えます。Switch Value DOPを使ってswitchデータを各オブジェクトに接続します。
Switch Solver DOPはSwitch DOPと似ていますが、Switch DOPはデータ接続の切り替え(どのデータをどのオブジェクトに接続するのか)をするのに対して、Switch Solver DOPはSolverの切り替え(オブジェクトすべてに接続されたデータすべて)をします。
-
Script Solver DOPは、スクリプトを実行して、データを変更したり、ポジションを更新したりすることができます。いくつかのHScript、エクスプレッション、HOMクラスでは、スクリプトを書くことでダイナミクスシミュレーションを修正することができます。