情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
【課題】より自由度の高い画像を表示することができる情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法を提供する。
【解決手段】パノラマ画像取得手段は、パノラマ動画を記憶したパノラマ動画記憶手段から、表示装置に再生する所定時間毎に当該パノラマ動画の各フレームとなるパノラマ画像を読み出して逐次取得する。第1表示範囲設定手段は、取得されたパノラマ画像において、第1の表示領域に表示する範囲を設定する。第2表示範囲設定手段は、取得されたパノラマ画像において、第2の表示領域に表示する範囲を設定する。第1表示制御手段は、取得されたパノラマ画像のうち、第1表示範囲設定手段によって設定された範囲を第1の表示領域に逐次表示する。第2表示制御手段は、取得されたパノラマ画像のうち、第2表示範囲設定手段によって設定された範囲を第2の表示領域に逐次表示する。
【解決手段】パノラマ画像取得手段は、パノラマ動画を記憶したパノラマ動画記憶手段から、表示装置に再生する所定時間毎に当該パノラマ動画の各フレームとなるパノラマ画像を読み出して逐次取得する。第1表示範囲設定手段は、取得されたパノラマ画像において、第1の表示領域に表示する範囲を設定する。第2表示範囲設定手段は、取得されたパノラマ画像において、第2の表示領域に表示する範囲を設定する。第1表示制御手段は、取得されたパノラマ画像のうち、第1表示範囲設定手段によって設定された範囲を第1の表示領域に逐次表示する。第2表示制御手段は、取得されたパノラマ画像のうち、第2表示範囲設定手段によって設定された範囲を第2の表示領域に逐次表示する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法に関し、特に例えば、パノラマ動画を表示する情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法に関する。
【背景技術】
【0002】
可搬型ディスプレイにその動きや姿勢に応じて仮想空間を表示する技術がある(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平9−305788号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1に記載の技術は、1つの仮想空間を単一のディスプレイに表示するものであるため、表示できる範囲が限定されてしまう。
【0005】
それ故に、本発明の目的は、より自由度の高い画像を表示することができる情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法を提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明は例えば以下のような構成を採用し得る。なお、特許請求の範囲の記載を解釈する際に、特許請求の範囲の記載によってのみその範囲が解釈されるべきであることが理解され、特許請求の範囲の記載と本欄の記載とが矛盾する場合には、特許請求の範囲の記載が優先する。
【0007】
本発明の情報処理プログラムの一構成例は、少なくとも1つの表示装置に複数の画像を表示する情報処理装置に含まれるコンピュータで実行される。情報処理プログラムは、パノラマ画像取得手段、第1表示範囲設定手段、第2表示範囲設定手段、第1表示制御手段、および第2表示制御手段として、コンピュータを機能させる。パノラマ画像取得手段は、パノラマ動画を記憶したパノラマ動画記憶手段から、表示装置に再生する所定時間毎に当該パノラマ動画の各フレームとなるパノラマ画像を読み出して逐次取得する。第1表示範囲設定手段は、取得されたパノラマ画像において、第1の表示領域に表示する範囲を設定する。第2表示範囲設定手段は、取得されたパノラマ画像において、第2の表示領域に表示する範囲を設定する。第1表示制御手段は、取得されたパノラマ画像のうち、第1表示範囲設定手段によって設定された範囲を第1の表示領域に逐次表示する。第2表示制御手段は、取得されたパノラマ画像のうち、第2表示範囲設定手段によって設定された範囲を第2の表示領域に逐次表示する。
【0008】
上記「情報処理装置」は、表示装置とは別の装置によって構成されてもよいし、表示装置が情報処理機能を有する場合には表示装置によって構成されてもよい。また、前者の場合、「別の装置」によって本発明の各処理を実行し、表示装置は「別の装置」によって生成された画像を表示処理するのみでもよいし、表示装置が情報処理機能を有する場合には、表示装置の情報処理機能と「別の装置」の情報処理機能との協同により実現してもよい。また、「別の装置」は複数の情報処理装置によって分散処理するものであってもよい。「情報処理装置」は、後述する実施形態におけるゲーム装置の他、一般的なパーソナルコンピュータのような多用途の情報処理装置であってもよい。
【0009】
上記第1の表示領域および上記第2の表示領域は、上記表示装置が1つの装置で構成される場合は、当該表示装置の表示画面内の別の領域にそれぞれ設けられてもよい。また、上記第1の表示領域および上記第2の表示領域は、上記表示装置が2つ以上の装置で構成される場合は、それぞれ別の表示装置に設けられてもよい。この場合、上記第1の表示領域および上記第2の表示領域は、2つの可搬型表示装置にそれぞれ設けられてもいいし、可搬型表示装置と据置型表示装置とにそれぞれ設けられてもよい。
【0010】
上記「パノラマ画像」は、上下方向と左右方向のうち一方方向について画角が180度以上のパノラマ画像であることが好ましい。さらに好ましくは、一方方向について360度のパノラマ画像であることが好ましい。また、他方方向については、第1の表示装置および/または第2の表示装置に表示する画像の画角以上であることが好ましく、さらに言うと、当該画像の画角の2倍以上、120度以上、150度以上、または、180度であることが好ましい。
【0011】
上記「パノラマ動画記憶手段」には、当該情報処理装置が有する当該パノラマ動画の撮像機能により撮像された動画を記憶してもよいし、当該動画の撮像機能を有する他の装置により撮像された動画を所定の記憶媒体やネットワークを介して取り込んで記憶してもよい。
【0012】
上記によれば、パノラマ動画を構成するパノラマ画像の少なくとも一部が複数の表示領域それぞれに表示されるため、自由度の高いパノラマ画像を表示することができる。また、ユーザは、2つの表示領域に表示される画像を状況や好みに応じて使い分けることが可能となり、パノラマ動画の視聴に好適な画像を見ることも可能となる。
【0013】
また、上記第1の表示領域は、第1の表示装置に設けられてもよい。上記第2の表示領域は、第1の表示装置とは異なる第2の表示装置に設けられてもよい。上記第1表示範囲設定手段は、ユーザ操作に応じて、取得されたパノラマ画像における第1の表示装置に表示する範囲を設定してもよい。
【0014】
上記第1の表示装置および第2の表示装置は、一例として、それぞれ可搬型表示装置である。また、上記第1の表示装置および第2の表示装置は、他の例として、一方が可搬型表示装置で他方が据置型表示装置である。この場合、据置型表示装置は、後述する実施形態におけるモニタ2のように情報処理装置に接続された表示装置であり、可搬型表示装置と別体であればよく、情報処理装置によって生成された表示画像を表示することが可能なものであればどのようなものであってもよい。例えば、上記据置型表示装置は、情報処理装置と一体に(1つの筐体内に)構成されるものであってもよい。
【0015】
上記によれば、パノラマ動画を構成するパノラマ画像の少なくとも一部が複数の表示装置それぞれに表示され、少なくとも1つの表示装置に表示されるパノラマ画像の範囲がユーザ操作に応じて設定されるため、より自由度の高いパノラマ画像を表示することができ
る。例えば、ユーザは、2つの装置に表示される画像を操作状況や好みに応じて使い分けることが可能となり、ユーザ操作に好適な画像を見ることも可能となる。第2の表示装置に表示する画像を、ユーザとは異なる他の人が見るための画像として用いることもでき、複数の人が当該ユーザとコミュニケーションを取りながらパノラマ画像を見る場合にも好適な視聴環境となり得る。
【0016】
また、上記第1表示制御手段と上記第2表示制御手段とは、パノラマ動画において実質的に時間軸が同じとなるパノラマ画像の少なくとも一部を第1の表示装置と第2の表示装置とにそれぞれ表示してもよい。
【0017】
また、上記第2表示範囲設定手段は、第1表示範囲設定手段が範囲を設定した同じパノラマ画像において、第2の表示領域に表示する範囲を設定してもよい。上記第2表示制御手段は、第1表示制御手段が第1の表示領域に表示している同じパノラマ画像に対して第2表示範囲設定手段によって設定された範囲を第2の表示領域に逐次表示してもよい。
【0018】
上記によれば、パノラマ動画において実質的に時間軸が同じパノラマ画像の少なくとも一部が複数の表示装置に表示されるため、複数の表示装置を介して再生されている同じパノラマ動画の少なくとも一部をそれぞれ見た画像を表示することができる。
【0019】
また、上記第1表示範囲設定手段と上記第2表示範囲設定手段とは、第1の表示装置と第2の表示装置との実空間における位置関係に応じて、第1の表示装置に表示する範囲と第2の表示装置に表示する範囲とをそれぞれ設定してもよい。
【0020】
また、上記情報処理プログラムは、位置関係判定手段として、さらにコンピュータを機能させてもよい。位置関係判定手段は、第1の表示装置と第2の表示装置とが、実空間において所定の位置関係となったか否かを判定する。この場合、上記第1表示範囲設定手段と上記第2表示範囲設定手段とは、位置関係判定手段が肯定判定した時点の第1の表示装置の姿勢および/または第2の表示装置の姿勢を基準として、当該姿勢の変化に応じて、第1の表示装置に表示する範囲と第2の表示装置に表示する範囲とをそれぞれ設定してもよい。
【0021】
上記によれば、パノラマ動画によって形成されている空間を、複数の表示装置を介して覗いているかのような画像を表示することができる。
【0022】
また、上記第1の表示装置は、可搬型の表示装置であるとともに、ユーザ操作に応じたデータを出力することが可能であってもよい。この場合、上記第1表示範囲設定手段は、第1の表示装置から出力されるデータに基づいて、第1の表示装置に表示する範囲を設定してもよい。
【0023】
また、上記第2の表示装置は、据置型の表示装置でもよい。
【0024】
上記「可搬型の表示装置」は、ユーザが手に持って動かしたり、任意の位置に配置を変更したりすることができる程度の大きさの表示装置である。また、「可搬型の表示装置」は本発明の各処理を実行する機能を有してもよいし、他の情報処理装置によって生成された画像を受信して表示処理するのみでもよい。
【0025】
上記によれば、パノラマ画像の表示範囲を変化させるためのデータを出力手段と当該表示範囲のパノラマ画像を表示する表示装置とが一体となって構成されているために、ユーザが表示装置を把持して所望する表示範囲を表示させるために優れた操作環境となる。
【0026】
また、上記第1の表示装置は、当該第1の表示装置本体の動きまたは姿勢に応じたデータを出力するセンサを備えてもよい。この場合、上記第1表示範囲設定手段は、センサから出力されるデータに基づいて算出された第1の表示装置の姿勢に応じて、第1の表示装置に表示する範囲を設定してもよい。
【0027】
上記「センサ」は、ジャイロセンサ、加速度センサ、地磁気センサなど、第1の表示装置本体の姿勢の算出のためのデータを出力するセンサであればなんでもかまわない。
【0028】
上記「第1表示範囲設定手段」は、典型的には、第1の表示装置の姿勢変化に応じて、少なくとも同じ方向に第1の表示装置に表示する範囲を移動させる。また、好ましくは、「第1表示範囲設定手段」は、第1の表示装置の姿勢の変化量が大きいほど上記範囲の移動量を大きくする。さらに好ましくは、「第1表示範囲設定手段」は、第1の表示装置の姿勢の変化量と上記範囲の画像を生成するための仮想カメラの姿勢変化量とを同じにする。「第1表示範囲設定手段」は、第1の表示装置の現在の姿勢の基準姿勢からの変化にあわせて、上記仮想カメラの現在の姿勢の基準姿勢からの変化を制御してもよいし、第1の表示装置の現在の姿勢の直前の姿勢からの変化にあわせて、上記仮想カメラの現在の姿勢の直前の姿勢からの変化を制御してもよい。なお、上記「姿勢」は、2次元で設定されてもよいし、3次元で設定されてもよい。
【0029】
上記によれば、把持する表示装置の姿勢を変化させることによって、当該姿勢変化に応じた表示範囲のパノラマ画像が表示されるため、あたかもパノラマ動画によって形成されている空間を、第1の表示装置を介して覗いているかのような画像を第1の表示装置に表示することができる。
【0030】
また、上記センサは、第1の表示装置本体の動きまたは姿勢に応じたデータを出力するジャイロセンサおよび加速度センサの少なくとも一方であってもよい。この場合、上記第1表示範囲設定手段は、ジャイロセンサおよび加速度センサの少なくとも一方から出力されるデータに基づいて算出された第1の表示装置の姿勢に応じて、第1の表示装置に表示する範囲を設定してもよい。
【0031】
上記によれば、ジャイロセンサから得られる角速度データや加速度センサから得られる加速度データを用いることによって、容易に表示装置本体の姿勢を算出することができる。
【0032】
また、上記第2表示範囲設定手段は、パノラマ画像に対する所定の範囲を、第2の表示装置に表示する範囲として設定してもよい。
【0033】
上記によれば、第2の表示装置にパノラマ動画によって形成する空間における所定の範囲が常に表示されるため、ユーザが当該所定の範囲のパノラマ動画を常に見ることができる。
【0034】
また、上記パノラマ動画記憶手段は、現実世界または仮想世界を移動しながら撮像したパノラマ動画を記憶してもよい。この場合、上記所定の範囲は、パノラマ画像を移動しながら撮像した際の移動方向を見たパノラマ画像における範囲であってもよい。
【0035】
上記によれば、第2の表示装置が配置されている方向へ移動していくパノラマ動画の空間を形成することができ、ユーザが当該移動方向を認識しながらパノラマ動画を見ることができる。
【0036】
また、上記第2表示範囲設定手段は、第1の表示装置に表示されるパノラマ画像の範囲より広い範囲を、第2の表示装置に表示する範囲として設定してもよい。
【0037】
上記によれば、広い範囲を見たい場合に第2の表示装置を見るなど、所望する表示範囲の大きさに応じて、複数の表示装置を使い分けることができる。
【0038】
また、上記第1の表示装置は、可搬型の表示装置であるとともに、ユーザ操作に応じたデータを出力することが可能であってもよい。上記第2の表示装置は、据置型の表示装置でもよい。上記第1表示範囲設定手段は、第1の表示装置から出力されるデータに基づいて、第1の表示装置に表示する範囲を設定してもよい。上記第2表示範囲設定手段は、第1表示範囲設定手段によって設定された範囲を、第2の表示装置に表示する範囲に設定してもよい。
【0039】
上記によれば、第1の表示装置に表示されるパノラマ動画と同じ範囲が第2の表示装置にも表示されるため、可搬型の第1の表示装置を用いて操作しているユーザが見ているパノラマ動画を、据置型の第2の表示装置を介して他のユーザが見ることが可能となる。
【0040】
また、上記第1の表示装置は、可搬型の表示装置であるとともに、ユーザ操作に応じたデータを出力することが可能であってもよい。上記第2の表示装置は、据置型の表示装置でもよい。上記第1表示範囲設定手段は、第1の表示装置から出力されるデータに基づいて、第1の表示装置に表示する範囲を設定してもよい。上記第2表示範囲設定手段は、第1表示範囲設定手段によって設定される第1の表示装置に表示する範囲に基づいて第2の表示装置に表示する範囲を設定するとともに、第1の表示装置に表示する範囲がユーザ操作に応じて変化する変化量を抑制した範囲を第2の表示装置に表示する範囲に設定してもよい。
【0041】
上記によれば、可搬型の第1の表示装置に表示されるパノラマ動画と同様の範囲を据置型の第2の表示装置に表示する場合、第1の表示装置に表示されるパノラマ動画の範囲がユーザ操作に応じて変化する変化量を抑制した状態で据置型の第2の表示装置に表示されるため、当該第2の表示装置を見る他のユーザの映像酔いを防止することが可能となる。
【0042】
また、上記パノラマ画像取得手段は、パノラマ動画記憶手段に記憶されたパノラマ動画をデコードして読み出したパノラマ画像を逐次取得してもよい。上記第1の表示範囲設定手段は、デコードされて取得されたパノラマ画像から第1の表示装置に表示する範囲を設定してもよい。上記第2の表示範囲設定手段は、デコードされて取得されたパノラマ画像から第2の表示装置に表示する範囲を設定してもよい。上記第1表示制御手段は、デコードされて取得されたパノラマ画像のうち、第1表示範囲設定手段によって設定された範囲を第1の表示装置に逐次表示してもよい。上記第2表示制御手段は、デコードされて取得されたパノラマ画像のうち、第2表示範囲設定手段によって設定された範囲を第2の表示装置に逐次表示してもよい。
【0043】
上記によれば、デコードされて取得されたパノラマ画像がそれぞれ複数の表示装置に表示されるため、当該表示のための処理負荷を軽減することができる。
【0044】
また、上記第1表示制御手段は、第1の表示装置に表示するための画像を示すデータを当該第1の表示装置へ出力してもよい。上記第1の表示装置は、画像データ取得手段を備えてもよい。画像データ取得手段は、第1表示制御手段によって出力されたデータを取得する。この場合、上記第1の表示装置の表示画面は、画像データ取得手段が取得した画像データが示す画像を表示してもよい。
【0045】
上記によれば、第1の表示装置がゲーム処理等の情報処理を実行しない、いわゆるシンクライアント端末として機能することができる。
【0046】
また、上記第2の表示装置は、可搬型の表示装置であるとともに、ユーザ操作に応じたデータを出力することが可能であってもよい。上記第2表示範囲設定手段は、第2の表示装置から出力されるデータに基づいて、第2の表示装置に表示する範囲を設定してもよい。
【0047】
上記によれば、複数の可搬型表示装置に、それぞれパノラマ画像の少なくとも一部を表示することができる。
【0048】
また、上記第2の表示装置は、当該第1の表示装置本体の動きまたは姿勢に応じたデータを出力するセンサを備えてもよい。この場合、上記第2表示範囲設定手段は、センサから出力されるデータに基づいて算出された第2の表示装置の姿勢に応じて、第2の表示装置に表示する範囲を設定してもよい。
【0049】
上記によれば、複数のユーザがそれぞれ把持する表示装置の姿勢を変化させることによって、当該姿勢変化に応じた表示範囲のパノラマ画像が表示されるため、あたかもパノラマ動画によって形成されている空間を、複数のユーザが複数の表示装置を介して覗いているかのような画像をそれぞれの表示装置に表示することができる。
【0050】
また、上記情報処理プログラムは、入力受付手段として、さらにコンピュータを機能させてもよい。入力受付手段は、複数の表示装置それぞれに対応付けられた各入力装置からの入力を受け付ける。この場合、上記第1表示範囲設定手段は、第1の表示装置に対応付けられた第1の入力装置から受け付けられた入力に基づいて、取得されたパノラマ画像から当該第1の表示装置に表示する範囲を設定してもよい。上記第2表示範囲設定手段は、第2の表示装置に対応付けられた第2の入力装置から受け付けられた入力に基づいて、取得されたパノラマ画像から当該第2の表示装置に表示する範囲を設定してもよい。
【0051】
上記によれば、表示装置それぞれに対応する入力装置を操作することによって、自由に表示範囲を変化させることができる。
【0052】
また、本発明は、上記各手段を備える情報処理装置および情報処理システムや上記各手段で行われる動作を含む情報処理方法の形態で実施されてもよい。
【発明の効果】
【0053】
本発明によれば、より自由度の高い画像を表示することができる。
【図面の簡単な説明】
【0054】
【図1】ゲームシステム1の外観図
【図2】ゲーム装置3の内部構成を示すブロック図
【図3】コントローラ5の外観構成を示す斜視図
【図4】コントローラ5の外観構成を示す斜視図
【図5】コントローラ5の内部構造を示す図
【図6】コントローラ5の内部構造を示す図
【図7】コントローラ5の構成を示すブロック図
【図8】端末装置7の外観構成を示す図
【図9】ユーザが端末装置7を把持した様子を示す図
【図10】端末装置7の内部構成を示すブロック図
【図11】完全球パノラマの場合の模式図
【図12】非完全球パノラマ(下方死角有り)の場合の模式図
【図13】非完全全球パノラマ(下方死角有り)の場合の変形例
【図14】非完全全球パノラマ(上方死角有り)の場合の模式図
【図15】非完全全球パノラマ(上方死角有り)の場合の変形例
【図16】左右のみ全周パノラマの場合の模式図
【図17】360度より小さいパノラマの場合の模式図
【図18A】端末装置7の姿勢に応じた仮想カメラ101の制御を示す図
【図18B】端末装置7の姿勢に応じた仮想カメラ101の制御を示す図
【図18C】端末装置7の姿勢に応じた仮想カメラ101の制御を示す図
【図19】ファイルのデータフォーマット
【図20】ゲーム装置3によって実行される本発明の第1の実施形態に係る処理のフローチャート
【図21】ゲーム装置3によって実行される本発明の第1の実施形態に係る処理のフローチャート
【図22】ゲーム装置3によって実行される本発明の第1の実施形態に係る処理のフローチャート
【図23】フレーム毎のパノラマ画像を構成するパノラマ動画を撮像し、当該パノラマ動画をエンコードして記録するまでの処理の流れの一例を示す図
【図24】エンコードされたパノラマ動画データをデコードして表示するまでの処理の流れの一例を示す図
【図25】ゲーム装置3のメインメモリに記憶される本発明の第2の実施形態に係る主なデータおよびプログラムの一例を示す図
【図26】ゲーム装置3において実行される本発明の第2の実施形態に係る処理の前半の一例を示すフローチャート
【図27】ゲーム装置3において実行される本発明の第2の実施形態に係る処理の後半の一例を示すフローチャート
【発明を実施するための形態】
【0055】
[1.ゲームシステムの全体構成]
以下、図面を参照して、本発明の一実施形態に係るゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。図1において、ゲームシステム1は、テレビジョン受像器等に代表される据置型のディスプレイ装置(以下、「モニタ」と記載する)2、据置型のゲーム装置3、光ディスク4、コントローラ5、マーカ装置6、および、端末装置7を含む。ゲームシステム1は、コントローラ5および/または端末装置7を用いたゲーム操作に基づいてゲーム装置3においてゲーム処理を実行し、ゲーム処理によって得られるゲーム画像をモニタ2および/または端末装置7に表示するものである。
【0056】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるための情報処理プログラム(典型的にはゲームプログラム)が記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されている情報処理プログラムを読み出して実行することによってゲーム処理を実行する。
【0057】
ゲーム装置3には、モニタ2が接続コードを介して接続される。モニタ2は、ゲーム装置3において実行されるゲーム処理によって得られるゲーム画像を表示する。モニタ2はスピーカ2a(図2)を有しており、スピーカ2aは、上記ゲーム処理の結果得られるゲーム音声を出力する。なお、他の実施形態においては、ゲーム装置3と据置型の表示装置とは一体となっていてもよい。また、ゲーム装置3とモニタ2との通信は無線通信であってもよい。
【0058】
モニタ2の画面の周辺(図1では画面の上側)には、マーカ装置6が設置される。詳細は後述するが、ユーザ(プレイヤ)はコントローラ5を動かすゲーム操作を行うことができ、マーカ装置6は、コントローラ5の動きや位置や姿勢等をゲーム装置3が算出するために用いられる。マーカ装置6は、その両端に2つのマーカ6Rおよび6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LED(Light Emitting Diode)であり、モニタ2の前方に向かって赤外光を出力する。マーカ装置6はゲーム装置3に接続されており、ゲーム装置3はマーカ装置6が備える各赤外LEDの点灯を制御することが可能である。なお、マーカ装置6は可搬型であり、ユーザはマーカ装置6を自由な位置に設置することができる。図1ではマーカ装置6がモニタ2の上に設置された態様を表しているが、マーカ装置6を設置する位置および向きは任意である。
【0059】
コントローラ5は、自機に対して行われた操作の内容を表す操作データをゲーム装置3に与えるものである。コントローラ5とゲーム装置3とは無線通信によって通信可能である。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。また、本実施形態では、ゲームシステム1に含まれるコントローラ5は1つとするが、ゲーム装置3は複数のコントローラと通信可能であり、所定台数のコントローラを同時に使用することによって複数人でゲームをプレイすることが可能である。コントローラ5の詳細な構成については後述する。
【0060】
端末装置7は、ユーザが把持可能な程度の大きさであり、ユーザは端末装置7を手に持って動かしたり、あるいは、端末装置7を自由な位置に配置したりして使用することが可能である。詳細な構成は後述するが、端末装置7は、表示手段であるLCD(Liquid Crystal Display:液晶表示装置)51、および、入力手段(後述するタッチパネル52やジャイロセンサ64等)を備える。端末装置7とゲーム装置3とは無線(有線であってもよい)によって通信可能である。端末装置7は、ゲーム装置3で生成された画像(例えばゲーム画像)のデータをゲーム装置3から受信し、画像をLCD51に表示する。なお、本実施形態では表示装置としてLCDを用いているが、端末装置7は、例えばEL(Electro Luminescence:電界発光)を利用した表示装置等、他の任意の表示装置を有していてもよい。また、端末装置7は、自機に対して行われた操作の内容を表す操作データをゲーム装置3に送信する。
【0061】
[2.ゲーム装置3の内部構成]
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の内部構成を示すブロック図である。ゲーム装置3は、CPU(Central Processing Unit)10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
【0062】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間におけるデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムLSI11の内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
【0063】
システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM(Video RAM)11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0064】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。なお、ゲーム装置3は、モニタ2に表示する画像と、端末装置7に表示する画像との両方を生成する。以下では、モニタ2に表示される画像を「モニタ用画像」と呼び、端末装置7に表示される画像を「端末用画像」と呼ぶことがある。
【0065】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。なお、本実施形態においては、ゲーム音声についてもゲーム画像と同様、モニタ2のスピーカから出力するゲーム音声と、端末装置7のスピーカから出力するゲーム音声との両方が生成される。以下では、モニタ2から出力される音声を「モニタ用音声」と呼び、端末装置7から出力される音声を「端末用音声」と呼ぶことがある。
【0066】
上記のようにゲーム装置3において生成される画像および音声のうちで、モニタ2において出力される画像および音声のデータは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してモニタ2に出力するとともに、読み出した音声データを、モニタ2に内蔵されるスピーカ2aに出力する。これによって、モニタ2に画像が表示されるとともにスピーカ2aから音が出力される。なお、ゲーム装置3とモニタ2との接続は、どのような方式で行われてもよいが、ゲーム装置3は、モニタ2を制御する制御指令を有線または無線でモニタ2へ送信するようにしてもよい。例えばHDMI(High−Definition Multimedia Interface)規格に則ったHDMIケーブルが用いられてもよい。HDMI規格では、CEC(Consumer Electronics Control)と呼ばれる機能によって、接続相手の機器を制御することが可能である。したがって、HDMIケーブルが用いられる場合のように、ゲーム装置3がモニタ2に対する制御が可能である場合には、ゲーム装置3は、適宜のタイミングでモニタ2の電源をオンにしたり、モニタ2の入力を切り替えたりすることができる。
【0067】
また、ゲーム装置3において生成される画像および音声のうちで、端末装置7において出力される画像および音声のデータは、入出力プロセッサ11a等によって端末装置7へ送信される。入出力プロセッサ11a等による端末装置7へのデータの送信については後述する。
【0068】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、ネットワーク通信モジュール18、コントローラ通信モジュール19、拡張コネクタ20、メモリカード用コネクタ21、コーデックLSI27に接続される。また、ネットワーク通信モジュール18にはアンテナ22が接続される。コントローラ通信モジュール19にはアンテナ23が接続される。コーデックLSI27は端末通信モジュール28に接続され、端末通信モジュール28にはアンテナ29が接続される。
【0069】
ゲーム装置3は、インターネット等のネットワークに接続して外部の情報処理装置(例えば他のゲーム装置や、各種サーバ、コンピュータ等)と通信を行うことが可能である。すなわち、入出力プロセッサ11aは、ネットワーク通信モジュール18およびアンテナ22を介してインターネット等のネットワークに接続可能であり、ネットワークに接続される他の装置と通信を行うことができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、ネットワーク通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、外部情報処理装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22およびネットワーク通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と外部情報処理装置との間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。また、フラッシュメモリ17にはゲームプログラムが記憶されてもよい。
【0070】
また、ゲーム装置3は、コントローラ5からの操作データを受信することが可能である。すなわち、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23およびコントローラ通信モジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0071】
また、ゲーム装置3は、端末装置7との間で画像や音声等のデータを送受信することが可能である。入出力プロセッサ11aは、端末装置7へゲーム画像(端末用ゲーム画像)を送信する場合、GPU11bが生成したゲーム画像のデータをコーデックLSI27へ出力する。コーデックLSI27は、入出力プロセッサ11aからの画像データに対して所定の圧縮処理を行う。端末通信モジュール28は、端末装置7との間で無線通信を行う。したがって、コーデックLSI27によって圧縮された画像データは、端末通信モジュール28によってアンテナ29を介して端末装置7へ送信される。なお、本実施形態では、ゲーム装置3から端末装置7へ送信される画像データはゲームに用いるものであり、ゲームにおいては表示される画像に遅延が生じるとゲームの操作性に悪影響が出る。そのため、ゲーム装置3から端末装置7への画像データの送信に関しては、できるだけ遅延が生じないようにすることが好ましい。したがって、本実施形態では、コーデックLSI27は、例えばH.264規格といった高効率の圧縮技術を用いて画像データを圧縮する。なお、それ以外の圧縮技術を用いてもよいし、通信速度が十分である場合には無圧縮で画像データを送信する構成であってもよい。また、端末通信モジュール28は、例えばWi−Fiの認証を受けた通信モジュールであり、例えばIEEE802.11n規格で採用されるMIMO(Multiple Input Multiple Output)の技術を用いて端末装置7との間の無線通信を高速に行うようにしてもよいし、他の通信方式を用いてもよい。
【0072】
また、ゲーム装置3は、画像データの他、音声データを端末装置7へ送信する。すなわち、入出力プロセッサ11aは、DSP11cが生成した音声データを、コーデックLSI27を介して端末通信モジュール28へ出力する。コーデックLSI27は、音声データに対しても画像データと同様に圧縮処理を行う。音声データに対する圧縮の方式は、どのような方式であってもよいが、圧縮率が高く、音声の劣化が少ない方式が好ましい。また、他の実施形態においては、音声データは圧縮されずに送信されてもよい。端末通信モジュール28は、圧縮された画像データおよび音声データを、アンテナ29を介して端末装置7へ送信する。
【0073】
さらに、ゲーム装置3は、上記画像データおよび音声データの他に、必要に応じて各種の制御データを端末装置7へ送信する。制御データは、端末装置7が備える構成要素に対する制御指示を表すデータであり、例えばマーカ部(図10に示すマーカ部55)の点灯を制御する指示や、カメラ(図10に示すカメラ56)の撮像を制御する指示等を表す。入出力プロセッサ11aは、CPU10の指示に応じて制御データを端末装置7へ送信する。なお、この制御データに関して、本実施形態ではコーデックLSI27はデータの圧縮処理を行わないが、他の実施形態においては圧縮処理を行うようにしてもよい。なお、ゲーム装置3から端末装置7へ送信される上述のデータは、必要に応じて暗号化がされていてもよいし、されていなくともよい。
【0074】
また、ゲーム装置3は、端末装置7から各種データを受信可能である。詳細は後述するが、本実施形態では、端末装置7は、操作データ、画像データ、および音声データを送信する。端末装置7から送信される各データはアンテナ29を介して端末通信モジュール28によって受信される。ここで、端末装置7からの画像データおよび音声データは、ゲーム装置3から端末装置7への画像データおよび音声データと同様の圧縮処理が施されている。したがって、これら画像データおよび音声データについては、端末通信モジュール28からコーデックLSI27に送られ、コーデックLSI27によって伸張処理が施されて入出力プロセッサ11aに出力される。一方、端末装置7からの操作データに関しては、画像や音声に比べてデータ量が少ないので、圧縮処理が施されていなくともよい。また、必要に応じて暗号化がされていてもよいし、されていなくともよい。したがって、操作データは、端末通信モジュール28で受信された後、コーデックLSI27を介して入出力プロセッサ11aに出力される。入出力プロセッサ11aは、端末装置7から受信したデータを、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0075】
また、ゲーム装置3は、他の機器や外部記憶媒体に接続することが可能である。すなわち、入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタである。拡張コネクタ20に対しては、外部記憶媒体のようなメディアを接続したり、他のコントローラ等の周辺機器を接続したり、有線の通信用コネクタを接続することによってネットワーク通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【0076】
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、図示しないACアダプタによって外部の電源からゲーム装置3の各構成要素に対して電力が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0077】
なお、他の実施形態においては、ゲーム装置3が備える各構成要素のうちでいくつかの構成要素は、ゲーム装置3とは別体の拡張機器として構成されてもよい。このとき、拡張機器は、例えば上記拡張コネクタ20を介してゲーム装置3と接続されるようにしてもよい。具体的には、拡張機器は、例えば上記コーデックLSI27、端末通信モジュール28およびアンテナ29の各構成要素を備えており、拡張コネクタ20に対して着脱可能であってもよい。これによれば、上記各構成要素を備えていないゲーム装置に対して上記拡張機器を接続することによって、当該ゲーム装置を端末装置7と通信可能な構成とすることができる。
【0078】
[3.コントローラ5の構成]
次に、図3〜図7を参照して、コントローラ5について説明する。図3は、コントローラ5の外観構成を示す斜視図である。図4は、コントローラ5の外観構成を示す斜視図である。図3は、コントローラ5の上側後方から見た斜視図であり、図4は、コントローラ5を下側前方から見た斜視図である。
【0079】
図3および図4において、コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。ユーザは、コントローラ5に設けられたボタンを押下すること、および、コントローラ5自体を動かしてその位置や姿勢(傾き)を変えることによってゲーム操作を行うことができる。
【0080】
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字ボタン32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、および電源ボタン32hが設けられる。本明細書では、これらのボタン32a〜32hが設けられるハウジング31の上面を「ボタン面」と呼ぶことがある。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行する情報処理プログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32fおよび電源ボタン32hは、その上面がハウジング31の上面に埋没している。これによって、ユーザがホームボタン32fまたは電源ボタン32hを誤って押下することを防止することができる。
【0081】
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、コントローラ5に他の機器(例えば、他のセンサユニットやコントローラ)を接続するために利用される。また、ハウジング31の後面におけるコネクタ33の両側には、上記他の機器が容易に離脱することを防止するために係止穴33aが設けられている。
【0082】
ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をユーザに通知したり、コントローラ5の電池残量をユーザに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dのいずれか1つが点灯する。
【0083】
また、コントローラ5は撮像情報演算部35(図6)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6Rおよび6Lからの赤外光を少なくとも透過する材質で構成される。
【0084】
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカ47(図5)からの音を外部に放出するための音抜き孔31aが形成されている。
【0085】
次に、図5および図6を参照して、コントローラ5の内部構造について説明する。図5および図6は、コントローラ5の内部構造を示す図である。なお、図5は、コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6は、コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6に示す斜視図は、図5に示す基板30を裏面から見た斜視図となっている。
【0086】
図5において、ハウジング31の内部には基板30が固設されており、当該基板30の上主面上に各操作ボタン32a〜32h、各LED34a〜34d、加速度センサ37、アンテナ45、およびスピーカ47等が設けられる。これらは、基板30等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図6参照)に接続される。本実施形態では、加速度センサ37は、X軸方向に関してコントローラ5の中心からずれた位置に配置されている。これによって、コントローラ5をZ軸回りに回転させたときのコントローラ5の動きが算出しやすくなる。また、加速度センサ37は、長手方向(Z軸方向)に関してコントローラ5の中心よりも前方に配置されている。また、無線モジュール44(図6)およびアンテナ45によって、コントローラ5がワイヤレスコントローラとして機能する。
【0087】
一方、図6において、基板30の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ5の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を備えている。これらの部材38〜41はそれぞれ基板30の下主面に取り付けられる。
【0088】
さらに、基板30の下主面上には、上記マイコン42およびバイブレータ46が設けられている。バイブレータ46は、例えば振動モータやソレノイドであり、基板30等に形成された配線によってマイコン42と接続される。マイコン42の指示によりバイブレータ46が作動することによってコントローラ5に振動が発生する。これによって、コントローラ5を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ46は、ハウジング31のやや前方寄りに配置される。つまり、バイブレータ46がコントローラ5の中心よりも端側に配置することによって、バイブレータ46の振動によりコントローラ5全体を大きく振動させることができる。また、コネクタ33は、基板30の下主面上の後端縁に取り付けられる。なお、図5および図6に示す他、コントローラ5は、マイコン42の基本クロックを生成する水晶振動子、スピーカ47に音声信号を出力するアンプ等を備えている。
【0089】
なお、図3〜図6に示したコントローラ5の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。また、本実施形態では、撮像手段による撮像方向はZ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ5における撮像情報演算部35の位置(撮像情報演算部35の光入射面35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【0090】
図7は、コントローラ5の構成を示すブロック図である。コントローラ5は、操作部32(各操作ボタン32a〜32i)、撮像情報演算部35、通信部36、加速度センサ37、およびジャイロセンサ48を備えている。コントローラ5は、自機に対して行われた操作内容を表すデータを操作データとしてゲーム装置3へ送信するものである。なお、以下では、コントローラ5が送信する操作データを「コントローラ操作データ」と呼び、端末装置7が送信する操作データを「端末操作データ」と呼ぶことがある。
【0091】
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を表す操作ボタンデータを通信部36のマイコン42へ出力する。
【0092】
撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ5の動きでも追跡して解析することができる。
【0093】
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ5の前方から入射する光から赤外線のみを通過させる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDセンサのような固体撮像素子であり、レンズ39が集光した赤外線を受光して画像信号を出力する。ここで、撮像対象となる端末装置7のマーカ部55およびマーカ装置6は、赤外光を出力するマーカで構成される。したがって、赤外線フィルタ38を設けることによって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを受光して画像データを生成するので、撮像対象(マーカ部55および/またはマーカ装置6)の画像をより正確に撮像することができる。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象の位置を算出する。画像処理回路41は、算出された位置を示す座標を通信部36のマイコン42へ出力する。この座標のデータは、マイコン42によって操作データとしてゲーム装置3に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ5自体の向き(傾斜角度)や位置に対応して変化するので、ゲーム装置3はこのマーカ座標を用いてコントローラ5の向きや位置を算出することができる。
【0094】
なお、他の実施形態においては、コントローラ5は画像処理回路41を備えていない構成であってもよく、撮像画像自体がコントローラ5からゲーム装置3へ送信されてもよい。このとき、ゲーム装置3は、画像処理回路41と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【0095】
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する、すなわち、コントローラ5に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。例えば、2軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。なお、加速度センサ37は、例えば静電容量式のMEMS(Micro Electro Mechanical System)型加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【0096】
本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ37からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ5を基準に設定されるXYZ座標系(コントローラ座標系)における3次元のベクトルとして表される。
【0097】
加速度センサ37が検出した加速度を表すデータ(加速度データ)は、通信部36へ出力される。なお、加速度センサ37が検出した加速度は、コントローラ5自体の向き(傾斜角度)や動きに対応して変化するので、ゲーム装置3は取得された加速度データを用いてコントローラ5の向きや動きを算出することができる。本実施形態では、ゲーム装置3は、取得された加速度データに基づいてコントローラ5の姿勢や傾斜角度等を算出する。
【0098】
なお、加速度センサ37(後述する加速度センサ63についても同様)から出力される加速度の信号に基づいて、ゲーム装置3のプロセッサ(例えばCPU10)またはコントローラ5のプロセッサ(例えばマイコン42)等のコンピュータが処理を行うことによって、コントローラ5に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ37を搭載するコントローラ5が静止状態であることを前提としてコンピュータ側の処理が実行される場合(すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合)、コントローラ5が現実に静止状態であれば、検出された加速度に基づいてコントローラ5の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ37の検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かによって、コントローラ5が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ37の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ5がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ37からの出力に基づいてコントローラ5の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ5の傾斜方向を算出するようにしてもよい。このように、加速度センサ37をプロセッサと組み合わせて用いることによって、コントローラ5の傾斜角度または姿勢を判定することができる。
【0099】
一方、コントローラ5が動的な状態(コントローラ5が動かされている状態)であることを前提とする場合には、加速度センサ37は重力加速度に加えてコントローラ5の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ5の動き方向を知ることができる。また、コントローラ5が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ5の傾きを知ることが可能である。なお、他の実施例では、加速度センサ37は、内蔵の加速度検出手段で検出された加速度信号をマイコン42に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ37が静的な加速度(例えば、重力加速度)を検出するために用いられる場合、加速度信号を傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0100】
ジャイロセンサ48は、3軸(本実施形態では、XYZ軸)回りの角速度を検出する。本明細書では、コントローラ5の撮像方向(Z軸正方向)を基準として、X軸回りの回転方向をピッチ方向、Y軸回りの回転方向をヨー方向、Z軸回りの回転方向をロール方向と呼ぶ。ジャイロセンサ48は、3軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。例えば、ジャイロセンサ48は、3軸ジャイロセンサであってもよいし、2軸ジャイロセンサと1軸ジャイロセンサとを組み合わせて3軸周りの角速度を検出するものであってもよい。ジャイロセンサ48で検出された角速度を表すデータは、通信部36へ出力される。また、ジャイロセンサ48は1軸または2軸回りの角速度を検出するものであってもよい。
【0101】
通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。
【0102】
操作部32、撮像情報演算部35、加速度センサ37、およびジャイロセンサ48からマイコン42へ出力されたデータは、一時的にメモリ43に格納される。これらのデータは、操作データ(コントローラ操作データ)としてゲーム装置3へ送信される。すなわち、マイコン42は、ゲーム装置3のコントローラ通信モジュール19への送信タイミングが到来すると、メモリ43に格納されている操作データを無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ5から送信される。微弱電波信号はゲーム装置3側のコントローラ通信モジュール19で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、コントローラ5から取得した操作データを用いてゲーム処理を行う。なお、通信部36からコントローラ通信モジュール19への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ5の通信部36は、例えば1/200秒に1回の割合で操作データをゲーム装置3のコントローラ通信モジュール19へ出力する。
【0103】
以上のように、コントローラ5は、自機に対する操作を表す操作データとして、マーカ座標データ、加速度データ、角速度データ、および操作ボタンデータを送信可能である。また、ゲーム装置3は、上記操作データをゲーム入力として用いてゲーム処理を実行する。したがって、上記コントローラ5を用いることによって、ユーザは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ5自体を動かすゲーム操作を行うことができる。例えば、コントローラ5を任意の姿勢に傾ける操作、コントローラ5によって画面上の任意の位置を指示する操作、および、コントローラ5自体を動かす操作等を行うことが可能となる。
【0104】
また、本実施形態において、コントローラ5は、ゲーム画像を表示する表示手段を有しないが、例えば電池残量を表す画像等を表示するための表示手段を有していてもよい。
【0105】
[4.端末装置7の構成]
次に、図8〜図10を参照して、端末装置7の構成について説明する。図8は、端末装置7の外観構成を示す図である。図8における(a)図は端末装置7の正面図であり、(b)図は上面図であり、(c)図は右側面図であり、(d)図は下面図である。また、図9は、ユーザが端末装置7を把持した様子を示す図である。
【0106】
図8に示されるように、端末装置7は、大略的には横長の長方形の板状形状であるハウジング50を備える。ハウジング50は、ユーザが把持することができる程度の大きさである。したがって、ユーザは、端末装置7を持って動かしたり、端末装置7の配置位置を変更したりすることができる。
【0107】
端末装置7は、ハウジング50の表面にLCD51を有する。LCD51は、ハウジング50の表面の中央付近に設けられる。したがって、ユーザは、図9に示すようにLCD51の両側部分のハウジング50を持つことによって、LCD51の画面を見ながら端末装置を持って動かすことができる。なお、図9ではユーザがLCD51の左右両側の部分のハウジング50を持つことで端末装置7を横持ちで(横に長い向きにして)持つ例を示しているが、端末装置7を縦持ちで(縦に長い向きにして)持つことも可能である。
【0108】
図8の(a)図に示すように、端末装置7は、操作手段として、LCD51の画面上にタッチパネル52を有する。本実施形態では、タッチパネル52は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。また、タッチパネル52はシングルタッチ方式でもよいし、マルチタッチ方式であってもよい。本実施形態では、タッチパネル52として、LCD51の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル52の解像度とLCD51の解像度が一致している必要はない。タッチパネル52に対する入力は通常タッチペンを用いて行われるが、タッチペンに限らずユーザの指でタッチパネル52に対する入力をすることも可能である。なお、ハウジング50には、タッチパネル52に対する操作を行うために用いられるタッチペンを収納するための収納穴が設けられていてもよい。このように、端末装置7はタッチパネル52を備えるので、ユーザは、端末装置7を動かしながらタッチパネル52を操作することができる。つまりユーザは、LCD51の画面を動かしつつ、その画面に対して直接(タッチパネル52によって)入力を行うことができる。
【0109】
図8に示すように、端末装置7は、操作手段として、2つのアナログスティック53Aおよび53Bと、複数のボタン54A〜54Lとを備えている。各アナログスティック53Aおよび53Bは、方向を指示するデバイスである。各アナログスティック53Aおよび53Bは、ユーザの指で操作されるスティック部がハウジング50の表面に対して任意の方向(上下左右および斜め方向の任意の角度)にスライド(または傾倒)することができるように構成されている。また、左アナログスティック53AはLCD51の画面の左側に、右アナログスティック53BはLCD51の画面の右側にそれぞれ設けられる。したがって、ユーザは、左右いずれの手でもアナログスティックを用いて方向を指示する入力を行うことができる。また、図9に示すように、各アナログスティック53Aおよび53Bは、ユーザが端末装置7の左右部分を把持した状態で操作可能な位置に設けられるので、ユーザは、端末装置7を持って動かす場合においても各アナログスティック53Aおよび53Bを容易に操作することができる。
【0110】
各ボタン54A〜54Lは、所定の入力を行うための操作手段である。以下に示すように、各ボタン54A〜54Lは、ユーザが端末装置7の左右部分を把持した状態で操作可能な位置に設けられる(図9参照)。したがって、ユーザは、端末装置7を持って動かす場合においてもこれらの操作手段を容易に操作することができる。
【0111】
図8の(a)図に示すように、ハウジング50の表面には、各操作ボタン54A〜54Lのうち、十字ボタン(方向入力ボタン)54Aと、ボタン54B〜54Hとが設けられる。つまり、これらのボタン54A〜54Gは、ユーザの親指で操作可能な位置に配置されている(図9参照)。
【0112】
十字ボタン54Aは、LCD51の左側であって、左アナログスティック53Aの下側に設けられる。つまり、十字ボタン54Aはユーザの左手で操作可能な位置に配置されている。十字ボタン54Aは、十字の形状を有しており、上下左右の方向を指示することが可能なボタンである。また、ボタン54B〜54Dは、LCD51の下側に設けられる。これら3つのボタン54B〜54Dは、左右両方の手で操作可能な位置に配置されている。また、4つのボタン54E〜54Hは、LCD51の右側であって、右アナログスティック53Bの下側に設けられる。つまり、4つのボタン54E〜54Hはユーザの右手で操作可能な位置に配置されている。さらに、4つのボタン54E〜54Hは、(4つのボタン54E〜54Hの中心位置に対して)上下左右の位置関係となるように配置されている。したがって、端末装置7は、ユーザに上下左右の方向を指示させるためのボタンとして4つのボタン54E〜54Hを機能させることも可能である。
【0113】
また、図8の(a)図、(b)図、および(c)図に示すように、第1Lボタン54Iおよび第1Rボタン54Jは、ハウジング50の斜め上部分(左上部分および右上部分)に設けられる。具体的には、第1Lボタン54Iは、板状のハウジング50における上側の側面の左端に設けられ、上側および左側の側面から露出している。また、第1Rボタン54Jは、ハウジング50における上側の側面の右端に設けられ、上側および右側の側面から露出している。このように、第1Lボタン54Iは、ユーザの左手人差し指で操作可能な位置に配置され、第1Rボタン54Jは、ユーザの右手人差し指で操作可能な位置に配置される(図9参照)。
【0114】
また、図8の(b)図および(c)図に示すように、第2Lボタン54Kおよび第2Rボタン54Lは、板状のハウジング50の裏面(すなわちLCD51が設けられる表面の反対側の面)に突起して設けられる足部59Aおよび59Bに配置される。具体的には、第2Lボタン54Kは、ハウジング50の裏面の左側(表面側から見たときの左側)のやや上方に設けられ、第2Rボタン54Lは、ハウジング50の裏面の右側(表面側から見たときの右側)のやや上方に設けられる。換言すれば、第2Lボタン54Kは、表面に設けられる左アナログスティック53Aの概ね反対側の位置に設けられ、第2Rボタン54Lは、表面に設けられる右アナログスティック53Bの概ね反対側の位置に設けられる。このように、第2Lボタン54Kは、ユーザの左手中指で操作可能な位置に配置され、第2Rボタン54Lは、ユーザの右手中指で操作可能な位置に配置される(図9参照)。また、第2Lボタン54Kおよび第2Rボタン54Lは、図8の(c)図に示すように、上記足部59Aおよび59Bの斜め上方を向く面に設けられ、斜め上方を向くボタン面を有する。ユーザが端末装置7を把持した場合には中指は上下方向に動くと考えられるので、ボタン面を上方に向けることで、ユーザは第2Lボタン54Kおよび第2Rボタン54Lを押下しやすくなる。また、ハウジング50の裏面に足部が設けられることにより、ユーザはハウジング50を把持しやすくなり、かつ、足部にボタンが設けられることで、ハウジング50を把持したまま操作しやすくなる。
【0115】
なお、図8に示す端末装置7に関しては、第2Lボタン54Kおよび第2Rボタン54Lが裏面に設けられるので、LCD51の画面(ハウジング50の表面)が上を向いた状態で端末装置7を載置させる場合、画面が完全に水平にはならない場合がある。そのため、他の実施形態においては、ハウジング50の裏面に3つ以上の足部が形成されてもよい。これによれば、LCD51の画面が上を向いた状態では足部が床面に接することで床面に載置できるので、画面が水平になるように端末装置7を載置することができる。また、着脱可能な足部を追加することで端末装置7を水平に載置するようにしてもよい。
【0116】
各ボタン54A〜54Lには、ゲームプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン54Aおよびボタン54E〜54Hは方向指示操作や選択操作等に用いられてもよいし、各ボタン54B〜54Eは決定操作やキャンセル操作等に用いられてもよい。
【0117】
なお、図示しないが、端末装置7は、端末装置7の電源をオン/オフするための電源ボタンを有している。また、端末装置7は、LCD51の画面表示をオン/オフするためのボタンや、ゲーム装置3との接続設定(ペアリング)を行うためのボタンや、スピーカ(図10に示すスピーカ67)の音量を調節するためのボタンを有していてもよい。
【0118】
図8の(a)図に示すように、端末装置7は、マーカ55Aおよびマーカ55Bからなるマーカ部(図10に示すマーカ部55)をハウジング50の表面に備えている。マーカ部55は、LCD51の上側に設けられる。各マーカ55Aおよびマーカ55Bは、マーカ装置6の各マーカ6Rおよび6Lと同様、1以上の赤外LEDで構成される。マーカ部55は、上述のマーカ装置6と同様、コントローラ5の動き等をゲーム装置3が算出するために用いられる。また、ゲーム装置3はマーカ部55が備える各赤外LEDの点灯を制御することが可能である。
【0119】
端末装置7は、撮像手段であるカメラ56を備えている。カメラ56は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。図8に示すように、本実施形態では、カメラ56はハウジング50の表面に設けられる。したがって、カメラ56は、端末装置7を持っているユーザの顔を撮像することができ、例えばLCD51を見ながらゲームを行っている時のユーザを撮像することができる。
【0120】
なお、端末装置7は、音声入力手段であるマイク(図10に示すマイク69)を備えている。ハウジング50の表面には、マイクロフォン用孔60が設けられる。マイク69はこのマイクロフォン用孔60の奥のハウジング50内部に設けられる。マイクは、ユーザの音声等、端末装置7の周囲の音を検出する。
【0121】
端末装置7は、音声出力手段であるスピーカ(図10に示すスピーカ67)を備えている。図8の(d)図に示すように、ハウジング50の下側側面にはスピーカ孔57が設けられる。スピーカ67の出力音はこのスピーカ孔57から出力される。本実施形態では、端末装置7は2つのスピーカを備えており、左スピーカおよび右スピーカのそれぞれの位置にスピーカ孔57が設けられる。
【0122】
また、端末装置7は、他の装置を端末装置7に接続するための拡張コネクタ58を備えている。本実施形態においては、図8の(d)図に示すように、拡張コネクタ58は、ハウジング50の下側側面に設けられる。なお、拡張コネクタ58に接続される他の装置はどのようなものであってもよく、例えば、特定のゲームに用いるコントローラ(銃型のコントローラ等)やキーボード等の入力装置であってもよい。他の装置を接続する必要がなければ、拡張コネクタ58は設けられていなくともよい。
【0123】
なお、図8に示した端末装置7に関して、各操作ボタンやハウジング50の形状や、各構成要素の数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。
【0124】
次に、図10を参照して、端末装置7の内部構成について説明する。図10は、端末装置7の内部構成を示すブロック図である。図10に示すように、端末装置7は、図8に示した構成の他、タッチパネルコントローラ61、磁気センサ62、加速度センサ63、ジャイロセンサ64、ユーザインタフェースコントローラ(UIコントローラ)65、コーデックLSI66、スピーカ67、サウンドIC68、マイク69、無線モジュール70、アンテナ71、赤外線通信モジュール72、フラッシュメモリ73、電源IC74、電池75、および、バイブレータ79を備える。これらの電子部品は、電子回路基板上に実装されてハウジング50内に収納される。
【0125】
UIコントローラ65は、各種の入出力部に対するデータの入出力を制御するための回路である。UIコントローラ65は、タッチパネルコントローラ61、アナログスティック53(アナログスティック53Aおよび53B)、操作ボタン54(各操作ボタン54A〜54L)、マーカ部55、磁気センサ62、加速度センサ63、ジャイロセンサ64、およびバイブレータ79に接続される。また、UIコントローラ65は、コーデックLSI66と拡張コネクタ58に接続される。また、UIコントローラ65には電源IC74が接続され、UIコントローラ65を介して各部に電力が供給される。電源IC74には内蔵の電池75が接続され、電力が供給される。また、電源IC74には、コネクタ等を介して外部電源から電力を取得可能な充電器76またはケーブルを接続することが可能であり、端末装置7は、当該充電器76またはケーブルを用いて外部電源からの電力供給と充電を行うことができる。なお、端末装置7は、図示しない充電機能を有するクレイドルに端末装置7を装着することで充電を行うようにしてもよい。
【0126】
タッチパネルコントローラ61は、タッチパネル52に接続され、タッチパネル52の制御を行う回路である。タッチパネルコントローラ61は、タッチパネル52からの信号に基づいて所定の形式のタッチ位置データを生成してUIコントローラ65へ出力する。タッチ位置データは、タッチパネル52の入力面において入力が行われた位置の座標を表す。なお、タッチパネルコントローラ61は、タッチパネル52からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。また、UIコントローラ65からタッチパネルコントローラ61へは、タッチパネル52に対する各種の制御指示が出力される。
【0127】
アナログスティック53は、ユーザの指で操作されるスティック部がスライドした(または傾倒した)方向および量を表すスティックデータをUIコントローラ65へ出力する。また、操作ボタン54は、各操作ボタン54A〜54Lに対する入力状況(押下されたか否か)を表す操作ボタンデータをUIコントローラ65へ出力する。
【0128】
磁気センサ62は、磁界の大きさおよび方向を検知することで方位を検出する。検出された方位を示す方位データは、UIコントローラ65へ出力される。また、UIコントローラ65から磁気センサ62へは、磁気センサ62に対する制御指示が出力される。磁気センサ62に関しては、MI(磁気インピーダンス)素子、フラックスゲートセンサ、ホール素子、GMR(巨大磁気抵抗)素子、TMR(トンネル磁気抵抗)素子、あるいはAMR(異方性磁気抵抗)素子等を用いたセンサがあるが、方位を検出することができればどのようなものが用いられてもよい。なお、厳密には、地磁気以外に磁界が発生している場所においては、得られた方位データは方位を示さないことになるが、そのような場合であっても、端末装置7が動いた場合には方位データが変化するため、端末装置7の姿勢の変化を算出することができる。
【0129】
加速度センサ63は、ハウジング50の内部に設けられ、3軸(図8の(a)図に示すxyz軸)方向に沿った直線加速度の大きさを検出する。具体的には、加速度センサ63は、ハウジング50の長辺方向をx軸、ハウジング50の短辺方向をy軸、ハウジング50の表面に対して垂直な方向をz軸として、各軸の直線加速度の大きさを検出する。検出された加速度を表す加速度データはUIコントローラ65へ出力される。また、UIコントローラ65から加速度センサ63へは、加速度センサ63に対する制御指示が出力される。加速度センサ63は、本実施形態では例えば静電容量式のMEMS型加速度センサであるとするが、他の実施形態においては他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ63は1軸または2軸方向を検出する加速度センサであってもよい。
【0130】
ジャイロセンサ64は、ハウジング50の内部に設けられ、上記x軸、y軸およびz軸の3軸周りの角速度を検出する。検出された角速度を表す角速度データは、UIコントローラ65へ出力される。また、UIコントローラ65からジャイロセンサ64へは、ジャイロセンサ64に対する制御指示が出力される。なお、3軸の角速度を検出するために用いられるジャイロセンサの数および組み合わせはどのようなものであってもよく、ジャイロセンサ64はジャイロセンサ48と同様、2軸ジャイロセンサと1軸ジャイロセンサとで構成されてもよい。また、ジャイロセンサ64は1軸または2軸方向を検出するジャイロセンサであってもよい。
【0131】
バイブレータ79は、例えば振動モータやソレノイドであり、UIコントローラ65に接続される。UIコントローラ65の指示によりバイブレータ79が作動することによって端末装置7に振動が発生する。これによって、端末装置7を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。
【0132】
UIコントローラ65は、上記の各構成要素から受け取ったタッチ位置データ、スティックデータ、操作ボタンデータ、方位データ、加速度データ、および角速度データを含む操作データをコーデックLSI66に出力する。なお、拡張コネクタ58を介して端末装置7に他の装置が接続される場合には、当該他の装置に対する操作を表すデータが上記操作データにさらに含まれていてもよい。
【0133】
コーデックLSI66は、ゲーム装置3へ送信するデータに対する圧縮処理、および、ゲーム装置3から送信されたデータに対する伸張処理を行う回路である。コーデックLSI66には、LCD51、カメラ56、サウンドIC68、無線モジュール70、フラッシュメモリ73、および赤外線通信モジュール72が接続される。また、コーデックLSI66はCPU77と内部メモリ78を含む。端末装置7はゲーム処理自体を行なわない構成であるが、端末装置7の管理や通信のための最小限のプログラムを実行する必要がある。電源投入時にフラッシュメモリ73に格納されたプログラムを内部メモリ78に読み出してCPU77が実行することで、端末装置7が起動する。また、内部メモリ78の一部の領域はLCD51のためのVRAMとして使用される。
【0134】
カメラ56は、ゲーム装置3からの指示に従って画像を撮像し、撮像した画像データをコーデックLSI66へ出力する。また、コーデックLSI66からカメラ56へは、画像の撮像指示等、カメラ56に対する制御指示が出力される。なお、カメラ56は動画の撮影も可能である。すなわち、カメラ56は、繰り返し撮像を行って画像データをコーデックLSI66へ繰り返し出力することも可能である。
【0135】
サウンドIC68は、スピーカ67およびマイク69に接続され、スピーカ67およびマイク69への音声データの入出力を制御する回路である。すなわち、コーデックLSI66から音声データを受け取った場合、サウンドIC68は当該音声データに対してD/A変換を行って得られる音声信号をスピーカ67へ出力し、スピーカ67から音を出力させる。また、マイク69は、端末装置7に伝わる音(ユーザの音声等)を検知して、当該音を示す音声信号をサウンドIC68へ出力する。サウンドIC68は、マイク69からの音声信号に対してA/D変換を行い、所定の形式の音声データをコーデックLSI66へ出力する。
【0136】
赤外線通信モジュール72は、赤外線信号を発光し、他の装置との間で赤外線通信を行う。ここでは、赤外線通信モジュール72は、例えばIrDAの規格に従った赤外線通信を行う機能と、モニタ2を制御するための赤外線信号を出力する機能とを備える。
【0137】
コーデックLSI66は、カメラ56からの画像データと、マイク69からの音声データと、UIコントローラ65からの端末操作データとを無線モジュール70を介してゲーム装置3へ送信する。本実施形態では、コーデックLSI66は、画像データおよび音声データに対して、コーデックLSI27と同様の圧縮処理を行う。上記端末操作データ、ならびに、圧縮された画像データおよび音声データは、送信データとして無線モジュール70に出力される。無線モジュール70にはアンテナ71が接続されており、無線モジュール70はアンテナ71を介してゲーム装置3へ上記送信データを送信する。無線モジュール70は、ゲーム装置3の端末通信モジュール28と同様の機能を有している。すなわち、無線モジュール70は、例えばIEEE802.11nの規格に準拠した方式により、無線LANに接続する機能を有する。送信されるデータは必要に応じて暗号化されていてもよいし、されていなくともよい。
【0138】
以上のように、端末装置7からゲーム装置3へ送信される送信データには、操作データ(端末操作データ)、画像データ、および音声データが含まれる。なお、拡張コネクタ58を介して端末装置7に他の装置が接続される場合には、当該他の装置から受け取ったデータが上記送信データにさらに含まれていてもよい。コーデックLSI66は、赤外線通信モジュール72による赤外線通信によって受信したデータを、必要に応じて上記送信データに含めてゲーム装置3へ送信してもよい。
【0139】
また、上述のように、ゲーム装置3から端末装置7へは、圧縮された画像データおよび音声データが送信される。これらのデータはアンテナ71および無線モジュール70を介してコーデックLSI66に受信される。コーデックLSI66は、受信した画像データおよび音声データを伸張する。伸張された画像データはLCD51へ出力され、画像がLCD51に表示される。また、伸張された音声データはサウンドIC68へ出力され、サウンドIC68はスピーカ67から音を出力させる。
【0140】
また、ゲーム装置3から受信されるデータに制御データが含まれる場合、コーデックLSI66およびUIコントローラ65は、制御データに従った制御指示を各部に行う。上述のように、制御データは、端末装置7が備える各構成要素(本実施形態では、カメラ56、タッチパネルコントローラ61、マーカ部55、各センサ62〜64、赤外線通信モジュール72、およびバイブレータ79)に対する制御指示を表すデータである。本実施形態では、制御データが表す制御指示としては、上記各構成要素を動作させたり、動作を休止(停止)させたりする指示が考えられる。すなわち、ゲームで使用しない構成要素については電力消費を抑えるために休止させてもよく、その場合、端末装置7からゲーム装置3へ送信される送信データには、休止した構成要素からのデータが含まれないようにする。なお、マーカ部55は赤外LEDであるので、制御は単に電力の供給のON/OFFでよい。
【0141】
また、ゲーム装置3は、上記赤外線通信モジュール72の出力を制御することによって、モニタ2の動作を制御することが可能である。すなわち、ゲーム装置3は、モニタ2を制御するための制御指令に対応する赤外線信号を赤外線通信モジュール72に出力させるための指示(上記制御データ)を端末装置7に出力する。この指示に応じて、コーデックLSI66は、上記制御指令に対応する赤外線信号を赤外線通信モジュール72に出力させる。ここで、モニタ2は赤外線信号を受光可能な赤外線受光部を備えている。赤外線通信モジュール72から出力された赤外線信号が赤外線受光部によって受光されることで、モニタ2は当該赤外線信号に応じた動作を行う。なお、ゲーム装置3からの上記指示は、赤外線信号のパターンを示すものであってもよいし、端末装置7が赤外線信号のパターンを記憶している場合には、当該パターンを示す指示であってもよい。
【0142】
以上のように、端末装置7は、タッチパネル52、アナログスティック53、および操作ボタン54といった操作手段を備えるが、他の実施形態においては、これらの操作手段に代えて、または、これらの操作手段とともに、他の操作手段を備える構成であってもよい。
【0143】
また、端末装置7は、端末装置7の動き(位置や姿勢、あるいは、位置や姿勢の変化を含む)を算出するためのセンサとして、磁気センサ62、加速度センサ63、およびジャイロセンサ64を備えるが、他の実施形態においては、これらのセンサのうち1つまたは2つのみを備える構成であってもよい。また、他の実施形態においては、これらのセンサに代えて、または、これらのセンサとともに、他のセンサを備える構成であってもよい。
【0144】
また、端末装置7は、カメラ56およびマイク69を備える構成であるが、他の実施形態においては、カメラ56およびマイク69を備えていなくてもよく、また、いずれか一方のみを備えていてもよい。
【0145】
また、端末装置7は、端末装置7とコントローラ5との位置関係(コントローラ5から見た端末装置7の位置および/または姿勢等)を算出するための構成としてマーカ部55を備える構成であるが、他の実施形態ではマーカ部55を備えていない構成としてもよい。また、他の実施形態では、端末装置7は、上記位置関係を算出するための構成として他の手段を備えていてもよい。例えば、他の実施形態においては、コントローラ5がマーカ部を備え、端末装置7が撮像素子を備える構成としてもよい。さらにこの場合、マーカ装置6は赤外LEDに代えて、撮像素子を備える構成としてもよい。
【0146】
[5.パノラマ動画の再生]
次に、ゲームシステム1において実行される動画再生の動作について説明する。ゲームシステム1は、内部メモリに記憶されたパノラマ動画を読みだして再生し、端末装置7に表示する。端末装置7には、動画の再生の進行にしたがって、所定時間ごとに、パノラマ動画の各フレームが順次表示されるが、各フレームのパノラマ画像の全体が端末装置7に表示されるのではなく、その一部が表示される。パノラマ画像のうち表示される領域(以下、単に「表示領域」と呼ぶこともある)は、そのときの端末装置7の姿勢に応じて変更される。以下、具体的に説明する。
【0147】
パノラマ動画の再生開始を指示すると、端末装置7にはパノラマ動画の先頭フレームのパノラマ画像のうちデフォルトの領域が表示される。このデフォルトの領域は、パノラマ画像のうちパノラマ撮影の基準方向(通常は、撮影機材の進行方向)に対応する領域とするのが好ましく、典型的には、パノラマ画像の中央の領域とするのが好ましい。その後、パノラマ動画の再生が継続するが、端末装置7の姿勢を変化せずに保持する限り、端末装置7には各フレームのパノラマ画像のうちのデフォルトの範囲が表示される。そして、パノラマ動画の再生継続中に端末装置7の姿勢を変更すると、表示領域が変更される。
【0148】
より具体的には、端末装置7を把持した使用者が、端末装置7の画面を自分の方に向けたまま、自分を中心にして端末装置7を上下左右に動かすことにより、表示領域が上下左右に変更される。ここで、使用者が端末装置7の画面を自分の方に向けたまま、端末装置7を自分を中心にして上方向に動かすと、端末装置7の画面は斜め下方向または下方向を向き、使用者は自分より上にある端末装置7の画面を下から見るような位置関係となる。このとき、表示領域は、デフォルト領域よりも、または、動かす前の表示領域よりも、上側の領域となる。また、使用者が端末装置7の画面を自分の方に向けたまま、端末装置7を自分を中心にして下方向に動かすと、端末装置7の画面は斜め上方向または上方向を向き、使用者は自分より下にある端末装置7の画面を上から見るような位置関係になる。このとき、表示領域は、デフォルト領域よりも、または、動かす前の表示領域よりも下側の領域となる。また、使用者が端末装置7の画面を自分の方に向けたまま、端末装置7を自分を中心にして右方向に動かすと、端末装置7の画面は動かす前よりも左方向を向き、表示領域は、デフォルト領域よりも、または、動かす前の表示領域よりも、右側の領域となる。また、使用者が端末装置7の画面を自分の方に向けたまま、端末装置7を自分を中心にして左方向に動かすと、端末装置7の画面は動かす前よりも右方向を向き、表示領域は、デフォルト領域よりも、または、動かす前の表示領域よりも左側の領域となる。このような動作が毎フレームおこなわれることにより、端末装置7に表示される領域は端末装置7の姿勢に応じて随時変更される。
【0149】
また、端末装置7を把持した使用者が、端末装置7の画面に垂直な軸まわりに端末装置7を回転させると、表示領域は回転される。
【0150】
なお、本実施例では端末装置7の3軸まわりの姿勢に応じて、表示領域を上下左右に移動かつ回転するが、端末装置7の1軸まわりの姿勢に応じて、表示領域を左右方向のみ移動、または、上下方向のみ移動させてもよい。また、端末装置7の2軸まわりの姿勢に応じて、表示領域を上下左右に移動、または、表示領域を上下方向に移動かつ回転、表示領域を左右方向に移動かつ回転させてもよい。
【0151】
なお、端末装置7の基準姿勢からの変位だけ、表示領域をデフォルトの領域から変位させてもよい。そうすることによって、端末装置7の姿勢が基準姿勢から変化したときには表示領域はデフォルトの領域から変位するが、その後再び基準姿勢に戻ったときに、表示領域はデフォルトの領域に戻ることになる。
【0152】
また、使用者が端末装置7を自分を中心にして左右方向に1周(360度回転)したときには、表示領域は同じ領域に戻るようにするのが好ましい。
【0153】
[6.第1の実施形態の説明]
本発明に係る第1の実施形態として、上述したような動作は、各フレームのパノラマ画像を仮想空間中の球体モデル(完全球体モデル、非完全体モデル)または円柱モデルの内面にテクスチャとして貼りつけて、当該モデルの内側から仮想カメラで撮影し、当該仮想カメラの撮影方向を端末装置7の姿勢に応じて変更することにより実現される。
【0154】
図11は、完全球パノラマ画像を使用する場合の実施例を示す図である。完全球パノラマ画像を使用する場合、完全球モデル100が仮想空間に配置される。そして、当該完全球モデル100の内面の全域に完全球パノラマ画像がテクスチャとして貼りつけられる。
【0155】
本実施例においては、パノラマ画像は、正距円筒図法(equirectangular)によるフォーマットを使用する。このフォーマットによるパノラマ画像を球体モデルの内面に貼りつけるマッピング手法は周知であるのでここでは省略する。
【0156】
当該モデルの中心に仮想カメラ101が配置され、この仮想カメラ101により球体モデル100の内面の一部領域が撮影されることにより、パノラマ画像の一部領域がレンダリングされる。この仮想カメラ101は後述するように、端末装置7の姿勢に応じて撮影方向が変更される。なお、仮想カメラ101の位置は固定である。
【0157】
なお、完全球パノラマ画像の場合、カメラの足やカメラマンの身体の一部などがパノラマ画像に写ってしまうことがある。その場合には、以下のいずれか方法を採用することができる。
・パノラマ画像のうちのカメラの足などを画像処理により消去する。
・パノラマ画像のうちの最下部(または最上部)から一定範囲(典型的には矩形領域)を他の画像(例えば、黒画像)に置き換える
【0158】
図12から図15は、非完全球パノラマ画像を使用する場合の実施例を示す図である。非完全球パノラマ画像は、撮影時にカメラの足などが写らないように撮影されたパノラマ画像や、撮影時は完全球パノラマ画像として撮影されたが、撮影された完全球パノラマ画像の最下部(または最上部)から一定範囲(典型的には矩形領域)を切り取ることにより生成されたものなどがある。
【0159】
非完全球パノラマ画像は、典型的には、下方に死角のあるもの(下方向の一定の範囲の画角の撮影情報を欠くもの)と上方に死角のあるもの(上方向の一定の範囲の画角の撮影情報を欠くもの)とがある。
【0160】
図12および図13は、下方に死角のある非完全球パノラマ画像を使用する場合の実施例である。図12に示す方法、または、図13に示す方法が選択的に使用される。
【0161】
図12の実施例と図13の実施例とでは、いずれも、完全球モデル100が仮想空間に配置される。そして、パノラマ画像は、完全球モデル100のうちの下部領域を除く部分100aの内面(上部球面部分の内面)に貼りつけられる。より具体的には、完全球モデル100が仮想空間の原点に配置され、上下方向がY軸の正負方向であるとして、完全球モデルのうちY>Y1(負の値)の部分の内面に貼りつけられる。なお、Y1の値は死角の大きさに応じて決定する。より具体的には、死角が大きいときにはY1の値は大きい値(0に近い値)とし、死角が小さいときにはY1の値は小さい値(0から遠い値)とする。
【0162】
ここで、仮想カメラ101の視野範囲にY<Y1の部分が入る場合、テクスチャが何も貼られていないモデルが撮影されてしまう。そこで、図12の実施例では、完全球モデル100のうちの下部領域100bの内面(左上がり斜線部分の球面部分の内面)に所定のテクスチャを貼りつける。より具体的には、完全球モデルのうちY<Y1(負の値)の部分の内面に貼りつけられる。「所定のテクスチャ」は単色画像(例えば、黒画像)であってもよいし、地面や床や地表などを表現した写真やCG画像であってもよい。また、動画であってもよいし、所定条件により(一定時間ごと、シーンの切替時など)、他の画像に切り替えてもよい。
【0163】
一方、図13の実施例では、球体モデル100のうちパノラマ画像が貼りつけられる部分の開口部に、当該開口部をふさぐような平面モデルを配置して、当該平面モデルに上記「所定のテクスチャ」を貼りつける。より具体的には当該平面モデルの「球体モデルの中心側の面」に貼りつける。図13の例では、Y=Y1の位置にZX面に平行に円板モデル102(図13の左上がり斜線部分)が配置される。なお、この円板モデルの半径は、球体モデルの表面に接するように設定される。
【0164】
このように、死角部分に「所定のテクスチャ」を貼りつけることによって、仮想カメラが360度いずれの方向を向いた場合でも正しくレンダリング画像を生成することができる。また、図13の実施例では「所定のテクスチャ」を平面モデルに貼りつけるので、「所定のテクスチャ」を通常の平面画像として用意すればよい。
【0165】
そして、図12の実施例と図13の実施例とでは、いずれも、図11と同様、球体モデルの中心に仮想カメラ101が配置され、この仮想カメラ101により球体モデル100の内面の一部領域が撮影されることにより、パノラマ画像の一部領域がレンダリングされる。この仮想カメラ101は後述するように、端末装置7の姿勢に応じて撮影方向が変更される。なお、仮想カメラ101の位置は固定である。
【0166】
図14および図15は、上方に死角のある非完全球パノラマ画像を使用する場合の実施例である。図14または図15に示す方法が選択的に使用される。
【0167】
図14の実施例と図15の実施例とでは、いずれも、完全球モデル100が仮想空間に配置される。そして、パノラマ画像は、完全球モデル100のうちの上部領域を除く部分100cの内面(下部球面部分の内面)に貼りつけられる。より具体的には、完全球モデル100が仮想空間の原点に配置され、上下方向がY軸の正負方向であるとして、完全球モデルのうちY<Y2(正の値)の部分の内面に貼りつけられる。なお、Y2の値は死角の大きさに応じて決定する。より具体的には、死角が大きいときにはY2の値は小さい値とし、死角が小さいときにはY2の値は大きいとする。
【0168】
ここで、仮想カメラ101の視野範囲にY>Y2の部分が入る場合、テクスチャが何も貼られていないモデルが撮影されてしまう。そこで、図14の実施例では、完全球モデル100のうちの上部領域100dの内面(左上がり斜線部分の球面部分の内面)に所定のテクスチャを貼りつける。より具体的には、完全球モデルのうちY<Y2(正の値)の部分の内面に貼りつけられる。「所定のテクスチャ」は単色画像(例えば、黒画像)であってもよいし、空や宇宙や天井などを表現した写真やCG画像であってもよい。また、動画であってもよいし、所定条件により(一定時間ごと、シーンの切替時など)、他の画像に切り替えてもよい。
【0169】
一方、図15の実施例では、球体モデル100のうちパノラマ画像が貼りつけられる部分の開口部に、当該開口部をふさぐような平面モデルを配置して、当該平面モデルに上記「所定のテクスチャ」を貼りつける。より具体的には当該平面モデルの「球体モデルの中心側の面」に貼りつける。図15の例では、Y=Y2の位置にZX面に平行に円板モデル103(図15の左上がり斜線部分)が配置される。なお、この円板モデルの半径は、球体モデルの表面に接するように設定される。
【0170】
そして、図14の実施例と図15の実施例とでは、いずれも、球体モデルの中心に仮想カメラ101が配置され、この仮想カメラ101により球体モデル100の内面の一部領域が撮影されることにより、パノラマ画像の一部領域がレンダリングされる。この仮想カメラ101は後述するように、端末装置7の姿勢に応じて撮影方向が変更される。なお、仮想カメラ101の位置は固定である。
【0171】
図16は、「全周パノラマ画像であって、左右方向に360度の画角を有し、上下方向の画角は所定角度(180度より小さい)」のパノラマ画像(以下、「左右のみ全周パノラマ画像」と呼ぶ)を使用する場合の実施例である。
【0172】
左右のみ全周パノラマ画像を使用する場合、円柱モデル104が仮想空間に配置される。そして、パノラマ画像は、この円柱モデル104のうちの側面の内面の全域に貼りつけられる。
【0173】
ここで、図16に示すように、仮想カメラ101の上下方向の視野角は、パノラマ画像の画角と同じに設定される。それゆえ、端末装置7には、パノラマ画像の上から下まで全体が表示される(ただし、言うまでもないが、左右方向についてはその一部が表示される)。
【0174】
そして、円柱モデル104の中心に仮想カメラ101が配置され、この仮想カメラ101により円柱モデル104の内面の一部領域が撮影されることにより、パノラマ画像の一部領域がレンダリングされる。この仮想カメラ101は後述するように、端末装置7の左右方向の姿勢に応じて撮影方向が変更される。しかしながら、端末装置7の上下方向の姿勢に応じた撮影方向の変更は行われない。なお、仮想カメラ101の位置は固定である。
【0175】
なお、円柱モデルを使用する場合でも、仮想カメラ101の上下方向の視野角をパノラマ画像の画角より小さく設定して、その一部を表示するようにしてもよい。そして、端末装置7の上下方向の姿勢に応じた撮影方向の変更をおこなうようにしてもよい。また、その場合、円柱モデルの上面および/または底面の内面に「所定のテクスチャ」を貼り付けるようにしてもよい。
【0176】
図17は、「全周パノラマ画像であって、左右方向に360度より小さい画角(好ましくは180度以上)を有し、上下方向の画角は所定角度(180度より小さい)」のパノラマ画像(以下、「左右のみパノラマ画像」と呼ぶ)を使用する場合の実施例である。
【0177】
左右のみパノラマ画像を使用する場合、図16で示したような円柱モデル104が仮想空間に配置される。そして、パノラマ画像は、この円柱モデル104のうちの側面の内面のうち図17で示す範囲104aに貼りつけられる。なお、範囲104aはパノラマ画像の左右方向の画角に応じて決定される。より具体的には、画角が大きいほど範囲104aは大きくなる。典型的には、画角と範囲104aのY軸から見た角度は一致する。
【0178】
なお、円柱モデル104の側面の内面のうち範囲104a以外の部分については、上記「所定のテクスチャ」が貼りつけられる。
【0179】
仮想カメラの上下方向の視野角、配置位置、および、撮影方向の制御については、図16の実施例と同様である。
【0180】
なお、図11〜図17のいずれの実施例においても、仮想カメラの左右方向についての視野角は、パノラマ画像の左右方向の画角よりも小さく設定され、典型的には、25度〜90度(より好ましくは30度〜60度)に設定される。また、図11〜図15の実施例においては、仮想カメラの上下方向についての視野角は、パノラマ画像の上下方向の画角よりも小さく設定され、典型的には、20度〜60度(より好ましくは20度〜40度)に設定される。
【0181】
また、図11〜図17のいずれの実施例においても、仮想カメラ101の初期姿勢は、仮想空間のX軸、Y軸、Z軸に一致するように配置される。より具体的には、仮想カメラ101の撮影方向(z軸)がZ軸に一致し、左右方向(x軸)がX軸に一致し、上下方向(y軸)がY軸に一致するように配置される(当該初期姿勢となった仮想カメラ101のx軸、y軸、z軸を、それぞれx0軸、y0軸、z0軸とする)。
【0182】
図18A〜図18Cは、端末装置7の姿勢に応じた仮想カメラ101の撮影方向の制御を示す図である。図18Aを参照して、まず、端末装置7の基準姿勢(xn,yn,zn)が設定される。より具体的には、動画再生の開始時または開始前の所定タイミングにおける端末装置7の姿勢が基準姿勢に設定される。より具体的には、動画再生の開始時の端末装置7の姿勢を基準姿勢として設定してもよいし、動画再生の開始前にユーザが所定の操作をしたときの端末装置7の姿勢を基準姿勢として設定してもよいし、予め定める固定的な姿勢を基準姿勢として設定してもよいし、予め定める固定的な複数の姿勢のうちユーザが選択してもよい。
【0183】
なお、本実施例では、端末装置7の姿勢はジャイロセンサ64の出力値に基づいて算出されるので、基準姿勢の設定は、ジャイロセンサ64により算出される姿勢値のリセットである。しかしながら、基準姿勢の設定は、センサの種類によって適宜の処理を実行してよい。
【0184】
基準姿勢が設定された後、図18Bに示すように、ジャイロセンサ64の出力値に基づいて端末装置7の姿勢(xp,yp,zp)が逐次算出される。なお、ジャイロセンサ64の代わりに、加速度センサ63の値を用いて姿勢を算出することもできるし、ジャイロセンサ64と加速度センサ63との両方の値を用いて姿勢を算出することもできる。
【0185】
そして、図18Cに示すように、端末装置7の姿勢(xp,yp,zp)の基準姿勢(xn,yn,zn)に対する姿勢変化(xn軸まわりの回転、yn軸まわりの回転、zn軸まわりの回転)の方向に応じて、仮想カメラ101の姿勢を、初期姿勢(基準姿勢;前述の通り、仮想カメラ101のx軸、y軸、z軸が仮想空間のX軸、Y軸、Z軸と一致するx0軸、y0軸、z0軸)から当該姿勢変化と同じ方向に変化させる(X軸まわりの回転、Y軸まわりの回転、Z軸まわりの回転)。なお、端末装置7の姿勢(xp,yp,zp)の基準姿勢(xn,yn,zn)に対する姿勢変化量(xn軸まわりの回転量、yn軸まわりの回転量、zn軸まわりの回転量)に応じて、仮想カメラ101の姿勢を、初期姿勢(基準姿勢;前述の通り、仮想カメラ101のx軸、y軸、z軸が仮想空間のX軸、Y軸、Z軸と一致するx0軸、y0軸、z0軸)から当該姿勢変化量と同じ量だけ変化させるようにするのが好ましい。
【0186】
図19は、本実施例におけるパノラマ画像データファイルのファイルフォーマットを示す図である。本実施例のファイルは、1つのファイル内に、以下を含む。
(1)パノラマタイプ情報T
(2)フレームごとの情報として、フレーム番号N、パノラマ画像データIp、補完画像データIc、位置情報P、向き情報Di、マップ画像データM
【0187】
パノラマタイプ情報Tは、パノラマ画像の種類を表す情報であり、具体的には、完全球、非完全球(下方死角有)、非完全球(上方死角有)、左右のみ全周、左右のみパノラマなどを識別する情報であり、たとえば、各タイプに割り当てられる識別番号であってもよい。
【0188】
フレームごとの情報は、フレーム番号(1,2,3・・・)ごとに各種データが記録される。パノラマ画像データIpは、説明が不要であるので省略する。補完画像データIcは、前述した「所定のテクスチャ」として使用されるデータであり、パノラマ画像の死角部分を補完するためのデータである。また、位置情報Pは、当該フレームにおけるパノラマ画像の撮影場所を示す情報であり、マップ画像M上の座標を示すデータであってもよいし、GPSのような絶対的な地点情報であってもよい。また、向き情報Diは、当該フレームにおけるパノラマ画像の撮影方向を示す情報であり、マップ画像M上の向きを示すデータであってもよいし、GPSのような絶対的な方位情報であってもよい。また、マップ画像Mは、パノラマ撮影が行われた地域を表す画像データであり、写真であってもよいし、CGであってもよい。典型的には、当該地域を俯瞰的に表現した画像が用いられる。マップ画像Mは、後述するようにモニタ2に表示されるデータである。なお、マップ画像Mは、そのフレームにおけるパノラマ撮影の基準方向が上方向となるような画像とするのが好ましい。
【0189】
なお、補完画像は、フレームごとのデータがなくてもよい。例えば、1つの動画ファイルに対して、1つの補完画像を記録してもよいし、複数のフレームに対して1つの補完画像を記録してもよい。マップ画像についても同様である。また、位置情報および向き情報は、複数のフレームに対して1つの情報を記録してもよい。
【0190】
図20ないし図22は、ゲーム装置3の処理動作を示すフローチャートである。このフローチャートで示される各ステップの処理は、ゲーム装置3内の不揮発メモリ、または、光ディスク4に記憶されるプログラム(ブラウザプログラム)をCPU10が実行することにより実現される。
【0191】
まず、図20を参照して、ステップS11において、ゲーム装置3は、パノラマ画像ファイルを取得する。具体的には、ゲーム装置3内の不揮発メモリから、または、ゲーム装置3に装着された記憶媒体から、または、ネットワークを介して所定のサーバーから、ファイルを取得する。
【0192】
ステップS11の後、ステップS12において、ステップS11で取得したファイル内のパノラマタイプ情報に基づいて、パノラマタイプに対応するモデルを仮想空間にその中心が原点に位置するように配置する。具体的には、全球パノラマ(完全球、非完全球)の場合には、球体モデルを配置する。左右のみ全周、左右のみパノラマ等の場合には、円柱モデルを配置する。また、前述した図13および図15の実施例の場合には、円板モデルも配置する。
【0193】
ステップS12の後、ステップS13において、第1仮想カメラをモデルと同じ仮想空間に配置する。本実施例では、第1仮想カメラの位置は仮想空間の原点とし、第1仮想カメラの姿勢は、カメラのxyz軸が仮想空間のXYZ軸に一致するように配置する。なお、本実施例では、第1仮想カメラの姿勢を、XZ平面に平行になるようにしたが、XZ平面と所定角度を有するようにしてもよい。なお、このときの、仮想空間における仮想カメラの姿勢を「カメラ基準姿勢」と呼ぶ。第1仮想カメラは端末装置7に出力される画像を生成するためのカメラであり、図11〜図17における仮想カメラ101は第1仮想カメラである。
【0194】
ステップS13の後、ステップS14において、第2仮想カメラを同じ仮想空間に配置する。より具体的には、第2仮想カメラの位置および姿勢は第1仮想カメラと同じに設定される。
【0195】
ステップS14の後、ステップS15において、端末装置7の基準姿勢を設定する。より具体的には、端末装置7またはモニタ2に、基準姿勢を設定する旨の表示をおこない、かつ、所定ボタンを押すことを促す表示をおこなうとともに、当該所定ボタンの入力待ちをおこなう。そして、当該所定ボタンが操作されたときの端末装置7の姿勢を基準姿勢として設定する。このときの端末装置7の姿勢を「ディスプレイ基準姿勢」と呼ぶ。
【0196】
ステップS15の後、図21のステップS16において、nを1に設定する。nはフレーム番号である。ステップS16の後、パノラマ動画の再生が終了するまで、ステップS17からステップS30の処理が所定周期毎に繰り返される。
【0197】
ステップS17において、パノラマ画像ファイル内の情報のうちフレームnの情報(パノラマ画像Ip、補完画像Ic、位置情報P、向き情報Di、マップ情報M)を取得する。
【0198】
ステップS17の後、ステップS18において、ステップS17で取得したパノラマ画像Ipを、ステップS12で配置したモデルにテクスチャとして貼りつける。なお、図11〜図17を用いて前述したとおり、ステップS11で取得したパノラマタイプ情報に基づいて、貼りつける場所を決定する。
【0199】
より具体的には、ステップS18においては、パノラマ画像の上下方向を第1仮想カメラの基準姿勢の上下方向(本実施例では、y0軸正負方向であり仮想空間のY軸の正負方向)に一致させ、かつ、パノラマ画像の左右方向を第1仮想カメラの基準姿勢の左右方向(本実施例では、x0軸正負方向であり仮想空間のX軸の正負方向)に一致させ、かつ、パノラマ画像の中心を第1仮想カメラの基準姿勢における撮影方向に一致するように貼り付ける。本実施例では、第1仮想カメラの基準姿勢となるx0軸、y0軸、z0軸は仮想空間のX軸、Y軸、Z軸に平行であるので、パノラマ画像の中心が、ステップS12で配置されるモデルのZ軸との交点のうち(Z>0)の点と一致するように貼り付ける。なお、パノラマ画像の中心は、第1仮想カメラの基準姿勢における撮影方向(仮想カメラのZ軸方向(奥行方向))とステップS12で配置されるモデルの交点と一致するように貼り付けるのが好ましい。
【0200】
前述した図12〜図15、および図17の実施例の場合には、ステップS18の後、ステップS19において、ステップS17で取得した補完画像Icを、図12〜図15および図17を用いて前述したモデルに貼りつける。なお、図11、図16の実施例の場合には、ステップS19の処理はおこなわれない。なお、補完画像の貼り付け方法(方向および中心位置)はステップS18におけるパノラマ画像の貼り付け方法と同一である。
【0201】
ステップS19の後(図11、図16の実施例の場合には、ステップS18の後)、ステップS20において端末装置7のジャイロセンサ64の出力値を取得する。なお、端末装置7からはジャイロセンサの出力値が一定周期でゲーム装置3に送信されて記憶される。
【0202】
ステップS20の後、ステップS21において、ステップS20において取得したデータを利用して、端末装置7の「ディスプレイ基準姿勢」からの回転方向および回転量(ステップS15で初期化してからの回転方向および回転量)を算出する。例えば、上記ステップS21では、ディスプレイ基準姿勢におけるx軸(図18Aのxn)まわりの回転方向および回転量と、y軸(図18Aのyn)まわりの回転方向および回転量と、z軸(図18Aのzn)まわりの回転方向および回転量とがそれぞれ算出される。なお、回転方向は、回転量の正負により表すことができるので、データとしては回転量データのみでもよい。
【0203】
より具体的には、上記ステップS21では、前回処理におけるステップS21において算出された回転量に、今回ステップS20で取得した角速度に基づく回転量を加えて、新たな回転量として算出する。
【0204】
ステップS21の後、ステップS22において、第1仮想カメラの仮想空間における姿勢を「カメラ基準姿勢」から、ステップS21で算出された回転量だけ回転する。より具体的には、第1仮想カメラの姿勢を、「カメラ基準姿勢」から、ステップS21で算出された端末装置7のxn軸まわりの回転量と同じだけ仮想空間のX軸(図18Cのx0)まわりに回転させ、かつ、端末装置7のyn軸まわりの回転量と同じだけ仮想空間のY軸(図18Cのy0)まわりに回転させ、かつ、端末装置7のzn軸まわりの回転量と同じだけ仮想空間のZ軸(図18Cのz0)まわりに回転させる。なお、第2仮想カメラの姿勢は変化させない。
【0205】
ステップS22の後、ステップS23において、第1仮想カメラで仮想空間を撮影して画像生成し、端末装置7に無線出力する。
【0206】
ステップS23の後、図22のステップS24において、マップモードか否かが判断される。マップモードとは、モニタ2にマップ画像Mを表示するモードであり、マップモードでない場合には、モニタ2にはパノラマ画像が表示される。なお、モニタ2に表示されるパノラマ画像は、第2仮想カメラで撮影された画像である。マップモードか非マップモードかは、ユーザが端末装置7の所定の操作部を操作することにより切り替えるようにしてもよい。
【0207】
ステップS24においてマップモードであると判定されたときには、ステップS25において、ステップS17で取得した向き情報と第1仮想カメラの撮影方向(仮想空間のXZ平面に第1仮想カメラのz軸方向(奥行方向)を投影した方向)に基づいて、パノラマ画像のうち、現在、端末装置7に表示されている方向を算出する。具体的には、向き情報をマップ画像上における向きの情報とし、その向きを現在の第1仮想カメラの撮影方向の基準姿勢における撮影方向からの変化量だけ変化させた向きが、端末装置7に表示されている方向をマップ画像上で示す向きとなる。
【0208】
ステップS25の後、ステップS26において、ステップS17で取得した位置情報、および、ステップS25で算出した向き情報に基づいて、ステップS17で取得したマップ画像上に、当該位置および当該向きを示すアイコンを合成する。
【0209】
ステップS24においてマップモードでないと判定されたときには、ステップS27において、第2仮想カメラで仮想空間を撮影して画像を生成する。
【0210】
ステップS26またはステップS27の後、ステップS26またはステップS27の画像をモニタ2に出力する。
【0211】
ステップS28の後、ステップS29において、nをインクリメントし、ステップS30において最後のフレームを再生終了したか否かを判断し、最後のフレームを再生終了したときには処理を終了し、そうでなければ、ステップS17に戻って、動画再生を繰り返す。
【0212】
[7.第2の実施形態の説明]
本発明に係る第2の実施形態では、第1の実機形態と同様に、表示装置(例えば、モニタ2および端末装置7)には、パノラマ動画の再生の進行にしたがって、記憶されているパノラマ動画の各フレームとなるパノラマ画像が所定時間毎に読み出されて順次表示される。そして、当該実施形態では、各フレームのパノラマ画像を仮想空間中の6面体モデルの内面にテクスチャとして貼りつけて、当該モデルの内側に配置された少なくとも1つの仮想カメラから当該内面を見ることによって、端末装置7に表示されるパノラマ画像が生成され、当該仮想カメラの方向を端末装置7の姿勢に応じて変更する。また、当該実施形態では、モニタ2に表示するためのパノラマ画像と端末装置7に表示されるパノラマ画像とは、記憶されているパノラマ動画からモニタ2および端末装置7に表示制御するタイミングで読み出した同じパノラマ画像を用いてそれぞれ生成され、結果的にパノラマ動画における時間軸が実質的に同じとなる画像がモニタ2および端末装置7にそれぞれ表示されることになる。そして、一例として、モニタ2に表示するためのパノラマ画像は、端末装置7に表示されるパノラマ画像より表示範囲が広い画像であり、例えば当該パノラマ画像における後述する全方位画像がモニタ2に表示される。他の例として、モニタ2に表示するためのパノラマ画像は、上記モデルの内側に固定された別の仮想カメラから当該モデルの内面を見た画像であり、例えば当該パノラマ画像における所定方向の画像がモニタ2に表示される。
【0213】
図23は、フレーム毎のパノラマ画像を構成するパノラマ動画を撮像し、当該パノラマ動画をエンコードして記録するまでの処理の流れの一例を示す図である。
【0214】
一例として、現実世界のパノラマ動画を撮像する場合、撮影方向が互いに固定された複数の現実世界撮像カメラが用いられる。例えば、現実世界撮像カメラは、5角柱形状の支持部材の側面および上面からそれぞれ放射する方向を撮像方向としてそれぞれ1台ずつ、計6台固設されて設けられる。そして、上記側面の1つを前方として移動しながら、現実世界を6台の現実世界撮像カメラで撮像する。なお、上記前方となる側面(すなわち、移動しながら撮像する場合に進行方向に向かって設けられる側面)に設けられた撮像カメラを「正面前方カメラ」とし、当該移動の際に左前方を撮像方向として設けられる撮像カメラを「左前方カメラ」、当該移動の際に右前方を撮像方向として設けられる撮像カメラを「右前方カメラ」、当該移動の際に左後方を撮像方向として設けられる撮像カメラを「左後方カメラ」、当該移動の際に右後方を撮像方向として設けられる撮像カメラを「右後方カメラ」、当該移動の際に上方を撮像方向として設けられる撮像カメラを「上方カメラ」とする。そして、上記移動に応じて、時間軸が同じ画像がそれぞれの撮像カメラから得られ、「正面前方カメラ」から得られる画像を「正面前方カメラ画像」、「左前方カメラ」から得られる画像を「左前方カメラ画像」、「右前方カメラ」から得られる画像を「右前方カメラ画像」、「左後方カメラ」から得られる画像を「左後方カメラ画像」、「右後方カメラ」から得られる画像を「右後方カメラ画像」、「上方カメラ」から得られる画像を「上方カメラ画像」とする。
【0215】
なお、上述した現実世界撮像カメラの構成は一例であり、他の構成によって実現されてもよいことは言うまでもない。また、現実世界を移動することなく現実世界撮像カメラで撮像(すなわち、定点撮像)することによって、現実世界のパノラマ動画を撮像してもかまわない。
【0216】
それぞれの撮像カメラから得られた画像は、同じ時間軸の画像毎にパノラマ展開されて1つの全方位画像(パノラマ画像)に合成される。図23で用いた全方位画像は、正面前方カメラ画像を中心として、左へ順に左前方カメラ画像および左後方カメラ画像を合成し、右へ順に右前方カメラ画像および右後方カメラ画像を合成して、さらに当該合成された5つのカメラ画像の上方領域に上方カメラ画像を合成し、それぞれのカメラ画像では死角となる方位(典型的には、下方であり図23において斜線で示される領域)の画像については所定の画像(例えば、黒画像)を合成することによって生成されている。なお、複数の撮像カメラから得られた画像を合成して構成される全方位画像(パノラマ画像)については図23で示した構成でなくてもよく、他の構成によって全方位画像を生成してもよい。なお、複数の撮像カメラから得られた画像からパノラマ画像を生成する手法については、既に周知であるためここでは詳細な説明を省略する。
【0217】
次に、時間毎に生成された全方位画像を6面体画像に変換され、所定の方式(例えば、H.264として標準化された動画データの圧縮符号化方式)で時間毎に変換された全ての6面体画像がエンコードされて光ディスク等の記憶媒体に記憶される。ここで、6面体画像とは、全方位画像(パノラマ画像)を正6面体モデルの内面に貼り付けてマッピングした際に、当該モデルの6面にそれぞれ生成される画像を示している。例えば、上記全方位画像を6面体画像に変換することによって、6つの画像(正面画像、左側面画像、右側面画像、背面画像、上面画像、および底面画像)に変換される。ここで、正面前方カメラ画像に対応する全方位画像における領域の少なくとも一部が、上記6つの画像のうちの正面画像に含められるように(例えば、当該領域の中心が正面画像の中心付近となるように)変換する。なお、6面体画像を生成するためのマッピング手法についても既に周知であるためここでは詳細な説明を省略する。
【0218】
なお、パノラマ動画をエンコードして記憶媒体に記憶する際、当該パノラマ動画を構成する複数のパノラマ画像がそれぞれエンコードされることになるが、H.264以外の圧縮符号化方式を用いてもよく、当該パノラマ画像がそれぞれエンコードされる方式はどのようなものでもよい。例えば、フレーム毎のパノラマ画像をフレーム間の依存関係がない状態でパノラマ画像毎に圧縮する方式(例えば、モーションJPEG)でもよいし、前フレームとのパノラマ画像との差分を圧縮する方式(例えば、MPEG)でもよい。また、フレーム予測符号化方式を用いてパノラマ動画をエンコードする場合、フレーム間予測だけでなくフレーム内予測を用いる符号化方式を用いてもよい。
【0219】
また、パノラマ動画をエンコードして記憶媒体に記憶する際、当該パノラマ動画を再生する際に出力される音声を示す音声データを加えてもよい。例えば、現実世界のパノラマ動画を撮像する際に、撮像位置において録音された音や予め録音されたBGMや効果音を、パノラマ動画の再生と同期させて出力する場合、当該音、BGM、効果音等を示す音声データを当該パノラマ動画とともに記憶媒体に記憶してもよい。この場合、エンコードされたパノラマ動画データをデコードして再生する際に、当該パノラマ動画の再生と同期した音声を出力することが可能となる。
【0220】
図24は、エンコードされたパノラマ動画データをデコードして表示するまでの処理の流れの一例を示す図である。なお、図24に示した例では、端末装置7に仮想カメラから見た画像を表示し、モニタ2に全方位画像を表示する一例を用いている。
【0221】
所定の記憶媒体にエンコードされて記憶されたパノラマ動画は、上記方式によって、表示する時間(フレーム)毎の6面体画像にデコードされる。そして、6面体モデルの内面にテクスチャとしてそれぞれ対応する面に各フレームの6面体画像を貼り付け、当該6面体モデルの内側に配置された仮想カメラから見た6面体画像の一部領域をレンダリングしてフレーム毎に端末装置7に表示する。
【0222】
一例として、上記6面体モデルは、仮想空間の原点に配置される。そして、上下方向が仮想空間のY軸の正負方向であるとして、Y軸に対して垂直に6面体モデルの上面(Y軸正方向側)および底面(Y軸負方向側)がそれぞれ配置される。また、左右方向が仮想空間のX軸の正負方向であるとして、X軸に対して垂直に6面体モデルの左側面(X軸正方向側)および右側面(X軸負方向側)がそれぞれ配置される。さらに、前後方向が仮想空間のZ軸の正負方向であるとして、Z軸に対して垂直に6面体モデルの正面(Z軸正方向側)および背面(Z軸負方向側)がそれぞれ配置される。そして、6面体モデルの正面、左側面、右側面、背面、上面、および底面のそれぞれの内面に、6面体画像の正面画像、左側面画像、右側面画像、背面画像、上面画像、および底面画像がテクスチャとしてそれぞれ貼り付けられる。
【0223】
そして、6面体モデルの中心(仮想空間の原点)に仮想カメラが配置され、当該仮想カメラから見た6面体モデルの内面の一部領域がパノラマ動画の一部領域としてレンダリングされる。上記仮想カメラは、後述するように端末装置7の姿勢に応じて視線方向が変更される。なお、第1の実施形態と同様に、上記仮想カメラの初期姿勢は、当該仮想カメラの左右方向、上下方向、および前後方向が、それぞれ仮想空間のX軸、Y軸、Z軸に一致するように配置される。より具体的には、上記仮想カメラの視線方向(z軸正方向)がZ軸正方向に一致し、上記仮想カメラの左方向(z軸正方向)がX軸正方向に一致し、上記仮想カメラの上方向(y軸正方向)がY軸正方向に一致するように配置される。これによって、仮想カメラの初期姿勢によって端末装置7に表示されるパノラマ画像は、6面体画像のうち正面画像の中央を少なくとも含む表示範囲となる。なお、端末装置7の姿勢によって仮想カメラの姿勢を制御する一例や初期姿勢および基準姿勢の設定については第1の実施形態と同様であるため、詳細な説明を省略する。
【0224】
また、上記デコードされた6面体画像は、1つの画像に合成されることによって上述した全方位画像にも変換され、フレーム毎にモニタ2に表示される。これによって、モニタ2には、端末装置7に表示されるパノラマ動画と実質的に時間軸が同じパノラマ動画が表示されることになり、当該パノラマ動画に対するモニタ2の表示範囲が端末装置7に表示される範囲より相対的に広いものとなる。
【0225】
なお、端末装置7に表示されているパノラマ画像(6面体画像)の範囲を示す画像を、モニタ2に表示する全方位画像に重畳表示してもよい。このように、モニタ2に端末装置7に表示されている画像範囲を表示することによって、モニタ2を見ているユーザが端末装置7を操作するユーザが見ている画像を知ることができたり、端末装置7を操作するユーザがモニタ2を見ることによってパノラマ画像全体と端末装置7に表示されているパノラマ画像の一部との位置関係を把握したりすることができる。
【0226】
なお、第2の実施形態では、デコードされた1つのパノラマ動画の少なくとも一部が複数の表示装置にそれぞれ表示され、当該複数の表示装置にはそれぞれ実質的に同じ時間軸のパノラマ動画が表示される。また、複数の表示装置は、それぞれの表示画面の方向がキャリブレーションされた後にパノラマ動画が表示されるため、それぞれの表示画面に表示されるパノラマ動画の範囲を、それぞれの表示装置の実空間における位置関係に基づいたものにすることが可能となる。例えば、モニタ2が配置されている方向をパノラマ動画の基準方向(正面方向)に設定した場合、モニタ2の表示画面の向きと端末装置7の表示画面の向きとが同じ場合には、端末装置7の表示画面に正面方向のパノラマ動画が表示される。そして、端末装置7の姿勢変化と同じように仮想カメラの姿勢が変化するため、モニタ2の方向を常に基準方向(正面方向)としてパノラマ動画で生成される仮想空間を、端末装置7の姿勢によって自由な方向を見ているような操作感覚をユーザに与えることができる。
【0227】
次に、ゲーム装置3において行われる処理の詳細を説明する。まず、図25を参照して、処理において用いられる主なデータについて説明する。なお、図25は、ゲーム装置3の内部メインメモリ11cおよび/または外部メインメモリ12(以下、2つのメインメモリを総称して、単にメインメモリと記載する)に記憶される主なデータおよびプログラムの一例を示す図である。
【0228】
図25に示すように、メインメモリのデータ記憶領域には、パノラマ画像ファイルデータDa、端末操作データDb、姿勢データDc、仮想カメラデータDd、仮想空間画像データDe、および全方位画像データDf等が記憶される。なお、メインメモリには、図25に示すデータの他、実行するアプリケーションで用いるデータ等、処理に必要なデータ等が記憶されてもよい。また、メインメモリのプログラム記憶領域には、情報処理プログラムを構成する各種プログラム群Paが記憶される。
【0229】
パノラマ画像ファイルデータDaは、フレーム毎の情報として、6面体画像データDa1等を含んでいる。6面体画像データDa1は、フレーム番号N(1,2,3・・・)毎に、上述した6つの画像(正面画像、左側面画像、右側面画像、背面画像、上面画像、および底面画像)を示すデータを含んでいる。6面体画像データDa1は、所定の記憶媒体にエンコードされて記憶されたパノラマ動画を、上記方式によってデコードすることによって得られる。
【0230】
端末操作データDbは、端末装置7に対する操作内容を示すデータであり、操作ボタンデータDb1および角速度データDb2等を含んでいる。操作ボタンデータDb1は、操作ボタン54に対する操作内容を示すデータである。角速度データDb2は、端末装置7に生じる角速度を示すデータであり、ジャイロセンサ64から出力される角速度を示すデータである。
【0231】
姿勢データDcは、実空間における端末装置7の姿勢を示すデータであり、例えば基準姿勢からの端末装置7の回転量を示すデータである。
【0232】
仮想カメラデータDdは、6面体モデルの中央に配置される仮想カメラに関するデータである。
【0233】
仮想空間画像データDeは、上記仮想カメラから6面体モデルの内面を見た仮想空間画像を示すデータである。全方位画像データDfは、6面体画像データDa1が示す6面体画像を1つの画像に合成することによって生成される全方位画像を示すデータである。
【0234】
次に、図26および図27を参照して、ゲーム装置3において行われる処理の詳細を説明する。なお、図26は、ゲーム装置3において実行される処理の前半の一例を示すフローチャートである。図27は、ゲーム装置3において実行される処理の後半の一例を示すフローチャートである。ここで、図26および図27に示すフローチャートにおいては、ゲーム装置3における処理のうち、パノラマ動画を端末装置7およびモニタ2にそれぞれ表示する処理について主に説明し、これらの処理と直接関連しない他の処理については詳細な説明を省略する。
【0235】
CPU10は、メインメモリ等を初期化し、ゲーム装置3内の不揮発メモリまたは光ディスク4に記憶される情報処理プログラムをメインメモリに読み込む。そして、CPU10によって当該情報処理プログラムの実行が開始される。図26および図27に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【0236】
なお、図26および図27に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて別の処理が実行されてもよい。また、本実施例では、上記フローチャートの各ステップの処理をCPU10が実行するものとして説明するが、上記フローチャートにおける一部または全部のステップの処理を、上記CPU以外のプロセッサや専用回路が実行するようにしてもよい。
【0237】
図26において、CPU10は、パノラマ画像ファイルを取得する(ステップS81)。例えば、CPU10は、ゲーム装置3内の不揮発メモリ、ゲーム装置3に装着された記憶媒体、またはネットワーク等を介して他の装置から、パノラマ画像ファイルを取得し、パノラマ画像ファイルデータDaに格納する。
【0238】
次に、CPU10は、パノラマ動画を貼り付けるための6面体モデルを、仮想空間にその中心が原点に位置するように配置し(ステップS82)、次のステップに処理を進める。例えば、CPU10は、仮想空間に設定されたXYZ軸に対して、上記6面体モデルの正面がZ軸正方向側でZ軸と垂直に交わり、背面がZ軸負方向側でZ軸と垂直に交わり、左側面がX軸正方向側でX軸と垂直に交わり、右側面がX軸負方向側でX軸と垂直に交わり、上面がY軸正方向側でY軸と垂直に交わり、底面がY軸負方向側でY軸と垂直に交わるように、上記6面体モデルを配置する(図24に示す状態)。
【0239】
次に、CPU10は、仮想カメラを基準位置に基準姿勢で配置し(ステップS83)、次のステップに処理を進める。例えば、CPU10は、仮想カメラの基準位置を仮想空間の原点(すなわち、6面体モデルの中央)とし、仮想カメラのxyz軸(x軸正方向が仮想カメラの左方向、y軸正方向が仮想カメラの上方向、z軸正方向が仮想カメラの視線方向)が仮想空間のXYZ軸に一致する姿勢を基準姿勢とする。そして、CPU10は、仮想カメラの基準位置および基準姿勢を用いて、仮想カメラデータDdを更新する。
【0240】
次に、CPU10は、端末装置7とモニタ2との姿勢調整をユーザに促し(ステップS84)、姿勢調整が行われるのを待つ(ステップS85)。例えば、CPU10は、端末装置7のLCD51の向きとモニタ2の表示画面の向きとが同じになるように端末装置7の姿勢を調整し、当該姿勢になった場合に端末装置7の所定の操作ボタンを押下するように促す表示を、端末装置7および/またはモニタ2に表示する。そして、CPU10は、操作ボタンデータDb1を参照して操作ボタン54に対する操作内容を示すデータを取得し、当該データが所定の操作ボタンが押下されたことを示す場合に、上記姿勢調整が行われたと判断して、次のステップS86に処理を進める。なお、端末装置7からは、操作ボタン54の操作内容を示すデータが一定周期でゲーム装置3に送信されて、操作ボタンデータDb1に格納されている。
【0241】
ステップS86において、CPU10は、現時点の端末装置7の姿勢を基準姿勢に設定し、次のステップに処理を進める。例えば、CPU10は、姿勢データDcが示す端末装置7の姿勢(基準姿勢からの回転量)を初期化(各軸周りの回転量を0)して、端末装置7の基準姿勢を設定する。上記ステップS84〜ステップS86の処理によって、端末装置7のLCD51の向きとモニタ2の表示画面の向きとが同じになるように姿勢調整された端末装置7の姿勢が、端末装置7の基準姿勢として設定されることになる。
【0242】
次に、CPU10は、フレーム数nを1に設定し(ステップS87)、次のステップS91(図27参照)に処理を進める。
【0243】
図27において、CPU10は、6面体画像データDa1のうち、フレームnに対応する6面体画像を取得し(ステップS91)、次のステップに処理を進める。
【0244】
次に、CPU10は、上記ステップS91で取得した6面体画像を6面体モデルの内面にテクスチャとして貼りつけ(ステップS92)、次のステップに処理を進める。例えば、図24を用いて前述したとおり、6面体画像が6面体モデルの各内面にテクスチャとして貼りつけられる。
【0245】
次に、CPU10は、端末装置7のジャイロセンサ64の出力値を取得し(ステップS93)、次のステップに処理を進める。なお、端末装置7からは、ジャイロセンサ64の出力値を示すデータが一定周期でゲーム装置3に送信されて、角速度データDb2に格納されている。
【0246】
次に、CPU10は、上記ステップS93において取得したデータを用いて、端末装置7の基準姿勢からの回転方向および回転量(ステップS86で初期化してからの回転方向および回転量)を算出し(ステップS94)、次のステップに処理を進める。例えば、上記ステップS94では、端末装置7の基準姿勢におけるx軸(図18Aのxn)まわりの回転方向および回転量と、y軸(図18Aのyn)まわりの回転方向および回転量と、z軸(図18Aのzn)まわりの回転方向および回転量とがそれぞれ算出されて、姿勢データDcを更新する。なお、回転方向は、回転量の正負により表すことができるので、姿勢データDcには回転量を示すデータのみ格納してもよい。例えば、CPU10は、上記ステップS94では、前回処理におけるステップS94において算出された回転量に、今回ステップS94で取得した角速度データに基づく回転量を加えて、新たな回転量として算出する。
【0247】
次に、CPU10は、仮想カメラの仮想空間における姿勢を、基準姿勢からステップS94で算出された回転量だけ回転させ(ステップS95)、次のステップに処理を進める。例えば、CPU10は、仮想カメラの姿勢を、基準姿勢からステップS94で算出された端末装置7のxn軸まわりの回転量と同じだけ仮想空間のX軸(図18Cのx0)まわりに回転させ、かつ、端末装置7のyn軸まわりの回転量と同じだけ仮想空間のY軸(図18Cのy0)まわりに回転させ、かつ、端末装置7のzn軸まわりの回転量と同じだけ仮想空間のZ軸(図18Cのz0)まわりに回転させて、仮想カメラデータDdを更新する。
【0248】
次に、CPU10は、仮想カメラから見た6面体モデルの内面の画像(仮想空間画像)を生成し(ステップS96)、次のステップに処理を進める。例えば、CPU10は、生成された仮想空間画像を示すデータを用いて、仮想空間画像データDeを更新する。
【0249】
次に、CPU10は、上記ステップS91で取得した6面体画像を1つの画像に合成することによって全方位画像を生成し(ステップS97)、次のステップに処理を進める。例えば、CPU10は、生成された全方位画像を示すデータを用いて、全方位画像データDfを更新する。なお、全方位画像の生成方法については、図23および図24を用いて説明した方法と同様であるため、ここでは詳細な説明を省略する。
【0250】
次に、CPU10は、仮想空間画像データDeに基づいた仮想空間画像を端末装置7へ送信し(ステップS98)、次のステップに処理を進める。例えば、仮想空間画像データDeに基づいた仮想空間画像は、VRAM11dに記憶された後、コーデックLSI27に送られ、コーデックLSI27によって所定の圧縮処理が行われる。さらに、圧縮処理が施された仮想空間画像のデータは、コーデックLSI27によって端末通信モジュール28に送られ、アンテナ29を介して端末通信モジュール28によって端末装置7へ送信される。ゲーム装置3から送信された仮想空間画像のデータは、端末装置7の無線モジュール70によって受信され、コーデックLSI78によって所定の伸張処理が行われる。そして、伸張処理が行われた仮想空間画像のデータは、LCD51に出力されて仮想空間画像が表示される。
【0251】
次に、CPU10は、全方位画像データDfに基づいた全方位画像をモニタ2へ出力し(ステップS99)、次のステップに処理を進める。例えば、CPU10は、全方位画像データDfに基づいた全方位画像は、VRAM11dに記憶された後、AV−IC15へ送る。これに応じて、AV−IC15は、全方位画像を示すデータを、AVコネクタ16を介してモニタ2へ出力する。これによって、全方位画像がモニタ2に表示される。
【0252】
次に、CPU10は、フレーム数nをインクリメントし(ステップS100)、処理を終了するか否かを判定する(ステップS101)。処理を終了する条件としては、例えば、再生しているパノラマ動画における最後のフレームの画像の再生が終了したことや、ユーザが処理を終了する操作を行ったこと等がある。CPU10は、処理を終了しない場合に上記ステップS91に戻って処理を繰り返し、処理を終了する場合に当該フローチャートによる処理を終了する。以降、ステップS91〜ステップS101の一連の処理は、ステップS101で処理を終了すると判定されるまで繰り返し実行される。
【0253】
[8.変形例]
上記実施形態は本発明を実施する一例であり、他の実施形態においては例えば以下に説明する構成で本発明を実施することも可能である。
【0254】
上記実施形態においては、ゲームシステム1は端末装置7を1つのみ有する構成であったが、ゲームシステム1は複数の端末装置7を有する構成であってもよい。すなわち、ゲーム装置3は、複数の端末装置7とそれぞれ無線通信可能であり、画像のデータを各端末装置7へ送信し、ジャイロセンサ64のデータを各端末装置7から受信するものであってもよい。そして、仮想空間に各端末装置7の仮想カメラを配置して、各端末装置7の姿勢に応じて各仮想カメラの姿勢を制御して、各仮想カメラから見た仮想空間の画像を各端末装置7に送信するようにすればよい。なお、ゲーム装置3は、複数の端末装置7のそれぞれと無線通信を行うが、このとき、ゲーム装置3は、各端末装置7との無線通信を時分割で行ってもよいし、周波数帯域を分割して行ってもよい。
【0255】
このように、複数の端末装置7を用いてパノラマ動画を表示する場合、モニタ2を用いなくてもかまわない。例えば、上述した第2の実施形態において複数の端末装置7(例えば、第1の端末装置と第2の端末装置)にそれぞれ同じパノラマ動画を実質的に同じ時間軸で再生して表示する場合を考える。この場合、上記ステップS83において、2つの仮想カメラ(例えば、第1の仮想カメラと第2の仮想カメラ)を同じ基準位置に同じ基準姿勢で配置する。そして、ステップS84において、第1の端末装置のLCD51の向きと第2の端末装置のLCD51の向きとが同じになるようにそれぞれの姿勢を調整し、当該姿勢になった場合に少なくとも一方の端末装置の所定の操作ボタンを押下するように促す表示をそれぞれの端末装置に表示して、上記ステップS86において姿勢調整が行われた時点の第1の端末装置および第2の端末装置の姿勢をそれぞれ基準姿勢に設定する。このような設定に基づいて、第1の端末装置の基準姿勢からの回転量に応じて第1の仮想カメラの姿勢を変更し、第2の端末装置の基準姿勢からの回転量に応じて第2の仮想カメラの姿勢を変更して、第1の仮想カメラから見た6面体モデルの内面の画像を第1の端末装置に表示し、第2の仮想カメラから見た6面体モデルの内面の画像を第2の端末装置に表示する。このように、実空間における第1の端末装置と第2の端末装置との位置関係をキャリブレーションした後に、それぞれ端末装置の姿勢変化と同じようにそれぞれの仮想カメラの姿勢を変化させることによって、パノラマ動画によって生成される同じ世界を複数の表示装置を介して自由に覗いたような画像をそれぞれの端末装置に表示することができる。
【0256】
ここで、第2の仮想カメラの位置および姿勢を基準位置および基準姿勢に固定し、当該第2の仮想カメラから見た6面体モデルの内面の画像を第2の端末装置の代わりにモニタ2に表示すれば、モニタ2には常に基準方向(正面方向)のパノラマ動画を表示することができる。これによって、移動しながらパノラマ画像が撮像されてパノラマ動画が生成されている場合、モニタ2には当該移動における進行方向を見たパノラマ画像の一部が常に表示されることになる。
【0257】
なお、モニタ2に表示するパノラマ動画の範囲を、コントローラ5を操作することによって変化させてもかまわない。一例として、モニタ2に上述した全方位画像の一部を表示する場合、当該全方位画像からモニタ2に表示される範囲を、コントローラ5が操作データとして出力するマーカ座標データ、加速度データ、角速度データ、および操作ボタンデータの少なくとも1つに応じて移動させる。他の例として、上記第2の仮想カメラから見た6面体モデルの内面の画像をモニタ2に表示する場合、当該第2の仮想カメラの姿勢をコントローラ5が操作データとして出力するマーカ座標データ、加速度データ、角速度データ、および操作ボタンデータの少なくとも1つに応じて変化させる。
【0258】
また、コントローラ5を操作することによって、パノラマ動画に所定のオブジェクトや付加情報を付加してもよい。例えば、モニタ2に表示されたパノラマ動画を見ているユーザがコントローラ5を用いて所定の操作をすることによって、当該操作によって指示されたパノラマ動画の一部に所定のオブジェクトや付加情報が入力される。具体的には、モニタ2に表示されているパノラマ動画の一部をコントローラ5で指し示して所定のボタン操作を行うことによって、当該一部に当該ボタン操作に応じたオブジェクトや付加情報が再生中のパノラマ動画に付加される。
【0259】
また、入力された所定のオブジェクトや付加情報(例えば、コメント)は、端末装置7で表示されているパノラマ動画にも付加表示される。ここで、上述したように、モニタ2に表示されている画像と端末装置7に表示されている画像とは、再生されている1つのパノラマ動画において実質的に時間軸が同じとなるパノラマ画像の少なくとも一部である。したがって、モニタ2を介して所定のオブジェクトや付加情報が付加されたパノラマ動画の部位を含む範囲が端末装置7に表示されている場合、端末装置7にはパノラマ動画とともに、付加された所定のオブジェクトや付加情報が付加操作と実質的に同じタイミングで表示される。これによって、ユーザは、パノラマ動画を単に見るだけでなく、他のユーザがポインティングして付加したオブジェクトや付加情報とともにパノラマ動画を見ることができる。このように、モニタ2を介して所定のオブジェクトや付加情報をパノラマ動画に付加できるように構成することによって、モニタ2および端末装置7を介して表示されているパノラマ動画についてのユーザ間のコミュニケーションを図ることができる。
【0260】
モニタ2を介して、所定のオブジェクトや付加情報の入力が行われた場合、CPU10は、付加する対象(所定のオブジェクトや付加情報)を示す対象情報と、当該対象情報をパノラマ動画に付加するために必要な入力位置情報とを管理する。例えば、入力位置情報は、対象情報の入力が受け付けられた場合におけるモニタ2のパノラマ画像表示範囲内の入力位置を特定可能な情報である。上記入力位置は、例えば、上述した付加操作によって指定された位置でもよい。
【0261】
一例として、上記入力位置を示す入力位置情報として、モニタ2に表示している画像を生成するための仮想カメラの姿勢(視線方向)を表すベクトルの情報が用いられる。例えば、仮想カメラの位置から立体モデル(上記球体モデルや上記6面体モデル)上の上記入力位置への方向を表すベクトルによって入力位置を表すことができる。なお、パノラマ動画を撮像する際の視点が時間経過につれて所定空間(例えば、現実世界)内を移動している場合には、当該視点の移動に応じて上記入力位置も立体モデル上で移動させる。そして、モニタ2および端末装置7に表示されているパノラマ動画の表示範囲に上記入力位置が含まれる場合、当該入力位置に管理されている対象情報に対応する所定のオブジェクトや付加情報を、パノラマ動画における当該入力位置に重畳表示する。
【0262】
また、端末装置7に表示しているパノラマ動画を、モニタ2に表示してもよい。例えば、上述した説明においてモニタ2に表示しているパノラマ動画に加えて、端末装置7に表示しているパノラマ動画をモニタ2に表示してもいいし、端末装置7に表示しているパノラマ動画を単独でモニタ2に表示してもよい。前者の場合、上述した説明においてモニタ2に表示しているパノラマ動画の表示領域とは別の表示領域に端末装置7に表示しているパノラマ動画を表示してもいいし、これらの表示領域の少なくとも一部を重複させて表示してもよい。後者の場合、モニタ2の表示領域全体に端末装置7に表示しているパノラマ動画を表示してもよい。このように、モニタ2にも端末装置7に表示しているパノラマ動画を表示することによって、端末装置7を操作しているユーザが見ているパノラマ画像を、モニタ2を介して他のユーザも見ることが可能となり、見ているパノラマ動画についてのユーザ間のコミュニケーションを図ることができる。
【0263】
また、端末装置7に表示しているパノラマ動画をモニタ2に表示する場合、端末装置7を把持しているユーザの手ぶれによる画像の相対的に小さな揺れや、端末装置7をユーザが上下左右に大きく動かすことによる視線方向の相対的に大きな変化等によって、モニタ2に表示された当該パノラマ動画を見るユーザが映像酔い(画像酔い)することが考えられる。このような映像酔いを防止するために、端末装置7に表示しているパノラマ動画の視線方向の変化を軽減した画像をモニタ2に表示してもかまわない。例えば、端末装置7にパノラマ動画を表示するための端末装置用仮想カメラと同じ視点に同じ視線方向となるモニタ用仮想カメラを仮想世界に設定し、当該端末装置用仮想カメラの動きと基本的に同じ動きで当該モニタ用仮想カメラを動作させる。そして、第1の例として、実空間における端末装置7の向きの単位時間当たり変化量が所定の閾値未満である場合や、端末装置7の動きを検出するセンサ(加速度センサ63、ジャイロセンサ64等)から出力される値(加速度や角速度を示す値)が所定の閾値未満である場合等には、上記モニタ用仮想カメラの姿勢を固定して、手ぶれによる画像の相対的に小さな揺れを防止する。そして、上記変化量や出力値が0になった場合や当該閾値以上となった場合に上記端末装置用仮想カメラの姿勢に近づくまたは同じとなるように当該モニタ用仮想カメラの姿勢を制御する。第2の例として、実空間における端末装置7の向きの単位時間当たり変化量が所定の閾値以上である場合や、端末装置7の動きを検出するセンサ(加速度センサ63、ジャイロセンサ64等)から出力される値(加速度や角速度を示す値)が所定の閾値以上である場合等には、上記モニタ用仮想カメラの動きを制限して、視線方向の相対的に大きな変化を抑制する。そして、上記変化量や出力値が当該閾値未満となった場合に上記端末装置用仮想カメラの姿勢に近づくように当該モニタ用仮想カメラの姿勢を制御する。第3の例として、上記端末装置用仮想カメラの動きに所定の割合で追従するように上記モニタ用仮想カメラの動きを制御することによって、手ぶれによる画像の相対的に小さな揺れや視線方向の相対的に大きな変化を抑制する。具体的には、上記端末装置用仮想カメラの視線方向と上記モニタ用仮想カメラの視線方向との角度差に対して所定の割合(例えば、50%)だけ、当該端末装置用仮想カメラの視線方向に近づくように当該モニタ用仮想カメラの視線方向が常に変化するように制御する。このような制御例の1つまたは組み合わせを用いて姿勢制御されるモニタ用仮想カメラから見た上記立体モデル内面の画像をモニタ2に表示することによって、端末装置7に表示しているパノラマ動画の視線方向の変化を軽減した画像をモニタ2に表示することができる。
【0264】
また、上述した説明では、端末装置7に表示しているパノラマ動画をモニタ2に表示する場合に上下左右方向の視覚的な振動による映像酔いを防止する例を用いたが、パノラマ動画を拡大または縮小する際の画像変化をモニタ2に表示する画像において低減することも考えられる。例えば、端末装置7を把持するユーザが端末装置7に表示されているパノラマ動画を拡大表示または縮小表示する操作を行った場合、LCD51には当該操作に応じて拡大または縮小したパノラマ動画がそのまま表示される。一方、端末装置7に対する操作に応じて拡大または縮小して端末装置7に表示されたパノラマ動画をモニタ2にも表示する場合、当該パノラマ動画の拡大率または縮小率が所定の閾値以上となる場合は、拡大率または縮小率を当該閾値に抑制したパノラマ動画をモニタ2に表示する。また、端末装置7に対する操作に応じて、パノラマ動画を拡大してから縮小するまでの時間またはパノラマ動画を縮小してから拡大するまでの時間が所定時間以内に行われた場合、当該所定時間内に行われた縮小または拡大を抑制したパノラマ動画をモニタ2に表示する。このような制御例の1つまたは組み合わせを用いてパノラマ動画の拡大または縮小を制御したパノラマ動画をモニタ2に表示することによって、端末装置7に拡大または縮小する画像変化を軽減したパノラマ動画をモニタ2に表示することができる。
【0265】
また、上述した端末装置7は、図20〜図22、図26、および図27を用いて説明した一連の処理やゲーム装置3で行われるようなゲーム処理を実行しない、いわゆるシンクライアント端末として機能するものであった。しかしながら、端末装置7は、例えば携帯ゲーム機のように、所定のプログラム(ゲームプログラム)によって所定の情報処理(ゲーム処理)を実行する機能を有する装置であってもよい。この場合、上記実施例においてゲーム装置3によって実行される一連の処理のうち、少なくとも一部の処理が端末装置7によって実行されてもよい。一例として、上記一連の処理の全部を実行可能な端末装置を少なくとも1つ用いて複数の端末装置にパノラマ動画をそれぞれ表示する場合、当該実行可能な端末装置の1つを当該一連の処理を実行する主処理実行装置とし、他の端末装置の姿勢に応じたパノラマ動画を当該主処理実行装置から他の端末装置へ送信することによって、同様のパノラマ画像を各端末装置に表示することができる。
【0266】
また、上述した実施例では、現実世界を移動しながら撮像したパノラマ画像によって構成されるパノラマ動画を表示する例を用いたが、仮想世界内を移動しながら撮像したパノラマ画像によって構成されるパノラマ動画や、現実世界を撮像したパノラマ画像に仮想世界の画像を合成した画像によって構成されるパノラマ動画を表示してもかまわない。
【0267】
他の実施形態では、互いに通信可能な複数の情報処理装置を有するゲームシステムにおいて、当該複数の情報処理装置が情報処理を分担して実行するようにしてもよい。なお、複数の情報処理装置において情報処理が実行される場合には、各情報処理装置で実行される処理を同期させる必要があり、処理が複雑になってしまう。これに対して、上記実施形態のように、情報処理が1つのゲーム装置3によって実行され、端末装置7が画像を受信して表示する場合(つまり、端末装置7がシンクライアント端末である場合)には、複数の情報処理装置間で処理の同期をとる必要がなく、処理を簡易化することができる。
【0268】
また、上記実施形態においては、ゲーム処理を実行することが可能なゲーム装置3を含むゲームシステム1を例として説明したが、上記実施形態で記載した各処理動作は、ゲームシステムおよびゲーム装置に限らず、任意の情報処理システムおよび情報処理装置によって実行可能である。情報処理システムは、情報処理装置と、複数の表示装置(ユーザによる操作入力が可能な少なくとも1つの可搬型の表示装置(例えば端末装置7)と据置型の表示装置との組み合わせ、または複数の可搬型の表示装置)を含むものであればよく、情報処理装置は、複数の表示装置にそれぞれ画像を出力して表示させることができるものであればよい。また、上述した処理は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。
【0269】
上記のように、本明細書で説明した種々のシステム、方法、および技術は、デジタル電子回路、コンピュータハードウェア、ファームウェア、ソフトウェア、またはこれら要素の組み合わせによって提供されてもよい。上記の技術を実現するための装置は、プログラム可能なプロセッサによる実行のためのコンピュータ読み取り可能な非一時的な記憶装置において実体的に具体化されるコンピュータプログラムプロダクト、入出力装置、およびコンピュータプロセッサを含んでもよい。上記技術を実現するための処理は、入力データを処理して所望の出力を生成することによって、要求される機能を実行するためのプログラムを実行する、プログラム可能なプロセッサによって実行されてもよい。上記の技術は、入力装置、出力装置、および情報記憶装置といったハードウェア資源との間でデータや指示のやり取りを行うプログラム可能なプロセッサを含むコンピュータシステム上で実行可能な1以上のコンピュータプログラムによって実現されてもよい。また、各コンピュータプログラムは、手続型やオブジェクト指向型の高水準プログラミング言語、アセンブリ言語、または、機械語によって実現されてもよく、必要に応じてコンパイルまたはインタプリタされて実行されてもよい。また、上記のプロセッサは、汎用または専用のマイクロプロセッサであってもよい。プロセッサは、一般的に、ROMまたはRAMからデータおよび指示を受け取る。また、上記の記憶装置は、(a)EPROM、EEPROM、フラッシュメモリのような半導体メモリ装置を含む不揮発性のメモリ、(b)内部ハードディスクあるいは着脱可能な外部ディスクのような磁気ディスク、(c)光磁気ディスク、(d)CDROM、に限定されず、あらゆる種類のコンピュータメモリを含む。上記のプロセッサや記憶装置は、ASIC(Application Specific Integrated Circuit)によって補充される、あるいは、ASICに組み込まれる形で実現されてもよい。
【0270】
また、本明細書に記載の処理システム(回路)は、本明細書において記載された内容に応じたゲーム処理のような制御処理のためにプログラムされる。上記の内容に応じた指示を実行する少なくとも1つのCPUを含む処理システムが、上記の内容によって定義される処理動作を実行するための「プログラムされた論理回路」として作用するものであってもよい。
【0271】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。
【産業上の利用可能性】
【0272】
以上のように、本発明は、より現実感の高いユーザ体験を提供することができること等を目的として、例えば、ゲームシステムおよびゲーム装置等に利用することができる。
【符号の説明】
【0273】
1 ゲームシステム
2 モニタ
3 ゲーム装置
4 光ディスク
5 コントローラ
7 端末装置
10 CPU
51 LCD
100 球体モデル
101 仮想カメラ
104 円柱モデル
【技術分野】
【0001】
本発明は、情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法に関し、特に例えば、パノラマ動画を表示する情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法に関する。
【背景技術】
【0002】
可搬型ディスプレイにその動きや姿勢に応じて仮想空間を表示する技術がある(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平9−305788号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1に記載の技術は、1つの仮想空間を単一のディスプレイに表示するものであるため、表示できる範囲が限定されてしまう。
【0005】
それ故に、本発明の目的は、より自由度の高い画像を表示することができる情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法を提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明は例えば以下のような構成を採用し得る。なお、特許請求の範囲の記載を解釈する際に、特許請求の範囲の記載によってのみその範囲が解釈されるべきであることが理解され、特許請求の範囲の記載と本欄の記載とが矛盾する場合には、特許請求の範囲の記載が優先する。
【0007】
本発明の情報処理プログラムの一構成例は、少なくとも1つの表示装置に複数の画像を表示する情報処理装置に含まれるコンピュータで実行される。情報処理プログラムは、パノラマ画像取得手段、第1表示範囲設定手段、第2表示範囲設定手段、第1表示制御手段、および第2表示制御手段として、コンピュータを機能させる。パノラマ画像取得手段は、パノラマ動画を記憶したパノラマ動画記憶手段から、表示装置に再生する所定時間毎に当該パノラマ動画の各フレームとなるパノラマ画像を読み出して逐次取得する。第1表示範囲設定手段は、取得されたパノラマ画像において、第1の表示領域に表示する範囲を設定する。第2表示範囲設定手段は、取得されたパノラマ画像において、第2の表示領域に表示する範囲を設定する。第1表示制御手段は、取得されたパノラマ画像のうち、第1表示範囲設定手段によって設定された範囲を第1の表示領域に逐次表示する。第2表示制御手段は、取得されたパノラマ画像のうち、第2表示範囲設定手段によって設定された範囲を第2の表示領域に逐次表示する。
【0008】
上記「情報処理装置」は、表示装置とは別の装置によって構成されてもよいし、表示装置が情報処理機能を有する場合には表示装置によって構成されてもよい。また、前者の場合、「別の装置」によって本発明の各処理を実行し、表示装置は「別の装置」によって生成された画像を表示処理するのみでもよいし、表示装置が情報処理機能を有する場合には、表示装置の情報処理機能と「別の装置」の情報処理機能との協同により実現してもよい。また、「別の装置」は複数の情報処理装置によって分散処理するものであってもよい。「情報処理装置」は、後述する実施形態におけるゲーム装置の他、一般的なパーソナルコンピュータのような多用途の情報処理装置であってもよい。
【0009】
上記第1の表示領域および上記第2の表示領域は、上記表示装置が1つの装置で構成される場合は、当該表示装置の表示画面内の別の領域にそれぞれ設けられてもよい。また、上記第1の表示領域および上記第2の表示領域は、上記表示装置が2つ以上の装置で構成される場合は、それぞれ別の表示装置に設けられてもよい。この場合、上記第1の表示領域および上記第2の表示領域は、2つの可搬型表示装置にそれぞれ設けられてもいいし、可搬型表示装置と据置型表示装置とにそれぞれ設けられてもよい。
【0010】
上記「パノラマ画像」は、上下方向と左右方向のうち一方方向について画角が180度以上のパノラマ画像であることが好ましい。さらに好ましくは、一方方向について360度のパノラマ画像であることが好ましい。また、他方方向については、第1の表示装置および/または第2の表示装置に表示する画像の画角以上であることが好ましく、さらに言うと、当該画像の画角の2倍以上、120度以上、150度以上、または、180度であることが好ましい。
【0011】
上記「パノラマ動画記憶手段」には、当該情報処理装置が有する当該パノラマ動画の撮像機能により撮像された動画を記憶してもよいし、当該動画の撮像機能を有する他の装置により撮像された動画を所定の記憶媒体やネットワークを介して取り込んで記憶してもよい。
【0012】
上記によれば、パノラマ動画を構成するパノラマ画像の少なくとも一部が複数の表示領域それぞれに表示されるため、自由度の高いパノラマ画像を表示することができる。また、ユーザは、2つの表示領域に表示される画像を状況や好みに応じて使い分けることが可能となり、パノラマ動画の視聴に好適な画像を見ることも可能となる。
【0013】
また、上記第1の表示領域は、第1の表示装置に設けられてもよい。上記第2の表示領域は、第1の表示装置とは異なる第2の表示装置に設けられてもよい。上記第1表示範囲設定手段は、ユーザ操作に応じて、取得されたパノラマ画像における第1の表示装置に表示する範囲を設定してもよい。
【0014】
上記第1の表示装置および第2の表示装置は、一例として、それぞれ可搬型表示装置である。また、上記第1の表示装置および第2の表示装置は、他の例として、一方が可搬型表示装置で他方が据置型表示装置である。この場合、据置型表示装置は、後述する実施形態におけるモニタ2のように情報処理装置に接続された表示装置であり、可搬型表示装置と別体であればよく、情報処理装置によって生成された表示画像を表示することが可能なものであればどのようなものであってもよい。例えば、上記据置型表示装置は、情報処理装置と一体に(1つの筐体内に)構成されるものであってもよい。
【0015】
上記によれば、パノラマ動画を構成するパノラマ画像の少なくとも一部が複数の表示装置それぞれに表示され、少なくとも1つの表示装置に表示されるパノラマ画像の範囲がユーザ操作に応じて設定されるため、より自由度の高いパノラマ画像を表示することができ
る。例えば、ユーザは、2つの装置に表示される画像を操作状況や好みに応じて使い分けることが可能となり、ユーザ操作に好適な画像を見ることも可能となる。第2の表示装置に表示する画像を、ユーザとは異なる他の人が見るための画像として用いることもでき、複数の人が当該ユーザとコミュニケーションを取りながらパノラマ画像を見る場合にも好適な視聴環境となり得る。
【0016】
また、上記第1表示制御手段と上記第2表示制御手段とは、パノラマ動画において実質的に時間軸が同じとなるパノラマ画像の少なくとも一部を第1の表示装置と第2の表示装置とにそれぞれ表示してもよい。
【0017】
また、上記第2表示範囲設定手段は、第1表示範囲設定手段が範囲を設定した同じパノラマ画像において、第2の表示領域に表示する範囲を設定してもよい。上記第2表示制御手段は、第1表示制御手段が第1の表示領域に表示している同じパノラマ画像に対して第2表示範囲設定手段によって設定された範囲を第2の表示領域に逐次表示してもよい。
【0018】
上記によれば、パノラマ動画において実質的に時間軸が同じパノラマ画像の少なくとも一部が複数の表示装置に表示されるため、複数の表示装置を介して再生されている同じパノラマ動画の少なくとも一部をそれぞれ見た画像を表示することができる。
【0019】
また、上記第1表示範囲設定手段と上記第2表示範囲設定手段とは、第1の表示装置と第2の表示装置との実空間における位置関係に応じて、第1の表示装置に表示する範囲と第2の表示装置に表示する範囲とをそれぞれ設定してもよい。
【0020】
また、上記情報処理プログラムは、位置関係判定手段として、さらにコンピュータを機能させてもよい。位置関係判定手段は、第1の表示装置と第2の表示装置とが、実空間において所定の位置関係となったか否かを判定する。この場合、上記第1表示範囲設定手段と上記第2表示範囲設定手段とは、位置関係判定手段が肯定判定した時点の第1の表示装置の姿勢および/または第2の表示装置の姿勢を基準として、当該姿勢の変化に応じて、第1の表示装置に表示する範囲と第2の表示装置に表示する範囲とをそれぞれ設定してもよい。
【0021】
上記によれば、パノラマ動画によって形成されている空間を、複数の表示装置を介して覗いているかのような画像を表示することができる。
【0022】
また、上記第1の表示装置は、可搬型の表示装置であるとともに、ユーザ操作に応じたデータを出力することが可能であってもよい。この場合、上記第1表示範囲設定手段は、第1の表示装置から出力されるデータに基づいて、第1の表示装置に表示する範囲を設定してもよい。
【0023】
また、上記第2の表示装置は、据置型の表示装置でもよい。
【0024】
上記「可搬型の表示装置」は、ユーザが手に持って動かしたり、任意の位置に配置を変更したりすることができる程度の大きさの表示装置である。また、「可搬型の表示装置」は本発明の各処理を実行する機能を有してもよいし、他の情報処理装置によって生成された画像を受信して表示処理するのみでもよい。
【0025】
上記によれば、パノラマ画像の表示範囲を変化させるためのデータを出力手段と当該表示範囲のパノラマ画像を表示する表示装置とが一体となって構成されているために、ユーザが表示装置を把持して所望する表示範囲を表示させるために優れた操作環境となる。
【0026】
また、上記第1の表示装置は、当該第1の表示装置本体の動きまたは姿勢に応じたデータを出力するセンサを備えてもよい。この場合、上記第1表示範囲設定手段は、センサから出力されるデータに基づいて算出された第1の表示装置の姿勢に応じて、第1の表示装置に表示する範囲を設定してもよい。
【0027】
上記「センサ」は、ジャイロセンサ、加速度センサ、地磁気センサなど、第1の表示装置本体の姿勢の算出のためのデータを出力するセンサであればなんでもかまわない。
【0028】
上記「第1表示範囲設定手段」は、典型的には、第1の表示装置の姿勢変化に応じて、少なくとも同じ方向に第1の表示装置に表示する範囲を移動させる。また、好ましくは、「第1表示範囲設定手段」は、第1の表示装置の姿勢の変化量が大きいほど上記範囲の移動量を大きくする。さらに好ましくは、「第1表示範囲設定手段」は、第1の表示装置の姿勢の変化量と上記範囲の画像を生成するための仮想カメラの姿勢変化量とを同じにする。「第1表示範囲設定手段」は、第1の表示装置の現在の姿勢の基準姿勢からの変化にあわせて、上記仮想カメラの現在の姿勢の基準姿勢からの変化を制御してもよいし、第1の表示装置の現在の姿勢の直前の姿勢からの変化にあわせて、上記仮想カメラの現在の姿勢の直前の姿勢からの変化を制御してもよい。なお、上記「姿勢」は、2次元で設定されてもよいし、3次元で設定されてもよい。
【0029】
上記によれば、把持する表示装置の姿勢を変化させることによって、当該姿勢変化に応じた表示範囲のパノラマ画像が表示されるため、あたかもパノラマ動画によって形成されている空間を、第1の表示装置を介して覗いているかのような画像を第1の表示装置に表示することができる。
【0030】
また、上記センサは、第1の表示装置本体の動きまたは姿勢に応じたデータを出力するジャイロセンサおよび加速度センサの少なくとも一方であってもよい。この場合、上記第1表示範囲設定手段は、ジャイロセンサおよび加速度センサの少なくとも一方から出力されるデータに基づいて算出された第1の表示装置の姿勢に応じて、第1の表示装置に表示する範囲を設定してもよい。
【0031】
上記によれば、ジャイロセンサから得られる角速度データや加速度センサから得られる加速度データを用いることによって、容易に表示装置本体の姿勢を算出することができる。
【0032】
また、上記第2表示範囲設定手段は、パノラマ画像に対する所定の範囲を、第2の表示装置に表示する範囲として設定してもよい。
【0033】
上記によれば、第2の表示装置にパノラマ動画によって形成する空間における所定の範囲が常に表示されるため、ユーザが当該所定の範囲のパノラマ動画を常に見ることができる。
【0034】
また、上記パノラマ動画記憶手段は、現実世界または仮想世界を移動しながら撮像したパノラマ動画を記憶してもよい。この場合、上記所定の範囲は、パノラマ画像を移動しながら撮像した際の移動方向を見たパノラマ画像における範囲であってもよい。
【0035】
上記によれば、第2の表示装置が配置されている方向へ移動していくパノラマ動画の空間を形成することができ、ユーザが当該移動方向を認識しながらパノラマ動画を見ることができる。
【0036】
また、上記第2表示範囲設定手段は、第1の表示装置に表示されるパノラマ画像の範囲より広い範囲を、第2の表示装置に表示する範囲として設定してもよい。
【0037】
上記によれば、広い範囲を見たい場合に第2の表示装置を見るなど、所望する表示範囲の大きさに応じて、複数の表示装置を使い分けることができる。
【0038】
また、上記第1の表示装置は、可搬型の表示装置であるとともに、ユーザ操作に応じたデータを出力することが可能であってもよい。上記第2の表示装置は、据置型の表示装置でもよい。上記第1表示範囲設定手段は、第1の表示装置から出力されるデータに基づいて、第1の表示装置に表示する範囲を設定してもよい。上記第2表示範囲設定手段は、第1表示範囲設定手段によって設定された範囲を、第2の表示装置に表示する範囲に設定してもよい。
【0039】
上記によれば、第1の表示装置に表示されるパノラマ動画と同じ範囲が第2の表示装置にも表示されるため、可搬型の第1の表示装置を用いて操作しているユーザが見ているパノラマ動画を、据置型の第2の表示装置を介して他のユーザが見ることが可能となる。
【0040】
また、上記第1の表示装置は、可搬型の表示装置であるとともに、ユーザ操作に応じたデータを出力することが可能であってもよい。上記第2の表示装置は、据置型の表示装置でもよい。上記第1表示範囲設定手段は、第1の表示装置から出力されるデータに基づいて、第1の表示装置に表示する範囲を設定してもよい。上記第2表示範囲設定手段は、第1表示範囲設定手段によって設定される第1の表示装置に表示する範囲に基づいて第2の表示装置に表示する範囲を設定するとともに、第1の表示装置に表示する範囲がユーザ操作に応じて変化する変化量を抑制した範囲を第2の表示装置に表示する範囲に設定してもよい。
【0041】
上記によれば、可搬型の第1の表示装置に表示されるパノラマ動画と同様の範囲を据置型の第2の表示装置に表示する場合、第1の表示装置に表示されるパノラマ動画の範囲がユーザ操作に応じて変化する変化量を抑制した状態で据置型の第2の表示装置に表示されるため、当該第2の表示装置を見る他のユーザの映像酔いを防止することが可能となる。
【0042】
また、上記パノラマ画像取得手段は、パノラマ動画記憶手段に記憶されたパノラマ動画をデコードして読み出したパノラマ画像を逐次取得してもよい。上記第1の表示範囲設定手段は、デコードされて取得されたパノラマ画像から第1の表示装置に表示する範囲を設定してもよい。上記第2の表示範囲設定手段は、デコードされて取得されたパノラマ画像から第2の表示装置に表示する範囲を設定してもよい。上記第1表示制御手段は、デコードされて取得されたパノラマ画像のうち、第1表示範囲設定手段によって設定された範囲を第1の表示装置に逐次表示してもよい。上記第2表示制御手段は、デコードされて取得されたパノラマ画像のうち、第2表示範囲設定手段によって設定された範囲を第2の表示装置に逐次表示してもよい。
【0043】
上記によれば、デコードされて取得されたパノラマ画像がそれぞれ複数の表示装置に表示されるため、当該表示のための処理負荷を軽減することができる。
【0044】
また、上記第1表示制御手段は、第1の表示装置に表示するための画像を示すデータを当該第1の表示装置へ出力してもよい。上記第1の表示装置は、画像データ取得手段を備えてもよい。画像データ取得手段は、第1表示制御手段によって出力されたデータを取得する。この場合、上記第1の表示装置の表示画面は、画像データ取得手段が取得した画像データが示す画像を表示してもよい。
【0045】
上記によれば、第1の表示装置がゲーム処理等の情報処理を実行しない、いわゆるシンクライアント端末として機能することができる。
【0046】
また、上記第2の表示装置は、可搬型の表示装置であるとともに、ユーザ操作に応じたデータを出力することが可能であってもよい。上記第2表示範囲設定手段は、第2の表示装置から出力されるデータに基づいて、第2の表示装置に表示する範囲を設定してもよい。
【0047】
上記によれば、複数の可搬型表示装置に、それぞれパノラマ画像の少なくとも一部を表示することができる。
【0048】
また、上記第2の表示装置は、当該第1の表示装置本体の動きまたは姿勢に応じたデータを出力するセンサを備えてもよい。この場合、上記第2表示範囲設定手段は、センサから出力されるデータに基づいて算出された第2の表示装置の姿勢に応じて、第2の表示装置に表示する範囲を設定してもよい。
【0049】
上記によれば、複数のユーザがそれぞれ把持する表示装置の姿勢を変化させることによって、当該姿勢変化に応じた表示範囲のパノラマ画像が表示されるため、あたかもパノラマ動画によって形成されている空間を、複数のユーザが複数の表示装置を介して覗いているかのような画像をそれぞれの表示装置に表示することができる。
【0050】
また、上記情報処理プログラムは、入力受付手段として、さらにコンピュータを機能させてもよい。入力受付手段は、複数の表示装置それぞれに対応付けられた各入力装置からの入力を受け付ける。この場合、上記第1表示範囲設定手段は、第1の表示装置に対応付けられた第1の入力装置から受け付けられた入力に基づいて、取得されたパノラマ画像から当該第1の表示装置に表示する範囲を設定してもよい。上記第2表示範囲設定手段は、第2の表示装置に対応付けられた第2の入力装置から受け付けられた入力に基づいて、取得されたパノラマ画像から当該第2の表示装置に表示する範囲を設定してもよい。
【0051】
上記によれば、表示装置それぞれに対応する入力装置を操作することによって、自由に表示範囲を変化させることができる。
【0052】
また、本発明は、上記各手段を備える情報処理装置および情報処理システムや上記各手段で行われる動作を含む情報処理方法の形態で実施されてもよい。
【発明の効果】
【0053】
本発明によれば、より自由度の高い画像を表示することができる。
【図面の簡単な説明】
【0054】
【図1】ゲームシステム1の外観図
【図2】ゲーム装置3の内部構成を示すブロック図
【図3】コントローラ5の外観構成を示す斜視図
【図4】コントローラ5の外観構成を示す斜視図
【図5】コントローラ5の内部構造を示す図
【図6】コントローラ5の内部構造を示す図
【図7】コントローラ5の構成を示すブロック図
【図8】端末装置7の外観構成を示す図
【図9】ユーザが端末装置7を把持した様子を示す図
【図10】端末装置7の内部構成を示すブロック図
【図11】完全球パノラマの場合の模式図
【図12】非完全球パノラマ(下方死角有り)の場合の模式図
【図13】非完全全球パノラマ(下方死角有り)の場合の変形例
【図14】非完全全球パノラマ(上方死角有り)の場合の模式図
【図15】非完全全球パノラマ(上方死角有り)の場合の変形例
【図16】左右のみ全周パノラマの場合の模式図
【図17】360度より小さいパノラマの場合の模式図
【図18A】端末装置7の姿勢に応じた仮想カメラ101の制御を示す図
【図18B】端末装置7の姿勢に応じた仮想カメラ101の制御を示す図
【図18C】端末装置7の姿勢に応じた仮想カメラ101の制御を示す図
【図19】ファイルのデータフォーマット
【図20】ゲーム装置3によって実行される本発明の第1の実施形態に係る処理のフローチャート
【図21】ゲーム装置3によって実行される本発明の第1の実施形態に係る処理のフローチャート
【図22】ゲーム装置3によって実行される本発明の第1の実施形態に係る処理のフローチャート
【図23】フレーム毎のパノラマ画像を構成するパノラマ動画を撮像し、当該パノラマ動画をエンコードして記録するまでの処理の流れの一例を示す図
【図24】エンコードされたパノラマ動画データをデコードして表示するまでの処理の流れの一例を示す図
【図25】ゲーム装置3のメインメモリに記憶される本発明の第2の実施形態に係る主なデータおよびプログラムの一例を示す図
【図26】ゲーム装置3において実行される本発明の第2の実施形態に係る処理の前半の一例を示すフローチャート
【図27】ゲーム装置3において実行される本発明の第2の実施形態に係る処理の後半の一例を示すフローチャート
【発明を実施するための形態】
【0055】
[1.ゲームシステムの全体構成]
以下、図面を参照して、本発明の一実施形態に係るゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。図1において、ゲームシステム1は、テレビジョン受像器等に代表される据置型のディスプレイ装置(以下、「モニタ」と記載する)2、据置型のゲーム装置3、光ディスク4、コントローラ5、マーカ装置6、および、端末装置7を含む。ゲームシステム1は、コントローラ5および/または端末装置7を用いたゲーム操作に基づいてゲーム装置3においてゲーム処理を実行し、ゲーム処理によって得られるゲーム画像をモニタ2および/または端末装置7に表示するものである。
【0056】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるための情報処理プログラム(典型的にはゲームプログラム)が記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されている情報処理プログラムを読み出して実行することによってゲーム処理を実行する。
【0057】
ゲーム装置3には、モニタ2が接続コードを介して接続される。モニタ2は、ゲーム装置3において実行されるゲーム処理によって得られるゲーム画像を表示する。モニタ2はスピーカ2a(図2)を有しており、スピーカ2aは、上記ゲーム処理の結果得られるゲーム音声を出力する。なお、他の実施形態においては、ゲーム装置3と据置型の表示装置とは一体となっていてもよい。また、ゲーム装置3とモニタ2との通信は無線通信であってもよい。
【0058】
モニタ2の画面の周辺(図1では画面の上側)には、マーカ装置6が設置される。詳細は後述するが、ユーザ(プレイヤ)はコントローラ5を動かすゲーム操作を行うことができ、マーカ装置6は、コントローラ5の動きや位置や姿勢等をゲーム装置3が算出するために用いられる。マーカ装置6は、その両端に2つのマーカ6Rおよび6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LED(Light Emitting Diode)であり、モニタ2の前方に向かって赤外光を出力する。マーカ装置6はゲーム装置3に接続されており、ゲーム装置3はマーカ装置6が備える各赤外LEDの点灯を制御することが可能である。なお、マーカ装置6は可搬型であり、ユーザはマーカ装置6を自由な位置に設置することができる。図1ではマーカ装置6がモニタ2の上に設置された態様を表しているが、マーカ装置6を設置する位置および向きは任意である。
【0059】
コントローラ5は、自機に対して行われた操作の内容を表す操作データをゲーム装置3に与えるものである。コントローラ5とゲーム装置3とは無線通信によって通信可能である。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。また、本実施形態では、ゲームシステム1に含まれるコントローラ5は1つとするが、ゲーム装置3は複数のコントローラと通信可能であり、所定台数のコントローラを同時に使用することによって複数人でゲームをプレイすることが可能である。コントローラ5の詳細な構成については後述する。
【0060】
端末装置7は、ユーザが把持可能な程度の大きさであり、ユーザは端末装置7を手に持って動かしたり、あるいは、端末装置7を自由な位置に配置したりして使用することが可能である。詳細な構成は後述するが、端末装置7は、表示手段であるLCD(Liquid Crystal Display:液晶表示装置)51、および、入力手段(後述するタッチパネル52やジャイロセンサ64等)を備える。端末装置7とゲーム装置3とは無線(有線であってもよい)によって通信可能である。端末装置7は、ゲーム装置3で生成された画像(例えばゲーム画像)のデータをゲーム装置3から受信し、画像をLCD51に表示する。なお、本実施形態では表示装置としてLCDを用いているが、端末装置7は、例えばEL(Electro Luminescence:電界発光)を利用した表示装置等、他の任意の表示装置を有していてもよい。また、端末装置7は、自機に対して行われた操作の内容を表す操作データをゲーム装置3に送信する。
【0061】
[2.ゲーム装置3の内部構成]
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の内部構成を示すブロック図である。ゲーム装置3は、CPU(Central Processing Unit)10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
【0062】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間におけるデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムLSI11の内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
【0063】
システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM(Video RAM)11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0064】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。なお、ゲーム装置3は、モニタ2に表示する画像と、端末装置7に表示する画像との両方を生成する。以下では、モニタ2に表示される画像を「モニタ用画像」と呼び、端末装置7に表示される画像を「端末用画像」と呼ぶことがある。
【0065】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。なお、本実施形態においては、ゲーム音声についてもゲーム画像と同様、モニタ2のスピーカから出力するゲーム音声と、端末装置7のスピーカから出力するゲーム音声との両方が生成される。以下では、モニタ2から出力される音声を「モニタ用音声」と呼び、端末装置7から出力される音声を「端末用音声」と呼ぶことがある。
【0066】
上記のようにゲーム装置3において生成される画像および音声のうちで、モニタ2において出力される画像および音声のデータは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してモニタ2に出力するとともに、読み出した音声データを、モニタ2に内蔵されるスピーカ2aに出力する。これによって、モニタ2に画像が表示されるとともにスピーカ2aから音が出力される。なお、ゲーム装置3とモニタ2との接続は、どのような方式で行われてもよいが、ゲーム装置3は、モニタ2を制御する制御指令を有線または無線でモニタ2へ送信するようにしてもよい。例えばHDMI(High−Definition Multimedia Interface)規格に則ったHDMIケーブルが用いられてもよい。HDMI規格では、CEC(Consumer Electronics Control)と呼ばれる機能によって、接続相手の機器を制御することが可能である。したがって、HDMIケーブルが用いられる場合のように、ゲーム装置3がモニタ2に対する制御が可能である場合には、ゲーム装置3は、適宜のタイミングでモニタ2の電源をオンにしたり、モニタ2の入力を切り替えたりすることができる。
【0067】
また、ゲーム装置3において生成される画像および音声のうちで、端末装置7において出力される画像および音声のデータは、入出力プロセッサ11a等によって端末装置7へ送信される。入出力プロセッサ11a等による端末装置7へのデータの送信については後述する。
【0068】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、ネットワーク通信モジュール18、コントローラ通信モジュール19、拡張コネクタ20、メモリカード用コネクタ21、コーデックLSI27に接続される。また、ネットワーク通信モジュール18にはアンテナ22が接続される。コントローラ通信モジュール19にはアンテナ23が接続される。コーデックLSI27は端末通信モジュール28に接続され、端末通信モジュール28にはアンテナ29が接続される。
【0069】
ゲーム装置3は、インターネット等のネットワークに接続して外部の情報処理装置(例えば他のゲーム装置や、各種サーバ、コンピュータ等)と通信を行うことが可能である。すなわち、入出力プロセッサ11aは、ネットワーク通信モジュール18およびアンテナ22を介してインターネット等のネットワークに接続可能であり、ネットワークに接続される他の装置と通信を行うことができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、ネットワーク通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、外部情報処理装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22およびネットワーク通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と外部情報処理装置との間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。また、フラッシュメモリ17にはゲームプログラムが記憶されてもよい。
【0070】
また、ゲーム装置3は、コントローラ5からの操作データを受信することが可能である。すなわち、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23およびコントローラ通信モジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0071】
また、ゲーム装置3は、端末装置7との間で画像や音声等のデータを送受信することが可能である。入出力プロセッサ11aは、端末装置7へゲーム画像(端末用ゲーム画像)を送信する場合、GPU11bが生成したゲーム画像のデータをコーデックLSI27へ出力する。コーデックLSI27は、入出力プロセッサ11aからの画像データに対して所定の圧縮処理を行う。端末通信モジュール28は、端末装置7との間で無線通信を行う。したがって、コーデックLSI27によって圧縮された画像データは、端末通信モジュール28によってアンテナ29を介して端末装置7へ送信される。なお、本実施形態では、ゲーム装置3から端末装置7へ送信される画像データはゲームに用いるものであり、ゲームにおいては表示される画像に遅延が生じるとゲームの操作性に悪影響が出る。そのため、ゲーム装置3から端末装置7への画像データの送信に関しては、できるだけ遅延が生じないようにすることが好ましい。したがって、本実施形態では、コーデックLSI27は、例えばH.264規格といった高効率の圧縮技術を用いて画像データを圧縮する。なお、それ以外の圧縮技術を用いてもよいし、通信速度が十分である場合には無圧縮で画像データを送信する構成であってもよい。また、端末通信モジュール28は、例えばWi−Fiの認証を受けた通信モジュールであり、例えばIEEE802.11n規格で採用されるMIMO(Multiple Input Multiple Output)の技術を用いて端末装置7との間の無線通信を高速に行うようにしてもよいし、他の通信方式を用いてもよい。
【0072】
また、ゲーム装置3は、画像データの他、音声データを端末装置7へ送信する。すなわち、入出力プロセッサ11aは、DSP11cが生成した音声データを、コーデックLSI27を介して端末通信モジュール28へ出力する。コーデックLSI27は、音声データに対しても画像データと同様に圧縮処理を行う。音声データに対する圧縮の方式は、どのような方式であってもよいが、圧縮率が高く、音声の劣化が少ない方式が好ましい。また、他の実施形態においては、音声データは圧縮されずに送信されてもよい。端末通信モジュール28は、圧縮された画像データおよび音声データを、アンテナ29を介して端末装置7へ送信する。
【0073】
さらに、ゲーム装置3は、上記画像データおよび音声データの他に、必要に応じて各種の制御データを端末装置7へ送信する。制御データは、端末装置7が備える構成要素に対する制御指示を表すデータであり、例えばマーカ部(図10に示すマーカ部55)の点灯を制御する指示や、カメラ(図10に示すカメラ56)の撮像を制御する指示等を表す。入出力プロセッサ11aは、CPU10の指示に応じて制御データを端末装置7へ送信する。なお、この制御データに関して、本実施形態ではコーデックLSI27はデータの圧縮処理を行わないが、他の実施形態においては圧縮処理を行うようにしてもよい。なお、ゲーム装置3から端末装置7へ送信される上述のデータは、必要に応じて暗号化がされていてもよいし、されていなくともよい。
【0074】
また、ゲーム装置3は、端末装置7から各種データを受信可能である。詳細は後述するが、本実施形態では、端末装置7は、操作データ、画像データ、および音声データを送信する。端末装置7から送信される各データはアンテナ29を介して端末通信モジュール28によって受信される。ここで、端末装置7からの画像データおよび音声データは、ゲーム装置3から端末装置7への画像データおよび音声データと同様の圧縮処理が施されている。したがって、これら画像データおよび音声データについては、端末通信モジュール28からコーデックLSI27に送られ、コーデックLSI27によって伸張処理が施されて入出力プロセッサ11aに出力される。一方、端末装置7からの操作データに関しては、画像や音声に比べてデータ量が少ないので、圧縮処理が施されていなくともよい。また、必要に応じて暗号化がされていてもよいし、されていなくともよい。したがって、操作データは、端末通信モジュール28で受信された後、コーデックLSI27を介して入出力プロセッサ11aに出力される。入出力プロセッサ11aは、端末装置7から受信したデータを、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0075】
また、ゲーム装置3は、他の機器や外部記憶媒体に接続することが可能である。すなわち、入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタである。拡張コネクタ20に対しては、外部記憶媒体のようなメディアを接続したり、他のコントローラ等の周辺機器を接続したり、有線の通信用コネクタを接続することによってネットワーク通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【0076】
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、図示しないACアダプタによって外部の電源からゲーム装置3の各構成要素に対して電力が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0077】
なお、他の実施形態においては、ゲーム装置3が備える各構成要素のうちでいくつかの構成要素は、ゲーム装置3とは別体の拡張機器として構成されてもよい。このとき、拡張機器は、例えば上記拡張コネクタ20を介してゲーム装置3と接続されるようにしてもよい。具体的には、拡張機器は、例えば上記コーデックLSI27、端末通信モジュール28およびアンテナ29の各構成要素を備えており、拡張コネクタ20に対して着脱可能であってもよい。これによれば、上記各構成要素を備えていないゲーム装置に対して上記拡張機器を接続することによって、当該ゲーム装置を端末装置7と通信可能な構成とすることができる。
【0078】
[3.コントローラ5の構成]
次に、図3〜図7を参照して、コントローラ5について説明する。図3は、コントローラ5の外観構成を示す斜視図である。図4は、コントローラ5の外観構成を示す斜視図である。図3は、コントローラ5の上側後方から見た斜視図であり、図4は、コントローラ5を下側前方から見た斜視図である。
【0079】
図3および図4において、コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。ユーザは、コントローラ5に設けられたボタンを押下すること、および、コントローラ5自体を動かしてその位置や姿勢(傾き)を変えることによってゲーム操作を行うことができる。
【0080】
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字ボタン32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、および電源ボタン32hが設けられる。本明細書では、これらのボタン32a〜32hが設けられるハウジング31の上面を「ボタン面」と呼ぶことがある。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行する情報処理プログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32fおよび電源ボタン32hは、その上面がハウジング31の上面に埋没している。これによって、ユーザがホームボタン32fまたは電源ボタン32hを誤って押下することを防止することができる。
【0081】
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、コントローラ5に他の機器(例えば、他のセンサユニットやコントローラ)を接続するために利用される。また、ハウジング31の後面におけるコネクタ33の両側には、上記他の機器が容易に離脱することを防止するために係止穴33aが設けられている。
【0082】
ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をユーザに通知したり、コントローラ5の電池残量をユーザに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dのいずれか1つが点灯する。
【0083】
また、コントローラ5は撮像情報演算部35(図6)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6Rおよび6Lからの赤外光を少なくとも透過する材質で構成される。
【0084】
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカ47(図5)からの音を外部に放出するための音抜き孔31aが形成されている。
【0085】
次に、図5および図6を参照して、コントローラ5の内部構造について説明する。図5および図6は、コントローラ5の内部構造を示す図である。なお、図5は、コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6は、コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6に示す斜視図は、図5に示す基板30を裏面から見た斜視図となっている。
【0086】
図5において、ハウジング31の内部には基板30が固設されており、当該基板30の上主面上に各操作ボタン32a〜32h、各LED34a〜34d、加速度センサ37、アンテナ45、およびスピーカ47等が設けられる。これらは、基板30等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図6参照)に接続される。本実施形態では、加速度センサ37は、X軸方向に関してコントローラ5の中心からずれた位置に配置されている。これによって、コントローラ5をZ軸回りに回転させたときのコントローラ5の動きが算出しやすくなる。また、加速度センサ37は、長手方向(Z軸方向)に関してコントローラ5の中心よりも前方に配置されている。また、無線モジュール44(図6)およびアンテナ45によって、コントローラ5がワイヤレスコントローラとして機能する。
【0087】
一方、図6において、基板30の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ5の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を備えている。これらの部材38〜41はそれぞれ基板30の下主面に取り付けられる。
【0088】
さらに、基板30の下主面上には、上記マイコン42およびバイブレータ46が設けられている。バイブレータ46は、例えば振動モータやソレノイドであり、基板30等に形成された配線によってマイコン42と接続される。マイコン42の指示によりバイブレータ46が作動することによってコントローラ5に振動が発生する。これによって、コントローラ5を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ46は、ハウジング31のやや前方寄りに配置される。つまり、バイブレータ46がコントローラ5の中心よりも端側に配置することによって、バイブレータ46の振動によりコントローラ5全体を大きく振動させることができる。また、コネクタ33は、基板30の下主面上の後端縁に取り付けられる。なお、図5および図6に示す他、コントローラ5は、マイコン42の基本クロックを生成する水晶振動子、スピーカ47に音声信号を出力するアンプ等を備えている。
【0089】
なお、図3〜図6に示したコントローラ5の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。また、本実施形態では、撮像手段による撮像方向はZ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ5における撮像情報演算部35の位置(撮像情報演算部35の光入射面35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【0090】
図7は、コントローラ5の構成を示すブロック図である。コントローラ5は、操作部32(各操作ボタン32a〜32i)、撮像情報演算部35、通信部36、加速度センサ37、およびジャイロセンサ48を備えている。コントローラ5は、自機に対して行われた操作内容を表すデータを操作データとしてゲーム装置3へ送信するものである。なお、以下では、コントローラ5が送信する操作データを「コントローラ操作データ」と呼び、端末装置7が送信する操作データを「端末操作データ」と呼ぶことがある。
【0091】
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を表す操作ボタンデータを通信部36のマイコン42へ出力する。
【0092】
撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ5の動きでも追跡して解析することができる。
【0093】
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ5の前方から入射する光から赤外線のみを通過させる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDセンサのような固体撮像素子であり、レンズ39が集光した赤外線を受光して画像信号を出力する。ここで、撮像対象となる端末装置7のマーカ部55およびマーカ装置6は、赤外光を出力するマーカで構成される。したがって、赤外線フィルタ38を設けることによって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを受光して画像データを生成するので、撮像対象(マーカ部55および/またはマーカ装置6)の画像をより正確に撮像することができる。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象の位置を算出する。画像処理回路41は、算出された位置を示す座標を通信部36のマイコン42へ出力する。この座標のデータは、マイコン42によって操作データとしてゲーム装置3に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ5自体の向き(傾斜角度)や位置に対応して変化するので、ゲーム装置3はこのマーカ座標を用いてコントローラ5の向きや位置を算出することができる。
【0094】
なお、他の実施形態においては、コントローラ5は画像処理回路41を備えていない構成であってもよく、撮像画像自体がコントローラ5からゲーム装置3へ送信されてもよい。このとき、ゲーム装置3は、画像処理回路41と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【0095】
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する、すなわち、コントローラ5に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。例えば、2軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。なお、加速度センサ37は、例えば静電容量式のMEMS(Micro Electro Mechanical System)型加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【0096】
本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ37からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ5を基準に設定されるXYZ座標系(コントローラ座標系)における3次元のベクトルとして表される。
【0097】
加速度センサ37が検出した加速度を表すデータ(加速度データ)は、通信部36へ出力される。なお、加速度センサ37が検出した加速度は、コントローラ5自体の向き(傾斜角度)や動きに対応して変化するので、ゲーム装置3は取得された加速度データを用いてコントローラ5の向きや動きを算出することができる。本実施形態では、ゲーム装置3は、取得された加速度データに基づいてコントローラ5の姿勢や傾斜角度等を算出する。
【0098】
なお、加速度センサ37(後述する加速度センサ63についても同様)から出力される加速度の信号に基づいて、ゲーム装置3のプロセッサ(例えばCPU10)またはコントローラ5のプロセッサ(例えばマイコン42)等のコンピュータが処理を行うことによって、コントローラ5に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ37を搭載するコントローラ5が静止状態であることを前提としてコンピュータ側の処理が実行される場合(すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合)、コントローラ5が現実に静止状態であれば、検出された加速度に基づいてコントローラ5の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ37の検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かによって、コントローラ5が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ37の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ5がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ37からの出力に基づいてコントローラ5の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ5の傾斜方向を算出するようにしてもよい。このように、加速度センサ37をプロセッサと組み合わせて用いることによって、コントローラ5の傾斜角度または姿勢を判定することができる。
【0099】
一方、コントローラ5が動的な状態(コントローラ5が動かされている状態)であることを前提とする場合には、加速度センサ37は重力加速度に加えてコントローラ5の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ5の動き方向を知ることができる。また、コントローラ5が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ5の傾きを知ることが可能である。なお、他の実施例では、加速度センサ37は、内蔵の加速度検出手段で検出された加速度信号をマイコン42に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ37が静的な加速度(例えば、重力加速度)を検出するために用いられる場合、加速度信号を傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0100】
ジャイロセンサ48は、3軸(本実施形態では、XYZ軸)回りの角速度を検出する。本明細書では、コントローラ5の撮像方向(Z軸正方向)を基準として、X軸回りの回転方向をピッチ方向、Y軸回りの回転方向をヨー方向、Z軸回りの回転方向をロール方向と呼ぶ。ジャイロセンサ48は、3軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。例えば、ジャイロセンサ48は、3軸ジャイロセンサであってもよいし、2軸ジャイロセンサと1軸ジャイロセンサとを組み合わせて3軸周りの角速度を検出するものであってもよい。ジャイロセンサ48で検出された角速度を表すデータは、通信部36へ出力される。また、ジャイロセンサ48は1軸または2軸回りの角速度を検出するものであってもよい。
【0101】
通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。
【0102】
操作部32、撮像情報演算部35、加速度センサ37、およびジャイロセンサ48からマイコン42へ出力されたデータは、一時的にメモリ43に格納される。これらのデータは、操作データ(コントローラ操作データ)としてゲーム装置3へ送信される。すなわち、マイコン42は、ゲーム装置3のコントローラ通信モジュール19への送信タイミングが到来すると、メモリ43に格納されている操作データを無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ5から送信される。微弱電波信号はゲーム装置3側のコントローラ通信モジュール19で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、コントローラ5から取得した操作データを用いてゲーム処理を行う。なお、通信部36からコントローラ通信モジュール19への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ5の通信部36は、例えば1/200秒に1回の割合で操作データをゲーム装置3のコントローラ通信モジュール19へ出力する。
【0103】
以上のように、コントローラ5は、自機に対する操作を表す操作データとして、マーカ座標データ、加速度データ、角速度データ、および操作ボタンデータを送信可能である。また、ゲーム装置3は、上記操作データをゲーム入力として用いてゲーム処理を実行する。したがって、上記コントローラ5を用いることによって、ユーザは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ5自体を動かすゲーム操作を行うことができる。例えば、コントローラ5を任意の姿勢に傾ける操作、コントローラ5によって画面上の任意の位置を指示する操作、および、コントローラ5自体を動かす操作等を行うことが可能となる。
【0104】
また、本実施形態において、コントローラ5は、ゲーム画像を表示する表示手段を有しないが、例えば電池残量を表す画像等を表示するための表示手段を有していてもよい。
【0105】
[4.端末装置7の構成]
次に、図8〜図10を参照して、端末装置7の構成について説明する。図8は、端末装置7の外観構成を示す図である。図8における(a)図は端末装置7の正面図であり、(b)図は上面図であり、(c)図は右側面図であり、(d)図は下面図である。また、図9は、ユーザが端末装置7を把持した様子を示す図である。
【0106】
図8に示されるように、端末装置7は、大略的には横長の長方形の板状形状であるハウジング50を備える。ハウジング50は、ユーザが把持することができる程度の大きさである。したがって、ユーザは、端末装置7を持って動かしたり、端末装置7の配置位置を変更したりすることができる。
【0107】
端末装置7は、ハウジング50の表面にLCD51を有する。LCD51は、ハウジング50の表面の中央付近に設けられる。したがって、ユーザは、図9に示すようにLCD51の両側部分のハウジング50を持つことによって、LCD51の画面を見ながら端末装置を持って動かすことができる。なお、図9ではユーザがLCD51の左右両側の部分のハウジング50を持つことで端末装置7を横持ちで(横に長い向きにして)持つ例を示しているが、端末装置7を縦持ちで(縦に長い向きにして)持つことも可能である。
【0108】
図8の(a)図に示すように、端末装置7は、操作手段として、LCD51の画面上にタッチパネル52を有する。本実施形態では、タッチパネル52は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。また、タッチパネル52はシングルタッチ方式でもよいし、マルチタッチ方式であってもよい。本実施形態では、タッチパネル52として、LCD51の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル52の解像度とLCD51の解像度が一致している必要はない。タッチパネル52に対する入力は通常タッチペンを用いて行われるが、タッチペンに限らずユーザの指でタッチパネル52に対する入力をすることも可能である。なお、ハウジング50には、タッチパネル52に対する操作を行うために用いられるタッチペンを収納するための収納穴が設けられていてもよい。このように、端末装置7はタッチパネル52を備えるので、ユーザは、端末装置7を動かしながらタッチパネル52を操作することができる。つまりユーザは、LCD51の画面を動かしつつ、その画面に対して直接(タッチパネル52によって)入力を行うことができる。
【0109】
図8に示すように、端末装置7は、操作手段として、2つのアナログスティック53Aおよび53Bと、複数のボタン54A〜54Lとを備えている。各アナログスティック53Aおよび53Bは、方向を指示するデバイスである。各アナログスティック53Aおよび53Bは、ユーザの指で操作されるスティック部がハウジング50の表面に対して任意の方向(上下左右および斜め方向の任意の角度)にスライド(または傾倒)することができるように構成されている。また、左アナログスティック53AはLCD51の画面の左側に、右アナログスティック53BはLCD51の画面の右側にそれぞれ設けられる。したがって、ユーザは、左右いずれの手でもアナログスティックを用いて方向を指示する入力を行うことができる。また、図9に示すように、各アナログスティック53Aおよび53Bは、ユーザが端末装置7の左右部分を把持した状態で操作可能な位置に設けられるので、ユーザは、端末装置7を持って動かす場合においても各アナログスティック53Aおよび53Bを容易に操作することができる。
【0110】
各ボタン54A〜54Lは、所定の入力を行うための操作手段である。以下に示すように、各ボタン54A〜54Lは、ユーザが端末装置7の左右部分を把持した状態で操作可能な位置に設けられる(図9参照)。したがって、ユーザは、端末装置7を持って動かす場合においてもこれらの操作手段を容易に操作することができる。
【0111】
図8の(a)図に示すように、ハウジング50の表面には、各操作ボタン54A〜54Lのうち、十字ボタン(方向入力ボタン)54Aと、ボタン54B〜54Hとが設けられる。つまり、これらのボタン54A〜54Gは、ユーザの親指で操作可能な位置に配置されている(図9参照)。
【0112】
十字ボタン54Aは、LCD51の左側であって、左アナログスティック53Aの下側に設けられる。つまり、十字ボタン54Aはユーザの左手で操作可能な位置に配置されている。十字ボタン54Aは、十字の形状を有しており、上下左右の方向を指示することが可能なボタンである。また、ボタン54B〜54Dは、LCD51の下側に設けられる。これら3つのボタン54B〜54Dは、左右両方の手で操作可能な位置に配置されている。また、4つのボタン54E〜54Hは、LCD51の右側であって、右アナログスティック53Bの下側に設けられる。つまり、4つのボタン54E〜54Hはユーザの右手で操作可能な位置に配置されている。さらに、4つのボタン54E〜54Hは、(4つのボタン54E〜54Hの中心位置に対して)上下左右の位置関係となるように配置されている。したがって、端末装置7は、ユーザに上下左右の方向を指示させるためのボタンとして4つのボタン54E〜54Hを機能させることも可能である。
【0113】
また、図8の(a)図、(b)図、および(c)図に示すように、第1Lボタン54Iおよび第1Rボタン54Jは、ハウジング50の斜め上部分(左上部分および右上部分)に設けられる。具体的には、第1Lボタン54Iは、板状のハウジング50における上側の側面の左端に設けられ、上側および左側の側面から露出している。また、第1Rボタン54Jは、ハウジング50における上側の側面の右端に設けられ、上側および右側の側面から露出している。このように、第1Lボタン54Iは、ユーザの左手人差し指で操作可能な位置に配置され、第1Rボタン54Jは、ユーザの右手人差し指で操作可能な位置に配置される(図9参照)。
【0114】
また、図8の(b)図および(c)図に示すように、第2Lボタン54Kおよび第2Rボタン54Lは、板状のハウジング50の裏面(すなわちLCD51が設けられる表面の反対側の面)に突起して設けられる足部59Aおよび59Bに配置される。具体的には、第2Lボタン54Kは、ハウジング50の裏面の左側(表面側から見たときの左側)のやや上方に設けられ、第2Rボタン54Lは、ハウジング50の裏面の右側(表面側から見たときの右側)のやや上方に設けられる。換言すれば、第2Lボタン54Kは、表面に設けられる左アナログスティック53Aの概ね反対側の位置に設けられ、第2Rボタン54Lは、表面に設けられる右アナログスティック53Bの概ね反対側の位置に設けられる。このように、第2Lボタン54Kは、ユーザの左手中指で操作可能な位置に配置され、第2Rボタン54Lは、ユーザの右手中指で操作可能な位置に配置される(図9参照)。また、第2Lボタン54Kおよび第2Rボタン54Lは、図8の(c)図に示すように、上記足部59Aおよび59Bの斜め上方を向く面に設けられ、斜め上方を向くボタン面を有する。ユーザが端末装置7を把持した場合には中指は上下方向に動くと考えられるので、ボタン面を上方に向けることで、ユーザは第2Lボタン54Kおよび第2Rボタン54Lを押下しやすくなる。また、ハウジング50の裏面に足部が設けられることにより、ユーザはハウジング50を把持しやすくなり、かつ、足部にボタンが設けられることで、ハウジング50を把持したまま操作しやすくなる。
【0115】
なお、図8に示す端末装置7に関しては、第2Lボタン54Kおよび第2Rボタン54Lが裏面に設けられるので、LCD51の画面(ハウジング50の表面)が上を向いた状態で端末装置7を載置させる場合、画面が完全に水平にはならない場合がある。そのため、他の実施形態においては、ハウジング50の裏面に3つ以上の足部が形成されてもよい。これによれば、LCD51の画面が上を向いた状態では足部が床面に接することで床面に載置できるので、画面が水平になるように端末装置7を載置することができる。また、着脱可能な足部を追加することで端末装置7を水平に載置するようにしてもよい。
【0116】
各ボタン54A〜54Lには、ゲームプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン54Aおよびボタン54E〜54Hは方向指示操作や選択操作等に用いられてもよいし、各ボタン54B〜54Eは決定操作やキャンセル操作等に用いられてもよい。
【0117】
なお、図示しないが、端末装置7は、端末装置7の電源をオン/オフするための電源ボタンを有している。また、端末装置7は、LCD51の画面表示をオン/オフするためのボタンや、ゲーム装置3との接続設定(ペアリング)を行うためのボタンや、スピーカ(図10に示すスピーカ67)の音量を調節するためのボタンを有していてもよい。
【0118】
図8の(a)図に示すように、端末装置7は、マーカ55Aおよびマーカ55Bからなるマーカ部(図10に示すマーカ部55)をハウジング50の表面に備えている。マーカ部55は、LCD51の上側に設けられる。各マーカ55Aおよびマーカ55Bは、マーカ装置6の各マーカ6Rおよび6Lと同様、1以上の赤外LEDで構成される。マーカ部55は、上述のマーカ装置6と同様、コントローラ5の動き等をゲーム装置3が算出するために用いられる。また、ゲーム装置3はマーカ部55が備える各赤外LEDの点灯を制御することが可能である。
【0119】
端末装置7は、撮像手段であるカメラ56を備えている。カメラ56は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。図8に示すように、本実施形態では、カメラ56はハウジング50の表面に設けられる。したがって、カメラ56は、端末装置7を持っているユーザの顔を撮像することができ、例えばLCD51を見ながらゲームを行っている時のユーザを撮像することができる。
【0120】
なお、端末装置7は、音声入力手段であるマイク(図10に示すマイク69)を備えている。ハウジング50の表面には、マイクロフォン用孔60が設けられる。マイク69はこのマイクロフォン用孔60の奥のハウジング50内部に設けられる。マイクは、ユーザの音声等、端末装置7の周囲の音を検出する。
【0121】
端末装置7は、音声出力手段であるスピーカ(図10に示すスピーカ67)を備えている。図8の(d)図に示すように、ハウジング50の下側側面にはスピーカ孔57が設けられる。スピーカ67の出力音はこのスピーカ孔57から出力される。本実施形態では、端末装置7は2つのスピーカを備えており、左スピーカおよび右スピーカのそれぞれの位置にスピーカ孔57が設けられる。
【0122】
また、端末装置7は、他の装置を端末装置7に接続するための拡張コネクタ58を備えている。本実施形態においては、図8の(d)図に示すように、拡張コネクタ58は、ハウジング50の下側側面に設けられる。なお、拡張コネクタ58に接続される他の装置はどのようなものであってもよく、例えば、特定のゲームに用いるコントローラ(銃型のコントローラ等)やキーボード等の入力装置であってもよい。他の装置を接続する必要がなければ、拡張コネクタ58は設けられていなくともよい。
【0123】
なお、図8に示した端末装置7に関して、各操作ボタンやハウジング50の形状や、各構成要素の数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。
【0124】
次に、図10を参照して、端末装置7の内部構成について説明する。図10は、端末装置7の内部構成を示すブロック図である。図10に示すように、端末装置7は、図8に示した構成の他、タッチパネルコントローラ61、磁気センサ62、加速度センサ63、ジャイロセンサ64、ユーザインタフェースコントローラ(UIコントローラ)65、コーデックLSI66、スピーカ67、サウンドIC68、マイク69、無線モジュール70、アンテナ71、赤外線通信モジュール72、フラッシュメモリ73、電源IC74、電池75、および、バイブレータ79を備える。これらの電子部品は、電子回路基板上に実装されてハウジング50内に収納される。
【0125】
UIコントローラ65は、各種の入出力部に対するデータの入出力を制御するための回路である。UIコントローラ65は、タッチパネルコントローラ61、アナログスティック53(アナログスティック53Aおよび53B)、操作ボタン54(各操作ボタン54A〜54L)、マーカ部55、磁気センサ62、加速度センサ63、ジャイロセンサ64、およびバイブレータ79に接続される。また、UIコントローラ65は、コーデックLSI66と拡張コネクタ58に接続される。また、UIコントローラ65には電源IC74が接続され、UIコントローラ65を介して各部に電力が供給される。電源IC74には内蔵の電池75が接続され、電力が供給される。また、電源IC74には、コネクタ等を介して外部電源から電力を取得可能な充電器76またはケーブルを接続することが可能であり、端末装置7は、当該充電器76またはケーブルを用いて外部電源からの電力供給と充電を行うことができる。なお、端末装置7は、図示しない充電機能を有するクレイドルに端末装置7を装着することで充電を行うようにしてもよい。
【0126】
タッチパネルコントローラ61は、タッチパネル52に接続され、タッチパネル52の制御を行う回路である。タッチパネルコントローラ61は、タッチパネル52からの信号に基づいて所定の形式のタッチ位置データを生成してUIコントローラ65へ出力する。タッチ位置データは、タッチパネル52の入力面において入力が行われた位置の座標を表す。なお、タッチパネルコントローラ61は、タッチパネル52からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。また、UIコントローラ65からタッチパネルコントローラ61へは、タッチパネル52に対する各種の制御指示が出力される。
【0127】
アナログスティック53は、ユーザの指で操作されるスティック部がスライドした(または傾倒した)方向および量を表すスティックデータをUIコントローラ65へ出力する。また、操作ボタン54は、各操作ボタン54A〜54Lに対する入力状況(押下されたか否か)を表す操作ボタンデータをUIコントローラ65へ出力する。
【0128】
磁気センサ62は、磁界の大きさおよび方向を検知することで方位を検出する。検出された方位を示す方位データは、UIコントローラ65へ出力される。また、UIコントローラ65から磁気センサ62へは、磁気センサ62に対する制御指示が出力される。磁気センサ62に関しては、MI(磁気インピーダンス)素子、フラックスゲートセンサ、ホール素子、GMR(巨大磁気抵抗)素子、TMR(トンネル磁気抵抗)素子、あるいはAMR(異方性磁気抵抗)素子等を用いたセンサがあるが、方位を検出することができればどのようなものが用いられてもよい。なお、厳密には、地磁気以外に磁界が発生している場所においては、得られた方位データは方位を示さないことになるが、そのような場合であっても、端末装置7が動いた場合には方位データが変化するため、端末装置7の姿勢の変化を算出することができる。
【0129】
加速度センサ63は、ハウジング50の内部に設けられ、3軸(図8の(a)図に示すxyz軸)方向に沿った直線加速度の大きさを検出する。具体的には、加速度センサ63は、ハウジング50の長辺方向をx軸、ハウジング50の短辺方向をy軸、ハウジング50の表面に対して垂直な方向をz軸として、各軸の直線加速度の大きさを検出する。検出された加速度を表す加速度データはUIコントローラ65へ出力される。また、UIコントローラ65から加速度センサ63へは、加速度センサ63に対する制御指示が出力される。加速度センサ63は、本実施形態では例えば静電容量式のMEMS型加速度センサであるとするが、他の実施形態においては他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ63は1軸または2軸方向を検出する加速度センサであってもよい。
【0130】
ジャイロセンサ64は、ハウジング50の内部に設けられ、上記x軸、y軸およびz軸の3軸周りの角速度を検出する。検出された角速度を表す角速度データは、UIコントローラ65へ出力される。また、UIコントローラ65からジャイロセンサ64へは、ジャイロセンサ64に対する制御指示が出力される。なお、3軸の角速度を検出するために用いられるジャイロセンサの数および組み合わせはどのようなものであってもよく、ジャイロセンサ64はジャイロセンサ48と同様、2軸ジャイロセンサと1軸ジャイロセンサとで構成されてもよい。また、ジャイロセンサ64は1軸または2軸方向を検出するジャイロセンサであってもよい。
【0131】
バイブレータ79は、例えば振動モータやソレノイドであり、UIコントローラ65に接続される。UIコントローラ65の指示によりバイブレータ79が作動することによって端末装置7に振動が発生する。これによって、端末装置7を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。
【0132】
UIコントローラ65は、上記の各構成要素から受け取ったタッチ位置データ、スティックデータ、操作ボタンデータ、方位データ、加速度データ、および角速度データを含む操作データをコーデックLSI66に出力する。なお、拡張コネクタ58を介して端末装置7に他の装置が接続される場合には、当該他の装置に対する操作を表すデータが上記操作データにさらに含まれていてもよい。
【0133】
コーデックLSI66は、ゲーム装置3へ送信するデータに対する圧縮処理、および、ゲーム装置3から送信されたデータに対する伸張処理を行う回路である。コーデックLSI66には、LCD51、カメラ56、サウンドIC68、無線モジュール70、フラッシュメモリ73、および赤外線通信モジュール72が接続される。また、コーデックLSI66はCPU77と内部メモリ78を含む。端末装置7はゲーム処理自体を行なわない構成であるが、端末装置7の管理や通信のための最小限のプログラムを実行する必要がある。電源投入時にフラッシュメモリ73に格納されたプログラムを内部メモリ78に読み出してCPU77が実行することで、端末装置7が起動する。また、内部メモリ78の一部の領域はLCD51のためのVRAMとして使用される。
【0134】
カメラ56は、ゲーム装置3からの指示に従って画像を撮像し、撮像した画像データをコーデックLSI66へ出力する。また、コーデックLSI66からカメラ56へは、画像の撮像指示等、カメラ56に対する制御指示が出力される。なお、カメラ56は動画の撮影も可能である。すなわち、カメラ56は、繰り返し撮像を行って画像データをコーデックLSI66へ繰り返し出力することも可能である。
【0135】
サウンドIC68は、スピーカ67およびマイク69に接続され、スピーカ67およびマイク69への音声データの入出力を制御する回路である。すなわち、コーデックLSI66から音声データを受け取った場合、サウンドIC68は当該音声データに対してD/A変換を行って得られる音声信号をスピーカ67へ出力し、スピーカ67から音を出力させる。また、マイク69は、端末装置7に伝わる音(ユーザの音声等)を検知して、当該音を示す音声信号をサウンドIC68へ出力する。サウンドIC68は、マイク69からの音声信号に対してA/D変換を行い、所定の形式の音声データをコーデックLSI66へ出力する。
【0136】
赤外線通信モジュール72は、赤外線信号を発光し、他の装置との間で赤外線通信を行う。ここでは、赤外線通信モジュール72は、例えばIrDAの規格に従った赤外線通信を行う機能と、モニタ2を制御するための赤外線信号を出力する機能とを備える。
【0137】
コーデックLSI66は、カメラ56からの画像データと、マイク69からの音声データと、UIコントローラ65からの端末操作データとを無線モジュール70を介してゲーム装置3へ送信する。本実施形態では、コーデックLSI66は、画像データおよび音声データに対して、コーデックLSI27と同様の圧縮処理を行う。上記端末操作データ、ならびに、圧縮された画像データおよび音声データは、送信データとして無線モジュール70に出力される。無線モジュール70にはアンテナ71が接続されており、無線モジュール70はアンテナ71を介してゲーム装置3へ上記送信データを送信する。無線モジュール70は、ゲーム装置3の端末通信モジュール28と同様の機能を有している。すなわち、無線モジュール70は、例えばIEEE802.11nの規格に準拠した方式により、無線LANに接続する機能を有する。送信されるデータは必要に応じて暗号化されていてもよいし、されていなくともよい。
【0138】
以上のように、端末装置7からゲーム装置3へ送信される送信データには、操作データ(端末操作データ)、画像データ、および音声データが含まれる。なお、拡張コネクタ58を介して端末装置7に他の装置が接続される場合には、当該他の装置から受け取ったデータが上記送信データにさらに含まれていてもよい。コーデックLSI66は、赤外線通信モジュール72による赤外線通信によって受信したデータを、必要に応じて上記送信データに含めてゲーム装置3へ送信してもよい。
【0139】
また、上述のように、ゲーム装置3から端末装置7へは、圧縮された画像データおよび音声データが送信される。これらのデータはアンテナ71および無線モジュール70を介してコーデックLSI66に受信される。コーデックLSI66は、受信した画像データおよび音声データを伸張する。伸張された画像データはLCD51へ出力され、画像がLCD51に表示される。また、伸張された音声データはサウンドIC68へ出力され、サウンドIC68はスピーカ67から音を出力させる。
【0140】
また、ゲーム装置3から受信されるデータに制御データが含まれる場合、コーデックLSI66およびUIコントローラ65は、制御データに従った制御指示を各部に行う。上述のように、制御データは、端末装置7が備える各構成要素(本実施形態では、カメラ56、タッチパネルコントローラ61、マーカ部55、各センサ62〜64、赤外線通信モジュール72、およびバイブレータ79)に対する制御指示を表すデータである。本実施形態では、制御データが表す制御指示としては、上記各構成要素を動作させたり、動作を休止(停止)させたりする指示が考えられる。すなわち、ゲームで使用しない構成要素については電力消費を抑えるために休止させてもよく、その場合、端末装置7からゲーム装置3へ送信される送信データには、休止した構成要素からのデータが含まれないようにする。なお、マーカ部55は赤外LEDであるので、制御は単に電力の供給のON/OFFでよい。
【0141】
また、ゲーム装置3は、上記赤外線通信モジュール72の出力を制御することによって、モニタ2の動作を制御することが可能である。すなわち、ゲーム装置3は、モニタ2を制御するための制御指令に対応する赤外線信号を赤外線通信モジュール72に出力させるための指示(上記制御データ)を端末装置7に出力する。この指示に応じて、コーデックLSI66は、上記制御指令に対応する赤外線信号を赤外線通信モジュール72に出力させる。ここで、モニタ2は赤外線信号を受光可能な赤外線受光部を備えている。赤外線通信モジュール72から出力された赤外線信号が赤外線受光部によって受光されることで、モニタ2は当該赤外線信号に応じた動作を行う。なお、ゲーム装置3からの上記指示は、赤外線信号のパターンを示すものであってもよいし、端末装置7が赤外線信号のパターンを記憶している場合には、当該パターンを示す指示であってもよい。
【0142】
以上のように、端末装置7は、タッチパネル52、アナログスティック53、および操作ボタン54といった操作手段を備えるが、他の実施形態においては、これらの操作手段に代えて、または、これらの操作手段とともに、他の操作手段を備える構成であってもよい。
【0143】
また、端末装置7は、端末装置7の動き(位置や姿勢、あるいは、位置や姿勢の変化を含む)を算出するためのセンサとして、磁気センサ62、加速度センサ63、およびジャイロセンサ64を備えるが、他の実施形態においては、これらのセンサのうち1つまたは2つのみを備える構成であってもよい。また、他の実施形態においては、これらのセンサに代えて、または、これらのセンサとともに、他のセンサを備える構成であってもよい。
【0144】
また、端末装置7は、カメラ56およびマイク69を備える構成であるが、他の実施形態においては、カメラ56およびマイク69を備えていなくてもよく、また、いずれか一方のみを備えていてもよい。
【0145】
また、端末装置7は、端末装置7とコントローラ5との位置関係(コントローラ5から見た端末装置7の位置および/または姿勢等)を算出するための構成としてマーカ部55を備える構成であるが、他の実施形態ではマーカ部55を備えていない構成としてもよい。また、他の実施形態では、端末装置7は、上記位置関係を算出するための構成として他の手段を備えていてもよい。例えば、他の実施形態においては、コントローラ5がマーカ部を備え、端末装置7が撮像素子を備える構成としてもよい。さらにこの場合、マーカ装置6は赤外LEDに代えて、撮像素子を備える構成としてもよい。
【0146】
[5.パノラマ動画の再生]
次に、ゲームシステム1において実行される動画再生の動作について説明する。ゲームシステム1は、内部メモリに記憶されたパノラマ動画を読みだして再生し、端末装置7に表示する。端末装置7には、動画の再生の進行にしたがって、所定時間ごとに、パノラマ動画の各フレームが順次表示されるが、各フレームのパノラマ画像の全体が端末装置7に表示されるのではなく、その一部が表示される。パノラマ画像のうち表示される領域(以下、単に「表示領域」と呼ぶこともある)は、そのときの端末装置7の姿勢に応じて変更される。以下、具体的に説明する。
【0147】
パノラマ動画の再生開始を指示すると、端末装置7にはパノラマ動画の先頭フレームのパノラマ画像のうちデフォルトの領域が表示される。このデフォルトの領域は、パノラマ画像のうちパノラマ撮影の基準方向(通常は、撮影機材の進行方向)に対応する領域とするのが好ましく、典型的には、パノラマ画像の中央の領域とするのが好ましい。その後、パノラマ動画の再生が継続するが、端末装置7の姿勢を変化せずに保持する限り、端末装置7には各フレームのパノラマ画像のうちのデフォルトの範囲が表示される。そして、パノラマ動画の再生継続中に端末装置7の姿勢を変更すると、表示領域が変更される。
【0148】
より具体的には、端末装置7を把持した使用者が、端末装置7の画面を自分の方に向けたまま、自分を中心にして端末装置7を上下左右に動かすことにより、表示領域が上下左右に変更される。ここで、使用者が端末装置7の画面を自分の方に向けたまま、端末装置7を自分を中心にして上方向に動かすと、端末装置7の画面は斜め下方向または下方向を向き、使用者は自分より上にある端末装置7の画面を下から見るような位置関係となる。このとき、表示領域は、デフォルト領域よりも、または、動かす前の表示領域よりも、上側の領域となる。また、使用者が端末装置7の画面を自分の方に向けたまま、端末装置7を自分を中心にして下方向に動かすと、端末装置7の画面は斜め上方向または上方向を向き、使用者は自分より下にある端末装置7の画面を上から見るような位置関係になる。このとき、表示領域は、デフォルト領域よりも、または、動かす前の表示領域よりも下側の領域となる。また、使用者が端末装置7の画面を自分の方に向けたまま、端末装置7を自分を中心にして右方向に動かすと、端末装置7の画面は動かす前よりも左方向を向き、表示領域は、デフォルト領域よりも、または、動かす前の表示領域よりも、右側の領域となる。また、使用者が端末装置7の画面を自分の方に向けたまま、端末装置7を自分を中心にして左方向に動かすと、端末装置7の画面は動かす前よりも右方向を向き、表示領域は、デフォルト領域よりも、または、動かす前の表示領域よりも左側の領域となる。このような動作が毎フレームおこなわれることにより、端末装置7に表示される領域は端末装置7の姿勢に応じて随時変更される。
【0149】
また、端末装置7を把持した使用者が、端末装置7の画面に垂直な軸まわりに端末装置7を回転させると、表示領域は回転される。
【0150】
なお、本実施例では端末装置7の3軸まわりの姿勢に応じて、表示領域を上下左右に移動かつ回転するが、端末装置7の1軸まわりの姿勢に応じて、表示領域を左右方向のみ移動、または、上下方向のみ移動させてもよい。また、端末装置7の2軸まわりの姿勢に応じて、表示領域を上下左右に移動、または、表示領域を上下方向に移動かつ回転、表示領域を左右方向に移動かつ回転させてもよい。
【0151】
なお、端末装置7の基準姿勢からの変位だけ、表示領域をデフォルトの領域から変位させてもよい。そうすることによって、端末装置7の姿勢が基準姿勢から変化したときには表示領域はデフォルトの領域から変位するが、その後再び基準姿勢に戻ったときに、表示領域はデフォルトの領域に戻ることになる。
【0152】
また、使用者が端末装置7を自分を中心にして左右方向に1周(360度回転)したときには、表示領域は同じ領域に戻るようにするのが好ましい。
【0153】
[6.第1の実施形態の説明]
本発明に係る第1の実施形態として、上述したような動作は、各フレームのパノラマ画像を仮想空間中の球体モデル(完全球体モデル、非完全体モデル)または円柱モデルの内面にテクスチャとして貼りつけて、当該モデルの内側から仮想カメラで撮影し、当該仮想カメラの撮影方向を端末装置7の姿勢に応じて変更することにより実現される。
【0154】
図11は、完全球パノラマ画像を使用する場合の実施例を示す図である。完全球パノラマ画像を使用する場合、完全球モデル100が仮想空間に配置される。そして、当該完全球モデル100の内面の全域に完全球パノラマ画像がテクスチャとして貼りつけられる。
【0155】
本実施例においては、パノラマ画像は、正距円筒図法(equirectangular)によるフォーマットを使用する。このフォーマットによるパノラマ画像を球体モデルの内面に貼りつけるマッピング手法は周知であるのでここでは省略する。
【0156】
当該モデルの中心に仮想カメラ101が配置され、この仮想カメラ101により球体モデル100の内面の一部領域が撮影されることにより、パノラマ画像の一部領域がレンダリングされる。この仮想カメラ101は後述するように、端末装置7の姿勢に応じて撮影方向が変更される。なお、仮想カメラ101の位置は固定である。
【0157】
なお、完全球パノラマ画像の場合、カメラの足やカメラマンの身体の一部などがパノラマ画像に写ってしまうことがある。その場合には、以下のいずれか方法を採用することができる。
・パノラマ画像のうちのカメラの足などを画像処理により消去する。
・パノラマ画像のうちの最下部(または最上部)から一定範囲(典型的には矩形領域)を他の画像(例えば、黒画像)に置き換える
【0158】
図12から図15は、非完全球パノラマ画像を使用する場合の実施例を示す図である。非完全球パノラマ画像は、撮影時にカメラの足などが写らないように撮影されたパノラマ画像や、撮影時は完全球パノラマ画像として撮影されたが、撮影された完全球パノラマ画像の最下部(または最上部)から一定範囲(典型的には矩形領域)を切り取ることにより生成されたものなどがある。
【0159】
非完全球パノラマ画像は、典型的には、下方に死角のあるもの(下方向の一定の範囲の画角の撮影情報を欠くもの)と上方に死角のあるもの(上方向の一定の範囲の画角の撮影情報を欠くもの)とがある。
【0160】
図12および図13は、下方に死角のある非完全球パノラマ画像を使用する場合の実施例である。図12に示す方法、または、図13に示す方法が選択的に使用される。
【0161】
図12の実施例と図13の実施例とでは、いずれも、完全球モデル100が仮想空間に配置される。そして、パノラマ画像は、完全球モデル100のうちの下部領域を除く部分100aの内面(上部球面部分の内面)に貼りつけられる。より具体的には、完全球モデル100が仮想空間の原点に配置され、上下方向がY軸の正負方向であるとして、完全球モデルのうちY>Y1(負の値)の部分の内面に貼りつけられる。なお、Y1の値は死角の大きさに応じて決定する。より具体的には、死角が大きいときにはY1の値は大きい値(0に近い値)とし、死角が小さいときにはY1の値は小さい値(0から遠い値)とする。
【0162】
ここで、仮想カメラ101の視野範囲にY<Y1の部分が入る場合、テクスチャが何も貼られていないモデルが撮影されてしまう。そこで、図12の実施例では、完全球モデル100のうちの下部領域100bの内面(左上がり斜線部分の球面部分の内面)に所定のテクスチャを貼りつける。より具体的には、完全球モデルのうちY<Y1(負の値)の部分の内面に貼りつけられる。「所定のテクスチャ」は単色画像(例えば、黒画像)であってもよいし、地面や床や地表などを表現した写真やCG画像であってもよい。また、動画であってもよいし、所定条件により(一定時間ごと、シーンの切替時など)、他の画像に切り替えてもよい。
【0163】
一方、図13の実施例では、球体モデル100のうちパノラマ画像が貼りつけられる部分の開口部に、当該開口部をふさぐような平面モデルを配置して、当該平面モデルに上記「所定のテクスチャ」を貼りつける。より具体的には当該平面モデルの「球体モデルの中心側の面」に貼りつける。図13の例では、Y=Y1の位置にZX面に平行に円板モデル102(図13の左上がり斜線部分)が配置される。なお、この円板モデルの半径は、球体モデルの表面に接するように設定される。
【0164】
このように、死角部分に「所定のテクスチャ」を貼りつけることによって、仮想カメラが360度いずれの方向を向いた場合でも正しくレンダリング画像を生成することができる。また、図13の実施例では「所定のテクスチャ」を平面モデルに貼りつけるので、「所定のテクスチャ」を通常の平面画像として用意すればよい。
【0165】
そして、図12の実施例と図13の実施例とでは、いずれも、図11と同様、球体モデルの中心に仮想カメラ101が配置され、この仮想カメラ101により球体モデル100の内面の一部領域が撮影されることにより、パノラマ画像の一部領域がレンダリングされる。この仮想カメラ101は後述するように、端末装置7の姿勢に応じて撮影方向が変更される。なお、仮想カメラ101の位置は固定である。
【0166】
図14および図15は、上方に死角のある非完全球パノラマ画像を使用する場合の実施例である。図14または図15に示す方法が選択的に使用される。
【0167】
図14の実施例と図15の実施例とでは、いずれも、完全球モデル100が仮想空間に配置される。そして、パノラマ画像は、完全球モデル100のうちの上部領域を除く部分100cの内面(下部球面部分の内面)に貼りつけられる。より具体的には、完全球モデル100が仮想空間の原点に配置され、上下方向がY軸の正負方向であるとして、完全球モデルのうちY<Y2(正の値)の部分の内面に貼りつけられる。なお、Y2の値は死角の大きさに応じて決定する。より具体的には、死角が大きいときにはY2の値は小さい値とし、死角が小さいときにはY2の値は大きいとする。
【0168】
ここで、仮想カメラ101の視野範囲にY>Y2の部分が入る場合、テクスチャが何も貼られていないモデルが撮影されてしまう。そこで、図14の実施例では、完全球モデル100のうちの上部領域100dの内面(左上がり斜線部分の球面部分の内面)に所定のテクスチャを貼りつける。より具体的には、完全球モデルのうちY<Y2(正の値)の部分の内面に貼りつけられる。「所定のテクスチャ」は単色画像(例えば、黒画像)であってもよいし、空や宇宙や天井などを表現した写真やCG画像であってもよい。また、動画であってもよいし、所定条件により(一定時間ごと、シーンの切替時など)、他の画像に切り替えてもよい。
【0169】
一方、図15の実施例では、球体モデル100のうちパノラマ画像が貼りつけられる部分の開口部に、当該開口部をふさぐような平面モデルを配置して、当該平面モデルに上記「所定のテクスチャ」を貼りつける。より具体的には当該平面モデルの「球体モデルの中心側の面」に貼りつける。図15の例では、Y=Y2の位置にZX面に平行に円板モデル103(図15の左上がり斜線部分)が配置される。なお、この円板モデルの半径は、球体モデルの表面に接するように設定される。
【0170】
そして、図14の実施例と図15の実施例とでは、いずれも、球体モデルの中心に仮想カメラ101が配置され、この仮想カメラ101により球体モデル100の内面の一部領域が撮影されることにより、パノラマ画像の一部領域がレンダリングされる。この仮想カメラ101は後述するように、端末装置7の姿勢に応じて撮影方向が変更される。なお、仮想カメラ101の位置は固定である。
【0171】
図16は、「全周パノラマ画像であって、左右方向に360度の画角を有し、上下方向の画角は所定角度(180度より小さい)」のパノラマ画像(以下、「左右のみ全周パノラマ画像」と呼ぶ)を使用する場合の実施例である。
【0172】
左右のみ全周パノラマ画像を使用する場合、円柱モデル104が仮想空間に配置される。そして、パノラマ画像は、この円柱モデル104のうちの側面の内面の全域に貼りつけられる。
【0173】
ここで、図16に示すように、仮想カメラ101の上下方向の視野角は、パノラマ画像の画角と同じに設定される。それゆえ、端末装置7には、パノラマ画像の上から下まで全体が表示される(ただし、言うまでもないが、左右方向についてはその一部が表示される)。
【0174】
そして、円柱モデル104の中心に仮想カメラ101が配置され、この仮想カメラ101により円柱モデル104の内面の一部領域が撮影されることにより、パノラマ画像の一部領域がレンダリングされる。この仮想カメラ101は後述するように、端末装置7の左右方向の姿勢に応じて撮影方向が変更される。しかしながら、端末装置7の上下方向の姿勢に応じた撮影方向の変更は行われない。なお、仮想カメラ101の位置は固定である。
【0175】
なお、円柱モデルを使用する場合でも、仮想カメラ101の上下方向の視野角をパノラマ画像の画角より小さく設定して、その一部を表示するようにしてもよい。そして、端末装置7の上下方向の姿勢に応じた撮影方向の変更をおこなうようにしてもよい。また、その場合、円柱モデルの上面および/または底面の内面に「所定のテクスチャ」を貼り付けるようにしてもよい。
【0176】
図17は、「全周パノラマ画像であって、左右方向に360度より小さい画角(好ましくは180度以上)を有し、上下方向の画角は所定角度(180度より小さい)」のパノラマ画像(以下、「左右のみパノラマ画像」と呼ぶ)を使用する場合の実施例である。
【0177】
左右のみパノラマ画像を使用する場合、図16で示したような円柱モデル104が仮想空間に配置される。そして、パノラマ画像は、この円柱モデル104のうちの側面の内面のうち図17で示す範囲104aに貼りつけられる。なお、範囲104aはパノラマ画像の左右方向の画角に応じて決定される。より具体的には、画角が大きいほど範囲104aは大きくなる。典型的には、画角と範囲104aのY軸から見た角度は一致する。
【0178】
なお、円柱モデル104の側面の内面のうち範囲104a以外の部分については、上記「所定のテクスチャ」が貼りつけられる。
【0179】
仮想カメラの上下方向の視野角、配置位置、および、撮影方向の制御については、図16の実施例と同様である。
【0180】
なお、図11〜図17のいずれの実施例においても、仮想カメラの左右方向についての視野角は、パノラマ画像の左右方向の画角よりも小さく設定され、典型的には、25度〜90度(より好ましくは30度〜60度)に設定される。また、図11〜図15の実施例においては、仮想カメラの上下方向についての視野角は、パノラマ画像の上下方向の画角よりも小さく設定され、典型的には、20度〜60度(より好ましくは20度〜40度)に設定される。
【0181】
また、図11〜図17のいずれの実施例においても、仮想カメラ101の初期姿勢は、仮想空間のX軸、Y軸、Z軸に一致するように配置される。より具体的には、仮想カメラ101の撮影方向(z軸)がZ軸に一致し、左右方向(x軸)がX軸に一致し、上下方向(y軸)がY軸に一致するように配置される(当該初期姿勢となった仮想カメラ101のx軸、y軸、z軸を、それぞれx0軸、y0軸、z0軸とする)。
【0182】
図18A〜図18Cは、端末装置7の姿勢に応じた仮想カメラ101の撮影方向の制御を示す図である。図18Aを参照して、まず、端末装置7の基準姿勢(xn,yn,zn)が設定される。より具体的には、動画再生の開始時または開始前の所定タイミングにおける端末装置7の姿勢が基準姿勢に設定される。より具体的には、動画再生の開始時の端末装置7の姿勢を基準姿勢として設定してもよいし、動画再生の開始前にユーザが所定の操作をしたときの端末装置7の姿勢を基準姿勢として設定してもよいし、予め定める固定的な姿勢を基準姿勢として設定してもよいし、予め定める固定的な複数の姿勢のうちユーザが選択してもよい。
【0183】
なお、本実施例では、端末装置7の姿勢はジャイロセンサ64の出力値に基づいて算出されるので、基準姿勢の設定は、ジャイロセンサ64により算出される姿勢値のリセットである。しかしながら、基準姿勢の設定は、センサの種類によって適宜の処理を実行してよい。
【0184】
基準姿勢が設定された後、図18Bに示すように、ジャイロセンサ64の出力値に基づいて端末装置7の姿勢(xp,yp,zp)が逐次算出される。なお、ジャイロセンサ64の代わりに、加速度センサ63の値を用いて姿勢を算出することもできるし、ジャイロセンサ64と加速度センサ63との両方の値を用いて姿勢を算出することもできる。
【0185】
そして、図18Cに示すように、端末装置7の姿勢(xp,yp,zp)の基準姿勢(xn,yn,zn)に対する姿勢変化(xn軸まわりの回転、yn軸まわりの回転、zn軸まわりの回転)の方向に応じて、仮想カメラ101の姿勢を、初期姿勢(基準姿勢;前述の通り、仮想カメラ101のx軸、y軸、z軸が仮想空間のX軸、Y軸、Z軸と一致するx0軸、y0軸、z0軸)から当該姿勢変化と同じ方向に変化させる(X軸まわりの回転、Y軸まわりの回転、Z軸まわりの回転)。なお、端末装置7の姿勢(xp,yp,zp)の基準姿勢(xn,yn,zn)に対する姿勢変化量(xn軸まわりの回転量、yn軸まわりの回転量、zn軸まわりの回転量)に応じて、仮想カメラ101の姿勢を、初期姿勢(基準姿勢;前述の通り、仮想カメラ101のx軸、y軸、z軸が仮想空間のX軸、Y軸、Z軸と一致するx0軸、y0軸、z0軸)から当該姿勢変化量と同じ量だけ変化させるようにするのが好ましい。
【0186】
図19は、本実施例におけるパノラマ画像データファイルのファイルフォーマットを示す図である。本実施例のファイルは、1つのファイル内に、以下を含む。
(1)パノラマタイプ情報T
(2)フレームごとの情報として、フレーム番号N、パノラマ画像データIp、補完画像データIc、位置情報P、向き情報Di、マップ画像データM
【0187】
パノラマタイプ情報Tは、パノラマ画像の種類を表す情報であり、具体的には、完全球、非完全球(下方死角有)、非完全球(上方死角有)、左右のみ全周、左右のみパノラマなどを識別する情報であり、たとえば、各タイプに割り当てられる識別番号であってもよい。
【0188】
フレームごとの情報は、フレーム番号(1,2,3・・・)ごとに各種データが記録される。パノラマ画像データIpは、説明が不要であるので省略する。補完画像データIcは、前述した「所定のテクスチャ」として使用されるデータであり、パノラマ画像の死角部分を補完するためのデータである。また、位置情報Pは、当該フレームにおけるパノラマ画像の撮影場所を示す情報であり、マップ画像M上の座標を示すデータであってもよいし、GPSのような絶対的な地点情報であってもよい。また、向き情報Diは、当該フレームにおけるパノラマ画像の撮影方向を示す情報であり、マップ画像M上の向きを示すデータであってもよいし、GPSのような絶対的な方位情報であってもよい。また、マップ画像Mは、パノラマ撮影が行われた地域を表す画像データであり、写真であってもよいし、CGであってもよい。典型的には、当該地域を俯瞰的に表現した画像が用いられる。マップ画像Mは、後述するようにモニタ2に表示されるデータである。なお、マップ画像Mは、そのフレームにおけるパノラマ撮影の基準方向が上方向となるような画像とするのが好ましい。
【0189】
なお、補完画像は、フレームごとのデータがなくてもよい。例えば、1つの動画ファイルに対して、1つの補完画像を記録してもよいし、複数のフレームに対して1つの補完画像を記録してもよい。マップ画像についても同様である。また、位置情報および向き情報は、複数のフレームに対して1つの情報を記録してもよい。
【0190】
図20ないし図22は、ゲーム装置3の処理動作を示すフローチャートである。このフローチャートで示される各ステップの処理は、ゲーム装置3内の不揮発メモリ、または、光ディスク4に記憶されるプログラム(ブラウザプログラム)をCPU10が実行することにより実現される。
【0191】
まず、図20を参照して、ステップS11において、ゲーム装置3は、パノラマ画像ファイルを取得する。具体的には、ゲーム装置3内の不揮発メモリから、または、ゲーム装置3に装着された記憶媒体から、または、ネットワークを介して所定のサーバーから、ファイルを取得する。
【0192】
ステップS11の後、ステップS12において、ステップS11で取得したファイル内のパノラマタイプ情報に基づいて、パノラマタイプに対応するモデルを仮想空間にその中心が原点に位置するように配置する。具体的には、全球パノラマ(完全球、非完全球)の場合には、球体モデルを配置する。左右のみ全周、左右のみパノラマ等の場合には、円柱モデルを配置する。また、前述した図13および図15の実施例の場合には、円板モデルも配置する。
【0193】
ステップS12の後、ステップS13において、第1仮想カメラをモデルと同じ仮想空間に配置する。本実施例では、第1仮想カメラの位置は仮想空間の原点とし、第1仮想カメラの姿勢は、カメラのxyz軸が仮想空間のXYZ軸に一致するように配置する。なお、本実施例では、第1仮想カメラの姿勢を、XZ平面に平行になるようにしたが、XZ平面と所定角度を有するようにしてもよい。なお、このときの、仮想空間における仮想カメラの姿勢を「カメラ基準姿勢」と呼ぶ。第1仮想カメラは端末装置7に出力される画像を生成するためのカメラであり、図11〜図17における仮想カメラ101は第1仮想カメラである。
【0194】
ステップS13の後、ステップS14において、第2仮想カメラを同じ仮想空間に配置する。より具体的には、第2仮想カメラの位置および姿勢は第1仮想カメラと同じに設定される。
【0195】
ステップS14の後、ステップS15において、端末装置7の基準姿勢を設定する。より具体的には、端末装置7またはモニタ2に、基準姿勢を設定する旨の表示をおこない、かつ、所定ボタンを押すことを促す表示をおこなうとともに、当該所定ボタンの入力待ちをおこなう。そして、当該所定ボタンが操作されたときの端末装置7の姿勢を基準姿勢として設定する。このときの端末装置7の姿勢を「ディスプレイ基準姿勢」と呼ぶ。
【0196】
ステップS15の後、図21のステップS16において、nを1に設定する。nはフレーム番号である。ステップS16の後、パノラマ動画の再生が終了するまで、ステップS17からステップS30の処理が所定周期毎に繰り返される。
【0197】
ステップS17において、パノラマ画像ファイル内の情報のうちフレームnの情報(パノラマ画像Ip、補完画像Ic、位置情報P、向き情報Di、マップ情報M)を取得する。
【0198】
ステップS17の後、ステップS18において、ステップS17で取得したパノラマ画像Ipを、ステップS12で配置したモデルにテクスチャとして貼りつける。なお、図11〜図17を用いて前述したとおり、ステップS11で取得したパノラマタイプ情報に基づいて、貼りつける場所を決定する。
【0199】
より具体的には、ステップS18においては、パノラマ画像の上下方向を第1仮想カメラの基準姿勢の上下方向(本実施例では、y0軸正負方向であり仮想空間のY軸の正負方向)に一致させ、かつ、パノラマ画像の左右方向を第1仮想カメラの基準姿勢の左右方向(本実施例では、x0軸正負方向であり仮想空間のX軸の正負方向)に一致させ、かつ、パノラマ画像の中心を第1仮想カメラの基準姿勢における撮影方向に一致するように貼り付ける。本実施例では、第1仮想カメラの基準姿勢となるx0軸、y0軸、z0軸は仮想空間のX軸、Y軸、Z軸に平行であるので、パノラマ画像の中心が、ステップS12で配置されるモデルのZ軸との交点のうち(Z>0)の点と一致するように貼り付ける。なお、パノラマ画像の中心は、第1仮想カメラの基準姿勢における撮影方向(仮想カメラのZ軸方向(奥行方向))とステップS12で配置されるモデルの交点と一致するように貼り付けるのが好ましい。
【0200】
前述した図12〜図15、および図17の実施例の場合には、ステップS18の後、ステップS19において、ステップS17で取得した補完画像Icを、図12〜図15および図17を用いて前述したモデルに貼りつける。なお、図11、図16の実施例の場合には、ステップS19の処理はおこなわれない。なお、補完画像の貼り付け方法(方向および中心位置)はステップS18におけるパノラマ画像の貼り付け方法と同一である。
【0201】
ステップS19の後(図11、図16の実施例の場合には、ステップS18の後)、ステップS20において端末装置7のジャイロセンサ64の出力値を取得する。なお、端末装置7からはジャイロセンサの出力値が一定周期でゲーム装置3に送信されて記憶される。
【0202】
ステップS20の後、ステップS21において、ステップS20において取得したデータを利用して、端末装置7の「ディスプレイ基準姿勢」からの回転方向および回転量(ステップS15で初期化してからの回転方向および回転量)を算出する。例えば、上記ステップS21では、ディスプレイ基準姿勢におけるx軸(図18Aのxn)まわりの回転方向および回転量と、y軸(図18Aのyn)まわりの回転方向および回転量と、z軸(図18Aのzn)まわりの回転方向および回転量とがそれぞれ算出される。なお、回転方向は、回転量の正負により表すことができるので、データとしては回転量データのみでもよい。
【0203】
より具体的には、上記ステップS21では、前回処理におけるステップS21において算出された回転量に、今回ステップS20で取得した角速度に基づく回転量を加えて、新たな回転量として算出する。
【0204】
ステップS21の後、ステップS22において、第1仮想カメラの仮想空間における姿勢を「カメラ基準姿勢」から、ステップS21で算出された回転量だけ回転する。より具体的には、第1仮想カメラの姿勢を、「カメラ基準姿勢」から、ステップS21で算出された端末装置7のxn軸まわりの回転量と同じだけ仮想空間のX軸(図18Cのx0)まわりに回転させ、かつ、端末装置7のyn軸まわりの回転量と同じだけ仮想空間のY軸(図18Cのy0)まわりに回転させ、かつ、端末装置7のzn軸まわりの回転量と同じだけ仮想空間のZ軸(図18Cのz0)まわりに回転させる。なお、第2仮想カメラの姿勢は変化させない。
【0205】
ステップS22の後、ステップS23において、第1仮想カメラで仮想空間を撮影して画像生成し、端末装置7に無線出力する。
【0206】
ステップS23の後、図22のステップS24において、マップモードか否かが判断される。マップモードとは、モニタ2にマップ画像Mを表示するモードであり、マップモードでない場合には、モニタ2にはパノラマ画像が表示される。なお、モニタ2に表示されるパノラマ画像は、第2仮想カメラで撮影された画像である。マップモードか非マップモードかは、ユーザが端末装置7の所定の操作部を操作することにより切り替えるようにしてもよい。
【0207】
ステップS24においてマップモードであると判定されたときには、ステップS25において、ステップS17で取得した向き情報と第1仮想カメラの撮影方向(仮想空間のXZ平面に第1仮想カメラのz軸方向(奥行方向)を投影した方向)に基づいて、パノラマ画像のうち、現在、端末装置7に表示されている方向を算出する。具体的には、向き情報をマップ画像上における向きの情報とし、その向きを現在の第1仮想カメラの撮影方向の基準姿勢における撮影方向からの変化量だけ変化させた向きが、端末装置7に表示されている方向をマップ画像上で示す向きとなる。
【0208】
ステップS25の後、ステップS26において、ステップS17で取得した位置情報、および、ステップS25で算出した向き情報に基づいて、ステップS17で取得したマップ画像上に、当該位置および当該向きを示すアイコンを合成する。
【0209】
ステップS24においてマップモードでないと判定されたときには、ステップS27において、第2仮想カメラで仮想空間を撮影して画像を生成する。
【0210】
ステップS26またはステップS27の後、ステップS26またはステップS27の画像をモニタ2に出力する。
【0211】
ステップS28の後、ステップS29において、nをインクリメントし、ステップS30において最後のフレームを再生終了したか否かを判断し、最後のフレームを再生終了したときには処理を終了し、そうでなければ、ステップS17に戻って、動画再生を繰り返す。
【0212】
[7.第2の実施形態の説明]
本発明に係る第2の実施形態では、第1の実機形態と同様に、表示装置(例えば、モニタ2および端末装置7)には、パノラマ動画の再生の進行にしたがって、記憶されているパノラマ動画の各フレームとなるパノラマ画像が所定時間毎に読み出されて順次表示される。そして、当該実施形態では、各フレームのパノラマ画像を仮想空間中の6面体モデルの内面にテクスチャとして貼りつけて、当該モデルの内側に配置された少なくとも1つの仮想カメラから当該内面を見ることによって、端末装置7に表示されるパノラマ画像が生成され、当該仮想カメラの方向を端末装置7の姿勢に応じて変更する。また、当該実施形態では、モニタ2に表示するためのパノラマ画像と端末装置7に表示されるパノラマ画像とは、記憶されているパノラマ動画からモニタ2および端末装置7に表示制御するタイミングで読み出した同じパノラマ画像を用いてそれぞれ生成され、結果的にパノラマ動画における時間軸が実質的に同じとなる画像がモニタ2および端末装置7にそれぞれ表示されることになる。そして、一例として、モニタ2に表示するためのパノラマ画像は、端末装置7に表示されるパノラマ画像より表示範囲が広い画像であり、例えば当該パノラマ画像における後述する全方位画像がモニタ2に表示される。他の例として、モニタ2に表示するためのパノラマ画像は、上記モデルの内側に固定された別の仮想カメラから当該モデルの内面を見た画像であり、例えば当該パノラマ画像における所定方向の画像がモニタ2に表示される。
【0213】
図23は、フレーム毎のパノラマ画像を構成するパノラマ動画を撮像し、当該パノラマ動画をエンコードして記録するまでの処理の流れの一例を示す図である。
【0214】
一例として、現実世界のパノラマ動画を撮像する場合、撮影方向が互いに固定された複数の現実世界撮像カメラが用いられる。例えば、現実世界撮像カメラは、5角柱形状の支持部材の側面および上面からそれぞれ放射する方向を撮像方向としてそれぞれ1台ずつ、計6台固設されて設けられる。そして、上記側面の1つを前方として移動しながら、現実世界を6台の現実世界撮像カメラで撮像する。なお、上記前方となる側面(すなわち、移動しながら撮像する場合に進行方向に向かって設けられる側面)に設けられた撮像カメラを「正面前方カメラ」とし、当該移動の際に左前方を撮像方向として設けられる撮像カメラを「左前方カメラ」、当該移動の際に右前方を撮像方向として設けられる撮像カメラを「右前方カメラ」、当該移動の際に左後方を撮像方向として設けられる撮像カメラを「左後方カメラ」、当該移動の際に右後方を撮像方向として設けられる撮像カメラを「右後方カメラ」、当該移動の際に上方を撮像方向として設けられる撮像カメラを「上方カメラ」とする。そして、上記移動に応じて、時間軸が同じ画像がそれぞれの撮像カメラから得られ、「正面前方カメラ」から得られる画像を「正面前方カメラ画像」、「左前方カメラ」から得られる画像を「左前方カメラ画像」、「右前方カメラ」から得られる画像を「右前方カメラ画像」、「左後方カメラ」から得られる画像を「左後方カメラ画像」、「右後方カメラ」から得られる画像を「右後方カメラ画像」、「上方カメラ」から得られる画像を「上方カメラ画像」とする。
【0215】
なお、上述した現実世界撮像カメラの構成は一例であり、他の構成によって実現されてもよいことは言うまでもない。また、現実世界を移動することなく現実世界撮像カメラで撮像(すなわち、定点撮像)することによって、現実世界のパノラマ動画を撮像してもかまわない。
【0216】
それぞれの撮像カメラから得られた画像は、同じ時間軸の画像毎にパノラマ展開されて1つの全方位画像(パノラマ画像)に合成される。図23で用いた全方位画像は、正面前方カメラ画像を中心として、左へ順に左前方カメラ画像および左後方カメラ画像を合成し、右へ順に右前方カメラ画像および右後方カメラ画像を合成して、さらに当該合成された5つのカメラ画像の上方領域に上方カメラ画像を合成し、それぞれのカメラ画像では死角となる方位(典型的には、下方であり図23において斜線で示される領域)の画像については所定の画像(例えば、黒画像)を合成することによって生成されている。なお、複数の撮像カメラから得られた画像を合成して構成される全方位画像(パノラマ画像)については図23で示した構成でなくてもよく、他の構成によって全方位画像を生成してもよい。なお、複数の撮像カメラから得られた画像からパノラマ画像を生成する手法については、既に周知であるためここでは詳細な説明を省略する。
【0217】
次に、時間毎に生成された全方位画像を6面体画像に変換され、所定の方式(例えば、H.264として標準化された動画データの圧縮符号化方式)で時間毎に変換された全ての6面体画像がエンコードされて光ディスク等の記憶媒体に記憶される。ここで、6面体画像とは、全方位画像(パノラマ画像)を正6面体モデルの内面に貼り付けてマッピングした際に、当該モデルの6面にそれぞれ生成される画像を示している。例えば、上記全方位画像を6面体画像に変換することによって、6つの画像(正面画像、左側面画像、右側面画像、背面画像、上面画像、および底面画像)に変換される。ここで、正面前方カメラ画像に対応する全方位画像における領域の少なくとも一部が、上記6つの画像のうちの正面画像に含められるように(例えば、当該領域の中心が正面画像の中心付近となるように)変換する。なお、6面体画像を生成するためのマッピング手法についても既に周知であるためここでは詳細な説明を省略する。
【0218】
なお、パノラマ動画をエンコードして記憶媒体に記憶する際、当該パノラマ動画を構成する複数のパノラマ画像がそれぞれエンコードされることになるが、H.264以外の圧縮符号化方式を用いてもよく、当該パノラマ画像がそれぞれエンコードされる方式はどのようなものでもよい。例えば、フレーム毎のパノラマ画像をフレーム間の依存関係がない状態でパノラマ画像毎に圧縮する方式(例えば、モーションJPEG)でもよいし、前フレームとのパノラマ画像との差分を圧縮する方式(例えば、MPEG)でもよい。また、フレーム予測符号化方式を用いてパノラマ動画をエンコードする場合、フレーム間予測だけでなくフレーム内予測を用いる符号化方式を用いてもよい。
【0219】
また、パノラマ動画をエンコードして記憶媒体に記憶する際、当該パノラマ動画を再生する際に出力される音声を示す音声データを加えてもよい。例えば、現実世界のパノラマ動画を撮像する際に、撮像位置において録音された音や予め録音されたBGMや効果音を、パノラマ動画の再生と同期させて出力する場合、当該音、BGM、効果音等を示す音声データを当該パノラマ動画とともに記憶媒体に記憶してもよい。この場合、エンコードされたパノラマ動画データをデコードして再生する際に、当該パノラマ動画の再生と同期した音声を出力することが可能となる。
【0220】
図24は、エンコードされたパノラマ動画データをデコードして表示するまでの処理の流れの一例を示す図である。なお、図24に示した例では、端末装置7に仮想カメラから見た画像を表示し、モニタ2に全方位画像を表示する一例を用いている。
【0221】
所定の記憶媒体にエンコードされて記憶されたパノラマ動画は、上記方式によって、表示する時間(フレーム)毎の6面体画像にデコードされる。そして、6面体モデルの内面にテクスチャとしてそれぞれ対応する面に各フレームの6面体画像を貼り付け、当該6面体モデルの内側に配置された仮想カメラから見た6面体画像の一部領域をレンダリングしてフレーム毎に端末装置7に表示する。
【0222】
一例として、上記6面体モデルは、仮想空間の原点に配置される。そして、上下方向が仮想空間のY軸の正負方向であるとして、Y軸に対して垂直に6面体モデルの上面(Y軸正方向側)および底面(Y軸負方向側)がそれぞれ配置される。また、左右方向が仮想空間のX軸の正負方向であるとして、X軸に対して垂直に6面体モデルの左側面(X軸正方向側)および右側面(X軸負方向側)がそれぞれ配置される。さらに、前後方向が仮想空間のZ軸の正負方向であるとして、Z軸に対して垂直に6面体モデルの正面(Z軸正方向側)および背面(Z軸負方向側)がそれぞれ配置される。そして、6面体モデルの正面、左側面、右側面、背面、上面、および底面のそれぞれの内面に、6面体画像の正面画像、左側面画像、右側面画像、背面画像、上面画像、および底面画像がテクスチャとしてそれぞれ貼り付けられる。
【0223】
そして、6面体モデルの中心(仮想空間の原点)に仮想カメラが配置され、当該仮想カメラから見た6面体モデルの内面の一部領域がパノラマ動画の一部領域としてレンダリングされる。上記仮想カメラは、後述するように端末装置7の姿勢に応じて視線方向が変更される。なお、第1の実施形態と同様に、上記仮想カメラの初期姿勢は、当該仮想カメラの左右方向、上下方向、および前後方向が、それぞれ仮想空間のX軸、Y軸、Z軸に一致するように配置される。より具体的には、上記仮想カメラの視線方向(z軸正方向)がZ軸正方向に一致し、上記仮想カメラの左方向(z軸正方向)がX軸正方向に一致し、上記仮想カメラの上方向(y軸正方向)がY軸正方向に一致するように配置される。これによって、仮想カメラの初期姿勢によって端末装置7に表示されるパノラマ画像は、6面体画像のうち正面画像の中央を少なくとも含む表示範囲となる。なお、端末装置7の姿勢によって仮想カメラの姿勢を制御する一例や初期姿勢および基準姿勢の設定については第1の実施形態と同様であるため、詳細な説明を省略する。
【0224】
また、上記デコードされた6面体画像は、1つの画像に合成されることによって上述した全方位画像にも変換され、フレーム毎にモニタ2に表示される。これによって、モニタ2には、端末装置7に表示されるパノラマ動画と実質的に時間軸が同じパノラマ動画が表示されることになり、当該パノラマ動画に対するモニタ2の表示範囲が端末装置7に表示される範囲より相対的に広いものとなる。
【0225】
なお、端末装置7に表示されているパノラマ画像(6面体画像)の範囲を示す画像を、モニタ2に表示する全方位画像に重畳表示してもよい。このように、モニタ2に端末装置7に表示されている画像範囲を表示することによって、モニタ2を見ているユーザが端末装置7を操作するユーザが見ている画像を知ることができたり、端末装置7を操作するユーザがモニタ2を見ることによってパノラマ画像全体と端末装置7に表示されているパノラマ画像の一部との位置関係を把握したりすることができる。
【0226】
なお、第2の実施形態では、デコードされた1つのパノラマ動画の少なくとも一部が複数の表示装置にそれぞれ表示され、当該複数の表示装置にはそれぞれ実質的に同じ時間軸のパノラマ動画が表示される。また、複数の表示装置は、それぞれの表示画面の方向がキャリブレーションされた後にパノラマ動画が表示されるため、それぞれの表示画面に表示されるパノラマ動画の範囲を、それぞれの表示装置の実空間における位置関係に基づいたものにすることが可能となる。例えば、モニタ2が配置されている方向をパノラマ動画の基準方向(正面方向)に設定した場合、モニタ2の表示画面の向きと端末装置7の表示画面の向きとが同じ場合には、端末装置7の表示画面に正面方向のパノラマ動画が表示される。そして、端末装置7の姿勢変化と同じように仮想カメラの姿勢が変化するため、モニタ2の方向を常に基準方向(正面方向)としてパノラマ動画で生成される仮想空間を、端末装置7の姿勢によって自由な方向を見ているような操作感覚をユーザに与えることができる。
【0227】
次に、ゲーム装置3において行われる処理の詳細を説明する。まず、図25を参照して、処理において用いられる主なデータについて説明する。なお、図25は、ゲーム装置3の内部メインメモリ11cおよび/または外部メインメモリ12(以下、2つのメインメモリを総称して、単にメインメモリと記載する)に記憶される主なデータおよびプログラムの一例を示す図である。
【0228】
図25に示すように、メインメモリのデータ記憶領域には、パノラマ画像ファイルデータDa、端末操作データDb、姿勢データDc、仮想カメラデータDd、仮想空間画像データDe、および全方位画像データDf等が記憶される。なお、メインメモリには、図25に示すデータの他、実行するアプリケーションで用いるデータ等、処理に必要なデータ等が記憶されてもよい。また、メインメモリのプログラム記憶領域には、情報処理プログラムを構成する各種プログラム群Paが記憶される。
【0229】
パノラマ画像ファイルデータDaは、フレーム毎の情報として、6面体画像データDa1等を含んでいる。6面体画像データDa1は、フレーム番号N(1,2,3・・・)毎に、上述した6つの画像(正面画像、左側面画像、右側面画像、背面画像、上面画像、および底面画像)を示すデータを含んでいる。6面体画像データDa1は、所定の記憶媒体にエンコードされて記憶されたパノラマ動画を、上記方式によってデコードすることによって得られる。
【0230】
端末操作データDbは、端末装置7に対する操作内容を示すデータであり、操作ボタンデータDb1および角速度データDb2等を含んでいる。操作ボタンデータDb1は、操作ボタン54に対する操作内容を示すデータである。角速度データDb2は、端末装置7に生じる角速度を示すデータであり、ジャイロセンサ64から出力される角速度を示すデータである。
【0231】
姿勢データDcは、実空間における端末装置7の姿勢を示すデータであり、例えば基準姿勢からの端末装置7の回転量を示すデータである。
【0232】
仮想カメラデータDdは、6面体モデルの中央に配置される仮想カメラに関するデータである。
【0233】
仮想空間画像データDeは、上記仮想カメラから6面体モデルの内面を見た仮想空間画像を示すデータである。全方位画像データDfは、6面体画像データDa1が示す6面体画像を1つの画像に合成することによって生成される全方位画像を示すデータである。
【0234】
次に、図26および図27を参照して、ゲーム装置3において行われる処理の詳細を説明する。なお、図26は、ゲーム装置3において実行される処理の前半の一例を示すフローチャートである。図27は、ゲーム装置3において実行される処理の後半の一例を示すフローチャートである。ここで、図26および図27に示すフローチャートにおいては、ゲーム装置3における処理のうち、パノラマ動画を端末装置7およびモニタ2にそれぞれ表示する処理について主に説明し、これらの処理と直接関連しない他の処理については詳細な説明を省略する。
【0235】
CPU10は、メインメモリ等を初期化し、ゲーム装置3内の不揮発メモリまたは光ディスク4に記憶される情報処理プログラムをメインメモリに読み込む。そして、CPU10によって当該情報処理プログラムの実行が開始される。図26および図27に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【0236】
なお、図26および図27に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて別の処理が実行されてもよい。また、本実施例では、上記フローチャートの各ステップの処理をCPU10が実行するものとして説明するが、上記フローチャートにおける一部または全部のステップの処理を、上記CPU以外のプロセッサや専用回路が実行するようにしてもよい。
【0237】
図26において、CPU10は、パノラマ画像ファイルを取得する(ステップS81)。例えば、CPU10は、ゲーム装置3内の不揮発メモリ、ゲーム装置3に装着された記憶媒体、またはネットワーク等を介して他の装置から、パノラマ画像ファイルを取得し、パノラマ画像ファイルデータDaに格納する。
【0238】
次に、CPU10は、パノラマ動画を貼り付けるための6面体モデルを、仮想空間にその中心が原点に位置するように配置し(ステップS82)、次のステップに処理を進める。例えば、CPU10は、仮想空間に設定されたXYZ軸に対して、上記6面体モデルの正面がZ軸正方向側でZ軸と垂直に交わり、背面がZ軸負方向側でZ軸と垂直に交わり、左側面がX軸正方向側でX軸と垂直に交わり、右側面がX軸負方向側でX軸と垂直に交わり、上面がY軸正方向側でY軸と垂直に交わり、底面がY軸負方向側でY軸と垂直に交わるように、上記6面体モデルを配置する(図24に示す状態)。
【0239】
次に、CPU10は、仮想カメラを基準位置に基準姿勢で配置し(ステップS83)、次のステップに処理を進める。例えば、CPU10は、仮想カメラの基準位置を仮想空間の原点(すなわち、6面体モデルの中央)とし、仮想カメラのxyz軸(x軸正方向が仮想カメラの左方向、y軸正方向が仮想カメラの上方向、z軸正方向が仮想カメラの視線方向)が仮想空間のXYZ軸に一致する姿勢を基準姿勢とする。そして、CPU10は、仮想カメラの基準位置および基準姿勢を用いて、仮想カメラデータDdを更新する。
【0240】
次に、CPU10は、端末装置7とモニタ2との姿勢調整をユーザに促し(ステップS84)、姿勢調整が行われるのを待つ(ステップS85)。例えば、CPU10は、端末装置7のLCD51の向きとモニタ2の表示画面の向きとが同じになるように端末装置7の姿勢を調整し、当該姿勢になった場合に端末装置7の所定の操作ボタンを押下するように促す表示を、端末装置7および/またはモニタ2に表示する。そして、CPU10は、操作ボタンデータDb1を参照して操作ボタン54に対する操作内容を示すデータを取得し、当該データが所定の操作ボタンが押下されたことを示す場合に、上記姿勢調整が行われたと判断して、次のステップS86に処理を進める。なお、端末装置7からは、操作ボタン54の操作内容を示すデータが一定周期でゲーム装置3に送信されて、操作ボタンデータDb1に格納されている。
【0241】
ステップS86において、CPU10は、現時点の端末装置7の姿勢を基準姿勢に設定し、次のステップに処理を進める。例えば、CPU10は、姿勢データDcが示す端末装置7の姿勢(基準姿勢からの回転量)を初期化(各軸周りの回転量を0)して、端末装置7の基準姿勢を設定する。上記ステップS84〜ステップS86の処理によって、端末装置7のLCD51の向きとモニタ2の表示画面の向きとが同じになるように姿勢調整された端末装置7の姿勢が、端末装置7の基準姿勢として設定されることになる。
【0242】
次に、CPU10は、フレーム数nを1に設定し(ステップS87)、次のステップS91(図27参照)に処理を進める。
【0243】
図27において、CPU10は、6面体画像データDa1のうち、フレームnに対応する6面体画像を取得し(ステップS91)、次のステップに処理を進める。
【0244】
次に、CPU10は、上記ステップS91で取得した6面体画像を6面体モデルの内面にテクスチャとして貼りつけ(ステップS92)、次のステップに処理を進める。例えば、図24を用いて前述したとおり、6面体画像が6面体モデルの各内面にテクスチャとして貼りつけられる。
【0245】
次に、CPU10は、端末装置7のジャイロセンサ64の出力値を取得し(ステップS93)、次のステップに処理を進める。なお、端末装置7からは、ジャイロセンサ64の出力値を示すデータが一定周期でゲーム装置3に送信されて、角速度データDb2に格納されている。
【0246】
次に、CPU10は、上記ステップS93において取得したデータを用いて、端末装置7の基準姿勢からの回転方向および回転量(ステップS86で初期化してからの回転方向および回転量)を算出し(ステップS94)、次のステップに処理を進める。例えば、上記ステップS94では、端末装置7の基準姿勢におけるx軸(図18Aのxn)まわりの回転方向および回転量と、y軸(図18Aのyn)まわりの回転方向および回転量と、z軸(図18Aのzn)まわりの回転方向および回転量とがそれぞれ算出されて、姿勢データDcを更新する。なお、回転方向は、回転量の正負により表すことができるので、姿勢データDcには回転量を示すデータのみ格納してもよい。例えば、CPU10は、上記ステップS94では、前回処理におけるステップS94において算出された回転量に、今回ステップS94で取得した角速度データに基づく回転量を加えて、新たな回転量として算出する。
【0247】
次に、CPU10は、仮想カメラの仮想空間における姿勢を、基準姿勢からステップS94で算出された回転量だけ回転させ(ステップS95)、次のステップに処理を進める。例えば、CPU10は、仮想カメラの姿勢を、基準姿勢からステップS94で算出された端末装置7のxn軸まわりの回転量と同じだけ仮想空間のX軸(図18Cのx0)まわりに回転させ、かつ、端末装置7のyn軸まわりの回転量と同じだけ仮想空間のY軸(図18Cのy0)まわりに回転させ、かつ、端末装置7のzn軸まわりの回転量と同じだけ仮想空間のZ軸(図18Cのz0)まわりに回転させて、仮想カメラデータDdを更新する。
【0248】
次に、CPU10は、仮想カメラから見た6面体モデルの内面の画像(仮想空間画像)を生成し(ステップS96)、次のステップに処理を進める。例えば、CPU10は、生成された仮想空間画像を示すデータを用いて、仮想空間画像データDeを更新する。
【0249】
次に、CPU10は、上記ステップS91で取得した6面体画像を1つの画像に合成することによって全方位画像を生成し(ステップS97)、次のステップに処理を進める。例えば、CPU10は、生成された全方位画像を示すデータを用いて、全方位画像データDfを更新する。なお、全方位画像の生成方法については、図23および図24を用いて説明した方法と同様であるため、ここでは詳細な説明を省略する。
【0250】
次に、CPU10は、仮想空間画像データDeに基づいた仮想空間画像を端末装置7へ送信し(ステップS98)、次のステップに処理を進める。例えば、仮想空間画像データDeに基づいた仮想空間画像は、VRAM11dに記憶された後、コーデックLSI27に送られ、コーデックLSI27によって所定の圧縮処理が行われる。さらに、圧縮処理が施された仮想空間画像のデータは、コーデックLSI27によって端末通信モジュール28に送られ、アンテナ29を介して端末通信モジュール28によって端末装置7へ送信される。ゲーム装置3から送信された仮想空間画像のデータは、端末装置7の無線モジュール70によって受信され、コーデックLSI78によって所定の伸張処理が行われる。そして、伸張処理が行われた仮想空間画像のデータは、LCD51に出力されて仮想空間画像が表示される。
【0251】
次に、CPU10は、全方位画像データDfに基づいた全方位画像をモニタ2へ出力し(ステップS99)、次のステップに処理を進める。例えば、CPU10は、全方位画像データDfに基づいた全方位画像は、VRAM11dに記憶された後、AV−IC15へ送る。これに応じて、AV−IC15は、全方位画像を示すデータを、AVコネクタ16を介してモニタ2へ出力する。これによって、全方位画像がモニタ2に表示される。
【0252】
次に、CPU10は、フレーム数nをインクリメントし(ステップS100)、処理を終了するか否かを判定する(ステップS101)。処理を終了する条件としては、例えば、再生しているパノラマ動画における最後のフレームの画像の再生が終了したことや、ユーザが処理を終了する操作を行ったこと等がある。CPU10は、処理を終了しない場合に上記ステップS91に戻って処理を繰り返し、処理を終了する場合に当該フローチャートによる処理を終了する。以降、ステップS91〜ステップS101の一連の処理は、ステップS101で処理を終了すると判定されるまで繰り返し実行される。
【0253】
[8.変形例]
上記実施形態は本発明を実施する一例であり、他の実施形態においては例えば以下に説明する構成で本発明を実施することも可能である。
【0254】
上記実施形態においては、ゲームシステム1は端末装置7を1つのみ有する構成であったが、ゲームシステム1は複数の端末装置7を有する構成であってもよい。すなわち、ゲーム装置3は、複数の端末装置7とそれぞれ無線通信可能であり、画像のデータを各端末装置7へ送信し、ジャイロセンサ64のデータを各端末装置7から受信するものであってもよい。そして、仮想空間に各端末装置7の仮想カメラを配置して、各端末装置7の姿勢に応じて各仮想カメラの姿勢を制御して、各仮想カメラから見た仮想空間の画像を各端末装置7に送信するようにすればよい。なお、ゲーム装置3は、複数の端末装置7のそれぞれと無線通信を行うが、このとき、ゲーム装置3は、各端末装置7との無線通信を時分割で行ってもよいし、周波数帯域を分割して行ってもよい。
【0255】
このように、複数の端末装置7を用いてパノラマ動画を表示する場合、モニタ2を用いなくてもかまわない。例えば、上述した第2の実施形態において複数の端末装置7(例えば、第1の端末装置と第2の端末装置)にそれぞれ同じパノラマ動画を実質的に同じ時間軸で再生して表示する場合を考える。この場合、上記ステップS83において、2つの仮想カメラ(例えば、第1の仮想カメラと第2の仮想カメラ)を同じ基準位置に同じ基準姿勢で配置する。そして、ステップS84において、第1の端末装置のLCD51の向きと第2の端末装置のLCD51の向きとが同じになるようにそれぞれの姿勢を調整し、当該姿勢になった場合に少なくとも一方の端末装置の所定の操作ボタンを押下するように促す表示をそれぞれの端末装置に表示して、上記ステップS86において姿勢調整が行われた時点の第1の端末装置および第2の端末装置の姿勢をそれぞれ基準姿勢に設定する。このような設定に基づいて、第1の端末装置の基準姿勢からの回転量に応じて第1の仮想カメラの姿勢を変更し、第2の端末装置の基準姿勢からの回転量に応じて第2の仮想カメラの姿勢を変更して、第1の仮想カメラから見た6面体モデルの内面の画像を第1の端末装置に表示し、第2の仮想カメラから見た6面体モデルの内面の画像を第2の端末装置に表示する。このように、実空間における第1の端末装置と第2の端末装置との位置関係をキャリブレーションした後に、それぞれ端末装置の姿勢変化と同じようにそれぞれの仮想カメラの姿勢を変化させることによって、パノラマ動画によって生成される同じ世界を複数の表示装置を介して自由に覗いたような画像をそれぞれの端末装置に表示することができる。
【0256】
ここで、第2の仮想カメラの位置および姿勢を基準位置および基準姿勢に固定し、当該第2の仮想カメラから見た6面体モデルの内面の画像を第2の端末装置の代わりにモニタ2に表示すれば、モニタ2には常に基準方向(正面方向)のパノラマ動画を表示することができる。これによって、移動しながらパノラマ画像が撮像されてパノラマ動画が生成されている場合、モニタ2には当該移動における進行方向を見たパノラマ画像の一部が常に表示されることになる。
【0257】
なお、モニタ2に表示するパノラマ動画の範囲を、コントローラ5を操作することによって変化させてもかまわない。一例として、モニタ2に上述した全方位画像の一部を表示する場合、当該全方位画像からモニタ2に表示される範囲を、コントローラ5が操作データとして出力するマーカ座標データ、加速度データ、角速度データ、および操作ボタンデータの少なくとも1つに応じて移動させる。他の例として、上記第2の仮想カメラから見た6面体モデルの内面の画像をモニタ2に表示する場合、当該第2の仮想カメラの姿勢をコントローラ5が操作データとして出力するマーカ座標データ、加速度データ、角速度データ、および操作ボタンデータの少なくとも1つに応じて変化させる。
【0258】
また、コントローラ5を操作することによって、パノラマ動画に所定のオブジェクトや付加情報を付加してもよい。例えば、モニタ2に表示されたパノラマ動画を見ているユーザがコントローラ5を用いて所定の操作をすることによって、当該操作によって指示されたパノラマ動画の一部に所定のオブジェクトや付加情報が入力される。具体的には、モニタ2に表示されているパノラマ動画の一部をコントローラ5で指し示して所定のボタン操作を行うことによって、当該一部に当該ボタン操作に応じたオブジェクトや付加情報が再生中のパノラマ動画に付加される。
【0259】
また、入力された所定のオブジェクトや付加情報(例えば、コメント)は、端末装置7で表示されているパノラマ動画にも付加表示される。ここで、上述したように、モニタ2に表示されている画像と端末装置7に表示されている画像とは、再生されている1つのパノラマ動画において実質的に時間軸が同じとなるパノラマ画像の少なくとも一部である。したがって、モニタ2を介して所定のオブジェクトや付加情報が付加されたパノラマ動画の部位を含む範囲が端末装置7に表示されている場合、端末装置7にはパノラマ動画とともに、付加された所定のオブジェクトや付加情報が付加操作と実質的に同じタイミングで表示される。これによって、ユーザは、パノラマ動画を単に見るだけでなく、他のユーザがポインティングして付加したオブジェクトや付加情報とともにパノラマ動画を見ることができる。このように、モニタ2を介して所定のオブジェクトや付加情報をパノラマ動画に付加できるように構成することによって、モニタ2および端末装置7を介して表示されているパノラマ動画についてのユーザ間のコミュニケーションを図ることができる。
【0260】
モニタ2を介して、所定のオブジェクトや付加情報の入力が行われた場合、CPU10は、付加する対象(所定のオブジェクトや付加情報)を示す対象情報と、当該対象情報をパノラマ動画に付加するために必要な入力位置情報とを管理する。例えば、入力位置情報は、対象情報の入力が受け付けられた場合におけるモニタ2のパノラマ画像表示範囲内の入力位置を特定可能な情報である。上記入力位置は、例えば、上述した付加操作によって指定された位置でもよい。
【0261】
一例として、上記入力位置を示す入力位置情報として、モニタ2に表示している画像を生成するための仮想カメラの姿勢(視線方向)を表すベクトルの情報が用いられる。例えば、仮想カメラの位置から立体モデル(上記球体モデルや上記6面体モデル)上の上記入力位置への方向を表すベクトルによって入力位置を表すことができる。なお、パノラマ動画を撮像する際の視点が時間経過につれて所定空間(例えば、現実世界)内を移動している場合には、当該視点の移動に応じて上記入力位置も立体モデル上で移動させる。そして、モニタ2および端末装置7に表示されているパノラマ動画の表示範囲に上記入力位置が含まれる場合、当該入力位置に管理されている対象情報に対応する所定のオブジェクトや付加情報を、パノラマ動画における当該入力位置に重畳表示する。
【0262】
また、端末装置7に表示しているパノラマ動画を、モニタ2に表示してもよい。例えば、上述した説明においてモニタ2に表示しているパノラマ動画に加えて、端末装置7に表示しているパノラマ動画をモニタ2に表示してもいいし、端末装置7に表示しているパノラマ動画を単独でモニタ2に表示してもよい。前者の場合、上述した説明においてモニタ2に表示しているパノラマ動画の表示領域とは別の表示領域に端末装置7に表示しているパノラマ動画を表示してもいいし、これらの表示領域の少なくとも一部を重複させて表示してもよい。後者の場合、モニタ2の表示領域全体に端末装置7に表示しているパノラマ動画を表示してもよい。このように、モニタ2にも端末装置7に表示しているパノラマ動画を表示することによって、端末装置7を操作しているユーザが見ているパノラマ画像を、モニタ2を介して他のユーザも見ることが可能となり、見ているパノラマ動画についてのユーザ間のコミュニケーションを図ることができる。
【0263】
また、端末装置7に表示しているパノラマ動画をモニタ2に表示する場合、端末装置7を把持しているユーザの手ぶれによる画像の相対的に小さな揺れや、端末装置7をユーザが上下左右に大きく動かすことによる視線方向の相対的に大きな変化等によって、モニタ2に表示された当該パノラマ動画を見るユーザが映像酔い(画像酔い)することが考えられる。このような映像酔いを防止するために、端末装置7に表示しているパノラマ動画の視線方向の変化を軽減した画像をモニタ2に表示してもかまわない。例えば、端末装置7にパノラマ動画を表示するための端末装置用仮想カメラと同じ視点に同じ視線方向となるモニタ用仮想カメラを仮想世界に設定し、当該端末装置用仮想カメラの動きと基本的に同じ動きで当該モニタ用仮想カメラを動作させる。そして、第1の例として、実空間における端末装置7の向きの単位時間当たり変化量が所定の閾値未満である場合や、端末装置7の動きを検出するセンサ(加速度センサ63、ジャイロセンサ64等)から出力される値(加速度や角速度を示す値)が所定の閾値未満である場合等には、上記モニタ用仮想カメラの姿勢を固定して、手ぶれによる画像の相対的に小さな揺れを防止する。そして、上記変化量や出力値が0になった場合や当該閾値以上となった場合に上記端末装置用仮想カメラの姿勢に近づくまたは同じとなるように当該モニタ用仮想カメラの姿勢を制御する。第2の例として、実空間における端末装置7の向きの単位時間当たり変化量が所定の閾値以上である場合や、端末装置7の動きを検出するセンサ(加速度センサ63、ジャイロセンサ64等)から出力される値(加速度や角速度を示す値)が所定の閾値以上である場合等には、上記モニタ用仮想カメラの動きを制限して、視線方向の相対的に大きな変化を抑制する。そして、上記変化量や出力値が当該閾値未満となった場合に上記端末装置用仮想カメラの姿勢に近づくように当該モニタ用仮想カメラの姿勢を制御する。第3の例として、上記端末装置用仮想カメラの動きに所定の割合で追従するように上記モニタ用仮想カメラの動きを制御することによって、手ぶれによる画像の相対的に小さな揺れや視線方向の相対的に大きな変化を抑制する。具体的には、上記端末装置用仮想カメラの視線方向と上記モニタ用仮想カメラの視線方向との角度差に対して所定の割合(例えば、50%)だけ、当該端末装置用仮想カメラの視線方向に近づくように当該モニタ用仮想カメラの視線方向が常に変化するように制御する。このような制御例の1つまたは組み合わせを用いて姿勢制御されるモニタ用仮想カメラから見た上記立体モデル内面の画像をモニタ2に表示することによって、端末装置7に表示しているパノラマ動画の視線方向の変化を軽減した画像をモニタ2に表示することができる。
【0264】
また、上述した説明では、端末装置7に表示しているパノラマ動画をモニタ2に表示する場合に上下左右方向の視覚的な振動による映像酔いを防止する例を用いたが、パノラマ動画を拡大または縮小する際の画像変化をモニタ2に表示する画像において低減することも考えられる。例えば、端末装置7を把持するユーザが端末装置7に表示されているパノラマ動画を拡大表示または縮小表示する操作を行った場合、LCD51には当該操作に応じて拡大または縮小したパノラマ動画がそのまま表示される。一方、端末装置7に対する操作に応じて拡大または縮小して端末装置7に表示されたパノラマ動画をモニタ2にも表示する場合、当該パノラマ動画の拡大率または縮小率が所定の閾値以上となる場合は、拡大率または縮小率を当該閾値に抑制したパノラマ動画をモニタ2に表示する。また、端末装置7に対する操作に応じて、パノラマ動画を拡大してから縮小するまでの時間またはパノラマ動画を縮小してから拡大するまでの時間が所定時間以内に行われた場合、当該所定時間内に行われた縮小または拡大を抑制したパノラマ動画をモニタ2に表示する。このような制御例の1つまたは組み合わせを用いてパノラマ動画の拡大または縮小を制御したパノラマ動画をモニタ2に表示することによって、端末装置7に拡大または縮小する画像変化を軽減したパノラマ動画をモニタ2に表示することができる。
【0265】
また、上述した端末装置7は、図20〜図22、図26、および図27を用いて説明した一連の処理やゲーム装置3で行われるようなゲーム処理を実行しない、いわゆるシンクライアント端末として機能するものであった。しかしながら、端末装置7は、例えば携帯ゲーム機のように、所定のプログラム(ゲームプログラム)によって所定の情報処理(ゲーム処理)を実行する機能を有する装置であってもよい。この場合、上記実施例においてゲーム装置3によって実行される一連の処理のうち、少なくとも一部の処理が端末装置7によって実行されてもよい。一例として、上記一連の処理の全部を実行可能な端末装置を少なくとも1つ用いて複数の端末装置にパノラマ動画をそれぞれ表示する場合、当該実行可能な端末装置の1つを当該一連の処理を実行する主処理実行装置とし、他の端末装置の姿勢に応じたパノラマ動画を当該主処理実行装置から他の端末装置へ送信することによって、同様のパノラマ画像を各端末装置に表示することができる。
【0266】
また、上述した実施例では、現実世界を移動しながら撮像したパノラマ画像によって構成されるパノラマ動画を表示する例を用いたが、仮想世界内を移動しながら撮像したパノラマ画像によって構成されるパノラマ動画や、現実世界を撮像したパノラマ画像に仮想世界の画像を合成した画像によって構成されるパノラマ動画を表示してもかまわない。
【0267】
他の実施形態では、互いに通信可能な複数の情報処理装置を有するゲームシステムにおいて、当該複数の情報処理装置が情報処理を分担して実行するようにしてもよい。なお、複数の情報処理装置において情報処理が実行される場合には、各情報処理装置で実行される処理を同期させる必要があり、処理が複雑になってしまう。これに対して、上記実施形態のように、情報処理が1つのゲーム装置3によって実行され、端末装置7が画像を受信して表示する場合(つまり、端末装置7がシンクライアント端末である場合)には、複数の情報処理装置間で処理の同期をとる必要がなく、処理を簡易化することができる。
【0268】
また、上記実施形態においては、ゲーム処理を実行することが可能なゲーム装置3を含むゲームシステム1を例として説明したが、上記実施形態で記載した各処理動作は、ゲームシステムおよびゲーム装置に限らず、任意の情報処理システムおよび情報処理装置によって実行可能である。情報処理システムは、情報処理装置と、複数の表示装置(ユーザによる操作入力が可能な少なくとも1つの可搬型の表示装置(例えば端末装置7)と据置型の表示装置との組み合わせ、または複数の可搬型の表示装置)を含むものであればよく、情報処理装置は、複数の表示装置にそれぞれ画像を出力して表示させることができるものであればよい。また、上述した処理は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。
【0269】
上記のように、本明細書で説明した種々のシステム、方法、および技術は、デジタル電子回路、コンピュータハードウェア、ファームウェア、ソフトウェア、またはこれら要素の組み合わせによって提供されてもよい。上記の技術を実現するための装置は、プログラム可能なプロセッサによる実行のためのコンピュータ読み取り可能な非一時的な記憶装置において実体的に具体化されるコンピュータプログラムプロダクト、入出力装置、およびコンピュータプロセッサを含んでもよい。上記技術を実現するための処理は、入力データを処理して所望の出力を生成することによって、要求される機能を実行するためのプログラムを実行する、プログラム可能なプロセッサによって実行されてもよい。上記の技術は、入力装置、出力装置、および情報記憶装置といったハードウェア資源との間でデータや指示のやり取りを行うプログラム可能なプロセッサを含むコンピュータシステム上で実行可能な1以上のコンピュータプログラムによって実現されてもよい。また、各コンピュータプログラムは、手続型やオブジェクト指向型の高水準プログラミング言語、アセンブリ言語、または、機械語によって実現されてもよく、必要に応じてコンパイルまたはインタプリタされて実行されてもよい。また、上記のプロセッサは、汎用または専用のマイクロプロセッサであってもよい。プロセッサは、一般的に、ROMまたはRAMからデータおよび指示を受け取る。また、上記の記憶装置は、(a)EPROM、EEPROM、フラッシュメモリのような半導体メモリ装置を含む不揮発性のメモリ、(b)内部ハードディスクあるいは着脱可能な外部ディスクのような磁気ディスク、(c)光磁気ディスク、(d)CDROM、に限定されず、あらゆる種類のコンピュータメモリを含む。上記のプロセッサや記憶装置は、ASIC(Application Specific Integrated Circuit)によって補充される、あるいは、ASICに組み込まれる形で実現されてもよい。
【0270】
また、本明細書に記載の処理システム(回路)は、本明細書において記載された内容に応じたゲーム処理のような制御処理のためにプログラムされる。上記の内容に応じた指示を実行する少なくとも1つのCPUを含む処理システムが、上記の内容によって定義される処理動作を実行するための「プログラムされた論理回路」として作用するものであってもよい。
【0271】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。
【産業上の利用可能性】
【0272】
以上のように、本発明は、より現実感の高いユーザ体験を提供することができること等を目的として、例えば、ゲームシステムおよびゲーム装置等に利用することができる。
【符号の説明】
【0273】
1 ゲームシステム
2 モニタ
3 ゲーム装置
4 光ディスク
5 コントローラ
7 端末装置
10 CPU
51 LCD
100 球体モデル
101 仮想カメラ
104 円柱モデル
【特許請求の範囲】
【請求項1】
少なくとも1つの表示装置に複数の画像を表示する情報処理装置に含まれるコンピュータで実行される情報処理プログラムであって、
前記コンピュータを、
パノラマ動画を記憶したパノラマ動画記憶手段から、前記表示装置に再生する所定時間毎に当該パノラマ動画の各フレームとなるパノラマ画像を読み出して逐次取得するパノラマ画像取得手段と、
前記取得されたパノラマ画像において、第1の表示領域に表示する範囲を設定する第1表示範囲設定手段と、
前記取得されたパノラマ画像において、第2の表示領域に表示する範囲を設定する第2表示範囲設定手段と、
前記取得されたパノラマ画像のうち、前記第1表示範囲設定手段によって設定された範囲を前記第1の表示領域に逐次表示する第1表示制御手段と、
前記取得されたパノラマ画像のうち、前記第2表示範囲設定手段によって設定された範囲を前記第2の表示領域に逐次表示する第2表示制御手段として機能させる、情報処理プログラム。
【請求項2】
前記第1の表示領域は、第1の表示装置に設けられ、
前記第2の表示領域は、前記第1の表示装置とは異なる第2の表示装置に設けられ、
前記第1表示範囲設定手段は、ユーザ操作に応じて、前記取得されたパノラマ画像における前記第1の表示装置に表示する範囲を設定する、請求項1に記載の情報処理プログラム。
【請求項3】
前記第1表示制御手段と前記第2表示制御手段とは、前記パノラマ動画において実質的に時間軸が同じとなるパノラマ画像の少なくとも一部を前記第1の表示装置と前記第2の表示装置とにそれぞれ表示する、請求項2に記載の情報処理プログラム。
【請求項4】
前記第2表示範囲設定手段は、前記第1表示範囲設定手段が範囲を設定した同じパノラマ画像において、前記第2の表示領域に表示する範囲を設定し、
前記第2表示制御手段は、前記第1表示制御手段が前記第1の表示領域に表示している同じパノラマ画像に対して前記第2表示範囲設定手段によって設定された範囲を前記第2の表示領域に逐次表示する、請求項2または3に記載の情報処理プログラム。
【請求項5】
前記第1表示範囲設定手段と前記第2表示範囲設定手段とは、前記第1の表示装置と前記第2の表示装置との実空間における位置関係に応じて、前記第1の表示装置に表示する範囲と前記第2の表示装置に表示する範囲とをそれぞれ設定する、請求項2乃至4の何れか1つに記載の情報処理プログラム。
【請求項6】
前記第1の表示装置と前記第2の表示装置とが、実空間において所定の位置関係となったか否かを判定する位置関係判定手段として、さらに前記コンピュータを機能させ、
前記第1表示範囲設定手段と前記第2表示範囲設定手段とは、前記位置関係判定手段が肯定判定した時点の前記第1の表示装置の姿勢および/または前記第2の表示装置の姿勢を基準として、当該姿勢の変化に応じて、前記第1の表示装置に表示する範囲と前記第2の表示装置に表示する範囲とをそれぞれ設定する、請求項5に記載の情報処理プログラム。
【請求項7】
前記第1の表示装置は、可搬型の表示装置であるとともに、ユーザ操作に応じたデータを出力することが可能であり、
前記第1表示範囲設定手段は、前記第1の表示装置から出力されるデータに基づいて、前記第1の表示装置に表示する範囲を設定する、請求項2乃至6の何れか1つに記載の情報処理プログラム。
【請求項8】
前記第2の表示装置は、据置型の表示装置である、請求項7に記載の情報処理プログラム。
【請求項9】
前記第1の表示装置は、当該第1の表示装置本体の動きまたは姿勢に応じたデータを出力するセンサを備え、
前記第1表示範囲設定手段は、前記センサから出力されるデータに基づいて算出された前記第1の表示装置の姿勢に応じて、前記第1の表示装置に表示する範囲を設定する、請求項7または8に記載の情報処理プログラム。
【請求項10】
前記センサは、前記第1の表示装置本体の動きまたは姿勢に応じたデータを出力するジャイロセンサおよび加速度センサの少なくとも一方であり、
前記第1表示範囲設定手段は、前記ジャイロセンサおよび前記加速度センサの少なくとも一方から出力されるデータに基づいて算出された前記第1の表示装置の姿勢に応じて、前記第1の表示装置に表示する範囲を設定する、請求項9に記載の情報処理プログラム。
【請求項11】
前記第2表示範囲設定手段は、前記パノラマ画像に対する所定の範囲を、前記第2の表示装置に表示する範囲として設定する、請求項2乃至10の何れか1つに記載の情報処理プログラム。
【請求項12】
前記パノラマ動画記憶手段は、現実世界または仮想世界を移動しながら撮像したパノラマ動画を記憶しており、
前記所定の範囲は、前記パノラマ画像を移動しながら撮像した際の移動方向を見たパノラマ画像における範囲である、請求項11に記載の情報処理プログラム。
【請求項13】
前記第2表示範囲設定手段は、前記第1の表示装置に表示されるパノラマ画像の範囲より広い範囲を、前記第2の表示装置に表示する範囲として設定する、請求項2乃至12の何れか1つに記載の情報処理プログラム。
【請求項14】
前記第1の表示装置は、可搬型の表示装置であるとともに、ユーザ操作に応じたデータを出力することが可能であり、
前記第2の表示装置は、据置型の表示装置であり、
前記第1表示範囲設定手段は、前記第1の表示装置から出力されるデータに基づいて、前記第1の表示装置に表示する範囲を設定し、
前記第2表示範囲設定手段は、前記第1表示範囲設定手段によって設定された範囲を、前記第2の表示装置に表示する範囲に設定する、請求項2乃至4の何れか1つに記載の情報処理プログラム。
【請求項15】
前記第1の表示装置は、可搬型の表示装置であるとともに、ユーザ操作に応じたデータを出力することが可能であり、
前記第2の表示装置は、据置型の表示装置であり、
前記第1表示範囲設定手段は、前記第1の表示装置から出力されるデータに基づいて、前記第1の表示装置に表示する範囲を設定し、
前記第2表示範囲設定手段は、前記第1表示範囲設定手段によって設定される前記第1の表示装置に表示する範囲に基づいて前記第2の表示装置に表示する範囲を設定するとともに、前記第1の表示装置に表示する範囲がユーザ操作に応じて変化する変化量を抑制した範囲を前記第2の表示装置に表示する範囲に設定する、請求項2乃至4の何れか1つに記載の情報処理プログラム。
【請求項16】
前記パノラマ画像取得手段は、前記パノラマ動画記憶手段に記憶されたパノラマ動画をデコードして読み出したパノラマ画像を逐次取得し、
前記第1の表示範囲設定手段は、前記デコードされて取得されたパノラマ画像から前記第1の表示装置に表示する範囲を設定し、
前記第2の表示範囲設定手段は、前記デコードされて取得されたパノラマ画像から前記第2の表示装置に表示する範囲を設定し、
前記第1表示制御手段は、前記デコードされて取得されたパノラマ画像のうち、前記第1表示範囲設定手段によって設定された範囲を前記第1の表示装置に逐次表示し、
前記第2表示制御手段は、前記デコードされて取得されたパノラマ画像のうち、前記第2表示範囲設定手段によって設定された範囲を前記第2の表示装置に逐次表示する、請求項2乃至15の何れか1つに記載の情報処理プログラム。
【請求項17】
前記第1表示制御手段は、前記第1の表示装置に表示するための画像を示すデータを当該第1の表示装置へ出力し、
前記第1の表示装置は、前記第1表示制御手段によって出力されたデータを取得する画像データ取得手段を備え、
前記第1の表示装置の表示画面は、前記画像データ取得手段が取得した画像データが示す画像を表示する、請求項16に記載の情報処理プログラム。
【請求項18】
前記第2の表示装置は、可搬型の表示装置であるとともに、ユーザ操作に応じたデータを出力することが可能であり、
前記第2表示範囲設定手段は、前記第2の表示装置から出力されるデータに基づいて、前記第2の表示装置に表示する範囲を設定する、請求項7乃至10の何れか1つに記載の情報処理プログラム。
【請求項19】
前記第2の表示装置は、当該第1の表示装置本体の動きまたは姿勢に応じたデータを出力するセンサを備え、
前記第2表示範囲設定手段は、前記センサから出力されるデータに基づいて算出された前記第2の表示装置の姿勢に応じて、前記第2の表示装置に表示する範囲を設定する、請求項18に記載の情報処理プログラム。
【請求項20】
前記複数の表示装置それぞれに対応付けられた各入力装置からの入力を受け付ける入力受付手段として、さらに前記コンピュータを機能させ、
前記第1表示範囲設定手段は、前記第1の表示装置に対応付けられた第1の入力装置から受け付けられた入力に基づいて、前記取得されたパノラマ画像から当該第1の表示装置に表示する範囲を設定し、
前記第2表示範囲設定手段は、前記第2の表示装置に対応付けられた第2の入力装置から受け付けられた入力に基づいて、前記取得されたパノラマ画像から当該第2の表示装置に表示する範囲を設定する、請求項2乃至10の何れか1つまたは請求項16乃至19の何れか1つに記載の情報処理プログラム。
【請求項21】
少なくとも1つの表示装置に複数の画像を表示する情報処理装置であって、
パノラマ動画を記憶するパノラマ動画記憶手段と、
前記パノラマ動画記憶手段に記憶されたパノラマ動画から、前記表示装置に再生する所定時間毎に当該パノラマ動画の各フレームとなるパノラマ画像を読み出して逐次取得するパノラマ画像取得手段と、
前記取得されたパノラマ画像において、第1の表示領域に表示する範囲を設定する第1表示範囲設定手段と、
前記取得されたパノラマ画像において、第2の表示領域に表示する範囲を設定する第2表示範囲設定手段と、
前記取得されたパノラマ画像のうち、前記第1表示範囲設定手段によって設定された範囲を前記第1の表示領域に逐次表示する第1表示制御手段と、
前記取得されたパノラマ画像のうち、前記第2表示範囲設定手段によって設定された範囲を前記第2の表示領域に逐次表示する第2表示制御手段とを備える、情報処理装置。
【請求項22】
複数の装置が通信可能に構成され、少なくとも1つの表示装置に複数の画像を表示する情報処理システムであって、
パノラマ動画を記憶するパノラマ動画記憶手段と、
前記パノラマ動画記憶手段に記憶されたパノラマ動画から、前記表示装置に再生する所定時間毎に当該パノラマ動画の各フレームとなるパノラマ画像を読み出して逐次取得するパノラマ画像取得手段と、
前記取得されたパノラマ画像において、第1の表示領域に表示する範囲を設定する第1表示範囲設定手段と、
前記取得されたパノラマ画像において、第2の表示領域に表示する範囲を設定する第2表示範囲設定手段と、
前記取得されたパノラマ画像のうち、前記第1表示範囲設定手段によって設定された範囲を前記第1の表示領域に逐次表示する第1表示制御手段と、
前記取得されたパノラマ画像のうち、前記第2表示範囲設定手段によって設定された範囲を前記第2の表示領域に逐次表示する第2表示制御手段とを備える、情報処理システム。
【請求項23】
少なくとも1つの表示装置に複数の画像を表示する少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行される情報処理方法であって、
パノラマ動画を記憶するパノラマ動画記憶手段から、前記表示装置に再生する所定時間毎に当該パノラマ動画の各フレームとなるパノラマ画像を読み出して逐次取得するパノラマ画像取得ステップと、
前記取得されたパノラマ画像において、第1の表示領域に表示する範囲を設定する第1表示範囲設定ステップと、
前記取得されたパノラマ画像において、第2の表示領域に表示する範囲を設定する第2表示範囲設定ステップと、
前記取得されたパノラマ画像のうち、前記第1表示範囲設定ステップにおいて設定された範囲を前記第1の表示領域に逐次表示する第1表示制御ステップと、
前記取得されたパノラマ画像のうち、前記第2表示範囲設定ステップにおいて設定された範囲を前記第2の表示領域に逐次表示する第2表示制御ステップとを含む、情報処理方法。
【請求項1】
少なくとも1つの表示装置に複数の画像を表示する情報処理装置に含まれるコンピュータで実行される情報処理プログラムであって、
前記コンピュータを、
パノラマ動画を記憶したパノラマ動画記憶手段から、前記表示装置に再生する所定時間毎に当該パノラマ動画の各フレームとなるパノラマ画像を読み出して逐次取得するパノラマ画像取得手段と、
前記取得されたパノラマ画像において、第1の表示領域に表示する範囲を設定する第1表示範囲設定手段と、
前記取得されたパノラマ画像において、第2の表示領域に表示する範囲を設定する第2表示範囲設定手段と、
前記取得されたパノラマ画像のうち、前記第1表示範囲設定手段によって設定された範囲を前記第1の表示領域に逐次表示する第1表示制御手段と、
前記取得されたパノラマ画像のうち、前記第2表示範囲設定手段によって設定された範囲を前記第2の表示領域に逐次表示する第2表示制御手段として機能させる、情報処理プログラム。
【請求項2】
前記第1の表示領域は、第1の表示装置に設けられ、
前記第2の表示領域は、前記第1の表示装置とは異なる第2の表示装置に設けられ、
前記第1表示範囲設定手段は、ユーザ操作に応じて、前記取得されたパノラマ画像における前記第1の表示装置に表示する範囲を設定する、請求項1に記載の情報処理プログラム。
【請求項3】
前記第1表示制御手段と前記第2表示制御手段とは、前記パノラマ動画において実質的に時間軸が同じとなるパノラマ画像の少なくとも一部を前記第1の表示装置と前記第2の表示装置とにそれぞれ表示する、請求項2に記載の情報処理プログラム。
【請求項4】
前記第2表示範囲設定手段は、前記第1表示範囲設定手段が範囲を設定した同じパノラマ画像において、前記第2の表示領域に表示する範囲を設定し、
前記第2表示制御手段は、前記第1表示制御手段が前記第1の表示領域に表示している同じパノラマ画像に対して前記第2表示範囲設定手段によって設定された範囲を前記第2の表示領域に逐次表示する、請求項2または3に記載の情報処理プログラム。
【請求項5】
前記第1表示範囲設定手段と前記第2表示範囲設定手段とは、前記第1の表示装置と前記第2の表示装置との実空間における位置関係に応じて、前記第1の表示装置に表示する範囲と前記第2の表示装置に表示する範囲とをそれぞれ設定する、請求項2乃至4の何れか1つに記載の情報処理プログラム。
【請求項6】
前記第1の表示装置と前記第2の表示装置とが、実空間において所定の位置関係となったか否かを判定する位置関係判定手段として、さらに前記コンピュータを機能させ、
前記第1表示範囲設定手段と前記第2表示範囲設定手段とは、前記位置関係判定手段が肯定判定した時点の前記第1の表示装置の姿勢および/または前記第2の表示装置の姿勢を基準として、当該姿勢の変化に応じて、前記第1の表示装置に表示する範囲と前記第2の表示装置に表示する範囲とをそれぞれ設定する、請求項5に記載の情報処理プログラム。
【請求項7】
前記第1の表示装置は、可搬型の表示装置であるとともに、ユーザ操作に応じたデータを出力することが可能であり、
前記第1表示範囲設定手段は、前記第1の表示装置から出力されるデータに基づいて、前記第1の表示装置に表示する範囲を設定する、請求項2乃至6の何れか1つに記載の情報処理プログラム。
【請求項8】
前記第2の表示装置は、据置型の表示装置である、請求項7に記載の情報処理プログラム。
【請求項9】
前記第1の表示装置は、当該第1の表示装置本体の動きまたは姿勢に応じたデータを出力するセンサを備え、
前記第1表示範囲設定手段は、前記センサから出力されるデータに基づいて算出された前記第1の表示装置の姿勢に応じて、前記第1の表示装置に表示する範囲を設定する、請求項7または8に記載の情報処理プログラム。
【請求項10】
前記センサは、前記第1の表示装置本体の動きまたは姿勢に応じたデータを出力するジャイロセンサおよび加速度センサの少なくとも一方であり、
前記第1表示範囲設定手段は、前記ジャイロセンサおよび前記加速度センサの少なくとも一方から出力されるデータに基づいて算出された前記第1の表示装置の姿勢に応じて、前記第1の表示装置に表示する範囲を設定する、請求項9に記載の情報処理プログラム。
【請求項11】
前記第2表示範囲設定手段は、前記パノラマ画像に対する所定の範囲を、前記第2の表示装置に表示する範囲として設定する、請求項2乃至10の何れか1つに記載の情報処理プログラム。
【請求項12】
前記パノラマ動画記憶手段は、現実世界または仮想世界を移動しながら撮像したパノラマ動画を記憶しており、
前記所定の範囲は、前記パノラマ画像を移動しながら撮像した際の移動方向を見たパノラマ画像における範囲である、請求項11に記載の情報処理プログラム。
【請求項13】
前記第2表示範囲設定手段は、前記第1の表示装置に表示されるパノラマ画像の範囲より広い範囲を、前記第2の表示装置に表示する範囲として設定する、請求項2乃至12の何れか1つに記載の情報処理プログラム。
【請求項14】
前記第1の表示装置は、可搬型の表示装置であるとともに、ユーザ操作に応じたデータを出力することが可能であり、
前記第2の表示装置は、据置型の表示装置であり、
前記第1表示範囲設定手段は、前記第1の表示装置から出力されるデータに基づいて、前記第1の表示装置に表示する範囲を設定し、
前記第2表示範囲設定手段は、前記第1表示範囲設定手段によって設定された範囲を、前記第2の表示装置に表示する範囲に設定する、請求項2乃至4の何れか1つに記載の情報処理プログラム。
【請求項15】
前記第1の表示装置は、可搬型の表示装置であるとともに、ユーザ操作に応じたデータを出力することが可能であり、
前記第2の表示装置は、据置型の表示装置であり、
前記第1表示範囲設定手段は、前記第1の表示装置から出力されるデータに基づいて、前記第1の表示装置に表示する範囲を設定し、
前記第2表示範囲設定手段は、前記第1表示範囲設定手段によって設定される前記第1の表示装置に表示する範囲に基づいて前記第2の表示装置に表示する範囲を設定するとともに、前記第1の表示装置に表示する範囲がユーザ操作に応じて変化する変化量を抑制した範囲を前記第2の表示装置に表示する範囲に設定する、請求項2乃至4の何れか1つに記載の情報処理プログラム。
【請求項16】
前記パノラマ画像取得手段は、前記パノラマ動画記憶手段に記憶されたパノラマ動画をデコードして読み出したパノラマ画像を逐次取得し、
前記第1の表示範囲設定手段は、前記デコードされて取得されたパノラマ画像から前記第1の表示装置に表示する範囲を設定し、
前記第2の表示範囲設定手段は、前記デコードされて取得されたパノラマ画像から前記第2の表示装置に表示する範囲を設定し、
前記第1表示制御手段は、前記デコードされて取得されたパノラマ画像のうち、前記第1表示範囲設定手段によって設定された範囲を前記第1の表示装置に逐次表示し、
前記第2表示制御手段は、前記デコードされて取得されたパノラマ画像のうち、前記第2表示範囲設定手段によって設定された範囲を前記第2の表示装置に逐次表示する、請求項2乃至15の何れか1つに記載の情報処理プログラム。
【請求項17】
前記第1表示制御手段は、前記第1の表示装置に表示するための画像を示すデータを当該第1の表示装置へ出力し、
前記第1の表示装置は、前記第1表示制御手段によって出力されたデータを取得する画像データ取得手段を備え、
前記第1の表示装置の表示画面は、前記画像データ取得手段が取得した画像データが示す画像を表示する、請求項16に記載の情報処理プログラム。
【請求項18】
前記第2の表示装置は、可搬型の表示装置であるとともに、ユーザ操作に応じたデータを出力することが可能であり、
前記第2表示範囲設定手段は、前記第2の表示装置から出力されるデータに基づいて、前記第2の表示装置に表示する範囲を設定する、請求項7乃至10の何れか1つに記載の情報処理プログラム。
【請求項19】
前記第2の表示装置は、当該第1の表示装置本体の動きまたは姿勢に応じたデータを出力するセンサを備え、
前記第2表示範囲設定手段は、前記センサから出力されるデータに基づいて算出された前記第2の表示装置の姿勢に応じて、前記第2の表示装置に表示する範囲を設定する、請求項18に記載の情報処理プログラム。
【請求項20】
前記複数の表示装置それぞれに対応付けられた各入力装置からの入力を受け付ける入力受付手段として、さらに前記コンピュータを機能させ、
前記第1表示範囲設定手段は、前記第1の表示装置に対応付けられた第1の入力装置から受け付けられた入力に基づいて、前記取得されたパノラマ画像から当該第1の表示装置に表示する範囲を設定し、
前記第2表示範囲設定手段は、前記第2の表示装置に対応付けられた第2の入力装置から受け付けられた入力に基づいて、前記取得されたパノラマ画像から当該第2の表示装置に表示する範囲を設定する、請求項2乃至10の何れか1つまたは請求項16乃至19の何れか1つに記載の情報処理プログラム。
【請求項21】
少なくとも1つの表示装置に複数の画像を表示する情報処理装置であって、
パノラマ動画を記憶するパノラマ動画記憶手段と、
前記パノラマ動画記憶手段に記憶されたパノラマ動画から、前記表示装置に再生する所定時間毎に当該パノラマ動画の各フレームとなるパノラマ画像を読み出して逐次取得するパノラマ画像取得手段と、
前記取得されたパノラマ画像において、第1の表示領域に表示する範囲を設定する第1表示範囲設定手段と、
前記取得されたパノラマ画像において、第2の表示領域に表示する範囲を設定する第2表示範囲設定手段と、
前記取得されたパノラマ画像のうち、前記第1表示範囲設定手段によって設定された範囲を前記第1の表示領域に逐次表示する第1表示制御手段と、
前記取得されたパノラマ画像のうち、前記第2表示範囲設定手段によって設定された範囲を前記第2の表示領域に逐次表示する第2表示制御手段とを備える、情報処理装置。
【請求項22】
複数の装置が通信可能に構成され、少なくとも1つの表示装置に複数の画像を表示する情報処理システムであって、
パノラマ動画を記憶するパノラマ動画記憶手段と、
前記パノラマ動画記憶手段に記憶されたパノラマ動画から、前記表示装置に再生する所定時間毎に当該パノラマ動画の各フレームとなるパノラマ画像を読み出して逐次取得するパノラマ画像取得手段と、
前記取得されたパノラマ画像において、第1の表示領域に表示する範囲を設定する第1表示範囲設定手段と、
前記取得されたパノラマ画像において、第2の表示領域に表示する範囲を設定する第2表示範囲設定手段と、
前記取得されたパノラマ画像のうち、前記第1表示範囲設定手段によって設定された範囲を前記第1の表示領域に逐次表示する第1表示制御手段と、
前記取得されたパノラマ画像のうち、前記第2表示範囲設定手段によって設定された範囲を前記第2の表示領域に逐次表示する第2表示制御手段とを備える、情報処理システム。
【請求項23】
少なくとも1つの表示装置に複数の画像を表示する少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行される情報処理方法であって、
パノラマ動画を記憶するパノラマ動画記憶手段から、前記表示装置に再生する所定時間毎に当該パノラマ動画の各フレームとなるパノラマ画像を読み出して逐次取得するパノラマ画像取得ステップと、
前記取得されたパノラマ画像において、第1の表示領域に表示する範囲を設定する第1表示範囲設定ステップと、
前記取得されたパノラマ画像において、第2の表示領域に表示する範囲を設定する第2表示範囲設定ステップと、
前記取得されたパノラマ画像のうち、前記第1表示範囲設定ステップにおいて設定された範囲を前記第1の表示領域に逐次表示する第1表示制御ステップと、
前記取得されたパノラマ画像のうち、前記第2表示範囲設定ステップにおいて設定された範囲を前記第2の表示領域に逐次表示する第2表示制御ステップとを含む、情報処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18A】
【図18B】
【図18C】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18A】
【図18B】
【図18C】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【公開番号】特開2013−12181(P2013−12181A)
【公開日】平成25年1月17日(2013.1.17)
【国際特許分類】
【出願番号】特願2012−102613(P2012−102613)
【出願日】平成24年4月27日(2012.4.27)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.HDMI
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成25年1月17日(2013.1.17)
【国際特許分類】
【出願日】平成24年4月27日(2012.4.27)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.HDMI
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]