TOPIC 10|Unreal Engineで活用する[2/2]|3D都市モデル内を歩き回るプロジェクトの作成
Unreal Engineのサードパーソンテンプレートを用いて、PLATEAUの3D都市モデルの街を自由に歩き回れるサンプルプロジェクトを作成します。また複雑なモデルを扱う際の軽量化や高速化の方法、精度や効果を高めるための調整ポイントを紹介します。

【目次】
10.4 街を歩き回る
10.4.1 三人称視点のプロジェクトを作る
10.4.2 サードパーソンテンプレートでプロジェクトを作る
10.4.3 PLATEAUの3D都市モデルを配置する
10.5 LOD2の建築物モデルの取り扱い
10.6 軽量化と応用
10.6.1 テクスチャの解像度を下げる
10.6.2 LODとNanite
10.6.3 ピボット位置と精度
10.7 事例
10.4 _ 街を歩き回る
PLATEAUを使った実例として、街を歩き回る例を示します。
10.4.1 _ 三人称視点のプロジェクトを作る
Unreal Engineのプロジェクトを作るときは、いくつかのテンプレートから選べます。
先ほどはBlankプロジェクトから作りましたが、「ファーストパーソン」や「サードパーソン」、「トップダウン」のテンプレートには自分のキャラクターが含まれており、キーボード操作で自在に動かせます。Blankプロジェクトと違って、当たり判定と重力があります。壁があれば、それ以上は進めませんし、床から踏み外すと、重力に従って落下します。また坂があれば、その勾配に従って上り下りし、[スペース]キーでジャンプして、障害物を避けることもできます。
ここでは三人称視点の「サードパーソン」を選んでプロジェクトを作り、そこに3D都市モデルを置くことで、キーボード操作で街を歩けるサンプルを作ります。
【メモ】
ファーストパーソンは一人称視点、すなわちキャラクターの目が自分の目になる(自分の姿が見えない)もの、サードパーソンは三人称視点、すなわち、自分を俯瞰する別のカメラから見るものです。トップダウンは、サードパーソンと似ていますが、上空のカメラから自分を見るものです。
10.4.2 _ サードパーソンテンプレートでプロジェクトを作る
まずは、[サードパーソン]で、新規プロジェクトを作ってください。

作られたプロジェクトには、壁と床、段差のブロックなどが配置されています。このまま[▶]ボタンをクリックして実行すれば、カーソルキーで自分を操作でき、動き回れます。坂も上がれますし、[スペース]キーを押せば、ジャンプもできます(図10-25)。


10.4.3 _ PLATEAUの3D都市モデルを配置する
このサンプルに、PLATEAUの3D都市モデルを配置して、都市を自在に歩き回れるようにします。
[1]サンプルの建物を削除する
サンプルの建物を削除します。壁や床、配置されているブロックなどは、[アウトライナー]で複数の階層に分かれていて少しわかりにくいのですが、図10-27に示すものを選択して削除します。


[2]PLATEAUの建築物を配置する
「10.2.3 FBXファイルをUnreal Engineに配置する」で説明したのと同じように、建築物のFBX形式ファイルを配置します。
こちらも同様に、LOD1の53394525_bldg_6677.fbxをインポートします。
・[メッシュ]の[Generate Missing Collision]のチェックを外す
・[メッシュ]の[詳細設定]の[Combine Meshes]にチェックを付ける
・同じく[Normal Import Method]を[Import Normals and Tangents]に変更する
・同じく[Compute Weight Normals]にチェックを付ける
・Import Translationを、先ほど確認した平面直角座標のX座標、Y座標を用いて、(1263870.80, -3440361.23, 0)に設定する
・Import Rotationを(0, 0, 0)に設定する
・Import Uniform Scaleを100に設定する
・[Convert Scene]にはチェックを付けない
・[Convert Scene Unit]にはチェックを付けない


インポートしたら、先ほどと同様、レベルにドラッグ&ドロップします。そして、位置を(0, 0, 0)に変更します。すると、建物が原点付近に表示されます。

[3]地面を付ける
同様にして、地面を取り付けます(地面を付けないと、[▶]ボタンを押したとたん、自分が下にずっと落ち続けてしまいます)。「10.3.2 異なる種類のデータを重ねる」で説明したのと同じ方法でdem/533945_dem_6677.fbxをインポートします。インポートしたらレベルに設置して、その位置を(0, 0, 0)に設定します。



