ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Terrain にテクスチャをペイントする手順
Unity Terrain の地面に、草・土・岩・砂などのテクスチャを塗り分ける手順を解説します。地形の見た目を作る最も基本的な操作です。
準備: Terrain と TerrainLayer
1. Terrain を作成
- Hierarchy で右クリック → 3D Object → Terrain
- 巨大な平面(デフォルト 1000m × 1000m)が生成される
- Inspector に Terrain コンポーネントと Terrain Collider が付く
2. TerrainLayer アセットを作る
TerrainLayer はテクスチャとそのタイリング・法線マップをまとめたアセットです:
- Project ウィンドウで右クリック → Create → Terrain Layer
- 名前を付ける(例:
Grass_Layer) - Inspector で:
- Diffuse: アルベドテクスチャ(草、土等)
- Normal Map: 法線テクスチャ(凹凸感)
- Mask Map(URP/HDRP): メタリック・スムースネス・オクルージョン・高さ
- Tiling Settings → Size: 1 タイルの実寸(例 1×1 メートル)
Paint Texture でペイント
Terrain を選択 → Inspector のツールバーから 4 つ目のブラシアイコン Paint Terrain をクリック → ドロップダウンを Paint Texture に。
| 項目 | 意味 |
|---|---|
| Terrain Layers | このターレインで使うレイヤー一覧。Edit Terrain Layers → Add Layer で TerrainLayer アセットを追加 |
| Brushes | ブラシ形状(円、四角、ノイズ等) |
| Brush Size | ブラシ半径(メートル) |
| Opacity | 1 ストロークの効きの強さ(0-100) |
| Target Strength | 同じ箇所を塗り続けた時の最大濃度(0-1)。0.5 にすると半分混じった状態が上限 |
ペイントの流れ
- 最初に追加したレイヤーがベースレイヤとして全面に塗られる(通常は草)
- 2 つ目以降のレイヤを選択し、シーンビューで Terrain 上をドラッグして塗る
- 強く塗りたい場所は Brush Size を小さく、Opacity を上げる
- Shift + ドラッグで「下のレイヤを表示」(消しゴム的に使える)
Splatmap の仕組み
Terrain のテクスチャブレンドは Splatmap と呼ばれる重みテクスチャで管理されます:
- 各ピクセルが「このレイヤをどの程度の強さで塗るか」を表す
- 1 つの Splatmap は RGBA の 4 チャンネル → 1 枚で 4 レイヤ
- 5 レイヤ以上使うと自動で 2 枚目の Splatmap が追加(パフォーマンス低下)
- 解像度は Terrain Settings → Control Texture Resolution で変更(デフォ 512)
// スクリプトから Splatmap を直接編集する例
using UnityEngine;
public class TerrainSplatPainter : MonoBehaviour
{
void Start()
{
Terrain terrain = GetComponent<Terrain>();
TerrainData data = terrain.terrainData;
int w = data.alphamapWidth;
int h = data.alphamapHeight;
int layers = data.alphamapLayers;
// 既存の重みを取得
float[,,] map = data.GetAlphamaps(0, 0, w, h);
// 全面をレイヤ 0 (草) で塗りつぶす
for (int y = 0; y < h; y++)
for (int x = 0; x < w; x++)
{
for (int l = 0; l < layers; l++) map[y, x, l] = 0;
map[y, x, 0] = 1f;
}
data.SetAlphamaps(0, 0, map);
}
}
Heightmap と Splatmap の関係
| マップ | 役割 | 解像度設定 |
|---|---|---|
| Heightmap | 地形の高さ(凸凹) | Terrain Width / Length × Resolution |
| Splatmap (Alphamap) | 各レイヤのブレンド重み | Control Texture Resolution(512 / 1024) |
| Detail Map | 草・小物の密度 | Detail Resolution |
レイヤを自動で高さ・傾斜で配置
Terrain Tools パッケージをインストールすると、Stamp Terrain、Erosion に加えて、角度に応じて自動で岩レイヤを塗る機能が使えます:
- Package Manager → Terrain Tools をインストール
- Paint Terrain → Slope ツールで急斜面に岩レイヤを自動適用
- または Height ツールで標高に応じて雪レイヤを上部に
URP / HDRP の Terrain Material
Built-in Render Pipeline と SRP では Terrain の見た目シェーダが違います:
| パイプライン | Terrain Material |
|---|---|
| Built-in | Nature/Terrain/Standard |
| URP | Universal Render Pipeline/Terrain/Lit |
| HDRP | HDRP/TerrainLit |
Terrain Inspector → 歯車(Terrain Settings)→ Material で切替。URP プロジェクトで Built-in シェーダのままだとピンクになります。
パフォーマンス最適化
- Pixel Error: 大きくすると LOD が荒くなり高速化。5-10 推奨
- Base Map Distance: この距離より遠くは低解像版を使う。300-500m が目安
- Draw Instanced: GPU Instancing で Terrain を描画。チェック推奨
- Detail Distance: 草を描く距離。短いほど高速
- レイヤ数を 4 以下に抑える(Splatmap 1 枚で済む)
よくあるトラブル
Q: ペイントしても色が変わらない
A: ① TerrainLayer をまだ追加していない、② Brush Size がエリア外、③ URP/HDRP でシェーダ不一致でマテリアルが壊れている。Terrain Settings の Material を確認。
Q: テクスチャが伸びる・繰り返しが目立つ
A: TerrainLayer の Tiling Settings → Size を実寸に。1 タイルが何メートルか意識すると自然になります。広範囲は法線マップで凹凸を強調するとパターン感が減ります。
Q: 5 つ目のレイヤを追加したら重くなった
A: Splatmap が 2 枚になり、ドローコールが約 2 倍に。シーンに応じてレイヤを 4 以下に整理してください。
📸 参考画像
※ 旧バージョンから引き継いだ参考画像です。手順・図解の補助としてご覧ください。


ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- 地形の作成
- 地形をペイントする
- Unity Terrain で地形に高低差をつける方法
- 木を植える
- 小物を配置する
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- NetBeansでTomcatを起動する手順|サーバ登録・ポート・トラブル対処 2026-09-07 07:45:13
- Javaの定数 2026-09-07 07:45:13
- Oracle DROP USERでユーザー削除|CASCADE・接続中ユーザーの対処 2026-09-07 07:45:13
- Laravel 記事一覧55件|環境構築・ルーティング・DB・エラー対処 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Spring Framework 記事一覧31件|DI・設定・例外の対処 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- SQLとは|DDL・DMLとリレーショナルデータベース操作の基本 2026-09-07 07:45:13
- hostnameコマンドの使い方|Windows・Linux・macOSでホスト名確認 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?