Unreal Engine 6でオープンワールドマップを作成

概要

本演習では、Unreal Engine 6の機能を活用してオープンワールドマップを構築する。3 次元コンピュータグラフィックスとゲームエンジンの可能性を体験的に習得することを目的とする。

目次

サイト内の関連情報


前提知識

必須

あると望ましい

本演習で学ぶこと

本演習で扱うPCG Editor Mode、Procedural Vegetation Editor、Nanite Foliageは、Plugins画面やProject SettingsでExperimentalと表示される場合がある。学習目的での利用は問題ないが、本番プロジェクトへの導入は慎重に検討すること。


演習一覧

演習 内容 難易度 前提
演習1PCG Partitioned Generationで樹木を自動配置入門Unreal Engineの基本操作
演習2PCG Paintツールで建築物を手動配置入門Unreal Engineの基本操作
演習3PCGスプラインで道路と道路沿い建築物を配置入門〜中級演習1〜2
演習4Hierarchical Generationで草花を高密度配置中級PCGの基本
演習5Procedural Vegetation Editorで植生を作成中級PCGの基本
演習6Nanite Foliageで超高密度植生をレンダリング中級演習5
演習7Substrateで物理的に正確なマテリアル中級マテリアルの基本

演習1:PCG Partitioned Generationで樹木を自動配置

PCGはルールに基づいて樹木や岩を自動配置するシステムである。Partitioned Generationによりデータをグリッド単位で分割管理し、大規模ワールドでも軽快に動作する。

《手順》

ステップ1:地形の準備

  1. Basic level templateで新規レベルを作成する。
  2. 画面左上のModesドロップダウンから「Landscape」を選択する。
  3. 「Manage」タブで「Create」をクリックして地形を生成する。
  4. 「Sculpt」タブで地形に起伏をつける。

ステップ2:PCG VolumeとPCG Graphの作成

  1. Window > Place Actors を開き、「PCG Volume」を検索してビューポートにドラッグ&ドロップする。
  2. Content Browser(Ctrl+Spaceで開閉)で右クリック > Create Advanced Asset > PCG > PCG Graph を選択する。
  3. 名前を付ける(例:PCG_ForestGen)。
  4. レベル内のPCG Volumeを選択し、DetailsパネルのPCG ComponentセクションのGraphに、作成したPCG Graphを指定する。

ステップ3:ノード接続

  1. PCG Graphをダブルクリックして開く。
  2. グラフエリアで右クリックし、以下のノードを順に追加する:「Get Landscape Data」「Surface Sampler」「Transform Points」「Static Mesh Spawner」。
  3. 各ノードを左から右へ接続する(OutputピンからInputピンへドラッグ)。
  4. Static Mesh SpawnerのOutputを、グラフ右側の「Out」ノードに接続する。

ステップ4:パラメータ設定

  1. Surface Samplerを選択し、Detailsパネルで設定する:

- Points Per Square Meter0.15

- Point Extents50

- Looseness:配置のばらつきを調整

  1. Transform Pointsを選択し、Detailsパネルで設定する:

- Absolute Rotation:オン

- Scale Min0.5Scale Max1.2

  1. Static Mesh Spawnerを選択し、Mesh Entriesに「+」で樹木メッシュ(例:SM_Tree)を追加する。複数追加する場合はWeightで出現確率を調整する。
  2. 「Save」をクリックする。
  3. ビューポートでPCG Volumeを選択し、Detailsパネルの「Generate」をクリックする。

ステップ5:Partition設定

  1. PCG Volumeを選択し、Detailsパネルで「Is Partitioned」をオンにする。
  2. OutlinerでPCGWorldActorを選択する(無い場合はWindow > Outlinerで表示)。
  3. Detailsパネルで「Partition Grid Size」を設定する(例:25600cm)。設定後は、レベル内の各PCGアセットで「Cleanup」を実行してから「Generate」を再実行する。

《ヒント》

《考察ポイント》


演習2:PCG Paintツールで建築物を手動配置

Unreal Engine 6のPCG Paintツールにより、Foliage感覚で意図した位置にオブジェクトを配置できる。重要建築物やランドマークなど、自動配置に向かない要素に適している。なお、PCG Editor Mode(Paintツールを含む)は、Plugins画面でExperimentalと表示される場合があり、本番環境への導入には注意を要する。

