tpc10-1

TOPIC 10|Unreal Engineで活用する[1/2]|Unreal Engineで3D都市モデルを表示する

Unreal Engineは、VRゲームやシミュレーションなど高度なリアルタイム3Dコンテンツ制作に用いられるゲームエンジンです。Unreal Engineのインストール、プロジェクトの作成、PLATEAUの3D都市モデルを読み込んで配置するまでの手順を説明します。

Share

Unreal Engineは、VRゲームやシミュレーションなど高度なリアルタイム3Dコンテンツ制作に用いられるゲームエンジンです。Unreal Engineのインストール、プロジェクトの作成、PLATEAUの3D都市モデルを読み込んで配置するまでの手順を説明します。

TOPIC 10 _ Unreal Engineで活用する

Unreal Engineは、Epic Games社のリアルタイム3D製作ツールです。このトピックでは、Unreal EngineでPLATEAUを活用する方法を説明します。

【目次】

10.1  Unreal Engineとは

 10.1.1  Unreal Engineのダウンロード

 10.1.2  Unreal Engineの起動とプロジェクトの作成

10.2  3D都市モデルの基本的な読み込み方

 10.2.1  FBX形式ファイルのダウンロード

 10.2.2  原点への移動とスケールの検討

 10.2.3  FBXファイルをUnreal Engineに配置する

10.3  別のデータを重ねる

 10.3.1  異なるメッシュコードの建築物を重ねる

10.1 _ Unreal Engineとは

Unreal Engineは、リアルタイム3D制作ができるゲームエンジンです。ゲーム以外にも、映像制作、建築、シミュレーションなど、幅広い分野で活用されています。エンジンのソースコードが公開されており、さまざまな開発者が開発に携わっているのも特徴です。

10.1.1 _ Unreal Engineのダウンロード

Unreal Engineは、無料で始められます。Unreal Engineでロイヤリティが発生するのは、Unreal Engineを組み込んだ市販向け製品(ゲームなど)を配布し、その総収入が100万米ドルを超える場合です(2022年10月現在)。クライアント向けのカスタムプロジェクトやリニアコンテンツ(映像やテレビ番組)などに対するロイヤリティはかかりません。

Unreal Engineの公式ページからダウンロードページに移動し、必要なファイルをダウンロードしてインストールしてください

【Unreal Engine公式ページ】

https://www.unrealengine.com/ja

Unreal Engineは、ランチャーを使ってUnreal Engine本体をダウンロードする方式です。まずはダウンロードページからランチャーをダウンロードしてインストールします。

インストールが完了すると、ランチャーが起動します。利用にあたっては、Epic Gamesアカウントが必要です。

アカウントを作成してサインインしたら、ランチャーから[Unreal Engine]タブを開きます。右上の[エンジンのインストール]をクリックすると、インストール可能なバージョンが選択できるので、クリックしてインストールします(図10-1、図10-2)。

【メモ】

今回のチュートリアルではエンジンバージョン”5.0.3”を使用しています(2022年12月時点で新バージョン”5.1”がリリースされていますが、操作はほぼ変わりません)。

その後、エンドユーザーライセンス契約書に同意すると、インストールする場所について確認されます。変更する必要がなければ、そのまま[インストール]ボタンをクリックすると、インストールが完了します(図10-3)。

図10-1 インストールをはじめる
図10-2 インストールするバージョンを選択する
図10-3 インストール先の設定

10.1.2 _ Unreal Engineの起動とプロジェクトの作成

Unreal Engineのインストールが完了したら、ランチャーの[Unreal Engine]タブから起動できます。[起動]ボタンをクリックして起動します。

図10-4 Unreal Engineを起動する

すると、プロジェクトブラウザが開きます(初回の起動には、しばらく時間がかかります)。

プロジェクトブラウザでは、どのようなプロジェクトを作るのか決めます。ここでは、まっさらな状態から始めます。[ゲーム]をクリックし、[Blank]をクリックします。

このとき[スターターコンテンツ]にチェックが付いていることを確認してから、[作成]ボタンをクリックします。プロジェクト名は任意に変更してかまいません。

図10-5 Blankプロジェクトを作成する

プロジェクトを作ると、図10-6のように、編集画面であるUnreal Editorが起動します。デフォルトで、椅子とテーブル、ライトなどが配置されています。Unreal Engineでは、配置する空間のことを「レベル」と呼び、椅子やテーブル、ライトなどの配置するオブジェクトのことを「アクタ」と呼びます。利用しているアクタの一覧は、画面右側の[アウトライナー]で確認できます。

