Version: Unity 6.0 (6000.0)
言語 : 日本語
風のリファレンス
ハイトマップの使用

草とその他のディテール

Terrain (地形) の表面が、草の塊や他の小さなオブジェクト (岩など) で覆われている場合があります。Unity では、必要なディテールやパフォーマンスのレベルに応じて、テクスチャ化したクアッドや完全なメッシュを使用し、これらのオブジェクトをレンダリングします。

インスタンシングの詳細は、HD レンダーパイプライン (HDRP) を含む、すべてのレンダーパイプラインで使用できます。

草の生えている Terrain (地形)
草の生えている Terrain (地形)

Terrain (地形) のディテールにはいくつかのモードがあり、それぞれのモードはゲーム開発中に異なる用途で使用されます。

Mode 説明
インスタンスメッシュ Unity ではこのモードの使用を推奨しています。このモードは、Terrain (地形) 上に任意の数のメッシュを配置する必要があるほとんどのシナリオで最適だからです。

インスタンス化されたメッシュを追加するには、Add Detail Mesh を選択し、Use GPU Instancing オプションを有効にします。
Vertex Lit メッシュ レンダリングに GPU インスタンシングを使用しません。代わりに、すべてのディテールのインスタンスを 1 つのメッシュに統合します。そのため単純なシェーディングとなり、実現できるインスタンス数に制限が生じます。

Vertex Lit メッシュを追加するには、Add Detail Mesh を選択し、Render ModeVertex Lit に設定します。
草メッシュ Vertex Lit メッシュと同様に動作しますが、Unity ではこれらのメッシュは草として扱われるので、常に上向きの法線を持ち、風で動きます。

草メッシュを追加するには、Add Detail Mesh を選択し、Render ModeGrass に設定します。
草テクスチャ 風で動く草のクアッドメッシュをテクスチャから直接作成できます。カスタムメッシュを指定する必要はありません。また、ビルボード効果のために、草のクアッドを常にカメラに向けるオプションもあります。

このオプションには Add Grass Texture を選択してください。

Paint Details

草とディテールへのペイントを利用するには、Terrain Inspector のツールバーで、Paint Details ボタンを選択します。

Terrain Inspector の Paint Details
Terrain Inspector の Paint Details

オーバーレイから Paint Details にアクセスするには、以下を行います。

  1. Terrain Tools オーバーレイで、Foliage ModeFoliage Mode Menu を選択します。Foliage Mode ツールは Terrain Tools オーバーレイの最後に表示されます。
  2. Terrain Tools オーバーレイで使用可能な Foliage Mode ツールから、Paint DetailsPaint Details を選択します。

最初は、Terrain (地形) に草やディテールの描写はありません。Inspector で Edit Details ボタンをクリックすると、Add Detail Mesh および Add Grass Texture オプションを含むメニューが表示されます。いずれかのオプションをクリックすると、ペイントのために Terrain (地形) に追加するアセットを選択できるウィンドウが表示されます。

ディテールメッシュを加える

Add Detail Mesh ウィンドウ
Add Detail Mesh ウィンドウ

Detail Prefab フィールドを使用して、プロジェクトからプレハブを選択します。本物らしい外観を作成するために、各メッシュのサイズと色の決定にはランダムな係数が影響します。Unity では、このようなランダムな係数の生成に、パーリンノイズアルゴリズムを使用します。

Min WidthMax WidthMin HeightMax Height の値は、メッシュをランダムに生成する X 軸と Y 軸に沿った上下のスケーリングを指定します。

Align to Ground (%) 値は、詳細軸を地形の法線にどの程度整列させるかを指定します。0 は整列せず、100 は法線に沿って整列します。

Position Jitter (%) は、ディテールの分布のランダム性を、規則的な並びからランダムな並びに制御します。これは、Quality Settings で古い機能での分布がオフになっている場合にのみ使用できます。

Noise Seed 設定は、乱数生成のシードを設定します。一意の値を生成するために、各シード値が必要です。もし、2 つのタイプのディテールに同じシードを設定すると、まったく同じインスタンスが生成されます。Noise Spread 値は、X-Z 平面上のノイズパターンのスケーリングを参照し、値が大きいほど与えられた領域内でより多くのバリエーションがあることを示しています。

Hole Edge Padding (%) 設定は、細かいオブジェクトが穴領域の端からどのくらい離れているかを制御します。詳細は、DetailPrototype.holeEdgePadding を参照してください。

