tpc39

TOPIC39|ScaniverseとPLATEAUを使った3Dモデル作成と活用

近年のスマートフォンは高性能になり、モノを撮影するだけで3Dモデルを簡単に作れます。このトピックでは、無償で使える3Dスキャンアプリ「Scaniverse」を使って現実世界のモノを3Dモデル化し、PLATEAUの3D都市モデルと組み合わせる方法を解説します。

スマートフォンを使えば建物や銅像などのオブジェを3Dモデル化できます。このTOPICでは、無料の3DスキャンアプリScaniverseを使った3Dモデルの作成方法と、スキャンしたモデルをCesium ionやPLATEAU  VIEWでPLATEAUの3D都市モデルに重ね合わせて表示する手順を紹介します。

このトピックの内容は「ScaniverseとPLATEAUを使った3Dモデル作成と活用(2025年度PLATEAU Hands-on動画)

」(2025年度PLATEAU Hands-onアーカイブ動画)でも制作方法をハンズオン形式で紹介しています。

【目次】

39.1   このトピックの見どころ

39.2   Scaniverseとは

 39.2.1  3Dスキャンする代表的な方法

 39.2.2  メッシュモードとSplatモード

39.3   3Dスキャンする

 39.3.1  3Dスキャン時の注意

 39.3.2  3Dスキャンする

39.4   3Dモデルのエクスポート

39.5   3D都市モデルに重ねる

 39.5.1  Cesium ion上で重ねる

39.6   PLATEAU VIEW上で重ねる

 39.6.1  Myデータ機能

 39.6.2  CZMLファイルを作る

 39.6.3  PLATEAUの都市モデルにスキャンした駅を重ねる

39.7   まとめ

39.1 _ このトピックの見どころ

PLATEAUの3D都市モデルでは、建築物だけでなく道路や橋梁、信号などの都市設備、そして木々などの植生も定義されています。しかし中心となるのは建築物で、とくに都市設備や植生が提供されている地域は、ごく一部です。

図39-1 都市設備や植生が提供されているのは一部の地域のみ

デジタルツインを実現する場合、3D都市モデルの上に「現実の世界に存在するもの」を載せることで、リアル感が増します。よく目にする目標物を置くことで、目印にもなりやすいです。

このトピックでは、現実世界のモノを3Dスキャンして、それをPLATEAUの3D都市モデルに重ねる方法を解説します。

図39-2 駅の建物に3Dスキャンしたモデルを重ねてリアルにする
図39-3 お城に目印となる「二宮金次郎の像」を置いて、場所をわかりやすくする

現実世界のモノを3Dスキャンするには、いくつかの方法があります。このトピックでは、スマートフォンを使って簡単に3Dスキャンできる「Scaniverse」というアプリを使っていきます。

扱う内容は、大きく前半と後半に分かれます。

前半では、Scaniverseを使ってスマートフォンで3Dスキャンする方法を説明します。そして後半では、Web GISサービスであるCesium ionを使ってPLATEAUの3D都市モデルと重ねる方法、さらには、PLATEAU 3D都市モデルのビューアであるPLATEAU VIEW上にも重ねて表示する方法を説明します。

コラム:みんキャプ

PLATEAUの3D都市モデルと3Dスキャンを重ね合わせた実例については、2022年に行われた「みんキャプ」が参考になります。みんキャプは、みんなでさまざまなものをキャプチャしてPLATEAUの3D都市モデルの上に重ねるイベントで、町で見かけたおもしろいモノが3D地図上に投稿されました。

39.2 _ Scaniverseとは

Scaniverseは、あたかも動画を撮影するように、スマートフォンで対象物の周りを一周回って撮影すると、3Dモデルが作れるアプリです。iPhone用とAndroid用があり、ストアからダウンロードしてインストールすれば、すぐに使えます。全機能を無料で使うことができ、インターネットに接続していない状態(圏外)でも使えます。

39.2.1 _ 3Dスキャンする代表的な方法

