バーチャル3Dクリエイター神部まゆみです(*^_^*)
この記事はUnity6でObiFluidを使ってみた記事の続きです。
前回の記事はこちら。
サンプルを改変してみる
↓前回良さそうなサンプルをいくつか見繕ったので、これをベースに作ってみます。
これ一応サンプルシーンをコピペして、元のサンプルシーンをとっておいたほうが良いかもしれない。
初期値にリセットしたくなったらアセットを再インポートしないといけなくなるので。
ここを改変したら白くなった
Emitterの色をいじったら白くなった。









これで白くなりました!
コリジョンマテリアルを設定すると衝突した後の挙動を設定できるっぽい
今回はとりあえず使わずに行くけど、ここを設定すると衝突後の挙動を設定できるっぽい。

VRoidモデルを配置して設定する
ぶっかけるために私のVRoidモデルを配置します。
Face、Body、HairにメッシュコライダーとObi Coliderを追加する
ObiFluidの液体を衝突判定するにはObiColiderが必要。
ObiColiderにはメッシュコライダーなど何かしらコライダーが必要なので先に追加しておきます。









メッシュコライダーのメッシュは手動で指定する必要があったけど、ちゃんと指定されていれば緑色のメッシュコライダーが表示されるはず。
追記:動作確認だけならこれでいいけど、アニメーションさせると追従しないのでコライダーはボーンのオブジェクトに仕込むべき
後から気付いたけど、Face Body Hairはただのメッシュでボーンがないので、これだとアニメーションさせた時にコライダーが追従しません。HipsやHeadなどボーンがあるオブジェクトにコライダーを仕込む必要がある。
HairやFaceはメッシュコライダーにしてHeadボーンに仕込めば行けるかと思ったけど、メッシュコライダーは位置の微調整ができないのでダメっぽいです。
なのでスフィアコライダーを細かく仕込んでいくしかないかな。
まぁえろいのに使う場合、ぶっかける部位はだいたい上半身あたりが多いと思うから、スフィアコライダーをいくつか仕込んで位置を微調整すればいけると思います。
詳しくはこちらを参照。
ディスタンスフィールドは下手に設定しないほうがいいかも…
これを作っておくと事前に衝突判定を計算しておけるので軽くなるっぽい。
けどなくても動くのでとりあえず動かしたいだけならなくてもいい。



というかこれ下手に設定すると挙動がおかしくなりハマる可能性があるかも?(-_-;)
↓は適当に出てきたサンプルのディスタンスフィールドを設定したら、液体が浮いて意味不明な挙動になりましたΣ(゚Д゚)
挙動がおかしい場合はここが設定されてるか見た方がいいかも。まぁとりあえず空欄でいったほうがいいかもしれない。
ディスタンスフィールドについての公式の説明ページはこちら。

できれば紐状にぶっかける感じにしたいが…
参考資料(意味深)を色々と調べたけど、男性の白いアレを発射するとだいたい↓こんな感じで紐状に表現されることが多い気がする。



↑はblenderの液体シミュレーションで自分で作ったやつね。
発射するやつだけObiFluidでやって、仕込んだ↑をタイミング良く表示する感じの方が良いか…?なんか違和感出そうだけど、事後の表現をするにはObiFluidだと調整がキツそう?
ObiFluidを連射して、ケチャップアートのように描いていくしかないか…?
不自然にならないように発射口に少しずつ角度をつけて連射していけば、ケチャップアートのように紐っぽく描けるかも知れない。
↓こんな感じです。
連射するために必要な設定
改変するベースはサンプルシーンのSolidfyOnContactです↓。
とりあえずスピードを上げて、あと消えないようにライフスパンを高めにしておく。しかしあまり大量に残ると動作が重くなります。
あと弾切れを起こさないために、min pool sizeを低めにしておく。



min pool size は発射までに必要なエネルギーゲージみたいな感じ?
ObiFluidはどうも水を貯めて発射するようなイメージで、ここが高いとチャージされてからじゃないと発射されなくなるっぽい。
低くするとかなり連射できます。
デフォルトだとサイズが大きいため小さくする ※重要
あとサイズを小さくするため、Diskの半径を小さく、Solverのスケールを0.1くらいにしておく。
0.1だと少し大きいかな…?連射して紐状にすることを考えると0.05くらいのほうが良いかも。






これ何気に一番重要かな…?デフォルトだと大きすぎてなんか変な感じになる。
顔にぶっかけてみる
あー、ようやく良い感じにできたかもしれない。
一番重要なのはDiskの半径を小さく、Solverのスケールを小さくするとサイズがちょうど良くなるので、あとは連射して上手く狙いをつけられるかどうかですかね。
サイズが合ってればだいたい良い感じになりそう。デフォルトだと大きめなので…。
以前はこのサイズ調整がうまくいかず諦めていたのだけど、割と簡単にできました(^_^;)
液体の見た目はObiFluid Surface Mesherでいじれるっぽい
Emitterのここをいじると見た目をいじれるっぽいです。メタリックとか法線マップとかあるし。



詳しくは公式のユーザーマニュアルを参照。

↓見た目結構変わりますね。テクスチャとかも指定できるっぽい。
液体のシェーダーを変えたりはできないっぽい?明るくしたければライトを当てるしかないか…?
これ液体のシェーダーは変えられないっぽい?設定項目が見当たらなかった。
↓の記事でも書いたけど、StandardやLitなどリアル系のシェーダーだと影が強めに出るんですよね…。
明るめにしたければ、正攻法で行くならポイントライトでも当てるしかないかなあ。
あまり光が強すぎるとキャラも白めになってしまうけど、位置を調整すれば割と良い感じになります。
しかしサンプルを見ると、サンプルごとにだいぶ見栄えが違うからパラメーター調整次第かなあ。
このアセットパラメーターが多すぎて把握するのが大変なんですよね…。
カリングマスクで液体だけライト当てるのもアリかな?
カリングマスクを使うと特定のレイヤーのオブジェクトにだけライトを当てたりコントロールできるので、ObiFluidの液体だけ照らすとかもできると思う。
ObiFluidのパラメーターだけだと限界があるうえ複雑だから、こうやって見栄えを調整するのが良いかなあ。
↓実際やってみましたが良い感じですね。こっちのほうがライトで見栄えを調整できるのでやりやすいと思います。
BluePrintで挙動を変えられる
あとBluePrintを変えるだけで挙動が結構変わるので、このあたりもいじってみると良さげ。
Pixivのうごイラとかで先輩たちのぶっかけ表現を見て参考にしてるけど、上手い人は何パターンか作っておいて単調にならないようにしている気がする。
追記:上手くコライダーにくっつかない場合はSolidift On ContactにObi Coliderを指定する
ここにコライダーを指定するとくっつく感じになる。



複数つけることもできたけど、今のところ不具合はないかな?



これでいけた。
あとは見た目と挙動をいじればいけるかな。
Solidfy On Contact(訳:接触すると固まる)はくっつくだけなので垂れさせるのは無理っぽい?
Solidfy On Contactは訳すと「接触すると固まる」なので、接触するとそこに固定されてしまって動かないっぽい?



コリジョンマテリアルを使うと接触後の挙動を変えられるみたいだけど、接触後垂れさせたりしたい場合はSolidfy On Contactは使わずにコリジョンマテリアルを調整したほうが良いかもしれない。
おわりに
ようやく納得できる感じにできて良かった。
このアセットは設定項目が多いため、今回くらいシンプルな感じでやっていったほうが使いやすいかな…。
これなら割と実用的に使えそうな気がします。
また何かあれば追記します(*^_^*)