椅子やテーブルがプレビュー表示されている部分は「ビューポート」と呼びます。ここに各種アクタを配置していきます。すなわち、PLATEAUの3D都市モデルを表示するのであれば、3D都市モデルを読み込んで、それをアクタとして配置します。

【メモ】

椅子やテーブル、ライトなどが配置されたレベルが表示されていないときは、[Maps]内の[Minimal_Default]を開いてください。

図10-6 Unreal Editor

デフォルトでは、ゲームプレーヤーを示すPlayer Startというアクタが配置されています。そのため、画面上のプレイボタン[▶]をクリックする(もしくは[Alt]+[P]キーを押す)と、この空間を歩き回れます。カーソルキーで移動、マウス操作で向きを変えられ、[スペース]キーで上昇、[Ctr]キーで降下します。少し後ろに下がると、この椅子は、小さな床の上に設置されていることがわかります。

図10-7 プレイする

以降の手順では、このレベルに、3D都市モデルを配置していきます。初期に配置されている椅子やテーブル、床は不要なので削除しておきます。これらはアウトライナーの[StaticMeshes]以下にあるので、[Shift]キーを押しながらクリックして、配下のものすべて選択し、右クリックして[編集]―[削除]をクリックします。

図10-8 椅子やテーブルなどを削除する
コラム:距離スケーリングカメラを使用する

ビューポートでは、マウス操作でアクタをつかんで移動や回転ができます。ビューポートの視点を変えるには、マウスで次のように操作します。

◼ 視点の上下・左右の移動

マウスの左右両方のボタンを押しながら、上下左右方向にマウスを動かします。

◼ 視点の上下・左右の角度変更

マウスの右ボタンを押しながら、上下左右方向にマウスを動かします。

◼ ズームイン/アウト

マウスホイールを上下に動かします。

Unreal Engineのデフォルトの単位はセンチメートルです。そのため上述のマウス操作における移動も、それに合わせられています。PLATEAUの3D都市モデルはメートル単位で建物も大きく、マウス操作に対して視点の動きが小さすぎるため、目的の部分を見るのに相当な回数のマウス操作が必要になります。よって、カメラの移動量を調整することをおすすめします。

[編集]メニューから[エディタの環境設定]を開き、[レベルエディタ]の[ビューポート]画面を開きます。[コントロール]の[詳細設定]にある[距離スケーリング済みのカメラを使用]にチェックを付けると距離に応じたカメラ移動量になり、ストレスなく操作できるようになります。

図10-9 距離スケーリング済みのカメラを使用する

10.2 _ 3D都市モデルの基本的な読み込み方

Unreal Engineでは、OBJ形式やFBX形式のファイルをインポートできます。ここではFBX形式の3D都市モデルを読み込んで、表示する方法を説明します。

10.2.1 _ FBX形式ファイルのダウンロード

次のいずれかの方法で、FBX形式の3D都市モデルを準備します。

----------------
G空間情報センターから、利用したい3D都市モデルのFBX形式ファイルをダウンロードする

②PLATEAU SDK【TOPIC 17】やFME Form【TOPIC 4】などを使って、CityGMLから変換する
----------------

ここでは①の方法で、G空間情報センターの東京都23区の3D都市モデルのページを開き、[FBX]の部分からダウンロードします(図10-10)。

【メモ】

FBX形式ファイルのダウンロード方法は、Unityの場合と同じです。「9.2.1 FBX形式ファイルのダウンロード」も併せて参照してください。

【3D都市モデル(Project PLATEAU)東京都23区】

https://www.geospatial.jp/ckan/dataset/plateau-tokyo23ku

図10-10 FBXをダウンロードする

ダウンロードしたファイルを展開すると、次の構造のファイルが得られます。

13100_tokyo23-ku_2020_fbx_3_op
├─13100_indexmap_op.pdf
├─bldg
│  ├─lod1
│  │  ├─53392546_bldg_6677.fbx
│  │  │ …略…
│  └─lod2
│  │  ├─53392546_bldg_6677.fbx
│  │  │ …略…
├─brid
│  ├─53392650_brid_6677.fbx
│  │ …略…
├─dem
│  ├─533925_dem_6677.fbx
│  │ …略…
└─tran
│  ├─533925_tran_6677.fbx
└─metadata
    └fbx_13100_2020_metadata_op.xml

以下の例では、東京都庁周辺の建築物が含まれる、3次メッシュコード「53394525」に該当する次のファイルを扱います。