一般的に3Dスキャンする代表的な方法は、4つあります。Scaniverseは、このうちNeRF以外の3つの方法に対応しています。

図39-4 3Dスキャンする代表的な方法

■ LiDAR
レーザー光を使ってスキャンする方法です。精度が高く、処理が高速なのが特徴です。業務用・公共測量でよく使われる手法ですが、LiDARを搭載しているiPhone Pro(12以降)やiPad Proでも使えます。ただしスマートフォンなどに搭載されているLiDARの到達距離は、およそ5mと言われており、それを超える範囲では、使えません。

■ フォトグラメトリ
異なる角度から撮影した数百枚~数千枚単位の写真を合成処理して、3Dモデルを生成する手法です。LiDARを搭載しないスマートフォンで3Dスキャンしたいときの代表的な手法です。

■ NeRF(Neural Radiance Fields)
機械学習モデルを用いて、動画(異なる角度から撮影した数十枚から数百枚程度の写真)から3Dモデルを生成する方法です。水面の反射なども表現しやすいなど優れた手法ですが、計算量が多いため、近年は、次に説明する3DGSのほうが人気です。Scaniverseでは対応していません。

■ 3DGS(3D Gaussian Splatting)
フォトグラメトリと同様に、異なる角度から撮影した写真を3Dに合成して作成しますが、空間上に、ぼかしを持つ点(ガウス分布を持つ点)を配置して、それらを重ね描きすることで、視点の変化に応じた外観を再現できるのが特徴です。フォトグラメトリに比べて、質感や光沢、透明感など細かい視覚表現ができます。
3DGSで3Dスキャンしたモデルは、表示する際も、ぼかしを持つ点の集合として表示します。つまり、一般的な3Dモデルのようにポリゴンで構成されるわけではありません。そのため、3DGSで3Dスキャンした結果は、3Dモデルという呼称ではなく、3Dシーンと呼ぶことが多いです。

39.2.2 _ メッシュモードとSplatモード

Scaniverseでは、説明したNeRF以外の3Dスキャン方法に対応しており、「メッシュモード」と「Splatモード」の2種類に切り替えて、3Dスキャンします。

■ メッシュモード
LiDARまたはフォトグラメトリで3Dスキャンして点群を作り、そこから「面(メッシュ)」を生成します。
FBX形式やOBJ形式、glTF形式(GLB形式)など、よく使うさまざまなファイル形式にエクスポートできます。

■ Splatモード
スマートフォンの演算能力を駆使して、さまざまな計算をして、3DGSを作成します。ガウス分布を持つ点として構成されるため、美しいですがデータ量は大きいです。
エクスポートできるのは、SPZ形式(スプラット専用圧縮形式)もしくはPLY形式です。面(メッシュ)ではないので、エクスポートした3Dモデルを3Dソフトウェアにインポートして、衝突判定する(コリジョンを設定して使う)ような目的には不向きです。

39.3 _ 3Dスキャンする

3Dスキャンは難しくありません。Scaniverseアプリを起動して、メッシュモードかSplatモードに切り替えて、対象にカメラを向けて撮影すれば、3Dスキャンできます。

39.3.1 _ 3Dスキャン時の注意

Scaniverseを使った3Dスキャンは手軽ですが、次の点に注意します。

■ 周囲への配慮
3Dスキャン時は、周りの迷惑にならないように注意しましょう。私有地の撮影などは、許可が必要なケースがあります。また人が多いところでは、人物が写らないように配慮しましょう。
また撮影に集中して、転倒したり誰かとぶつかったりしないように注意しましょう。

■ スマートフォンの負荷
Scaniverseはデータの処理量が多く、スマートフォンの負荷が高いです。バッテリーの消費が早いだけでなく、負荷の上昇に伴い、スマートフォンが熱くなりがちです。熱くなると動かなくなったり、処理速度が落ちて、処理に時間がかかるようになったりします。熱がこもらないようにするため、ピッタリしたスマートフォンケースは外すことをお勧めします。
3Dモデルの生成が完了するまでの時間は、スマートフォンの性能(機種)に大きく依存します。早いものなら1~2分で終わりますが、性能の低いスマートフォンでは、より時間がかかります。