《手順》

ステップ1:PCG Editor Modeを開く

  1. 画面左上のModesドロップダウンから「PCG」を選択する。
  2. PCG Editor Modeパネルが画面左側に表示される。

ステップ2:PCG Graphの作成

  1. Content Browserで右クリック > Create Advanced Asset > PCG > PCG Graph を選択する。
  2. 名前を付ける(例:PCG_ManualPlacement)。
  3. ダブルクリックで開き、「Transform Points」「Static Mesh Spawner」を追加して接続する。
  4. Static Mesh SpawnerのMesh Entriesに、配置したいメッシュ(例:建築物、彫像)を設定する。
  5. Static Mesh SpawnerのOutputを「Out」ノードに接続する。
  6. 「Save」をクリックする。

ステップ3:Paintツールの設定

  1. PCG Editor Modeパネルで「Paint」ツールを選択する。
  2. パネルで設定する:

- PCG Graph:作成したPCG Graphを指定

- ブラシサイズ:用途に応じて調整

- Brush Strength:配置密度を調整

ステップ4:配置と削除

  1. ビューポートで配置したい場所をクリック&ドラッグする。
  2. 削除する場合はShiftキーを押しながらドラッグする(ブラシが赤色に変わる)。

ステップ5:パラメータの微調整

  1. PCG Graphを開き、Transform Pointsを選択する。
  2. Detailsパネルで設定する:

- Scale MinScale Max:サイズのばらつき

- Absolute Rotation:オンにすると地形の傾斜に関係なく垂直に配置される

  1. 「Save」をクリックすると、配置済みオブジェクトに自動反映される。

《ヒント》

《考察ポイント》


演習3:PCGスプラインで道路と道路沿い建築物を配置

スプライン(制御点を曲線で結んだパス)に沿って道路を描き、道路沿いに建築物を半自動配置する。Density Filterで複数種類の建築物をランダムに振り分ける。

《手順》

ステップ1:道路用PCG Graphの作成とスプライン描画

  1. PCG Editor Modeパネルで「Draw Spline」ツールを選択する。
  2. Content Browserで右クリック > Create Advanced Asset > PCG > PCG Graph を選択する。
  3. 名前を付ける(例:PCG_Road)。
  4. PCG Graphを開き、「Get Spline Data」「Spline Sampler」「Static Mesh Spawner」を追加・接続する。Static Mesh Spawnerには道路メッシュを設定する。
  5. 「Save」をクリックする。
  6. Draw Splineツールのパネルで、PCG Graphに PCG_Road を指定する。
  7. ビューポートで道路の開始地点・カーブ・終了地点を順にクリックし、Enterキーで確定する。

ステップ2:建築物配置用PCG Graphの作成

  1. Content BrowserでPCG Graphを新規作成する(例:PCG_RoadBuildings)。
  2. 以下のノードを追加・接続する:

a. スプラインデータの取得:「Get Spline Data」

b. 配置間隔の設定:「Spline Sampler」をGet Spline Dataに接続

- Num Samples per Segment10

- または Distance Between Samples5000cm

c. 道路からのオフセット:「Transform Points」をSpline Samplerに接続

- Offset Min(X=0, Y=500, Z=0)

- Offset Max(X=0, Y=500, Z=0)

- 両側配置の場合:Offset Min (Y=-500)、Offset Max (Y=500)

ステップ3:複数種類の建築物をランダム配置

Density Filterは0.0〜1.0のランダム値で各ポイントを振り分ける。範囲を分割すれば複数種類の出現比率を制御できる。なお、Density FilterはAttribute Filterノードにより機能面で上位互換されているが、処理効率の面では現在も有効な選択肢である。

  1. Transform Pointsから4つの「Density Filter」を並列に接続し、それぞれ設定する:

- 建築物A:Lower Bound 0.0Upper Bound 0.25

- 建築物B:Lower Bound 0.25Upper Bound 0.5

- 建築物C:Lower Bound 0.5Upper Bound 0.75

