Houdini 20.0 ダイナミクス

シミュレーションのキャッシュ化

On this page

概要

Houdiniは、クィック再生できるようにシミュレーション情報をメモリ内にキャッシュ化します。 新しいキャッシュフレームのメモリ容量が足りなくなると、Houdiniは古いキャッシュフレームを破棄するので、その場合にはシミュレーション全体を再生することができません。 シミュレーションをコンピュータのメモリにキャッシュ化しなくても、シミュレーションをディスクに保存することができます。 Houdiniには、シミュレーションデータをキャッシュ化するためのメソッドとノードがいくつか用意されており、DOPネットワークとSOPネットワークで区別する必要があります。

SOPのキャッシュ化

ほとんどのシミュレーションは、DOPネットワークの代わりにSOPジオメトリノード内でも実行することができます。 このDOPからSOPへの移行の過程で、新たなキャッシュテクニックが導入されました。 最も汎用性の高い方法は、File Cache SOPを使用することです。 このノードは、どんなシミュレーションタイプからもデータを保存して読み込むことができます。 つまりは、Geometry Render OUTノードとFile SOPノードの機能を組み合わせたものです。 リジッドボディダイナミクスやVellumなどの特定のタイプに関しては、RBD I/O SOPのような特別なI/O系ノードを使用することができます。 このI/O系ノードは基本的にはFile Cach SOPですが、さらに、拘束、プロキシジオメトリ、コリジオンジオメトリ用の入力が用意されています。 そのため、データストリーム毎に最大4個のFile Cache SOPを使用することなく、1個のI/Oノードの追加で済ませることができます。

動作モードは、どのキャッシュ系ノードでほぼ同じですが、通常I/O系ノードには、 Storage Type などのソルバ固有のオプションがいくつか用意されています。

Note

これまでDOPネットワークを使用してきたユーザは、おそらく Cache Memory (MB)Checkpoints を探すことでしょう。 どちらのパラメータもソルバノード上の Setup タブと Advanced タブで見つけることができます。 Allow Caching To Disk オプションは、SOPシミュレーションでは利用不可です。

明示的なSOPのディスクキャッシュ化

File Cache SOPは、出力ファイルの保存先となるファイルパスを組み立てることができます。 シミュレーションをキャッシュ化する前に、プロジェクトを⌃ Ctrl + Sで保存してください。 デフォルトでは、そのファイルパスは、 Base Name 入力フィールドと Base Folder 入力フィールドの一連の変数から構築されます。

トークン 意味
$HIPNAME プロジェクトのファイル名。
$OS File Cache SOPの実際の名前(デフォルトではfilecache1)を意味します。
$HIP プロジェクトの.hipファイルのパスを意味します。
geo キャッシュファイル用のデフォルトのフォルダ。このディレクトリが存在しなかった場合、そのディレクトリが作成されます。geoを他のフォルダ名に置換しても構いません。

拡張子を選択することもできます。ジオメトリには、 bgeo.sc 、ボクセルデータには vdb を推奨します。 ファイルを別の場所に保存したいのであれば、 Open floating file chooser アイコンをクリックします。

このノードの Caching タブの Sequence セクションでは、 Start フレームと End フレームを調整することができます。 デフォルトでは、どちらのフィールドも緑色で、エクスプレッションで駆動されることを示しています。 これらのエクスプレッションは、プロジェクトの開始フレームと終了フレームを読み込みます。 独自に範囲を設定したいのであれば、 Start/End/Inc を右クリックして Delete Channels を選択します。これで独自の値を入力することができます。

シミュレーションをキャッシュ化する準備が整ったら、 Save to Disk または Save to Disk in Background を押します。 Save to Disk in Background の場合、必ずプロジェクトを保存する必要があります。 このボタンは、もう1つHoudiniインスタンスを開いて、レンダーマネージャを介してファイルをキャッシュ化します。 Houdiniの応答性が担保され、既にキャッシュ化されたファイルを読み込んでそれらのファイルを評価することができます。 しかし、 Save to Disk の方が高速です。

保存済みのファイルを再生する

Load From Disk オプションは便宜的に自動的に有効になります。 この挙動を変更したいのであれば、 Advanced タブの Save セクションにある Enable Load from Disk on Save を無効にします。

Caching タブの Load セクションは、読み込まれる内容( All Geometry , Point Cloud , Packed Geometry など)を選択することができるので、特に興味を持たれることでしょう。 重いシーンを扱う場合、読み込み時間を短くするために Delay Load Geometry も有効にすることを検討してください。

保存済みのファイルを再生するには、タイムライン内の Play ボタンを押します。

タイムラインのカラー

シミュレーションを取り扱う時、タイムライン(Houdiniメインウィンドウの下部)は、バックグラウンドカラーを使用して、フレーム毎のキャッシュ状態を示します。

Blue

メモリ内にキャッシュ化されています。

Orange

メモリ内にキャッシュ化されていますが、最新ではありません(パラメータを変更すると、そのキャッシュはもはや無効になります)。

DOPのキャッシュ化

DOP Network OBJCache Memory (MB) パラメータは、シミュレーションフレームのキャッシュ化に使用されるメモリ量を制御します。 RAMが不足した場合、または、RAM使用量を空けるためにシミュレーションデータを抑えたい場合は、 Cache タブを開きます。

Allow Caching To Disk を有効にすると、Houdiniはキャッシュを.simファイルとして一時ディレクトリに書き出します。 ただし、シミュレーションがその割り当てられたRAM量を超えた時のみです。 ディスク上のフレームをタイムラインで前後に動かすと、メモリ内のフレームよりも遅いですが、これによって巨大なシミュレーションをまるごとキャッシュ化することができます。 これらのファイルの保存処理は、 Cache タブのパラメータで制御することができます。