【メモ】

Scaniverseでは、3Dスキャンだけしておき、あとでまとめて3Dモデルを作ることもできます。つまり、外出先では3Dモデルを作らずスキャンだけしておき、電源供給ができる場所で、ゆっくり3Dモデルを作るという使い方もできます。

39.3.2 _ 3Dスキャンする

3Dスキャンの方法は、メッシュモードとSplatモードとで異なります。実際のスキャンの様子は、チュートリアル動画を参照してください。

【メモ】

以下の手順は、LiDARを搭載しているiPhone 15 Pro Maxの場合です。LiDAR非搭載機やAndroidスマートフォンでは、手順が一部異なることがあります。またLiDARが搭載されていないiPhoneやAndroidにおけるメッシュモードでは、きれいに仕上がらないことも多いかもしれません。

【メモ】

今回の撮影では、外観しか撮影していませんが、建物の内部も撮影できます。内部を撮影すれば、内部にも入れる3Dモデルを作れます。

■ Splatモードの場合
まずは、Splatモードの場合から説明します。例とした撮影場所は、長野県諏訪郡の井戸尻遺跡です。
Splatモードを起動し、3Dスキャンボタンをクリックすると撮影が始まります。計算結果にもよりますが、撮影開始位置が「正面」になることが多いので、正面にしたい状態から始めるのがよいでしょう。
3Dスキャンボタンをクリックしたら、対象物の周りをゆっくり歩きながら、撮影していきます。撮影完了したところは、実写の上に、スキャンした点(ぼかされた点)が重なるので、どの程度、スキャンしたのかがわかります。
スキャンするときは、意識的に、対象物に近寄ったり、遠ざかったりして撮影していくと、きれいに撮影できます。これは上空から見たときに、撮影者が花びらのような動きをするので、「Flower movement」(花びらのような動き)とも呼ばれます。
撮影は、晴天よりも曇りの日のほうが、やりやすいです。晴天下では影ができ、その影が映り込んでしまうためです。
スキャンが終わったら、そのまま保存して、あとで処理することも、その場で処理することもできます。
機種にもよりますが、数分で3Dモデル化が完了します。スキャンが完了したあとに「強化」という処理をすると、さらにもう一段美しい3Dモデルに仕上げることができます。

図39-5 Splatモードにおける撮影

■ メッシュモードの場合
メッシュモードでは、スキャンをはじめるときに「小さなオブジェクト」「ミディアムオブジェクト」「大きなオブジェクト/エリア」を選べるので、対象によって選びます。今回は、屋外を対象とするので、「大きなオブジェクト/エリア」を選択しました。

図39-6 対象の大きさを選ぶ

するとカメラが起動し、3Dスキャンボタンをクリックすると撮影が始まります。

スキャンの方法は、Splatモードのときとほぼ同じです。対象物の周りを歩きながら、撮影していきます。未スキャンのところは赤い斜線が表示されるので、その部分を重点的に映していきます。

動き方はSplatモードと同様に、Flower movementでスキャンすればよいですが、Splatモードのときと大きく違うことが1つあります。それは、「撮影済みの箇所を何度も重ねて撮影しない」ということです。同じところを2回撮影すると、歩き方の位置の違いなどで、同じ面が2重に出来てしまうことがあるためです。ゆっくりじっくり丁寧に、対象物に対して並行にカメラの角度を変えずに撮影していくのがポイントです。

スキャンが終わったら、3Dモデルを作ります。Splatモードと異なり、強化処理はありません。

図39-7 メッシュモードにおける撮影

39.4 _ 3Dモデルのエクスポート

3Dモデルができたら、それをエクスポートして、他のアプリから使えるようにします。

■ Splatモードでスキャンした3Dモデル(3Dシーン)のエクスポート
まずは、Splatモードでスキャンした3Dモデルをエクスポートする方法を説明します。例として、掛川城前にて撮影した「二宮金次郎」の像を使います。

