【実施例1】
【0015】
本発明につき、立体視画像のうちの一例として立体視地図を表示する立体視地図表示システムとして構成した実施例を説明する。ここでは、地図を平行投影によって3次元的、かつ立体視可能に表示した上で、そこに描かれる文字等についても立体視可能に表示するシステムを例示する。単に3次元的に描いた地図ではなく立体視可能な地図という意味で、以下では、実施例で表示される地図のことを立体視地図と称する。
また、地図が3次元的に表示されるのに対し、文字、記号等は2次元のデータであることから、以下の実施例では、これらを2次元オブジェクトと呼ぶこともある。
【0016】
A.平行投影による立体視の原理:
最初に、平行投影によって立体視を実現する原理について説明する。
図1は、平行投影による立体視の原理を示す説明図である。
図1(a)に示すように3軸を定義する。即ち水平面内にx軸、z軸を定義し、鉛直下方向にy軸を定義する。x軸、y軸、z軸は右手座標系である。図示する通り地物の鉛直上方にカメラを置いて平行投影すると2次元地図が描かれる。本実施例に言う平行投影は、この状態からカメラを傾けた状態で投影することを言う。
平行投影では、透視投影と異なり「視点」は存在しない。本明細書において、平行投影に関し、カメラという用語を用いる場合には、投影方向を模式的に表している。
図1(a)において、x軸周りにカメラを回転させると、鉛直方向から斜めに傾けて平行投影することになるので、x軸周りの回転はピッチ角を表すことになる。また、y軸方向にカメラを回転させると、水平方向で平行投影の方位が変化することになるので、y軸周りの回転は投影方位を表すことになる。そして、z軸周りにカメラを回転させると、以下に示す通り視差を与えることができる。
図1(b)に視差が生じる理由を示した。
図1(b)はz軸方向に地物を見た状態、つまり、z軸が紙面に垂直な状態となっている。視差は、この地物を鉛直上方からy軸方向に見た時に、右眼、左眼の位置の違いによって生じる視線方向の相違である。従って、図中における基準のカメラ位置CCに対して、右眼から見た状態に相当するカメラ位置CR、左眼から見た状態に相当するカメラ位置CLで投影することによって、視差を与えた右眼用/左眼用の画像を生成することができる。視差、即ちz軸周りの回転角δは、任意に設定可能であるが、違和感のない視差を与え得る角度としては、例えば、約20度程度とすることができる。
このように、投影角度、投影方位に加えて、
図1(b)で示した視差を考慮して平行投影を行うことにより、平行投影であっても、立体視可能な右眼用/左眼用画像を生成することができる。
【0017】
図2は、右眼用/左眼用平行投影データの例を示す説明図である。
図2(a)には右眼用平行投影データを示し、
図2(b)には左眼用平行投影データを示した。それぞれの画像においては、平行投影によって、地物が3次元的に表示されている。例えば、領域A1と領域B1、領域A2と領域B2をそれぞれ比較すると、建物の側壁の描かれ方などから、右眼用/左眼用の視差の相違を認識することができる。このように用意された右眼用/左眼用平行投影データを用いることによって、3次元地図を立体視することが可能となる。
【0018】
B.平行投影による影響:
図3は、平行投影パラメータの設定方法(1)を示す説明図である。
図3(a)には、3次元モデルの例を示した。ここでは、図示するようにA〜Iの各アルファベットに高さを持たせた3次元形状のモデルを例にとって説明する。
図3(b)は、真上から真下にカメラCAを設定した場合の平行投影の様子を示している。図示するように平行投影のカメラCAは、中央のアルファベット“E”を含む領域F1の真上に、鉛直下方を向けて設定する。先に説明した通り、平行投影では特定の“視点”は存在しないから、
図3(b)に示したカメラCAは、平行投影の投影方向を模式的に示すものに過ぎない。
図3(c)は、
図3(b)の平行投影によって得られる投影結果を示している。真上からの投影によれば、
図3(c)に示すように平面的な投影結果が得られる。即ち、
図3(a)に示したような3次元モデルに対して、いわゆる二次元地図が得られることになる。
【0019】
図3(d)は、カメラCAを鉛直下方向きからアルファベット“B”の方向に斜めにピッチ角だけ傾けた状態を示している。この結果、カメラCAで投影される領域F2は、ピッチ角に応じて、傾けた方向に延びた長方形となる。
図3(e)は、
図3(d)のようにカメラCAを傾けた場合の投影結果を示している。
【0020】
図4は、平行投影パラメータの設定方法(2)を示す説明図である。
図4(a)は、
図3(d)のようにピッチ角だけ傾けた状態から、ヨー角をずらした状態、即ち
図1(b)で示した角度δだけ回転させた状態を示している。このようにヨー角をずらすことによって、投影される領域F3は、図示するように平行四辺形となる。
図4(b)は、
図4(a)の状態で平行投影した投影結果を示している。このようにピッチ角、ヨー角をずらした斜め方向から平行投影することにより、3次元モデルを立体的に表現することができる。
【0021】
図4(c)は、以上で説明した平行投影によって生成された左眼用画像を示し、
図4(d)は右眼用画像を示している。平行投影の立体視では、
図4(b)におけるヨー角を、左右眼で正負逆方向とすることによって視差を与えるため、図中のアルファベット“E”を取り囲む領域を見ればわかる通り、投影される領域は、左眼用画像では左斜め方向の平行四辺形となり、右眼用画像では右斜め方向の平行四辺形となる。
【0022】
図5は、平行投影とメッシュとの関係を示す説明図である。地図データは、通常、メッシュと呼ばれる一定サイズの矩形領域に分割して用意されている。
図5は、このようにメッシュに区切られている地図に対して、平行投影による立体視を適用した場合の影響を示している。
図5(a)には、メッシュに区切られている地図を平行投影している状態を示している。
図4で説明した通り、平行投影すると、カメラCAによって投影される領域は、領域FA、FBのように平行四辺形となる。そして、あるメッシュを平行投影した結果が領域FAで表されるとすれば、矢印D方向に隣接するメッシュを平行投影した結果は、領域FBのように表される。即ち、投影前は、矩形のメッシュが整列した状態で設定されていたのに対し、平行投影を行うと、各メッシュが平行四辺形に変形される結果、領域FA、FB間に示すようなずれが生じてくる。
図5(b)は、領域FA、RBの拡大図である。各領域の形状のみを示した。先に説明した通り、領域FA、FBが接する辺SA、SB間には、オフセット量OSTからなるずれが生じる。距離OSTは、平行投影パラメータ、即ち、平行投影の際のピッチ角θ、ヨー角δに応じて定まる値である。即ち、単位長さのメッシュを、順次、ピッチ角θ、ヨー角δだけ回転させる座標変換により、
OST=sinδ・sinθ・cosθ
と表すことができる。
従って、領域FA、RBを整列させようとすれば、矢印A方向に、オフセット量OSTだけずらす必要が生じることになる。
図5(c)には、領域FA、FBを整列させずに配置した場合の状態を示した。即ち、
図5(a)のように領域FA、FB間にずれが生じたまま配置した状態を表している。
図5(a)は、領域の形状を示すためのものであり、アルファベットA〜Iの位置は、平行投影前の状態で示しているが、実際には、メッシュごとで平行投影を行うと、
図5(c)に示したように、領域FA、FBの境界Bのところで、画像にずれが生じるのである。
平行投影で利用するピッチ角θ、ヨー角δは、任意に設定可能であるが、立体視を実現する平行投影で利用するパラメータとしては、例えば、ピッチ角θ=22.5度、ヨー角δ=20度程度とすればよい。かかる平行投影パラメータを用いた場合には、
図5(c)に示したずれは、数ピクセル程度に収まることがわかっている。
【0023】
図6は、平行投影がスクロールに与える影響を示す説明図である。
図6(a)に示すように、2次元的な“地図”上で、アルファベット“B”から“E”の方向、即ち矢印SR方向に表示範囲を移動する場合を考える。
図6(b)には、立体視を実現するよう平行投影によって得られた左眼画像FAL、FBL、右眼画像FAR、FBRを示した。スクロール前の状態では、下側に示した領域FAL、FAR内のアルファベット“B”の部分を表示しているものとする。このとき、左眼用画像FAL、と右眼用画像FARの視差は距離L1であり、この視差によって両者の融像が実現し、立体視できているものとする。
次に、SR方向に表示範囲を移動する。このとき、先に
図4で示したように、左眼用画像FAL、FBL、右眼用画像FAR、FBRがそれぞれ平行投影によって元来の矩形領域が平行四辺形の領域に投影されていることを考慮せず、単純に2次元平面と同様に矢印SR方向に表示範囲を移動させたとする。そうすると、本来は、表示範囲は、アルファベットB,E,H,Bという配列にそって移動すべきであるのに、左眼用画像FAL、FBLでは、これらの配列の右側に、無用な部分が多く含まれた状態となり、右眼用画像FAR、FBRでは、逆に左側に無用な部分が多く含まれた状態となる。この結果、例えば、アルファベット“B”の部分では、当初の視差L1に比較して大きな視差L2が生じるようになり、融像できず、立体視が実現できなくなる。つまり、単にアルファベット“B”が二重にずれて視認されるに過ぎない状態となる。かかる現象を回避するためには、左眼用画像FAL、FBL、右眼用画像FAR、FBRにおいて、それぞれ平行四辺形に投影されていることを考慮し、表示範囲の移動方向を矢印SRL、SRRのように個別に設定する必要がある。
こうした現象は、予め全領域で左眼用画像FAL、FBLおよび右眼用画像FAR、FBRを用意しておくことに起因するものである。本実施例では、上述した通り、左眼用画像、右眼用画像においてスクロール方向を個別に設定することにより、立体視を実現したままでのスクロールを可能とするものである。
【0024】
B.システム構成:
図7は、立体視地図表示システムの構成を示す説明図である。
図7には、サーバ200からネットワークNE2等を介して提供される地図データに基づいて、端末300のディスプレイ300dに地図を表示する構成例を示した。端末300としては、スマートフォンを用いるものとしたが、携帯電話、パーソナルコンピュータ、ナビゲーション装置などを用いてもよい。また、3次元立体視地図表示システムは、端末300とサーバ200とからなるシステムの他、スタンドアロンで稼働するシステムとして構成してもよい。
図中には、地図データを生成するデータ生成装置100も併せて示した。
端末300のディスプレイ300dは、右眼用画像と左眼用画像を、それぞれ右眼、左眼で視認できるように表示可能な立体視の機能を有している。本実施例では、いわゆる裸眼での立体視が可能なディスプレイ300dを用いるものとしているが、立体視用の眼鏡等を用いて立体視するデバイスを用いても良い。
【0025】
端末300には、主制御部304の下で稼働する種々の機能ブロックが構成されている。本実施例では、主制御部304および各機能ブロックは、それぞれの機能を実現するソフトウェアをインストールすることによって構成したが、その一部または全部をハードウェア的に構成してもよい。
送受信部301は、サーバ200とのネットワークNE2を介した通信を行う。本実施例では、立体視地図を表示するための地図データおよびコマンドの送受信が主として行われる。
コマンド入力部302は、ボタンやタッチパネルの操作等を通じて、ユーザからの指示を入力する。本実施例における指示としては、3次元地図の表示範囲、拡大・縮小の指定、経路案内を行う際の出発地、目的地の設定などが揚げられる。
GPS入力部303は、GPS(Global Positioning System)の信号に基づいて緯度経度の座標値を得る。また、経路案内では、緯度経度の変化に基づいて進行方向を算出する。
地図情報記憶部305は、サーバ200から提供された地図データを一時的に記憶しておくバッファである。経路案内時のように表示すべき地図が時々刻々と移動していく場合、地図情報記憶部305では不足する範囲の地図データをサーバ200から受信して地図を表示する。
表示制御部306は、地図情報記憶部305に格納されている地図データを用いて、端末300のディスプレイ300dに立体視地図を表示する。
スクロール制御部307は、ユーザからスクロール指示がなされたときに、左眼用画像、右眼用画像それぞれに対するスクロール方向を決定し、立体視を維持したままのスクロールを実現する。
【0026】
サーバ200には、図示する機能ブロックが構成されている。本実施例では、これらの機能ブロックは、それぞれの機能を実現するソフトウェアをインストールすることによって構成したが、その一部または全部をハードウェア的に構成してもよい。
地図データベース210は、立体視地図を表示するためのデータベースである。本実施例では、地物データ211、2次元オブジェクト212、ネットワークデータ213を含む地図データを格納する。ネットワークデータ213は省略することもできる。
地物データ211は、道路、建物などの地物を3次元的、かつ立体視可能に表示するための平行投影データであり、地物の3次元モデルを右眼用/左眼用に投影条件を変えてそれぞれ平行投影することで得られた2次元のポリゴンデータである。即ち、地物データ211としては、同一の地図領域に対し、右眼用の条件で平行投影された2次元の画像データとしての右眼用平行投影データと、左眼用の条件で平行投影された2次元の画像データとしての左眼用平行投影データが格納されている。
2次元オブジェクト212は、地物以外に地図に表示すべき地物名称・地名・案内情報等を表す文字、地図記号・通行規制標識、経路案内における現在位置を表すシンボルデータや経路などを構成する矢印のポリゴンデータ等である。現在位置や経路のように表示位置が不定のものを除き、2次元オブジェクト212には、表示すべき文字や記号などのデータ、および表示位置が対応づけて格納されている。表示位置は、3次元空間上の位置としてもよいし、平行投影された投影画像上の位置座標としてもよい。また、地物名称のように、特定の地物と関連づけられた2次元オブジェクト212については、地物との関連付けを表すデータも併せて格納されている。
本実施例では、2次元オブジェクト212は、表示時に視差を与えるものとしているが、変形例として、予め決まった視差で立体視可能な構成とすることもできる。かかる場合には、2次元オブジェクト212としては、立体視可能な右眼用画像と左眼用画像の形式で格納しておいてもよい。また、地物データ211と2次元オブジェクト212とを重畳した状態の画像データを、地物データ211として格納しておくこともできる。
ネットワークデータ213は、道路をノード、リンクの集まりで表現したデータである。ノードとは、道路同士の交点や道路の端点に相当するデータである。リンクはノードとノードとを結ぶ線分であり、道路に相当するデータである。本実施例では、ネットワークデータ213を構成するノード、リンクの位置は、緯度経度および高さの3次元データで定められている。
送受信部201は、ネットワークNE2を介して端末300とのデータの送受信を行う。本実施例では、3次元地図を表示するための地図データおよびコマンドの送受信が主として行われる。また、送受信部201は、ネットワークNE1を介してデータ生成装置100との通信も行う。本実施例では、生成された地図データの授受が主として行われる。
データベース管理部202は、地図データベース210からのデータの読み出し、書き込みを制御する。
経路探索部203は、地図データベース210内のネットワークデータ213を用いて、経路探索を行う。経路探索には、ダイクストラ法などを用いることができる。上述の通り、経路探索によって得られた経路を表す矢印等も、2次元オブジェクトに該当する。
【0027】
データ生成装置100には、図示する機能ブロックが構成されている。本実施例では、これらの機能ブロックは、パーソナルコンピュータに、それぞれの機能を実現するソフトウェアをインストールすることによって構成したが、その一部または全部をハードウェア的に構成してもよい。
送受信部105は、ネットワークNE1を介してサーバ200とデータの授受を行う。
コマンド入力部101は、キーボード等を介してオペレータの指示を入力する。本実施例では、地図データを生成すべき領域の指定、平行投影パラメータの指定等が含まれる。平行投影パラメータとは、平行投影する際のピッチ角、ヨー角を言う。ピッチ角とは、鉛直方向からどれだけ傾けて投影するかを意味する。ヨー角とは、視差を与えるために左右眼で異なる方向に傾ける角度(
図1参照)を言う。
3D地図データベース104は、地図データを生成するために用いられる3次元モデルを格納するデータベースである。道路、建物などの地物については、3次元形状を表す電子データが格納されている。また、地図中に表示すべき文字、記号などの2次元オブジェクトも、格納されている。
平行投影部102は、3D地図データベース104に基づいて平行投影による描画を行って地物データを生成する。描画された投影図は、平行投影データ103として格納され、送受信部105を介してサーバ200の地図データベース210の地物データ211に格納される。投影パラメータ修正部106は、平行投影を行う際に、指定された平行投影パラメータをヨー角が正負逆の値となるよう修正し、右眼用/左眼用の平行投影パラメータを設定する。こうすることで、立体視するための右眼用画像、左眼用画像をそれぞれ生成することができる。
【0028】
図8は、地物データの配置を示す説明図である。
図8(a)には、平行投影前の3D地図データのメッシュを実線で、左眼用画像を破線で、右眼用画像を一点鎖線で重ねて示した。右下には、2つのメッシュについての拡大図を示した。本実施例において平行投影前の地図データは、拡大図の領域M1、M2に示す通り、矩形領域で整列されたメッシュごとに用意されている。そして、それぞれのメッシュは、平行投影すると、左眼用画像M1L、M2Lおよび右眼用画像M1R、M2Rのように、それぞれ平行四辺形の領域に投影される。本実施例では、このようにメッシュ単位で生成された平行四辺形の左眼用画像、右眼用画像は、
図8(a)に示すように、整列することなく格納している。従って、厳密に見れば、
図5(c)に示したように、平行四辺形の領域間で、数ピクセル程度のずれが存在することになる。
図8(b)は、変形例としての地物データの配置例である。この例では、メッシュごとに生成された平行四辺形の領域間で生じるずれを整合させて配置している。この結果、平行投影前は図中の上下方向に配列されていたメッシュM1、M2が、左眼用画像では領域M1L、M2Lのように左斜め方向に配列され、右眼用画像では領域M1R、M2Rのように右斜め方向に配列される。地物データは、このように領域間のずれを整合させた形式で用意しても良い。
【0029】
C.地物データ生成処理:
次に、地物データ211、即ち地物の3次元モデルを右眼用/左眼用に投影条件を変えてそれぞれ平行投影した2次元のポリゴンデータを生成するための処理について説明する。この処理は、データ生成装置100の平行投影部102が主として実行する処理であり、ハードウェア的には、データ生成装置100のCPUが実行する処理である。
図9は、地物データ生成処理のフローチャートである。
処理を開始すると、データ生成装置100は、処理対象となるメッシュの指定、および平行投影パラメータを入力する(ステップS10)。メッシュの指定方法は、メッシュ固有のインデックス、メッシュの座標などを用いることができる。地図上でオペレータが指定した点の座標値を含むメッシュをデータ生成装置100が解析し、これを処理対象のメッシュとして設定する方法をとってもよい。
平行投影パラメータは、ピッチ角と投影方位である。この段階では、視差、即ちヨー角は0度としておく。これらは、地物データを生成する度にオペレータが指定するものとしてもよいし、デフォルト値を用いるようにしてもよい。
投影方位は、いずれか単一の方位としてもよいが、本実施例では、方位を45度ずつずらした8方位について、それぞれ平行投影を行い、地物データを生成するものとした。このように多方位で地物データを用意しておけば、いずれかの投影方位で建物の陰になるなどの死角が生じた場合でも、他の投影方位を利用することにより、死角を回避した表示を実現できる利点がある。
平行投影パラメータは、ピッチ角、投影方位のいずれについても任意の設定が可能であり、単一の値とする方法、複数の値をパラメトリックに用いる方法など、種々の値をとり得る。
【0030】
次に、データ生成装置100は、対象メッシュおよびその周辺の所定範囲のメッシュについて、3D地図データベースを読み込む(ステップS20)。周辺の所定範囲のメッシュも読み込む理由は、次の通りである。
本実施例では、3D地図データベースに含まれる3次元モデルを鉛直方向に対して所定の投影角度だけ傾けた斜め方向から平行投影することによって地物データを生成する。このように斜め方向からの平行投影を行う場合、処理対象となるメッシュの周辺のメッシュに存在する地物の一部が投影されることもある。逆に、単に対象メッシュだけの3D地図データベースを利用して平行投影を行ったのでは、他のメッシュに存在する地物の投影図が欠けてしまい、適切な地物データを得ることができない。これを回避するため、本実施例では、対象メッシュの周辺のメッシュも読み込むこととしている。読み込む範囲は、任意に設定可能であるが、本実施例では、対象メッシュから2区画以内のメッシュに属する3D地図データを読み込むものとした。
【0031】
次に、データ生成装置100は、左眼用視差、右眼用視差、即ちそれぞれのヨー角を設定する(ステップS30)。先に
図1(b)で示したように、平行投影パラメータとしてヨー角を与えて平行投影するのである。視差を持たせるため、左眼用視差と右眼用視差は、正負逆方向とする。この処理は、投影パラメータ修正部106の処理に相当する。また、こうして設定された平行投影パラメータ、即ちピッチ角、ヨー角を用いてオフセット量OSTを算出する。オフセット量は、
図5(b)で示した通り、平行投影後の各メッシュに対応する平行四辺形領域間のずれを表す数値であり、後に説明する通り、左右眼画像内でのスクロール方向を決定するのに用いられる。
データ生成装置100は、こうして設定された左眼用視差を用いて平行投影を行うことにより左眼用画像を生成し(ステップS40)、右眼用視差を用いて平行投影を行うことにより右眼用画像を生成する(ステップS50)。それぞれ生成される画像は、平行投影によって地物を3次元的に表現した2次元画像データとなる。平行投影によって生成された左眼用/右眼用画像を、左眼用/右眼用平行投影データと呼ぶこともある。
データ生成装置100は、こうして得られた左右眼用画像から、それぞれ対象メッシュに相当する領域を切り出し(ステップS60)、オフセット量OSTとともに、左眼用画像データ、右眼用画像データからなる地物データとして格納する(ステップS70)。これらの画像データは、2次元のポリゴンデータとして格納するものとしたが、ラスタデータとして格納してもよい。また、左眼用/右眼用画像データの切出しおよび格納の際には、各ポリゴンに名称、位置、形状などの属性を併せて整備してもよい。
以上の処理を全投影方位、全メッシュについて実行することによって、データ生成装置100は、本実施例の地物データ211を整備することができる。
【0032】
D.地図表示処理:
D1.全体処理:
図10は、地図表示処理のフローチャートである。ここでは、ユーザから指定された地点、方位に従って、背景となる地図を立体視可能に表示するとともに、文字等の2次元オブジェクトをその手前に立体視可能に表示する処理の例を示す。この処理は、経路探索と併せて用いることにより、経路案内表示として利用することもできる。
地図表示処理は、端末300の主制御部304および表示制御部306が実行する処理であり、ハードウェア的には端末300のCPUが実行する処理である。
【0033】
この処理では、まず端末300は、ユーザから指定された表示地点、方位、範囲を入力する(ステップS100)。表示地点は、例えば、GPSで得られる現在位置を用いるものとしてもよい。
そして、端末300は、指定された表示位置等に従って、スクロール処理を実行する(ステップS200)。スクロール処理の内容は、後述するが、指定された表示地点が従前の地点から移動している場合、即ちユーザからスクロールが指定された場合に、左眼用画像、右眼用画像に適したスクロール方向を決定し、左眼用画像、右眼用画像のそれぞれにおける表示地点を設定する処理である。
【0034】
端末300は、スクロールの処理の結果に応じて、地図情報記憶部305から左右眼用平行投影データを読み込む(ステップS300)。地図情報記憶部305に蓄積されていない領域のデータが必要な場合には、端末300は、サーバ200から当該データをダウンロードする。
ここで、左右眼用平行投影データは、本実施例では、
図8(a)に示した通り、平行四辺形の各領域間でオフセット量OSTだけのずれが生じている。そこで、端末300は、ステップS300において、左右眼用平行投影データを読み込んだ場合には、このずれを解消する方向に、領域間でオフセット量OSTだけずらして配置する。図中に示すように、左眼用画像PL1、PL2の間ではオフセット量OSTだけのずれがあるため、領域PL2を左側にオフセット量OSTだけずらして領域PL1に整合させるのである。右眼用画像PR1、PR2の間もずれがあるため、領域PR2を右側にオフセット量OSTだけずらして領域PR1に整合させるのである。
【0035】
次に、端末300は、同じく地図情報記憶部305から、2次元オブジェクト(文字、記号(地図記号・通行規制標識を含む)、現在位置、経路表示等)のデータを読み込む(ステップS310)。2次元オブジェクトは、地図の機能等に基づき、必要なもののみを読み込むようにしてもよい。
2次元オブジェクトには、3次元空間内で表示位置が指定されているから、端末300は、読み込んだ2次元オブジェクトに対して座標変換処理を施し、さらに左眼用画像、右眼用画像のそれぞれについて2次元オブジェクトの位置を左右にずらすことで視差を与え、左右眼用の2次元オブジェクト画像を生成する(ステップS320)。
上述の座標変換は、平行投影パラメータとしてピッチ角、投影方位に基づき、3次元の位置情報を、y軸周りに投影方位(β度とする)だけ回転させた後、x軸周りにピッチ角(θ度とする)だけ回転させる座標変換行列を求め、2次元オブジェクトの位置に、この座標変換行列を作用させて行うことができる。
【0036】
2次元オブジェクトの左右眼用の視差は、表示深さの設定に基づいて行うことができる。表示深さは、全ての2次元オブジェクトで同一としてもよいし、2次元オブジェクトの種別に応じて変化させてもよい。例えば、文字、記号、経路表示の順に優先度を設定し、文字が最も手前に表示され、次に現在位置や通行規制を表す記号、経路表示の順に奥に表示されるようにしてもよい。また、2次元オブジェクト同士が重なる場合に、相互に表示深さを異ならせるようにしてもよい。
こうして表示深さを設定すると、2次元オブジェクトを設定された表示深さhに応じた3次元位置に設定し、視差(ヨー角)δによる回転行列を作用させて得られるx座標の変位が右眼用/左眼用の2次元オブジェクトのずらし量となる。このとき、ずらし量は表示深さhの関数となり、「ずらし量=h・tanδ」で与えられる。
【0037】
最後に、端末300は、左右眼用画像、即ち地物と2次元オブジェクトを重畳して表示し(ステップS330)、地図表示処理を終了する。こうして表示された右眼用画像を右眼で、左眼用画像を左眼で認識することにより、ユーザは背景の地図および2次元オブジェクトを立体視することができる。
左右眼用平行投影データは、既に平行投影された後の2次元のポリゴンデータに過ぎないから、ステップS501の処理においては、取得したデータに従ってポリゴンを描画するだけで投影処理を行うまでなく軽い負荷で立体視を実現することができる。
【0038】
D2.スクロール処理:
図11は、スクロール処理のフローチャートである。地図表示処理(
図10)のステップS200に相当する処理であり、端末300のスクロール設定部307が実行する処理に相当する。
この処理を開始すると、端末300は、スクロールベクトルを入力する(ステップS210)。スクロールベクトルとは、地図の移動方向、即ち従前の表示地点から、新たに指示された表示地点に向かうベクトルである。このスクロールベクトルは、立体視をしているユーザが、その立体視地図上で視認したい方向を指定することになるから、平行投影前の3次元のモデル内での移動方向に相当するものである。
【0039】
端末300は、次にスクロール方向を補正し、左右眼用のスクロールベクトルを設定する(ステップS220)。
図中にスクロール方向の補正方法を示した。図中右側に示す図において、例えば、3次元のモデル内で縦のv軸方向にスクロールが指定された場合を考えると、平行投影によってメッシュが平行四辺形に変化しているため、指定されたスクロールに対応するスクロール方向は、この平行四辺形の領域では、斜めの辺に沿う方向となる。つまり、v軸方向のスクロール方向を、補正角γだけ補正する必要がある。このγは、メッシュのv軸方向の距離VMと、オフセット量OSTとの比に基づいて求めることができる。即ち、tanγ=OST/VMである。補正角γは、平行投影パラメータ(ピッチ角、ヨー角)が決まれば一義的に定まる値であるから、オフセット量OSTと同様、予め算出しておいてもよい。
端末300は、左側の図に示すように、補正角γに基づいてスクロールベクトルVSを補正する。つまり、右眼画像用には、スクロールベクトルVSを時計回りに補正角γだけ回転させた方向のベクトルVSRがスクロール方向となり、左眼画像用には逆に補正角γだけ回転させた方向のベクトルVSLがスクロール方向となる。
このように平行投影の影響によってスクロールする方向は補正する必要があるが、v軸方向の進行距離は左右眼で整合させておく必要がある。従って、左右眼画像用のスクロールベクトルVSL、VSR、およびスクロールベクトルVSの先端が、u軸に平行な直線上に並ぶように、左右眼画像用のスクロールベクトルVSL、VSRの大きさは設定される。
【0040】
端末300は、以上の処理によって設定された左右眼画像用のスクロールベクトルVSL、VSRに基づいて、スクロール後の表示地点を左右眼画像のそれぞれについて設定し(ステップS230)、スクロール処理を終了する。
【0041】
E.効果:
以上で説明した本実施例の立体視地図表示システムによれば、平行投影によって立体視を実現することができる。平行投影では、立体視用の左右眼画像は、視点位置に関わらず予め全領域で生成しておくことができ、非常に軽い負荷で立体視を実現できる。
また、実施例では、スクロールが指示された場合に、左右眼画像で個別にスクロール方向を設定するため、平行投影によって元来のメッシュが平行四辺形に変形していることによる影響を回避し、立体視を維持した状態でのスクロールを実現することができる。
【0042】
F.変形例:
実施例では、地物データと2次元オブジェクトとを別々に用意し、2次元オブジェクトには、表示時に視差を与える方法を例示した。これに対し、2次元オブジェクトと地物データとを重畳した状態で左右眼画像を用意しておく態様をとってもよい。かかる方法による例を変形例として示す。
【0043】
図12は、変形例における文字画像の配置例を示す説明図である。上述のように、予め2次元オブジェクトを地物データに重畳しておく場合の課題について説明する。
図12(a)には、平行投影により2次元オブジェクトが受ける影響を示した。
図12(a)の左側に示すように、平行投影によって地図のメッシュは、平行四辺形の領域M1、M2に変形される。平行投影した時点では、図の右側に示すように、領域M1、M2の間にはオフセット量OSTのずれが生じた状態で格納されているが、地図表示処理の際に、このオフセット量は補正され(
図10のステップS300参照)、
図12(a)の左側に示すように整合した状態で表示される。
このような場合に、文字CHが図中のハッチングで示した部分のように領域M1、M2の境界部分に表示される場合を考える。文字CHは、予め領域M1、M2に画像として重畳されているものとする。このとき、文字CHは、オフセット量を補正した
図12(a)の左側に示すように、領域M1、M2の境界でずれがないように表示されるべきである。従って、オフセット量を補正する前の各領域M1、M2の地物データ(
図12(a)の右側の状態)においては、領域M1、M2の境界で、文字CH1、CH2がオフセット量OST相当だけずれた状態としておく必要がある。
即ち、
図12(b)に示すように、領域M1、M2を格納した状態で文字CHを描き、地物の画像データに重畳させてしまうと、
図12(a)のようにオフセット量を補正したときには、文字CHが境界間でずれてしまうことになる。
変形例では、このように境界付近での文字の表示位置にオフセット量を反映させつつ、地物の画像データと文字の画像とを重畳させた地物データを生成する。
【0044】
図13は、変形例における地物データ生成処理のフローチャートである。
3D地図データを用いて、地物を表す左眼用画像および右眼用画像を生成する処理については、実施例(
図9)のステップS10〜S50と同じである。次に、データ生成装置100は、地図中に表示すべき2次元オブジェクト(文字、記号)を読み込む(ステップS51)。ここでは、現在位置や経路案内表示のように、地図表示時に動的に移動する2次元オブジェクトではなく、予め地図データとして用意することができる2次元オブジェクトを対象とする。
そして、地物データ生成装置100は、2次元オブジェクトを座標変換し、左右眼用の2次元オブジェクト画像を生成する(ステップS52)。この座標変換は、2次元オブジェクトの表示位置を、平行投影パラメータに基づいて、左右眼画像内での表示位置に変換する処理である。座標変換には、視差を与えるために、左右眼画像で2次元オブジェクトの表示位置を左右にずらす処理も含まれる。
こうして左右眼画像それぞれについて2次元オブジェクト画像が生成されると、地物データ生成装置100は、左右眼画像を、オフセット量OSTを考慮して配置し、左右眼用の2次元オブジェクト画像を貼り付ける(ステップS53)。その上で、地物データ生成装置100は、左右眼用画像からそれぞれ対象メッシュに相当する領域を切り出して(ステップS60)、地物データおよびオフセット量OSTを格納する(ステップS70)。
ステップS53以降の処理によって、
図12(a)の右側に示すように、文字CHは、文字領域M1、M2の間でずらして配置されることになる。ただし、この処理を行う際に、文字CHの画像に対して、各領域用に分割し、ずらすなどの処理を行う必要はない。上述した通り、左右眼用画像は、各領域ごとに生成されるが、その方法としては、対象となるメッシュの周辺も含めて平行投影画像を生成し、対象メッシュに対応する領域M1、M2等を切り出す方法によって行う。従って、領域M2を生成している際には、
図12(a)の右側CH1の位置に、領域M2をはみ出す部分も含めて、文字の画像全体を配置すればよい。この中から、領域M2に相当する部分を切り出すことにより、複雑な画像処理を行うまでなく、文字CH1の部分のみを含む地物データが生成される。領域M1についても同様である。領域M1を生成する際には、文字CH2の位置に、文字の画像全体を配置した上で、領域M1に相当する部分を切り出せばよい。
【0045】
図14は、変形例における地物データ例を示す説明図である。
図14(a)には地図を表示する際のオフセット量分の補正を施す前の状態の地物データを示した。ここでは、領域は矩形状に表されている。かかる状態は、地物データ生成処理(
図13)の切り出し(ステップS60)において、平行四辺形ではなく矩形形状で切り出すことによって容易に実現できるものである。
図14(a)では、オフセット量分の補正を施していないため、境界BH、BVは一直線に並んでいる。ただし、境界BHをまたぐ文字列「虎ノ門35森ビル」、「智積院別院真福寺」は、境界BHの上下で左右にずれていることが分かる。これが、先に
図12(a)の右側に示した文字CH1、Ch2のずれに相当する状態である。
図14(b)には、オフセット量の補正を施した状態を示した。即ち、境界BHの上下方向で、縦方向の境界線BV1、BV2がずれている。このようにオフセット量の補正を施した結果、境界BHをまたぐ上記文字列のずれは修正され、ずれのない状態で表示されることになる。
【0046】
以上で説明した変形例によれば、実施例と同様、予め平行投影によって生成された左右眼画像を用いて軽い負荷で立体視を実現できるとともに、左右眼画像内に文字も含めて生成されているため、文字を表示するための処理負荷も軽減することができ、より一層、軽い処理負荷で立体視を実現できる。さらに、変形例では、予め表示時のオフセット量分の補正を踏まえて文字を配置しているため、表示時に、各領域の境界における文字のずれなく表示することが可能となる。
変形例において、現在位置や経路案内など、表示時に移動する2次元オブジェクトを更に含めるものとしてもよい。これらの2次元オブジェクトについては、実施例と同様、表示時に視差を与えることによって表示させることができる。
【0047】
以上、本発明の実施例について説明した。立体視地図表示システムは、必ずしも上述した実施例の全ての機能を備えている必要はなく、一部のみを実現するようにしてもよい。また、上述した内容に追加の機能を設けてもよい。
本発明は上述の実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。例えば、実施例においてハードウェア的に構成されている部分は、ソフトウェア的に構成することもでき、その逆も可能である。また、地図のみならず種々の立体視画像を対象とすることができる。さらに、立体視画像の出力は、ディスプレイへの表示に限らず、印刷によっても良い。