[Unity] #08 地形生成とトンネル作成:Terrain と Blender を組み合わせて最短ルートで作る

はじめに

Unity5日目、後半。

前回の記事。

Three.jsで挫折?した山を作りそこに穴をあけてトンネルを作り、列車を走らせる実装を、Unityで実現できたのでそのメモです。

シンプルなトンネルのアセットデータがなかったので、Blender で自作して見たのでその情報もまとめてみます。

作ると結構簡単ですが、簡単すぎるせいか、Unityのassetストアには無料で置いてなかったので、もしかしたら無償配布するかもしれません。

改造は可変は自由にしてもらって構わない、緩い規約にする予定です。

しかし、初見で作るのは分からない事が多いので大変ですが、やり方さえ分かってしまえば意外と簡単に複雑な山の地形を作れてしまうので、いやはや凄いというか、Unityほぼ触った事のない初心者で5日でここまで作れるのが凄いですね…。

Three.jsも便利なライブラリのお陰で便利でしたが、Unityはその比じゃないです。

ゲーム作りに特化するなら、圧倒的ににUnityの方が便利だし早いですね。

1. なぜトンネルが必要になったのか

レールのカーブ自動生成が完成したところで、次の課題として自然と 「地形を貫くトンネル」が必要になった。

しかし実装に進もうとすると、すぐ壁にぶつかる。

Unity だけでは綺麗なトンネルが作れない

本来なら ProBuilder を使えば「円柱を切って厚みを付けて終わり」のはず。 だが Unity 6 では ProBuilder がまともに動かず、 Mesh を編集できない・形状が壊れる・厚みが付かないなど致命的。

つまり Unity 標準機能だけで“綺麗なトンネル”を作るのは無理。

Asset Store に無料トンネルがほぼ存在しない

「さすがに誰か作ってるだろ」と Asset Store を探したが…

  • 道路トンネル:ほぼ無い
  • 鉄道トンネル:完全に無い
  • あっても高額か、ローポリ過ぎて使えない

市場が完全に空白になっているジャンルだった。

じゃあ Blender で作るしかない

仕方なく Blender を開いたが、こちらも未経験。 ただし、鉄道トンネルの構造はシンプルなので

  • 円柱
  • 90度回転
  • 下半分削除
  • Solidify(ソリッド化)で厚み付け

この 4ステップで実はすぐ作れることが判明。

Unity 側は Terrain の Paint Holes を使って トンネルを貫通させるだけで成立する。

2. Unity Terrain の落とし穴「山は作れても穴は開かない」

Unity の Terrain は “山を作る” ことにはめっぽう強い。 しかし 「穴を開ける」だけは極端に分かりにくい。

実際、最初にここで確実にハマる。

穴あけ機能は『Paint Holes』という実質の隠し機能

Terrain のブラシは一見こう見える:

  • Raise/Lower(盛る・削る)
  • Paint Texture(テクスチャ)
  • Smooth(滑らか)
  • Set Height(高さを指定)

…穴を開ける機能がどこにも無いように見える。 だが 右側の小さなタブの奥に “Paint Holes” が存在する。

この機能を知らないと、一生トンネルは作れない。

ブラシの3階層構造を理解しないと Terrain は制御不能

Terrain は「同じブラシ UI に3種類の用途が混在」している。

種類 用途
Height Brush 山の形状(高さメッシュ)
Texture Brush テクスチャの塗り分け
Hole Brush(Paint Holes) Terrain の穴あけ

これが混在しているため、 穴を開けているつもりで高さを削っていた テクスチャを塗っているつもりで穴を開けていた といった事故が普通に起きる。

構造を理解すれば逆に、Terrain の操作は一気に楽になる。

Terrain 解像度を 129×129 にした理由

デフォルトの 513×513 や 1025×1025 は

  • 不必要にポリゴンが多い
  • エディタが重くなる
  • スカルプト結果が細かすぎて扱いづらい

というデメリットが大きい。

一方 129×129 は以下のバランスが最強:

  • 山の形状が “適度に” ラフで扱いやすい
  • 無駄な面が減るため 軽い
  • 穴ブラシで穴を開けても形が破綻しにくい
  • 「ゲームで使う山」として十分な形状密度

結果として スカルプト速度・軽さ・見た目の自然さ このすべてがちょうど良くなる。

Unity では「最高精細=最適解」ではない。 地形に限れば 粗さは正義 である。

3. トンネル本体は Unity では作れない(ProBuilder 終了)

山の穴は “Paint Holes” でどうにかできるとして、 問題は 「その穴に挿し込むトンネル本体」 をどう作るか。

本来なら Unity の ProBuilder が担当する領域だが、 2024〜2026 の現行バージョンでは 完全に機能破綻している。

プロの現場でも ProBuilder はすでに使われていない

Unity 公式のフォーラムや Discord コミュニティでも、

  • 形状編集で破損
  • UV が消える
  • Face 削除でメッシュが崩壊
  • 厚み作成(Extrude)が壊れている
  • オブジェクト変換(ProBuilderize)が出てこない
  • メニューが表示されない