図39-8 Splatモードで撮影した「二宮金次郎」の像

エクスポートする前に、「3Dスキャンした場所」を確認しておくと、あとでPLATEAUの3D都市モデルと重ねるときの位置合わせがしやすくなります。場所を確認するには、右上のボタンをクリックします。すると撮影場所として、緯度・経度が表示されるので控えておきましょう。

図39-9 撮影場所を確認しておく

3Dモデルをエクスポートするには、右下の[共有]ボタンをクリックし、[モデルのエクスポート]を選択します。

図39-10 モデルをエクスポートする

Splatモードの場合、SPZ形式とPLY形式が選べます。SPZ形式は圧縮された形式。PLY形式は圧縮されておらずファイルサイズが大きいけれども現在主流の形式です。SPZ形式は、対応アプリが少ないです。今回は、PLY形式でエクスポートします。

エクスポートしたら、PCなどにデータをコピーしておきます。

【メモ】

エクスポートしたファイル名は、日本語ではなくアルファベットに変更しておくことをお勧めします。

図39-11 PLY形式でエクスポートする

■ メッシュモードでスキャンした3Dモデルのエクスポート
同様にして、メッシュモードでスキャンした3Dモデルもエクスポートします。ここでは例として、三津駅をスキャンしたものを使います。

図39-12 メッシュモードで撮影した「三津駅」

Splatモードでスキャンしたものと同様に撮影場所を確認したのち、右下の[共有]ボタンをクリックし、[モデルのエクスポート]を選択します。

メッシュモードの場合、さまざまなファイル形式でエクスポートできます。今回は、Webでよく用いられる3Dモデル形式であるGLB形式(glTF形式)でエクスポートします。

図39-13 GLB形式でエクスポートする

39.5 _ 3D都市モデルに重ねる

エクスポートしたら、3D都市モデルに重ねていきましょう。

39.5.1 _ Cesium ion上で重ねる

まずは、Cesium ionというWeb GIS上で、PLATEAUの3D都市モデルと重ねてみましょう。

■ Cesium ionとは
Cesium ionは、さまざまな種類の3Dデータを3D Tilesに変換して、ホスティング・ストリーミングで配信できるクラウドサービスです。有償サービスが中心ですが、無償でも試用できるプランが用意されています。

図39-14 Cesium ion

Cesium ionには、PLATEAUの3D都市モデルが、あらかじめインポートされています。そして3DGSにも対応しているため、Splatモードで作成した3Dモデルを重ねられます。

【メモ】

Cesium ionにも、複数枚の写真から3DGSを作成できる機能がテクニカルプレビューとして実装されています。

本トピックでは、2種類のサンプルを示します。

ひとつはSplatモードで作成した3DモデルにPLY形式でエクスポートしたオブジェクトを重ねる例、もうひとつは、メッシュモードで作成した3DモデルにglTF形式でエクスポートしたオブジェクトを重ねる例です。

図39-15 作成した3DモデルをCesium ionに重ねる2つの例

Cesium ionを使うには、アカウントが必要です。Cesium ionのページから、アカウントを作成したうえで、進んでください。

■ My Assetsにアップロードする
Cesium ionでは、さまざまな3DオブジェクトをMy Assetsにアップロードしておき、それを配置する方法をとります。先ほどエクスポートした3DモデルをMy Assetsにアップロードしておきましょう。

図39-16 エクスポートした3DモデルをMy Assetsにアップロードする(Splat形式)
図39-17 エクスポートした3DモデルをMy Assetsにアップロードする(メッシュモード形式)

■ 3Dモデルの場所を設定する
アップロードが完了したら、その3Dモデルの場所を設定します。

【手順】3Dモデルの場所を設定する

[1]場所の設定をはじめる

アップロードが完了すると、一覧に表示されます。クリックして選択すると、その右上に3Dモデルのプレビューが表示されます。場所を設定するため、プレビューの上にある[Adjust Tileset Location]ボタンをクリックします。

図39-18 [Adjust Tileset Location]ボタンをクリックする