LOD1の場合:bldg/lod1/53394525_bldg_6677.fbx
LOD2の場合:bldg/lod2/53394525_bldg_6677.fbx

10.2.2 _ 原点への移動とスケールの検討

Unreal EngineでFBXファイルを読み込む際には、移動や回転、スケールを設定できます。

● 軸と回転

扱いやすい軸の方向に合わせます。Unreal Engineには、地理関数やCesium for Unrealなどのプラグインがあり、それらと同じ軸の方向に合わせると都合がよいです。

FBXファイルを回転することなく読み込むと(インポート時にトランスフォームの[回転]で、すべて0を設定する)、図10-11のように、Y軸の正方向が「南」、X軸の正方向が「東」のように読み込まれます。この軸の方向がUnrealで地理情報を扱うときの一般的な軸の方向ですが、平面直角座標系とはX軸とY軸が入れ替わり、かつY軸の向きが逆である点に、注意してください。

【メモ】

Unreal Engineで地理情報を扱う際の考え方については、「レベルでジオリファレンスを使用する」を参照してください。

図10-11 Unreal Engineで地理情報を扱う際の一般的な軸の方向と平面直角座標系との関係

● スケール

FBXファイルはメートル単位、Unreal Engineはセンチメートル単位なので、100倍にします。

● 原点の調整

平面直角座標系は、地域ごとに定められた原点が設定されており、地域によっては、原点と建物が遠くて見えにくいこともあります。そこで本トピックでは、目的の建築物を原点近くにもってくるように移動してインポートします。

【メモ】

原点の移動については、インポート時は原点を操作せず、配置するときに調整する、もしくは、調整せずにプレーヤーやカメラをその建物の位置に移動するという方法もあります(Unityで活用する】では、原点を操作せず、プレーヤーとカメラの位置を調整する方法で解説しています)。

目的の建築物を原点近くにもってくるようにするためには、あらかじめ、中心にしたい建築物の平面直角座標における座標を確認しておき、インポート時に、そのぶんだけずらすことで、位置合わせをします。

そこでまず、TOPIC9【Unityで活用する】で行ったのと同様に、地理院地図を使って、原点にしたい場所の経緯度を調べます。

図10-12 原点とする経緯度を確認する

仮にここでは「緯度35.689823、経度139.693689」とします。この経緯度を、地理院の「測量計算サイト」にある、「平面直角座標への換算」というページで変換します。以下では、変換した座標が、 (-34403.6123 m, -12638.7080 m)になったとします(図10-13)。インポートする際は、この値ぶんずらすことで、この位置を原点としてインポートできます。ずらす値は、図10-11に示したように、X座標とY座標が入れ替わり、またY座標は正負が逆になるので注意してください。

図10-13 平面直角座標に変換する

10.2.3 _ FBXファイルをUnreal Engineに配置する

原点位置を定めたところで、実際に、Unreal Engineにインポートし、レベルに配置していきます。ここでは、LOD1の53394525_bldg_6677.fbxファイルを配置してみます。

【メモ】

以下では、提供されている53394525_bldg_6677.fbxファイルをそのまま使いますが、使用範囲を調整したいときは、あらかじめBlenderなどの3Dソフトを使って、不必要な部分の削除や他のファイルとマージするなど、必要に応じて加工したFBX形式ファイルを使うとよいでしょう(【Blenderで活用する】参照)。

[1]FBXファイルをインポートする

[コンテンツドロワー]を開き、利用したいFBXファイルをドラッグ&ドロップします。
 ドラッグ&ドロップすると、インポート画面が開きます。ここで、インポートする際の移動や回転、スケールを設定できます。

この画面では、以下の設定で進めて、[全てインポート]ボタンをクリックします。

・[メッシュ]の[Generate Missing Collision]のチェックを外す

・[メッシュ]の[詳細設定]の[Combine Meshes]にチェックを付ける

・同じく[Normal Import Method]を[Import Normals and Tangents]に変更する

・同じく[Compute Weight Normals]にチェックを付ける

・Import Translationを、先ほど確認した平面直角座標のX座標、Y座標を用いて、(-Y * 100, X * 100, 0)に設定する(今回の例であれば、(1263870.80, -3440361.23, 0))。

・Import Rotationを(0, 0, 0)に設定する

・Import Uniform Scaleを100に設定する

・[Convert Scene]にはチェックを付けない

・[Convert Scene Unit]にはチェックを付けない

そうすることで、次のようにインポートされます。

・指定した場所が原点