ディスクのキャッシュ化は、 Cache to Disk in Non-Interactive Sessions が有効でない限り、バックグラウンドでシミュレーションする時は無効になります。

明示的にシミュレーションファイルをディスクに保存したい時もあります:

  • オブジェクト(例えば、リジッドボディ)の動きのみを1度シミュレーションする必要がある時、その保存された動きを使用して、ジオメトリを駆動させることができます。

  • シミュレーションを“ロック”して、それをディスクから再生のみしたい時、パラメータを変えた時にシミュレーションが再計算されるのを回避します。

Output DOPノードまたはDynamics OUTレンダーノードのコントロールを使用してシミュレーションファイルを書き出すことができます。 DOP Network OBJのコントロールを使用すれば、キャッシュ化したファイルからシミュレーションを再生できるようにネットワークをセットアップすることができます。

明示的なDOPのディスクのキャッシュ化

デフォルトでは、 Allow Caching To Disk が有効な時、Houdiniはディスク上のキャッシュファイルを一時ディレクトリに保存します。 そのキャッシュフレームが無効になると、Houdiniは自動的にそれをディスクから削除します。

Save Checkpoints を有効にすることで、ディスク上のキャッシュファイルを、キャッシュ化する頻度とフレーム数を明示的に制御して、指定した場所に保存することができます。 そのファイルは 無効になっても削除されません 。とはいえ、チェックポイントは、レンダーファーム上で巨大なシミュレーションを走らせるのに役立ちます。 もしレンダーが何かしらの理由でフレーム50で失敗したとすると、Houdiniは、フレーム1からシミュレーションをやり直すことなく、その前のチェックポイント(例えば、フレーム45)からシミュレーションを再開することができます。

  1. DOP Network OBJを選択します。

  2. パラメータエディタで、 Cache タブをクリックして、 Save Checkpoints を有効にします。

  3. Checkpoint Files パラメータをチェックします。これは、simファイルの書き出し場所と.simファイルのファイル名パターンを制御します。そのファイル名パターンには$F(グローバルフレーム番号)ではなく$SF(内部シミュレーションフレームステップ番号)を使用しなければなりません。

  4. Checkpoint Trail Length パラメータで、Houdiniが一度に保存するチェックポイントの数を設定します。これより多いチェックポイントが存在すれば、Houdiniは、一番古いチェックポイントを自動的に削除します。これは、巨大なシミュレーションがチェックポイントでディスクを埋め尽くさないように回避するのに必要です。

  5. Checkpoint Interval パラメータで、Houdiniがチェックポイントファイルを保存する頻度を設定します。例えば、これを5に設定すれば、5フレーム毎に保存されます。

simファイルのベイク

DOP Network OBJ内のシミュレーションネットワークの最後にあるOutput DOPには、シミュレーションファイルを書き出すためのコントロールがあります。 それらのファイルはキャッシュとは関係ありません。Houdiniの実行中に.simファイルを保持することができ、それをコンピュータ間で移動させることができます。

  1. ネットワークエディタobj レベルで、DOP Networkノードをダブルクリックして、その中に入ります。そこで、Outputノードを選択します。

  2. パラメータエディタで、シミュレーションする StartEnd のフレームを設定します。デフォルトでは、これらのパラメータはプロジェクトの開始フレームと終了フレームが自動的に使用されるようにエクスプレッションで制御されています。これらの値を変更したい場合は、 Start/End/Inc パラメータを右クリックして、メニューから Delete Channels を選択します。

  3. Output File パラメータをチェックします。これは、simファイルの書き出し場所と.simファイルのファイル名パターンを制御します。

    .sim.gz (GZIP)または.sim.sc (Blosc)の拡張子を使用することで、Houdiniにそのファイルを圧縮させることができます。これは遅いですが、ディスク容量を節約することができます。

  4. Save to Disk または Save to Disk in Background のどちらかをクリックします。

    Save to Disk in Background は、新しいHoudiniのコピーをバックグラウンドで立ち上げてシミュレーションを実行します。このオプションを使用する前に.hipファイルを保存しなければなりません。レンダーマネージャーを使用して、そのバックグラウンドのタスクを監視することができます。

Dynamicsレンダーノードを使用してsimファイルを書き出すこともできます。このレンダーノードは、レンダリング依存関係パスの一部としてシミュレーションデータを生成する必要がある時に役立ちます。さらに、このレンダードライバはシミュレーション自体の一部ではないので、そのパラメータを変更しても、シミュレーションが再クックされません。

保存したsimファイルから再生

シミュレーションファイルをベイクしてしまえば、 決してクックせず にシミュレーションファイルの内容だけを再生するDOPネットワークをセットアップすることができます。

  1. DOP Network OBJを選択します。

  2. パラメータエディタで、 Playback Simulation を有効にして、そのファイル名パターンに、使用する.simファイルを設定します。

    手動で2つのパラメータの同期を維持する必要がないように、これをノードのファイル名パラメータのチャンネル参照にして、ファイルを保存したいことがあります。 OutputノードのOutput Fileパラメータを右クリックして、 Copy Parameter を選択します。そして、DOP Networkノードで、Playback Simulationフィールドを右クリックして、 Paste Copied Relative Reference を選択します。

タイムラインのカラー

シミュレーションを取り扱う時、タイムライン(Houdiniメインウィンドウの下部)は、バックグラウンドカラーを使用して、フレーム毎のキャッシュ状態を示します。

Blue

メモリ内にキャッシュ化されています。

Purple

simファイルにキャッシュ化されています。

Orange

メモリ内にキャッシュ化されていますが、最新ではありません(パラメータを変更すると、そのキャッシュはもはや無効になります)。

ダイナミクス

ダイナミクスの学習

衝突オブジェクト

シミュレーションタイプ

次のステップ