[2]起伏を設定する

すると地球が表示されます。この画面では、まず、地面の起伏(Terrain)を選択します。ここでは、[Cesium World Terrain]を選択します。

図39-19 位置を設定する

[3]位置を設定する

先ほど控えておいた、緯度・経度を設定します。設定後、[Zoom to tileset]をクリックすると、配置した位置に視点を移動できます。

図39-20 3Dモデルの位置を設定する

[4]高さを仮決めする

想定した経緯度に置かれましたが、高さが設定されていません。そこで目視で、高さを仮に、適度に設定して、いったん3Dモデルが目視できる程度の位置で仮決めしておきます。

図39-21 位置を仮決めした

■ PLATEAUの3D都市モデルを表示する
3Dモデルを仮置きしたら、ここにPLATEAUの3D都市モデルを載せていきます。そのあと、PLATEAUの3Dモデルの建物との位置関係を見ながら、最終的な位置に微調整します。

【手順】PLATEAUの3D都市モデルを表示し、重ねる3Dモデルの位置を微調整する

[1]新しいストーリーを作る

左上から[Stories]タブをクリックし、[New story]をクリックします。

図39-22 新しいストーリーを作る

[2]3Dモデルを追加する

[Assets]にある[Add asset]をクリックして、アセットを追加します。ここでは、先ほど調整した、二宮金次郎を追加します。

図39-23 二宮金次郎をアセットとして追加する

[3]対象物にズームする

[Assets]に追加されたら、虫眼鏡のズームボタンをクリックします。すると、そのオブジェクトにズームされ、先ほど仮置きした場所が表示されます。

図39-24 ズームする

[4]PLATEAUの3D都市モデルを追加する

すでに建物が表示されていますが、これはPLATEAUの3D都市モデルではなく、デフォルトで表示されている「Cesium OSM Building」というモデルです。そこで、PLATEAUの3D都市モデルに変更します。

 [Cesium OSM Building]のチェックを外し、[Add assets]を選択します。ここで「Japan」を検索すると「Japan 3D Building Data」が見つかります。これが、Cesium ionにインポートされているPLATEAUの3D都市モデルです。[Add]ボタンをクリックして、追加します。すると、PLATEAUの3D都市モデルが表示されます。

図39-25 PLATEAUの3D都市モデル(Japan 3D Building Data)を追加する
図39-26 PLATEAUの3D都市モデルが表示された

[5]3Dモデルの位置を合わせる

追加した二宮金次郎の[・・・]ボタンをクリックし、[Adjust tileset location]を選択します。

図39-27 [Adjust tileset location]を選択する

すると、矢印が表示された位置を調整できるので、目視で向きや位置を調整します。

【メモ】

Scaniverseで作成した3Dモデルは基本的に、原寸スケールになっているため、拡大率(Scale)を大きく変更する必要はありません。

図39-28 場所を調整する

[6]同様にして三津駅も配置する

同様の方法で、三津駅も配置します。

図39-29 三津駅を配置したところ
コラム:ストーリーを共有する

ストーリーには、カメラビューとコメントを「シーン」として保存する機能があります。保存したシーンは一覧画面で切り替えて表示できます。

シーンは名前を付けてシェアして他の人と共有することもできます。詳細については、チュートリアル動画を参照してください。

図39-30 ストーリーを共有する

39.6 _ PLATEAU VIEW上で重ねる

最後に、PLATEAUのビューアである「PLATEAU VIEW」でも、同じようにして、3Dスキャンしたモデルを重ねる方法を解説します。

39.6.1 _ Myデータ機能

PLATEAU VIEW 4.0には、自身が持つデータをPLATEAU VIEWに重ねることができる「Myデータ機能」があります(2.7.3 任意の作図結果を重ねて表示する)。例えば、GeoJSONなどで描いたオブジェクトは、この機能を使って、比較的簡単に重ねられます。

3Dモデルも同じように配置できるのですが、位置情報として、高さ(標高+ジオイド高)を用意したり、方角をクォータニオン(3次元空間の回転を表現するための4つの成分で構成されたベクトル)で用意したりする必要があります。

