GONDWANA開発ブログ

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

G4-preview-2 ( version: 4.0.0.4 ) CBT をリリースしました。

前回の記事で予告した2つの機能追加を行った G4-preview-2 ( version: 4.0.0.4 ) を CBT リリースしました。 CBT にご参加頂いているみなさまからのホットなバグ報告やクールな要望など継続的にお待ちしております😃

特に GeoObject APIs については予想以上に開発コストが掛かり、開発担当レベルでの調整が完了して早々のリリースとなります。たくさん API を叩いて頂いて不審な挙動など発見、報告頂ければ幸いです。

何れもプラグイン・連携アプリ開発者向けの機能追加となります。 HTTP で GET または POST を叩ければ任意の言語、環境でプラグイン・連携アプリを開発できます。多様な開発者のみなさまにお試し頂ければ幸いです。

機能追加

  1. HTTP API Subsystem / JSON-RPC-2.0
  2. GeoObject APIs

1. HTTP API Subsystem / JSON-RPC-2.0

2. GeoObject APIs

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も実装したいと考えています。

公式ブログほかのお引っ越しのお知らせ

GONDWANA関連の次のウェブサイト群を"お引っ越し"しました!

  1. 開発ブログ -> http://gondwana.hatenablog.jp/ (このブログです)
  2. ポータルサイト -> https://godai-kaihatsu.github.io/gondwana/
  3. マニュアル&Tips(Wiki) -> https://github.com/godai-kaihatsu/gondwana/wiki
  4. バグ報告と要望の受付(BTS) -> https://github.com/godai-kaihatsu/gondwana/issues
  5. ダウンロード -> https://github.com/godai-kaihatsu/gondwana/releases

(※開発ブログ以外のウェブサイト、ダウンロード等は、G4のリリース以降で使用します。しばらく空っぽとなりますがG4にご期待の上お待ち頂ければ幸いです。)

開発ブログは"はてなブログ"へ、その他のサービス群は"GitHub"の諸機能へ移行しました。

これまでGONDWANA関連のウェブサービス群は諸事情によりほとんどのサービスをセルフホストしていました。今年度はGONDWANAプロジェクトの開発体制の変更による諸サービス群をセルフホストするコストの相対的な増大もあり、ついでG3からG4への完全なリメイクに併せて、展開する関連ウェブサービス群も開発体制に併せて見直す事にしました。

G4のユーザーインターフェース

G4に実装中のユーザーインターフェース「メインメニュー」:

サブメニュー(機能や設定ごとに提供される操作画面)の1つ「地形/ワイヤーフレームの設定」:

G4には当初、本体にはユーザーインターフェース(以降、"UI")をほとんど付けず、必要に応じてユーザー層ごとに操作用プラグインを提供してUIを最適化しようと考えていました。これはG3のUIがGONDWANAを楽しんで頂きたい多くのユーザーには複雑過ぎた反省と、プロフェッショナルユーザー、ライトユーザーそれぞれに最適なUIを提供したい考えによるものでした。

しかし、G4の設計と実装のすべてを担当する伊藤(私)がある日のプライベートタイムに久しぶりにゲームを遊んでいると、G4にとっても良いUIを閃く事になりました。この時遊んでいたゲームは「ソフィーのアトリエ」。コンピューターロールプレイングゲームにはしばしばゲーム中にボタンを押すと「メインメニュー」(キャンプメニュー)が開いてアイテムを使用したり、設定を変更したり、ゲームのプレイ状態を保存したり、ゲーム本編は一時的に中断してメニューによる操作を行う機能が実装されています。

ユーザーにとって、目的の行動をその場で取れる選択肢を明示的にメニューとして与え、必要に応じて絞り込んだり、より詳細を展開したり。また、ゲーム中にお店でお買い物をしたり、会話中に応答や行動を選んだり、そうした多くの操作がコンピューターロールプレイングゲームではその時々の必要に応じたメニュー型のUIで提供されます。

このようなUIはユーザーにとっては「とりあえず、使ってみれば自然に分かる、画面を見れば必要な操作をできる、何ができるのか自然と身につく」、そのような優れたUIである事を今更ながら再発見した次第です。

G3では設定できる事や表示されるパラメーターがマルチウィンドウ型でまさに同時に展開され、多くのユーザーには初見から「複雑そう」「使うのが大変そう」「面倒くさそう」という印象を与え、何か面白い使い方ができそうと感じて頂いても何をどう操作、設定したら良いのか複雑過ぎてわからずに諦めてしまわれた方も多かったとオープンβテストで頂いたご意見等からも把握しています。

