バーチャル3Dクリエイター神部まゆみです(*^_^*)
この記事はUnity6でObiFluidを使ってみたのでそれについての記事です。
このアセットは意外にも低スペックで動くため、GPUなしのノートでやってみますw
まぁGPUなしとはいえFallout4くらいはなんとか動いたから、内蔵グラフィックの進化を実感せざるを得ない。
ちなみに以前ObiFluid触った時はX230っていう10年以上前のノートPCでやりましたが、ちょっと遅いけど普通に動きましたね…。
使用した環境はUnity6(6000.0.32f1)、レンダーパイプラインはBuit-In Render Pipelineです。
後述するけど、ObiFluid自体はレンダーパイプラインに依存しないのでどのレンダーパイプラインでも動くみたいです。
しかしサンプルシーンはBuilt In Render Pipeline でセットアップされてるので、マテリアルエラーを解消したり初期設定する必要があります。
追記:動画にしてみました。
- ObiFluidとは
- セットアップなど
- サンプルとか動かしてみる
- しかし制御が難しいのは相変わらずなので、単にぶっかけに使いたいなら別の方法のほうが手軽かな…?
- つづく?
ObiFluidとは
Unityで液体とか作れるアセット。
以前エロ動画を作っていた時に白濁液をぶっかけられないだろうか?と考え、スケベ心だけで購入していじっていた(笑)。
最近pixivでまたえっちなアニメーションを作って上げているので、良い感じにぶっかけ表現に使えないだろうか?と思いまたいじろうと思いました。
以前はパラメーター調整やらが大変で挫折したけど、今は当時と違ってChatGPTとかもあるしたぶん大丈夫だろう…。
公式サイトやフォーラムなど
分からないことがあればフォーラムで聞けばサポートしてもらえると思います。英語ですが…。


URPとHDRPにも対応してるっぽい
追加設定が必要みたいですがURPとHDRPにも対応してるみたいです。



このステップは、ビルトインレンダーパイプラインと URP の透明な流体にのみ必要です。HDRP には透明な屈折マテリアルのサポートが組み込まれているため、HDRP の透明な流体にはカスタム ShaderGraph シェーダーを使用する必要があります (以下のカスタム流体シェーダーを参照)。不透明な流体はレンダー パイプラインからのデータを必要としないため、レンダラー機能は必要ありません。
とりあえずデフォルトでサンプル開いたらBuilt-In Render Pipelineだったのでこれでやってみます。
追記:サンプルシーンはBuilt In Render Pipelineでセットアップされてるけど、シェーダーを変えればいいっぽい
URPでサンプルシーンを開いてみたらマテリアルエラーになったけど、Litシェーダーに変えたら大丈夫だった。


公式マニュアルによると、ObiFluid自体はレンダーパイプラインに依存しないらしいです。



Obiは物理エンジンです。Obi Fluid(下記参照)の重要な例外を除き、Obiアセットはカスタムレンダリングを実行または必要とせず、特定のマテリアルやシェーダーに関連付けられていません。これは、パイプラインに依存せず、プロジェクトで使用されるレンダーパイプラインに関係なく機能することを意味します。
ただし、付属のサンプルシーンは、Unity のデフォルトの組み込みレンダーパイプライン用に作成されています。シーン内のオブジェクトが現在のレンダーパイプラインと互換性のないシェーダー/マテリアルを使用している場合、Unity はそれらをフラットなピンク色で描画します。そのため、URP、HDRP、またはカスタムパイプラインを使用している場合は、適切なレンダリングのためにサンプルシーンのコンテンツをパイプラインに変換したいと思うでしょう。
これは、Unity の自動マテリアル変換を使用して、ある程度まで行うことができます。Unity がシーン内のすべてのマテリアルの変換に失敗する場合がありますが、その場合は、残りのピンク色のオブジェクトを選択して、そのマテリアル/シェーダーを URP/HDRP 互換のものに変更するだけです。
更に追記:URPで動かしたらデフォルトで灰色だったため設定が必要だった
URPでやったら液体が灰色になってしまい、パイプラインの設定ファイルをちょっといじる必要がありました。
まぁちょこっと設定すればBIRPと同じ見た目にできました。
HDRPの場合はカスタムシェーダーを使う必要があるっぽいけど、作者さんが動画で解説してくれてます。
しかし最近HDRP使ってないからなあ…。以前記事書いたけど反応が微妙だったし、マシンスペックも要求されるから正直コスパが悪いかも…w
機会があればいじるかもしれないけど、普及率を考えたらBIRPかURPで良い気がします。
セットアップなど
デフォルトだとサンプルはBuilt-In Render Pipelineで作られてるっぽいのでそれで。
SRPでやったらマテリアルエラーになってしまった。


