ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Terrain の基礎
Unity Terrain は地形 (Height Map) + テクスチャ + 木 + 草 + 風 + Lightmap UV をまとめて扱える専用システムです。木は Terrain の機能の一部として植えられます。
- Hierarchy → 3D Object → Terrain を作成
- Terrain Inspector のツールバーで 木のアイコン (Paint Trees) を選択
- Edit Trees → Add Tree で木の Prefab を登録
- Terrain 上をクリック / ドラッグで植える
Paint Trees の主要パラメータ
| パラメータ | 意味 |
|---|---|
| Brush Size | 1 回クリックで影響を及ぼす円の半径 |
| Tree Density | ブラシ内に配置する木の密度 |
| Tree Height | 木の高さスケール (Random Range 推奨) |
| Lock Width to Height | 高さに合わせて幅も比例 |
| Random Tree Rotation | Y 軸ランダム回転 (同じ木が一様に見えるのを防ぐ) |
| Color Variation | 葉色のランダム差 |
木の Prefab を入手する
| 入手元 | 内容 | 備考 |
|---|---|---|
| Asset Store | 無料 / 有料の木 Prefab 多数 | 「tree」「foliage」で検索 |
| HDRP / URP Terrain Sample | 公式サンプルに含まれる | Package Manager から |
| SpeedTree | LOD 付きの本格樹木 | 有料 / Subscription |
| Polygonal Tree Pack | ローポリ向け | モバイル / Switch 向け |
Mass Place Trees (大量配置)
森全体を一気に作りたい時に便利な機能です。
- Paint Trees ツール内の右上メニュー Mass Place Trees
- Number of Trees に植えたい本数 (例: 5000)
- Keep Existing Trees にチェックを入れると追加配置、外すと置換
- OK で全 Terrain にランダム配置
その後、欠落地帯を Paint Trees ツールで手動補正します。
個別の木を削除
- Shift + ドラッグ: ブラシ範囲の木を削除
- Ctrl + ドラッグ: 選択した種類の木だけを削除
Detail (草) を植える
木と同じ Terrain ツールバーの 花アイコン (Paint Details) から草や小石を植えられます。
| Detail Type | 用途 | 負荷 |
|---|---|---|
| Grass Texture (Billboard) | カメラに常に向く 2D 草 | 軽い |
| Detail Mesh | 3D メッシュ (石 / きのこ等) | 中 |
| Detail Mesh (Vertex Lit) | 影なし軽量メッシュ | 軽い |
LOD で遠方を軽くする
遠くの木まで高ポリゴンで描くと一気に重くなります。LOD Group を仕込んだ Prefab を使うと自動で簡略化されます。
LOD0: 距離 0–20m → 高品質 (フル枝葉)
LOD1: 距離 20–60m → 中品質 (枝葉減)
LOD2: 距離 60–150m → ビルボード (板1枚)
カリング: 150m 以上 → 描画しない
SpeedTree と HD Tree Pack
本格的な森林表現には以下が定番:
- SpeedTree — 業界標準。風揺れ・季節変化・自動 LOD
- HD Tree Pack (Asset Store) — HDRP 向け高品質
- Conifer BOTD — 無料針葉樹アセット
- Book of the Dead サンプル — Unity 公式デモのアセット
スクリプトから木を植える
using UnityEngine;
public class TreePlanter : MonoBehaviour {
[SerializeField] private Terrain terrain;
[SerializeField] private int prototypeIndex = 0;
[SerializeField] private int count = 100;
void Start() {
TerrainData td = terrain.terrainData;
var instances = new System.Collections.Generic.List();
for (int i = 0; i < count; i++) {
TreeInstance t = new TreeInstance {
position = new Vector3(Random.value, 0, Random.value), // 0-1 の正規化座標
prototypeIndex = prototypeIndex,
widthScale = 1f,
heightScale = Random.Range(0.8f, 1.2f),
color = Color.white,
lightmapColor = Color.white,
rotation = Random.Range(0f, Mathf.PI * 2f),
};
instances.Add(t);
}
td.treeInstances = instances.ToArray();
}
}
パフォーマンス Tips
- Tree Distance (Terrain Settings) を下げる → 描画距離短縮
- Billboard Start を 50–80m → 遠方を 2D 化
- Fade Length 5m → 切替を滑らかに
- Max Mesh Trees 50 程度 → 同時 3D 表示数
- 1 Terrain あたり 1 万本以下 を目安に
よくあるトラブル
| 症状 | 原因 | 対処 |
|---|---|---|
| 木が真っ黒 | ライティング未ベイク / マテリアル不整合 | Lighting → Generate / Material を URP 用に |
| 木がピンク | Shader 不一致 (URP に Built-in 木) | マテリアルを URP/Lit に |
| 木が地面に埋まる | Pivot 位置が中心 | Prefab の Pivot を根本に |
| FPS が極端に低い | Tree Density 過大 | Tree Distance / Billboard 設定見直し |
FAQ
Q: ProBuilder で作った木を Terrain に登録できる?
A: 可能。Prefab 化して LOD Group を追加し、Add Tree で登録します。
Q: 木に当たり判定を付けたい
A: Prefab に Collider を追加し、Terrain Settings → Create Tree Colliders にチェック。
Q: 木が風で揺れない
A: Terrain に Wind Zone を追加。SpeedTree シェーダなら自動で揺れます。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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
コメントを削除してもよろしいでしょうか?