Maya には、パーティクルのワークスペース ディレクトリがあります。既定では、particles という名前になっています。パーティクルのワークスペース ディレクトリは、その他すべてのワークスペース ディレクトリと同じようにプロジェクトエディタ(Project Editor)で指定できます。
Maya の前バージョンの古いワークスペースを使用している場合は、パーティクル ディスク キャッシュを初めて作成した際にパーティクル ディレクトリが作成されます。
ディスク キャッシュ ファイルは、パーティクル ディレクトリのサブディレクトリに格納されます。パーティクル レンダー キャッシュ オプション(Particle Render Cache Options)ウィンドウのキャッシュ ディレクトリ(Cache Directory)ボックスで名前を入力すると、使用するサブディレクトリ名を指定できます(パーティクル ディスク キャッシュ オプションを設定する参照)。新しいキャッシング オペレーションの前には、指定したサブディレクトリ内に存在するキャッシュ ファイルが自動的に削除されます。
Maya が特定フレームのキャッシュ ファイルは保持していないが、評価している現在のフレームの前後のキャッシュ ファイルを保持している場合は、そのキャッシュ ファイル間が補間されます。フレームの差異が大きい場合は、フレームごとの解決結果ではなく、補間結果が表示されます。
単純なケースで特定フレームを評価する場合、一般的にはそのフレームのパーティクル キャッシュ ファイルだけが必要となります。しかし Maya は、その他のフレームのパーティクルの状態にアクセスし、エクスプレッション、リジッド ボディの移動、モーション ブラーなどを解決しなければならないことがあります。疑問がある場合は、すべてのフレームのキャッシングをお勧めします。たとえばフレーム 100 からレンダーを始める場合は、100 までのすべてのフレームもキャッシュしてください。
パーティクル ディスク キャッシュを作成すると、シーンをどのように変更しても、キャッシュしたパーティクル データを使用しないように明確に指示するまでそのデータが使用されます。
たとえばシーンをキャッシュした後でパーティクル オブジェクトに重力フィールドを適用しても、キャッシュしたパーティクルの移動が使用されるので、重力フィールドのエフェクトは表示されません。重力フィールドのエフェクトを表示するには、パーティクル ディスク キャッシュの使用(Use Particle Disk Cache)をオフに切り替える必要があります(パーティクル ディスク キャッシュ設定を編集する参照)。
しかし、レンダー タイプをメタボールからストリークに変更するような、パーティクルごとのアトリビュートを変化させない変更を加えた場合は、パーティクル ディスク キャッシュの使用(Use Particle Disk Cache)をオフに切り替えなくても変更内容は表示されます。
Maya は、現在のタイム スライダ再生レンジを使用してシーンを 1 回再生し、キャッシュ ファイルを書き出します。この再生中にシーンは再描画されません。別のレンジをキャッシュするには、タイム スライダの現在のレンジを変更するか、レンダー設定範囲の使用(Use render settings range)をオンにします(レンダー設定範囲の使用(Use Render Settings Range)を参照してください)。
Maya は、シーンを 1 回再生してキャッシュを作成する必要があります。再生中、待機していたくない場合は、Esc キーを押して再生に割り込むことはできますが、キャッシュは作成されません。
上の方法でキャッシュを作成すると、シーン内のすべてのパーティクルのキャッシュが作成されます。一部のパーティクル オブジェクトをキャッシュし、その他をキャッシュしない場合は、単一パーティクル オブジェクトのキャッシングを参照してください。
キャッシュを作成する前には、以下のパーティクル ディスク キャッシュ オプションを設定できます。このオプションは、すべての後続キャッシング オペレーションに影響します。
パーティクル ディスク キャッシングを使用し、同じシーンのさまざまなキャッシュを作成できます。このため、シーンのバリエーションを作成して高速に再生できます。
キャッシュを作成すると、使用しないように指示するまでそのキャッシュが使用されます。そのパーティクル オブジェクトでは、エミッションやフォースなどの変更は無視されます。
シーン変更の変更をすることによりパーティクル単位のアトリビュートが変更される場合、正しいレンダリング結果を得るためにキャッシュを再作成しなければなりません。パーティクル ディスク キャッシュの作成(Create Particle Disk Cache)を選択した場合に限り、ディスク キャッシュが書き出されます。このメニュー項目は「キャッシュ状態」をオンにしません。これはメモリ キャッシングとディスク キャッシングの大きな違いです。ディスク キャッシュの更新や再作成は自動的に実行されません。
パーティクルごとのアトリビュートが変化しない変更を行った場合、キャッシュを再作成する必要はありません。たとえば、パーティクル シェイプのレンダー タイプをブロビーからクラウドに変更し、ファイルを保存してレンダーしなおしたとします。または、キーフレームの colorRed/colorBlue/colorGreen アトリビュートを変更したとします。どちらの例でも、パーティクルに関連したアトリビュートは変更されていないので、キャッシュを再作成する必要はありません。
しかし、colorRed などのアトリビュートがパーティクルごとのアトリビュートに間接的に影響することがあるので注意してください。前の例では、レンダー タイプや colorRed を入力として使用する、パーティクルごとのエクスプレッションが一部のパーティクル オブジェクトにある場合、そのエクスプレッションの結果が影響されるので、キャッシュを再作成する必要があります。
各フレームの各 particleShape には複数のキャッシュ ファイルが保存されます。オーバーサンプリングがオンに設定されると、オーバーサンプリングのレートに応じて、フレーム内で異なる時期に複数のディスク キャッシュが保存されます。これらのバイナリ ファイルには .pdc という拡張子が付きますが、これはパーティクル データ キャッシュの意味です。このファイルは、dynExport コマンドで書き込まれます。
.pdc ファイルを読み込むことはできません。読み込みができるパーティクル データ ファイルを出力する場合、dynExport コマンドのオンライン ドキュメントを参照して .pda ファイルと .pdb ファイルの出力についての詳細を確認してください。独自のリーダーの作成については、付録 PDC ファイル フォーマットを使用するを参照してください。
パーティクルごとのレンダリング アトリビュートをランプでアニメートしており、ランプを変更した場合は、キャッシュを有効にしても再生で変更内容を確認できます。これは、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 つの部分を別々にキャッシュしなければならないことがあります。たとえば、フレーム 1 から 45 までをある場所に、フレーム 46 から 90 までを別の場所にキャッシュする場合は、2 つのキャッシュを「並べて」45 と 46 を連続させる必要があります。
最初にキャッシュした際のアニメーションとダイナミクスが、次にキャッシュした際のものと一致することを確認してください。追加や変更を行わなかったこと、または変更が行われなかったことを確認してください。
特に、MEL 関数 rand() を使用するエクスプレッションがある場合は、エクスプレッションが再び適切にシードされていることを確認する必要があります(ランダム度を生成するランダム度を生成する(『MEL とエクスプレッション』マニュアル)を参照)。
ソルバ > パーティクル ディスク キャッシュの作成(Solvers > Create Particle Disk Cache)を使用すると、シーン内のすべてのパーティクル オブジェクトがキャッシュされます。指定したオブジェクトのキャッシュは、コマンド ラインで dynExport コマンドを使用して実行できます(dynExport コマンドについては、オンライン コマンド リファレンスを参照してください)。
オペレーティング システムを使用して、キャッシュから読み込まないすべてのオブジェクトのキャッシュ ファイルを削除しても同じ結果になります。