[unity]Brute Force - Grass ShaderとGaia等の連携(仮公開)

本来テレインに使用できないグラスシェーダーを、他のあらゆる地形アセットと一緒に使用できるようなソリューションがありましたので、その使用法のメモです。URP対応。

BRUTE FORCE STUDIO Brute Force - Grass Shader
($16.49 / 2021年8月現在)

1. セットアップ

すでに作業が完了しているテレインに、草シェーダーを追加する手順

2つのテレインを用意し、ひとつは従来どおりにし、それにこのGrass Shaderのテレイン(草地Terrain)をかぶせて使用するため、地形作成はある程度完了してから草地を作成する、という流れになると思います。

1) 新規に草地専用のterrain(以下草地Terrain)を作成

マニュアルによると「草地のジオメトリ数(geometry count)を少なくすることを強くお勧めします。草地には地上の地形ほどの精度は必要ありません」とのこと。

2) 草地Terrainの⚙MaterialにBFGrassTerrain01を設定

画像6

3) 草地TerrainにBF_Terrainスクリプトを追加

画像7

4) BF_Terrainスクリプトの terrainToCopyパラメータに、草の地形を重ねたい地形の地面を割り当てる

5)「Sync Terrain Data」ボタンを押す
草地Terrainに対象のTerrain寸法と高さのテクスチャが同期され、草地Terrainが覆いかぶさった形状になる

6) 地面レイヤーの設定
草地Terrain最初のレイヤーを「地面(地形レイヤー)」とし、Metalicを1に設定した透明なレイヤーとする。

地形レイヤーの設定は以下です

地形レイヤー
diffuse は使用しません(地面は別のテレインを使用するので、透明である必要があるため)
normal map は使用しません。
specular color は使用しません。
Metalicは1に設定します。
Size.X は 使用しません。
Size.Yは使用しません。

7) 草地Terrainへの「Grassのレイヤー」を追加

Terrain Paintの地形の2番目以降に、アセット付属の「Grassレイヤー」を追加して使用します。パフォーマンスを優先するのであれば、Grassレイヤーは1つか2つにとどめたほうが良いようです。

2. テレインへの草地形の追加

Terrain インスペクタの「Terrain Paint」ツールを使います。
地面(地形レイヤー)レイヤーで草を取り除き、Grassのレイヤーで草を描きます。

3. 草の設定

レイヤーを編集してカスタムの草にしたい場合は、アセットプロジェクト内の対応する「NewLayerXX」にアクセスしてください。

画像1

グランドレイヤー
diffuse は使用しません(地面は別のテレインを使用するので、透明である必要があるため)
normal map は使用しません。
specular color は使用しません。
Metalicは1に設定します。
Size.X は 使用しません。
Size.Yは使用しません。

草のレイヤー
diffuse は草のパターン。
normal map は色です。
specular color は草の全体的な色です。
Metalicは0に設定します。
Size.X は Tiling のサイズです。
Size.Yは、草の細さです。

Biplanar Feature (バイプラナー機能 / オプション)

地形のマテリアルプロパティの中にバイプラナー機能があり、これを使うと自動的に地面が傾斜して描画されます。

画像2

地形のテクスチャのタイリングを変更したい場合は、草素材のタイリングとオフセットを使用しないでください。

画像3

その代わりに、地形レイヤーのタイリング設定のSize.Xを使用して、個々のテクスチャのタイリングを設定することができます。

画像4

BFGrassプロパティ

画像5

グラスのアセットは、マテリアル・プロパティ・ブロックですべてコントロールされています。

重要なものから順に説明していきます。

- Grass Shading:レイヤーの暗さをコントロールします。値が低いとボトムレイヤーが非常に暗くなります。
- No-Grass Texture:(ノー・グラス・テクスチャ)。白黒のテクスチャで、草や地面の位置をコントロールします。
- Grass Pattern:草のパターン。白黒のテクスチャで、草の形をコントロールします。白い値を設定すると、より多くの草が描かれます。
- Number of Stacks:スタックの数。草のレイヤー数を指定します。値が大きいほどパフォーマンスが向上します(最大値は17)。
- Offset Normal:面の法線を基準にした草の位置のオフセット(草の高さを変えたい場合はこれを変更します
- Offset Vector:Vector3をベースにした草の位置のオフセット
- Fade Distance Start/End:フェード距離の開始/終了。パフォーマンスを維持するために草をカリングする距離。
- Minimum Number of Stacks:最小スタック数。フェードディスタンスでカリングされる際に表示するレイヤー数の最小値
- Grass Thinness:草の薄さ。草の密度を指定します。値が大きいほど、よりブロック化されます。
- Grass Thinness Intersection:草の薄さの交差点。草なしテクスチャ(地面)を中心とした草の密度の変化。
- Tiling of Grass:草のタイリング。草パターンのUVスケール、UVタイリングの代わりに使用
- Grass Cut:草のカット 地面の切り取り値。値が高いと地面が消えます。
- Use RenderTexture Effect:RenderTexture Effectの使用。インタラクティブな効果を求めない場合は無効にします。
- Use Procedural Tiling:プロシージャル タイリングを使用します。草の塊を遠くからでもきれいに見えるようにするためのタイルブレーカー機能

いいなと思ったら応援しよう!