【実施例1】
【0017】
本発明についてコンピュータのディスプレイ上に3次元地図を表示する3次元地図表示システムとして構成した実施例を説明する。本発明のテクスチャ生成システムは、3次元地図表示システム内に組み込まれた形で実施される。3次元地図表示システムは、コンピュータの他、スマートフォン、携帯電話、タブレット端末などの携帯端末、ナビゲーション装置など種々の装置を用いて構成することもできる。
また、本実施例では、スタンドアロンで稼働するシステムを例示するが、図中に示す地図データベース20等をサーバに格納し、サーバとナビゲーション装置とをネットワークで接続したシステムとして構成してもよい。
【0018】
A.システム構成:
図1は、3次元地図表示システムの構成を示す説明図である。実施例としての3次元表示システム10は、CPU、RAM、ROMを備えるコンピュータに、図示する各機能を実現するためのコンピュータプログラムをインストールすることによってソフトウェア的に実現されている。各機能の少なくとも一部は、ハードウェア的に構成するものとしてもよい。また、コンピュータには、3次元地図のグラフィックスを行うために、CPUとは別に、GPU(Graphics Processing Unit)を搭載してもよい。
【0019】
図中の各機能ブロックの機能について説明する。
地図データベース20は、3次元地図を表示するために必要なデータを格納している。図中の例では、3次元モデル21、およびテクスチャデータ22を示した。この他に、例えば、地図中に表示する文字を記憶する文字データベースを備えても良い。また、経路探索のためのネットワークデータ、即ち道路をリンク、ノードで表したデータベースを備えても良い。
3次元モデル21は、建物などの地物の3次元形状を表すポリゴンデータ等を格納する。
テクスチャデータ22は、地物の外観を表す画像データを、ポリゴンに貼付されるためのテクスチャとして記憶する。昼用テクスチャ23は、昼景の3次元地図を表示する際に利用されるテクスチャである。夜景テクスチャ24は、夜景の3次元地図を表示する際に利用されるテクスチャである。ビルのような建物について、昼用テクスチャ23としては窓の形状を表す画像が用意され、夜景テクスチャ24としては、窓の点灯状態を表す画像、消灯状態を表す画像などが用意される。
テクスチャデータ22には、ポリゴン全体に貼付されるテクスチャと、ポリゴンに配列して貼付される単位テクスチャとが混在して用意されている。テクスチャデータ等の構造については、後述する。
【0020】
コマンド入力部11は、キーボードやマウスなどの操作部、またはネットワークを介してユーザのコマンドを入力する。コマンドとしては、3次元地図を表示する際の表示範囲、視点、視線方向、表示モードなどが挙げられる。本実施例では、3次元地図を昼景または夜景で表示可能となっているため、両者を切り換えるコマンドを含めてもよい。
地図表示制御部12は、3次元地図の表示を制御する。また、地図データベースから必要なデータの読み込みなども行う。
3次元ポリゴン生成部13は、3次元地図を表示するために仮想3次元空間内に、各地物の3次元モデル21を配置する。
テクスチャ生成部14は、3次元ポリゴンの表面にテクスチャを貼付する。昼用テクスチャ生成部15は、昼用テクスチャ23を用いて、昼景を表すテクスチャの貼付を行う。夜用テクスチャ生成部16は、夜用テクスチャ24を用いて夜景を表すテクスチャの貼付を行う。本実施例では、夜景を表す際には、窓の点灯/消灯状態を表した2種類の単位テクスチャをランダムに選択しながら配置することで、建物の窓がランダムに点灯した状態のテクスチャを生成している。この処理には、単位テクスチャの選択に用いられる制御値を格納したマトリックスが用いられる。マトリックス記憶部17は、このマトリックスを記憶している。
本明細書において、テクスチャの「生成」というとき、複数の単位テクスチャを配置して1枚のテクスチャを生成する態様、および複数の単位テクスチャをポリゴン上に順次、貼付する態様の双方を含む。本実施例では、テクスチャ生成部14は、後者の態様、即ち、単位テクスチャをポリゴン上に順次、貼付する態様でポリゴンのテクスチャを生成している。
以上で説明した機能ブロックのうち、本実施例においては、地図データベース20、テクスチャ生成部14、マトリックス記憶部17が、本発明におけるテクスチャ生成システムを構成することになる。
【0021】
図2は、地図データベースの構造を示す説明図である。
図の上側には、3次元モデル21のデータ例を示した。3次元モデル21には、地物ID、種別、ポリゴンなどのデータが格納される。
地物IDは、地物の識別情報であり、右に示した建物の例では、地物IDとして「B01」が付されている。
種別は、地物の種類であり、右に示した例では「建物」となる。種別としては、この他、道路、鉄道、山、畑など種々の情報を用いることができる。また、樹木、雲などを種別に含めても良い。
ポリゴンには、図示するデータが格納される。
ポリゴンIDは、3次元モデルを構成する各ポリゴンの識別情報であり、右に示した例では、建物の正面のポリゴンにPOL1が付されている。
形状は、ポリゴンの形状を特定するデータであり、本実施例では頂点の座標値を記憶している。右に示した例では、ポリゴンの頂点PP1、PP2、PP3、PP4のそれぞれについて3次元の座標値が格納されることになる。座標値は、3次元地図全体の原点を基準とする絶対座標を用いても良いし、地物ごとに設定された基準点を原点とする相対座標を用いてもよい。後者の場合は、3次元モデル21に、基準点の絶対座標値を別途、格納することになる。
テクスチャ繰り返し数とは、ポリゴンに貼付されるテクスチャの配列を規定する情報である。右の図の例では、建物の表面を横2×縦3の区分に分け、ここに窓のテクスチャを繰り返し貼付する。従って、テクスチャ繰り返し数には、(2,3)というデータが格納される。ポリゴン全体に一つのテクスチャを繰り替えしなく配置する場合には、テクスチャ繰り返し数は、(1,1)となる。
昼用テクスチャおよび夜用テクスチャは、それぞれポリゴンに使用されるテクスチャの識別情報を格納する。
3次元モデル21には、地物の属性を表す属性データを含めても良い。例えば、建物について、名称、階数などを表すデータを属性データとすることができる。
【0022】
図の下側には、テクスチャデータ22の例を示した。テクスチャデータ22には、昼用テクスチャ、夜用テクスチャが記憶されている。各テクスチャは、識別情報としてのテクスチャIDと、画像データで構成されている。
図の例では、昼用テクスチャについては、テクスチャIDとして「TEX1」が付され、窓の形状を表す画像が用意されている。先に説明した3次元モデル21では、昼用テクスチャとして、「TEX1」が指定されているから、図の右側に示した建物(B01)について昼景を表す際には、テクスチャデータ22のTEX1で表される画像が、横2×縦3で繰り返し配列されることになる。
図の例では、夜用テクスチャについては、テクスチャIDとして「TEX2」が付され、窓が消灯状態のOFF画像、窓が点灯状態のON画像の2種類の画像が用意されている。先に説明した3次元モデル21では、夜用テクスチャとして、「TEX2」が指定されているから、図の右側に示した建物(B01)について夜景を表す際には、テクスチャデータ22のTEX2で表されるON画像およびOFF画像が、選択されながら横2×縦3で繰り返し配列されることになる。
夜用テクスチャについては、OFF画像、ON画像に「TEX2OFF」「TEX2ON」のように個別のテクスチャIDを付してもよい。かかる場合には、両者を夜用テクスチャとして関連づける情報を、テクスチャデータ22に用意してもよいし、3次元モデル21の夜用テクスチャとして、「TEX2OFF」「TEX2ON」という2つのテクスチャIDを格納するようにしてもよい。
夜用テクスチャは、各3次元モデルに対してOFF画像、ON画像のように必ずしも複数種類の画像を用意しておく必要はなく、単一の画像を用意しておいてもよい。
【0023】
B.3次元地図表示処理:
次に、実施例の3次元地図表示システム10において、3次元地図を表示する際の処理内容について説明する。
図3は、3次元地図表示処理のフローチャートである。処理を開始すると、3次元地図表示システム10は、地図表示範囲を設定する(ステップS10)。地図の表示範囲は、例えば、ユーザからの指示によるものとしてもよい。また、3次元地図表示システムが経路案内システムに組み込まれている場合には、経路探索の結果や現在位置などに応じて設定してもよい。3次元地図表示システム10は、地図の表示範囲に応じて、地図表示に必要となる3次元モデルを地図データベース20から読み込み、仮想3次元空間内に配置する(ステップS12)。
【0024】
次に、地図の表示モードに応じて、背景およびテクスチャの表示を行う。
昼景モードの場合(ステップS14)、3次元地図表示システム10は、昼用の背景、空や遠方の景色などを設定する(ステップS16)。そして、地物に対して昼用テクスチャを表示する(ステップS18)。テクスチャデータ22から、3次元モデル21で指定された昼用テクスチャを読み込み、各ポリゴンに貼付するのである。
夜景モードの場合(ステップS14)、暗い空など夜景用の背景を設定し(ステップS20)、地物に対して夜景テクスチャ生成処理を実行する(ステップS22)。この処理は、テクスチャデータ22から、3次元モデル21で指定された夜用テクスチャを読み込み、ポリゴンの部位に応じてON画像、OFF画像をランダムに選択して貼付する処理である。処理の内容は後述する。
3次元地図表示システム10は、以上の処理を、各地物に行うことで、3次元地図を表示する。
【0025】
C.夜景テクスチャ生成処理:
図4は、夜景テクスチャ生成処理のフローチャートである。3次元地図表示処理(
図3)のステップS22に相当する処理である。
処理を開始すると、3次元地図表示システム10は、マトリックス記憶部17からマトリックスを読み込む(ステップS50)。マトリックスには、各ピクセルに対し、ON画像、OFF画像を選択するための制御値が記憶されている。本実施例では、選択の対象となる単位テクスチャが、ON画像、OFF画像の2種類であるため、マトリックスには、0、1の2値を記憶するものとした。
【0026】
次に、3次元地図表示システム10は、処理の対象となる地物を対象モデルとして選択する(ステップS51)。対象モデルは、テクスチャの生成が未処理のものから選択すればよい。
対象モデルが建物ではない場合(ステップS52)、3次元地図表示システム10は、ON画像、OFF画像の使い分けは不要と判断し、3次元モデル21で指定された夜用テクスチャを貼付する(ステップS53)。夜用テクスチャは、ポリゴン全体に繰り返しなく貼付される場合もあれば、
図2に示したように繰り返した配置で貼付される場合もある。
対象モデルが建物の場合(ステップS52)、3次元地図表示システム10は、3次元モデル21のテクスチャ繰り返し数に従って、繰り返し数を設定する(ステップS54)。図中に、横2×縦3の繰り返しをする場合の設定例を示した。本実施例では、テクスチャを貼付するための2次元の座標系(U,V)として、繰り返し数に応じた座標値を与えるものとした。図示するようにポリゴンの左下を原点(0,0)とし、右下を(2,0)、左上を(0,3)、右上を(2,3)というUV座標値を与えるのである。指定されたテクスチャ画像は、UV座標値で(0,0)−(1,1)の頂点で表される矩形領域に収まるように貼付され、UV座標値として1を超える値が設定されているときは、値に応じて繰り返し貼付される。従って、図中の各座標値が設定されれば、横2×縦3の配列を規定することができる。異なる配列においても同様にUV座標値で繰り返し数を規定することができる。
次に、3次元地図表示システム10は、マトリックスの使用領域を定める基準点を設定する(ステップS55)。基準点は、マトリックスの左下など任意に設定された固定の点としてもよいし、この処理を実行する度に、一定の規則または乱数によって選択するようにしてもよい。本実施例では、乱数を発生させ、基準点のx座標、y座標を設定するようにした。
基準点を設定すると、3次元地図表示システム10は、マトリックスの制御値に応じて単位テクスチャを選択し、貼付する(ステップS56)。本実施例では、マトリックスの各ピクセルには0、1の2値が格納されているため、値1の時はON画像、値0の時はOFF画像を選択するものとした。
ステップS55、S56におけるマトリックスを用いた単位テクスチャの選択については、具体例に基づいて後でより詳しく説明する。
【0027】
3次元地図表示システム10は、以上の処理によって、対象モデルに対して、夜用のテクスチャを貼付する。この処理を、全ての対象モデルに対して終了するまで(ステップS57)、繰り返し実行する。
本実施例では、対象モデルが建物か否かによって処理を分けているが(ステップS52参照)、これは、建物についてのみ、ON画像、OFF画像という2種類の単位テクスチャの使い分けを行うものとしているからである。建物以外の地物に対しても、複数種類の単位テクスチャを選択して用いる場合には、かかる地物についても、建物と同様の処理(ステップS54〜S56)を行うようにすればよい。
【0028】
図5は、単位テクスチャの選択方法を示す説明図である。図の上側には、マトリックスの例を示した。本実施例では、256×256ピクセルのサイズとしているが、マトリックスのサイズは任意に設定可能である。マトリックスの各ピクセルには、0,1の2値が格納されている。図の例では、値0が格納されているピクセルを黒、1が格納されているピクセルを白で表した。図の例では、値0、1は、概ね同数となっており、偏り無く分布するよう設定されているが、値0、1の割合や分布も任意に設定可能である。かかるマトリックスは、オペレータが各ピクセルの値を指定する方法、関数や乱数によって各ピクセルの値を決定する方法などを用いることができる。
図中には、夜景テクスチャ生成処理(
図4)のステップS55で設定される基準点を併せて示した。マトリックスの左下を原点Oとし、横方向にMx、縦方向にMyの位置にあるピクセルが基準点である。基準点(Mx、My)の座標は、乱数、関数などによって定めることができる。
【0029】
図の中段には、マトリックスの一部の拡大図である。基準点(Mx,My)を左下とする矩形領域を示した。図中の各マスはマトリックスのピクセルを表しており、そこに0または1の制御値が格納されている。
夜景テクスチャ生成処理(
図4)のステップS56では、3次元地図表示システム10は、マトリックスの基準点(Mx,My)を原点として、単位テクスチャの繰り返し数に対応する領域Aの各ピクセルをポリゴンの各部位と対応づける。
図4に示したように、横2×縦3の繰り返し数で単位テクスチャを配置する場合には、各部位に、マトリックスの横2×縦3ピクセルからなる領域Aを対応づけることになる。
図の下段には、ON画像、OFF画像の選択結果を示した。領域Aの左下のピクセルには、制御値として0が格納されているから、OFF画像が選択される(
図4のステップS56参照)。右下のピクセルも同様である。中段については、左側の制御値が1、右側の制御値が0となっているから、左側にはON画像、右側にはOFF画像が選択される。上段については、左側の制御値が0、右側の制御値が1となっているから、左側にOFF画像、右側にON画像が選択される。このようにピクセルの制御値に応じて、ON画像、OFF画像を選択し、ポリゴンの対応する部位に貼付することによって、図の下段に示すような建物全体のテクスチャを生成することができる。
マトリックス内の制御値の分布は、領域によって異なるから、基準点が異なれば、単位テクスチャの選択に用いる領域が変化し、得られる結果も異なることになる。また、常に固定された基準点を用いる場合でも、繰り返し数が異なれば、選択に適用する領域の大きさが変化するため、得られる結果に対する印象は異なったものとなる。
【0030】
図5で説明した処理は、GPUを利用する際に特に有用性が高い。一般にGPUは、比較的単純な処理を高速で行うことができるように設計されており、条件分岐については処理速度が比較的遅くなる特性を有している。
図5の処理では、マトリックスの各ピクセルの制御値を取得し、その結果に応じて、ON画像、OFF画像を一義的に定めることができるため、高速化を図ることができるのである。例えば、得られた0または1の制御値を、そのままON画像、OFF画像を指定するための引数として用いれば、条件分岐を介さずに両者の使い分けが可能となる。
【0031】
図5の例では、基準点周りに設定された領域Aに対して、ポリゴンの各部位を対応づけるようにしたが、両者の対応づけは関数に基づいて行っても良い。ポリゴンの各部位に対し、マトリックスのいずれかのピクセルを割り当てることができる方法であれば、必ずしも、ポリゴンと同一形状の領域を割り当てる必要はないのである。
【0032】
D.地図表示例:
図6は、3次元地図の表示例(1)を示す説明図である。従来技術として、
図11に示したのと同じ条件で夜景の3次元地図を表示した例を示した。
図11では、パターンA、パターンBなど、点灯/消灯状態が規則的に配置された部位を視認することができるのに対し、
図6の表示例(1)では、こうした規則性は見いだすことができない。このように、本実施例によれば、夜景における建物の点灯/消灯状態として、より自然な状態を表示することが可能となる。
【0033】
図7は、3次元地図の表示例(2)を示す説明図である。
図6の表示例よりも、より上方の視点から俯瞰した例を示した。視点位置を高くすることにより、一層多くの建物の窓が視認可能となるが、かかる状態でも、建物の窓について、違和感のない点灯/消灯状態を表示できている。
【0034】
E.効果および変形例:
以上で説明した実施例によれば、マトリックスを利用することにより、処理負荷を抑制しつつ、ON画像、OFF画像を使い分けて、違和感のない夜景表示を実現することができる。
実施例では、2つの窓を単位テクスチャとして用いたが、単位テクスチャの形状等は任意に設定可能である。一つの窓を単位テクスチャとしてもよいし、更に多くの窓を単位テクスチャとしてもよい。ただし、
図11に示したパターンA、パターンBのように2次元的に多くの窓が配置されたグループを単位テクスチャとすると、単位テクスチャごとのパターンを視認しやすくなる。従って、単位テクスチャは可能な限り最小の要素単位、即ち建物の例では一つの窓、に近づけることが好ましく、複数の窓を含む場合でも、一次元に配置されたものとすることが好ましい。
【0035】
本実施例は、3次元モデルに対して、複数の単位テクスチャを選択して配置するための技術であり、建物の夜景表現に限った技術ではない。種々の地物に対して、本実施例を適用することにより、処理負荷を抑制しつつ、多様な地物の表示が可能となり、3次元地図のリアリティをさらに向上させることができる。例えば、樹木に対して、枝や葉の状態が異なる複数の単位テクスチャを選択して適用するようにすれば、多様な樹木を表現可能となる。雲に対して、白、グレーなど多様な色の単位テクスチャを選択して適用するようにすれば、種々の形状、色の雲を表現可能となる。実施例では、単位テクスチャ同士が重ならずに配置される例を示したが、本技術を適用する地物によっては、単位テクスチャ同士を重ねるように貼付してもよい。
【0036】
本実施例に対しては、処理についてもさらに種々の変形例を考えることができる。以下に説明する。
【0037】
(1)単位テクスチャの選択方法についての変形例(1):
図8は、変形例(1)における単位テクスチャの選択方法を示す説明図である。実施例では、ON画像、OFF画像の2種類の単位テクスチャを用いたが、変形例(1)では、右下に示す3種類の単位テクスチャを用いる。0画像は、2つの窓が消灯の単位テクスチャである。1画像は、左側が消灯、右側が点灯の単位テクスチャである。2画像は、2つの窓が点灯の単位テクスチャである。
マトリックスには、上段に示した通り、0、1、2の3値を格納する。こうすることによって、実施例と同様、マトリックスの各ピクセルに応じて、3種類の単位テクスチャを使い分けて配置することができる。即ち、0の制御値が格納されたピクセルには0画像、1の制御値が格納されたピクセルには1画像、2の制御値が格納されたピクセルには2画像を配置すればよい。この結果、左下に示すように、実施例よりも多様な点灯状態を表現することが可能となる。
単位テクスチャを、4通り以上用意する場合も、変形例(1)と同様にして処理することができる。
【0038】
(2)単位テクスチャの選択方法についての変形例(2):
図9は、変形例(2)における単位テクスチャの選択方法を示す説明図である。この例では、ON画像、OFF画像の2種類の単位テクスチャを用いる。ただし、マトリックスには、0、1という2値の制御値ではなく、0〜255の範囲の制御値、即ち単位テクスチャの種類数よりも広い数値範囲の制御値が格納されている。制御値の範囲は任意に設定可能である。
変形例(2)では、各ピクセルに格納された制御値と、閾値THとの大小関係に基づいて、ON画像、OFF画像の選択を行う。つまり、制御値≦THのときはOFF画像を用い、制御値>THのときはON画像を用いるのである。
下段に、閾値TH=50の場合、150の場合について結果を示した。
閾値TH=50の場合、左下のピクセルP00の制御値は0であり、制御値≦THとなるからOFF画像が選択される。右下のピクセルP10の制御値は96であり、制御値>THとなるからON画像が選択される。同様にして、ピクセルP01はOFF画像、ピクセルP11、P02、P12はON画像が選択されることになる。この結果、閾値TH=50の場合は、左下に示すように点灯状態の窓が多いテクスチャが得られる。
次に、閾値TH=150の場合は、同様に単位テクスチャを選択すると、ピクセルP00、P10、P01、P12にOFF画像、ピクセルP11、P02にON画像が選択されることになる。この結果、閾値TH=100の場合は、右下に示すように消灯状態の窓が多いテクスチャが得られる。
このように変形例(2)によれば、同じ建物であっても、閾値THを変化させることによって、得られるテクスチャを変化させることができる。閾値THはユーザが指定してもよいし、3次元地図を表示する時刻などの条件に応じて変化させてもよい。例えば、夕刻過ぎなどの時刻には、閾値TH=50を利用し、深夜には閾値TH=150を用いるようにすれば、時間帯に応じた夜景を表現することが可能となる。
変形例(2)においても、3種類以上の単位テクスチャを用いることが可能である。例えば、変形例(1)(
図8)のように3種類の単位テクスチャ(0画像、1画像、2画像)を用いる場合には、2つの閾値TH1、TH2(TH1<TH2)を用いればよい。制御値≦TH1の場合は0画像、TH1<制御値≦TH2の場合は1画像、TH2<制御値の場合は2画像というように使い分けることができる。この場合、閾値TH1、TH2の少なくとも一方の値を変化させることで、3種類の単位テクスチャの割合を変化させることが可能となる。
【0039】
(3)単位テクスチャの配置方法についての変形例:
図10は、変形例としての単位テクスチャの配置方法を示す説明図である。この例では、単位テクスチャを個別の画像データとして用意するのではなく、一つに配列した統合テクスチャとして用意する。中段に、統合テクスチャの例を示した。この例では、一つの画像の上段に昼用画像、下段の左側に夜用のOFF画像、下段の右側に夜用のON画像が配置されている。3つの単位テクスチャは、隙間無く配置されているが、隙間を設けてもよい。統合テクスチャの画像の位置は、統合テクスチャに定義された座標系(tu、tv)で表される。
図の上側には昼景を表示する際のテクスチャの利用方法を示した。建物のテクスチャには、UV座標系が定義されている。建物には昼用画像を貼付することになるから、配置の単位となる左下の点P3に昼用画像の点tp3を対応させ、右上の点P6に昼用画像の点tp6を対応させるように座標変換をする。点P3がUV座標系で(0,0)、点P6が(1,1)ならば、点tp3の座標が(0,0)、点tp6の座標が(1,1)となるよう、(tu、tv)の座標系を平行移動および拡大/縮小すればよい。
図の下側には夜景を表示する際のテクスチャの利用方法を示した。建物にはOFF用画像およびON画像を選択して貼付することになるから、配置の単位となる領域ごとにOFF画像、ON画像の頂点が対応するように座標変換をする。図示するように、ポリゴンの最上段の左側にOFF画像、右側にON画像を貼付する場合を考える。左側には、点P1、P4にそれぞれOFF画像の点tp1、tp4が対応するように座標変換すればよい。このとき、貼付されるポリゴンの点P1、P4もそれぞれUV座標系において(0,0)、(1,1)となるよう座標変換する必要がある。UV座標が1を超えるときは、(0,0)、(1,1)の範囲に対応するテクスチャが繰り返し適用されてしまうからである。同様に、右側には、点P2、P5をUV座標系で(0,0)、(1,1)となるよう座標変換した上で、これらの2点にON画像の点tp2、tp5が対応するように座標変換すればよい。
このように貼付すべき単位テクスチャの選択結果に応じて、統合テクスチャの中で使用する部位をずらすことによって、実施例と同様の画像を得ることができる。単位テクスチャを個別の画像として格納している場合には、選択結果に応じて、その都度、単位テクスチャを読み込む必要があるのに対し、変形例の方法によれば、統合テクスチャを一旦、読み込めば、テクスチャを生成する処理中は新たなテクスチャの読み込みを行う必要がないため、より一層、処理の高速化を図ることができる。
この変形例においても、夜用に3種類以上の単位テクスチャを用いることが可能である。
【0040】
以上、本実施例の種々の変形例を示してきた。本発明については、ここに記載した実施例および変形例に限らず、さらに種々の変形例を構成することが可能である。