- 建築物D:Lower Bound 0.75Upper Bound 1.0

  1. 各Density Filterの後に「Static Mesh Spawner」を接続し、対応する建築物メッシュを設定する。
  2. 「Union」ノードを追加し、全Static Mesh SpawnerのOutputを接続する。
  3. UnionのOutputを「Out」ノードに接続する。

ステップ4:配置条件の追加

  1. 平坦な場所のみに配置

- Transform PointsとDensity Filterの間に「Normal To Density」を挿入する

- Lower Bound0.99

- Upper Bound1.0

  1. 建築物同士の重なり防止

- 各Static Mesh Spawnerの後に「Bounds Modifier」を追加する

- Bounds Min-500, -500, -500

- Bounds Max500, 500, 500

- 「Self Pruning」を追加し、Pruning TypeLargest または Random

ステップ5:樹木との競合回避

  1. 樹木配置用のPCG Graph(演習1のPCG_ForestGen)を開く。
  2. 「Difference」ノードと「Get PCG Component Data」ノードを追加する。
  3. Get PCG Component DataのDetailsパネルで、建築物配置用のPCG Componentを参照する。
  4. 接続する:

- Surface SamplerのOutput → DifferenceのSource(第1入力)

- Get PCG Component DataのOutput → DifferenceのDifference(第2入力)

- DifferenceのOutput → 樹木のStatic Mesh SpawnerのInput

  1. 「Save」をクリックし、PCG Volumeで「Generate」を実行する。

《ヒント》

《考察ポイント》


演習4:Hierarchical Generationで草花を高密度配置

Hierarchical Generationは、オブジェクトを複数の階層に分けて生成する。樹木は広範囲に、草花はプレイヤー近傍のみに生成し、視覚品質とパフォーマンスを両立する。Hierarchical Generationを使うには、PCGコンポーネント側でPartitioned Generationが有効になっている必要がある。

《手順》

ステップ1:Hierarchical Generationの有効化

  1. PCG Graphを開く(例:PCG_Grass)。
  2. ツールバーの「Graph Settings」をクリックする。
  3. Detailsパネルで「Use Hierarchical Generation」をオンにする。

ステップ2:デフォルトグリッドサイズの設定

  1. Graph Settingsの「HiGen Default Grid Size」で草花用に3200を選択する。
  2. 「Save」をクリックする。

ステップ3:複数グリッドサイズの併用

樹木と草花を一つのGraphで扱う場合の設定である。Grid Sizeノードは、それより下流で生成されるデータのグリッドサイズを上書きするため、サンプラーノードの手前に配置する。

  1. 樹木用ブランチ:「Grid Size」ノードを追加し、HiGen Grid Size12800に設定する。Get Landscape Data → Grid Size → Surface Sampler(樹木用)と接続する。
  2. 草花用ブランチ:別の「Grid Size」ノードを追加し、HiGen Grid Size3200に設定する。Get Landscape Data → Grid Size → Surface Sampler(草花用)と接続する。
  3. 各ブランチの末尾にStatic Mesh Spawnerを配置する。
  4. 「Union」で結合し、「Out」ノードに接続する。

ステップ4:Generation Radiusの設定

Generation Radiusは、プレイヤーからどの距離まで生成するかを指定する値である。グリッドサイズが大きいほど大きく設定する。小さいグリッドサイズに大きいRadiusを設定すると、不要な範囲まで詳細が生成され性能が低下するため、グリッドサイズが大きいほどRadiusも大きくなるようにする。

  1. Graph Settingsの「Runtime Generation」セクションを展開する。
  2. 「Generation Radii」を展開し、各グリッドサイズに値を設定する:

- HiGen Grid Size 1280050000cm

- HiGen Grid Size 640025000cm

- HiGen Grid Size 320012500cm

  1. 「Save」をクリックする。

ステップ5:PCGコンポーネントでパーティション設定

  1. レベル内のPCG Volumeを選択する。
  2. Detailsパネルで「Is Partitioned」をオンにする(Hierarchical Generationを機能させるための必須条件である)。

ステップ6:Runtime Generationの有効化(任意)

  1. OutlinerでPCGWorldActorを選択する。
  2. Detailsパネルで「Treat Editor Viewport as Generation Source」をオンにする。
  3. レベル内のPCG Volumeを選択し、Detailsパネルで「Generation Trigger」を「Generate at Runtime」に変更する。
  4. PCG Graphを開き、Graph SettingsのRuntime Generationセクションで「Cleanup Radius Multiplier」を設定する(例:2.0)。
  5. 「Save」をクリックする。

