Raspberlyのブログ

Raspberlyのブログ

Unityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。そろそろブログタイトル決めたい

【アセット紹介】R.A.M 2019 - River Auto Material 2019で川を作る【Unity】

これはUnity アセット真夏のアドベントカレンダー 2020 Summer!13日目の記事です。
昨日はJaol-Industryさんによる、「え!!5分で38言語対応を!? できらあっ!【AutoLocalization】」でした。

f:id:Raspberly:20200811195441p:plain

ハッシュタグ : #アセットアドカレ2020

 

今回はアセットの紹介をしていきます。
紹介するのは「R.A.M 2019 - River Auto Material 2019」。
川や湖を自動的に作成するアセットです。

f:id:Raspberly:20200812231509p:plain

このアセットはR.A.M - River Auto Materialのリニューアル版です。

どんなアセット?

通称R.A.Mと呼ばれるアセットで、高品質な川や湖を作成できるアセットです。
川周辺の地形の調整や、川のカスタマイズ(速度、泡、水深、滝)を細かく調整できます。

f:id:Raspberly:20200813031318p:plain

 

公式サイト

残念ながら私は旧バージョンの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サポートパックがあるのでインポートします。

f:id:Raspberly:20200809022546p:plain

今回はURP 7.2のパックをインポートします。7.2とありますがこれは7.2と7.3をサポートします。
インポートすると、Shader、Prefab、Meshが置き換えられます。

f:id:Raspberly:20200809023818p:plain

 

URPアセットの変更

URPアセットのOpaque TextureとDepth Textureを有効化します。
しないと↓のようなエラーがでます。

f:id:Raspberly:20200809025449p:plain

 

URPアセットはAssets/Settingフォルダにあります。

f:id:Raspberly:20200809025410p:plain

現在のURPアセットはProjectSettingから確認できます。

f:id:Raspberly:20200809030139p:plain


デフォルトだとUniversalRP-HighQualityなので、これのOpaque TextureDepth Textureを有効化します。

f:id:Raspberly:20200809030346p:plain

 

 

 

デモシーンの確認

デモシーンはNatureManufacture Assets/River Auto Material/Demoにあります。
「URP」とついたものがURP用のデモになります。最後にMobileとついているものがモバイル用です。

f:id:Raspberly:20200809124541p:plain

 

URP RAM 2019 Demo Offsetシーンを開いてみるとこのような感じです。
テレインと川と海、さらに浮遊大陸まであります。

f:id:Raspberly:20200809130746p:plain

シーン内にはところどころにインフォメーションが置いてあります。

f:id:Raspberly:20200809135437p:plain

川の様子

f:id:Raspberly:20200809142222g:plain

流れの早い場所の様子

f:id:Raspberly:20200809144828g:plain

謎の浮遊大陸 端から水が落ちています

f:id:Raspberly:20200809154336g:plain



 

 

 

 

実際に試してみる(クイックスタート)

デモシーンにあるTerrainに川を作ってみます。

f:id:Raspberly:20200812221833p:plain

River Splineの作成

Create/3D Object/Create River SplineでRiver Splineを作成します。

f:id:Raspberly:20200812030952p:plain

f:id:Raspberly:20200813011930p:plain

RiverSplineには、SamSplineというコンポーネントがアタッチされていますが、
これのパラメータを調整して川を作成していきます

f:id:Raspberly:20200813012520p:plain

 

スプラインの作成

ポイントを作成しスプラインを作成します。

 

Ctrl+左クリックでポイントを追加。
Shift+左クリックでポイント間にポイントを挿入。
Ctrl+Shift+左クリックでポイントの削除を行います。

f:id:Raspberly:20200812223712g:plain

 

スプラインを作成したら、Basic/Set object pivot to centerでpivotの位置を中央にしておきます。

f:id:Raspberly:20200812223612p:plain

こうすることでSceneビューからさわりやすくなります。

f:id:Raspberly:20200812224132g:plain

 

 

川幅と位置を調整