[4]コリジョンを作成する
衝突判定のコリジョンを作成します。コリジョンを作成するには、いくつかの方法がありますが、メッシュの形状をそのままコリジョンとして扱う「Use Complex Collision As Simple」を使う手法があります。
次のようにして、コリジョンを作成します。
(1)建物モデルをスタティックメッシュエディタで開く
[コンテンツブラウザ]に配置されている「533945425_bldg_6677」のオブジェクトをダブルクリックします。すると、スタティックメッシュエディタが起動します。
(2)[Use Complex Collision As Simple]を選択する
[詳細]タブの[Collision Complexity]で、[Use Complex Collision As Simple]を選択します。選択したら、左上の[保存]をクリックしたのち、閉じます。

コラム:コリジョンが設定されたかを確認する
左上のメニューからビューモードで[プレイヤーコリジョン]を選択すると、コリジョンの設定を確認できます。

(3)地形モデルについて同様に操作する
地形モデルの533945_dem_6677についても、同様に操作します。

[5]自分の位置を微調整する
最後に、ビューウィンドウを見ながら、自分の初期位置であるPlayer Startが、ビルと重なったり、ビルの内部にいたりしないかなどを確認し、必要に応じて道路上に移動します。ビルのなかにいると真っ暗ですし、そこから外に出られないためです。
調整するには、[アウトライナー]で[Player Start]を右クリックして[オブジェクトをビューにスナップ]を選択します。すると、ビューウィンドウにおける視点がその位置に切り替わるので、画面を見ながら調整します。

[6]実行して確認する
以上で完成です。再生ボタン([▶])をクリックして実行してください。図10-39のように都庁の周りを歩けます。
カーソルキーで前後左右に移動、[スペース]キーでジャンプします。また、マウス操作で視点の移動ができます。

10.5 _ LOD2の建築物モデルの取り扱い
LOD2の建築物モデルも、LOD1の建築物モデルと同様に扱えます。ただしG空間情報センターからダウンロード、もしくは、FME Formでcitygml2fbx.fmwtで変換したデータは面の数が多く、処理に時間がかかるため、FME Formのmerge_bldg_surface.fmwtでマージ済みのデータを使うのがよいでしょう(「4.3.5 建築物データのテクスチャを再構成した軽量FBX/OBJを作る」参照)。
図10-40に、LOD1のデータの代わりにLOD2のデータを配置した例を示します。

10.6 _ 軽量化と応用
Unreal EngineでPLATEAUの3D都市モデルを取り扱うときの、軽量化や応用のトピックをまとめます。軽量化は、「ポリゴン数を削減する」「テクスチャを統合する」「テクスチャの解像度を下げる」などが有用です。こうした軽量化は、あらかじめBlenderなどのソフトウェアでFBX形式ファイルを読み込み、加工しておくこともできますが、Unreal Engineの機能を使った軽量化もできます。
10.6.1 _ テクスチャの解像度を下げる
テクスチャのサイズは、テクスチャエディタの[詳細設定]にある[Maximum Texture Size]で、その上限値を変更できます。PLATEAUのテクスチャは高解像度の航空写真なので、解像度を下げることで軽量化に貢献します。

10.6.2 _ LODとNanite
Unreal Engineには、いくつかの詳細度のモデルを作り、モデルが遠い位置にあるときは、粗いモデルで描画することで高速化を図るLOD機能があります。
■ LODの作成とリダクション
LOD機能(PLATEAUの3D都市モデルのLODではなくUnreal EngineのLOD機能)は、いくつかの詳細度のモデルを作り、距離に応じてそれを切り替えて、遠くにあるときは荒いモデルを、近くにあるときは詳細なモデルに切り替えて表示することで、パフォーマンスを向上させる仕組みです。
LOD機能を使うには、スタティックメッシュエディタにおいて、[LOD設定]の[LOD数]を設定し、[変更を適用]をクリックします。

すると、画面左上からLODを切り替えられるようになります。それぞれのLODにおいて、[縮小設定]からリダクションをかけて、遠くにあるものを荒くすることでパフォーマンスを向上できます。

■ Naniteの使用
比較的高性能なPC環境であれば、LODを手動で作らなくても、LODモデルを自動で生成するNaniteという機能を有効にする方法もあります。Naniteを有効にするには、スタティックメッシュエディタにおいて、[詳細]オプションの[Naniteサポートを有効化]にチェックを付けるだけでよく、LODの設定は必要ありません。
Naniteは、人が知覚できるディテールだけを圧縮するので、見た目にほぼ変化なくパフォーマンスを向上できます。高性能なPC環境では、利用を検討するとよいでしょう。ただし手軽に設定できる反面、ブレンドモードがOpaque(不透明)およびMasked(マスク)に設定されているマテリアルしか対象とならなかったり、一部のレンダリング機能がサポートされないなど注意点もあります。利用する際は、「Nanite 仮想化ジオメトリ」のドキュメントを参照ください。

