[キャッシュ](Cache)オペレータは、パーティクルの状態をメモリに記録します。大規模または複雑なパーティクル システムでは、再生および特にバックトラッキングに大量の処理が必要で時間がかかるため、これは特に有用です。
[キャッシュ](Cache)が有効な場合、初めてフレームを再生するときやフレームに移動するときに、そのフレームまでのパーティクル モーションが計算されてキャッシュに記録されます。以降、このフレームまたはそれ以前のフレームの再生では、パーティクル アクションは再計算されず、キャッシュ内のデータが使用されます。キャッシュをオンにすると、パーティクル システムは各フレームを一度だけ計算する必要があります。以後、再生およびフレーム間の移動が飛躍的に速くなります。
フロー全体をキャッシュするには、[キャッシュ](Cache)オペレータをグローバル イベントに追加します。ローカル イベントを個別にキャッシュする場合は、[キャッシュ](Cache)オペレータをそのイベントに追加します。
パーティクル システム内でキャッシュを実装する最善の方法を判別するには、[パーティクル ビュー](Particle View)
[経過を更新](Track Update)
[進行を更新](Update Progress)をオンにして、アニメーションを再生するか、現在のフレームから比較的離れたフレームに移動します。パーティクル図を観察し、一瞬よりも長くハイライト表示されるアクションを保持するイベントや他よりもアクティブなイベントに注目します。この種のイベントはすべてキャッシュの恩恵を受けます。
例: [キャッシュ](Cache)オペレータを使用するには:
[経過を更新](Track Update)を選択し、[進行を更新](Update Progress)をオンにします。 これにより、システムがアクションを実行する際に、パーティクル ビュー内でアクションをハイライト表示することで、パーティクル システムの計算が監視されます。
[間隔を保持](Keep Apart)は、計算を集中的に実行するオペレータです。
フレーム 0 と フレーム 100 の間のパーティクル モーションがすべて計算されるため、遅延が発生します。パーティクル フローが履歴に依存するシステムであるため、これは必要な動作です。同時に、各フレームでシステムのアクションが実行される際、パーティクル ビュー内で短時間ハイライト表示されます。
システムによりフレーム 0 ~ 50 までのすべてのパーティクル モーションが計算される際、さらに遅延が発生します。
マウス ボタンを放すと、[キャッシュ](Cache)オペレータがアニメーションの開始から現在のフレームまでパーティクル モーションを自動的にキャッシュするため、遅延が発生します。その間、フレームごとに各アクションが短時間ハイライト表示されます。
ハイライト表示されるオペレータは、[キャッシュ](Cache)オペレータ(高速) と[表示](Display)オペレータだけです。計算の遅延は発生しません。0 ~ 50 までのフレームすべてがキャッシュ済みのためです。
今回の遅延は、フレーム 50 ~ 100 のパーティクル モーションがキャッシュされることが原因です。
すべてのパーティクル モーションがキャッシュされているため、遅延は発生しません。ただし、設定値を変更すると、[キャッシュ](Cache)オペレータによりパーティクル モーションが自動的に再計算および格納されます。
既定値では、保存されたいずれかのパラメータが変更されると、[キャッシュ](Cache)オペレータは自動的にキャッシュを更新します。このため、フレーム 100 で[フォールオフ ゾーン](Falloff Zone)値を変更すると、アニメーション全体の計算およびキャッシュが再実行されます。
次に、手動キャッシュの動作を簡単に説明していきます。
パラメータが変更されても[キャッシュ](Cache)オペレータは格納されたデータを自動的に更新しなくなります。
アニメーションは依然としてキャッシュされたデータから再生されるため、遅延は発生しません。ただし、パーティクル システム内でパラメータが変更されたため、キャッシュされたデータは無効になります。
3ds Max がパーティクル ビューを閉じ、アクティブ セグメントのキャッシュを更新してから、パーティクル ビューを再度開きます。 これで、キャッシュされたデータは正確なものになります。
他の手動更新オプションを使用すると、アニメーション全体またはカスタムのフレーム範囲のキャッシュを更新できます。
これまで見てきたように、[キャッシュ](Cache)オペレータは非常に有力な機能です。[キャッシュ](Cache)オペレータが存在し、かつアクティブな場合、アクション パラメータを変更する場合を除き、[キャッシュ](Cache)オペレータがパーティクル システムの再計算よりも優先されます。アクション パラメータが変更されると、キャッシュされたデータは自動的に更新されます。このオペレータを適切に使用すれば、パーティクル システムの設定およびテストに費やす時間を大幅に節約できます。