《ヒント》

《考察ポイント》


演習5:Procedural Vegetation Editorで植生を作成

Procedural Vegetation Editor(PVE)は、Unreal Engine 6で利用できるグラフベースのツールである。SpeedTreeなど外部ツールを使わずに、エンジン内で樹木や植物を作成・カスタマイズできる。PVEを使うには、PCGおよびDynamic Windの各プラグインもあわせて有効になっている必要がある。

《手順》

ステップ1:プラグインの有効化

  1. Edit > Plugins を選択する。
  2. 検索ボックスに「Procedural Vegetation」と入力する。
  3. 「Procedural Vegetation Editor」プラグインのチェックボックスをオンにする。Experimentalと表示される場合がある。
  4. 同様に「PCG」「Dynamic Wind」プラグインも有効になっていることを確認する。
  5. 「Restart Now」をクリックしてエディタを再起動する。

ステップ2:Quixel Megaplantsのダウンロード

  1. Window > Fab を選択する。
  2. 検索ボックスに「Quixel Megaplants」と入力する。
  3. 使用するアセット(例:Oak、Pine、Birch)を選択し、「Add to Project」をクリックする。
  4. Content BrowserのQuixelフォルダにアセットが追加されたことを確認する。

ステップ3:植生のカスタマイズ

  1. ダウンロードしたアセット内のPVE Graph Editorアセットをダブルクリックし、Procedural Vegetation Editorを開く。
  2. グラフ内のノードを選択し、Detailsパネルで以下を調整する:

- 樹木の高さと幅(Scaleノード)

- 枝の数と配置(Remove Branchesノード)

- 葉の密度と形状(Foliage Distributorノード)

- テクスチャとマテリアル(Mesh Builderノード)

  1. 調整結果はリアルタイムでプレビューに反映される。
  2. 「Save」をクリックする。

ステップ4:メッシュとして出力

  1. グラフ末尾の「Output」ノードを選択する。
  2. 出力オプションで「Skeletal Mesh with Nanite(Nanite対応のスケルタルメッシュ。風による揺れなどの動きを持たせる場合に選ぶ)」を選択する。動きを持たせない場合は「Static Mesh with Nanite」を選ぶ。
  3. 出力先のフォルダとファイル名を指定し、生成を実行する。

ステップ5:PCGで配置

  1. PCG Graphを開く。
  2. Static Mesh SpawnerのMesh Entriesに、出力したメッシュを追加する。
  3. 「Save」をクリックし、PCG Volumeで「Generate」を実行する。

《ヒント》

《考察ポイント》


演習6:Nanite Foliageで超高密度植生をレンダリング

Nanite Foliageは、Naniteを植生に利用する機能である。LOD作成不要で、数百万〜数千万三角形の高密度植生を効率的にレンダリングできる。Project SettingsでExperimentalと表示される場合がある。

《手順》

ステップ1:Nanite Foliageの有効化

  1. Edit > Project Settings を選択する。
  2. 左側カテゴリから Engine > Rendering を選択する。
  3. 「Nanite」セクションの「Nanite Foliage」をオンにする。
  4. 「Restart Now」をクリックしてエディタを再起動する。

ステップ2:Nanite対応植生の作成

  1. 演習5の手順でProcedural Vegetation Editorで樹木を作成する。
  2. Outputノードで「Static Mesh with Nanite」または「Skeletal Mesh with Nanite」を選択して出力する。

ステップ3:PCGで配置

  1. PCG Graphを開く。
  2. Static Mesh SpawnerのMesh Entriesに、Nanite対応の植生アセットを追加する。
  3. 「Save」をクリックし、PCG Volumeで「Generate」を実行する。

《ヒント》

《考察ポイント》


演習7:Substrateで物理的に正確なマテリアルを作成

Substrateは、Unreal Engine 6のマテリアルシステムである。マテリアルを「物質のスラブ(板状の層)」として扱い、BSDF(双方向散乱分布関数:光の反射・透過・散乱を記述する関数)に基づき物理的に正確な表面を表現する。

