MRが楽しい

MRやVRについて学習したことを書き残す

Particleを使ってシャワーヘッドから出る水の流れを表現する

本日は Unity の小ネタ枠です。
Particleを使ってシャワーヘッドから出る水の流れを表現してみたので記事にします。
f:id:bluebirdofoz:20211106231431j:plain

Particleを使って水の流れを表現する

今回は以下の記事を参考に Particle の設定を行ってみました。
ics.media

所々カスタムして作った水の流れの Particle が以下になります。
f:id:bluebirdofoz:20211106231446j:plain

ポイントは元の参照の記事にある通り、以下の4点です。
・軌跡の表現に[Trails(軌跡)]モジュールを利用する
・放出位置の調整に[Shape(シェイプ)]モジュールを利用する
・水滴の表現に[Sub Emitters(子要素)]モジュールを利用する
・水の揺らぎの表現に[Noise(ノイズ)]モジュールを利用する

各モジュールの詳細な設定は以下の通りです。
f:id:bluebirdofoz:20211106232030j:plain
f:id:bluebirdofoz:20211106232039j:plain
f:id:bluebirdofoz:20211106232048j:plain
f:id:bluebirdofoz:20211106232058j:plain

シャワーヘッドを組み合わせる

水の流れだけだと何が起こっているのか分かりずらいので、シャワーヘッドのモデルを作成して組み合わせます。
f:id:bluebirdofoz:20211106232107j:plain

モデルをシーンに取り込んで、放出部から Particle が発生するように組み合わせました。
f:id:bluebirdofoz:20211106232116j:plain

シャワーヘッドを掴んだ時に水が放出される

最後に、シャワーヘッドを掴んだ時にのみ水が放出されるようにします。
MRTK の ObjectManipulator コンポーネントを利用します。

MRTK のインポートと基本設定

MRTK のインポートと HoloLens 向けプロジェクトの基本設定を行い、サンプルプロジェクトを作成します。
手順の詳細は以下の記事を参照してください。
bluebirdofoz.hatenablog.com

Play()とStop()関数の呼び出し

シャワーヘッドと Particle を一体化したオブジェクトに Collider と ObjectManipulator コンポーネントを設定しました。
これでシャワーヘッドを掴んで動かすことができます。
f:id:bluebirdofoz:20211106232134j:plain

更に掴んだ時に Particle の Play() 関数を呼び出すことでシャワーヘッドを掴むと Particle が開始されるようにします。
話したときには Particle の Stop() 関数を呼び出し、Particle を停止します。
f:id:bluebirdofoz:20211106232143j:plain

HoloLens2での動作確認

アプリを HoloLens2 にデプロイして動作を確認してみます。
アプリを起動すると目の前にシャワーヘッドが表示されます。
f:id:bluebirdofoz:20211106232154j:plain

取っ手の部分を掴むと水が放出されます。
そのまま持ち歩いたり、向きを変えたりもできます。
f:id:bluebirdofoz:20211106232202j:plain

手を離すと……水の流れが止まりました。
f:id:bluebirdofoz:20211106232210j:plain