メルマガはこちらから

PAGE
TOP

デジタルツインアプリをラクに作るなら、まず試してほしいUnityのツールキット

特集
Project PLATEAU by MLIT

提供: ユニティ・テクノロジーズ・ジャパン

 都市デジタルツインの実現を目指し、国土交通省がさまざまなプレイヤーと連携して推進する「Project PLATEAU(プロジェクト・プラトー)」。今年度もPLATEAUを活用したサービス/アプリ/コンテンツ作品コンテスト「PLATEAU AWARD 2024」において、幅広い作品が集まり、2月15日には最終審査会・表彰式が都内で開催予定となっている。

 本特集ではPLATEAU AWARD 2024の協賛社とともに、PLATEAUの先にどんな未来を思い描くのかを探っていく。

 国土交通省が主導する3D都市モデルの整備・オープンデータ化のプロジェクトであるPLATEAU(プラトー)。自由に使えるだけでなく、近年は簡単に3D都市モデルを活用できるSDK(Software Development Kit)やツール類も充実しており、都市デジタルツインを活用したアプリ作成や分析などで容易に導入できるようになった。

 ただし、風景や人物、街路樹なども含めたリアルな表現や、街中に新たに建築しようとしているビルとの重ね合わせといった内容を実施しようとすると、作り込まなければならない箇所が増え、難易度が高くなる。これを解決してくれるのが、「PLATEAU SDK-Toolkits for Unity」だ。

手間を掛けずにリアルなデジタル追加を作れるアドオン

