ジャンル雑多なゲーム・ゲーム制作関連の色々な情報を取り扱っているブログ。最近はBlenderについてが中心。
[Blender 2.8] データのキャッシュの保存やベイキング  [パーティクルシステム]

[Blender 2.8] データのキャッシュの保存やベイキング [パーティクルシステム]

[Blender 2.8] パーティクルシステム [キャッシュ]パネルの機能と使い方のご紹介

今回の記事は、Blenderでの『パーティクルシステム』で、「パーティクルデータのキャッシュをディスクに保存」したり、「データをベイク」したりできる[キャッシュ]パネルについてです。

また、『パーティクル』の基本的な事や基本操作、どんな機能があるのかをざっくりとまとめたページもありますので、そもそもの『パーティクル』についてという基本的な所を知りたい方には、下記記事から御覧になることをおススメします。

ちなみに、『パーティクルシステム』以外の物理シミュレーションでも、今回ご紹介する[キャッシュ]パネルの機能と大体共通しているので、そちらの参考にもなるかと思います。

※2020年7月19日加筆修正を行いました。

目次

[キャッシュ(Cache)]

リアルタイムのレスポンスを改善し、不要なパーティクルの再計算を回避するために、パーティクルデータをメモリに、キャッシュするか、ドライブに保存できます。

[エミッター]タイプのパーティクルシステムでは、キャッシングとベイキングに統合されたシステムを使用します。

memo: 『ベイキング』について

※UV展開してモデルの色をテクスチャに焼く方の「ベイク」と、ここで説明する「ベイク」は別物です。

「ベイキング」とは、計算結果を保存またはキャッシュする事を言います。

シミュレーションの結果は、アニメーションの再生時に自動的にメモリにキャッシュされるので、次回の実行時には、メモリから結果を読み取ることで、より迅速に再生できます。

シミュレーションをベイク処理すると、キャッシュは保護され、[ベイクを削除]をクリックしてベイク処理されたフレームを削除するまでシミュレーション設定を変更できなくなります。

Blender パーティクル エミッター キャッシュ 3DCG
Blender パーティクル エミッター キャッシュ 3DCG

通常、レンダリングの前に物理シミュレーションをベイクすることをおススメします。時間のかかるシミュレーションプロセスを再度実行する必要がなくなることを除いて、ベーキングは潜在的な不具合を防ぎ、シミュレーションの結果が毎回まったく同じになるようにします。

ちなみに、Blenderのほとんどの物理シミュレーターは同様のシステムを使用しますが、全てが同じ設定を利用できるわけではありません。物理シミュレーターのタイプによっては、幾つかのオプションが用意されていない場合もあります。

[キャッシュリスト(Caches List)]

Blenderでは、同じ物理オブジェクトに対して一度に複数のキャッシュを保存および管理できます。 このリストビューでキャッシュを管理できます。

Blender パーティクルシステム エミッター 物理シミュレーション プロパティエディター 3DCG
キャッシュリストの操作

[キャッシュ名(Cache Name)]

各キャッシュには名前を付けることが出来ます。名前を付ける、または名前変更はダブルクリックで行えます。この名前を指定すると、ディスクキャッシュはその名前で始まるファイルに保存されます。例えば、「MyCache」という名前のキャッシュは、「MyCache_xxxxxx_yy.bphys」に格納されます。

キャッシュに名前が無い場合(デフォルト)、キャッシュのファイル名はアタッチされているオブジェクトによって異なりますが、すぐには分かりません。例えば、”Cube”という名前のオブジェクトのキャッシュは「43756265_xxxxxx_yy.bphys」という形式で保存されます。”43756265″はオブジェクト名によって決まります。

試しにオブジェクト名を”あ”にして、[ディスクキャッシュ]を有効化してみたところ、blendファイルを保存している同ディレクトリに作成されたフォルダ内に、「E38182_xxxxxx_yy.bphys」というファイルが作成されました。なので、キャッシュ名を付けなかった場合、最初の部分の文字列は、オブジェクト名に対応するUnicodeのUTF-8の文字コードに変換された名前になるようです。

Blender  物理シミュレーション キャッシュ ディスクキャッシュ ファイル  3DCG
“あ”という名前のオブジェクトでパーティクルの[ディスクキャッシュ]を有効化した場合に作成されたキャッシュファイル

ちなみにですが、Unicodeについての説明は省かせていただき、分かりやすく、詳しく書かれたページ様に説明は丸投げさせていただきます。もしご興味湧かれましたら、オススメのページのリンクを張っておきますので、一度覗きに行ってみてください。

外部関連ページ:

[ディスクキャッシュ(Disk Cache)]

ベイクされたシミュレーションのキャッシュは、保存時にblendファイル内に保存されます。[ディスクキャッシュ]のチェックボックスにチェックが入っている場合、Blenderは、blendファイルと同じディレクトリに「blendcache_[filename]」という名前のフォルダーを作成し、そのフォルダー内に、キャッシュを個別に保存します。

先にblendファイルを保存しておかなければ、この項目を使用する事ができませんのでご注意ください。

