On this page

HDA内でHeightField Scatterノードを使用してインスタンスを散乱させる方法は2通りあります:

Prefabインスタンス

HeightField ScatterノードをHeightFieldネットワークで使用すると、出力はポイントクラウドになります。これらのポイントには、プロジェクトの既存のUnityPrefabへのパスと共にunity_instanceアトリビュートを追加することができます。プラグインは各ポイントにPrefabインスタンスを作成するだけでなく、HeightField Scatterノードで Keep Incoming Terrain が有効な場合は、HeightFieldに関連付けられた地形も作成します。これはポイント数が少ない場合はうまく機能しますが、大規模なセットでは非効率になる可能性があることに注意してください。

木のインスタンス

より効率的な散乱方法は、TreeInstanceTreePrototypeを介して、生成されたUnity Terrainにポイントクラウドを直接供給することです。TreePrototypeではPrefabのリストを設定でき、TreeInstanceではポイントごとのインスタンスデータでポイントのリストを設定できます。この方法を使用すると、何十万もの木を効率よく散乱させることができます。

TreeProtoypeは、 height レイヤのunity_hf_tree_prototype + インデックス文字列アトリビュートで定義する必要があります。これらをプリミティブオーナーに設定しなければなりません。値は、 Assets フォルダを基準とした相対パスにします(Assets/Trees/tree1.prefabなど)。インデックス値は0で始まり、プロトタイプが増える毎に増加します。インデックスは、以下のTreeInstanceの定義で参照されるインデックスに対応しています。例えば、3つのTreePrototypeを定義するためには、以下の3つのアトリビュートを定義します:

  • unity_hf_tree_prototype0 - Assets/Tree/large_tree.prefab

  • unity_hf_tree_prototype1 - Assets/Tree/regular_tree.prefab

  • unity_hf_tree_prototype2 - Assets/Tree/small_tree.prefab

ディテールレイヤ

草や低木などの小さいサイズの環境ディテールについては、Height Fieldレイヤを指定してUnity Terrainのディテールレイヤに変換すると、効率的に描画することができます。

Unity Terrainのディテールレイヤには、Height Fieldの各値によってカバーされる領域のインスタンス数を指定する、整数値のマップが含まれています。これらの値は 0から16 までの整数でなければならないため、Height Fieldのfloat値はそのまま整数に変換されます。Height Fieldのポイントでは、0の値はインスタンスがないことを表し、1から16の値は、その高さのポイントでカバーされる領域に求められるインスタンスの数を表します。各高さのポイントによってカバーされる領域は、地形サイズを、Height Fieldレイヤのサイズから推測される Detail Resolution で割ることで決定されます。例えば、サイズが1024 x 1024、Detail Resolutionが256の地形では、ディテールレイヤの各高さのポイントは、4 x 4のエリアをカバーすることを意味します。

なお、Detail Resolutionはアトリビュートを介して設定できません。これはディテールレイヤのサイズから推測され、Unityの要求に合わせて、0から4048の間の正方形サイズである必要があります。したがって、指定されたすべてのディテールレイヤは同じサイズでなければなりません。

ディテールレイヤを使用するには、Height Fieldネットワークで、以下に説明するようなディテールプロパティを設定する必要があります。

ディテールレイヤプロパティ:

  • ディテールレイヤに変換されるHeight Fieldレイヤは、ディテールタイプとしてマークする必要があります。これを行なうには、レイヤのunity_hf_layer_typeというPrimitive文字列アトリビュートに detail 値を設定します。

  • 同じHeight Fieldレイヤで、以下のアトリビュートを介してDetailPrototypeも指定する必要があります。

    • Prefabをを使用するには、インスタンス化するPrefabまたはメッシュのレイヤのunity_hf_detail_prototype_prefabというPrimitive文字列アトリビュートを設定します。

    • テクスチャを使用するには、レイヤのunity_hf_detail_prototype_textureというPrimitive文字列アトリビュートに、テクスチャへのパスを設定します。

アトリビュート

Tree Instances

Tree Instancesは、ネットワーク内のHeightField Scatterノードの後に以下のPointアトリビュートを使用して定義します。 Terrain Tree Instancesの自動設定は、Unity 2019.1以降でのみ利用可能です。

アトリビュート名

説明

unity_hf_treeinstance_prototypeindex

使用するTreePrototypeのインデックス(0から始まる整数)を設定します。 このインデックスは、上記で説明しているTreePrototype定義を指します。

unity_hf_treeinstance_heightscale

TreePrototypeの高さスケール(浮動小数点)を設定します。

unity_hf_treeinstance_widthscale

TreePrototypeの幅スケール(浮動小数点)を設定します。

unity_hf_treeinstance_lightmapcolor

TreePrototypeのライトマップカラー(float4)を設定します。

Cd

TreePrototypeのカラー(float4)を設定します。

orient

TreePrototypeの回転を設定します。

Terrain Detail Layers

アトリビュート名

説明

unity_hf_layer_type

Height FieldレイヤをDetailレイヤに変換します。 Height Fieldレイヤ上にDetail値を含んだ文字列型Primitiveアトリビュートを設定します。

unity_hf_detail_prototype_prefab

DetailPrototypeレイヤ上でprefabを使用するには、インスタンス化するprefabまたはメッシュのレイヤ上に文字列型rimitiveアトリビュートを設定します。

unity_hf_detail_prototype_texture

DetailPrototypeレイヤ上でテクスチャを使用するには、そのレイヤ上にテクスチャパスを含んだ文字列型Primitiveアトリビュートを設定します。

unity_hf_detail_prototype_bendfactor

ベンド係数値を含んだ浮動小数点型Primitiveアトリビュートを設定します。

unity_hf_detail_prototype_drycolor

Dry Color値を含んだカラー(float4)型Primitiveアトリビュートを設定します。

unity_hf_detail_prototype_healthycolor

Healthy Color値を含んだカラー(float4)型Primitiveアトリビュートを設定します。

unity_hf_detail_prototype_maxheight

Max Height値を含んだ浮動小数点型Primitiveアトリビュートを設定します。

unity_hf_detail_prototype_maxwidth

Max Width値を含んだ浮動小数点型Primitiveアトリビュートを設定します。

unity_hf_detail_prototype_minheight

Min Height値を含んだ浮動小数点型Primitiveアトリビュートを設定します。

unity_hf_detail_prototype_minwidth

Min Width値を含んだ浮動小数点型Primitiveアトリビュートを設定します。

unity_hf_detail_prototype_noisespread

Noise Spread値を含んだ浮動小数点型Primitiveアトリビュートを設定します。

unity_hf_detail_prototype_rendermode

DetailRenderMode値を含んだ整数型Primitiveアトリビュートを設定します(GrassBillboardが0、VertexLitが1、Grassが2(Default))。

Detail Layers - Global Detail Properties

  • Height レイヤ上には、以下のアトリビュートを指定することで、生成されるTerrainDataのDetail値を設定することができます:

アトリビュート名

説明

unity_hf_detail_distance

Detail Distance値(0から250)を含んだ整数型Detailアトリビュートを設定します。

unity_hf_detail_density

Detail Density値(0から1)を含んだ浮動小数点型Detailアトリビュートを設定します。

unity_hf_detail_resolution_patch

Density Resolution Per Patch値(8から128)を含んだ整数型Detailアトリビュートを設定します。

地形(Height Field)