10.6.3 _ ピボット位置と精度
PLATEAUの3D都市モデルを本トピックの方法で読み込んだ場合、オブジェクトをドラッグして位置移動できる「ピボット」と呼ばれるアイコンが表示されている位置と、実際の建物とが数キロメートル離れていることも珍しくありません。
いくつかの演算処理では、ピボット位置を基準に計算するため、ピボットから離れた場所にあると、十分な精度が出ない、もしくは、期待した効果にならないことがあります。例えば、オブジェクトを破壊する「Chaos Destruction」などは、その典型的な例です。
そのような場合は、[アクト]タブの[Pivot Offset]の設定を調整して、ピボットが建物の近くになるように(理想的に言えば、建物の中心)になるように調整してください。

10.7 _ 事例
「Unreal Engine」を使った例としては、以下のようなものがあります。
■ 防災エリアマネジメントDX

【企業名】 | 東日本旅客鉄道株式会社 / KDDI株式会社 / 東急不動産株式会社 / 株式会社日建設計 |
【分野】 | 防災・防犯 |
【対象地域】 | 東京都港区/品川駅北周辺地区 |
【PLATEAU利用データ】 | 建築物(LOD1、LOD2) |
【他のデータとの掛け合わせ】 | 計画データ(LOD2相当)、人流元データ(在館者データ、帰宅困難者データ) |
【利用ソフトウェア】 | Unreal Engine、Cesium for Unreal |
【活用概要】 | 3D都市モデルを利用した大規模誘導・避難シミュレーション環境を構築し、エリア内防災計画の更新や合意形成における有効性を検証することで、防災を切り口にしたエリアマネジメントのDXを目指す。 |
【URL】 | https://www.mlit.go.jp/plateau/use-case/uc22-030/ |
■ エリアマネジメントのデジタルツイン化Ver2

【企業名】 | 東急不動産株式会社 / ソフトバンク株式会社 / 株式会社キャドセンター / 株式会社Fusic |
【分野】 | 都市計画・まちづくり |
【対象地域】 | 東京都港区 東京ポートシティ竹芝及び周辺エリア |
【PLATEAU利用データ】 | 建築物(LOD1、LOD2) |
【他のデータとの掛け合わせ】 | 混雑情報データ、登録したセンサの位置データ、避難施設への入館者データ |
【利用ソフトウェア】 | Unreal Engine |
【活用概要】 | 東京ポートシティ竹芝を中心とする竹芝エリアの3D都市モデルを活用したデジタルツイン上で防災まちづくりの関係者が円滑に情報共有や施設管理を行うためのツールを開発し、エリアマネジメントにおける防災まちづくりへの有用性を検証する。 |
【URL】 | https://www.mlit.go.jp/plateau/use-case/uc22-019/ |
■ バーチャル都市空間における「まちあるき・購買体験」

【企業名】 | 株式会社三越伊勢丹ホールディングス |
【分野】 | 地域活性化・観光 |
【対象地域】 | 東京都新宿区 新宿三丁目エリア |
【PLATEAU利用データ】 | 建築物(LOD2) |
【他のデータとの掛け合わせ】 | 伊勢丹を中⼼とした複数建物詳細モデル |
【利用ソフトウェア】 | Unreal Engine |
【活用概要】 | 「バーチャル伊勢丹」の仮想世界を拡大し、3D都市モデルを活用して新宿三丁目エリアを中心とする都市スケールの「バーチャル新宿」を構築することで、仮想空間における購買体験や回遊体験等の都市機能の提供を目指す。 「バーチャル新宿」ではアバターを用いて「まちあるき」やユーザ同士のコミュニケーション、イベント参加などのさまざまなコンテンツを体験することが可能であり、このようなバーチャル空間上での体験がユーザのQoL向上にどのように貢献し、エリアの価値向上や参画企業のマネタイズにどのように貢献するのかを検証する。 |
【URL】 | https://www.mlit.go.jp/plateau/use-case/uc20-022/ |
【文】
大澤文孝
【監修】
崎山和正(株式会社シナスタジア)
エピック ゲームズ ジャパン合同会社
株式会社 理経
日本工営株式会社