見出し画像

PLATEAUの3D都市モデルをUnityで取り扱えるようにする方法(前編)

はじめに

 国土交通省が主導するPLATEAU(プラトー)が、昨年末から国内都市の3Dモデルデータを公開し、個人でも利用できるようになりました。これをうけて、xR界隈、メタバース界隈で3D都市モデルを使って様々な取り組みが進められています。

 本記事ではPLATEAUの3D都市モデルを使う第一歩として、都市モデルのデータを取得し、Unityに取り込み/操作ができるようになるまでの一連の流れを紹介します。PLATEAUは仕様書などの様々なドキュメントが整備されている一方で、「まずは使ってみよう」と思い立って使おうとすると、多くの資料を読み込まないとわからなかったり、PLATEAU固有の癖にハマったりなどの壁に当たりました。本記事は「最小限理解しておくべきこと」、「極力シンプル/簡易な手順」、「特にハマったことへの対策」の3点を取り上げ、記事を読み終わった時に読者の方が実際に3D都市モデルをUnityへ取り込み、作品制作に取り組めようにお手伝いができればと思います。

 本記事は前半と後半に分かれています。前半はPLATEAUの3D都市モデルをUnityに取り込む基本的な流れを、後半はPLATEAUの3D都市モデルを扱う上でいくつかの課題を解決した上でより実践的な取り込み方法を紹介します。

PLATEAU(プラトー)とは

 PLATEAUとは、国土交通省が主導するプロジェクトで、日本各地の都市を3Dモデル化、整備、オープンデータとして公開する取り組みです。

挿絵1

 PLATEAUのサイトでは、3D都市モデルの技術資料や事例/ユースケースなどの情報公開しています。PLATEAU VIEWというWebアプリケーションを提供しており3D都市モデルの標示/操作、ランドマーク情報などの追加情報との重ね合わせを試せる環境が提供されています。これからPLATEAUを学ぶ方は、まずはPLATEAU VIEWを使用して、3D都市モデル、追加データの使い方をイメージしていただいたくことをおすすめします。

本記事で取り扱う3D都市モデルの種類について

 3D都市モデルデータには様々な種類がありますが、本記事では特に使用頻度が多いと考えられる「LOD:建物モデル」「DEM:地形データ」の2種類のデータを使用します。さらにLODにはいくつかのレベルがありますが、屋根形状などの建物付属物およびテクスチャ画像(建物写真)がセットになっているLOD2のデータを使用します。

挿絵3

各種データの詳細については、提供資料「3D都市モデル導入のためのガイドブック」に記載がありますので、詳しくはそちらをご覧ください。

前編でのゴール

 前編である本記事のゴールは、先に触れた通りで「PLATEAUの3D都市モデルをUnityに取り込む基本的な流れ」を理解していただくことで、具体的には以下3つのステップについて、具体的な手順を説明します。

  1. 3D都市モデルをダウンロードする
  2. Unityで3D都市モデルを取り込む
  3. 3D都市モデルの表示位置を調整する

実行環境

OS:Windows 10 Professional
Unity:2019.3.6f1

Step1. 3D都市モデルをダウンロードする

 今回は現在公開されている東京23区のデータを使ってみます。3D都市モデルのダウンロードですが、実はPLATEAUではなくG空間情報センターのサイトで公開されています。使い始めた頃、PLATEAUサイトを長いこと探し回って苦労した経験があります。

挿絵6

 ここで注目すべき点は「3Dモデルの形式」と「メッシュの大きさ」です。
 3Dモデルの形式は、FBX形式、OBJ形式の2種類の形式で提供されています。各形式の仕様に関する説明は割愛しますが、まずは使ってみるという観点ではFBX形式を推奨します。FBX形式はモデル本体、テクスチャ画像、設定などの情報がすべて1ファイルにまとまっているため取り扱い安いです。また公開されているOBJ形式のデータだと各種データが何故か90度傾いている状態になっています。使おうとした時に、多くの場合で傾き調整の手間が発生するという点でもFBX形式を使うほうが楽だと思います。

 メッシュの大きさについてですが、PLATEAUでは3次メッシュ、4次メッシュの2種類で提供されています。こちらもまず使ってみるという観点では4次メッシュを使用することをおすすめします。この「n次メッシュ」についてですが、都市モデルは都市をいくつかの区画に分割して管理しており、区画の大きさの粒度によって2次、3次・・・と種類を分けています。この区画の集合体を「メッシュ」と呼称し、区画の大きさによって分けているので「n次メッシュ」と呼ばれています。具体的には東京23区の場合、2~3次までを下図(構築範囲図)のように区分け/管理しています。この「n次メッシュ」は何かというと、都市モデルは都市をいくつかの区画に分割して管理しており、区画の大きさの粒度によって2次、3次・・・と種類を分けています。この区画の集合体を「メッシュ」と呼称し、区画の大きさによって分けているので「n次メッシュ」と呼ばれています。具体的には東京23区の場合、2~3次までを下図(構築範囲図)のように区分け/管理しています。
※2次メッシュが黒線、3次メッシュが青線のブロックです。

挿絵7

 n次の数字が多いほど、区画の範囲が狭くなますが、その分データサイズも小さくなります。使用したい区画に応じて3次、4次を選択することがよりよい方法であり、必要なければ4次の小さなデータを利用するほうがおすすめです。今回は4次メッシュのデータを使用する前提で手順を説明します。

 まずは先程のG空間情報センターのサイトから、FBX形式の4次メッシュのリンクをクリックして、4次メッシュデータのダウンロードサイトを開きます。ダウンロードサイトでは、2次メッシュの単位(例えば、533925 など)でダウンロードできるようになっているので、構築範囲図の地図画層から対象のメッシュ番号の[詳細]-[ダウンロード]からダウンロードします。下図は2次メッシュ 533946  の3D都市データをダウンロードする様子です。