・X軸の正方向が東、Y軸の正方向が南の座標系

・(100倍することで)メートルをセンチメートルに換算

図10-14 FBXファイルをドラッグ&ドロップする
図10-15 インポートの設定(1)
図10-16 インポートの設定(2)
コラム:Combine Meshes

[メッシュ]の[詳細設定]の[Combine Meshes]は、全部をひとつのメッシュとして取り込むかどうかの設定です。

ここではチェックを付けて、ひとつのメッシュとして取り込んでいます。LOD1もしくはFME Formでmerge_bldg_surface.fmwtを使って変換したLOD2の場合は、チェックを外しておくと、建築物を、ひとつずつ分けてインポートできます。ただしインポートには、相当な時間がかかります(G空間情報センターからダウンロード、もしくは、FME Formでcitygml2fbx.fmwを使って変換したLOD2の場合は、面がそれぞれ別のオブジェクトとして構成されているため、面単位の取り込みとなります)。

図10-17 [Combine Meshes]にチェックを付けた場合
図10-18 [Combine Meshes]にチェックを付けなかった場合

[2]まとめてレベルに配置する

インポートしたオブジェクトをレベルにドラッグ&ドロップして配置します。

【メモ】

データによっては、インポートの際、以下の警告メッセージが表示されることがあります。このエラーは、Unreal Engineだけでは修復できません。データを一度、3ds Maxなどのソフトで開き、[Export Smoothing Groupsオプション]を有効にしてエクスポートし直すなどが必要です。そのまま無視して支障ありません。

「このFBXシーンにはスムージング グループ情報がありません。ファイルをエクスポートする前に必ずFBX Exporter プラグインの[Export Smoothing Groups] オプションを有効にしてください。スムージング グループをサポートしないツールの場合でも、インポート中に正しい頂点法線を推測するため、FBX Exporter はエクスポート時に適切なスムージング データを生成します。」

図10-19 レベルにドラッグ&ドロップする

[3]原点に移動する

インポートした建築物の位置を、原点である(0, 0, 0)に設定します。

[アウトライナー]上では、ドラッグ&ドロップしたオブジェクト(53394525_bldg_6677)を選択し、[詳細]の[トランスフォーム]の[位置]を、原点である(0, 0, 0)に設定します。

これで、図10-13で確認した座標が原点となるように配置されます。

図10-20 位置を原点に設定したところ

[4]プレーヤーの位置を調整する

以上で、基本的な配置は完了ですが、3D都市モデルの「高さ」は標高であり、東京近郊では約40m――Unreal Engineではセンチメートル単位なので、設定値としては4000――のあたりにあります。

Blankプロジェクトのデフォルトのプレーヤーは、デフォルトでは高さ124cmで、建物群よりもずっと下から見上げるような位置です。

そこで[アウトライナー]から、プレーヤーに相当するアクトである[Player Start]をクリックし、[詳細]の[トランスフォーム]で、[位置]の高さ(Z座標)を4000に設定します。

図10-21 高さを4000(4000cm=40m)に設定する

[5]ビルドして実行する

以上で設定完了です。[ビルド]メニューから[全レベルをビルド]を選択してビルドします。ビルドが終わったら、[▶]ボタンをクリックしてみてください。カーソルキーで操作して、ビルを見ながら空中を移動できます([スペース]キーで上昇、[Ctrl]キーで下降)。

【メモ】

全体が暗いのはライティングの位置の問題です。ライティングを調整すれば、光が当たって表示されるようになります。

10.3 _ 別のデータを重ねる

同じ平面直角座標系であれば、同様の方法でインポートすると、それらはピッタリ重なります。

10.3.1 _ 異なるメッシュコードの建築物を重ねる

例えば、隣接する代々木周辺の3次メッシュ「53394515」の建築物モデル(53394515_bldg_6677.fbx)を同様の操作で配置すれば、図10-22のように、真横に表示されます。

【メモ】

このときImport Translationなどのインポートの設定値は、1つめのFBXファイルと同じ値にそろえます。

図10-22 隣接地域をさらに追加したところ

10.3.2 _ 異なる種類のデータを重ねる

建築物のデータに加え、地形や橋梁などを重ねることもできます。例えば地形のdem/533945_dem_6677.fbxを追加した例を図10-23に示します。

図10-23 地形を追加したところ

【文】

大澤文孝

【監修】

崎山和正(株式会社シナスタジア)
エピック ゲームズ ジャパン合同会社
株式会社 理経
日本工営株式会社