これはUnity アセット真夏のアドベントカレンダー 2020 Summer!13日目の記事です。
昨日はJaol-Industryさんによる、「え!!5分で38言語対応を!? できらあっ!【AutoLocalization】」でした。
今回はアセットの紹介をしていきます。
紹介するのは「R.A.M 2019 - River Auto Material 2019」。
川や湖を自動的に作成するアセットです。
このアセットはR.A.M - River Auto Materialのリニューアル版です。
どんなアセット?
通称R.A.Mと呼ばれるアセットで、高品質な川や湖を作成できるアセットです。
川周辺の地形の調整や、川のカスタマイズ(速度、泡、水深、滝)を細かく調整できます。
残念ながら私は旧バージョンのR.A.Mをさわったことはないので、変更点などはわかりません。
この記事では初めての方向けに基本的な使い方を紹介します。
サポートされているUnityのバージョン
以下の通りになっています。
Pack support unity:
- Unity 2018.3+
- Unity 2019 +
- Unity 2018.3 HD RP 4.9
- Unity 2019.1+ LW RP 5.7+
- Unity 2019.1+ HD RP 5.7+
- Unity 2019.2 HD RP 6.9
- Unity 2019.2 LW RP 6.9+
- Unity 2019.3 HD RP 7.18
- Unity 2019.3 URP 7.18
- Unity 2019.3 URP 7.2+
- Unity 2019.3 HD RP 7.2+
- Unity 2019.4 LTS HD RP
- Unity 2019.4 LTS URP
- New Unity Terrain 2018.3+ support
- SRP Batcher support at HD and URP 7.18+ Unity 2019.3+;
2018.2より古いUnityでは、旧バージョンのみ動作します。
開発環境
Unity2019.4.6f1
R.A.M 2019 ver1.3.9
URP ver7.3.1
セットアップ
URPサポートファイルのインポート
インポート完了後に、NatureManufacture Assets/River Auto Material*1にサポートパックがあるのでインポートします。
今回はURP 7.2のパックをインポートします。7.2とありますがこれは7.2と7.3をサポートします。
インポートすると、Shader、Prefab、Meshが置き換えられます。
URPアセットの変更
URPアセットのOpaque TextureとDepth Textureを有効化します。
しないと↓のようなエラーがでます。
URPアセットはAssets/Settingフォルダにあります。
現在のURPアセットはProjectSettingから確認できます。
デフォルトだとUniversalRP-HighQualityなので、これのOpaque TextureとDepth Textureを有効化します。
デモシーンの確認
デモシーンはNatureManufacture Assets/River Auto Material/Demoにあります。
「URP」とついたものがURP用のデモになります。最後にMobileとついているものがモバイル用です。
URP RAM 2019 Demo Offsetシーンを開いてみるとこのような感じです。
テレインと川と海、さらに浮遊大陸まであります。
シーン内にはところどころにインフォメーションが置いてあります。
川の様子
流れの早い場所の様子
謎の浮遊大陸 端から水が落ちています
実際に試してみる(クイックスタート)
デモシーンにあるTerrainに川を作ってみます。
River Splineの作成
Create/3D Object/Create River SplineでRiver Splineを作成します。
RiverSplineには、SamSplineというコンポーネントがアタッチされていますが、
これのパラメータを調整して川を作成していきます。
スプラインの作成
ポイントを作成しスプラインを作成します。
Ctrl+左クリックでポイントを追加。
Shift+左クリックでポイント間にポイントを挿入。
Ctrl+Shift+左クリックでポイントの削除を行います。
スプラインを作成したら、Basic/Set object pivot to centerでpivotの位置を中央にしておきます。
こうすることでSceneビューからさわりやすくなります。
川幅と位置を調整
Basic/Mesh settings/River widthで川幅を一括で調整できます。
数値を変えた後は横のChange width dor whole riverボタンを押さないと反映されません。
幅を全て統一したくない場合は Add with noiseでノイズを加えましょう。
幅をそれぞれランダムに増減します。
また、Sceneビューから位置や角度、幅を直接変更もできます。
Pointsタブからポイントごとに細かく設定することも可能です。
ポリゴン数の変更
ここはお好みで。
Basic/Triangles densityのUVスクロールからポリゴン数を変更できます。
この時Sceneビューをワイヤーフレームに変えるとわかりやすいです。
スプラインのプロファイルを設定
Mesh settingのSpline profileからスプラインのプロファイルを設定できます。
青々した川、エメラルドな川、沼や道路など用意されているもので10種類ほどあります。
ちなみに川は斜面があると自動的に小さい滝などが作成されます。
UV設定
Basic/UV settingsからUVスケールやテクスチャ全体の回転などを変更できます。
川にペイントする
Ram SplineのVertex Colorから頂点カラーを変えることができます。
RチャンネルはSlow Water(よくわからなかった)をペイントします。
Gチャンネルは小さな流れをペイントします。
Bチャンネルは大きな流れをペイントします。
Aチャンネルは、アルファを使用して他の水アセットとブレンドする時に使います。
ここで頂点カラーを変えていない所は、川の角度などに応じて自動的に流れがつけられます。
地形へのスナップ
BasicにあるSnap/Unsnap mesh to terrainボタンから、スプラインを地形に合わせてスナップすることができます。
下のような地面から浮いている川でも。
ボタン1つで地形に合わせることができます。
また途中にCapsuleなどを置くと、オブジェクトに沿ってスナップすることもできます。
流れを制御する
Ram SplineのFlow Mapから川の流れを制御できます。
Flow Map Manual
手動で川の流れを設定します。Terrainと同じ要領でSceneビューでドラッグすると流れを変えられます。
Flow U Speedが縦方向、Flow V Speedが横方向の流れになります。
Uをマイナスにして流れが逆方向にすることも。
Show flow directionsボタンを押すことで川の流れを矢印で視覚化できます。
もちろんこのまま流れを変えることもできます。
Flow Map Automatic
ある程度自動で流れを設定します。
Add noiseでは、それぞれのスケールに流れの加速や減速など自然に見える影響を与えます。
マニュアルによると強くしすぎない方がいいらしい。
川周辺のTerrainを書き換える
このままでは斜面に川のテクスチャが貼られているだけにしか見えないので、
周囲のTerrainを調整します。RAMにはこれを自動で行う便利な機能が用意されています。
Terrainのカーブ
Ram SplineからTerrainを選び、Terrain carve/Shor terrain shapeボタンを押します。
Terrainへの影響範囲が緑で表示されます。
Inspectorからカーブ曲線や、影響範囲を設定できます。
問題なければCarve terrainボタンを押します。
※この時LayersがTerrainのLayerを含んでいることを確認しましょう。含まれていないとTerrainに影響がでません。デフォルトでNothingになっています。
すると平坦だった斜面を見栄えの良い地形に自動で整形してくれます。
川の中も底ができています。
Terrainのペイント
かなり川っぽくなりましたが、川の中もその周辺も、Terrainのテクスチャが全て一緒です。
しかし、テクスチャも自動で書き換えてくれる機能も用意されています。
Terrain carveの下にあるTerrain paintがそれにあたります。
Splat idが書き込むテクスチャです。
とりあえず初期設定のまま、Paint Terrainボタンを押してみます。
無事、川周辺のテクスチャを自動で調整してくれました。
今回は使いませんでしたが、周囲にある草や木を自動で削除する機能もあります。
シミュレートで簡単作成
ここまで記事を読んでいただいた方で「なんだか難しそう」「複雑そう」と感じた方いらっしゃると思います。
しかし、いままで解説した機能を把握しなくとも、手っ取り早く川を作る機能があります。
その名もシミュレート機能です。
とりあえずまずはRiver Splineを作成します
Ram SplineにSpline profileを設定します。
Ram SplineをSimulateに切り替えます。
Terrain上に川の始点となる所を決めてCtrl+左クリックでポイントを作成します。
Show simulated Riverボタンを押すと、Sceneビューに作成する川の図が緑色で表示されます。
問題なければ、Generate Simulated Riverボタンを押します。
すると、Terrainに沿って自動で川が作成されます。
Ram SplineからTerrainを選択し、
LayersをDefaultにし、Carve terrainとPaint Terrainボタンをします。
これで完了です。
地形も自動でいい感じにしてくれます。
シミュレート機能を使うことで、数回クリックするだけで簡単に川を作成することができました。
自動生成のためおかしい箇所があるかもしれませんが、その場合はパラメータを変えたり、
ポイントの移動やノイズを混ぜるといいでしょう。
最後に
一通り川を作る方法についてまとめました。
付属のマニュアル通りに進めましたが、複雑なため省いた箇所がいくつかあり、
まだ多くの使っていない機能もあるので去年のWeather Makerと同様に続編を出す予定です。
難しそうと思った方はとりあえずシミュレート機能から始めてみることをオススメします。
最短4クリックで川と周辺の地形を生成することができます。
以上となります。
明日のUnity アセット真夏のアドカレはさとやんさんによる、「UnityのPanda BTでシンプルにBehaviour Treeを実装する」です。
参考資料
Universal Render Pipeline Asset | Universal RP | 7.1.8
他のアセットの紹介記事はこちら↓
他、間違っている箇所、わかりにくい所がありましたらコメントにお願いします。
※本記事にはAssetStoreアフィリエイトリンクが含まれています。
*1:ドキュメントだとHD and LW RP supportフォルダにあるとのことですがそんなフォルダはない