LoginSignup
13

More than 3 years have passed since last update.

[Unity,VFX]SDF(符号付き距離場)を使ったVFXパーティクル芸

Posted at

SDF(Signed Distance Field)を使ったパーティクルによるメッシュ形成術

制作物は以下のようなものになります。SDFを使うことで、パーティクルが任意の地点をぐるぐると循環するようになります。
SDFが何たるかはここでは説明しませんのであしからず。

制作環境

Unity2019.1.0f2
※PackageManagerよりBurst、Mathmatics、Visual Effect Graphをインポートしておいてください。

UnityにはまだSDFをベイクする機能はありません

残念ながらSDFをベイクする公式ツールは提供されていないようですので、こちらからSDFrというプラグインをお借りします。
Package化されてないので、Assets/以下のフォルダを丸ごとプロジェクトに放り込んでください。

SDFrの使い方

SDF1.png

ベイクしたいオブジェクトにSDFbakerをアタッチします。使用したボタンは赤線をつけておきました。

  • Dimensions・・・ベイク後のTexture3Dのサイズになります。解像度はここを弄ってください。32^3で十分だと思います。
  • Encapsulate・・・モデルがちょうど収まるバウンドを設定してくれます。
  • Bake・・・ベイクします。書き込み先が設定されていなくてもファイルを作成してくれます。
  • Preview・・・ベイク結果を元のモデル位置に表示してくれます。このプレビューがうまくいってないとパーティクルが荒れます。

Tips

モデルデータのRead/Write Enabledをオンにしておきます。これをしておかないと以下のようにベイク結果が破綻します(二枚目はSDF Flipをオンにした状態)。この状態のSDFデータをVFXに流し込むと、パーティクルが特定の場所に滞留してしまい、うまくモデルを形成してくれません。
SDF2.png
SDF3.png

Visual Effect Graphのレシピ

SDF4.png

将来的には公式がベイク機能を提供するでしょう。

この記事と使用したプラグインは近い将来obsoleteされると思いますが、それまでの間はこの方法でSDFによるパーティクル芸を頑張りましょう!!!

参考文献

SDFr by xraxra, https://github.com/xraxra/SDFr

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13