ねこ丸本舗 2024/07/03 03:53

液体表現 Unityアセット「Obi Fluid」を使う

はじめに

エロゲを作っていると「液体表現」が欲しくなることがあると思います。
私も「液体表現」をしたくて Unity Asset Storeを検索していたところ「Obi Fluid」を見つけました。

https://assetstore.unity.com/packages/tools/physics/obi-fluid-63067

「Obi Fluid」とは?

Obi は、変形可能なさまざまなマテリアルの動作をシミュレートできる、高度な粒子ベースの物理エンジンです。
~
Obi Fluidを使えば、AAA品質の完全マルチスレッド式流体シミュレーションを簡単に作成することが可能です。流体はお互いに反応し、硬い物質に影響を与えたり、与えられたり(物体を浮かしたり沈んだりさせることもできます!)、また表面にくっつけることも可能です。

と難しいことが書いてありますが、まずはなにができるのかUnity Asset Storeに登録されている動画を見ればわかりやすいかと思います。

「Obi Fluid」の導入

Unity Asset Storeで「Obi Fluid」のアセットを購入して Package Managerでプロジェクトにインポートしてください。
(いつもやっていることだと思いますので、細かい手順は省略します)

「Obi Solver」と「Obi Emitter」の生成

[ GameObject ]→[ 3D Object ]→[ Obi ]→[ Obi Emitter ] を選択

Hierarchyに「Obi Solver」と「Obi Emitter」が生成されます。


「Obi Solver」コンポーネントの設定

Hierarchyで「Obi Solver」オブジェクトを選択し、もし以下の画像と同様の警告が出ていた場合は「Package Manager」から以下のパッケージをインポートして Unityエディタを再起動してください。
1. 「Burst」
2. 「Collections」
3. 「Mathematics」


「Obi Emitter」コンポーネントの設定

Hierarchyで「Obi Emitter」オブジェクトを選択し「Obi Emitter」コンポーネントの「Blueprint」を設定します。


「Camera」に「Obi Fluid Renderer」コンポーネントをアタッチする

カメラとして使用するオブジェクト(Main Camera)を選択し「Add Component」ボタンから「Obi Fluid Renderer」をアタッチしてください


「Obi Fluid Renderer」コンポーネントの設定

「Obi Fluid Renderer」コンポーネントの「Particle Renderers」にHierarchyから「Obi Emitter」オブジェクトをドラッグ&ドロップで設定してください。


液体のかかるオブジェクトを生成

Hierarchyに液体のかかるオブジェクトを生成します。
ここでは「Sphere」(球体)を生成します。


「Sphere」オブジェクトに「Obi Collider」コンポーネントをアタッチする

「Sphere」を選択しInspectorの「Add Component」ボタンから「Obi Collider」コンポーネントをアタッチしてください。


Sceneビューで各オブジェクトの位置を調整する

Sceneビューを確認しながら各オブジェクトの位置を調整してください。
各オブジェクトの機能は以下の通り
1. 「Obi Emitter」 液体の射出されるオブジェクトです。初期設定ではZ軸方向に液体が射出されるのでかける対象となるオブジェクトに向けてください。
2. 「Sphere」 今回液体がかけられる対象のオブジェクトです。「Obi Emitter」から射出された液体が当たる位置に配置してください。
3. 「Camera」 今回液体がかけられる対象の「Sphere」が写る位置に配置してください。

とりあえず実行してみる

これで事前準備は完了です。とりあえず実行してみましょう。
なにかへんなものがぽとぽと落ちていくのが確認できると思います。

設定を調整する

このままだとぜんぜん期待していたものと違うかと思います。
設定を調節します。
以下に調整すべき代表的な項目を記述します。

「Obi Emitter」オブジェクト

・「Obi Emitter」コンポーネント
1. 「Speed」 液体の移動するスピードを設定します。値を大きくすると液体の移動が速くなりさらっとした液体のようになります。
2. 「Lifespan」 液体の消滅するまでの長さを設定します。値を大きくすると液体が長く残存するようになります。

・「Disk」コンポーネント
1. 「Radius」 液体の射出口の大きさを設定します。値を大きくすると液体が広い範囲から射出されます。

・「Obi Particle Renderer」コンポーネント
1. 「Render」 液体を表現するパーティクルを描画するスイッチです。OFFにするとより液体っぽい描画となります。
2. 「Particle Color」 液体を表現するパーティクルの色を設定します。
3. 「Radius Scale」 液体を表現するパーティクルの大きさを設定します。ある程度大きくしたほうがパーティクルの間が見えず、より液体っぽい描画となります。


「Sphere」(液体をかけられる対象)オブジェクト

・「Obi Collider」コンポーネント
1. 「Material」 液体をかけられるオブジェクトの物理的な質感を設定します。これにより液体が絡みつくような表現が可能となります。



これらの設定をUnityエディタを再生しながら調整して理想的な液体(?)を作りましょう。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索