はじめに 🤗
本エントリーは FOSS4G Advent Calendar 2018 22日目のエントリーです。
現在は、株式会社オプティムで、LANDLOG のプロジェクトに携っています。会社としては、AI、IoT のプラットフォームの開発に力を入れて取り組んでいます。
最近、地形のニーズが多いこともあって、色々と調査もしていましたので、今回は Cesium について共有したいと思います。
Cesium と 3D Tiles について(2)について書きました。こちらもよろしければ参考にしてください。
Cesium について
ご存知の方も多いかと思いますが、Cesium は、3D のビューワーエンジンです。
GIS のアプリを開発する上で必要な機能は備えており、さらに WMS や WMTS などの OGC の標準フォーマットや Esri のマップサービスなど多くのデータフォーマットに対応しています。
3D ビューワーの場合は、3D データの扱いが課題になってきます。たとえば、ドローンで撮影した点群データなどのデータをビューワーで表示したい、また、データが大きいため、ブラウザで表示する場合はパフォーマンスなども影響していきます。それらの課題を解決する手法として、3D データの扱いとして、Cesium では 3D Tiles という仕様を採用しています。今回は、Cesium で 3D データを扱う場合の方法や 3D Tiles の仕様について説明します。
3D Tiles について
3D Tiles は、写真測量、3D Buildings、BIM/CAD、Instanced Features、Point Clouds などの 3D 地理空間コンテンツをストリーミングおよびレンダリングするために設計されており、空間データの構造とタイルフォーマットを定義しています。OGC にも採用されています。
3D Tiles の詳細な仕様はこちらから確認することができます。
3D の地理空間データとして、地形データ、建物のデータ、CAD (または BIM) モデル、写真測量のモデル、ポイントクラウドなどのデータを 3D Tiles に変換します。変換された 3D Tiles は、軽量でかつ最適化されているため、サイズが大きい 3D データでもストレスなく Web で配信することが可能となります。
例えば、4.48 GB の LAS ファイルは、0.64 GB まで圧縮されると公式のサイトでも紹介されていました。
3D Tiles で使用されている技術について
面白いのは、この 3D Tiles で使用されている技術です。
3D モデルやシーンを表現するフォーマットとして、glTF (GL Transmission Format)、また、Google が開発した Draco というオープンソースの 3D データ圧縮ライブラリが使用されています。
Cesium のブログでも紹介されていますが、Cesium では、Draco を glTF に拡張して、Draco 圧縮モデルと 3D タイルセットを Cesium で扱うことができます。
以下は Cesium のブログでも紹介されていましたが、Draco 圧縮を使用したことでレンダリングが早くなっていることが分かるかと思います。
glTF 2.0 (gzipped) | Draco 圧縮を使用した glTF 2.0 (gzipped) |
---|---|
タイルサイズ:738 MB | タイルサイズ:149 MB |
ロード時間:18.921秒 | ロード時間:10.548秒 |
※ 画像はデモ用のため 2 倍速になっています。 |
CESIUM ion について
こちらの 3D Tiles のサービスを使用する場合は、CESIUM ion という Cesium が提供している 3D プラットフォームに登録して使用することができます。また、オンプレスでこれらのサービスも使用することができますが、Cesium とのビジネス上の契約が必要になるそうです。
CESIUM ion の詳細については、Cesium のブログでも紹介されていますのでご参照下さい。
CESIUM ion では、以下のように LAS データなどの 3D コンテンツを登録することできます。データストレージに応じて料金が変ってきます。5GB まではフリーとなっています。
登録した 3D コンテンツは、3D Tiles として以下のコードで呼ぶことができます。
var tileset = viewer.scene.primitives.add(
new Cesium.Cesium3DTileset({
url: Cesium.IonResource.fromAssetId(12572)
})
);
CESIUM ion で登録したサンプルの LAS データを Cesium で表示してみました。こちらから確認することができます。
最後に
Cesium では、3D 地理空間コンテンツの仕様として、3D Tiles が採用されていますが、Esri では、i3s という仕様があります。こちらも 3D Tiles と同様に 3D コンテンツに特化しており、OGC にも採用されています。私が知る限り、両者を明確に比べたものは今のところないように思えます。
今後 3D コンテンツの扱いがますます重要になってくると思いますので、このあたりの技術に関してはキャッチアップしていく必要があると感じています。
Cesium についてもまだまだ知らないことが多いので、また何かの機会にでも取り上げていきたいと思います。