なんかウィンドウが出るけど無視して進めていきます。
これアセットの作者さんが作ったunityバージョンと違うから出るのかな…?Ju TPS3っていうアセットをUnity6でインポートした時も出たんだけども。
まぁ普通に動くのでこのまま進めます。
サンプルとか動かしてみる
サンプルがたくさんあるため全部動かしてみます。
ComputeFluid
これはGPUで100%実行されるらしい?内蔵グラフィックのみのノートPCで動かしたらクラッシュしました…。


ObiはGPUで動作しますか?
はい、お選びください。Obiには、BurstとComputeの2つの異なるエンジンバックエンドが付属しています。Burst バックエンドは CPU で 100% 実行され、Compute バックエンドは GPU で 100% 実行されます。 Obi Physics for Unity - FAQObi - Unified Particle Physics for Unity - FAQ
ある程度VRAMないときついのかもしれない。
ゲーミングPCのほうで動かしてみたけど、確かにこれは重そうだわ…。
これ以外のやつはノートでも動いたため、無理にこれ使わなくてもいいかなw
FaucetAndBucket
これは蛇口から水滴がしたたり落ちる感じのサンプルです。
FluidFoam
こんな感じでコライダーと干渉させることもできるようです。
FluidGranular
液体以外にも個体のシミュレーションもできるみたいです。
FluidJet
これは割と実用性高そうかな…このまま配置して噴水とかにも使えそう。
FluidKarmanVortex
これあれだ、スパコンの富岳がやってたコロナの飛沫感染シミュレーションみたいなやつだw
FluidMill
水車みたいな使い方もできるようですΣ(゚Д゚)
ぶっかけるサンプルとしては結構使えそうw
FluidMixing
ああ、これblenderの流体シミュレーションでやったやつと同じ感じかな。
blenderの流体シミュレーションは↓これね。
FluidOverlapQuery
これはなんだろ…?
粒子をコントロールして図形作ったり色を変えられますみたいな?
FluidRayleighTaylor
これは粒子が混ざる感じだけど、重力以外にも力が働いてる感じ?
FluidSmoke
なんかスプレーみたいなのに使えそう。
SmokeパーティクルみたいなのはUnity公式のパーティクルアセットにあった気がするけど、こっちのほうがスプレーっぽくて慣れれば色々制御できそう。
FluidViscosity
これは以前動かしていじったな…。このべちょって感じがぶっかけに丁度良さそうなのだけど、制御がちょっと難しかった。
MultiphaseFluidBuoyancy
こういうシミュレーションみたいな感じのもできるっぽい。
Raclette
おっ、これはドロッとしてるからぶっかけに使えそうだな…(;゚д゚)ゴクリ
RollingFriction
なんか砕石みたいなものが降ってくるシミュレーション。
以前やったファンタジーRPGの土属性魔法でこんなのあったような。
SimpleFluid
これはシンプルな液体が出てくる感じ。
SolidfyOnContact
あれ、これWASDで動かせるって書いてあるけどダメだな…。
InputSystem周りで調整が必要とか?
エラー内容を見てみる
あー、やっぱInputとかKeyとか書いてある。Player Settingsがなんとかって書いてあるから設定で直るかな?


InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings.
UnityEngine.Input.GetKey (UnityEngine.KeyCode key) (at :0)
Obi.LookAroundCamera.LateUpdate () (at Assets/Obi/Samples/Common/SampleResources/Scripts/LookAroundCamera.cs:56)
指導力に定評のあるChatGPTパイセンに聞いてみる
ChatGPTパイセンは指導力に定評があるから、彼に聞けばなんとかなるに違いない。




ObiFluidというunityアセットのサンプルを動かしているのですが、そのうちの一つにキー入力を受け付けるものがあります。しかしキー入力をしても何も起こらずエラーが出ていました。以下がエラー文です。


エラー文を見ると、現在のUnityプロジェクトでは「Input System package」がアクティブになっており、古い「UnityEngine.Input」クラスを使用するスクリプト(ObiのLookAroundCameraスクリプト)が動作しないことが原因のようです。
以下の手順で解決できます。
解決方法
- Player SettingsでActive Input Handlingを「Both」に変更
古いUnityEngine.Inputクラスをサポートする設定に戻す方法です。
Unityのメニューから Edit > Project Settings を開きます。
左側のリストから Player を選択します。
Other Settings セクションを展開します。
Active Input Handling を探し、値を “Both” に変更します。
Unityを再起動して変更を反映します。
これにより、Obiのサンプルで使用されている古いInput APIも動作するようになります。
あー、これ前も別のアセットいじってたときもなったような。
Project設定でアクティブ入力設定を両方にする
↓ここね。
これで動いた!これはぶっかけに使えそうだな…(;゚д゚)ゴクリ
これはWASDで移動、スペースキーで粘度の高い液体を発射できるサンプルのため、ぶっかけに使えそうです!
以前ObiFluidいじった時は下手に一から作ろうとして挫折したしな…このサンプルいじって改変すればいいか。
まぁ当時はChatGPTなんていう気の利いたものもなかったから仕方ないけども。
FluidMaze
これもキー入力が必要なため、インプットシステムを「両方」に設定しないと動きませんでした。
AとDキーを使って傾けて、水を動かしていくサンプルみたいです。
これ難しいぞ…Σ(゚Д゚)水を全部ゴールまで持ってくのはきついっす。
まぁこういう制御もできてゲームも作れるってことで。
WhiskeyBottle
これなんだ…?透明なウイスキーボトルが回っていて水が出て終わった。
しかし制御が難しいのは相変わらずなので、単にぶっかけに使いたいなら別の方法のほうが手軽かな…?
しかしObiFluidはパラメーターが多くて制御が難しいので、単にぶっかけに使いたいなら別の方法が手軽かな…?
blenderで液体シミュレーションをするとそれっぽい液体メッシュが取り出せるので、これにシェイプキー仕込んだりして動かすのもアリかもしれません。まぁ全部手動で動かすことになるけど(;^_^A
↓液体メッシュをUTS3で透過するとこんな感じにできます。デメリットとしては横から見るとちょっと浮いてしまい違和感が出ることかな。


あとはURPやHDRPだとメッシュに沿ってデカールっていうテクスチャみたいなやつを設置できるっぽいので、そういうのでやる手もあるかもしれない。
つづく?
とりあえずサンプル全部動かせたから今回はここまで。
たぶんサンプルいじりながらやれば、良い感じに白濁液がぶっかけられる感じにできると思うんだけどなあ。
以前いじった時は一からやろうとして挫折したので、まぁ極力ラクして改変する方向でいじってみようと思いますw
追記:サンプルいじったら割と良い感じにぶっかけできた
サンプルをいじって使ってみたけど、割と良い感じにぶっかけできそうです。
ちょっと影が強い感じだけど、見た目も修正できるっぽいので今度やってみます。