といった報告が多い。

ゲーム会社のアーティストも 「いま ProBuilder を使うのは無理」 というのが共通認識になっている。

Reddit にも“ProBuilder は死んだ”というスレが大量

実際のスレタイトル例:

  • “Why is ProBuilder gone?”
  • “Unity removed ProBuilder functions?”
  • “ProBuilder window missing after update”
  • “Is ProBuilder deprecated?”

内容はほぼ共通していて、 Unity は過去2〜3年 ProBuilder をメンテすらしていない という話。

Unity 6 では完全に “放置された遺物” の扱い。

穴あけ・厚み付け・単純な形状編集でさえ壊れる

今回の目的は非常にシンプルなはずだった:

  • 円柱を横向きにする
  • 半分だけ削る
  • 厚みを付ける(Extrude / Solidify)

これすら Unity では正常にできない。

特に 厚み付け処理(Extrude) が壊れているため、 “実用的なトンネル形状” を作るのは不可能。

結論:Unity でトンネルは作れない

これは誇張ではなく、 事実として現在の Unity ではトンネル生成は無理。

Terrain の穴は開けられても、 その穴に挿す「トンネル本体」が作れない。

現行 Unity の最適解は「Terrain + 外部モデル(Blender)」

この組み合わせが、現実的に最も強い。

  • Terrain → 山・地形・穴
  • Blender → トンネルのメッシュ生成
  • Unity → 配置とスケール調整

この workflow が 世界で最も使われている標準解。

“地形は Unity、構造物は Blender”。 この分業がすべてを解決する。

4. Blender で “最低限のトンネル” を 3 分で作る

Unity 内だけでトンネルを作ろうとすると、ProBuilder が壊れているため実質不可能。 しかし Blender を使えば、最小構成の鉄道トンネル を3分で作れる。

ここでは、実際に今日やった作業をそのまま整理して記録しておく。


(1)円柱追加 → R → Y → 90 で回転

  1. Shift + A → Mesh → Cylinder
  2. RY90 と入力
  3. Enter

Blender は R → 軸 → 角度 の流れが非常に直感的で、 Unity より正確な向き調整が一瞬でできる。

これでトンネルの “元となる円柱” が横向きになる。

(2)円柱の下半分の頂点を削除

編集モード(Tab)に入り、

  1. 画面を正面か側面に切り替え
  2. ボックス選択で下半分の頂点をまとめて選択
  3. Delete → Vertices

これで 半円のシェル構造 が一瞬で完成する。 見た目は「バール」みたいになるが、トンネルの形状としてはこれで充分。

Unity で壊れまくった操作も Blender だと “本当に数秒で終わる”。

(3)Solidify(ソリッド化)で厚みを付ける

ここでトンネルが “実際の構造物” になる。

  1. モディファイア → Solidify
  2. Thickness(厚み)を 0.1m〜0.2m に設定
  3. Apply するか、そのまま Unity に持っていっても良い

Solidify は内部・外部を同時に生成するため、 皮一枚だったメッシュが しっかりした二重構造 になる。

これが鉄道トンネルの「コンクリート壁」。

(4).fbx または .glb で Unity に持っていくだけ

  1. File → Export → FBX(または glTF 2.0)
  2. Unity の Project にドラッグ&ドロップ

Unity では:

  • マテリアルを付ける
  • スケールを調整する
  • 回転を微調整する

これだけでトンネルが地形と自然に馴染む。

Blender で作ったトンネルは、Unity Terrain に刺すだけで完全に機能する。

5. Unity でトンネルを地形に埋め込む

Blender で作ったトンネルモデルが用意できたら、Unity 側でやる作業は非常にシンプル。 Terrain の穴あけ機能(Paint Holes)を組み合わせることで、 短時間で “山に貫通したトンネル” を表現できる。


✔ Terrain の穴あけ

Unity Terrain の穴あけは 「Paint Holes」 を選ぶだけ。

  1. Terrain を選択
  2. Terrain Tools → Paint Terrain
  3. タブから Paint Holes を選択
  4. ブラシで Terrain をクリック → 地形が透明化する

ここを理解するまでは迷うが、 一度分かれば Terrain と Mesh を融合する最強の方法 になる。

地形側は「穴を開けるだけ」でいい。 複雑なメッシュ加工は Blender に任せる。

✔ トンネルの位置合わせ

穴を開けたら、Blender のトンネルモデルを Terrain 側に滑り込ませる。

  • Z(奥行き)を調整
  • Y(高さ)を持ち上げる or 下げる
  • レールの前後方向に合わせて微調整
  • めり込みを恐れず、Terrain 内にしっかり入れ込む

この時点で、 トンネルの“開口部”と“山肌”が自然に一体化する。

ブラシで少しだけ穴の縁を拡大したり、 逆に Smooth で整えると、さらに自然な地形になる。


結果として、レールの延長線上にしっかりと “山に開いたトンネル” が完成する。

