【Houdini16.5基礎編】14.ダイナミックシミュレーション


 今回の記事はHoudiniのダイナミックシミュレーションに関するするツールについての紹介になります。

 Bullet Rigid Bodyによる破壊、Pyro FXによる炎、煙、またはFLIP流体のOceanや流体などを、Houdiniは統合されたダイナミクス環境で作成することができます。

 より直接的な結果を取得するために異なるソルバー同士でも、互いを連携させることができます。

 

シェルフツール

 ダイナミックシミュレーションを設定するには、ジオメトリまたはSOPコンテキストのノードのほかに、ダイナミックまたはDOPコンテキスト内のノードのネットワークが必要です。 シェルフツールを使うことで、必要なノードをすべて自動で追加し、シミュレーションを設定するのに必要な工程を減らすことができます。 その後、すべてのノードを調整するためにネットワークに入ることができます。

 シェルフツールはノードのグループを自動的に設定するのに最適です。 この先DOPネットワークを全てご自身で設定されることもあるでしょうし、これらのシェルフで構築されたネットワークがどのように組み合わされているかを知ることは、多くの学びに繋がります。

 

ダイナミックソルバー

 どのシミュレーションの中心にもダイナミックソルバーと呼ばれる種類のノードがあります。 これはシミュレーションの中枢であり、動的オブジェクト、力、衝突オブジェクトのすべてを取り込み、それらを統合して最終的な結果を出力します。 シェルフツールではこれらのソルバーをダイナミックネットワークに入れ、ノードを結び付けます。

Rigid Body Solver – 効率的な Bullet solverまたはHoudiniのビルトインソルバーを使用して、剛体の落下や衝突をシミュレートします。

Static Solver – オブジェクトを衝突ジオメトリとして動作させ、シミュレーションの影響を受けない物体を作成する際に使用します。

Flip Solver- このソルバは、波の飛沫とその他流体効果を作成するためのFLIP流体シミュレーションを作成します。

Whitewater Solver – Flip Solverを完成させた後、このソルバーを実行して、フォーム、スプレー、バブルを作成することができます。

POP Solver – パーティクルとグレインに使用されるこのソルバーは、さまざまなパーティクルベースのシミュレーションをします。グレインシミュレーションは、柔らかいボディと布のようなシミュレーションにも使用できます。

Wire Solver – このソルバーは、ヘアやファー、または船のリギングや樹木の枝などの様々なワイヤーオブジェクトに使用できます。

Finite Element Solver – 四面体によって決定される連続的な物質または固体の物理学をシミュレートします。このソルバは、筋肉、柔らかい体、木の破壊などの破壊ショットに使用されます。

Cloth Solver-キャラクターなどの変形ジオメトリに衝突する布シミュレーションを作成します。

Crowd Solver-ターゲット、パスの障害物、足の配置を操作しながら、ルールに基づいて群衆エージェントをアニメートするロジックを作成、利用します。

SOP Solver – SOPネットワークを使用して、壁がオブジェクトに当たって窪むなど、時間の経過と共にオブジェクトの形状を進展させます。

 

OPENCL

 POP Grainノード、Pyro Solver(Advancedタブ)、FLIP Solver(Volume Moti on> Solverタブ)などのソルバーでOpenCLを使用すると、GPUを使用してより高速なシミュレーションを行うことができます。

 

力(フォース)

 ダイナミックモーションを作成するには、「ボールを回転させる」ための力が必要です。最も基本的な力は重力ですが、ファン、流体、磁石などの他の外力もシミュレーションすることができます。

Gravity Force – 重力を発生させます。

Drag Force – オブジェクトの既存のモーションと反対方向に力とトルクを適用して、モーションを減速または減衰させます。

Uniform Force-乱気流を追加するためにノイズDOPによって増加させる力及びトルクです。

Fan Force-オブジェクトに円錐形の力を適用します。

Fluid Force – 布やワイヤーなどの柔らかい物体を変形させます。

