パーティクル ディスク キャッシング

キャッシュ ファイルの格納先を指定する

Maya には、パーティクルのワークスペース ディレクトリがあります。既定では、particles という名前になっています。パーティクルのワークスペース ディレクトリは、その他すべてのワークスペース ディレクトリと同じようにプロジェクトエディタ(Project Editor)で指定できます。

Maya の前バージョンの古いワークスペースを使用している場合は、パーティクル ディスク キャッシュを初めて作成した際にパーティクル ディレクトリが作成されます。

ディスク キャッシュ ファイルは、パーティクル ディレクトリのサブディレクトリに格納されます。パーティクル レンダー キャッシュ オプション(Particle Render Cache Options)ウィンドウのキャッシュ ディレクトリ(Cache Directory)ボックスで名前を入力すると、使用するサブディレクトリ名を指定できます(パーティクル ディスク キャッシュ オプションを設定する参照)。新しいキャッシング オペレーションの前には、指定したサブディレクトリ内に存在するキャッシュ ファイルが自動的に削除されます。

フレーム範囲の定義

Maya が特定フレームのキャッシュ ファイルは保持していないが、評価している現在のフレームの前後のキャッシュ ファイルを保持している場合は、そのキャッシュ ファイル間が補間されます。フレームの差異が大きい場合は、フレームごとの解決結果ではなく、補間結果が表示されます。

単純なケースで特定フレームを評価する場合、一般的にはそのフレームのパーティクル キャッシュ ファイルだけが必要となります。しかし Maya は、その他のフレームのパーティクルの状態にアクセスし、エクスプレッション、リジッド ボディの移動、モーション ブラーなどを解決しなければならないことがあります。疑問がある場合は、すべてのフレームのキャッシングをお勧めします。たとえばフレーム 100 からレンダーを始める場合は、100 までのすべてのフレームもキャッシュしてください。

パーティクル ディスク キャッシュを作成する

パーティクル ディスク キャッシュを作成すると、シーンをどのように変更しても、キャッシュしたパーティクル データを使用しないように明確に指示するまでそのデータが使用されます。

たとえばシーンをキャッシュした後でパーティクル オブジェクトに重力フィールドを適用しても、キャッシュしたパーティクルの移動が使用されるので、重力フィールドのエフェクトは表示されません。重力フィールドのエフェクトを表示するには、パーティクル ディスク キャッシュの使用(Use Particle Disk Cache)をオフに切り替える必要があります(パーティクル ディスク キャッシュ設定を編集する参照)。

しかし、レンダー タイプをメタボールからストリークに変更するような、パーティクルごとのアトリビュートを変化させない変更を加えた場合は、パーティクル ディスク キャッシュの使用(Use Particle Disk Cache)をオフに切り替えなくても変更内容は表示されます。

ヒント: パーティクル ディスク キャッシュを作成する前に、パーティクル シェイプ名が他のパーティクル シェイプ名と同じものでないことを確認します。ディスク キャッシュ ファイルはパーティクル シェイプ名を使用するので、他のパーティクル シェイプに同じ名前が使用されていると正しい結果が得られません。

パーティクル ディスク キャッシュを作成する前に、シーンに名前をつけるこ とをお奨めします。名前をつけなかった場合、パーティクルは自動的に untitled というディレクトリに格納されます。

パーティクル ディスク キャッシュを作成するには

  1. ソルバ > パーティクル ディスク キャッシュの作成(Solvers > Create Particle Disk Cache)を選択します。

    Maya は、現在のタイム スライダ再生レンジを使用してシーンを 1 回再生し、キャッシュ ファイルを書き出します。この再生中にシーンは再描画されません。別のレンジをキャッシュするには、タイム スライダの現在のレンジを変更するか、レンダー設定範囲の使用(Use render settings range)をオンにします(レンダー設定範囲の使用(Use Render Settings Range)を参照してください)。

    Maya は、シーンを 1 回再生してキャッシュを作成する必要があります。再生中、待機していたくない場合は、Esc キーを押して再生に割り込むことはできますが、キャッシュは作成されません。

  2. キャッシュを作成したらシーンを保存し、パーティクル レンダー キャッシュ オプション(Particle Render Cache Options)ウィンドウで行った設定をシーンとともに保存します。保存しないと、キャッシュの検索が認識されないか、キャッシュが検索されないことがあります。

    上の方法でキャッシュを作成すると、シーン内のすべてのパーティクルのキャッシュが作成されます。一部のパーティクル オブジェクトをキャッシュし、その他をキャッシュしない場合は、単一パーティクル オブジェクトのキャッシングを参照してください。

    注:

    キャッシュの作成後にシーンを保存してください。保存しないと、バッチ レンダリング時にキャッシュが認識されません。

