【Unity】VFX Graph で Point Cache(ポイントキャッシュ)を使い、メッシュをパーティクル化する

どーも、ぐるたか@guru_takaです。

Unity の Visual Effect Graph(以降、VFX Graph)にて、Point Cashe(ポイントキャッシュ)を使い、メッシュをパーティクル化する方法を紹介します。

kyle Unity VFX Graph Cache Point

実行環境
・Unity:2020.3.2f1
・Visual Effect Graph:10.4.0

Point Cache とは?

Point Cache とは、VFX Graph における機能の1つで、各頂点におけるポジションや法線の情報を格納できます。拡張子は .pcache です。

VFX Graph にデフォルトで搭載されたツールを使うことで、メッシュから Point Cache を生成可能。位置などの情報を VFX Graph で簡単に扱うことができ、面白い表現ができます!

全体の流れ

本記事では Point Cache を用いて、Kele くんをパーティクル化します。

kyle Unity VFX Graph Cache Point

全体像は以下の通りです!

STEP.1
Cube の Point Cache を生成
STEP.2
VFX Graph と Cube の Point Cache を連携

STEP.1:Cube の Point Cache を生成

まず Widnows > Visual Effect > Utilities > Point Cache Bake Tool をクリックしましょう。

続いて、Point Cache を生成したいメッシュを選択し、適当な場所に保存してください!

以上で Point Cache の生成が完了になります。

STEP.2:VFX Graph と Cube の Point Cache を連携

後は生成した Point Cache を基に、各頂点をパーティクル化する VFX Graph の Asset を作成するだけです!ノードの構成は下図になります。

ポイントは以下3つです!

  • Point Cache で得られた各頂点のポジション情報は Attribute Map に格納
  • Attribute Map とは、パーティクルの固有値(ポジションなどの情報)が格納された Texture2D(データバッファ)
  • ポジション情報が格納された Attribute Map を Position Map にパス

Point Cache は、頂点数、各頂点におけるポジション/法線の情報が格納された Attribute Map(≒Texture2D) で構成されています。

そのため、VFX Graph で各頂点のポジション情報を扱いたい場合は、ポジションの情報が格納された Attribute Map を Position Map に渡せば OK です!

最後に

以上です。Point Cache を使用することで、VFX Graph での表現の幅が広がります!

また、動的に Point Cache(厳密には Attribute Map)を生成することも可能で、下記事に詳細をまとめています。
【Unity】VFX Graph で 動的に Attribute Map を生成し、Position Map にセットする方法【Unity】VFX Graph で 動的に Attribute Map を生成し、Position Map にセットする方法

アニメーションで動くメッシュに対し、VFX Graph で装飾するなど、応用範囲がより広がります。こちらも、参考になれば幸いです!

参考リンク

参考 Point Caches | Visual Effect Graph | 7.1.8公式 参考 VFX Graph の可能性を探る!PointCache動的生成、VAT拡張|fuqunaganote

コメントを残す