#SDF(Signed Distance Field)を使ったパーティクルによるメッシュ形成術
制作物は以下のようなものになります。SDFを使うことで、パーティクルが任意の地点をぐるぐると循環するようになります。
SDFが何たるかはここでは説明しませんのであしからず。
SDFを使ったパーティクル芸、、、。#unity3d #VFX #SignedDistanceField pic.twitter.com/DeQdPBhLKf
— YU@PrizmaCombo (@yarikomivr_com) August 27, 2019
###制作環境
Unity2019.1.0f2
※PackageManagerよりBurst、Mathmatics、Visual Effect Graphをインポートしておいてください。
#UnityにはまだSDFをベイクする機能はありません
残念ながらSDFをベイクする公式ツールは提供されていないようですので、こちらからSDFrというプラグインをお借りします。
Package化されてないので、Assets/以下のフォルダを丸ごとプロジェクトに放り込んでください。
ベイクしたいオブジェクトにSDFbakerをアタッチします。使用したボタンは赤線をつけておきました。
- Dimensions・・・ベイク後のTexture3Dのサイズになります。解像度はここを弄ってください。32^3で十分だと思います。
- Encapsulate・・・モデルがちょうど収まるバウンドを設定してくれます。
- Bake・・・ベイクします。書き込み先が設定されていなくてもファイルを作成してくれます。
- Preview・・・ベイク結果を元のモデル位置に表示してくれます。このプレビューがうまくいってないとパーティクルが荒れます。
###Tips
**モデルデータのRead/Write Enabledをオンにしておきます。**これをしておかないと以下のようにベイク結果が破綻します(二枚目はSDF Flipをオンにした状態)。この状態のSDFデータをVFXに流し込むと、パーティクルが特定の場所に滞留してしまい、うまくモデルを形成してくれません。
#将来的には公式がベイク機能を提供するでしょう。
この記事と使用したプラグインは近い将来obsoleteされると思いますが、それまでの間はこの方法でSDFによるパーティクル芸を頑張りましょう!!!
###参考文献
SDFr by xraxra, https://github.com/xraxra/SDFr