ユーザ インタフェースは、[パーティクル ビュー](Particle View)ダイアログ ボックスの右側のパラメータ パネルに表示されます。
と
を押しながらマウスでトラック バーをドラッグすると、アクティブ セグメントを変更できます。この操作には、
(左)、
(中)、
(右)マウス ボタンを使用できます。 たとえば、[N]を既定値の 5 に設定すると、5 フレームごとにアニメーション データがキャッシュに格納されます。
[キャッシュ](Cache)をローカル オペレータとして使用し、次のイベントが[キャッシュ](Cache)オペレータを保持しない場合、このオプションは重要です。次のイベントが適正に動作するには、現在のイベントからパーティクルを受け取る必要があります。これらのパーティクルは、テスト操作により生成されます。[キャッシュ](Cache)オペレータはテスト操作を記録して、後で再生できます。
[キャッシュ](Cache)オペレータをグローバル オペレータとして使用する場合は、テスト結果をキャッシュする必要はありません。これは、システムがキャッシュ データをイベントごとにキャッシュしており、テスト結果なしで任意のフレームに移動できるためです。
通常、キャッシュされたデータは、[保存](Save)または[名前を付けて保存](Save As)コマンドの実行時に作成されるディスク ファイルにのみ保存されます。次の 2 つのオプションを使用して、キャッシュされたデータを他の種類のファイルに含めるよう3ds Max に設定することもできます。
[一時保存](Hold)を実行して作成される一時保存ファイルに保存します。既定値ではチェックマークが付いていません。 以下のコントロールを使用すると、フレーム範囲内のキャッシュを手動で更新またはクリアしたり、キャッシュ全体をクリアできます。
更新中に、3ds Max のパーティクル ビューが一時的に閉じられ、[キャッシュ更新を進行](Cache Update Progress)バーが表示されます。その間、キャッシュされた範囲をタイム スライダが移動します。 既定値では、同時にビューポート内でアニメーションが再生されます。この動作および速度計算を避けるには、[ビューポートを更新](Update Viewports)のチェックマークを消します。
手動更新中にキャッシュがメモリを使い果たしてしまうと、パーティクル フローは更新処理を停止して、警告を表示します。[OK]をクリックすると処理が続行されます。可能であれば、続行前に[リミット](Limit)の値が大きくされます。
キャッシュ バッファをクリア後に別のフレームに移動するか、いずれかのアクション パラメータを変更すると、[更新](Update)が[手動](Manually)に設定されている場合でも、パーティクル モーションが自動的にキャッシュされます。
アニメーション全体を更新するには、アクティブ セグメントまたはカスタム範囲にすべてのフレームが含まれるように設定し、適切なオプションを使用して[更新](Update)をクリックします。
+
を押しながらトラック バーをドラッグすると、アクティブ セグメントを変更できます。この操作には、
(左)、
(中)、
(右)マウス ボタンを使用できます。 このチェック ボックスにチェックマークが付いている場合、キャッシュの手動更新中にビューポート内でアニメーションが再生されます。チェックマークが付いていない場合、手動更新中にビューポート内にアニメーションが表示されないため、特に大規模または複雑なパーティクル システムでは、キャッシュの処理速度が向上します。既定値ではチェックマークが付いています。
[キャッシュ](Cache)オペレータは、システム メモリ内にデータを格納します。このオペレータが使用するメモリ量の上限を指定できます。[リミット](Limit)設定およびキャッシュされるデータの量が利用可能な空きメモリを超えた場合、コンピュータ システムは代わりにハード ディスク ベースの仮想メモリを使用します。このため、キャッシュの処理速度が低下します。パーティクル フローがキャッシングを行う場合、残りのフレームの計算は迅速に行われます。
この領域を使用してデータのキャッシュに使用されるメモリの量を監視することもできます。