Blenderでプロシージャルに道路生成ができる無料ツール「MRoadGen」

Maarten Nauta氏によるBlender向けの無料道路生成ツール「MRoadGen (RoadGen for Blender)」の紹介です。

目次

MRoadGenとは

MRoadGenは、Blender 5.0以上で動作する、ジオメトリノード(Geometry Nodes)ベースの強力な道路生成アドオンです。

このアドオンを使用すると、手作業による煩雑なメッシュの縫い合わせ作業を排除し、非破壊的に道路を生成することができます。起伏の激しい地形上であっても直感的に道路を配置でき、ツール側が道路面と不規則な地形の段差を埋める「盛土(Embankment)」のメッシュをプロシージャルに自動生成可能です。

これにより、元の地形メッシュのトポロジーを維持したまま、自然な道路ネットワークを構築することが可能になります。

開発の経緯

このツールは、地形生成ソフトウェア「Gaea」の開発元であるQuad Spinnerに所属するMaarten Nauta氏によって開発されました。公式な企業向け製品ではなく、同氏の個人的なオープンソースプロジェクトとして無償公開されています。

開発の背景には、Gaeaコミュニティのユーザーから「詳細なハイポリゴン地形上に複雑な道路ネットワークを構築したい」という要望が多数寄せられていたことがあります。

Nauta氏は、Blender向けの既存の道路生成ツールの多くが「有料である」「ローポリゴン地形にしか対応していない」「ツール自体が独自の地形を生成してしまうため外部地形と適合しない」といった課題を抱えていることに着目しました。

このギャップを埋めるため、Gaeaなどで作成した精密な地形データにシームレスに適用できるツールとして、このプロジェクトが立ち上げられました。

主な機能

MRoadGen V1には、道路作成を効率化するための様々な機能が搭載されています。

レイキャストによる自動配置

カーブの頂点を移動させるだけで、道路のエッジが地形の起伏に合わせて自動的に投影されます。急斜面でも道路面が地形にめり込まないよう、安全のための高さオフセット(デフォルト0.5m)を設定できます。

また、立体交差など地形に沿わせたくない部分は、特定の頂点グループ(Selection overpass)に指定することでレイキャストの対象から外すことも可能です。

盛土の自動生成

平らな道路面と高低差のある地形との間を滑らかに繋ぐ法面(盛土 – Embankment)を自動で計算し、生成することができます。

盛土の幅(急斜面では数値を上げて地形に届かせる必要があります)、頂点密度、地形と馴染ませるための柔らかさ(Softness)を細かく調整可能です。なお、盛土の計算は非常に重いため、道路の配置作業中はパフォーマンス維持のために設定をオフにしておくことが強く推奨されています。

可変の道路幅

頂点クリース(Vertex Crease)の設定値を利用することで、特定の車線や一部の道路区間だけの幅を個別に調整できます。全体的な基本の道路幅(Base road width)はデフォルトで8m(一般的な2車線分)に設定されています。

注意点として、ベースの道路幅は道路網を構築する「前」に設定する必要があります。後から全体の幅を変更すると、作成済みの交差点の接続が外れてしまう可能性があるためです。

交差点と立体交差

道路の端を別の道路に近づけるだけで自動的にマージ処理が行われ、きれいな交差点を作成できます。

スナップする距離(Merge distance)は調整可能で、Maxime氏のアップデートにより細い道路が自己マージして消えてしまう問題も回避されています。立体交差(オーバーパス)については、生成される支柱の間隔(Pillar interval)や位置のオフセット(Pillar offset)をパラメーターで簡単に制御可能です。

複数の路面マテリアル

ツールパネルから設定を切り替えることで、アスファルトだけでなく、未舗装の土(Road B)など、異なる路面マテリアルを部分的に割り当て、シームレスにブレンドさせることができます。

未舗装路に切り替えた際、不自然に白線などの道路標示が表示されないようにする自動無効化設定(disable markings on road B)も備わっています。

道路標示の制御

センターラインの表示や、外部メッシュを投影した複雑なカスタム標示(進入禁止エリアなど)を追加できます。破線の間隔(デフォルト3m)の調整や、実線、二重線への切り替えが可能です。

また、外側の白線を内側にオフセットすることもできます。遠くの標示がぼやけたり消えたりする場合は、頂点にサポートエッジ(support vertices)を追加してサブディビジョンの掛かり具合を調整することで鮮明さを保つテクニックが紹介されています。

アセットのスキャッタリング対応

生成された盛土部分には、頂点カラー(Color Attribute)によるマスクが自動生成されます。RGBチャンネルを利用し、赤チャンネルで「道路からの距離」、緑や青チャンネルで「高架下の空間(高さ違い)」といったマスクデータを取得できます。

これをGeoScatterなどのアドオンと連携させることで、道路のすぐ脇には草を、少し離れた場所には樹木を配置する、といった自然な環境構築をプロシージャルに行うことができます。

これらの機能は以下の動画で確認することができます。

導入手順

  1. Blender 5.0以降のバージョンを用意します。
  2. GitHubから.blendファイルをダウンロードします。
  3. 作業中のプロジェクトで「ファイル」>「アペンド (Append)」を選択し、ダウンロードしたファイル内の「MRoadGenerator」コレクションをシーンに読み込みます。

ライセンスについて

MRoadGenは、クリエイティブ・コモンズ・ゼロ(CC0 1.0 Universal)ライセンスの下、GitHubにて無料で公開されています。商用・非商用問わず自由に利用することが可能です。

※開発者のMaarten Nauta氏は、本ツールをコミュニティ主導で発展させていきたいと考えており、バグ報告や新機能のリクエスト、プルリクエストを通じた開発への参加を歓迎しています。

目次