ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Terrain に小物を配置する
Unity Terrain では、地形の上にツリー(樹木)・草・岩などの小物をブラシで配置できます。Mesh をシーンに 1 つずつ置くよりも遥かに効率的で、数万本の樹木や草を高速に描画する仕組みを内蔵しています。
| ツール | 対象 | 描画方式 |
|---|---|---|
| Paint Trees | 樹木(中〜大型 Prefab) | LOD 付き Mesh / Billboard 自動切替 |
| Paint Details | 草・小石・落葉等 | Billboard(板)または Mesh(草プレハブ) |
Paint Trees: 樹木を配置
1. 樹木 Prefab を追加
- Terrain を選択 → Inspector のツールバー Paint Trees(樹のアイコン)
- Trees セクション → Edit Trees → Add Tree
- Tree Prefab に Prefab をドラッグ(標準アセットの SpeedTree、または .fbx を Prefab 化したもの)
- Bend Factor(風で曲がる強さ)を設定 → Add
2. ブラシで配置
| パラメータ | 意味 |
|---|---|
| Brush Size | ブラシ半径 |
| Tree Density | 1 ストロークで配置する本数 |
| Tree Height (Min/Max) | ランダム高さ範囲(Lock チェックで縦横比固定) |
| Tree Width | 幅のランダム範囲 |
| Color Variation | 個体ごとの色のばらつき |
| Random Rotation | ランダム回転(チェック推奨で並んだ感を消す) |
Terrain 上でクリック / ドラッグして配置。Shift + クリックで削除、Ctrl + クリックで同種のみ削除。
Mass Place Trees
広範囲を一括でランダム配置するには:
- Paint Trees パネル右上の Mass Place Trees ボタン
- Number of Trees を入力(例 5000)
- Keep Existing Trees: 既存を維持するか
- OK で全体に配置
Paint Details: 草・小物を配置
1. Detail を追加
- Terrain Inspector → Paint Details(花のアイコン)
- Edit Details → Add Grass Texture(草テクスチャ) または Add Detail Mesh(小物 Mesh)
| 項目 | 意味 |
|---|---|
| Detail Texture | 草テクスチャ(PNG, 透明背景推奨) |
| Min/Max Width / Height | サイズのランダム範囲 |
| Noise Spread | 密度のムラ(高いほどパッチ状に) |
| Healthy Color / Dry Color | 2 色の間でランダム配色 |
| Render Mode | Billboard(常に正面) / Grass(斜め向き) |
2. 配置
Detail を選択 → Terrain をドラッグで塗る感覚で配置。Brush Size と Target Strength で密度を制御します。
Wind Zone との連携
樹木と草を揺らすには Wind Zone を追加します:
- Hierarchy → 右クリック → 3D Object → Wind Zone
- Inspector で Mode を Directional(全体に同方向) または Spherical(点源風)
- Main / Turbulence / Pulse Magnitude / Pulse Frequency を調整
// スクリプトで風を制御する例
using UnityEngine;
public class WindController : MonoBehaviour
{
public WindZone wind;
public float maxStrength = 2f;
void Update()
{
// 時間に応じて風を周期変化
wind.windMain = Mathf.PingPong(Time.time * 0.1f, maxStrength);
wind.windPulseFrequency = 0.5f;
}
}
パフォーマンス最適化
| 設定 | 場所 | 効果 |
|---|---|---|
| Detail Distance | Terrain Settings | 草が描かれる距離。短いほど高速(推奨 30-80m) |
| Detail Density | Terrain Settings | 草の密度倍率。0.5 にすると半減(モバイル向け) |
| Tree Distance | Terrain Settings | 樹木の最大描画距離(推奨 500-1500m) |
| Billboard Start | Terrain Settings | この距離以遠は樹木を 2D ビルボードに(必須) |
| Fade Length | Terrain Settings | 3D ↔ Billboard 切替のフェード距離 |
| Max Mesh Trees | Terrain Settings | 同時に Mesh で描く最大本数(残りは Billboard) |
LOD(Level of Detail)対応
SpeedTree や LOD Group 付き Prefab を Tree として登録すると、距離に応じて自動で LOD が切り替わります:
- Prefab に LOD Group コンポーネントを追加
- LOD 0(高品質) / LOD 1(中) / LOD 2(低) / Billboard を登録
- 遷移距離パーセントを調整
スクリプトで小物を一括配置
using UnityEngine;
public class AutoTreePlacer : MonoBehaviour
{
public Terrain terrain;
public int count = 1000;
void Start()
{
TerrainData data = terrain.terrainData;
var trees = new TreeInstance[count];
for (int i = 0; i < count; i++)
{
var inst = new TreeInstance();
inst.position = new Vector3(Random.value, 0, Random.value);
inst.prototypeIndex = Random.Range(0, data.treePrototypes.Length);
inst.widthScale = Random.Range(0.8f, 1.2f);
inst.heightScale = inst.widthScale;
inst.rotation = Random.Range(0, 360);
inst.color = Color.white;
inst.lightmapColor = Color.white;
trees[i] = inst;
}
data.treeInstances = trees;
terrain.Flush();
}
}
よくあるトラブル
Q: 草の色がピンク(マゼンタ)になる
A: URP / HDRP プロジェクトで Built-in シェーダの草を使っている。URP は Universal Render Pipeline/Nature/Terrain Lit、HDRP も同様に対応シェーダへ。
Q: 樹木が地中に沈む / 浮く
A: Prefab の原点が根元に来ているか確認。FBX 取込時に Pivot 位置がずれている場合、Empty 親に入れて原点調整。
Q: 草が描画されない / Detail Distance 内なのに見えない
A: Terrain Settings の Draw Instanced 設定とシェーダ互換性。URP では URP Asset → Terrain → Detail Distance も影響。
FAQ
Q: 巨大なフィールドで全部草で埋めたい
A: Detail Density 1.0 + Detail Distance 100m+ は重い。GPU Instancing 対応の URP Terrain Lit + Draw Instanced を必ず ON。
Q: 動かない岩や柵は Paint Trees で配置していい?
A: 可能だが、当たり判定が要る場合は別。Tree は Capsule Collider を自動生成しない(コライダー付きの場合のみ)。岩には Mesh Collider 付き Prefab を Tree として登録。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?