※サイズが5GBほどありますので、通信環境/空き容量にご注意ください。

挿絵7-1

Step2. Unityで3D都市モデルを取り込む

 ダウンロードしたzipファイルを解凍すると、「brid.zip」「dem.zip」「LOD1.zip」「LOD2.zip」とファイルの種類ごとのzipファイルがでてきます。今回は先に述べた通り「LOD2:建物モデル」「DEM:地形データ」を使うので「LOD2.zip」「dem.zip」を更に解凍します。

挿絵8

 dem.zipを解凍すると1つのfbxファイルがでてきます。demファイルは2次メッシュ区画につき1つのファイルで提供されます。

挿絵9

 LOD2.zipを解凍すると複数のfbxファイルがでてきます。このファイルは533945区画の建物モデルを、4次メッシュ(3次メッシュの番号に枝番を追加したもの)の単位に分割したものです。に分割されたfbxファイルが出てきます。

挿絵10

 今回は上記図で選択している「533945071_bldg_6677.fbx」と、demファイルの「533945_dem_6677.fbx」をUnityで取り込んでみます。
 まずはUnityを起動し、3Dテンプレートの空プロジェクトを作成します。プロジェクト名は任意の名称で問題ありません。

挿絵11

 Unityの画面が開いたら、Projectビューに各fbxをドラッグ&ドロップするだけで3Dモデルの取り込みは完了です。Assets配下に「Models」フォルダを作成し、533945071_bldg_6677.fbx、533945_dem_6677.fbxの2つのファイルをドラッグ&ドロップします。各ファイルの取り込みが完了したら、Projectビューの2ファイルを、Hierarchyビューのシーンに追加しましょう。これで取り込み~シーンへの配置まで完了しましたが、Sceneビューには特に変化が有りません。

挿絵12

Step3. 3D都市モデルの表示位置を調整する

 シーンの配置が完了したにもかかわらずSceneビューには何の変化もない。実はシーンには確かに3D都市モデルは配置されたのですが、シーン原点からかなり離れた位置に配置されています。Sceneビューの表示倍率を小さくし、より広い範囲を表示してみてください。表示倍率をかなり下げると、下図のように右下に3D都市モデルが表示されていると思います。実際にUnityを操作していただけるとわかるとおもいますが、かなり遠い位置に表示されていると思います。

挿絵13

 カメラとライトが初期配置されている原点座標付近に3D都市モデルが表示されるように、DEM、LODのオブジェクトのLocationを変更します。
 3D都市モデルを原点付近に表示させるにはDEM、LODファイルのLocation X、Location Zをそれぞれ-150、-340に変更すると3D都市モデルの中心付近が原点座標に表示されるようになると思います。大変見づらいと思いますが、中心付近に小さくカメラ、証明オブジェクトが表示されているのがおわかりいただけるでしょうか。地形データは2次メッシュの広さなので、3Dモデルデータがかなり大きなサイズであることはがわかると思います。

挿絵14

 更に地表データの右端に小さな点のようなものが見えると思います。これがLOD2に含まれていた建物データです。建物データは4次メッシュなので、地表データの広さと比べると、ほんの一部であることがわかります。

挿絵15

 建物データ部分を拡大してみると、建物の3Dモデルが地表に対して設置されていることがわかります。

挿絵16

 まだテクスチャを適用していない段階なので、建物の形だけの3Dモデルになっています。fbxデータ内にあるテクスチャを適用させたいので、Projectビューの533945071_bldg_6677を選択、さらにInspecterビューのLocationを[Use External Materials(Legacy)]を選択し、Applyボタンをクリックしましょう。下図のようにSceneビュー上の3Dモデルにテクスチャが反映されます。※加えてLightの向きを調整しています。

挿絵17

 以上で、PLATEAUの3D都市モデルをUnityで取り込み、シーン表示するまでが完成です。お疲れさまでした!

おわりに

 いかがだったでしょうか?Unityや3Dモデルファイルの取り扱いになれている方であれば、難しくない(むしろ見慣れた)ものかと思います。むしろ戸惑う点は、ダウンロード先がPLATEAUとは別サイトであることや、前提知識であるデータの種類が多様かつ一般的な都市モデルの仕様(LODなど)の理解ではないでしょうか。本記事が理解を深める一助になれれば幸いです。

 さて、基本的な手順が理解できたところで、様々な都市の3Dモデルを取り込んで・・・といきたいところですが、本格的に取り扱うにあたっては以下の点で扱いづらさを感じました。

 1. モデルを追加するたびに位置合わせの作業が面倒
 2. モデルのデータサイズが大きいため、Unity上での操作がやりづらい 

 1.については、Unity上で位置合わせをしましたが、追加のたびにかなり離れた座標から位置合わせをするのは非効率だと感じられた方も少なくないと思います。私はそう感じた一人です。
 2.については、今回の4次メッシュの建物データ1個程度では気にならないかもしれませんが、複数個の建物データ、3次メッシュデータを用いた場合など、かなり処理に時間がかかります。
 1.、2.の課題を解決するためには、Unityに取り込む前に3Dモデルデータを直接編集することである程度改善することが可能です。次回の後編ではOSSの3DCGエディタであるBlenderを用いた具体的な改善方法をご紹介します。

それでは、次回もお楽しみに!

参考文献



この記事が気に入ったらサポートをしてみませんか?