本日は Unity の小ネタ枠です。
Particleを使ってシャワーヘッドから出る水の流れを表現してみたので記事にします。
Particleを使って水の流れを表現する
今回は以下の記事を参考に Particle の設定を行ってみました。
ics.media
所々カスタムして作った水の流れの Particle が以下になります。
ポイントは元の参照の記事にある通り、以下の4点です。
・軌跡の表現に[Trails(軌跡)]モジュールを利用する
・放出位置の調整に[Shape(シェイプ)]モジュールを利用する
・水滴の表現に[Sub Emitters(子要素)]モジュールを利用する
・水の揺らぎの表現に[Noise(ノイズ)]モジュールを利用する
各モジュールの詳細な設定は以下の通りです。
シャワーヘッドを組み合わせる
水の流れだけだと何が起こっているのか分かりずらいので、シャワーヘッドのモデルを作成して組み合わせます。
モデルをシーンに取り込んで、放出部から Particle が発生するように組み合わせました。
シャワーヘッドを掴んだ時に水が放出される
最後に、シャワーヘッドを掴んだ時にのみ水が放出されるようにします。
MRTK の ObjectManipulator コンポーネントを利用します。
MRTK のインポートと基本設定
MRTK のインポートと HoloLens 向けプロジェクトの基本設定を行い、サンプルプロジェクトを作成します。
手順の詳細は以下の記事を参照してください。
bluebirdofoz.hatenablog.com
Play()とStop()関数の呼び出し
シャワーヘッドと Particle を一体化したオブジェクトに Collider と ObjectManipulator コンポーネントを設定しました。
これでシャワーヘッドを掴んで動かすことができます。
更に掴んだ時に Particle の Play() 関数を呼び出すことでシャワーヘッドを掴むと Particle が開始されるようにします。
話したときには Particle の Stop() 関数を呼び出し、Particle を停止します。
HoloLens2での動作確認
アプリを HoloLens2 にデプロイして動作を確認してみます。
アプリを起動すると目の前にシャワーヘッドが表示されます。
取っ手の部分を掴むと水が放出されます。
そのまま持ち歩いたり、向きを変えたりもできます。
手を離すと……水の流れが止まりました。