GONDWANA開発ブログ

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

タイルマップの「タイル領域の広さ」と「表示分解能の高さ」

一度GONDWANAを動かして頂けると、この『タイルマップの「タイル領域の広さ」と「表示分解能の高さ」』についてはユーザーインターフェース状のツールチップと、数値を実際に変更して頂く事で体感的に理解しやすいのですが、インストール前のカタログスペックとして先日公開した「GONDWANAとクローズドΒ現在の想定動作環境」をご覧頂いた方から「分解能って何?」というご質問を頂きました。

そこで今回は『タイルマップの「タイル領域の広さ」と「表示分解能の高さ」』について少し説明を書こうと思います。

GONDWANAを起動すると、タイルマップウィジェットの上の方に「タイル領域の広さ」と「表示分解能の高さ」のグラフィカルユーザーインターフェースが表示されています。

GONDWANAの基本機能の1つ「タイルマップシステム」はGoogle Mapsなどでもお馴染みの地図をタイル状に分割したデータを元に可視化を行う機能です。GONDWANAのタイルマップシステムではカメラの注視点を中心に、一度にどれくらいの広さのタイルを可視化したいのか(=「タイル領域の広さ」)、その広さ全体をどれくらいの分解能で可視化したいのか(=「表示分解能の高さ」)をユーザーがお使いの計算機の性能や得たい可視化結果に合わせて調整できるようになっています。

実際の動作結果の絵を見て頂くととてもわかりやすいと思うので、先ずは以下の可視化結果の比較図をご覧下さい。4種類の設定を縦に並べてあります。

「表示分解能の高さ」

先ず、上から3つを見比べて見て下さい。「タイル領域の広さ」は同じまま、「表示分解能の高さ」だけ変更しています。そうすると、同じ枚数を並べたタイルを表示の分解能だけ変える事になるので、分解能13より分解能12、そして分解能12より分解能11は地形の描画が2倍、そのまた2倍、と粗くなっている様子が分かると思います。

少しだけ数値の説明をすると、GONDWANAの「表示分解能の高さ」の値は、「タイル領域の広さ」で指定された枚数を縦横に並べた全体を、その稜線の方向あたり再帰的に何分割まで細かく表示を行うか、その分割数を表しています。つまり、「表示分解能の高さ」を4にした場合は、タイルマップ全体を稜線方向ごとに2の4乗=6分割、つまり縦横全体では6*6=36のマス(≃四角いポリゴンの数)まで分割して3D(≃ポリゴン)で表示を行います。10にすると、稜線あたり2の10乗=1024分割となり、タイルマップ全体では1048,576個のマスに分割する事になります。

もちろん、この値は高いほど綺麗で、滑らかで、そして正確な可視化を行えるのですが、その分だけ計算機(特にGPUというグラフィックス用の部品)の負荷が大きくなり、GONDWANAの動作が「重く」なります。そこで、ユーザーの用途や環境に合わせて、必要な表示の細かさをリアルタイムに簡単に変更して扱えるように「表示分解能の高さ」というグラフィカルユーザーインターフェースをタイルマップウィジェットに装備しています。

「タイル領域の広さ」

さて、次に「タイル領域の広さ」と「表示分解能の高さ」の関係をわかりやすく示したのが先の図の3つ目と一番下の4つ目の比較になります。3つ目と4つ目では「表示分解能の高さ」は同じですが、「タイル領域の広さ」が4つ目の方が小さく(=狭く)なっています。より狭い領域を同じ分解能で表示しているので、3つ目よりも4つ目の方がポリゴンが細かく若干地形の再現性の正確さも高くなっています。

もちろん、「タイル領域の広さ」も高いほどカメラの注視点よりもずっと遠くの地形まで可視化できますが、その分だけ計算機やタイルデータを取得するためのネットワークやサーバーの負荷も大きくなり、やはり計算機の性能等に対して上げ過ぎると、GONDWANAの動作が「重く」なります。さらに、「タイル領域の広さ」を大きくするほど、「表示分解能の高さ」も比例して上げなければ、表示できる広さは広がるものの、どんどんポリゴンは粗くなってしまいます。

2つの設定の応用例

例えば、性能の低い計算機でも、「タイル領域の広さ」を狭く下げる事で、「表示分解能の高さ」を上げなくても結果的な表示の緻密さ、地形の再現性を高め、正確で美しい可視化を行う事もできます。また、ユーザーの用途によってはそれほど高い地形の再現性は必要なく、多くの地点をおおよその景観程度で眺めたい場合もあるでしょう。その場合は「タイル領域の広さ」を上げ、「表示分解能の高さ」は山並みなどが必要最低限それらしく見える程度まで下げてしまっても良いでしょう。

おまけ: 実表示分解能

GONDWANAのこれらのユーザーインターフェース近くにある「実表示分解能」の表示を確認する事で『現在実行中の「タイル領域の広さ」と「表示分解能の高さ」の設定での、地図上での表示の実寸の分解能はどれくらいなのか』を確認できます。

「タイル領域の広さ」=16、「表示分解能の高さ」=13、またこの時のカメラの緯度では地形の表示の細かさはおよそ7.8mと分かります。GONDWANAのタイルマップシステムはウェブメルカトル図法を元にしていますので、緯度によって元の地図の分解能が異なるため、緯度を変えると同じ「タイル領域の広さ」と「表示分解能の高さ」のままでも実表示分解能は変化します。

ちなみに、GONDWANAのタイルマップシステムでは速度と分解能と広域のニーズを全て満たすためにGPUを最大限活用できるよう少し特殊な可視化方法をとっています。このため、現在の実装では「表示分解能の高さ」を10未満にしてカメラを動かすと粗い地形のサンプリング点が移動することで可視化結果が畝るように見える事があります。これについては解消方法の目処は立っているのですが、他の開発タスクと優先度を調整しながら対応時期を見極める必要もあり、低分解能での表示の畝りについてはいましばらく対応にご猶予を頂ければと思います。