Wind Force – 物体の速度をその物体自体の速度以上に上げるか、その速度を超えないようにするための斥力を発生させます。

Magnet Force-物体を引き付ける力、またははね返す力です。力場を表すためにメタボールを使用します。

Vortex Force – 渦のような力を生成します。適用されたオブジェクトには竜巻に巻き込まれたようなカーブ上を回るような力が加わります。

ダイナミックオブジェクト

 オブジェクトを選択し、シェルフツールを使用してシミュレーションに追加すると、Houdiniはそのオブジェクトのジオメトリを使用するダイナミックオブジェクトを作成します。また、密度、摩擦、弾性などのダイナミックプロパティが追加されます。

 

 

アクティブ VS スタティック

 アクティブなダイナミックオブジェクトは、スタティックオブジェクトが存在しない場合は、力と衝突の影響を受けます。 アニメーションまたはデフォームジオメトリを使用する場合は、ダイナミックオブジェクトでInitial Object Typeメニューを設定、またはDeforming Geometryチェックボックスにチェックする必要があります。

衝突(コリジョン)

 コリジョンオブジェクトは、シミュレーションにとって非常に重要な部分でもあります。 グラウンドプレーンを設定して、衝突の連続したサーフェスを作成したりスタティックオブジェクトまたはデフォームオブジェクトを使用することができます。

 各ダイナミックオブジェクトには、コリジョンボリュームを表示および最適化するための設定もあります。 場合によっては正確な衝突シミュレーションが求められていることもありますが、正確なシミュレーションには莫大な時間を必要とするので、シミュレーションにかかる時間とのバランスを取る必要があります。

リジッドボディコンストレイン

 リジッドボディシェルフには、シミュレーションに影響を与える、ピン、スプリング、スライダなどのコンストレインがあります。 また、グルーオブジェクトを使用すると、剛体シミュレーションを設定して、接着をゆるめたり、衝突が発生するまでオブジェクトをまとめて保持することができます。

タイムラインフィードバック

 シミュレーションを開始するには、タイムラインでPlayを押します。 シミュレーションが進むにつれて、タイムラインがハイライトされ、シミュレーション結果がメモリにどれだけキャッシュされているかが示されます。 メモリに保存された部分については再シミュレートすることなくタイムスライダを動かして確認することができます。

ディスクへのキャッシュ

 シミュレーションを完了したら、DOP内からシミュレーションファイルを保存するか、シミュレートされたジオメトリをbgeoシーケンスに書き出してロックすることができます。 これにより、ライトまたはレンダリングの段階でシミュレーションの結果を扱うことが容易になります。

ゲームにおけるリアルタイムFX

 ゲームにおいては、ゲームエンジンでリアルタイムに最適化するために、爆発などのエフェクトが必要です。 リジッドボディ、Pyro FX、Fluidsなどの様々な種類のHoudiniシミュレーションをゲームに適した形式に変換する方法については、SideFX社のゲームデべロッパーツールのページをご覧ください。

 

AUTODOPNETWORK

シェルフツールを使用してダイナミックオブジェクト、コリジョンオブジェクトまたはコンストレインを作成するたびに、AutoDopNetworkが作成され、すべてのパーツが結合されます。

Static Objects – 地面と静的衝突オブジェクトのプロパティを設定します。

Static Solver – このソルバは、ダイナミックオブジェクトがスタティックオブジェクトとやりとりする間、入力オブジェクトを保持します。

Merge Node – ダイナミックシステムの一部をまとめています。 シミュレーション中に、接続されたノードがチェーンの上下で評価され、すべてが相互作用します。

Dynamic Objects – このノードは、ジオメトリをDOP環境に持ち込み、基本的なプロパティを割り当てます。

Rigid Body Solver – 関係するオブジェクトのシミュレーションを生成するソルバーです。

Forces – 重力や風などの力を利用してダイナミックオブジェクトに影響を与えるノードです。

Output node – シミュレーションをキャッシュアウトする場合は、このノードを使用してシミュレーションファイルを出力できます。