Basic/Mesh settings/River widthで川幅を一括で調整できます。
数値を変えた後は横のChange width dor whole riverボタンを押さないと反映されません

f:id:Raspberly:20200812224629p:plain

幅を全て統一したくない場合は Add with noiseでノイズを加えましょう。

f:id:Raspberly:20200812225002p:plain
幅をそれぞれランダムに増減します。

f:id:Raspberly:20200812224750p:plain

 

また、Sceneビューから位置や角度、幅を直接変更もできます。

f:id:Raspberly:20200812233050g:plain

 

Pointsタブからポイントごとに細かく設定することも可能です。

f:id:Raspberly:20200812231143p:plain

 

 

 

ポリゴン数の変更

ここはお好みで。
Basic/Triangles densityのUVスクロールからポリゴン数を変更できます。

f:id:Raspberly:20200812230124p:plain

この時Sceneビューをワイヤーフレームに変えるとわかりやすいです。

f:id:Raspberly:20200812225821p:plain

 

 

 

スプラインのプロファイルを設定

Mesh settingのSpline profileからスプラインのプロファイルを設定できます。
青々した川、エメラルドな川、沼や道路など用意されているもので10種類ほどあります。

f:id:Raspberly:20200812232949p:plain

f:id:Raspberly:20200812233207g:plain

ちなみに川は斜面があると自動的に小さい滝などが作成されます

 

 

UV設定

Basic/UV settingsからUVスケールやテクスチャ全体の回転などを変更できます。

f:id:Raspberly:20200813001608p:plain

 

川にペイントする

Ram SplineのVertex Colorから頂点カラーを変えることができます。

f:id:Raspberly:20200813001258p:plain

RチャンネルはSlow Water(よくわからなかった)をペイントします。
Gチャンネルは小さな流れをペイントします。
Bチャンネルは大きな流れをペイントします。
Aチャンネルは、アルファを使用して他の水アセットとブレンドする時に使います。

f:id:Raspberly:20200813000918g:plain

ここで頂点カラーを変えていない所は、川の角度などに応じて自動的に流れがつけられます。

 

 

地形へのスナップ

BasicにあるSnap/Unsnap mesh to terrainボタンから、スプラインを地形に合わせてスナップすることができます。

f:id:Raspberly:20200813002231p:plain

下のような地面から浮いている川でも。

f:id:Raspberly:20200813001934p:plain

ボタン1つで地形に合わせることができます。

f:id:Raspberly:20200813002007p:plain

また途中にCapsuleなどを置くと、オブジェクトに沿ってスナップすることもできます。

f:id:Raspberly:20200813002739p:plain

 

 

 

流れを制御する

Ram SplineのFlow Mapから川の流れを制御できます。

f:id:Raspberly:20200813003552p:plain

Flow Map Manual

手動で川の流れを設定します。Terrainと同じ要領でSceneビューでドラッグすると流れを変えられます。
Flow U Speedが縦方向、Flow V Speedが横方向の流れになります。
Uをマイナスにして流れが逆方向にすることも。

f:id:Raspberly:20200813010458g:plain
Show flow directionsボタンを押すことで川の流れを矢印で視覚化できます

f:id:Raspberly:20200813010416p:plain

もちろんこのまま流れを変えることもできます。

Flow Map Automatic

ある程度自動で流れを設定します。
Add noiseでは、それぞれのスケールに流れの加速や減速など自然に見える影響を与えます。
マニュアルによると強くしすぎない方がいいらしい。

 

 

 

川周辺のTerrainを書き換える

f:id:Raspberly:20200813012901p:plain

このままでは斜面に川のテクスチャが貼られているだけにしか見えないので、
周囲のTerrainを調整します。RAMにはこれを自動で行う便利な機能が用意されています。

 

Terrainのカーブ

Ram SplineからTerrainを選び、Terrain carve/Shor terrain shapeボタンを押します。

f:id:Raspberly:20200813013201p:plain

 

Terrainへの影響範囲が緑で表示されます。 

f:id:Raspberly:20200813013948p:plain

