ハイトマップやテクスチャをペイントするのと同じ方法で Tree (樹木) をペイントすることができます。ただし、Tree はサーフェスから生えるソリッドの 3D オブジェクトです。Unity は、遠方の樹木をビルボードにするなどの最適化を行ない、良好なレンダリングパフォーマンスを維持します。つまり、数千もの Tree からなる密林を作っても、なおかつ許容できるフレームレートを維持することが可能です。
ツールバーの Paint Trees ボタンで Tree のペイントが可能です。
最初は、Terrain (地形) に Tree のプロトタイプはありません。Terrain のペイントを始めるには、Tree のプロトタイプを加える必要があります。Edit Trees ボタンをクリックして Add Tree を選択します。それから、Tree のアセットをプロジェクトから選択し、Tree Prefab (Tree プレハブ) として加えブラシとともに使用します。
プロトタイプの作成を支援するために、SpeedTree は 4 つの SpeedTree モデルを Asset Store の Free SpeedTrees Package で提供しています。また、独自の Tree を作成することもできます。
インポートする Tree プレハブが Bend Factor をサポートする場合は、Add Tree ウィンドウは風への反応を調整する Bend Factor プロパティを表示します。SpeedTree Modeler で作成された Tree には Bend Factor がありません。Tree エディターによって作成されたものにだけあります。詳しくは、後述の 風で Tree をしならせる を参照してください。
Settings (後述) を設定すると、テクスチャやハイトマップをペイントするのと同じように Terrain に Tree をペイントすることができます。Shift キーを押しながらペイントすると、その領域から木を削除することができます。また、現在選択中の Tree タイプのみを削除する場合は、Ctrl キーを押しながらペイント操作を行います。
配置する Tree を選択したら、その設定を調整して、配置と特徴をカスタマイズします。
プロパティ | 機能 |
---|---|
Mass Place Trees | ペイントを使わずに、ランドスケープ全体を覆う Tree を作成します。Tree を大量配置した後も、ペイントを使用して Tree を追加/削除し、密な部分や間隔の広い部分を作ることができます。 |
Brush Size | Tree を加える領域のサイズを制御します。 |
Tree Density | Brush Size で定義された領域にペイントする Tree の平均数を制御します。 |
Tree Height | スライダーを使って Tree の最低の高さと最大の高さを制御します。Tree を低くするにはスライダーを左に、Tree を高くするにはスライダーを右にドラッグします。Random のチェックを外すと、新しくペイントするすべての Tree の正確な高さのスケールを 0.01 から 2 の範囲内で指定できます。 |
Lock Width to Height | デフォルトでは、Tree に対し常に均一のスケールが行われるように、Tree の幅は高さに合わせて固定されています。ただし、Lock Width to Height オプションを無効にすると、幅を個別に指定する事ができます。 |
Tree Width | Tree の幅が高さに固定されていない場合は、スライダーを使って Tree の最低幅と最大幅を制御します。Tree を細くするにはスライダーを左に、Tree を太くするにはスライダーを右にドラッグします。Random のチェックを外すと、新しくペイントするすべての Tree の正確な幅のスケールを 0.01 から 2 の範囲内で指定できます。 |
Random Tree Rotation | Tree を LOD Group で制御する場合は、このオプションを使うと、全く同じ様相の Tree から成る人工の植樹ではなく、ランダムで自然な森のような印象になります。Tree を固定し、全く同じ向きで配置したい場合は、このオプションを無効にします。 |
Color Variation | Tree に適用されるランダムなシェーディングの量。これは、シェーダーが _TreeInstanceColor プロパティを読み取る場合にのみ機能します。例えば、Tree エディターで作成したすべての Tree のシェーダーは _TreeInstanceColor プロパティを読み取ります。 |
Tree Contribute Global Illumination | これを有効にすると、Tree をグローバルイルミネーションの計算に加えます。 |
There are two ways to create new Tree models. Use the SpeedTree Modeler from IDV, Inc. to create Trees with advanced visual effects, such as smooth LOD transition, fast billboarding, and natural wind animation. For more detailed information, refer to the SpeedTree Modeler documentation. Alternatively, use the Tree Editor to create Tree Models.
内部的には、Terrain エンジンは Tree プレハブのルートゲームオブジェクトに LOD Group があるか否かを判断することで、2 タイプのモデルを区別します。SpeedTree で作ったプレハブには LODGroup コンポーネントがありますが、Tree エディターのプレハブにはありません。
Tree を作成するとき、アンカーポイントを地面から生える Tree の底に配置します。パフォーマンスは Tree モデルのポリゴン数に依存します。そのため、プラットフォームでテストし、必要に応じて簡単な Tree を作成してください。Tree エディター作成の Tree の場合、各メッシュは常に正確に 2 つのマテリアルを持っています。1 つは Tree のボディのため、もう 1 つは葉のマテリアルです。
Tree エディターを使って Tree を作成する場合は、Nature/Soft Occlusion Leaves と Nature/Soft Occlusion Bark シェーダーを使用する必要があります。これらのシェーダーを使用するには、Ambient-Occlusion という特定のフォルダーに Tree を配置する必要があります。そうでないと、Tree は正しく描画されません。このフォルダーにモデルを置き、それを再インポートすると、Unity は Tree のために特別に設計された方法で、柔らかい アンビエントオクルージョン を計算します。
インポートした Tree アセットに異なる 3D モデリングアプリケーションで変更を加える場合は、エディターで Refresh ボタンをクリックして、Terrain に更新された Tree を表示します。
ノート: 3D モデリングプログラムに SpeedTree モデルをインポートして変更し、.fbx
または .obj
として再エクスポートすると、SpeedTree モデルが持つ自然な風のアニメーション機能が失われる場合があります。
Capsule Collider を Tree アセットに追加できます。まず、Tree アセットの横にある > をクリックしてプレハブを開きます。
次に、Add Component > Physics > Capsule Collider を選択してコライダーを加えます。シーンに戻るには、プレハブ名の横にある < をクリックします。
Terrain Collider コンポーネントの Enable Tree Colliders もチェックする必要があります。
Wind Zone は Tree を曲げて、風の直接的な効果のシミュレーションを行えます。この機能は、Terrain (地形) メニューから配置した Tree でのみ使用できます。これを行うには、Terrain (地形) を選択し、インスペクターの Paint Trees ボタンをクリックし、Edit Trees > Add Tree を選択し、Tree Prefab を選択します。Unity で Tree を作成なかった場合は、Bend Factor を 1 に設定します。Terrain (地形) をクリックして、選択した Tree を配置します。
Bend Factor を持つ Terrain (地形) ベースの Tree は、Wind Zone の Turbulence と Main プロパティの値に応じて、曲がったり揺れたりして Wind Zone に反応します。 Turbulence 設定は葉の揺れを制御します。この値を小さくすると、揺れの効果が柔らかになります。Main の値は風の主な力を制御します。Wind Zone を作成するには、GameObject > 3D Object > Wind Zone を選択します。
Wind Zone の Mode が Directional の場合、Tree に対する相対的な位置は関係ありません。Tree は Wind Zone の向きに沿って揺れます。ただし、Wind Zone の Mode が Spherical の場合、その Radius は Tree の半径と重なる必要があります。これによって、中心から端に向かって減衰する、複数方向の突風を発生させます。
デフォルト設定では、Broadleaf Prefab (Standard Assets Environment パックに含まれています) などの Tree が柔らかに現実的な様子で揺れ動きます。ただし、独自の Tree プレハブを使用する場合は、Wind Zone プロパティの値を調整する必要があります。Tree プレハブの幹が極端に片側に曲がる場合は、 Main の値を下げてみてください。あるいは、Tree プレハブの枝が過度に曲がったり伸びたりする場合は、 Turbulence 値を下げます。
Tree エディターで作成した Tree に対して、Unity の LOD システムは、2D から 3D への遷移ゾーンを使用して 2D のビルボードと 3D Tree モデルを継ぎ目なしにブレンドします。これにより、VR に頻繁に発生する 2D および 3D Tree が突然飛び出す現象を防ぎます。ビルボード の Tree は、ポイントライトやスポットライトなどのローカルのライティングを受けないことに注意してください。これらはディレクショナルライトで機能しますが、ビルボードのライティングはカメラを回転させたときにのみ更新されます。
SpeedTree で作成した Tree の LOD コンポーネントの設定に関する詳細は、LOD と LOD Group を参照してください。
2020–02–19 修正されたページ
Tree エディターのビルボード制限を追加
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.