Blender パーティクル エミッター キャッシュ 3DCG

[ライブラリパスを使用(Use Library Path)]

物理オブジェクトが別のブレンドファイルにリンクされている時にディクスキャッシュを共有します。

この項目を有効にすると、オブジェクトのリンクされたバージョンは同じディスクキャッシュを参照します。そうでない場合、オブジェクトのリンクされたバージョンは独立したキャッシュを使用します。

[圧縮(Compression)]

キャッシュファイルの圧縮レベル。

一部の物理キャッシュは非常に大きくなる可能性があります(煙など)。そのような場合の為に、Blenderはスペースを節約するためにこれらのキャッシュを圧縮する事が出来ます。

  • [なし(None)] …キャッシュを圧縮しません。
  • [軽量(Light)] …こちらでの圧縮は、ファイルサイズよりも圧縮/解凍操作の速度を最適化します。
  • [ヘビー(Heavy)] …こちらで圧縮を行うと、[軽量]よりもキャッシュファイルが小さくなりますが、圧縮/解凍にはより多くのCPUの時間を必要とします。

[外部(External)]

ユーザーが指定した[ファイルパス]を使用して、ドライブからキャッシュを読み取ることができます。

キャッシュリストのキャッシュ名とインデックス番号が機能するには、外部キャッシュファイル名と完全に一致する必要があります。 キャッシュファイルの名前の形式は「[name]_[frame]_[index].bphys」です。

実際に使ってみたのですが、結果から言いますと、この[外部]の機能、あまり使用をオススメできません。

少し調べてみたところ、この項目の2.8での機能は壊れているようです。

外部参考ページ(英文):T70135 External Particle caching deeply broken in 2.8

元々は1000個で設定していたはずのパーティクルデータで、たった1個しか読み取れなかったみたいですし、ファイルパスからパーティクルデータの名前まで、どこかに日本語が入っていると該当データとして認識されないという具合でした汗

Blender パーティクルシステム エミッター Cube 立方体 3DCG
[外部]で外部ファイルを読み取って実行した例

[キャッシュインデックス(Cache Index)]

キャッシュファイルのインデックス番号(ファイル名の下2桁)。

[ファイルパス(File Path)]

キャッシュファイルへのディレクトリパスを選択します。

[キャッシュのステップ(Cache Step)]

シミュレーションデータを保存する間隔。

一部の物理システム(パーティクルなど)では、n番目のフレーム毎にのみ位置を保存できるため、中間のフレームの位置を補間できます。ただし、1より大きいキャッシュステップを使用すると、キャッシュが小さくなりますが、元のシミュレーションと異なる結果となる場合があります。

[ベイク(Bake)]

ベーキングを開始します。Blenderは、ベーキング操作中にはほとんど応答しなくなります。また、ベイクするには、[オブジェクトモード]になっている必要があります。

(少なくとも私の環境の場合では)[ディスクキャッシュ]にチェックが入っている時に、[ベイク]をするとBlenderが強制終了してしまうようなので、[ディスクキャッシュ]が有効になっている時には[ベイク]しない事をオススメします。

[ベイクを削除(Delete Bake)]

ベイクされたキャッシュを一時的なものとしてマークします。データは引き続き存在しますが、次にオブジェクトの変更とフレームの変更をした時点で削除されます。

Blender パーティクル エミッター キャッシュ 3DCG
[ベイク]前
Blender パーティクル エミッター キャッシュ 3DCG
[ベイク]後

[このフレームまで計算(Calculate To Frame)]

現在のフレームまでのみベイクします。

[現在のキャッシュをベイク(Current Cache to Bake)]

一時的にキャッシュされたシミュレーションデータをベイクとして保存します。アニメーションを再生すると、目に見える物理シミュレーションがシミュレートされます。物理シミュレーションのタイプによっては、このデータが一時的にキャッシュされる場合があります。通常、このような一時的なキャッシュは、オブジェクトまたは設定が変更されるとクリアされますが、それをベイクに変換すると「保存」されます。

[全物理演算をベイク(Bake All Dynamics)]

異なるタイプの物理システムも含め、シーン内の全ての物理システムをベイクします。異なる物理タイプ間の相互作用を含む複雑なセットアップをベイクするのに役立ちます。

[ベイク]と同様にこの項目の場合も、[オブジェクトモード]になっている事を確認の上、実行してください。

[全ベイクを削除(Delete All Bakes)]

シーン内の全ての物理システムのベイクの削除。物理システムのタイプが異なるものも含みます。

こちらの項目も、[ベイクを削除]同様、ベイクされたキャッシュを一時的なものとしてマークし、データは引き続き存在しますが、次にオブジェクトの変更とフレームの変更をした時点で削除されます。

[フレームまで全て更新(Update All To Frame)]

シーン内の全ての物理システムを現在のフレームまでのみベイクします。

参考にさせて頂いたサイト・ページ一覧

パーティクルについてのまとめ記事のご紹介

Blenderに関する記事や作品をまとめたページ作りました!

Pocket

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください