GONDWANA開発ブログ

五大開発株式会社のGONDWANA開発に関する公式ブログです。

preview-2 (CBT) で追加される大きな2つの機能

2017-11-?? にリリース予定の preview-2 (CBT) で G4 へ追加される大きな2つの機能を紹介します。

  1. G4 API Subsystem / HTTP JSON
  2. GeoObject API

これら2つは直接的にはエンドユーザーではなく、 G4 の開発者とエンドユーザーの間のプラグインや連携アプリケーションの開発者向けの機能です。これらの機能を使って開発される新たな専門分野に特化した連携アプリケーションや、弊社五大開発の既存のアプリケーションとの連携機能はエンドユーザーにとても有用なGONDWANAのユースケースを提供します。

1. G4 API Subsystem / HTTP JSON-RPC-2.0

起動中の G4 に対して外部の任意のアプリケーション等から HTTP で接続し JSON-RPC-2.0 に準拠したプロトコルを用いて API 制御を行う機能です。

f:id:godai-gondwana:20171102195617p:plain

この機能を使うと、PythonPHP などのコーディングと実行が容易なスクリプト言語、あるいはもちろん .net, Go, Rust, Haskell, C++, シェルスクリプトcurl など、目的に応じた開発言語やその資源を使い、 G4 をプログラマブルに利用できます。

より具体的な例を挙げると、

  • 注視点の移動や回転、タイルやワイヤーフレームの切り替えなどをプログラムで制御して自動的に操作されるデモンストレーションを作成する
  • 大型ディスプレイにG4を起動しておき、災害や警報の情報を元に地域の指定避難場所の情報や予想水位を表示するアラートシステムを作成する
  • 独自形式や G4 が未対応のファイル形式を読み込んで G4 で独自に必要な情報を3D可視化するアプリケーションを作成する
  • 3Dシステムに不慣れなオペレーターでも扱いやすい大型のボタン式のユーザーインターフェースや、音声認識で操作が可能なUI補助システムを作成する
  • 津波、河川氾濫、土砂災害、火山災害などの高度なシミュレーション結果を G4 をリアルタイムアニメーション可視化ソフトウェアとして利用する連携機能を既存のアプリケーションに追加する

などなど。もちろん、挙げたようなすべての機能を実現可能な API は preview-2 のリリース段階では開発リソースの都合、用意しきれませんが、要望など確認しながら徐々に多くの機能を HTTP JSON-RPC-2.0 API で使用可能なよう拡充を継続的に行います。

f:id:godai-gondwana:20171102195823p:plain

G3 は UI が複雑過ぎた事が大きな反省の1つとなった事もあり、 G4 では UI の設計を一新し、できるだけユーザーが操作について迷子にならずに使用できるよう、またメインビューの表示を妨げないように気を使っています。しかし、やはり多くの機能を取り入れようとすると、やがて複雑な UI も必要となりますし、一部のユーザーには非常に強く望まれる専門的な機能でも他のユーザーには混乱の種にしかならないような事は往々にして容易に発生します。

そこで、 G4 では専門的な機能、複雑な操作、高度な知識を要する設定などは API でのみ対応し、必要に応じて操作を補助する連携アプリケーションや、専門分野に特化した応用を強く要望されるユーザーには専用カスタムアプリケーションをG4連携アプリケーションとして開発するカスタムG4セットの開発と販売などを行い、 G4 本体はできるだけ汎用的で簡単に扱える便利なビューアーとして使用できるよう維持したいと考えています。こうした経緯もあり、今回の API サブシステムの実装は比較的優先度を高く設定しました。

preview-2 ではまだまだ API サブシステムをどのように使用するか確認できる程度の実装レベルに留まりますが、可能な範囲でユーザーから頂ける API の実装要望を汲みつつ実装を進めたいと考えています。ご要望については、開発に対して具体的な動作の詳細や仕様を明確にできる場合は開発者が直接対応可能な Issuesへ 、あるいは状況についてざっくりとした打ち合わせから入りたい場合や戦略的にインターネットの公開の場では望ましくないビジネス上のご相談を含む場合などは弊社営業までご連絡頂ければ幸いです。

2. GeoObject API

GeoObject(≃地物)を扱うための API が実装されます。

この API を用いると、

  • 任意の経緯度で囲われた矩形や地平面に水平な2Dポリゴンの領域を示す半透明の表示を行う
  • 任意の経緯度を基点としてXYZの距離(m)に展開する頂点から構成される3Dポリゴンの建築物やアイコンの表示を行う
  • 表示中の GeoObject の頂点をリアルタイムに変更したり、色付けを変更してアニメーション表示を行う
  • 市区町村などのポリゴン領域を一定の密度で分割した頂点からなる2Dポリゴンを生成し、アメダスなどの外部データの変化に応じた色付け表示を行う
  • 平時や台風発生時などの気圧データを3D表示する
  • 河川氾濫や津波のシミュレーションデータを GONDWANA の時刻変化のアニメーションに対応する形で表示する

などのような事が G4 の API サブシステムの拡充とともに可能となります。

f:id:godai-gondwana:20171102195844p:plain

もっとも単純にはデータベースや連携アプリケーションのデータに基いて、前述の例示で最初に挙げたような地平面に水平な2Dポリゴンの領域を示す半透明の表示を行うケースが最も汎用的に多く使われる用途になると思います。

また、 今回の preview-2 の1つ次のリリース予定となる preview-3 で GeoJSON タイプのベクタータイルへの対応を導入するためにもこの実装が用いられます。合わせてベクタータイルへの対応についてもご期待下さい。

G3 の地物表示機能は、実行前に .obj や .ply のような一般的な 3D モデルデータのファイルフォーマットで保存されたデータを用意しておく必要があり、実行中に任意の3Dオブジェクトを動的に作成して表示するような事はできませんでした。また、地図タイルに特化した実装を優先した事もあり、 GeoJSON, shape, KML のような土木分野で一般化した地物外形のデジタルデータへの対応や表示負荷が高い状態でした。 G4 ではこの反省を活かし、地図タイルによる地形描画機能をストイックな実装にせず、一般的な3DCGの表現と同様に扱いつつ、 3D 形状データの取り扱いもファイル単位よりも低レベルな頂点や頂点属性単位での実行時の作成や変更を API レベルで提供する事にしました。これにより、ユーザーが任意の3D形状を思い通りに表示、あるいは表示できる連携アプリケーションを用いる事で容易に可能となりました。

なお、 G4 でもある程度の高レベルな機能実装と API 提供には継続して開発します。 preview-2 では頂点を経緯度でもメートル単位の距離でも与えられるような工夫は実装されますが、単なる矩形や円形をぽんと出したいだけの場合にそれらの頂点の位置、色、法線、UV…そうした低レベルなデータを生成して与えなければなりません。 preview-2 のリリース以降となりますが、例えば中心地点と経緯度方向の距離だけを与えれば矩形領域の塗りつぶしを作成してくれる高レベル API や .obj, ply などのフォーマットのデータと表示位置の経緯度を与えればポリゴンを生成してくれるような高レベルのAPIも実装したいと考えています。