【実施例1】
【0016】
本発明につき、パーソナルコンピュータを利用して、そのディスプレイ上に3次元地図を表示する3次元地図表示システムとして構成した実施例を説明する。本発明は、経路探索・経路案内装置など、他の装置の3次元地図表示機能として組み込む態様で適用することも可能である。
【0017】
A.システム構成:
図1は、3次元地図表示システム100の構成を示す説明図である。3次元地図表示システムは、パーソナルコンピュータを用いて構成されており、ディスプレイ上に、ユーザからの指示に従って3次元地図を表示するシステムである。
本実施例では、パーソナルコンピュータを利用したスタンドアロンのシステムを例示するが、地図データベース130等をサーバに格納し、サーバとパーソナルコンピュータとをネットワークで接続したシステムとして構成してもよい。また地図を表示する端末としては、パーソナルコンピュータだけでなく、タブレット端末、携帯電話、スマートフォンなど種々の端末を利用可能である。
【0018】
3次元地図表示システムは、図示する種々の機能ブロックを有している。これらの機能ブロックは、それぞれの機能を実現するソフトウェアをインストールすることによって構成することができるが、その一部または全部をハードウェア的に構成してもよい。
地図データベース130は、3次元地図の表示するために地物の3次元形状等を表した3次元モデル等を含む地図データを格納している。本実施例では、図中に示すように地図データは、複数のレベルLVa〜LVcに分けて格納されている。いずれも所定のサイズのメッシュに区切って管理されている。レベルLVcは、最も詳細度が高いデータ、即ち、細い道路や、小さな地物までデータを格納している。レベルLVcは、必然的にデータ容量が大きくなるため、比較的小さなメッシュに区切って管理されている。レベルLVbは、レベルLVcよりも、若干、詳細度が低くなっている。レベルLVbでは、細かな道路等のデータは省略され、標準的な道路、建物等のデータが格納されている。レベルLVbのメッシュサイズは、レベルLVcよりも大きく設定されている。レベルLVaは、さらに詳細度を低くしたデータである。高速道路などのような主要な道路、およびランドマークとなるような主要な建物等に絞ってデータが格納されている。レベルLVaのメッシュサイズは、レベルLVbよりもさらに大きなサイズに設定されている。
地図データは、このようにレベルに分けて格納されているが、地物のデータが各レベルのいずれかに選択的に格納されている訳ではない。例えば、ランドマークのような主要な建物は、レベルLVa〜LVcの全レベルに共通して格納されることになる。つまり、各レベルのデータは、いずれを用いても、そのレベルに応じた詳細度で地図を表示可能なものとなっている。
本実施例では、地図データは、メッシュをさらに細分したセルで管理されている。このセルの構造については後述する。
【0019】
コマンド入力部110は、3次元地図表示に関するユーザからの指示を受け付ける。例えば、地図を表示するための視点位置、視線方向、表示範囲(スケール)などの指示が含まれる。
地図データ読出部120は、地図データベース130から、地図データを読み出す機能を奏する。レベル・メッシュ設定部121は、ユーザから指定された視点位置等に応じて、地図データベース130のうちのどのレベル、どのメッシュのデータを使用するかを決定する。セル設定部122は、レベル・メッシュ設定部121によって設定されたメッシュ内において、どのセルに格納されたデータを用いるかを決定する。地図データ読出部120は、こうして設定されたメッシュ、セルから地図表示のためのデータを読み込むのである。
本実施例では、1枚の3次元地図を表示するために、複数のレベルの地図データを併用する。地図データ併用の制御については、後述する。
【0020】
表示制御部140は、地図データベース130の地図データを用いて3次元地図を表示する。
本実施例では、地図を視点位置から遠方の遠景領域と、視点位置に近い近景領域の2つに分け、それぞれ異なるレベルの地図データを用いて、以下の方法で表示を行う。
表示/非表示設定部141は、視点位置からの距離に応じて地図データに格納された各地物の表示/非表示を決定する。この処理は、遠景領域、近景領域の双方に共通の処理である。
遠景描画部142は、遠景領域の地図を描画する。本実施例では、指定された視点位置からの透視投影による鳥瞰図を描画するものとした。視点位置を低く設定した状態で描画するものとしてもよい。3次元では、いわゆる隠線処理のため、投影時の各点の視点からの距離、即ち深度がデプスバッファに記憶されている。遠景領域の描画時も、各点の深度は、デプスバッファに記憶される。
デプスバッファクリア部143は、遠景領域描画時に記憶されたデプスバッファの値を初期化する。この処理により、描画された遠景領域は、3次元的な意味を有さない、一枚の2次元的な背景画像を構成することになる。
近景描画部144は、デプスバッファが初期化された後、近景領域の地図を描画する。近景領域の描画方法は、遠景領域と同じ視点、同じ投影方法を用いて行う。また、近景描画時には各点の深度が新たにデプスバッファに記憶され、これに基づいて隠線処理が施されることになる。ただし、遠景領域は、ただの背景画像としての扱いとなっているから、近景領域は、遠景領域に上書きされることとなる。
【0021】
B.地図データベースの構造:
次に、本実施例における地図データベースの構造について説明する。先に説明した通り、本実施例においては、詳細度の異なるレベルに分けて地図データが用意されており(
図1参照)、各レベルにおいては、地図データは、所定の地理的サイズからなるメッシュ単位で格納されている。そして、さらにメッシュ内において、格納される地物のサイズおよびデータ量に基づいて、メッシュを細分化したセルを定義し、セル単位でデータを格納しているのである。以下では、まず、セルの概念を説明し、次に、データの構造について説明する。
【0022】
図2は、地図データベースのセル構造を示す説明図である。左側に地図データを構成するメッシュの例を示した。
メッシュ内には、種々の地物の形状等を表す地物データが格納されている。図中の例では、池、道路、鉄道、複数の建物の地物データが格納されていることになる。そして、各地物は、2次元的なサイズが異なる。例えば、道路は、メッシュ内のほぼ全域にわたって存在する「長い」地物である。このような2次元的なサイズが大きい地物をここでは大地物と呼ぶ。池や鉄道は、メッシュ内の比較的広い領域を占めるサイズが中程度の地物(以下、「中地物」と呼ぶ)である。大地物、中地物という区分は、地物の属性によって一義的に定まるものではなく、メッシュ内の各地物が占める実際の大きさに基づいて定め得るものである。例えば、
図2に示したよりも大きな池が存在する場合には、その池を大地物として扱っても構わない。
このような大地物、中地物以外の2次元的なサイズが比較的小さい建物等は小地物となる。
【0023】
本実施例では、上述の通り、2次元的なサイズに応じて地物を区分した後、それぞれの地物を管理する単位となるセルを設定する。
大地物の場合は、右側に示すようにメッシュと同サイズのセル1(C1)となる。中地物の場合は、メッシュよりも小さい2つのセル2(C21,C22)を設定する。セルC21、C22を合わせたサイズのセルを用いるものとしてもよい。セル2を2つのセルC21、C22に分割するか否かは、各セルに含まれるデータ量が予め設定された上限値を超えるか否かに基づいて判断する。池および鉄道の地物データの総データ量が、セル2に設定された上限値を超える場合には、セルC21、C22に分割して管理することになるし、上限値以下に収まる場合には、セルC21、C22を合わせた単一のセルとして管理すればよい。このように、セルC21、C22等の形状は、各セルに含まれる地物の大きさと、各セル内の地物のデータ量に基づいて定まる。
小地物の場合も同様に、2つのセル3(C31、C32)に分けて建物の地物データが管理される。セルC31、C32の形状も、各セル内に含まれる地物の形状、およびデータ量に基づいて定められる。
図2において、セル3が一つの建物ごとに設定されているのではなく、セルC31には2つの建物、セルC32には4つの建物が格納されているのは、これらの複数の建物を格納した状態でも、各セルのデータ量の上限値以下であることを表している。
【0024】
左側の図中に示した一点鎖線はセル2を示し、破線はセル3を示している。このように1枚のメッシュ内の地物データは、複数のセルに分割されて管理されることになる。
図2の例では、大地物、中地物、小地物という3種類に分類し、それぞれに対してセルを設定したが、大地物、小地物という2種類に分類した上で、小地物についてのみセルを設定するようにしてもよい。
本実施例のセルは、メッシュ内の地物を、単に地理的な区分に基づいて細分化したものではなく、地物自体を大地物、小地物等に分類した上で、分類ごとに設定されるものである。従って、いずれか一つの分類、例えば、小地物を格納するセル3のみを読み込んでも、地図を表示できる訳ではない。適正な地図を表示するためには、セル1〜3の全てを読み込む必要がある。しかし、地図の表示範囲によっては、セルC31のデータさえあれば足り、セルC32のデータは表示範囲外という場合、本実施例によれば、セルC32の読込みを省略できるため、地図表示の処理負荷を軽減することが可能となる。
【0025】
図3は、地図データベースのデータ構造を示す説明図である。
地図データベースは、
図1で示した通り、複数のレベルに分けて管理されている。
各レベルのデータは、所定の地理的サイズの複数のメッシュで構成される。
そして、各メッシュは、
図2で示したように、大地物を格納するセル1、中地物を格納するセル2、小地物を格納するセル3に分けられている。セル2は省略してもよいし、4段階以上のセル構造を採用してもよい。
セル1を例に、各地物に対するデータ構造を例示した。各地物に対しては、図示する種々のデータが格納されている。
「地物ID」は、地物に固有の識別情報である。
「名称」は、地物の名称である。
「位置」は、地物の代表点位置である。例えば、2次元的な形状の重心の座標値を用いることができる。
「形状」は、地物の2次元または3次元形状を表すポリゴンデータである。
「種別」は、道路、建物など、地物の種別を表す情報である。
「表示レベル」は、地図を表示する際の視点からの距離に応じて地物の表示/非表示を制御するための情報である。本実施例では、図中に示すように、表示レベルを0〜3の整数値で示すものとした。表示レベル「0」は、その地物が、視点から比較的近い距離D1の範囲にある場合に表示されることを表している。同様に、表示レベル「1」は視点から距離D2までの範囲、表示レベル「2」は視点から距離D3までの範囲にある場合に表示されることを表している。表示レベル「3」は距離の上限値が設定されていないため、視点からの距離にかかわらず表示されることになる。
表示範囲の例を、図中にハッチングで示した。地物に対して、表示レベル「2」が設定されていると、距離D3よりも短い範囲、即ち図中にハッチングで示した範囲で表示されることとなる。
【0026】
C.地図表示処理:
地図を表示するための処理について説明する。これは、
図1に示した主として表示制御部140が実行する処理であり、ハードウェア的には地図表示システム100のCPUが実行する処理である。
【0027】
図4、
図5は、地図表示処理のフローチャートである。
処理を開始すると、地図表示システム100のCPUは、ユーザからの視点、視線方向、表示スケールの指示を入力する(ステップS10)。これらの指示は、デフォルト値を用いるようにしてもよい。
そして、CPUは、地図データを読み込むべきレベルおよびメッシュを特定する(ステップS12)。図中に、メッシュの特定方法を例示した。
本実施例では、遠景領域/近景領域の2つの領域で、レベルの異なる2つの地図データを併用して地図を表示する。CPUは、まず、ユーザから指定された表示スケールに基づき、遠景/近景の各領域のレベルを特定する。例えば、表示スケールとして、広域の表示が指定されている場合には、
図1に示したレベルLVaを遠景用、LVbを近景用として選択することになる。これに対し、詳細な表示が指定されている場合には、
図1に示したレベルLVbを遠景用、LVcを近景用として選択することになる。
レベルが選択されると、CPUは、視点および視線方向に基づき、各レベルで、地図データの読込対象となるメッシュを特定する。図中にメッシュの特定方法を例示した。視点を中心とする扇形状の範囲が地図の表示範囲である。この中で、視点に比較的近い、ハッチングを付した範囲が近景領域となり、その遠方の白抜きの範囲が遠景領域である。
近景用に選択されたレベルの地図データのうち、近景領域と重なるメッシュ、即ち図中の破線で示した9つのメッシュが近景用の地図データにおける読込み対象となる。遠景用についても同様に、遠景領域と重なるメッシュ、即ち図中に実線で示した2つのメッシュが遠景用の地図データにおける読込み対象となる。
後述する通り、本実施例では、遠景領域について描かれた地図画像上に、近景領域の地図画像が上書きされる。従って、遠景領域については、必ずしも地図データの読込み範囲を、遠景領域に限定する必要はない。例えば、視点付近から近景領域、遠景領域の双方を含む範囲を読込み、これら全体を利用して遠景画像を描画しても差し支えない。
【0028】
次に、CPUは地図表示位置、視線方向に基づいて、地図データを読み込むべきセルを特定する(ステップS14)。図中にセルの特定方法を例示した。
ステップS12の処理によって、メッシュM1、M2が読込対象として特定されたものとする。メッシュM1には、図中に破線で示す通りセルC1〜C6が定義されている。メッシュM2には、セルC7〜C11が定義されている。CPUは、このメッシュM1、M2に含まれるセルC1〜C11の中から、地図の表示範囲V(図中では矩形で表示したが、厳密には透視投影の領域としては扇形状になる)と重なるセルを読込対象として特定する。この結果、図の例では、セルC4〜C9が読込対象となる。
このようにセル単位で読込対象を特定することにより、メッシュM1、M2全体の地図データを読み込む必要がなくなるため、地図データの読込みに要する時間を短縮することができる。
【0029】
CPUは、特定されたセルから、視点からの距離が表示レベルを満足する地物データを読み込む(ステップS16)。例えば、
図3で示した通り、表示レベル「2」は視点から距離D3以内で表示されることを意味しているから、この地物が視点から距離D3より遠方に存在する場合には、読込対象から除外するのである。この判断に用いられる視点から地物までの距離は、地物ごとに個別に算出するものとしてもよいし、セルの代表点(例えば、セルの境界上の視点に最も近い点)を用いて算出してもよい。
上述の処理に代えて、地物データを一旦、読み込んだ後、表示レベルに基づいて、表示/非表示を制御するものとしてもよい。
【0030】
地物データを読み込むと、CPUは、遠景領域を透視投影で描画する(ステップS18)。本実施例では、高い視点からの鳥瞰図を描くが、低い視点からのドライバーズビューを描いてもよい。この処理で用いるのは遠景用のレベルの地図データである。
ステップS18の処理では、各点の深度は、デプスバッファに記憶され、隠線処理が行われる。
遠景領域を描画する際に、近景領域との境界付近では、3次元の地物を描画しないように制御する。かかる処理は、近景領域との境界付近に地物を表示しない非表示領域を設定し、各地物ごとに、この非表示領域に属するか否かを判断することによって実現できる。かかる処理に代えて、遠景領域では、地物を一切描画せず、地表面のポリゴンのみを描画するようにしてもよい。
【0031】
遠景領域の描画が完了すると、CPUは、デプスバッファをクリアする(ステップS20)。これによって、遠景領域の画像(以下、「遠景画像」という)は、深度の情報を持たない、単なる2次元の背景画像を表すものとなる。
【0032】
次に、CPUは、近景領域を透視投影で描画する(ステップS22)。透視投影の視点、視線方向は、遠景領域の描画(ステップS18)と同じである。ステップS22で用いるのは、近景用のレベルの地図データである。
デプスバッファがクリアされているため、近景用の画像(以下、「近景画像」という)は、遠景画像の前面に上書きされることになる。ただし、近景用の画像の透視投影時には改めて深度がデプスバッファに格納されるため、近景用の画像に対しては、隠線処理は適切に施される。
【0033】
ここで、遠景領域を描画する際に設定した非表示領域の意味について説明する。
本実施例では、上述の通り、デプスバッファをクリアすることにより、遠景画像の上に近景画像を上書きしている。従って、遠景画像と近景画像の境界付近に3次元の地物が描かれている場合、近景画像によって、その一部が不自然に覆い隠されることが生じるおそれがある。上述の通り、遠景画像において境界付近に非表示領域を設け、境界付近で3次元の地物が描かれないようにしておけば、こうした不都合を回避することができるのである。非表示領域の大きさは、近景領域によって上書きされる範囲を踏まえて、上述の目的を達成できるように任意に設定することができる。
【0034】
D.3次元地図の表示例および効果:
図6は、3次元地図の表示例を示す説明図である。
図6(a)は遠景画像の例を示している。ここでは、近景領域も含めて視点付近から遠方まで全体を遠景領域として描いた例を示した。この例では、遠景画像では、主として地表面のみを描いているが、地物を描くようにしてもよい。
図6(b)は近景画像の例を示している。遠景画像は描かれていない。ここに描画されているのは、
図4のステップS12で示したように、視点から近景領域として設定された距離範囲内の透視投影図である。近景領域では、道路等が鳥瞰図で描かれ、また主要な地物については3次元的に描かれている。
図6(c)は遠景画像に、近景画像を重畳した状態を示している。これが本実施例で実現される3次元地図となる。遠方に、遠景画像としての山等が表示され、視点に近い側では、道路、建物等が描かれている。
図6(d)は、比較例として示したものであり、遠景画像を描画した後、デプスバッファをクリアせずに近景画像を描画した場合の例である。近景画像で描画されるはずの道路等はほとんど描かれず、3次元的な地物が不自然に存在する画像となっていることが分かる。
図6(e)は、デプスバッファの影響を表す説明図である。地表aは遠景領域の地表面、地表bは近景領域の地表面を表している。遠景用の地図データと、近景用の地図データには、それぞれ誤差が含まれるため、両者を重ねてみると、地表面高さが地点ごとに異なることがある。遠景領域を描画した後、デプスバッファをクリアせずに近景領域を描画すると、遠景画像と近景画像との間でも隠線処理が行われることになる。この結果、地図データ上、遠景領域の地表面が近景領域の地表面よりも高い地点にある部分では、近景画像が遠景画像の地表面によって覆い隠されることになってしまい、
図6(d)に示した不自然な画像となってしまう。
デプスバッファの影響は、このように異なるレベルの地図データ間に不整合がある場合に限られない。両者が完全に整合している場合であっても、表示処理過程における丸め誤差の影響で、結果として
図6(e)に示したように地表面の高さに不整合が生じることがあり得る。また、異なるレベルの地図データ間で地表面の高さが完全に一致している場合、今度は、深度が同一の地点に複数のポリゴンが存在することとなり、グラフィックスエンジンがいずれを視認可能に描画させてよいのか判断できず、画像自体が不安定にちらつくという現象も生じる。
本実施例の3次元地図表示システムによれば、遠景画像を描いた後、デプスバッファをクリアすることによって、こうした支障を回避でき、複数レベルの地図データを併用した場合でも、見栄えの良い3次元地図を表示することが可能となる。また、複数レベルの地図データを併用することにより、遠景領域について詳細な地図データを読み込む必要がなくなるから、近景領域では十分詳細な情報を提供しつつ、遠景領域ではデータ量の低い地図データを用いて効率的に地図を描画することが可能となる。
さらに、本実施例では、地図データをメッシュ単位で格納するだけでなく、メッシュを細分化したセル単位で読み出し可能に格納している。こうすることによって、地図表示に無用なデータの読込を回避することができ、地図の表示時にデータ読み出しに要する時間の短縮化を図ることができる。
【0035】
以上、本発明の実施例について説明した。
本発明の3次元地図表示システムは、必ずしも上述した実施例の全ての機能を備えている必要はなく、一部のみを実現するようにしてもよい。また、上述した内容に追加の機能を設けてもよい。
本発明は上述の実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。例えば、実施例においてハードウェア的に構成されている部分は、ソフトウェア的に構成することもでき、その逆も可能である。