《手順》

ステップ1:Substrateの有効化

  1. Edit > Project Settings を選択する。
  2. Engine > Rendering を選択する。
  3. 「Substrate」セクションの「Substrate」チェックボックスをオンにする(新規プロジェクトでは既に有効になっている場合がある)。
  4. 「Restart Now」をクリックしてエディタを再起動する。

ステップ2:基本マテリアルの作成

  1. Content Browserで右クリックし、「Material」を選択する。
  2. 名前を付ける(例:M_SubstrateBasic)。
  3. ダブルクリックでMaterial Editorを開く。
  4. グラフエリアで右クリックし、「Substrate Slab BSDF」ノードを追加する。
  5. Substrate Slab BSDFのOutput(Front Material)を、メインマテリアルノードの「Front Material」入力に接続する。
  6. Substrate Slab BSDFを選択し、Detailsパネルで設定する:

- Diffuse Albedo:基本色(RGB値またはTexture Sampleを接続)

- F0:金属0.5〜1.0、非金属0.02〜0.06

- Roughness0.0(鏡面)〜1.0(マット)

  1. 「Apply」、「Save」をクリックする。

ステップ3:従来マテリアルからの変換

  1. 従来マテリアルをMaterial Editorで開く。
  2. ルートノードを右クリックし、「Convert to Substrate」を選択する。これにより自動的にSubstrate Slabが作成され、既存の入力(Base Color、Metallic、Specular、Roughness等)がSlabに接続される。この変換は一方向であり、元の非Substrateマテリアルへ戻すことはできない。
  3. 接続結果をDetailsパネルで確認し、必要に応じてDiffuse AlbedoF0の値を調整する。
  4. 「Apply」、「Save」をクリックする。

ステップ4:複雑なマテリアルの作成

例1:金属と錆の混合(Horizontal Blend)

Horizontal Blendは同一層内で複数マテリアルを並列ブレンドする。金属と錆が同じ表面に混在する状況に相当する。

  1. Substrate Slab BSDFを2つ追加する:

- 金属用:F0 0.9

- 錆用:F0 0.05、Diffuse Albedoを茶色

  1. 「Substrate Horizontal Blend」ノードを追加する。
  2. 接続する:

- 金属用Slab BSDFのOutput → Horizontal BlendのBackground入力

- 錆用Slab BSDFのOutput → Horizontal BlendのForeground入力

- マスクテクスチャまたはノイズ → Horizontal BlendのMix入力(線形補間で混合比率を制御する)

  1. Horizontal BlendのOutputをメインマテリアルノードのFront Material入力に接続する。

例2:クリアコート上の汚れ(Vertical Layer)

Vertical Layerはマテリアルを上下に積層する。汚れがクリアコートの上に乗る状況に相当する。

  1. Substrate Slab BSDFを2つ追加する:

- ベースマテリアル用(例:カーペイント)

- 汚れ用:Roughnessを高く設定

  1. 「Substrate Vertical Layer」ノードを追加する。
  2. 接続する:

- ベースマテリアルのSlab BSDF Output → Vertical LayerのBottom入力

- 汚れ用のSlab BSDF Output → Vertical LayerのTop入力

- マスクテクスチャまたはノイズ → Vertical LayerのWeight入力(上層が下層をどの程度覆うかを制御する)

  1. Vertical LayerのOutputをメインマテリアルノードのFront Material入力に接続する。

《ヒント》

《考察ポイント》


付録A:Unreal Engine 6主要画面の所在

PCG関連

Landscape関連

World Partition関連

Material関連

共通


付録B:作業フロー全体像

  1. 地形作成(Landscape Mode)
  2. 大規模配置(演習1:PCG Partitioned Generation)
  3. 道路描画(演習3前半:Draw Spline)
  4. 道路沿い配置(演習3後半:Spline + Density Filter)
  5. 特定位置配置(演習2:PCG Paintツール)
  6. 植生作成(演習5:Procedural Vegetation Editor)
  7. 詳細追加(演習4 + 演習6:Hierarchical Generation + Nanite Foliage)
  8. マテリアル適用(演習7:Substrate)
  9. 整理(World Partition Data Layers)

配置方法の使い分け


用語集