G4のUIはメインメニューを中心に目的に併せて選択式に機能や設定へのアクセスを直感的に絞り込め、目的の機能や設定へのアクセス中は必要なパラメーターへ混乱せずに注意を集中し、設定の結果をプレビューで確認しながら1つ1つ目的の表現状態へ向けて操作できるよう工夫しています。

一般公開にはもう暫くお時間を頂く見込みですが、引き続き "G4" へご期待頂ければ幸いです。

G4

こんにちは、GONDWANA開発を担当するメインプログラマーの伊藤です。

開発チームの再編成やG3(だいぶ間がありましたが0.900系以下の前回記事までのGONDWANAの開発コードネーム的なものです)のβテスト結果から得られたGONDWANAへのニーズや実行環境の要求の見直しなど、おおよそ半年間ほどGONDWANAに関して潜航した状態となっていました。

従来のG3は計算機の資源、CPUやGPUの負荷や最新の命令セット、メモリー容量を使い尽くし、高速に広域のタイルマップをリアルタイムに"表示"する設計を実装したものでしたが、βテストの結果、潜在的なGONDWANAのユーザーのニーズと当初弊社が想定したニーズとG3の設計・実装の間に大きな隔たりが明らかとなりました。そこで、G3までのβテストで得られた知見を活かす新たな設計としてG4を開発していました。

今夏にはオープンβテスト用のG4も一般に公開したいと考えて開発を進めていましたが、一般公開にはまだもう少しお時間を頂きそうです。

スクリーンショットを一見すると、G4も、G3と同様に広域高精細の表示に特化した高負荷のアプリケーションに見えるかもしれません。G3のβテストからは潜在的なニーズを持って頂けている方の実行環境の広さもあり実行時のCPU、GPUの負荷低減に関する要求が大変多く、G3では設計思想の変更からの対応が必要な状況でした。そこで、G4は実行中の負荷が表現内容に対してたいへん低くなるよう開発しています。同程度の見栄えの精細さ、広域さの表示中でもG3に較べて最大で9割ほど実行時のCPU、GPUの負荷が低くなっています。

G3は第一に"タイルマップ"の"高速"で"高精細"で"リアルタイム"の"表示"を目的に設計した事から、土木ニーズとしての地形編集や地物やベクターデータへの対応が後付けとなり、長い開発期間中に聞こえるニーズの多くにも対応しようとした結果、開発難度も高くなり、開発ペースもやや落ちてしまっていました。

G4では第一に"三次元空間の表現"を目的とし、多様な土木ニーズに対して"表示"だけではない"多様な表現"が可能なように、また、その上で"必要な精細さ"、"可能な限りの実行時の軽量さと高速な動作"にも対応できるようにとβテストの結果も踏まえて設計思想から改めました。結果、リアルタイムでの切土・盛土のような地形編集機能、必要に応じたヘテロジニアスなタイルのLODレベルの組み合わせ、実行時に10枚程度では負荷のあがらない地図画像レイヤーの合成、より直感的に操作しやすい視点と注視点の操作、高度な地物・ベクターデータの表現機能、簡易的な物理シミュレーション機能、WGS84"楕円体"の地球全域から高LODレベルの注視点まで広いダイナミックレンジの"三次元の地球"として表現、他のアプリケーションからGONDWANAを連携制御可能なオープンAPIシステム、など、動作・機能ともに大きく進化しています。

また、G3ではおおよそ不評の多かったユーザーインターフェースについても根本的な設計思想から見直し、G4では操作に迷わないユーザーインターフェースを提供できる見込みです。

引き続きご期待下さい。

0.902.0-0

リリースノート version 0.902.0-0

リリースノート・概要

※必要に応じて「リリースノート・詳細」を御覧下さい。

スクリーンショット

0.902.0

ダウンロード

リリースノート・詳細

新機能

  1. スクリーンショット撮影機能に、撮影時のタイルやカメラの情報、再現用のステートスペルなどを含むメタデータが .md 形式で同時に出力されるようになります。
  2. conf: view::gl::widget::tilemap.auto_zoom.level_bias が追加され、自動ズームレベル機能により自動設定されるズームレベルに任意のバイアス値を加えられるようになります。このバイアスの初期値は 0 です。
  3. 三人称視点モードの注視点の高さを任意のユーザーが定義した高さに固定できるようになります。この機能は機能モード ADVANCED 時のカメラウィンドウで使用可能です。

変更

  1. 広告ウィンドウの広告表示部分もウィンドウを移動するためにドラッグ可能となります。

不具合の修正

  1. 起動時にインターネットに接続されていない場合に FATAL エラーが発生する問題が修正され、オフライン環境でも問題無く動作する様になります。