バーチャル3Dクリエイター神部まゆみです(*^-^*)
今日は流体系アセットのNVIDIA Flex for unityを使ってみるよ。
使おうとしてる人は参考にしてね。
- 2021/12/17追記:NVIDIA Flex for Unityは公開終了っぽい?(~_~;)ページが見れなくなっていた
- NVIDIA FleX for Unityとは?
- なんかこう、ぶっかける系の機能として使いたい
- サンプルシーン9のFluid Rendererを開いてみる
- Flex Source ActorのコンテナとSource Assetを書き換える!前に設定ファイルを複製してリネームして設定し直しておく
- 各パラメーターの意味を理解して調整する
- Flex Source Asset設定パラメーター
- Flex Container設定
- Max Particles
- Substep Count 流体が流れる安定性?
- Iteration count 粒子が出る強さ?
- global gravity どこに向かって流れるかの座標?
- Particle Size 粒子の大きさ
- Particle Friction 摩擦?ちょっと分からない
- Particle Restitution 当たると跳ね返る感じ?
- Patricle adhesion 付着?
- Particle Damping 減衰?勢いとか慣性が止まる感じ
- Cloth Wind 風で揺らす用?
- Cloth Drag 不明
- Cloth Lift 不明
- Fluid Cohesion 凝集?広がらなくなる感じかな
- Fluid Tension 張力?
- Fluid Viscosity 粘度?
- Fluid Vorticity 渦度?
- Material
- Anisotoropy 異方性?増やしたらなんか大きくなった
- とりあえず顔にべちゃっとくっつくようにしたい
- 懸念事項
- 他にも気になるアセット
- 2020/11/06追記:Obi Fluidっていう有料アセットを使ったらいい感じ
- 終わりに
2021/12/17追記:NVIDIA Flex for Unityは公開終了っぽい?(~_~;)ページが見れなくなっていた
この記事を書いた時点でもあまりアップデートされてなかったみたい?だった気がするけど、NVIDIA Flex for Unityアセットは公開終了になったっぽいです(~_~;)
一応ブラウザの機能で翻訳してみたらこんな感じに↓。
残念ながら、NVIDIA FleX for Unity (1.0 ベータ版) は使用できなくなりました。このパッケージはアセットストアから廃止されました。つまり、パッケージの新規購入は許可されず、パッケージを非推奨になる前に既に購入またはダウンロードしたユーザーのみがダウンロードできます。ほとんどの場合、発行元がパッケージをサポートできない、またはサポートしたくないために、パッケージが廃止されます。別のパッケージを探すか、パブリッシャーに直接連絡することをお勧めします。すでに購入済みのコピーをダウンロードする必要がある場合は、ここでダウンロードできます。
「ここで」がリンクになってるけど、自分のunityアカウントの保有アセット一覧に飛ばされるだけです。
アセットストアで改めて検索してみたけど見つからなかった。
名前が変わってリニューアルしたとか?と思ったけど、nvidiaの名前で検索しても出なかったから多分本当になくなったのかな?(~_~;)
後でリニューアルして復活する可能性もあるかもしれないけど、無料アセットは善意で公開してくれてるものだから、いつ無くなるか不安ですね(;^_^A
もしかしたらどこかに移転しただけだったらすみません。
液体系アセットだと、有料だけどObi Fluidっていうやつも使ってみたのでこちらも良いかも↓。

ちょっとパラメーター制御が難しいけど、有料だけあってアップデートは割と頻繁にされてますね。
たまに30~50%オフセールで安く売ってたりするので、安い時に買っておくと良いかも。
でも公開終了前に使っていた人は引き続き使えるっぽい?ので、以下の記事はそのまま残しておきます。
NVIDIA FleX for Unityとは?
NVIDIAが無料で提供してるunityアセット。
流体とかsoftbody系の機能とかあってなんかすごい(笑)。
ただ最近はあんまり更新されてないみたい?
なんかこう、ぶっかける系の機能として使いたい
ぶっちゃけて言えば、顔とかにこう、白濁液っぽいのをぶっかけたりとかなんかそういうので使いたいという(///)
他にも色々機能はあるみたいだけど、まぁこれだけ使えればいいかな。
サンプルシーン9のFluid Rendererを開いてみる
これを開いて実行すると、オブジェクトから水が出てくるよ。
水が出てくる FlexSourceActorをプロジェクトにD&Dして、プレハブ化して使う
サンプルだけでなく他のシーンで使いたいので。
プレハブ化すれば他のシーンとかで読み出せるって最近覚えたんだけど、他にもっといい手段があるかはわからない。
プレハブ化したやつを、使いたいシーン上にD&DすればOK
メッシュなしの空のオブジェクトっぽいやつみたい。
これで実行すれば…
まゆみに高圧水流をぶっかけることに成功!( *´艸`)
胸に仕込んだVertExmotionの揺れ判定が反応して凄いことになってるけど( ̄▽ ̄;)
さすがにここまで強い衝撃が来ることを想定して作ってないな(-_-;)
ちょっと一旦インスペクターメニューでbodyとfaceとsitaのVertExmotionをオフにしておこう(自分用メモ)。
Flex Source ActorのコンテナとSource Assetを書き換える!前に設定ファイルを複製してリネームして設定し直しておく
さすがにこのままだと使えないので、調整しないとね。
水が出てくるFlex Source Actorは上の二つのファイルで設定されてるみたい。
これをそのまま書き換えて使ってもいいけど、またサンプル使う時に書き換え後のファイルを使うことになっちゃうから、あんまりスマートじゃないかも。
この二つを複製して指定し直して、複製したファイルを使うようにするよ。
複製はCtrl+Dでできるよ。
分かりやすいように、
Bukkake-FC
Bukkake-FSA
という名前にして、Bukkake-NVIDIAって名前のフォルダを作って(ひどい名前w)放り込んで指定し直したよ。
FCはFlexContainerの略、FSAはFlexSourceAssetの略ね。
念のため、これでちゃんと動作するか確認しておく。OKみたい。
各パラメーターの意味を理解して調整する
Flex Source Asset設定パラメーター
これはそんなにないみたい。
Surface Mesh 粒子の発生源となるメッシュの指定
これは粒子の発生源となるメッシュみたい。
デフォルトではQuadっていう線だけみたいな四角に設定されてるけど、試しにスフィアにしてみたら、現れては水が弾け…みたいになっちゃった。
試しに窓枠のメッシュを指定したら、なんかよくわからない感じになった。これはこれで何かに使えそうではあるけど(;^_^A
メッシュによって粒子が出てくる頂点数も違って、ノズルカウントが増えるほど発生源が多くなってなんかカオスな感じになる?
まぁとりあえず水を出したいだけなら、デフォルトのQuadでいいかな。
Mesh Local Scale メッシュの大きさを変える
上で指定したメッシュの大きさを変えるだけかな?と思ったけど、その影響は結構大きいっぽい?
Yをデフォルトの0.4から2にしてみたら、縦5つから出てくるようになった( ̄▽ ̄;)
値を調整すると、向かって右下のプレビューが変わるから、それを見て調整する感じ?
まぁとりあえずデフォルトのままでいいかな。
Mesh Tesselation 粒子を発生させる点の数を増やす
粒子を発生させる点の数を増やす感じみたい。
これも粒子の出所が増える感じみたい。
Nozzle Count 編集不可。粒子が出てくる点の数をカウントしてるだけ?
これはグレーになってて直接編集できないみたい。
Mesh Tesselationの値を増減させたらそれに比例して増減したから、粒子を発生させる点の数をカウントして表示してる感じ?
メッシュによって頂点数も違うから、全然変わってくるみたい。
あんまり複雑なメッシュでノズルカウントが多いと、四方八方から粒子が出て変なことになるかも?
最大パーティクル数 最大粒子数を指定
流体は粒子が集まったり散らばったりで表現されてるみたいなんだけど、その数を変えられる。
デフォルトだと10000になってたけど、1にしたら本当に1個だけ水玉がちょこんと出てくるだけになった(笑)。
100だと水の塊って感じ。
1000でやっと水流っぽくなった。
どうだろ、発生源のメッシュとか、発生源の頂点とかにもよるだろうし、他のパラメーターとの兼ね合いかな?
Flex Container設定
これ設定項目が多いみたい( ̄▽ ̄;)
Max Particles
これもさっきやったやつと同じかな?
下限は1000みたい。
Substep Count 流体が流れる安定性?
これよくわからなかったんだけど、値を増やして行ったら水流が荒ぶるようになった( ̄▽ ̄;)
向かって右側でパラメーターいじってるから、それでどう変化してるかに注目。
10超えたあたりから制御を失ったかのように暴れてるね( ̄▽ ̄;)
濁流とか暴れる水ぽい感じの表現には使えるのかな。
Iteration count 粒子が出る強さ?
これは1とか2程度の増減ではあまり変わらなかったけど、10とか20くらい増減させたら結構変わってきた。
なんか流れが強くなってる?
iterationって反復とかそういう意味っぽいけど。
global gravity どこに向かって流れるかの座標?
この値を変えたら、水流が落ちるゴール地点?が変わった。
gravityって書いてあるから、重力の発生源の座標的な意味合いかも?
Particle Size 粒子の大きさ
これ大きくしたら表示されなくなった?んだけど、Flex Source Assetのパーティクル数を1にして、このサイズを1にしたら、普通に粒子の大きさが変わってることが分かった。
もしかして、あんまり大きいと発生源の穴から出てこれないとか、出てきてもパーティクルの数が多すぎてバグるとかかも?
でもこれを大きくしちゃうと、水が飛び散るような小さい粒子の表現ができなくなってくると思うから、小さ目なほうがいいかも。
大きい水玉しか出さないのならいいかもしれないけど。
Particle Friction 摩擦?ちょっと分からない
訳すと摩擦って意味らしいけど、0にするとオブジェクトに当たったら滑るとか?
デフォルトは0.1だけど、0にしたり1000にしたりしてみたけど違いが分からない。
とりあえず無視でいいかも。
Particle Restitution 当たると跳ね返る感じ?
訳すと反発って感じの意味らしいけど、跳ね返るってことかな?デフォルトだと0
0.1刻みだと大した変化はなかったけど、1を超えたあたりから目に見えて地面から跳ね返ってるかも。
100以上だと変わらないっぽい?
他のパラメーターにもよるだろうけど、限界値は数十くらいかな?
水が当たって跳ね返る表現に使うといいかも。
Patricle adhesion 付着?
これ多分くっつく感じ?
水流だとよくわからないけど…。
Flex Source Assetの設定でパーティクル数を100にして水玉にしたら分かりやすくなった。
デフォルトは0で、増やしていくと確かに床に付着する力が強まるっぽい。でも1を超えるとなんか動作がおかしくなっていって、上げすぎるとバグる(笑)。
0.8あたりが一番付着力が強いかな?
他のパラメーターにもよるのかもしれないけど、とりあえずMAX1くらいかな。
Particle Damping 減衰?勢いとか慣性が止まる感じ
パーティクル数100でやるとこんな感じ。
値を増やしていくと勢いというか慣性が弱まっている?感じで、止まりやすくなっていき、3にしたら止まるようになった。
これ多分出てくる勢いの強さによって変わってくると思う。
値を上げていくほど、発生地点で勢いが0になってボトッと落ちる感じになるね。
Cloth Wind 風で揺らす用?
これ値をいじってもちょっとよくわからなかった。
NVIDIA Flex for unityにはなんか丸い布を揺らす系のサンプルとかが入ってたから、そういうので使うのかな?
とりあえず無視でいいかな。
Cloth Drag 不明
これもいじっても良く分からなかった。
これも布系のやつかも。
Cloth Lift 不明
これもいじっても良く分からなかった。
これも布系のやつかも。
Fluid Cohesion 凝集?広がらなくなる感じかな
これデフォルトだと0.01あたりだったかも?私は以前にちょっといじったから0.5になってたけど。
0だと水が散らばっちゃうけど、パラメーターを上げていくと水の塊っぽくなる。
1くらいがマックスかな?
2以降にすると逆に凝集が強まり過ぎる?のかはじけちゃうね。
Fluid Tension 張力?
粒子同士がお互いに引っ張る力とか?
上げたら気持ち粘性が上がったような?落ちずに踏みとどまるようになった気がする。
ドロッとしたのを出したい時に調整程度に使うのがいいかな。
Fluid Viscosity 粘度?
これはわかりやすくベットリする感じになったかも。
Fluid Vorticity 渦度?
検索したら訳でそう出たんだけど、そんな概念があることを始めて知った( ̄▽ ̄;)
増やしたらピクピク震えるパワーが上がったような?
まぁ私の用途だととりあえず使わなくていいかな?
Material
これ流体用?っぽいFlexDrawFluidってマテリアルが使われてるんだけど、他のマテリアルに変えると何も表示されないみたい。
NVIDIA Flex for unityに入ってる他のマテリアルを設定してみたけどダメみたい。
NVIDIA/Flex/Resources/Materials にあるFlexDrawFluidを複製して、改変して使うしかないかな。
Anisotoropy 異方性?増やしたらなんか大きくなった
これは位置的に、マテリアルの子プロパティかな?
ちょっと意味が分からないんだけど、増やしたらちょっと大きくなったような。
この下のMin ScaleとMax Scaleもいじったけど、何が違うのか分からなかった( ̄▽ ̄;)
とりあえず無視でいいかな。
とりあえず顔にべちゃっとくっつくようにしたい
これまでで心当たりがあるのは、
adhesion(付着)
viscocity(粘度)
あたりかな?
damping(減衰)も使えば勢いをコントロールできそう。
コライダー設定したらべちゃっとくっつく感じにできた。global gravityでもゴール位置を設定できそう?
コライダーの位置や水の形状とかのパラメーターはいじる余地がありそう。
他のアセットも検討しようと思ったけど、割といけるっぽい?
懸念事項
サイズや形状を上手く調整できるか?
サイズを変えると球にならなかったり、すぐ弾けとんじゃったりするんだよね(-_-;)
↑で割といい感じにべちゃっとできたんだけど、これをちょうど1/10くらいのサイズにすればそれっぽくなるかなぁと思ってパーティクルサイズとかそれっぽいのをいじったら、分散しちゃったりでだめだった。
大きいサイズには対応しやすいけど、小さいのは厳しい感じかも?
穴から出るパーティクルが上手く合体していかないとちゃんと動いてくれないっぽい?
単純にメッシュを変えたり穴を減らす感じで球を小さくできないかなとやってみたけど、穴が1~数個程度だと上手く粒子が合体せず、くっつかずにすり抜けちゃうっぽい?
こんな感じでたくさん穴から粒子が出てきて、それが上手く合体して動作する感じなのかな?
ちょっと大きさ調整が難しそう(-_-;)
穴が多すぎても破裂しちゃってダメっぽいんだよね…。
cohesionが高すぎてもダメっぽいし、上手くバランスとらないとダメなのかな?
色を白くすると透明になっちゃって微妙かも
マテリアル設定で色を変えられるけど、色を白くすると透明になっちゃうっぽい。
あとはパラメーターいじったりである程度は対応できそうだけど、白はだめっぽいなぁ(^_^;)
Reflection Probeで反射光?みたいな感じで色を変えるとそれっぽくなった
リアルタイム、ソリッドカラーにして白にしたらそれっぽい。赤とか青とかにも変えられるよ。
まぁこのくらいなら色はいい感じかな。
あとは大きさとか形状さえいい感じにできればいいんだけど…。
他にも気になるアセット
Obi Fluid
こちらの頭のいい先輩によると、ちょっとお高めだけどObi Fluidってのも良いみたい。




こっちのほうがやりやすいのかも?
ただ、射精表現で使いたいだけなら、それっぽいメッシュ素材を探してシェイプキーで移動させるとかしたほうが手軽かもしれない( ̄▽ ̄;)
アニメーションだけで制御できるし。
uFlex
これも流体系の制御ができるらしい?
Obi Fluidよりお値段手ごろ。
VertExmotion
もう持ってるけど(笑)、水風船がべちゃって感じになるサンプルが入ってたから使えるかもしれない。
平面と衝突したら頂点変形してバシャー!って見せてる感じだろうから、射精表現程度はできそうな気がする。
こっちのほうが頂点変形とかしてるだけだから、単純で制御しやすいと言えばそうなんだよね。シェーダーもいじれば変えられるし。
うーーん、NVIDIA Flex for unityとか他のアセットもいいけど、もう少しVertExmotionいじってみるのもいい気がしてきた。
2020/11/06追記:Obi Fluidっていう有料アセットを使ったらいい感じ
60$だからちょっと高いけど( ̄▽ ̄;)



小さい液体出すならこっちのほうが調整しやすいと思います。
終わりに
とりあえずNVIDIA Flex for unity使ってみたけど、どうだろ。
無料でこんな凄いアセットが使えるなんて素晴らしいの一言だけど、不勉強な私に使いこなせるかは別問題かな(-_-;)私の知識じゃ制御が難しそう。
もう少し調べてみる必要があるかも。
NVIDIA Flex for unityについて調べている人は参考にしてね。