Unity Terrain の強みは、 この Mesh と Terrain を組み合わせた構造 が短時間で作れること。 今回の方法は、最小労力で最大の効果が出る、現行 Unity のベストプラクティス。

6. 作ってみて分かったこと(重要)

今回の “山+トンネル構築” を通じて、Unity Terrain の得意分野・不得意分野が一気に見えてきた。 どれも実際に触ってみないと分からないポイントなので、ここに整理しておく。

Unity Terrain は「丘・なだらかな地形」には強い

Terrain はハイトマップ(高さ画像)から滑らかに地面を生成する仕組み。 そのため 起伏のゆるい地形 や 広い山肌 を作るのは非常に得意。

逆に “尖った山” や “人工的な形状” は破綻しやすい。

“崖・急斜面・トンネルの縁” は Mesh の方が圧倒的に綺麗

Terrain は傾斜が急になるほど、 三角面が伸びて “ギザギザ” が露骨に出る。

一方、Blender で作る Mesh(トンネル・崖・擁壁など)は 形状の自由度と品質が段違い で、人工物に向いている。

→ 地形:Terrain → 人工物:Mesh(Blender) この分業が最強。

Terrain は低解像度(129×129)でも十分に実用レベル

高解像度の Terrain(513 / 1025 / 2049)は重い上に扱いにくい。 実際に 129×129 に落とすと、

  • 軽い
  • 編集が早い
  • 崩れない
  • プロトタイプに最適

とメリットしかなかった。

“高解像度=正義” は Terrain には当てはまらない。

Blender で作ったオブジェクトを Terrain に重ねると制作速度が跳ね上がる

Terrain の穴に Mesh を挿すだけ で、 トンネル・崖・洞窟の入口などが一気に完成する。

Unity で無理な形は Blender が担当し、 地形は Terrain が担当する。

この workflow を覚えるとゲーム制作が一気に楽になる。

「ゲーム作ってるというより街づくりゲームしてる感覚」

実際に地形と構造物を触っていると、 Unity が 開発ツールであると同時に“箱庭を作る遊び” になっていく。

これは Three.js には無い Unity 特有の体験で、 “世界を作っている” という実感につながる。

7. 今日だけで得た知識まとめ

了解。 この節は “1日の成果を明確に見える化して締める” 役割なので、 技術的価値が伝わるように整理しつつ、記事として読める形に仕上げる。


7. 今日だけで得た知識まとめ

1日の作業だけで、Unity と Blender の地形制作に必要な技術が一気につながった。 特に Three.js の経験があったことで理解が早く、実装までスムーズに進んだ。

今日習得した内容をまとめると以下の通り。

ベジェでレール自動生成

Cubic Bezier(4点曲線)を使って、レールの接続や向きを自動生成。 ゲーム開発でもプロが使う “Spline ベースの構築” を理解できた。

Terrain の穴あけ機能(Paint Holes)

隠し機能のように分かりにくいが、 これに気付くことで 地形と Mesh を融合できる ようになった。

Terrain のテクスチャペイント

・地面の材質 ・斜面の岩肌 ・入口の砂利 などを自然に塗り分けられるようになり、地形の完成度が一段上がった。

Blender でシンプルなトンネル作成

円柱 → 下半分削除 → Solidify の3ステップで 「最低限の鉄道トンネル」をすぐ作れるようになった。

Solidify モディファイアの理解

厚みが必要な構造物(トンネル、壁、擁壁)を “皮だけのポリゴン” から正式な形にできる。

Unity × Blender の連携

.glb / .fbx を読み込んで、Terrain に重ねて配置する作業を習得。 ゲーム制作に必須のワークフローが確立した。

トンネルのサイズ調整と埋め込み

Terrain の穴と Blender のモデルを合わせて かなり自然なトンネル構造 を作れるようになった。

Terrain 解像度の最適値(129×129)

高解像度 Terrain の罠にはまらず、 軽くて扱いやすい実用サイズに辿り着いた。

“崖は Mesh、地形は Terrain” の使い分け

Terrain の限界と Mesh の利点が明確になり、 Unity での地形制作の勘所が掴めた。


結果として、Unity の地形制作レベルが一段階どころか 一気に “世界を構築できるレベル” に跳ね上がった。

8. おわりに

「トンネルなんて簡単にできるだろう」と思って着手したら、 Unity の ProBuilder がほぼ機能停止している現実に衝突し、 “Unity 内だけでは作れない” という予想外の壁にぶつかった。

しかし Blender を経由してみると、 円柱の下半分を削り、Solidify で厚みを付けるだけで、 数分で実用的なトンネルが完成する という真逆の世界が広がっていた。

Unity は単体のツールではなく、 地形(Terrain)・構造物(Mesh)・外部ツール(Blender) を組み合わせて使う“ゲームエンジン”だということを、 今日ほど強く実感した日はなかった。

Terrain で山を造り、Paint Holes で穴を開け、 Blender で作ったトンネルを差し込むだけで、 街と山と鉄道が共存する「ひとつの世界」が一気に形になる。