(57)【特許請求の範囲】
【請求項１】
仮想オブジェクトが配置されている仮想空間内の視点及び視線方向から決定される視野領域を見た様子を示す画像を表示する画像表示装置であって、
ユーザによる視点移動操作に応じて、前記視点の移動速度を決定する視点移動速度決定手段と、
前記視点移動速度決定手段により決定される前記移動速度で前記視点の位置を移動する視点移動手段と、
ユーザによるピッチ角変更操作に応じて、前記視点の現在位置から、前記視点から視線方向に向かう直線上に存在するピッチ角変更中心点を中心にピッチ角を変更し、ピッチ角変更後の前記視点の位置から前記ピッチ角変更中心点を向くよう前記視線方向を変更するピッチ角変更手段と、
前記視点移動手段による前記視点の移動の際に、前記ピッチ角変更中心点を示す位置と前記仮想オブジェクトを示す位置との距離を測定し、当該距離が所与の範囲を超える場合に、当該距離が前記範囲におさまるよう前記ピッチ角変更中心点の位置を修正するピッチ角変更中心点位置修正手段と、
を含むことを特徴とする画像表示装置。
【請求項２】
前記視点移動速度決定手段は、ユーザによる視点移動操作に応じて、前記視野領域に含まれる前記仮想オブジェクトを示す位置と前記視点を示す位置との関係に基づく距離である仮想オブジェクト視点間距離に基づいて、前記視点の移動速度を決定する、
ことを特徴とする請求項１に記載の画像表示装置。
【請求項３】
前記視点移動速度決定手段が、前記仮想オブジェクト視点間距離の値が増加するほど前記移動速度の値が増加するよう前記移動速度を決定する、
ことを特徴とする請求項２に記載の画像表示装置。
【請求項４】
前記視点移動手段による前記視点の移動の際に、前記視点を示す位置と前記仮想オブジェクトを示す位置との距離を測定し、当該距離が所与の距離より短い場合は、前記仮想オブジェクトから離れる方向に前記視点の位置を修正する視点位置修正手段、をさらに含む、
ことを特徴とする請求項１から３のいずれか一項に記載の画像表示装置。
【請求項５】
仮想オブジェクトが配置されている仮想空間内の視点から視野領域を見た様子を示す画像を表示する画像表示装置の制御方法であって、
前記画像表示装置に含まれる視点移動速度決定手段が、ユーザによる視点移動操作に応じて、前記視点の移動速度を決定する視点移動速度決定ステップと、
前記画像表示装置に含まれる視点移動手段が、前記視点移動速度決定ステップにより決定される前記移動速度で前記視点の位置を移動する視点移動ステップと、
前記画像表示装置に含まれるピッチ角変更手段が、ユーザによるピッチ角変更操作に応じて、前記視点の現在位置から、前記視点から視線方向に向かう直線上に存在するピッチ角変更中心点を中心にピッチ角を変更し、ピッチ角変更後の前記視点の位置から前記ピッチ角変更中心点を向くよう前記視線方向を変更するピッチ角変更ステップと、
前記画像表示装置に含まれるピッチ角変更中心点位置修正手段が、前記視点移動ステップによる前記視点の移動の際に、前記ピッチ角変更中心点を示す位置と前記仮想オブジェクトを示す位置との距離を測定し、当該距離が所与の範囲を超える場合に、当該距離が前記範囲におさまるよう前記ピッチ角変更中心点の位置を修正するピッチ角変更中心点位置修正ステップと、
を含むことを特徴とする画像表示装置の制御方法。
【請求項６】
仮想オブジェクトが配置されている仮想空間内の視点から視野領域を見た様子を示す画像を表示する画像表示装置としてコンピュータを機能させるためのプログラムであって、
ユーザによる視点移動操作に応じて、前記視点の移動速度を決定する視点移動速度決定手段、
前記視点移動速度決定手段により決定される前記移動速度で前記視点の位置を移動する視点移動手段、
ユーザによるピッチ角変更操作に応じて、前記視点の現在位置から、前記視点から視線方向に向かう直線上に存在するピッチ角変更中心点を中心にピッチ角を変更し、ピッチ角変更後の前記視点の位置から前記ピッチ角変更中心点を向くよう前記視線方向を変更するピッチ角変更手段、
前記視点移動手段による前記視点の移動の際に、前記ピッチ角変更中心点を示す位置と前記仮想オブジェクトを示す位置との距離を測定し、当該距離が所与の範囲を超える場合に、当該距離が前記範囲におさまるよう前記ピッチ角変更中心点の位置を修正するピッチ角変更中心点位置修正手段、
として前記コンピュータを機能させるためのプログラム。
【請求項７】
請求項６に記載のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像表示装置、画像表示装置の制御方法及びプログラムに関する。
【背景技術】
【０００２】
仮想オブジェクトが配置されている仮想空間内の視点及び視線方向から決定される視野領域を見た様子を示す画像をモニタの画面などに表示する画像表示装置が知られている。例えば、特許文献１には、物体の３次元画像を簡易かつ精確に表示することができる画像表示装置に関する技術が開示されている。このような画像表示装置において、仮想空間内に配置されている仮想オブジェクトには、具体的には、例えば、航空写真や衛星写真のテクスチャが張られている複数のポリゴンによって表現される地球や、三次元モデリングを行うことによって、複数のポリゴンによって表現される山脈などが挙げられる。
【特許文献１】米国特許第５９１２６７１号明細書
【０００３】
そして、このような画像表示装置では、ユーザは操作によって仮想空間内の視点を移動させることができ、あたかも空から地球を見ているかのような臨場感あふれる体験をすることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、以上のような画像表示装置では、ユーザの操作によって仮想空間内の視点が移動する際に、仮想オブジェクトと視点との距離に関係なく視点の移動速度が一定になるよう制御されているものがある。
【０００５】
このような状況では、例えば、山脈を示す仮想オブジェクトが仮想空間内に配置されている場合のように、仮想オブジェクトの表面に凹凸がある場合は、例えば、ユーザの操作によって仮想空間の表面に沿って視点を移動する際に、視点と仮想オブジェクトとの距離が、視界の流れ方、すなわち、ディスプレイなどの表示装置の画面に表示されている画像のスクロールの速さに影響を与えていた。具体的には、例えば、海抜が低い場所では、視界がゆっくり流れ、海抜が高い場所では、視界が速く流れる、などというようなことが起こっていた。
【０００６】
そのため、例えば、ユーザは、自らが興味を引く場所に視点を移動させたい場合などにおいて、的確な視点の移動操作をすることが難しかった。
【０００７】
本発明は上記課題に鑑みてなされたものであって、仮想空間内においてユーザがより的確な視点の移動操作を行うことができる画像表示装置、画像表示装置の制御方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明に係る画像表示装置は、仮想オブジェクトが配置されている仮想空間内の視点及び視線方向から決定される視野領域を見た様子を示す画像を表示する画像表示装置であって、ユーザによる視点移動操作に応じて、前記視野領域に含まれる前記仮想オブジェクトを示す位置と前記視点を示す位置との関係に基づく距離である仮想オブジェクト視点間距離に基づいて、前記視点の移動速度を決定する視点移動速度決定手段と、前記視点移動速度決定手段により決定される前記移動速度で前記視点の位置を移動する視点移動手段と、を含むことを特徴とする。
【０００９】
また、本発明に係る画像表示装置の制御方法は、仮想オブジェクトが配置されている仮想空間内の視点から視野領域を見た様子を示す画像を表示する画像表示装置の制御方法であって、ユーザによる視点移動操作に応じて、前記視野領域に含まれる前記仮想オブジェクトを示す位置と前記視点を示す位置との関係に基づく距離である仮想オブジェクト視点間距離に基づいて、前記視点の移動速度を決定する視点移動速度決定ステップと、前記視点移動速度決定ステップにより決定される前記移動速度で前記視点の位置を移動する視点移動ステップと、を含むことを特徴とする。
【００１０】
また、本発明に係るプログラムは、仮想オブジェクトが配置されている仮想空間内の視点から視野領域を見た様子を示す画像を表示する画像表示装置としてコンピュータを機能させるためのプログラムであって、ユーザによる視点移動操作に応じて、前記視野領域に含まれる前記仮想オブジェクトを示す位置と前記視点を示す位置との関係に基づく距離である仮想オブジェクト視点間距離に基づいて、前記視点の移動速度を決定する視点移動速度決定手段、前記視点移動速度決定手段により決定される前記移動速度で前記視点の位置を移動する視点移動手段、として前記コンピュータを機能させることを特徴とする。
【００１１】
また、上記のプログラムはコンピュータ読み取り可能な情報記憶媒体に格納することもできる。
【００１２】
本発明によると、仮想オブジェクト視点間距離に応じた移動速度で視点の位置が移動するので、仮想空間内においてユーザがより的確な視点の移動操作を行うことができる。
【００１３】
本発明の一態様では、前記視点移動速度決定手段が、前記仮想オブジェクト視点間距離の値が増加するほど前記移動速度の値が増加するよう前記移動速度を決定することを特徴とする。こうすれば、仮想オブジェクト視点間距離の長さが短くなるほど、視界が流れる速度が遅くなるため、ユーザがより的確な視点の移動操作を行うことができる。
【００１４】
また、本発明の一態様では、前記視点移動手段による前記視点の移動の際に、前記視点を示す位置と前記仮想オブジェクトを示す位置との距離を測定し、当該距離が所与の距離より短い場合は、前記仮想オブジェクトから離れる方向に前記視点の位置を修正する視点位置修正手段、をさらに含むことを特徴とする。こうすれば、視点が仮想オブジェクトと接触しそうな状況の際に、接触を回避するよう視点が移動されるようにすることができる。
【００１５】
また、本発明の一態様では、ユーザによるピッチ角変更操作に応じて、前記視点の現在位置から、前記視点から視線方向に向かう直線上に存在するピッチ角変更中心点を中心にピッチ角を変更し、ピッチ角変更後の前記視点の位置から前記ピッチ角変更中心点を向くよう前記視線方向を変更するピッチ角変更手段と、前記視点移動手段による前記視点の移動の際に、前記ピッチ角変更中心点を示す位置と前記仮想オブジェクトを示す位置との距離を測定し、当該距離が所与の範囲を超える場合に、当該距離が前記範囲におさまるよう前記ピッチ角変更中心点の位置を修正するピッチ角変更中心点位置修正手段と、をさらに含むことを特徴とする。こうすれば、ユーザが視点のピッチ角変更操作を実行することができ、ピッチ角変更中心点と仮想オブジェクトとの距離を所与の範囲内におさめることができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の一実施形態について図面に基づき詳細に説明する。
【００１７】
図１は、本実施形態に係るエンタテインメントシステム（画像表示装置）のハードウェア構成を示す図である。図１に示すように、エンタテインメントシステム１０は、ＭＰＵ（Micro Processing Unit）１１と、メインメモリ２０と、画像処理部２４と、モニタ２６と、入出力処理部２８と、音声処理部３０と、スピーカ３２と、光ディスク読み取り部３４と、光ディスク３６と、ハードディスク３８と、インタフェース（Ｉ／Ｆ）４０，４４と、コントローラ４２と、カメラユニット４６と、ネットワークインタフェース４８と、を含んで構成されるコンピュータシステムである。
【００１８】
図２は、ＭＰＵ１１の構成を示す図である。図２に示すように、ＭＰＵ１１は、メインプロセッサ１２と、サブプロセッサ１４ａ，１４ｂ，１４ｃ，１４ｄ，１４ｅ，１４ｆ，１４ｇ，１４ｈと、バス１６と、メモリコントローラ１８と、インタフェース（Ｉ／Ｆ）２２と、を含んで構成される。
【００１９】
メインプロセッサ１２は、図示しないＲＯＭ（Read Only Memory）に記憶されるオペレーティングシステム、例えばＤＶＤ（Digital Versatile Disk）−ＲＯＭ等の光ディスク３６から読み出されるプログラム及びデータや、通信ネットワークを介して供給されるプログラム及びデータ等に基づいて、各種情報処理を行ったり、サブプロセッサ１４ａ乃至１４ｈに対する制御を行ったりする。
【００２０】
サブプロセッサ１４ａ乃至１４ｈは、メインプロセッサ１２からの指示に従って、各種情報処理を行ったり、エンタテインメントシステム１０の各部を、例えばＤＶＤ−ＲＯＭ等の光ディスク３６から読み出されるプログラム及びデータや、通信ネットワークを介して供給されるプログラム及びデータ等に基づいて制御したりする。
【００２１】
バス１６は、アドレス及びデータをエンタテインメントシステム１０の各部でやり取りするためのものである。メインプロセッサ１２、サブプロセッサ１４ａ乃至１４ｈ、メモリコントローラ１８、インタフェース２２は、バス１６を介して相互にデータ授受可能に接続される。
【００２２】
メモリコントローラ１８は、メインプロセッサ１２及びサブプロセッサ１４ａ乃至１４ｈからの指示に従って、メインメモリ２０へのアクセスを行う。メインメモリ２０には、光ディスク３６やハードディスク３８から読み出されたプログラム及びデータや、通信ネットワークを介して供給されたプログラム及びデータが必要に応じて書き込まれる。メインメモリ２０はメインプロセッサ１２やサブプロセッサ１４ａ乃至１４ｈの作業用としても用いられる。
【００２３】
インタフェース２２には画像処理部２４及び入出力処理部２８が接続される。メインプロセッサ１２及びサブプロセッサ１４ａ乃至１４ｈと、画像処理部２４又は入出力処理部２８と、の間のデータ授受はインタフェース２２を介して行われる。
【００２４】
画像処理部２４は、ＧＰＵ（Graphical Processing Unit）とフレームバッファとを含んで構成される。ＧＰＵは、メインプロセッサ１２やサブプロセッサ１４ａ乃至１４ｈから供給される画像データに基づいてフレームバッファに各種画面を描画する。フレームバッファに形成された画面は、所定のタイミングでビデオ信号に変換されてモニタ２６に出力される。なお、モニタ２６には例えば家庭用テレビ受像機が用いられる。
【００２５】
入出力処理部２８には、音声処理部３０、光ディスク読み取り部３４、ハードディスク３８、インタフェース４０,４４が接続される。入出力処理部２８は、メインプロセッサ１２及びサブプロセッサ１４ａ乃至１４ｈと、音声処理部３０、光ディスク読み取り部３４、ハードディスク３８、インタフェース４０,４４、ネットワークインタフェース４８と、の間のデータ授受を制御する。
【００２６】
音声処理部３０は、ＳＰＵ（Sound Processing Unit）とサウンドバッファとを含んで構成される。サウンドバッファには、光ディスク３６やハードディスク３８から読み出されたゲーム音楽、ゲーム効果音やメッセージなどの各種音声データが記憶される。ＳＰＵは、これらの各種音声データを再生してスピーカ３２から出力させる。なお、スピーカ３２には例えば家庭用テレビ受像機の内蔵スピーカが用いられる。
【００２７】
光ディスク読み取り部３４は、メインプロセッサ１２及びサブプロセッサ１４ａ乃至１４ｈからの指示に従って、光ディスク３６に記憶されたプログラムやデータを読み取る。なお、エンタテインメントシステム１０は、光ディスク３６以外の他のコンピュータ読み取り可能な情報記憶媒体に記憶されたプログラムやデータを読み取り可能に構成してもよい。
【００２８】
光ディスク３６は例えばＤＶＤ−ＲＯＭ等の一般的な光ディスク（コンピュータ読み取り可能な情報記憶媒体）である。また、ハードディスク３８は一般的なハードディスク装置である。光ディスク３６やハードディスク３８には各種プログラムやデータがコンピュータ読み取り可能に記憶される。
【００２９】
インタフェース（Ｉ／Ｆ）４０，４４は、コントローラ４２やカメラユニット４６等の各種周辺機器を接続するためのインタフェースである。このようなインタフェースとしては、例えばＵＳＢ（Universal Serial Bus）インタフェースが用いられる。
【００３０】
コントローラ４２は汎用操作入力手段であり、ユーザが各種操作（例えばゲーム操作）を入力するために用いられる。入出力処理部２８は、所定時間（例えば１／６０秒）ごとにコントローラ４２の各部の状態をスキャンし、その結果を表す操作状態をメインプロセッサ１２やサブプロセッサ１４ａ乃至１４ｈに供給する。メインプロセッサ１２やサブプロセッサ１４ａ乃至１４ｈは、ユーザによって行われた操作の内容をその操作状態に基づいて判断する。なお、エンタテインメントシステム１０は複数のコントローラ４２を接続可能に構成されており、各コントローラ４２から入力される操作状態に基づいて、メインプロセッサ１２やサブプロセッサ１４ａ乃至１４ｈが各種処理を実行するようになっている。
【００３１】
カメラユニット４６は、例えば公知のデジタルカメラを含んで構成され、白黒、グレイスケール又はカラーの撮影画像を所定時間（例えば１／６０秒）ごとに入力する。本実施の形態におけるカメラユニット４６は、撮影画像をＪＰＥＧ（Joint Photographic Experts Group）形式の画像データとして入力するようになっている。また、カメラユニット４６は、例えばレンズをユーザに向けた状態でモニタ２６の上に設置され、ケーブルを介してインタフェース４４に接続される。ネットワークインタフェース４８は入出力処理部２８とネットワークとに接続されており、エンタテインメントシステム１０がネットワークを介して他のエンタテインメントシステム１０とデータ通信するのを中継するようになっている。
【００３２】
図３Ａは、コントローラ４２の一例を示す斜視図である。図３Ｂは、コントローラ４２の一例を示す上側面図である。図３Ａに示すように、コントローラ４２は、コントローラケーブル６２によってエンタテインメントシステム１０に接続され、表面４２ａの左側に方向ボタン群６０及び左操作スティック５４が設けられ、右側にボタン群５８及び右操作スティック５６が設けられている。また、図３Ｂに示すように、コントローラ４２の奥側側面には、表面４２ａ側左右に第１の左ボタン５０Ｌ、第１の右ボタン５０Ｒがそれぞれ設けられており、裏面側左右に第２の左ボタン５２Ｌ、第２の右ボタン５２Ｒがそれぞれ設けられている。そして、コントローラ４２の筐体左右をユーザが両手で持つと、左手親指が方向ボタン群６０及び左操作スティック５４に位置し、右手親指がボタン群５８及び右操作スティック５６に位置するようになっており、右手人指し指又は中指のいずれか少なくとも一方が、第１の右ボタン５０Ｒ又は第２の右ボタン５２Ｒに位置し、左手人指し指又は中指のいずれか少なくとも一方が、第１の左ボタン５０Ｌ又は第２の左ボタン５２Ｌに位置するようになっている。
【００３３】
方向ボタン群６０、ボタン群５８、第１の左ボタン５０Ｌ、第１の右ボタン５０Ｒ、第２の左ボタン５２Ｌ、第２の右ボタン５２Ｒは感圧ボタンとして構成されており、圧力センサを備えている。そして、これらのボタンをユーザが押下すると、その押圧力に応じて０〜２５５の値を有する２５６段階のディジタル値がエンタテインメントシステム１０に入力されるようになっている。つまり、エンタテインメントシステム１０では、コントローラ４２から入力されるディジタル値が０の場合にはそのボタンが押下されておらず、２５５の場合には最大押圧力でボタンが押下されていること等を該ディジタル値から判断できるようになっている。
【００３４】
左操作スティック５４及び右操作スティック５６は、コントローラ４２の筐体表面に直立したスティック状の操作部材であり、この直立状態から全方位に所定角度だけ傾倒自在となっている。図３Ａに示すように、コントローラ４２の筐体長手方向をＸ軸方向（図３Ａにおいて右方向を正方向とする。）とし、このＸ軸方向に直交する筐体奥行き方向をＹ軸方向（図３Ａにおいて手前から奥に向かう方向を正方向とする。）とすると、左操作スティック５４の姿勢（操作状態）は、Ｘ軸方向及びＹ軸方向の傾き（姿勢データ（Ｘ，Ｙ））として、それぞれ０〜２５５のディジタル値がエンタテインメントシステム１０に入力されるようになっている。具体的には、Ｘ＝１２７やＸ＝１２８付近は、左操作スティック５４がＸ軸方向に傾いていないことを示す。また、Ｘ＝２５５は、左操作スティック５４がＸ軸の正方向（図３Ａにおいて右方向）に限界まで倒れていることを示す。さらに、Ｘ＝０は、左操作スティック５４がＸ軸の負方向（図３Ａにおいて左方向）に限界まで倒れていることを示す。Ｙ軸方向についても同様である。また、右操作スティック５６についても左操作スティック５４の場合と同様である。こうして、エンタテインメントシステム１０では、左操作スティック５４及び右操作スティック５６の現在の傾き状態（姿勢）を把握できるようになっている。また、左操作スティック５４及び右操作スティック５６は、方向ボタン群６０やボタン群５８等と同様の感圧ボタンとしても構成されており、スティックの軸方向に押下できるようになっている。
【００３５】
また、コントローラ４２は、内蔵振動子（バイブレータ）を備えている。そして、ＭＰＵ１１からの指示によって、このバイブレータは振動する。
【００３６】
以下、以上のハードウェア構成を有するエンタテインメントシステム１０を、画像表示装置として構成する一実施形態について説明する。
【００３７】
まず、本実施形態の概要について説明する。本実施形態においては、エンタテインメントシステム１０は、図４Ａ〜図４Ｃに示すように、少なくとも１つの仮想オブジェクトが配置されている仮想空間６４内の視点６６（６６ａ〜６６ｊ）から、視線方向６８（６８ａ〜６８ｊ）を見た様子（視点６６の位置と視線方向６８から決定される視野領域７０を見た様子）を示す画像をモニタ２６の画面に表示する。本実施形態においては、初期状態では、視点６６ａから視線方向６８ａを見た様子を示す画像がモニタ２６の画面に表示される。そして、エンタテインメントシステム１０のユーザはコントローラ４２を操作することによって、視点６６の位置や視線方向６８を自由に移動することができる。
【００３８】
そして、本実施形態においては、図４Ａに示すように、仮想空間６４内には、地球（地表面）が表現された仮想オブジェクト（仮想地球オブジェクト７２）が配置されている。そして、図４Ｂは、図４Ａに示す仮想地球オブジェクト７２に表現されている地表面の一部である第１領域７２ａを示しており、図４Ｃは、図４Ａに示す仮想地球オブジェクト７２に表現されている地表面の一部である第２領域７２ｂを示している。図４Ａ〜図４Ｃに示すように、仮想地球オブジェクト７２の表面には山７４や、丘７６（７６ａ〜７６ｎ）や、崖７８が立体的に表現されている。
【００３９】
図５Ａは視点６６ａから視線方向６８ａを見た様子を示す、モニタ２６の画面に表示される画像の一例を示す図である。図５Ａに示すように、本実施形態では、仮想地球オブジェクト７２を示す画像の右側の一部が、陰になっており、この部分に太陽の光があたっていないことが表現されている。そして、全体的には気象衛星から見た雲の様子のような風景が表現されている。
【００４０】
図５Ｂは視点６６ｂから視線方向６８ｂを見た様子を示す、モニタ２６の画面に表示される画像の一例を示す図である。図５Ｂに示すように、エンタテインメントシステム１０のユーザがコントローラ４２を操作して、視点６６の位置が仮想地球オブジェクト７２に近づいている。ここで、視点６６の位置が変更される途中で、仮想地球オブジェクト７２を示す画像として日本を中心とした地図を示す画像に更新される。そして、本実施形態では、気象衛星から見た雲の様子のような風景が表現されている画像が、日本を中心とした地図を示す画像に更新される際にコントローラ４２が備えるバイブレータが振動する。
【００４１】
図５Ｃは視点６６ｃから視線方向６８ｃを見た様子を示す、モニタ２６の画面に表示される画像の一例を示す図である。図５Ｃに示すように、エンタテインメントシステム１０のユーザがコントローラ４２を操作して、視点６６の位置がより仮想地球オブジェクト７２に近づいている。ここで、視点６６の位置が変更される途中で、仮想地球オブジェクト７２を示す画像がより解像度の高い画像に更新される。また、本実施形態においては、視点６６が仮想地球オブジェクト７２に近づくにつれ、視点６６の移動速度が遅くなっている。すなわち、視点６６の位置が、視点６６ａから視点６６ｃに移動するにつれ、視点６６の移動速度が遅くなっている。
【００４２】
図５Ｄは視点６６ｄから視線方向６８ｄを見た様子を示す、モニタ２６の画面に表示される画像の一例を示す図である。図５Ｄに示すように、エンタテインメントシステム１０のユーザがコントローラ４２を操作して、視点６６の位置がより仮想地球オブジェクト７２に近づいていて、仮想地球オブジェクト７２の地表面上に立体的に表現されている山７４を示す画像がモニタ２６の画面に表示されている。
【００４３】
図５Ｅは視点６６ｅから視線方向６８ｅを見た様子を示す、モニタ２６の画面に表示される画像の一例を示す図である。図５Ｅに示すように、エンタテインメントシステム１０のユーザがコントローラ４２を操作して、ピッチ角変更中心点８０を中心にピッチ角θが変更されている（図４Ｂ参照）。ここで、ピッチ角θとは、ピッチ角変更中心点８０と視点６６とを通る直線と、ピッチ角変更中心点８０を通る、仮想オブジェクト（本実施形態では、仮想地球オブジェクト７２）を示す領域に対して垂直な直線と、がなす角である。ここで、ピッチ角変更中心点８０と視点６６との距離をピッチ角変更半径ｒと呼ぶ。このとき、モニタ２６の上方には、仮想地球オブジェクト７２の輪郭、すなわち、地平線Ｂ１を示す画像が表示されている。なお、ピッチ角変更中心点８０の詳細については後述する。
【００４４】
図５Ｆは視点６６ｆから視線方向６８ｆを見た様子を示す、モニタ２６の画面に表示される画像の一例を示す図である。図５Ｆに示すように、エンタテインメントシステム１０のユーザがコントローラ４２を操作して、ピッチ角変更中心点８０を中心にさらにピッチ角θが変更されている。このとき、モニタ２６の中央付近には、地平線Ｂ１を示す画像が表示されている。
【００４５】
ここで、ユーザがさらに、ピッチ角変更中心点８０を中心にさらにピッチ角θを変更しようとしても、本実施形態においては、ピッチ角θが変更されないようになっている。このようにして、仮想地球オブジェクト７２の画像がモニタ２６の画面にまったく表示されなくなってしまうことや、図１８に示すように、仮想地球オブジェクト７２の画像がモニタ２６の画面にほとんど表示されなくなってしまうことを防ぐことができるようになっている。
【００４６】
そして、ピッチ角変更中心点８０が、仮想地球オブジェクト７２の表面から離れた場所に設けられているため、図５Ｄ〜図５Ｆに示すように、ピッチ角変更中心点８０を中心にピッチ角θが変更されるにつれて、山７４の頂上７４ａを示す画像がモニタ２６の画面に表示される位置が下がるようになっている。このようにすることによって、山７４の頂上７４ａよりも奥の画像が、ユーザに見えやすくなっている。
【００４７】
図５Ｇは視点６６ｇから視線方向６８ｇを見た様子を示す、モニタ２６の画面に表示される画像の一例を示す図である。図５Ｈは視点６６ｈから視線方向６８ｈを見た様子を示す、モニタ２６の画面に表示される画像の一例を示す図である。図５Ｉは視点６６ｉから視線方向６８ｉを見た様子を示す、モニタ２６の画面に表示される画像の一例を示す図である。そして、図５Ｊは視点６６ｊから視線方向６８ｊを見た様子を示す、モニタ２６の画面に表示される画像の一例を示す図である。図５Ｇ〜図５Ｊに示すように、ここでは、丘７６を示す画像がモニタ２６の画面に表示されている。このとき、ユーザは、仮想地球オブジェクト７２の地表面に沿って右方向に視点６６が移動するようコントローラ４２に対して視点移動操作を行っている。その結果、視点６６が、視点６６ｇの位置から、視点６６ｈの位置、視点６６ｉの位置を経由して、視点６６ｊの位置まで移動している。視点６６が視点６６ｇの位置から視点６６ｈの位置に移動する際に、視点６６が上がっている。そして、視点６６が視点６６ｈの位置から視点６６ｉの位置に移動する際に、視点６６が下がっている。そして、視点６６が視点６６ｉの位置から視点６６ｊの位置に移動する際に、視点６６がとても上がっている。このようにして、エンタテインメントシステム１０のユーザは、仮想地球オブジェクト７２の地表面に沿って移動しているような感覚を体験することができる。
【００４８】
次に、本実施形態に係るエンタテインメントシステム１０で実現される機能について、図６に示す機能ブロック図と、図７に示す、本実施形態に係る仮想地球オブジェクト７２と視点６６の位置及び視線方向６８との関係の一例を説明する説明図を参照しながら説明する。
【００４９】
図６に示すように、この実施形態に係るエンタテインメントシステム１０は、機能的には、仮想オブジェクトデータ記憶部８２、仮想オブジェクトデータ取得部８４、仮想空間表示部８６、視点データ記憶部８８、注視点位置算出部９０、ピッチ角変更中心点位置算出部９２、基準距離算出部９４、基準距離データ記憶部９６、視点移動速度決定部９８、視点移動速度データ記憶部１００、許容範囲算出部１０２、操作状態取得部１０４、操作状態記憶部１０６、操作状態変化判断部１０８、視点移動部１１０、ピッチ角変更中心点移動部１１２、ピッチ角変更部１１４、相対ピッチ角データ変更部１１６、ピッチ角算出部１１８、視点位置修正部１２０、ピッチ角変更中心点位置修正部１２２を含むものとして機能する。なお、エンタテインメントシステム１０がこれらの要素をすべて備えている必要はない。
【００５０】
仮想オブジェクトデータ記憶部８２は、メインメモリ２０やハードディスク３８を主として実現される。仮想オブジェクトデータ記憶部８２は、仮想オブジェクトに関するポリゴンデータやテクスチャデータなどの仮想オブジェクトデータを記憶する。本実施形態においては、具体的には、例えば、仮想オブジェクトデータ記憶部８２は、仮想地球オブジェクト７２の地表面が表現された地表面データ１２４を記憶する（図８参照）。図８は、本実施形態に係る地表面データ１２４のデータ構造の一例を示す図である。地表面データ１２４は、基準面データ１２６と地形面データ１２８とを含んでいる。基準面データ１２６は、仮想地球オブジェクト７２の基準面１３０（例えば、海面）を表す複数のポリゴンの仮想空間６４内における位置を示すポリゴンデータである。本実施形態においては、基準面１３０の基本的な形状は球形である。そして、地形面データ１２８は、仮想地球オブジェクト７２の表面に表現される山７４や丘７６や崖７８といった地形の表面（地形面１３２）を表す複数のポリゴンの仮想空間６４内における位置を示すポリゴンデータと、ポリゴンデータが示す各ポリゴンに対応付けられる、それぞれのポリゴンに貼り付けられるテクスチャを示すテクスチャデータとを含んでいる。なお、基準面データ１２６や地形面データ１２４は、緯度及び経度の組み合わせと、仮想空間６４内における位置との対応関係を示すデータを含んでいてもよい。
【００５１】
また、仮想オブジェクトデータ記憶部８２は、精度が異なる複数の基準面データ１２６や地形面データ１２８を段階的に管理して記憶するようにしても構わない。また、仮想オブジェクトデータ記憶部８２は、後述する仮想オブジェクトデータ取得部８４が取得するポリゴンデータやテクスチャデータを記憶するようにしても構わない。
【００５２】
仮想オブジェクトデータ取得部８４は、ＭＰＵ１１と、入出力処理部２８と、ネットワークインタフェース４８とを主として実現される。仮想オブジェクトデータ取得部８４は、ネットワーク上のサーバなどの情報処理装置から、仮想オブジェクトデータを取得する。
【００５３】
本実施形態においては、エンタテインメントシステム１０は、エンタテインメントシステム１０は、ネットワーク上のデータ提供サーバ（図示せず）とネットワークインタフェース４８を経由して通信できるようになっている。そして、仮想オブジェクトデータ取得部８４は、視点６６の位置及び視線方向６８と仮想地球オブジェクト７２との位置関係を示すデータをデータ提供サーバに送信する。すると、データ提供サーバは、仮想空間６４に配置すべき地表面データ１２４を仮想オブジェクトデータ取得部８４に送信する。仮想オブジェクトデータ取得部８４は、データ提供サーバから送信された地表面データ１２４を取得する。具体的には、例えば、仮想オブジェクトデータ取得部８４は、視点６６の位置に基づいて、そのときの仮想オブジェクトとの距離に応じた大きさのポリゴンデータ、及び、各ポリゴンに貼られるべきテクスチャデータをデータ提供サーバから取得する。
【００５４】
仮想空間表示部８６は、ＭＰＵ１１と、画像処理部２４と、モニタ２６と、を主として実現される。仮想空間表示部８６は、仮想空間６４内の視点６６から視線方向６８を見た様子（視点６６の位置と視線方向６８から決定される視野領域７０を見た様子）を示す画像をモニタ２６の画面に表示する。具体的には、仮想空間表示部８６は、視点６６の位置と視線方向６８とから決定される視野領域７０と、視野領域７０内の仮想オブジェクトについての仮想オブジェクトデータに含まれるポリゴンデータが示す各ポリゴンの頂点の座標や、各ポリゴンに貼り付けられるテクスチャを示すテクスチャデータなどに基づく画像がモニタ２６の画面に表示される。本実施形態では、具体的には、例えば、視野領域７０内の仮想地球オブジェクト７２についての地形面データ１２８に含まれるポリゴンデータが示す各ポリゴンの頂点の座標や、各ポリゴンに貼り付けられるテクスチャを示すテクスチャデータなどに基づく画像がモニタ２６の画面に表示される。
【００５５】
ここで、仮想空間表示部８６は、視点６６と仮想オブジェクト（例えば、仮想地球オブジェクト７２）との位置関係（例えば、距離）に応じて、モニタ２６の画面に表示されるべき画像に対応する地形面データ１２８を選択するようにしても構わない。本実施形態においては、視点６６と仮想地球オブジェクト７２との距離が長い場合には、仮想空間表示部８６が、仮想オブジェクトデータ記憶部８２に予め記憶されている、衛星から見た雲の様子を示すテクスチャデータに基づく画像をモニタ２６の画面に表示し、視点６６が移動して、視点６６と仮想地球オブジェクト７２との距離が短くなった際に、日本を中心とした地図を示すテクスチャデータに基づく画像をモニタ２６の画面に表示するようにしてもよい（図５Ａ及び図５Ｂ参照）。なお、このとき、視点６６が移動する際に、仮想オブジェクトデータ取得部８４が、日本を中心とした地図を示すテクスチャデータに基づく画像を取得するようにしてもよい。このように、仮想オブジェクトデータ取得部８４による画像取得の待ち時間に、仮想空間表示部８６が、エンタテインメントシステム１０に予め記憶されている画像を表示することで、エンタテインメントシステム１０のユーザは、データ提供サーバからの画像を取得するのに必要な時間を待っている間も、画像を楽しむことができるので、画像の取得を待つことによるストレスが軽減される。
【００５６】
なお、表示される画像が更新されるタイミングで仮想空間表示部８６は、コントローラ４２に対して、コントローラ４２が備えるバイブレータを振動するように指示してもよい。具体的には、例えば、仮想オブジェクトデータ記憶部８２に予め記憶されている画像がモニタ２６の画面に表示されている状態から、仮想オブジェクトデータ取得部８４が取得した画像がモニタ２６の画面に表示されている状態に切り替わる際に、仮想空間表示部８６は、コントローラ４２に対して、コントローラ４２が備えるバイブレータを振動するように指示してもよい。
【００５７】
また、仮想空間表示部８６は、視点６６を示す位置と仮想地球オブジェクト７２を示す位置との間の距離に応じた、仮想オブジェクトデータ記憶部８２に記憶されている画像をモニタ２６の画面に表示するようにしてもよい。具体的には、例えば、仮想空間表示部８６が、視点６６を示す位置と仮想地球オブジェクト７２を示す位置との間の長さが長い場合には、低解像度の画像をモニタ２６の画面に表示し、視点６６を示す位置と仮想地球オブジェクト７２を示す位置との間の長さが短い場合には、高解像度の画像をモニタ２６の画面に表示するようにしてもよい（図５Ｂ〜図５Ｄ参照）。また、仮想空間表示部８６が、一旦低解像度の画像をモニタ２６の画面に表示しておき、仮想オブジェクトデータ取得部８４による高解像度の画像の取得が完了した時点で、高解像度の画像をモニタ２６の画面に表示するようにしてもよい。
【００５８】
視点データ記憶部８８は、メインメモリ２０やハードディスク３８を主として実現される。視点データ記憶部８８は、仮想空間６４における視点６６の位置や視線方向６８を示す視点データ１３４を記憶する（図９参照）。図９は、本実施形態に係る視点データ１３４のデータ構造の一例を示す図である。なお、視野領域７０は、視点データ１３４が示す視点６６の位置及び視線方向６８に基づいて決定される。視点データ１３４の詳細については後述する。
【００５９】
注視点位置算出部９０は、ＭＰＵ１１を主として実現される。注視点位置算出部９０は、視点６６の現在位置から視線方向６８に向かう直線と、当該直線上に存在する仮想オブジェクトとの交点である注視点１３６を示す位置を算出する（図１０参照）。
【００６０】
図１０は、本実施形態に係る仮想地球オブジェクト７２と視点６６の位置及び視線方向６８との初期状態における関係の一例を示す説明図である。本実施形態においては、初期状態で視線方向６８は、仮想地球オブジェクト７２の地表面（例えば、基準面１３０や地形面１３２）に対して垂直な方向を向いている（図４Ａ参照）。そして、注視点位置算出部９０は、初期状態における視点６６の位置から視線方向６８に向かう直線と、地形面１３２との交点（具体的には、地形面データ１２８に含まれるポリゴンデータが示すポリゴンとの交点）の位置を、注視点１３６を示す位置として算出する。
【００６１】
なお、注視点位置算出部９０は、初期状態以外の視点６６の位置に基づいて注視点１３６を示す位置を算出しても構わない。また、注視点位置算出部９０が、注視点１３６を示す位置を算出する際に、視線方向６８が仮想オブジェクトに対して垂直な方向を向いていなくても構わない。また、注視点位置算出部９０は、初期状態における視点６６の位置から視線方向６８に向かう直線と、基準面１３０との交点（基準面データ１２６に含まれるポリゴンデータが示すポリゴンとの交点）の位置を、注視点１３６を示す位置として算出しても構わない。
【００６２】
ピッチ角変更中心点位置算出部９２は、ＭＰＵ１１を主として実現される。ピッチ角変更中心点位置算出部９２は、視点６６から視線方向６８に向かう直線上に存在するピッチ角変更中心点８０の位置を算出する。ここで、ピッチ角変更中心点位置算出部９２は、視線方向６８が仮想オブジェクト（例えば、仮想地球オブジェクト７４）を示す方向を向いている際の視点６６の位置と仮想オブジェクト（例えば、仮想地球オブジェクト７４）を示す位置との間に存在するピッチ角変更中心点８０の位置を算出してもよい。また、ピッチ角変更中心点位置算出部９２は、注視点１３６を示す位置と視点６６の位置との関係に基づいて、注視点１３６を示す位置と視点６６の位置との間に存在するピッチ角変更中心点８０の位置を算出してもよい（図１０参照）。なお、ピッチ角変更中心点位置算出部９２は、注視点１３６を示す位置と、視点６６の位置との間を、所与の比率で内分する点の位置をピッチ角変更中心点８０の位置として算出するようにしても構わない。
【００６３】
ここで、視点データ１３４の詳細について説明する。本実施形態においては、視点データ１３４は、ピッチ角変更中心点位置データ１３８と、ヨー角データ１４０と、最大ピッチ角データ１４２と、相対ピッチ角データ１４４と、を含んでいる。
【００６４】
ピッチ角変更中心点位置データ１３８は、ピッチ角変更中心点位置算出部９２によって算出されるピッチ角変更中心点８０の位置を示すデータであり、例えば三次元座標値によって表現される。
【００６５】
ヨー角データ１４０は、図７に示すように、ピッチ角変更中心点８０の位置を中心とした極座標系において、視点６６の位置の、ヨー角基準方向１４６に対するヨー角φを示すデータである。ここで、ヨー角基準方向１４６は、具体的には、例えば、北を示す方向に対応する方向を示している。
【００６６】
最大ピッチ角データ１４２と、相対ピッチ角データ１４４とで、ピッチ角変更中心点８０の位置を中心とした極座標系における、視点６６の位置の、ピッチ角θを示している。これらのデータの詳細については、後述する。
【００６７】
ここで、ピッチ角変更中心点８０を通る、基準面１３０に対応する面（例えば、基準面に平行な面）をピッチ角変更中心点基準面１４８と呼ぶこととすると、ヨー角φは、ヨー角基準方向１４６と、ピッチ角変更中心点８０の位置からピッチ角θが９０度である際の視点６６の位置への方向と、のなす角である。ここで、ピッチ角変更中心点８０の位置からピッチ角θが９０度である際の視点６６の位置への方向を、ヨー角方向１５０と呼ぶこととする。
【００６８】
なお、視点データ１３４のデータ構造は上述のデータ構造に限定されない。
【００６９】
具体的には、例えば、視点データ記憶部８８は、最大ピッチ角θｍａｘを示す最大ピッチ角データ１４２の代わりに、最小伏角を示す最小伏角データを記憶してもよい。なお、最小伏角と最大ピッチ角θｍａｘとは、和が９０度である関係がある。なお、最大ピッチ角θｍａｘの詳細については、後述する。
【００７０】
また、例えば、ヨー角方向１５０を示すヨー角方向データや、視線方向６８を示す視線方向データや、ピッチ角変更中心点移動部１１２によるピッチ角変更中心点８０の移動の基準となるピッチ角変更中心点移動基準方向１５２を示すピッチ角変更中心点移動基準方向データや、ピッチ角変更部１１４による視点６６のピッチ角の変更の基準となる方向を示すピッチ角変更基準方向１５４などによって視点データ１３４を表現しても構わない。なお、本実施形態において、ピッチ角変更中心点移動基準方向１５２を示すベクトルは、ヨー角方向１５０を示すベクトルに対して逆方向のベクトルである。そして、本実施形態において、ピッチ角変更基準方向１５４は、ピッチ角変更中心点８０を中心とした、半径がピッチ角変更半径ｒである球面（以後、ピッチ角変更面１５６と呼ぶ。）に沿った、視点６６の現在位置からピッチ角θが０度である際の視点６６の位置への方向である。
【００７１】
基準距離算出部９４は、ＭＰＵ１１を主として実現される。基準距離算出部９４は、仮想オブジェクトデータ（本実施形態においては、地形面データ１２８）に基づいて、仮想オブジェクトの表面の基準面１３０からの距離を示す基準距離を算出する。本実施形態においては、具体的には、例えば、基準距離算出部９４が、まず、ピッチ角変更中心点８０を通る、基準面１３０に対して垂直な直線と、地形面１３２との交点（具体的には、例えば、地形面データ１２８に含まれるポリゴンデータが示すポリゴンとの交点）であるピッチ角変更中心点投影点１５８の位置を算出する。そして、基準距離算出部９４が、ピッチ角変更中心点投影点１５８と基準面１３０との間の距離を第１地形面距離Ｄ１として算出する（図７参照）。そして、基準距離算出部９４が、視点６６を通る、基準面１３０に対して垂直な直線と、地形面１３２との交点である視点投影点１６０の位置を算出する。そして、基準距離算出部９４が、視点投影点１６０と基準面１３０との間の距離を第２地形面距離Ｄ２として算出する（図７参照）。
【００７２】
そして、第１地形面距離Ｄ１と、第２地形面距離Ｄ２とに基づいて、地形面基準距離Ｄを算出する。ここでは、基準距離算出部９４は、第１地形面距離Ｄ１の値を地形面基準距離Ｄの値として算出する。
【００７３】
なお、基準距離算出部９４は、第２地形面距離Ｄ２の値を地形面基準距離Ｄの値として算出しても構わない。また、基準距離算出部９４は、第１地形面距離Ｄ１の値と、第２地形面距離Ｄ２の値の平均値を地形面基準距離Ｄの値として算出しても構わない。
【００７４】
基準距離データ記憶部９６は、メインメモリ２０やハードディスク３８を主として実現される。基準距離データ記憶部９６は、基準距離算出部９４により算出される基準距離を示す基準距離データを記憶する。具体的には、例えば、地形面基準距離Ｄを示す地形面基準距離データを記憶する。
【００７５】
そして、基準距離算出部９４は、算出した基準距離と、基準距離データ記憶部９６に記憶されている基準距離との差が所与の値（例えば、地形面基準距離バッファΔＤ）より大きい場合に、基準距離データ記憶部９６に記憶されている基準距離データを、基準距離算出部９４が算出した基準距離を示す基準距離データに更新するようにしてもよい。
【００７６】
視点移動速度決定部９８は、ＭＰＵ１１を主として実現される。視点移動速度決定部９８は、ユーザによる視点移動操作に応じて、視野領域７０に含まれる仮想オブジェクト（本実施形態では、仮想地球オブジェクト７２）を示す位置と視点６６を示す位置との関係に基づく距離である仮想オブジェクト視点間距離に基づいて、視点６６の移動速度ｖを決定する。
【００７７】
また、視点移動速度決定部９８が、仮想オブジェクト視点間距離の値が増加するほど移動速度ｖの値が増加するよう視点６６の移動速度ｖを決定するようにしても構わない。具体的には、例えば、視点移動速度決定部９８は、移動速度ｖの値が、仮想オブジェクト視点間距離の値に比例するように、移動速度ｖの値を決定するようにしても構わない。
【００７８】
このようにすることで、ユーザは、視点の的確な移動操作を実行することができる。
【００７９】
本実施形態においては、具体的には、例えば、視点移動速度決定部９８が、ピッチ角変更中心点８０とピッチ角変更中心点投影点１５８（あるいは地形面１３２）との間のピッチ角変更中心点地形面間距離ｄ１を算出する。このとき、視点移動速度決定部９８が、ピッチ角変更中心点８０と基準面１３０との間の距離と、基準距離データ記憶部９６に記憶されている地形面基準距離データが示す地形面基準距離Ｄとの差分の値に基づいて、ピッチ角変更中心点地形面間距離ｄ１を算出するようにしても構わない（図７参照）。
【００８０】
そして、視点移動速度決定部９８は、ピッチ角変更中心点地形面間距離ｄ１の値に基づいて、ピッチ角変更半径ｒの値を算出する。具体的には、例えば、視点移動速度決定部９８が、ピッチ角変更中心点地形面間距離ｄ１の値と所与の値との積の値をピッチ角変更半径ｒの値として算出する。このように、ピッチ角変更半径ｒと、ピッチ角変更中心点地形面間距離ｄ１とが所与の比率になっていても構わない。もちろん、ここで、視点移動速度決定部９８が、ピッチ角変更半径ｒの値を算出するようにしても構わない。
【００８１】
そして、本実施形態においては、仮想オブジェクト視点間距離は、ピッチ角変更中心点地形面間距離ｄ１と、ピッチ角変更半径ｒとの和（ｄ１＋ｒ）である。すなわち、視点移動速度決定部９８は、（ｄ１＋ｒ）の値に基づいて、視点６６の移動速度を決定する。
【００８２】
なお、仮想オブジェクト視点間距離の算出方法はもちろん上記の方法に限定されない。
【００８３】
また、視点移動速度決定部９８は、基準面１３０や地形面１３２に沿った方向への、視点６６の移動速度を決定するようにしてもよい。また、基準面１３０や地形面１３２に対して垂直な方向への、視点６６の移動速度を決定するようにしてもよい。また、視点移動速度決定部９８が、視点６６の移動速度の代わりに、ピッチ角変更中心点８０の移動速度を決定するようにしても構わない。
【００８４】
視点移動速度データ記憶部１００は、視点移動速度決定部９８により決定された視点６６の移動速度を示す移動速度データを記憶する。視点移動速度データ記憶部１００は、操作開始時の移動速度データを記憶するようにしても構わない。なお、ここで、ピッチ角変更中心点８０の移動速度を示す移動速度データを記憶するようにしても構わない。
【００８５】
許容範囲算出部１０２は、ＭＰＵ１１を主として実現される。許容範囲算出部１０２は、視野領域７０と仮想オブジェクト（本実施形態においては、例えば、仮想地球オブジェクト７２）が占める閉領域とが交わる領域の大きさに基づいて、視点６６の位置の移動許容範囲や、視線方向６８の変更許容範囲といった許容範囲１６２を算出する（図１１参照）。図１１は、許容範囲１６２の一例を示す図である。そして、図１２は、許容範囲１６２の別の一例を示す図である。許容範囲算出部１０２は、図１２に示すように、視点６６の位置の移動許容範囲だけを算出してもよいし、視線方向６８の変更許容範囲だけを算出してもよい。もちろん、許容範囲算出部１０２が、視点６６の位置の移動許容範囲と視線方向６８の変更許容範囲の両方を算出してもよい。
【００８６】
本実施形態では、許容範囲算出部１０２は、図１１に示すように、ピッチ角θの範囲を算出する。そして、許容範囲算出部１０２は、ピッチ角変更中心点８０と視点６６とを通る直線の方向が、仮想地球オブジェクト７２が占める閉領域に対する接線方向に対応する方向である際の視点６６の位置や視線方向６８を許容範囲内と許容範囲外との境界として算出する。そして、このときの、ピッチ角θを最大ピッチ角θｍａｘと呼ぶこととする。
【００８７】
ここで、例えば、仮想地球オブジェクト７２の中心と地形面１３２との間の地形面中心間距離Ｒと、ピッチ角変更中心点地形面間距離ｄ１とに基づいて、許容範囲算出部１０２は、最大ピッチ角θｍａｘを、θｍａｘ＝ｓｉｎ−１｛Ｒ／（Ｒ＋ｄ１）｝という数式から算出される。
【００８８】
ここで、許容範囲算出部１０２は、地形面中心間距離Ｒの代わりに、算出が容易な、仮想地球オブジェクト７２の中心と基準面との間の基準面中心間距離Ｒ’を用いて、最大ピッチ角θｍａｘを、概算するようにしても構わない。もちろん、このとき、許容範囲算出部１０２が、ピッチ角変更中心点地形面間距離ｄ１の代わりに、ピッチ角変更中心点８０と基準面１３０との間のピッチ角変更中心点基準面間距離ｄ’を用いて、最大ピッチ角θｍａｘを算出しても構わない。また、許容範囲算出部１０２は、許容範囲の算出に用いる仮想オブジェクトが占める閉領域を、仮想オブジェクトに基づいて算出するようにしても構わない。具体的には、例えば、許容範囲算出部１０２は、仮想オブジェクトの凸包に基づいて、仮想オブジェクトが示す閉領域を算出するようにしても構わない。
【００８９】
そして、本実施形態においては、視点データ記憶部８８は、許容範囲算出部１０２が算出した最大ピッチ角θｍａｘを示す最大ピッチ角データ１４２を記憶する。
【００９０】
このように、許容範囲算出部１０２は、視線方向６８が仮想オブジェクト（本実施形態においては、例えば、仮想地球オブジェクト７２）が占める閉領域に対する接線方向に対応する方向である際の視点６６の位置や視線方向６８を許容範囲１６２内と許容範囲１６２外との境界として算出するようにしても構わない。
【００９１】
操作状態取得部１０４は、所定時間（本実施形態においては、具体的には、例えば、１／６０秒）毎に、コントローラ４２の操作状態を取得する。操作状態とは、具体的には、例えば、押圧力を示すディジタル値（０〜２５５）や、姿勢データ（０≦Ｘ≦２５５,０≦Ｙ≦２５５）などである。本実施形態においては、少なくとも、左操作スティック５４及び右操作スティック５６の操作状態を示す姿勢データと、左操作スティック５４、右操作スティック５６、第２の左ボタン５２Ｌ、及び、第２の右ボタン５２Ｒの押圧力を示すディジタル値を取得する。そして、操作状態取得部１０４は、取得した操作状態に基づいて、ユーザによって行われた操作の内容を判断する。
【００９２】
本実施形態において、具体的には、例えば、操作状態取得部１０４が、左操作スティック５４の姿勢データを取得した場合、又は、第２の左ボタン５２Ｌ、第２の右ボタン５２Ｒの所与の値以上の押圧力を示すディジタル値を取得した場合は、ユーザによる操作がピッチ角変更中心点移動操作であると判断し、右操作スティック５６の姿勢データ及び右操作スティックの所与の値以上の押圧力を示すディジタル値を取得した場合は、ユーザによる操作がピッチ角変更操作、あるいは、ヨー角変更操作であると判断する。これらの操作の内容については、後述する。
【００９３】
操作状態記憶部１０６は、メインメモリ２０やハードディスク３８を主として実現される。操作状態記憶部１０６は、操作状態取得部１０４が取得する操作状態を示す操作状態データを記憶する。
【００９４】
操作状態変化判断部１０８は、ＭＰＵ１１を主として実現される。操作状態変化判断部１０８は、操作状態記憶部１０６に記憶されている操作状態データが示す操作状態と、操作状態取得部１０４が検出する操作状態とを比較して、検出されたデータに変化があったか否かを判断する。
【００９５】
視点移動部１１０は、ＭＰＵ１１を主として実現される。視点移動部１１０は、ユーザによる視点移動操作に応じて、前記視点の位置の移動又は前記視線方向の変更の少なくとも一方を実行する。
【００９６】
このとき、視点移動部１１０が、許容範囲算出部１０２によって算出された許容範囲１６２内で、視点の位置の移動や視線方向の変更を実行できるようにしても構わない。また、視点移動部１１０が、視点移動速度決定部９８により決定される移動速度ｖで視点６６の位置を移動するようにしても構わない。
【００９７】
ピッチ角変更中心点移動部１１２は、ＭＰＵ１１を主として実現される。ピッチ角変更中心点移動部１１２は、ユーザによるピッチ角変更中心点移動操作に応じて、ピッチ角変更中心点８０の位置を移動し、視点６６の位置からピッチ角変更中心点８０を向くよう少なくとも視線方向６８を変更する。また、ピッチ角変更中心点移動部１１２は、ピッチ角変更中心点８０の位置を移動した際に、移動されたピッチ角変更中心点８０の位置に基づいて、ヨー角φを算出するようにしてもよい。
【００９８】
また、視点移動部１１０が、ピッチ角変更中心点移動部１１２によるピッチ角変更中心点８０の移動と連動して、視点６６を移動するようにしても構わない。具体的には、例えば、視点移動部１１０は、ピッチ角変更中心点移動部１１２によりピッチ角変更中心点８０が移動する距離だけ移動をするようにしても構わない。また、ピッチ角変更中心点移動部１１２による移動によりピッチ角変更中心点地形面間距離ｄ１の値が変化する際は、視点移動部１１０が、変化後のピッチ角変更中心点地形面間距離ｄ１に基づいて、ピッチ角変更半径ｒを算出して、この算出されるピッチ角変更半径ｒに基づいて、視点６６の位置を移動するようにしても構わない。
【００９９】
本実施形態においては、操作状態取得部１０４が取得した左操作スティック５４の姿勢データ（Ｘ，Ｙ）に基づいて、左操作スティック５４のＹ軸方向が、ピッチ角変更中心点移動基準方向１５２の方向に、Ｘ軸方向が、ピッチ角変更中心点移動基準方向１５２に対して右９０度の方向に対応付けられた座標上の位置に、ピッチ角変更中心点移動部１１２がピッチ角変更中心点８０を移動する。
【０１００】
具体的には、例えば、操作状態取得部１０４が、左操作スティック５４が上方向に操作されていることを示す操作状態を取得すると、ピッチ角変更中心点移動部１１２は、ピッチ角変更中心点８０を、ピッチ角変更中心点移動基準方向１５２の方向に移動する。また、操作状態取得部１０４が、左操作スティック５４が下方向に操作されていることを示す操作状態を取得すると、ピッチ角変更中心点移動部１１２は、ピッチ角変更中心点８０を、ピッチ角変更中心点移動基準方向１５２とは逆方向（すなわち、ヨー角方向１５０の方向）に移動する。そして、操作状態取得部１０４が、左操作スティック５４が左方向（右方向）に操作されていることを示す操作状態を取得すると、ピッチ角変更中心点移動部１１２は、ピッチ角変更中心点８０を、ピッチ角変更中心点移動基準方向１５２に対して左９０度（右９０度）の方向に移動する。
【０１０１】
また、本実施形態においては、操作状態取得部１０４が、第２の左ボタン５２Ｌの押圧力を示す所与の値以上のディジタル値を取得した場合は、ピッチ角変更中心点移動部１１２は、ピッチ角変更中心点８０を、ピッチ角変更中心点基準面１４８に対して垂直な方向であって、仮想地球オブジェクト７２から離れる方向に移動する。また、操作状態取得部１０４が、第２の右ボタン５２Ｒの押圧力を示す所与の値以上のディジタル値を取得した場合は、ピッチ角変更中心点移動部１１２は、ピッチ角変更中心点８０を、ピッチ角変更中心点基準面１４８に対して垂直な方向であって、仮想地球オブジェクト７２に近づく方向に移動する。
【０１０２】
また、このとき、ピッチ角変更中心点移動部１１２が、視点移動速度決定部９８により決定される移動速度ｖに基づく、ピッチ角変更中心点８０の移動速度ｖ’でピッチ角変更中心点８０の位置を移動するようにしても構わない。具体的には、例えば、操作状態取得部１０４が取得した左操作スティック５４の姿勢データの値が（Ｘ，Ｙ）であり、ピッチ角変更中心点８０の移動速度ｖ’の値がｖと等しい場合には、ピッチ角変更中心点移動部１１２は、ピッチ角変更中心点８０の現在位置から（ｖＸ，ｖＹ）だけ移動するようにしても構わない。このように、ピッチ角変更中心点移動部１１２が、姿勢データなどの操作量の値と、移動速度ｖの値との積に基づく移動速度でピッチ角変更中心点８０を移動するようにしてもよい。もちろん、視点移動部１１０が、操作量の値と、移動速度ｖの値との積に基づく移動速度で視点６６を移動するようにしてもよい。また、第２の左ボタン５２Ｌや第２の右ボタン５２Ｒによる、ピッチ角変更中心点８０のピッチ角変更中心点基準面１４８に対して垂直な方向への移動の際にも、視点移動速度決定部９８により決定される移動速度ｖに基づく、ピッチ角変更中心点８０の移動速度ｖ’でピッチ角変更中心点８０の位置を移動するようにしても構わない。
【０１０３】
ピッチ角変更部１１４は、ＭＰＵ１１を主として実現される。ピッチ角変更部１１４は、ユーザによるピッチ角変更操作に応じて、ピッチ角変更中心点８０を中心にピッチ角θを変更し、ピッチ角変更後の視点６６の位置からピッチ角変更中心点８０を向くよう視線方向６８を変更する。
【０１０４】
このとき、ピッチ角変更部１１４が、このピッチ角θの範囲内で、ピッチ角θを変更するようにしても構わない。
【０１０５】
相対ピッチ角データ変更部１１６は、ＭＰＵ１１を主として実現される。相対ピッチ角データ変更部１１６は、視点データ記憶部８８に、相対ピッチ角データ１４４が記憶されている場合に、ユーザによる相対ピッチ角変更操作に応じて、相対ピッチ角データ１４４を変更する。ここで、相対ピッチ角データ１４４とは、ピッチ角変更中心点８０と視点６６とを通る直線と、仮想オブジェクト（本実施形態においては仮想地球オブジェクト７２）を示す領域に対して垂直なピッチ角変更中心点８０を通る直線と、がなす角の、最大ピッチ角θｍａｘに対する比率である相対ピッチ角θ’（０≦θ’≦１）を示すデータである。
【０１０６】
ピッチ角算出部１１８は、ＭＰＵ１１を主として実現される。ピッチ角算出部１１８は、相対ピッチ角データ１４４が示す相対ピッチ角θ’と、最大ピッチ角θｍａｘと、に基づいて、ピッチ角変更中心点８０と前記視点とを通る直線と、前記仮想オブジェクトを示す領域に対して垂直なピッチ角変更中心点８０を通る直線と、がなす角であるピッチ角θを算出する。より具体的には、例えば、ピッチ角算出部１１８は、最大ピッチ角θｍａｘが示す角度と、相対ピッチ角θ’との積（θｍａｘ×θ’）に基づいて、ピッチ角θを算出するようにしても構わない。
【０１０７】
本実施形態においては、操作状態取得部１０４が取得した右操作スティック５６の姿勢データ（Ｘ，Ｙ）に基づいて、相対ピッチ角データ変更部１１６が、相対ピッチ角データ１４４が示す相対ピッチ角θ’の増減を実行する。また、本実施形態では、ピッチ角変更部１１４は、ヨー角データ１４０が示すヨー角φの増減、すなわち、ヨー角φの変更も実行する。具体的には、例えば、操作状態取得部１０４が取得したＹの値が正（負）である場合に、相対ピッチ角データ変更部１１６が、相対ピッチ角θ’の値が減少（増加）する。また、操作状態取得部１０４が取得したＸの値が正（負）である場合に、ピッチ角変更部１１４が、ヨー角φの値を増加（減少）する。
【０１０８】
そして、変更される相対ピッチ角データ１４４に基づいて、ピッチ角算出部１１８がピッチ角θを算出する。そして、ピッチ角変更部１１４が、算出されたピッチ角θの値と、ヨー角φの値と、ピッチ角変更中心点８０の現在位置とに基づいて、ピッチ角θあるいはヨー角φを変更する。このように、ピッチ角変更部１１４が、ピッチ角算出部１１８により算出されるピッチ角θと、ピッチ角変更中心点８０の位置と、に基づいて、ピッチ角θやヨー角φを変更するようにしても構わない。
【０１０９】
また、操作状態取得部１０４が、右操作スティック５６の押圧力を示す所与の値以上のディジタル値を取得した場合は、ピッチ角θ変更部１１４は、ヨー角基準方向１４６に対するヨー角φが１８０度となる位置に視点６６が配置されるよう、ピッチ角θを一定にしたままでヨー角φを変更する。このようにして、ユーザは、視線方向６８が北方向を向くようにヨー角φを変更することができる。
【０１１０】
また、ピッチ角変更中心点移動部１１２が、ピッチ角変更中心点８０の位置を移動した際、許容範囲算出部１０２が許容範囲を再算出するようにしても構わない。具体的には、例えば、ピッチ角変更中心点移動部１１２が、最大ピッチ角θｍａｘの値を再算出するようにしてもよい。そして、このとき、ピッチ角算出部１１８が、再算出される最大ピッチ角θｍａｘが示す角度と、相対ピッチ角θ’との積（θｍａｘ×θ’）に基づいて、ピッチ角θを再算出するようにしても構わない。そして、このとき、ピッチ角変更部１１４が、再算出されるピッチ角θと、ピッチ角変更中心点８０の位置と、に基づいて、ピッチ角θを変更するようにしても構わない。
【０１１１】
視点位置修正部１２０は、ＭＰＵ１１を主として実現される。視点位置修正部１２０は、視点移動部１１０による視点６６の移動の際に、視点６６を示す位置と仮想オブジェクト（本実施形態では仮想地球オブジェクト７２）を示す位置との距離を測定し、当該距離が所与の距離より短い場合は、仮想オブジェクトから離れる方向に視点６６の位置を修正する。このようにすると、視点６６が地形面１３２と接触しそうな状況の際に、接触を回避するよう視点６６が移動される。また、本実施形態においては、視点６６が地形面１３２の下に隠れることを防ぐことができる（図５Ｊ参照）。なお、視点位置修正部１２０は、視点６６の位置の修正の際に、コントローラ４２に対して、コントローラ４２が備えるバイブレータを振動するように指示してもよい。
【０１１２】
本実施形態においては、例えば、視点位置修正部１２０が、視点６６と視点投影点１６０（あるいは地形面１３２）との間の視点地形面間距離ｄ２を算出する。このとき、視点位置修正部１２０が、視点６６と基準面１３０との間の距離と、基準距離データ記憶部９６に記憶されている地形面基準距離データが示す地形面基準距離Ｄとの差分の値に基づいて、視点地形面間距離ｄ２を算出するようにしても構わない（図７参照）。
【０１１３】
そして、視点地形面間距離ｄ２の値が所与の閾値である最小視点地形面間距離ｄ２ｍｉｎより小さい場合は、視点位置修正部１２０が、視点６６を視点地形面間距離ｄ２の値が最小視点地形面間距離ｄ２ｍｉｎの値以上となる位置に修正する。具体的には、例えば、視点位置修正部１２０が、視点地形面間距離ｄ２の値が最小視点地形面間距離ｄ２ｍｉｎの値となるよう、視点６６を通る、基準面１３０に対して垂直な直線上を、基準面１３０に対して反対の方向に視点６６を修正する。なお、このとき、視点位置修正部１２０が、ピッチ角変更中心点８０の位置を併せて修正するようにしても構わない。
【０１１４】
ピッチ角変更中心点位置修正部１２２は、ＭＰＵ１１を主として実現される。ピッチ角変更中心点位置修正部１２２は、視点移動部１１０による視点６６の移動の際に、ピッチ角変更中心点８０を示す位置と、仮想オブジェクト（本実施形態においては、例えば、仮想地球オブジェクト７２）を示す位置とを測定し、当該距離が所与の範囲を超える場合に、当該距離がこの範囲におさまるようピッチ角変更中心点８０の位置を修正する。このとき、視点移動部１１０は、併せて視点６６の位置を修正するようにしても構わない。このようにすると、例えば、視点６６の地形面１３２に対する位置、及び、ピッチ角変更中心点８０の地形面１３２に対する位置の両方が所与の範囲よりも大きく変化した際に、ピッチ角変更中心点８０の位置や視点６６の位置を変化させることができる（図５Ｇ〜図５Ｉ参照）。
【０１１５】
本実施形態においては、例えば、基準距離算出部９４が、基準距離データ記憶部９６に記憶されている基準距離データを、基準距離算出部９４が算出した基準距離を示す基準距離データに更新する際に、ピッチ角変更中心点位置修正部１２２が、更新前の基準距離と、更新後の基準距離との差分に基づいて、ピッチ角変更中心点８０の位置を修正する。
【０１１６】
次に、本実施形態に係るエンタテインメントシステム１０において、所定時間（本実施形態では、１／６０秒）毎に実行される処理の一例について、図７に示す説明図及び図１３及び図１４に示すフロー図を参照しながら説明する。
【０１１７】
図１３及び図１４は、エンタテインメントシステム１０において所定時間毎に実行される処理のうち、本実施形態に関連する処理を示すフロー図である。図１３及び図１４に示す処理は、例えば、ＤＶＤ−ＲＯＭ等の情報伝達媒体を介して、あるいは、インターネット等の通信ネットワークを介してエンタテインメントシステム１０に供給されるプログラムがＭＰＵ１１によって実行されることによって実現される。
【０１１８】
まず、操作状態取得部１０４が、コントローラ４２の操作状態を取得する（Ｓ１）。
【０１１９】
そして、操作状態変化判断部１０８が、Ｓ１に示す処理で、コントローラ４２の操作状態を取得したか否かを確認する（Ｓ２）。操作状態変化判断部１０８が、コントローラ４２の操作状態を取得していない場合（Ｓ２：Ｎ）は、処理を終了する。
【０１２０】
操作状態変化判断部１０８が、コントローラ４２の操作状態を取得した場合は（Ｓ２：Ｙ）、操作状態記憶部１０６に記憶されている操作状態データが示す操作状態と、Ｓ１に示す処理で操作状態取得部１０４により取得された操作状態とが対応するか否かを判断する（Ｓ３）。
【０１２１】
ここで、操作状態記憶部１０６に記憶されている操作状態データが示す操作状態と、Ｓ１に示す処理で検出された操作状態とが対応する場合は（Ｓ３：Ｙ）、基準距離データ記憶部９６に記憶されている地表面基準距離データ、及び、視点移動速度データ記憶部１００に記憶されている移動速度データを取得する（Ｓ４）。
【０１２２】
操作状態記憶部１０６に記憶されている操作状態データが示す操作状態と、Ｓ１に示す処理で検出された操作状態とが対応しない場合は（Ｓ３：Ｎ）、基準距離算出部９４が、地形面基準距離Ｄを算出し、視点移動速度決定部９８が、視点６６の移動速度ｖを決定する（Ｓ５）。そして、基準距離算出部９４が、算出された地形面基準距離Ｄを示す地形面基準距離データを基準距離データ記憶部９６に記憶する。このとき、基準距離データ記憶部９６に地形面基準距離データが記憶されている場合は、基準距離算出部９４が、その地形面基準距離データを更新する。そして、視点移動速度決定部９８が、決定された移動速度ｖを示す移動速度データを視点移動速度データ記憶部１００に記憶する。このとき、視点移動速度データ記憶部１００に移動速度データが記憶されている場合は、視点移動速度決定部９８が、その移動速度データを更新する。（Ｓ６）。
【０１２３】
そして、Ｓ４に示す処理で取得した移動速度データが示す移動速度ｖ、又は、Ｓ５に示す処理で決定した移動速度ｖに基づいて、ピッチ角変更中心点移動部１１２によるピッチ角変更中心点８０の移動や相対ピッチ角データ変更部１１６による相対ピッチ角データ１４４の変更を実行する（Ｓ７）。
【０１２４】
そして、許容範囲算出部１０２が、移動したピッチ角変更中心点８０の位置に基づいて、最大ピッチ角θｍａｘを算出し、この最大ピッチ角θｍａｘを示す最大ピッチ角データ１４２に、視点データ記憶部８８に記憶されている最大ピッチ角データ１４２を更新する（Ｓ８）。
【０１２５】
そして、ピッチ角変更中心点移動部１１２は、ピッチ角変更中心点８０の位置に基づいて、ヨー角φを算出し、視点データ記憶部８８に記憶されているヨー角データ１４０を更新する（Ｓ９）。
【０１２６】
そして、ピッチ角算出部１１８が、相対ピッチ角データ１４４が示す相対ピッチ角θ、及び、最大ピッチ角データ１４２が示す最大ピッチ角θｍａｘに基づいて、ピッチ角θを算出する（Ｓ１０）。
【０１２７】
そして、視点移動速度決定部９８が、ピッチ角変更中心点地形面間距離ｄ１、及び、ピッチ角変更中心点地形面間距離ｄ１に所与の比率との積であるピッチ角変更半径ｒを算出する（Ｓ１１）。
【０１２８】
そして、視点移動部１１０が、ピッチ角変更中心点８０の現在位置、Ｓ１１に示す処理で算出されたピッチ角変更半径ｒ、Ｓ９に示す処理において算出されたヨー角φ、Ｓ１０に示す処理において算出されたピッチ角θに基づいて、視点６６の位置及び視線方向６８を算出し、算出された位置に視点６６を移動し、視線方向６８を算出された方向に変更する（Ｓ１２）。
【０１２９】
そして、基準距離算出部９４が、第１地形面距離Ｄ１の値と、第２地形面距離Ｄ２の値とを算出する（Ｓ１３）。
【０１３０】
そして、基準距離算出部９４が、第１地形面距離Ｄ１の値から基準距離データ記憶部９６に記憶されている地形面基準距離データが示す地形面基準距離Ｄの値を引いた値が、地形面基準距離バッファΔＤより大きく、かつ、第２地形面距離Ｄ２の値から基準距離データ記憶部９６に記憶されている地形面基準距離データが示す地形面基準距離Ｄの値を引いた値が、地形面基準距離バッファΔＤより大きいか否かを確認する（Ｓ１４）。
【０１３１】
ここで、Ｓ１３に示す条件を満たしている場合は（Ｓ１４：Ｙ）、基準距離算出部９４は、第１地形面距離Ｄ１と、第２地形面距離Ｄ２のうちの小さい値に、基準距離データ記憶部９６に記憶されている地形面基準距離データが示す地形面基準距離Ｄの値を更新する（Ｓ１５）。そして、ピッチ角変更中心点位置修正部１２２がピッチ角変更中心点８０の位置、及び、視点６６の位置を修正する（Ｓ１６）。
【０１３２】
Ｓ１４に示す条件を満たしていない場合は（Ｓ１４：Ｎ）、基準距離データ記憶部９６に記憶されている地形面基準距離データが示す地形面基準距離Ｄの値から第１地形面距離Ｄ１の値を引いた値が、地形面基準距離バッファΔＤより大きく、かつ、基準距離データ記憶部９６に記憶されている地形面基準距離データが示す地形面基準距離Ｄの値から第２地形面距離Ｄ２の値を引いた値が、地形面基準距離バッファΔＤより大きいか否かを確認する（Ｓ１７）。ここで、Ｓ１７に示す条件を満たしていない場合は（Ｓ１７：Ｎ）、Ｓ１９に示す処理を実行する。
【０１３３】
ここで、Ｓ１７に示す条件を満たしている場合は（Ｓ１７：Ｙ）、基準距離算出部９４は、第１地形面距離Ｄ１と、第２地形面距離Ｄ２のうちの大きい値に、基準距離データ記憶部９６に記憶されている地形面基準距離データが示す地形面基準距離Ｄの値を更新する（Ｓ１８）。そして、ピッチ角変更中心点位置修正部１２２がピッチ角変更中心点８０の位置、及び、視点６６の位置を修正する（Ｓ１６）。
【０１３４】
そして、視点位置修正部１２０が、視点地形面間距離ｄ２を算出する（Ｓ１９）。そして、視点位置修正部１２０が、視点地形面間距離ｄ２の値が最小視点地形面間距離ｄ２ｍｉｎより小さいか否かを確認する（Ｓ２０）。
【０１３５】
そして、視点地形面間距離ｄ２の値が最小視点地形面間距離ｄ２ｍｉｎより小さい場合は（Ｓ２０：Ｙ）、視点位置修正部１２０が、視点６６を視点地形面間距離ｄ２の値が最小視点地形面間距離ｄ２ｍｉｎ以上となる位置に修正する（Ｓ２１）。視点地形面間距離ｄ２の値が最小視点地形面間距離ｄ２ｍｉｎより小さくない場合は（Ｓ２０：Ｎ）、Ｓ２２に示す処理を実行する。
【０１３６】
そして、仮想空間表示部８６が、視点６６の現在位置、及び、ピッチ角変更中心点８０の現在位置に基づいて、仮想空間６４内の視点６６から視線方向６８を見た様子を示す画像をモニタ２６の画面に表示する（Ｓ２２）。
【０１３７】
このようにして、ユーザの操作に応じて、視点６６の位置やピッチ角変更中心点８０の位置が移動して、移動後の視点６６の位置やピッチ角変更中心点８０の位置に基づく仮想空間６４を見た様子を示す画像がモニタ２６の画面に表示される。
【０１３８】
なお、本発明は上記実施形態に限定されるものではない。
【０１３９】
以下、本発明の変形例の実施形態について、図１５のフロー図を参照しながら説明する。なお、上記実施形態と共通する点については、説明を省略する。
【０１４０】
本実施形態においては、視点データ記憶部８８には、移動基準点位置データ１６４、前方向データ１６６、標高データ１６８、視点高度データ１７０、ピッチ角データ１７２を含む視点データ１３４が記憶されている（図１６参照）。図１６は、本実施形態における視点データ１３４のデータ構造の一例を示す図である。また、図１７は、本実施形態に係る仮想地球オブジェクトと視点の位置及び視線方向との関係の一例を説明する説明図である。
【０１４１】
移動基準点位置データ１６４は、本実施形態では、ピッチ角変更中心点８０を通る、基準面１３０に対して垂直な直線と、基準面１３０との交点である移動基準点１７４の位置を示すデータであり、例えば三次元座標値や、緯度及び経度を示すデータによって表現される。
【０１４２】
前方向データ１６６は、基準面１３０の法線に対して垂直な方向であり、後述する左操作スティックの上方向の操作に対応する前方方向１７６を示すデータであり、例えば三次元のベクトルデータによって表現される。
【０１４３】
標高データ１６８は、本実施形態では、初期状態におけるピッチ角変更中心点投影点１５８と、移動基準点１７４との距離である標高を示すデータである。
【０１４４】
視点高度データ１７０は、本実施形態では、初期状態におけるピッチ角変更中心点投影点１５８と、ピッチ角変更中心点８０までの距離と、視点６６と、ピッチ角変更中心点８０までの距離との和である視点高度を示すデータである。
【０１４５】
ピッチ角データ１７２は、ピッチ角θを示すデータである。
【０１４６】
本実施形態においては、まず、操作状態取得部１０４が操作状態を取得する（Ｓ５１）。
【０１４７】
そして、左操作スティック５４の姿勢データ（Ｘ，Ｙ）を取得している場合は（Ｓ５２：Ｙ）、操作状態取得部１０４が取得した左操作スティック５４の姿勢データ（Ｘ，Ｙ）に基づいて、左操作スティック５４のＹ軸方向が、前方方向１７６の方向に、Ｘ軸方向が、前方方向１７６に対して右９０度の方向に対応付けられた座標上の位置に、ピッチ角変更中心点移動部１１２が、基準面１３０に沿って、移動基準点１７４を移動する（Ｓ５３）。このとき、移動基準点位置データ１６４の変更に応じて、前方向データ１６６を変更するようにしてもよい。なお、このとき、視点高度データ１７０、及び、ピッチ角データ１７２は変更されない。一方、標高データ１６８は変更される。標高データ１６８がどのように変更されるかについては、後述する。
【０１４８】
Ｓ５２に示す条件を満たさない場合は（Ｓ５２：Ｎ）、Ｓ５４に示す処理を実行する。
【０１４９】
操作状態取得部１０４が、右操作スティック５６の姿勢データ（Ｘ，Ｙ）を取得している場合は（Ｓ５４：Ｙ）、操作状態取得部１０４が取得した右操作スティック５６の姿勢データ（Ｘ，Ｙ）に基づいて、ピッチ角変更部１１４が、ピッチ角θの増減、及び、前方向データ１６６の変更（すなわち、ヨー角φの増減）を実行する（Ｓ５５）。具体的には、例えば、操作状態取得部１０４が取得したＹの値が正（負）である場合に、ピッチ角変更部１１４が、ピッチ角θの値を減少（増加）する。また、操作状態取得部１０４が取得したＸの値が正（負）である場合に、前方方向１７６が基準面１３０の法線方向に対して時計回り（反時計回り）に回転されるよう前方向データ１６６を変更する。このことによって、ピッチ角θやヨー角φが変更される。このとき、移動基準点位置データ１６４及び視点高度データ１７０は変更されない。一方、標高データ１６８は変更される。標高データ１６８がどのように変更されるかについては、後述する。
【０１５０】
Ｓ５４に示す条件を満たさない場合は（Ｓ５４：Ｎ）、Ｓ５６に示す処理を実行する。
【０１５１】
操作状態取得部１０４が、第２の左ボタン５２Ｌ又は第２の右ボタン５２Ｒの押圧力を示す所与の値以上のディジタル値を取得した場合は（Ｓ５６：Ｙ）、視点高度データ１７０を変更する（Ｓ５７）。具体的には、例えば、第２の左ボタン５２Ｌの押圧力を示す所与の値以上のディジタル値を取得した場合は、視点移動部１１０は、視点６６を、ピッチ角変更中心点８０から離れる方向に移動する。また、操作状態取得部１０４が、第２の右ボタン５２Ｒの押圧力を示す所与の値以上のディジタル値を取得した場合は、視点移動部１１０が、視点６６を、ピッチ角変更中心点８０に近づく方向に移動する。このとき、前方向データ１６６、移動基準点位置データ１６４、及び、ピッチ角データ１７２が変更されない。一方、標高データ１６８は変更される。標高データ１６８がどのように変更されるかについては、後述する。
【０１５２】
Ｓ５６に示す条件を満たさない場合は（Ｓ５６：Ｎ）、Ｓ５８に示す処理を実行する。
【０１５３】
そして、ピッチ角変更中心点位置修正部１１２が、標高データ１６８を変更する（Ｓ５８）。
【０１５４】
具体的には、例えば、ピッチ角変更中心点投影点１５８と基準面１３０との間の距離を第１地形面距離Ｄ１と、視点投影点１６０と基準面１３０との間の距離を第２地形面距離Ｄ２とを測定する。なお、ここで、視点投影点１６０を通る、基準面１３０に対して垂直な直線と基準面１３０との交点を視点基準点１７８とする。ここで、ピッチ角変更中心点位置修正部１１２が、視点基準点１７８の緯度及び経度を示すデータから、緯度及び経度と標高との関係が示されている標高データベースから、移動基準点１７４の緯度及び経度を示すデータに基づいて第１地形面距離Ｄ１を算出し、視点基準点１７８の緯度及び経度を示すデータに基づいて第２地形面距離Ｄ２を算出するようにしても構わない。
【０１５５】
そして、ピッチ角変更中心点位置修正部１１２が、標高データ１６８を変更する。具体的には、例えば、標高データ１６８が示す標高の値と第１地形面距離Ｄ１の値との差、及び、標高データ１６８が示す標高の値と第２地形面距離Ｄ２の値との差が、所定の範囲（例えば、視点高度の０．１倍）よりも大きい場合は、標高データ１６８を更新する。このとき、所定の範囲は、視点６６が地形面１３２とぶつからないようにするため、後述する視点高度内分率（例えば０．２）よりも小さいことが望ましい。
【０１５６】
ここで、例えば、第１地形面距離Ｄ１の値と第２地形面距離Ｄ２の値のうちの小さい方の値から視点高度の０．１倍を引いた値が、標高の値よりも小さい場合には、ピッチ角変更中心点位置修正部１１２が標高の値を第１地形面距離Ｄ１の値と第２地形面距離Ｄ２の値のうちの小さい方の値から視点高度の０．１倍を引いた値に変更する。一方、第１地形面距離Ｄ１の値と第２地形面距離Ｄ２の値のうちの大きい方の値に視点高度の０．１倍を足した値が、標高の値よりも大きい場合には、ピッチ角変更中心点位置修正部１１２が標高の値を第１地形面距離Ｄ１の値と第２地形面距離Ｄ２の値のうちの大きい方の値に視点高度の０．１倍を足した値に変更する。このようにして、標高の値は、第１地形面距離Ｄ１の値と第２地形面距離Ｄ２の値のうちの小さい方の値から視点高度の０．１倍を引いた値と、第１地形面距離Ｄ１の値と第２地形面距離Ｄ２の値のうちの大きい方の値に視点高度の０．１倍を足した値との間の範囲に収まるようになる。
【０１５７】
そして、ピッチ角変更中心点移動部１１２がピッチ角変更中心点８０の位置を移動し、視点移動部１１０が、視点６６の位置を移動する（Ｓ５９）。具体的には、ピッチ角変更中心点移動部１１２が、移動基準点１７４から基準面１３０に対して垂直な方向に、標高の値と、視点高度に所与の比率である視点高度内分率（例えば、０．２）を掛けた値とを足した距離だけ離れた点に、ピッチ角変更中心点８０を変更する。そして、視点移動部１１０が、ピッチ角変更中心点８０を中心として、基準面１３０に対して垂直な方向から、前方方向１７６に対して反対の方向への角度がピッチ角θである方向に、ピッチ角変更中心点８０から、視点高度に、１から視点高度内分率を引いた比率（例えば、０．８）を掛けて値が示す距離だけ離れた点に、視点６６の位置を移動する。
【０１５８】
そして、仮想空間表示部８６が、視点６６の現在位置、及び、ピッチ角変更中心点８０の現在位置に基づいて、仮想空間６４内の視点６６から視線方向６８を見た様子を示す画像をモニタ２６の画面に表示する（Ｓ６０）。
【０１５９】
なお、本発明は上記実施形態にも限定されない。
【０１６０】
例えば、上記実施形態では、仮想空間６４内に、１つの仮想オブジェクトが存在しているが、仮想空間６４内に仮想オブジェクトが複数存在していても構わない。
【図面の簡単な説明】
【０１６１】
【図１】本発明の一実施形態に係る画像表示装置として用いられるエンタテインメントシステムのハードウェア構成の一例を示すハードウェア構成図である。
【図２】ＭＰＵの詳細の一例を示す詳細構成図である。
【図３Ａ】コントローラの一例を示す斜視図である。
【図３Ｂ】コントローラの一例を示す上側面図である。
【図４Ａ】仮想空間内の視点から視線方向を見た様子の一例を示す図である。
【図４Ｂ】仮想空間内の視点から視線方向を見た様子の一例を示す図である。
【図４Ｃ】仮想空間内の視点から視線方向を見た様子の一例を示す図である。
【図５Ａ】仮想空間内の視点から視線方向を見た様子を示す画像の一例を示す図である。
【図５Ｂ】仮想空間内の視点から視線方向を見た様子を示す画像の一例を示す図である。
【図５Ｃ】仮想空間内の視点から視線方向を見た様子を示す画像の一例を示す図である。
【図５Ｄ】仮想空間内の視点から視線方向を見た様子を示す画像の一例を示す図である。
【図５Ｅ】仮想空間内の視点から視線方向を見た様子を示す画像の一例を示す図である。
【図５Ｆ】仮想空間内の視点から視線方向を見た様子を示す画像の一例を示す図である。
【図５Ｇ】仮想空間内の視点から視線方向を見た様子を示す画像の一例を示す図である。
【図５Ｈ】仮想空間内の視点から視線方向を見た様子を示す画像の一例を示す図である。
【図５Ｉ】仮想空間内の視点から視線方向を見た様子を示す画像の一例を示す図である。
【図５Ｊ】仮想空間内の視点から視線方向を見た様子を示す画像の一例を示す図である。
【図６】本発明の一実施形態に係る画像表示装置として用いられるエンタテインメントシステムの機能の一例を示す機能ブロック図である。
【図７】本発明の一実施形態に係る仮想地球オブジェクトと視点の位置及び視線方向との関係の一例を説明する説明図である。
【図８】地表面データのデータ構造の一例を示す図である。
【図９】視点データのデータ構造の一例を示す図である。
【図１０】本発明の一実施形態に係る仮想地球オブジェクトと視点の位置及び視線方向との初期状態における関係の一例を示す説明図である。
【図１１】許容範囲の一例を示す図である。
【図１２】許容範囲の別の一例を示す図である。
【図１３】本発明の一実施形態に係るエンタテインメントシステムで行われる処理のフローの一例を示す図である。
【図１４】本発明の一実施形態に係るエンタテインメントシステムで行われる処理のフローの一例を示す図である。
【図１５】本発明の別の実施形態に係るエンタテインメントシステムで行われる処理のフローの一例を示す図である。
【図１６】視点データのデータ構造の別の一例を示す図である。
【図１７】本発明の別の実施形態に係る仮想地球オブジェクトと視点の位置及び視線方向との関係の一例を説明する説明図である。
【図１８】従来の、仮想空間内の視点から視線方向を見た様子を示す画像の一例を示す図である。
【符号の説明】
【０１６２】
１０  エンタテインメントシステム、１１  ＭＰＵ、１２  メインプロセッサ、１４ａ〜１４ｈ  サブプロセッサ、１６  バス、１８  メモリコントローラ、２０  メインメモリ、２２，４０，４４  インタフェース、２４  画像処理部、２６  モニタ、２８  入出力処理部、３０  音声処理部、３２  スピーカ、３４  光ディスク読み取り部、３６  光ディスク、３８  ハードディスク、４２  コントローラ、４２ａ  表面、４６  カメラユニット、４８  ネットワークインタフェース、５０Ｌ  第１の左ボタン、５０Ｒ  第１の右ボタン、５２Ｌ  第２の左ボタン、５２Ｒ  第２の右ボタン、５４  左操作スティック、５６  右操作スティック、５８  ボタン群、６０  方向ボタン群、６２  コントローラケーブル、６４  仮想空間、６６  視点、６８  視線方向、７０  視野領域、７２  仮想地球オブジェクト、７４  山、７４ａ  頂上、７６  丘、７８  崖、８０  ピッチ角変更中心点、８２  仮想オブジェクトデータ記憶部、８４  仮想オブジェクトデータ取得部、８６  仮想空間表示部、８８  視点データ記憶部、９０  注視点位置算出部、９２  ピッチ角変更中心点位置算出部、９４  基準距離算出部、９６  基準距離データ記憶部、９８  視点移動速度決定部、１００  視点移動速度データ記憶部、１０２  許容範囲算出部、１０４  操作状態取得部、１０６  操作状態記憶部、１０８  操作状態変化判断部、１１０  視点移動部、１１２  ピッチ角変更中心点移動部、１１４  ピッチ角変更部、１１６  相対ピッチ角データ変更部、１１８  ピッチ角算出部、１２０  視点位置修正部、１２２  ピッチ角変更中心点位置修正部、１２４  地表面データ、１２６  基準面データ、１２８  地形面データ、１３０  基準面、１３２  地形面、１３４  視点データ、１３６  注視点、１３８  ピッチ角変更中心点位置データ、１４０  ヨー角データ、１４２  最大ピッチ角データ、１４４  相対ピッチ角データ、１４６  ヨー角基準方向、１４８  ピッチ角変更中心点基準面、１５０  ヨー角方向、１５２  ピッチ角変更中心点移動基準方向、１５４  ピッチ角変更基準方向、１５６  ピッチ角変更面、１５８  ピッチ角変更中心点投影点、１６０  視点投影点、１６２  許容範囲、１６４  移動基準点位置データ、１６６  前方向データ、１６８  標高データ、１７０  視点高度データ、１７２  ピッチ角データ、１７４  移動基準点、１７６  前方方向、１７８  視点基準点、Ｂ１  地平線
【図１】
0004958835.tif 000002
【図２】
0004958835.tif 000003
【図３Ａ】
0004958835.tif 000004
【図３Ｂ】
0004958835.tif 000005
【図４Ａ】
0004958835.tif 000006
【図４Ｂ】
0004958835.tif 000007
【図４Ｃ】
0004958835.tif 000008
【図５Ａ】
0004958835.tif 000009
【図５Ｂ】
0004958835.tif 000010
【図５Ｃ】
0004958835.tif 000011
【図５Ｄ】
0004958835.tif 000012
【図５Ｅ】
0004958835.tif 000013
【図５Ｆ】
0004958835.tif 000014
【図５Ｇ】
0004958835.tif 000015
【図５Ｈ】
0004958835.tif 000016
【図５Ｉ】
0004958835.tif 000017
【図５Ｊ】
0004958835.tif 000018
【図６】
0004958835.tif 000019
【図７】
0004958835.tif 000020
【図８】
0004958835.tif 000021
【図９】
0004958835.tif 000022
【図１０】
0004958835.tif 000023
【図１１】
0004958835.tif 000024
【図１２】
0004958835.tif 000025
【図１３】
0004958835.tif 000026
【図１４】
0004958835.tif 000027
【図１５】
0004958835.tif 000028
【図１６】
0004958835.tif 000029
【図１７】
0004958835.tif 000030
【図１８】
0004958835.tif 000031