On this page

概要

このページでは以下の事を記述しています。

  • 情報を シミュレーションに取り込む 方法。例えば、ジオメトリネットワークからジオメトリを取り込んでRBDオブジェクトとして使う方法。

  • シミュレーション情報を キャッシュ化 してシミュレーションが再計算されてしまうのを防ぐ方法。

  • 情報を シミュレーションから取り出す 方法。例えば煙シミュレーションからボリュームデータをジオメトリネットワークに持っていき、シェーディングやレンダリングができるようになります。

ダイナミクスシェルフツールに関するメモ

シェルフツールを使って既存ジオメトリコンテナオブジェクトからシミュレーションオブジェクトを作成すると、Houdiniはジオメトリコンテナからダイナミクスノード(例えばRBDオブジェクト)へオブジェクトを取り込むのための設定をします。これによって、ジオメトリコンテナ内に作られたDOP Importサーフェスノードがダイナミクスオブジェクトのトランスフォームを取り込んで、ジオメトリに反映されます。

つまり、RBDのケースでは、ジオメトリコンテナにシミュレーションするジオメトリを用意しておけば、シミュレーションがそのジオメトリをトランスフォームします。

このことから、ジオメトリオブジェクトをセットアップすればすぐにシミュレーションオブジェクトが作られるので、情報のインポート、エクスポートを考えないでシミュレーションができます。

このページで記述していることは、必要に応じて手動で情報のインポート、エクスポートをする方法です。

ジオメトリをシミュレーションにインポート

以下のノードは、ジオメトリネットワークのノードからジオメトリを取り込み、それをGeometryデータとしてダイナミクスオブジェクトに接続します。

インポートするもの

使うノード

ジオメトリ

SOP Geometry

Scalarフィールド(ボリュームプリミティブから)

SOP Scalar Field

Vectorフィールド(ボリュームプリミティブから)

SOP Vector Field

オブジェクトの位置と速度

Object Position

パーティクルのインポート

Particle Fluid Solverを参照してください。

シミュレーションをディスクにキャッシュ化/アーカイブ化

caching simulationsを参照してください。

シミュレーションデータを他のネットワークにエクスポート

データ参照構文

以下の構文を使って色々なインポートノードでダイナミクスデータを参照することができます:

ネットワークパス[:名前[/データ名]]

名前には、オブジェクト名、オブジェクトID、グループ名、ワイルドカードを使うことができます。

例えば、

Network

Object

Data name

/obj/AutoDopNetwork

object1

Geometry

DOP Networkをインポートノードとして設定していれば、各オブジェクトのジオメトリがシミュレーションにインポートされます。オブジェクト名やID(brick*のようなオブジェクト名ワイルドカード)を指定すれば、そのオブジェクトのGeometryデータをインポートし、データ名を指定すれば、そのデータをインポートします。

Tip

シミュレーションから任意のタイプのジオメトリデータを引き出すことができます。これには、最後にシミュレーションしたジオメトリではなく、衝突フィールド、ガイドジオメトリを含んでいます。Geometry Spreadsheet Viewで指定したオブジェクトには何のデータが利用されているのか確認できます。

ジオメトリとトランスフォーム

To...Do this

シミュレーションからジオメトリをジオメトリネットワークにインポートする

  • ジオメトリネットワークのObject Mergeサーフェスノードを使えば、シミュレーションからGeometryデータを引き出すことができます。

  • DOP Importサーフェスノードもシミュレーションからジオメトリをインポートすることができます。

    DOP Importには、ワールド変換をやり直すオプションがあります。これは、オブジェクトをワールド空間ではなくローカル空間で作業できるようになります。また、その逆でローカル空間からワールド空間にジオメトリを移動することもできます。

シミュレーションからのPositionデータをオブジェクトのトランスフォームとして使用する

FetchオブジェクトはダイナミクスオブジェクトのPositionデータからトランスフォームを取得するジオメトリコンテナです。

シミュレーションからのPositionデータをジオメトリのトランスフォームとして使用する

DOP Importサーフェスノードは、ダイナミクスオブジェクトのトランスフォームを表現したポイントを作成することができます。 Transform Piecesを使用することで、そのトランスフォームを入力ジオメトリに適用することができます。

流体フィールド

Object MergeまたはDOP Importサーフェスノードを使ってシェーディングがレンダリング用に流体オブジェクトからScalarまたはVectorフィールドデータ(ボリュームプリミティブとして)、ジオメトリをインポートすることができます。

ダイナミクスFluid Objectには、取り込むと便利なデータがあります。それは、surfacevisualizationフィールド、さらにVelocity(vel)のようなフィールドです。Geometry Spreadsheet Viewを使えば、流体オブジェクトに何のデータが利用できるのか確認することができます。

例えば、

  • Surface符号付き距離フィールド: /obj/AutoDopNetwork:fluid/surface

  • Visualizationジオメトリフィールド: /obj/AutoDopNetwork:fluid/surface/Visualization

  • Velocityベクトルフィールド: /obj/AutoDopNetwork:fluid/vel

サーフェスを抽出するのにvisualizationフィールドは実サーフェスフィールドよりも便利です。というのも、それ自身サーフェスにする必要がないからです(以下参照)。しかし流体オブジェクトの Guides タブで最初に境界ボックスをオフにしてください。

フィールドの反転と操作

流体オブジェクトからsurfaceデータをインポートして取得した符号付き距離フィールドは、ボリュームプリミティブが期待するものと逆になっています。そのため、流体をボリュームプリミティブにインポートすると“fluid”と“absence”の領域は反転します。

Volume Mixサーフェスノードを追加してフィールドを反転することができます。Mix Methodノードで、 Mix Method パラメータを User に、 Value パラメータを-$V($Vはポイントの現在の値。つまり、-$Vは値を反転します)に設定します。

ボリュームのサーフェス化

Iso Surfaceノードを使うと、流体オブジェクトの符号付き距離ボリューム内の流体境界に沿ってサーフェスを作成します。Iso Surfaceノードを追加して Implicit Function パラメータに$Vを設定します。

ジオメトリの表示とレンダリング

サーフェスノードのように、ダイナミクスオブジェクトは、 表示する ジオメトリと レンダリングする ジオメトリを分けることができます。ダイナミクスでは、別々の2つのジオメトリデータを表示用/レンダリング用のオブジェクトに接続、そしてレンダリングするサブデータを各ジオメトリに接続することで可能です。

Rendering Parametersノードを使えば、サブデータを表示/レンダリング/両方に使うジオメトリデータに接続することができます。サブデータを接続するには、Rendering ParametersノードをApply Dataノードと一緒にオブジェクトに接続し、そして、Rendering Parametersの Data Name パラメータをサブデータが接続されるジオメトリ下のパス(例:Geometry/RenderParms)に設定します。

一度サブデータを接続してしまえば、Rendering Parametersノードの DisplayRender パラメータを使って、どのジオメトリデータをビューアに表示するのかレンダリングするのか制御することができます。

(Rendering Parametersノードはテストレンダリング用にマテリアルを接続することもできます。)

ダイナミクス

ダイナミクスの学習

衝突オブジェクト

シミュレーションタイプ

次のステップ