Detail Density 値は、そのサイズに対する細部の密度を制御します。これを有効にするには、Terrain Settings で設定する “Coverage” Detail Scatter モードを使用します。

Healthy ColorDry Color の設定は、カラーバリエーションを制御します。Unity は健康的な色と乾いた色の間でリニア補間を行い、メッシュのサイズに基づいて色を選択します。例えば、システムは大きなサイズのメッシュをより健康的であると見なします。このようなメッシュのリニア補間の結果は、Healthy Color の色合いにより近くなります。これらのカラー設定はインスタンスメッシュに影響しないため、Use GPU Instancing を選択すると表示されません。

Affected by Density Scale チェックボックスは、Terrain Settings で設定された Detail Density Scale 設定がこの細部に影響するかどうかを決定します。

Render ModeVertex Lit または Grass に設定できます。

Render Mode 説明
Vertex Lit シーンで、ディテールメッシュを風に吹かれても動かない固定の、Vertex Lit ゲームオブジェクトとしてレンダリングします。
Grass シーンで、ディテールメッシュをグラステクスチャに似た簡易化したライティングでレンダリングします。ディテールは、風に吹かれて動きます。

ノート: Vertex Lit または Grass の描画モードを使用してディテールにテクスチャを適用するには、テクスチャを MainTex マテリアルプロパティ (ビルトイン/URP の通常色マップでのデフォルトの設定名) に割り当てます。その他のマテリアルプロパティは、インスタンス化されていないディテールに対して考慮されません。

Use GPU Instancing

ディテールのメッシュのレンダリングに GPU インスタンシングを使用するかどうかを指定することができます。GPU インスタンシングでは、プレハブで指定されたマテリアルとシェーダーがレンダリングに使用されます。これにより、シェーダーでより多くのカスタマイズを実行でき、Shader Graph も使用できます。

各インスタンスには、Width と Height ノイズはここでも適用されますが、Healthy Color/Dry Color ノイズは無効にされます。シェーダーでは、他のランダム化の技法とともに、独自のカラーバリエーションの方法を使用できます。

Unity の GPU インスタンシングの制限の一部は、レンダリングに影響を及ぼします。 例:

  • ターゲットプラットフォームが GPU インスタンシングをサポートする必要があります。
  • シェーダーが GPU インスタンシングをサポートしている必要があります。(ほとんどのシェーダーはサポートしています)。
  • オブジェクトは 1,023 個以下のバッチで描画されます。
  • インスタンス化されたライトプローブライトやライトマップライトはサポートされません。

Unity がフレームごとに動的にインスタンス定数バッファを構築する通常のインスタンシングとは異なり、ディテールのインスタンシングは、それがターゲットハードウェアで可能な場合、CPU と GPU のパフォーマンスを向上させる永続的な定数バッファを持っています。ただし、それと引き換えに GPUメモリ使用量が少し増加します。

Use GPU Instancing を選択すると、Render Mode の設定がグレーアウトして利用できなくなります。

草のテクスチャを加える

Add Grass Texture ウィンドウ
Add Grass Texture ウィンドウ

Add Grass Texture ウィンドウ

ディテールテクスチャは草を表すテクスチャです。アセットストアからテクスチャをダウンロードするか、独自のテクスチャを作成できます。テクスチャは、何もない領域に対してアルファが 0 に設定された小さな画像です。“Grass” は汎用の用語であり、テクスチャが花や有刺鉄線コイルなどの人工物を表すこともあります。

Min WidthMax WidthMin HeightMax HeightNoise SeedNoise SpreadHole Edge Padding (%)Align to Ground (%)Position Jitter (%)Detail DensityAffected by Density ScaleHealthy ColorDry Color の各設定は、メッシュの場合と同じ働きをします。詳細については、前述の Add Detail Mesh についてのセクションを参照してください。

Billboard オプションを有効にすると、草の画像は常にカメラの方を向くように回転します。これは、草の密集したフィールドを表示する場合に役立ちます。草のかたまりは 2 次元であり、横からは見えないためです。ただし、草がまばらな場合は、個々のかたまりの回転が可視化されてしまい、奇妙な効果が生じる可能性があります。

ディテールの削除

ディテールを削除するには、削除するディテールを選択し、Edit Details ボタンをクリックして Remove を選択します。ディテールを削除すると、そのディテールを配置した地形の領域を表すデータが消去されます。


  • 2022–07–20
  • ディテールの密度と分布に関する情報を追加。
風のリファレンス
ハイトマップの使用