そのためには、「GLB形式ファイル」と「CZMLファイル」が必要なのですが、「ローカルのデータから追加」では、複数ファイルの追加に対応しないため、別途、Webサーバーを用意する必要があるなど、少し複雑です。

【メモ】

2025年9月現在、Myデータは3DGSには対応していません。

図39-31 Myデータで3Dモデルを重ねる

39.6.2 _ CZMLファイルを作る

いま説明したように、Myデータ機能で3Dオブジェクトを重ねるには、GLB形式ファイル以外に、経緯度、高さ、方角を指定する必要があります。今回はその方法の一つであるCZMLファイルを用意する手順で進めます。そのためには、標高とジオイド高の関係、クォータニオンの理解が不可欠です。

図39-32 標高、ジオイド高さ、クォータニオン

これは複雑なので、経緯度と高さ、GLB形式ファイル名などを入力すると、必要なCZMLファイルを作れる簡単なツールを用意しました。下記からアクセスできます。

https://czml.minc.app/

図39-33 CZMLファイルを作れる簡易ツール

39.6.3 _ PLATEAUの都市モデルにスキャンした駅を重ねる

先ほど、Cesium ionで重ねた三津駅を、PLATEAU VIEWでも同様に重ねるには、次のようにします。

【手順】PLATEAU VIEWのMy Data機能で重ねる

[1] 建物の位置、高さ、向きを確認する

先ほど、Cesium ionで重ねた三津駅の情報を確認し、位置(経緯度)、高さ、向きを確認します。

図39-34 位置、高さ、向きを確認する

[2]CZMLファイルを作る

CZMLファイルを作れる簡易ツールにアクセスし、緯度・経度、高さ、モデル名やGLB形式ファイル名を入力します。すると、CZMLが表示されるので、それをコピペして、拡張子.czml形式のファイル(例えば「mitsu.czml」)を作ります。

図39-35 簡易ツールに入力する

[3]Webサーバーを起動する

GLB形式ファイルとCZML形式ファイルを同じフォルダに置きます。そして、そのフォルダを公開するWebサーバーを起動します。例えば、Node.jsがインストールされている環境であれば、このフォルダをカレントディレクトリにして、次のように入力します。

【メモ】

「-c-1」はキャッシュを無効にする設定です。この設定をしないと、PLATEAU VIEWでMy Data上で表示・非表示を切り替えたときに、キャッシュのデータが使われてしまい、表示が更新されないことがあります。また「--cors」は、Access-Control-Allow-Originヘッダを「*」(すべて)にする設定です。この設定をしないと、CORSの制限により、ブラウザがセキュリティエラーをおこし、アクセスできません。

npx http-server -c-1 --cors

するとブラウザから、http://127.0.0.1:8080/でアクセスできるようになります。

[4]My Dataに追加する

PLATEAU VIEWの[Myデータ]を開き、[Webから追加]タブで、手順[3]のURLを入力して追加します。

図39-36 Myデータとして追加する

すると、PLATEAU VIEW上に表示されます。角度がおかしい場合は、CZMLファイルを作れる簡易ツールで調整して、作り直してください。

【メモ】

Cesium ionとPLATEAU VIEWとでは地表の高さが若干異なります。そのため、正確に合わせるには、高さの調整が必要です。

図39-37 PLATEAU VIEWに表示された

39.7 _ まとめ

PLATEAUの3D都市モデルに現実世界のモノを重ねることは、表現力が豊かになるだけでなく、目印にもなります。Scaniverseでスキャンした3Dモデルは、ほぼ原寸なので、経緯度と高さを指定すれば、PLATEAUの3Dモデルと、ピッタリ重なります。

Cesium ionを使えば簡単に重ねられますが、PLATEAU VIEWでも、CZMLファイルを作ることで重ねられます。

スマートフォンがあれば実現できるので、ぜひ、試してみてください。

【文】

大澤文孝

【監修】

久田智之