パーティクル ディスク キャッシュ オプションを設定する

キャッシュを作成する前には、以下のパーティクル ディスク キャッシュ オプションを設定できます。このオプションは、すべての後続キャッシング オペレーションに影響します。

パーティクル ディスク キャッシュ オプションを設定するには

  1. ソルバ > パーティクル ディスク キャッシュの作成(Solvers > Create Particle Disk Cache) > を選択します。
  2. 次のオプションを設定します。

パーティクル ディスク キャッシュ設定を編集する

パーティクル ディスク キャッシュ設定を編集するには

  1. ソルバ > オーバー サンプリングまたはキャッシュ設定の編集(Solvers > Edit Oversampling or Cache Settings)を選択します。

    dynGlobals ノードのアトリビュート エディタ(Attribute Editor)が表示されます。

  2. パーティクル ディスク キャッシュ(Particle Disk Cache)セクションで設定を行います。詳細については、パーティクル ディスク キャッシュ(Particle Disk Cache)を参照してください。
    注:

    この値を編集したら、シーンを保存してください。保存しないと、バッチ レンダリング時に編集内容が認識されません。

さまざまなキャッシュを再生する

パーティクル ディスク キャッシングを使用し、同じシーンのさまざまなキャッシュを作成できます。このため、シーンのバリエーションを作成して高速に再生できます。

さまざまなキャッシュの作成と再生を行うには

  1. シーンを作成して名前を付けます。
  2. ソルバ > パーティクル ディスク キャッシュの作成(Solvers > Create Particle Disk Cache) > を選択します。
  3. キャッシュ ディレクトリ(Cache Directory)にシーン名を入力するか、既定のシーン名を残します。
  4. 作成(Create)をクリックし、キャッシュを作成します。
  5. パーティクルを変更します。
  6. ソルバ > パーティクル ディスク キャッシュの作成(Solvers > Create Particle Disk Cache) > を選択します。
  7. キャッシュ ディレクトリ(Cache Directory)に新しい名前を入力し、作成(Create)をクリックします。
  8. このプロセスを繰り返し、必要な数のキャッシュを作成します。
  9. 再生用キャッシュを選択するには、ソルバ > オーバー サンプリングまたはキャッシュ設定の編集(Solvers > Edit Oversampling or Cache Settings)を選択し、キャッシュ ディレクトリ(Cache Directory)ボックス内にキャッシュ名を入力します。
  10. Play (再生)ボタンを押し、指定したキャッシュのシーンの再生を確認します。

キャッシュの再作成

キャッシュを作成すると、使用しないように指示するまでそのキャッシュが使用されます。そのパーティクル オブジェクトでは、エミッションやフォースなどの変更は無視されます。

シーン変更の変更をすることによりパーティクル単位のアトリビュートが変更される場合、正しいレンダリング結果を得るためにキャッシュを再作成しなければなりません。パーティクル ディスク キャッシュの作成(Create Particle Disk Cache)を選択した場合に限り、ディスク キャッシュが書き出されます。このメニュー項目は「キャッシュ状態」をオンにしません。これはメモリ キャッシングとディスク キャッシングの大きな違いです。ディスク キャッシュの更新や再作成は自動的に実行されません。

キャッシュを再作成するには

  1. ソルバ > パーティクル ディスク キャッシュの作成(Solvers > Create Particle Disk Cache)を選択します。

パーティクルごとのアトリビュートが変化しない変更を行った場合、キャッシュを再作成する必要はありません。たとえば、パーティクル シェイプのレンダー タイプをブロビーからクラウドに変更し、ファイルを保存してレンダーしなおしたとします。または、キーフレームの colorRed/colorBlue/colorGreen アトリビュートを変更したとします。どちらの例でも、パーティクルに関連したアトリビュートは変更されていないので、キャッシュを再作成する必要はありません。

しかし、colorRed などのアトリビュートがパーティクルごとのアトリビュートに間接的に影響することがあるので注意してください。前の例では、レンダー タイプや colorRed を入力として使用する、パーティクルごとのエクスプレッションが一部のパーティクル オブジェクトにある場合、そのエクスプレッションの結果が影響されるので、キャッシュを再作成する必要があります。

パーティクル ディスク キャッシュ ファイル

各フレームの各 particleShape には複数のキャッシュ ファイルが保存されます。オーバーサンプリングがオンに設定されると、オーバーサンプリングのレートに応じて、フレーム内で異なる時期に複数のディスク キャッシュが保存されます。これらのバイナリ ファイルには .pdc という拡張子が付きますが、これはパーティクル データ キャッシュの意味です。このファイルは、dynExport コマンドで書き込まれます。