Inspectorからカーブ曲線や、影響範囲を設定できます。
問題なければCarve terrainボタンを押します。


※この時LayersがTerrainのLayerを含んでいることを確認しましょう。含まれていないとTerrainに影響がでません。デフォルトでNothingになっています

f:id:Raspberly:20200813015613p:plain

 

すると平坦だった斜面を見栄えの良い地形に自動で整形してくれます。

f:id:Raspberly:20200813020016p:plain

川の中も底ができています。

f:id:Raspberly:20200813020220p:plain

 

Terrainのペイント

かなり川っぽくなりましたが、川の中もその周辺も、Terrainのテクスチャが全て一緒です。
しかし、テクスチャも自動で書き換えてくれる機能も用意されています。
Terrain carveの下にあるTerrain paintがそれにあたります。

f:id:Raspberly:20200813020853p:plain

Splat idが書き込むテクスチャです。

f:id:Raspberly:20200813021029p:plain

とりあえず初期設定のまま、Paint Terrainボタンを押してみます。

f:id:Raspberly:20200813021210p:plain

無事、川周辺のテクスチャを自動で調整してくれました。
今回は使いませんでしたが、周囲にある草や木を自動で削除する機能もあります。

 

 

 

 

シミュレートで簡単作成

ここまで記事を読んでいただいた方で「なんだか難しそう」「複雑そう」と感じた方いらっしゃると思います。
しかし、いままで解説した機能を把握しなくとも、手っ取り早く川を作る機能があります
その名もシミュレート機能です。

 

 

とりあえずまずはRiver Splineを作成します

f:id:Raspberly:20200812030952p:plain

 

Ram SplineにSpline profileを設定します。

f:id:Raspberly:20200813023426p:plain

 

Ram SplineをSimulateに切り替えます。

f:id:Raspberly:20200813023545p:plain

 

Terrain上に川の始点となる所を決めてCtrl+左クリックでポイントを作成します。

f:id:Raspberly:20200813024117p:plain

Show simulated Riverボタンを押すと、Sceneビューに作成する川の図が緑色で表示されます。

f:id:Raspberly:20200813024339p:plain

問題なければ、Generate Simulated Riverボタンを押します。

f:id:Raspberly:20200813024441p:plain

 

すると、Terrainに沿って自動で川が作成されます

f:id:Raspberly:20200813024609p:plain

 

Ram SplineからTerrainを選択し、
LayersをDefaultにし、Carve terrainPaint Terrainボタンをします。

f:id:Raspberly:20200813025120p:plain

 これで完了です。

f:id:Raspberly:20200813025557p:plain

地形も自動でいい感じにしてくれます。

f:id:Raspberly:20200813025639p:plain


シミュレート機能を使うことで、数回クリックするだけで簡単に川を作成することができました。
自動生成のためおかしい箇所があるかもしれませんが、その場合はパラメータを変えたり、
ポイントの移動やノイズを混ぜるといいでしょう。

 

 

 

 

最後に

一通り川を作る方法についてまとめました。

付属のマニュアル通りに進めましたが、複雑なため省いた箇所がいくつかあり、
まだ多くの使っていない機能もあるので去年のWeather Makerと同様に続編を出す予定です。

 

難しそうと思った方はとりあえずシミュレート機能から始めてみることをオススメします。
最短4クリックで川と周辺の地形を生成することができます。

 

以上となります。

明日のUnity アセット真夏のアドカレさとやんさんによる、「UnityのPanda BTでシンプルにBehaviour Treeを実装する」です。

 

 

 

参考資料

www.youtube.com

www.asset-sale.net

Universal Render Pipeline Asset | Universal RP | 7.1.8

 

 

 

他のアセットの紹介記事はこちら↓

raspberly.hateblo.jp

 

 

他、間違っている箇所、わかりにくい所がありましたらコメントにお願いします。

※本記事にはAssetStoreアフィリエイトリンクが含まれています。

*1:ドキュメントだとHD and LW RP supportフォルダにあるとのことですがそんなフォルダはない