「Unity」はゲームだけでなく近年産業分野での活用も進んでいるリアルタイム3Dエンジンだ。「PLATEAU SDK-Toolkits for Unity」を使うと、PLATEAUの3D都市モデルを簡単にインポートでき、ゲーム開発、シミュレーション、都市活用アプリなどの構築に活用できる。

 Unityで、PLATEAUの3D都市モデルを表示するのは簡単だ。公開されている「PLATEAU SDK for Unity」(https://github.com/Project-PLATEAU/PLATEAU-SDK-for-Unity/releases)を使って取り込む都市を地図上で指定するだけで、簡単に3Dモデルとしてインポートできる。しかしゲームやシミュレーションでは、より高いビジュアル表現が求められることも多い。例えば都市シミュレーションなら、道路を走る車や信号、歩行者、街路樹など、さまざまな要素を加えなければリアルにならない。また、スマホを使ったガイドアプリを作るなら、ARやGPSなどの機能を扱う知識も必要となる。

図1 SDKでできるのは、PLATEAUの3D都市モデルのインポートが主

 このような、PLATEAUを使ったアプリで求められるような機能を提供しているのが「PLATEAU SDK-Toolkits for Unity」(https://github.com/Project-PLATEAU/PLATEAU-SDK-Toolkits-for-Unity)だ。下記5つのコンポーネントから構成されるアドオンで、夜景を作ったり、車両を配置して自動で動かしたり、ARを活用したアプリなどが簡単に作れる。以下、それぞれで何ができるのかを紹介する。

表1 PLATEAU SDK-Toolkits for Unityに含まれるコンポーネント
コンポーネント 用途
Rendering Toolkit PLATEAUの3D都市モデルに、天気などの表現を追加する
Sandbox Toolkit 人、車、街路樹などを追加し、より臨場感のある景観を作成する
Maps Toolkit Cesiumの地図データを3D都市モデルを組み合わせて表示する
AR Extensions PLATEAUの3D都市モデルを使ったARアプリ開発を支援する
PLATEAU Utilities Unityに取り込んだPLATEAUの3D都市モデルの各種調整を行う

リアルな環境表現を実現する「Rendering Toolkit」

 Rendering Toolkitは、PLATEAUの3D都市モデルのグラフィックスを向上させるアドオンだ。まず注目すべきは、晴れ・雲り・雨・雪などの天候を表現する環境システム。設定するだけで、リアルな空の色になるので、ぜひ活用したい。雲の具合や雨・雪の量まで表現できる。月明かりも表現できるため、夜景を作るのも簡単だ。

図2 スライダー操作だけで夜・昼の設定、雲や霧の濃さまで設定できる

 次に活用したいのが、テクスチャの追加機能。PLATEAUの3D都市モデルは、地域によって細かさが異なり、LOD1、LOD2、LOD3などの数値で表現される。このうち、LOD1の地域の建物にはテクスチャが貼られていないため、リアルさがない。

 しかしRendering Toolkitを使うと、ランダムなテクスチャを自動で設定できる。例えばLOD2以上の建物であれば、もともとのテクスチャに窓のライトの表現を追加し、ビルの窓から光が漏れている風景を簡単に作成できる。

図3 もともとの建物にはテクスチャがない(上)が、Rendering Toolkitを使えば、下の図のようにテクスチャを追加できる

図4 LOD2なら、窓から漏れる光の表現もできる

 その他の機能として、少し荒いけれども軽量な3Dモデルを作成する機能、画面全体に視覚効果を追加することで、トイカメラやハーフトーン、ナイトビジョンなどの効果を表示する機能もある。ゲームなどでは、こうした機能も活躍することだろう。

木を植えたり、乗り物を自動で動かせたりする「Sandbox Toolkit」

 乗り物やアバター、建築物広告、標識・標示など、全8種のアセットを提供するのが、Sandbox Toolkitだ。これらを配置することで、3D都市モデルを使ったゲーム開発や映像制作、そしてシミュレーションの実行において、より豊かな表現が可能となる。

図4 提供されるアセット

 複数のオブジェクトを同時に配置できるので、街路樹や植生などは筆で描くように自動的に並べられる。あらかじめ配置位置の座標をリストとして用意しておけば、指定した位置に必要なアセットをまとめて配置もできる。

 また、後から表示内容を変更できるだけでなく、動画の表示も可能であるため、デジタルサイネージやスクロールする案内板なども表現できる。

図5 筆で描くようにして街路樹を置ける

図6 広告変更機能

 Sandbox Toolkitで特記すべきは「トラック機能」。点をつなげて作った経路に沿って、乗り物やアバターなどを動かせる。衝突判定機能を持ち、ぶつかる前に自動で止まるため、乗り物を配置して、信号で停止したらそこから動き出すというモーションも作れるのはうれしい。

 また、「カメラインタラクション機能」を使うと、一人称視点や三人称視点で動き回ることができる。この機能を使えば、街歩きアプリを簡単に作れる。

図7 トラック移動機能

図8 カメラインタラクション機能(左が一人称視点、右が三人称視点)

GISデータとの組み合わせを実現する「Maps Toolkit」

 PLATEAUの3D都市モデルと、各種地図サービスやGISデータとを組み合わせることで、実用的な地図サービスや業務アプリケーションの開発を支援するのが、Maps Toolkitだ。下記3つの機能を提供する。

①Cesiumとの連携機能
 オープンソースの3D地理空間可視化プラットフォームであるCesiumの地図データをUnityプロジェクト内に表示し、そこにPLATEAUの3D都市モデルを配置できる。例えば、地形の起伏をUnity上に取り込めば、よりリアルに都市を表示できるようになる。

②IFCモデルの読み込み機能
 建設・建築業で用いられる3DデータフォーマットであるIFCデータを変換して読み込み、地図上に表示できる。この機能により、PLATEAUの3D都市モデルと組み合わせた、建築・建設・不動産などの業界用途でのアプリケーション開発が容易になる。具体例として、建築予定のビルのBIMデータを読み込んでシーン上に配置することで、周辺も含めた建設予定図が簡単に作れる。

③GISデータの読み込み
 シェープファイル形式として提供されるGISデータを読み込んで、シーン上に配置できる。例えば、市区町村の地図や避難区域の情報、河川などの空間的情報や、計測された人流データとPLATEAUの3D都市モデルを組み合わせて可視化できる。

図9 IFCファイルをインポートして自社ビルをシーンに配置する

ARアプリ作りに役立つ「AR Extensions」

 現実世界を元にデジタル情報を重ねて利用できるAR(仮想現実)アプリケーションは、3D都市モデルを有効に活用できるアプリケーションのひとつだ。AR Extensionsは、PLATEAUの3D都市モデルを活用したARアプリケーションを、より簡単に開発するための支援ツールで、次のような機能を提供する。

①現実世界とアプリ間での自動位置合わせ
 ARアプリでは、現実の位置情報とアプリ内の位置情報を正確に合わせる必要がある。AR Extensionsは、カメラ画像とGPS情報をもとに自動で位置合わせを行う機能を提供し、現在の場所に合わせた3D都市モデルを表示できる。

図10 ユーザーが向いている方向に合わせて3D都市モデルを自動で表示する

②ビルに隠れた部分を見えなくする
 ARアプリケーションにおいて、デジタルオブジェクトを表示する場合、手前のビルよりも奥にあれば、そのビルの形で隠さないと前後関係がおかしくなる。AR Extensionsでは、PLATEAUの3D都市モデルの建築物の形状を使って、その後ろのオブジェクトを隠す機能 (ARオクルージョン) を提供し、この問題を解決する。

図11 ビルに隠れた部分を見えなくする

開発時に必要な細かい機能を提供する「PLATEAU Utilities」

 PLATEAU Utilitesは、開発時に必要な細かい機能を提供するツール集だ。次の3つの機能を提供する。

①一括選択機能
 3D都市モデルは建物の数が多く、Unityで目的のオブジェクトを選択しようとすると、探すのが難しいことがある。PLATEAU Utiltiesを使うと、名前などの条件から、3D都市モデルをまとめて選択できる。地味な機能ではあるが、例えばRendering Toolkitなどでテクスチャを適応する建築物をまとめて選択するときなどに、とても便利だ。

図12 一括選択機能

②地形データ(DEM)の平滑化と建物の整列
 3D都市モデルは、地面に起伏があるため、Sandbox Toolkitなどで人や車を配置したときに、その起伏で正しく配置できないことがある。そのようなときは、PLATEAU Utiltiesに含まれる地形データ(DEM)の平滑化の機能で地形データをフラットにすると良い。平滑化すると、今度は建物が地面から浮いてしまうので、そのようなときには建物の整列機能でそろえるとよい。

図13 PLATEAU Utilitiesで実現できる機能

③リッチな照明効果の事前計算
 照明情報を追加すると、実行時に、その計算処理によってアプリが非常に重くなることがある。これを軽減するため、PLATEAU Utiltiesでは開発時に計算処理を済ませて保存する照明効果の事前計算機能がある。これを使えば、モバイルデバイスのような性能が高くない場合でも、リッチな照明効果を利用できる。

充実したサンプルプロジェクトとチュートリアル

 「PLATEAU SDK-Toolkits for Unity」を実際に使うときに参考にしたいのが、サンプルプロジェクトだ。サンプルプロジェクトは、実用的なアプリケーションのレベルまで作り込まれているものが多く、作ろうとしているアプリと用途が似ているなら、少しの改良で実現できる可能性がある。

 それぞれのサンプルプロジェクトは、ソースが公開されているだけでなく、チュートリアルのドキュメントもそろっている。チュートリアルでは、「PLATEAU SDK-Toolkits for Unity」の使い方だけでなく、細かいテクニックも記載されているため、一読の価値がある。

■Urban Scape|都市風景ビューワー
https://github.com/Project-PLATEAU/PLATEAU-Toolkits-Sample-UrbanScape

【チュートリアル】
https://github.com/Project-PLATEAU/PLATEAU-Toolkits-Sample-UrbanScape/blob/main/Tutorial/tutorial.md

 PLATEAUの3D都市モデルを使った、バーチャル都市計画ビューワー。

 Rendering Toolkitを使った天候時間の調整機能が実装されているほか、Sandbox Toolkitを使った街路樹や街灯が並び、人や車が行き交う様子が表現されている。一人称視点に切り替えることもでき、街のなかを歩き回れる。

 また、Cesium for UnityとMaps Toolkitを使って、PLATEAUの地面タイルを遠景として使うことで、よりリアルな景観に仕上げている。

 美しくリアルな都市を表示したり、各種シミュレーションをする、そして、そこに何か別のGISデータを重ねて表示したい場合などのベースとしても、とても参考になるはずだ。

 チュートリアルでは、道路をきれいに平面化して、そこに白線を引く例などのテクニックが記載されているので、ぜひ参考にしてほしい。

図14 Urban Scape 都市風景ビューワー

■City Rescue Multi Play|災害対策マルチプレイ
https://github.com/Project-PLATEAU/PLATEAU-Toolkits-Sample-CityRescueMultiPlay

【チュートリアル】
https://github.com/Project-PLATEAU/PLATEAU-Toolkits-Sample-CityRescueMultiPlay/blob/main/Tutorial/tutorial.md

 複数人でプレイする災害シミュレータをテーマにしたゲームアプリ。3D都市モデルの属性情報を用いて洪水をシミュレーションし、被害状況や避難計画などのプランニングが体験できる。プレーヤーはドローン(ドローンは、Sandbox Toolkitに含まれている)を操作して、被害状況を確認する。

 ベースとなる広域地図はMaps Toolkitを使って表示。Rendering Toolkitを使って、その上にPLATEAUの3D都市モデルを重ねてリアルな都市の被災状況を表現している。チュートリアルには、その位置合わせの方法も解説されている。

 建物をクリックすると、建物の浸水などの属性情報が表示される実装もされており、その作り方もチュートリアルに記載がある。属性情報を扱うアプリを開発しようとしている人には、とても参考になるはずだ。

図15 City Rescue Multi Play

■AR Treasure Map|ARトレジャーマップ
https://github.com/Project-PLATEAU/PLATEAU-Toolkits-Sample-ARTreasureMap

【チュートリアル】
https://github.com/Project-PLATEAU/PLATEAU-Toolkits-Sample-ARTreasureMap/blob/main/Tutorial/tutorial.md

 AR機能を活用した観光ARガイドアプリケーション。AR空間上にメダルが配置されていて、その場所に行くためのガイドが表示される。ガイドに従って歩き、メダルの位置と合致すると、メダルを獲得できる(サンプルでは、銀座周辺の地図が使われている)。

 自己位置認識による位置合わせや、コインが建物よりも後ろにあるときには見えないようにする処理など、AR Extensionsの活用例が満載だ。ARの実装をしようとしている人は、このチュートリアルを見てみることをおすすめする。

■AR City Miniature|AR都市ミニチュア
https://github.com/Project-PLATEAU/PLATEAU-Toolkits-Sample-ARCityMiniature

【チュートリアル】
https://github.com/Project-PLATEAU/PLATEAU-Toolkits-Sample-ARCityMiniature/blob/main/Tutorial/tutorial.md

 ARマーカーをスマホにかざすと、そこにPLATEAUの3D都市モデルが浮かび上がるサンプル。ARマーカーの使い方のサンプルではあるが、性能がさほど高くないモバイル端末でも快適に動作できるように、3D都市モデルを最適化する方法や、頂点カラーやライトマップを調整することでよりキレイに表示する方法の解説がある。

 また、表示される3D都市モデルには、ナビゲーション(ナビメッシュ)を導入して、都市を移動するアバターが表示されており、AR用途だけでなく、都市内を自動で歩き回るオブジェクトを配置したいと思っている人にも参考になる。

まずはサンプルを真似て作ってみるのが近道

 ここまで紹介してきたように、「PLATEAU SDK-Toolkits for Unity」を使えば、大きな労力をかけることなく、本格的な都市デジタルツインアプリが作れる。

 これから始める人は、ぜひ「PLATEAU SDK-Toolkits for Unity」のチュートリアルのドキュメントを読むことから始めてほしい。チュートリアルには、それぞれの解説だけでなく、負荷を減らしたり、見栄えを工夫したりする方法など、さまざまなテクニックも記載されているからだ。

 もし作りたいものと提供されているサンプルが似ているのなら、サンプルを真似たり、一部を流用したりして、アプリを作ってみるのが近道だ。サンプルはMITライセンスで提供されているため、そのまま利用してもライセンス上の問題はない。

 PLATEAUを何に活用しようか思い浮かばない人は、まずはサンプルを実際に動かして試してみるとよい。例えば、「Urban Scape 都市風景ビューワー」などは、ここまで豊かに表示できるのかと思えるサンプルで、少し機能を追加するだけで、自分好みのビューワーが作れる。それ以外にも実用的なものが多いので、まずは少しの改良からはじめてみるとよいだろう。

合わせて読みたい編集者オススメ記事

バックナンバー