この記事でのバージョン
Unity 2019.3.7f1
はじめに
Simple Interactive Water for URP VR
という3Dで波の動きや水のしぶきを表現するアセットが発売されたので、
今回はそれを試してみようという感じの記事です!
Simple Interactive Water for URP VR | 2D Water | Unity Asset Store |
イメージとしては以下のような感じ。
Simple Interactive Water for URP VR
— カン@Game Creator(Unity/VR/Switch/Steam) (@Kan_Kikuchi) 2020年4月13日
+
SteamVR Plugin pic.twitter.com/w7CgtlMYXM
なお、2Dで水の表現をしたい場合は以下のアセットがオススメです。
導入
導入は他のアセットと同様、Unity Asset Storeからインストールするだけですが、
対応するUnityのバージョンが2019.3以上なのには注意が必要です。
また、インストール時に以下のようなウィンドウが表示されたら、Install/Upgradeを押しましょう。
インストール後、とりあえずサンプル(SimpleInteractiveWaterSample)を動かしてみると、
最初はシェーダーが機能していませんが、
Project Settingsの
GraphicsにあるScriptable Render Pipeline SettingsにUniversalRP-HighQuality等を設定すれば、
正常に機能するようになります。
なお、Scriptable Render Pipelineについては以下の記事を参照のこと。
ちなみにドキュメントは残念ながら全部英語ですが、
文章は簡潔かつ画像付きなのでそこまで困ることもないと思います。
構成と使い方
次にこのアセット(サンプル)の構成ですが、大きく分けて2つのオブジェクトで構成されています。
1つ目はサンプルでいうWater Quadで、水を表現するオブジェクトです。
各スクリプトの役割は以下のような感じ。
- Wave Refraction Changer : 設定したMain Cameraカメラが水面の上にあるか下にあるか判定する。
- Quad Mesh Subdivider : メッシュを細分化する。Sub Div Countで解像度を設定可能。
- Wave Simulator : 波のマップテクスチャを更新する。Wave Speedで波の速度を変更可能。
なお、MeshRendererとColliderも必要です。
2つ目はサンプルでいうIntaractionRigidBodyで、水にぶつかるオブジェクトです。
各スクリプトの役割は以下のような感じ。
- Wave Interferer : Wave Simulatorを持つオブジェクトと衝突すると波を起こす。Water DropやWater Splashに衝突時に発生するエフェクトを設定可能。
こちらはColliderとRigidbodyが必要です。
この2つを配置すればどこでも波を発生させられるので、ざっくり使い方を説明すると
「Water Quadで水面を設置し、
ColliderとRigidbodyを持つオブジェクトにWave Simulatorを付けてWater Quadにぶつける」
みたいな感じになります。
VRでの使い方
アセットのタイトルにVRと付いてるように、VR上でも使えるようなので、それも試してみました。
まず、このアセットはシングルパスでないと上手く機能しないので
Project SettingsのPlayerにあるStereo Rendering ModeをSingle Passにします。
次にUnityでSteam向けのVRゲームを開発する用のアセットSteamVR Pluginをインストールします。
SteamVR Plugin | Integration | Unity Asset Store |
なお、SteamVR Pluginの導入については以下の記事を参照の事。
SteamVR Pluginを導入後、サンプル(Interactions_Example)を開くと、
最初はシェーダーが機能していません。(SRPに対応しているシェーダーではないため)
なので、シェーダー置き換え用の処理を実行します。
これでほとんどシェーダーがSRPに対応しているものになりますが、
いくつかは置き換え出来てないので、手動でシェーダーを変更します。
シェーダーの変更が終わったら、WaterQuadを配置し、Scaleでサイズ調整をします。
あとはRigidbodyが付いてるオブジェクトを検索し、全てにWater InterfererをAddするだけ。
これで冒頭のような状態に出来ます。
Simple Interactive Water for URP VR
— カン@Game Creator(Unity/VR/Switch/Steam) (@Kan_Kikuchi) 2020年4月13日
+
SteamVR Plugin pic.twitter.com/w7CgtlMYXM
おわりに
かなり簡単に使える上にキレイな水の表現が出来る神アセットでした……!
ただしSRP前提なので今までのシェーダーが使えなかったり、VRはシングルパス前提だったりと、
使える場面が限られている事には注意が必要です。
Simple Interactive Water for URP VR | 2D Water | Unity Asset Store |