.pdc ファイルを読み込むことはできません。読み込みができるパーティクル データ ファイルを出力する場合、dynExport コマンドのオンライン ドキュメントを参照して .pda ファイルと .pdb ファイルの出力についての詳細を確認してください。独自のリーダーの作成については、付録 PDC ファイル フォーマットを使用するを参照してください。

キャッシュ ファイルの削除

Maya 内からキャッシュ ファイルやディレクトリを削除する方法はありません。オペレーティング システムを使用して削除してください。

キャッシングのヒント

ランプ

パーティクルごとのレンダリング アトリビュートをランプでアニメートしており、ランプを変更した場合は、キャッシュを有効にしても再生で変更内容を確認できます。これは、pointSize などのハードウェア表示/レンダリング アトリビュートにも当てはまります。混乱を避けるには、パーティクル ディスク キャッシュの使用(Use Particle Disk Cache)アトリビュートをオフに切り替えてからシーンを変更し、レンダーの前にキャッシュを再作成します。

エクスプレッションでアトリビュートをアニメートしている場合、または ランプ位置、ランプ速度、ランプ加速度をランプでアニメートしている場合、このエクスプレッションやランプを変更しても、キャッシュが有効である限り、変更内容は再生で可視となりません。パーティクル ディスク キャッシュの使用(Use Particle Disk Cache)をオフに切り替えてください。

リジッド ボディでのパーティクル衝突

パーティクル衝突で動くリジッド ボディがあり、パーティクルをディスク キャッシュした場合、リジッド ボディは正しく評価されなくなります。実際には、キャッシングするとリジッド ボディを評価するダイナミック プロパティが取り除かれるので、衝突が検出されなくなります。このようなシーンをキャッシュするには、最初にリジッド ボディをベイクし(下のリジッド ボディのベイク参照)、次にパーティクルをディスク キャッシュします。同じ制限事項と解決方法は、メモリ キャッシングにも当てはまります。

リジッド ボディのベイク

パーティクル ディスク キャッシュは、常にパーティクルのみに適用されます。リジッド ボディには適用されません。ほとんどの場合、リジッド ボディの位置はランナップせずに計算できます。この領域で問題が発生したら、bakeResults コマンドを使用し、リジッド ボディをベイクして問題を解決してください。

たとえばフレーム 1 から 100 の rigidBody1 をベイクするには、以下を実行します。

bakeResults -t "1:100" -simulation true rigidBody1;

bakeResults コマンドを使用して、パーティクルの移動をベイクすることはできません。このコマンドは、移動 X/Y/Z などのアニメーション チャネルをベイクし、パーティクルの位置はベイクしません。

ベイクを解除したリジッド ボディがランナップの原因になっても、パーティクルをキャッシュすると、パーティクルは再計算されずにディスク キャッシュからロードされるので、ランナップは速く済みます。

シーケンスを 2 つの部分にキャッシング

シーケンスの 2 つの部分を別々にキャッシュしなければならないことがあります。たとえば、フレーム 1 から 45 までをある場所に、フレーム 46 から 90 までを別の場所にキャッシュする場合は、2 つのキャッシュを「並べて」45 と 46 を連続させる必要があります。

最初にキャッシュした際のアニメーションとダイナミクスが、次にキャッシュした際のものと一致することを確認してください。追加や変更を行わなかったこと、または変更が行われなかったことを確認してください。

特に、MEL 関数 rand() を使用するエクスプレッションがある場合は、エクスプレッションが再び適切にシードされていることを確認する必要があります(ランダム度を生成するランダム度を生成する(『MEL とエクスプレッション』マニュアル)を参照)。

単一パーティクル オブジェクトのキャッシング

ソルバ > パーティクル ディスク キャッシュの作成(Solvers > Create Particle Disk Cache)を使用すると、シーン内のすべてのパーティクル オブジェクトがキャッシュされます。指定したオブジェクトのキャッシュは、コマンド ラインで dynExport コマンドを使用して実行できます(dynExport コマンドについては、オンライン コマンド リファレンスを参照してください)。

オペレーティング システムを使用して、キャッシュから読み込まないすべてのオブジェクトのキャッシュ ファイルを削除しても同じ結果になります。

特定アトリビュートのみのキャッシング

既定ではすべてのアトリビュートがキャッシュされます。しかし dynExport コマンドを使用すると、特定アトリビュートだけをキャッシュすることができます(dynExport コマンドについては、オンライン コマンド リファレンスを参照してください)。