(57)【特許請求の範囲】
【請求項１】
可搬型表示装置本体の姿勢および／または動きに応じたデータを少なくとも出力する当該可搬型表示装置に、画像を表示することが可能な情報処理装置のコンピュータで実行される情報処理プログラムであって、
前記コンピュータを、
前記可搬型表示装置から出力されるデータに基づいて、少なくとも実空間の所定方向周りの当該可搬型表示装置の回転方向および回転量を算出する回転情報算出手段と、
前記回転情報算出手段が算出した前記所定方向周りの回転量を所定の比率で補正した前記所定方向周りの補正回転量を算出する補正手段と、
仮想世界に設定された前記所定方向に対応する方向を基準として、前記所定方向周りの回転方向および前記所定方向周りの補正回転量に基づいた操作指示方向を算出する操作指示方向算出手段と、
前記操作指示方向に応じて、仮想世界に対する所定の処理を行う操作指示方向処理手段と、
前記操作指示方向処理手段が処理を行った仮想世界の少なくとも一部を含む第１画像を生成する第１画像生成手段と、
前記第１画像を前記可搬型表示装置に表示する表示制御手段として機能させ、
前記回転情報算出手段は、前記可搬型表示装置の表示画面の奥行方向に対して垂直な実空間の水平方向を前記所定方向として、前記所定方向周り、実空間の重力方向周り、および当該所定方向に垂直な実空間の水平方向周りのそれぞれに対する前記可搬型表示装置の当該奥行方向の回転方向および回転量を算出し、
前記補正手段は、前記回転情報算出手段が算出した前記所定方向周りの全周３６０°に対応する前記所定方向周りの回転量を所定の比率で非線形変換して前記所定方向周りの補正回転量を算出するとともに、当該補正回転量が仮想世界の直上方向を越える回転量を示す場合に当該補正回転量を当該直上方向に制限して算出し、当該補正回転量が仮想世界の直下方向を越える回転量を示す場合に当該補正回転量を当該直下方向に制限して算出し、
前記操作指示方向算出手段は、前記所定方向周りの回転方向および前記所定方向周りの補正回転量に基づいて前記所定方向に対応する仮想世界の水平方向周りに前記操作指示方向を回転させ、前記重力方向周りの回転方向および前記重力方向周りの回転量に基づいて仮想世界の重力方向周りに前記操作指示方向を回転させ、前記所定方向に垂直な実空間の水平方向周りの回転方向および当該所定方向に垂直な水平方向周りの回転量に基づいて前記所定方向に対応する方向に垂直な仮想世界の水平方向周りに前記操作指示方向を回転させることによって、当該操作指示方向を算出する、情報処理プログラム。
【請求項２】
前記操作指示方向処理手段は、前記操作指示方向に応じて、仮想世界に設定された第１仮想カメラの姿勢を制御する処理を行い、
前記第１画像生成手段は、前記第１仮想カメラから見た仮想世界の画像を前記第１画像として生成する、請求項１に記載の情報処理プログラム。
【請求項３】
前記操作指示方向処理手段は、前記操作指示方向が視線方向と一致するように、前記第１仮想カメラの姿勢を制御する、請求項２に記載の情報処理プログラム。
【請求項４】
前記補正手段は、前記回転情報算出手段が算出した前記所定方向周りの上下回転量を所定の比率で拡大補正することによって、９０°未満の当該上下回転量が実質的に９０°に補正されるように前記補正回転量を算出する、請求項１に記載の情報処理プログラム。
【請求項５】
前記補正手段は、前記回転情報算出手段が算出した前記所定方向周りの前記奥行方向の回転量を、前記所定の比率で補正するとともに、当該所定方向周りに当該奥行方向を所定量オフセットして前記補正回転量を算出する、請求項１乃至３のいずれか１つに記載の情報処理プログラム。
【請求項６】
前記補正手段は、前記回転情報算出手段が算出した前記所定方向周りの前記奥行方向の回転量を、前記所定の比率で補正するとともに、当該所定方向周りに当該奥行方向を仰角方向または俯角方向に所定量オフセットして前記補正回転量を算出する、請求項１乃至５のいずれか１つに記載の情報処理プログラム。
【請求項７】
前記補正手段は、前記回転情報算出手段が算出した回転量を所定の比率で拡大補正した補正回転量を算出する、請求項１乃至６のいずれか１つに記載の情報処理プログラム。
【請求項８】
前記補正手段は、実空間における所定基準方向を基準として仰角方向および俯角方向へそれぞれ前記比率が漸増的に増大する非線形関数を用いて、前記回転情報算出手段が算出した回転量を前記補正回転量に変換する、請求項１に記載の情報処理プログラム。
【請求項９】
前記補正手段は、実空間における所定基準方向を基準として仰角方向および俯角方向へそれぞれ前記比率が漸減的に減少する非線形関数を用いて、前記回転情報算出手段が算出した回転量を前記補正回転量に変換する、請求項１に記載の情報処理プログラム。
【請求項１０】
前記補正手段は、前記回転情報算出手段が算出した回転量が第１の範囲にある場合に当該回転量を第１の関数を用いて前記補正回転量に変換し、前記回転情報算出手段が算出した回転量が第２の範囲にある場合に当該回転量を第２の関数を用いて前記補正回転量に変換する、請求項１乃至９のいずれか１つに記載の情報処理プログラム。
【請求項１１】
前記補正手段は、実空間における所定基準方向を中心として前記第１の範囲を設定し、前記第１の関数によって示される前記比率を前記第２の関数によって示される前記比率より相対的に小さく設定する、請求項１０に記載の情報処理プログラム。
【請求項１２】
前記所定基準方向は、前記補正手段が当該所定基準方向を示す回転量を前記補正回転量に補正する際、当該補正回転量が仮想世界における水平方向となる方向である、請求項８、９、または１１に記載の情報処理プログラム。
【請求項１３】
前記表示制御手段は、前記第１画像を示す画像データを前記可搬型表示装置へ出力し、
前記可搬型表示装置は、
前記情報処理装置から出力された画像データを取得する画像データ取得手段と、
前記画像データ取得手段が取得した画像データが示す前記第１画像を表示する表示手段とを備える、請求項１乃至１２のいずれか１つに記載の情報処理プログラム。
【請求項１４】
前記第１画像を示す画像データを圧縮して圧縮画像データを生成する圧縮画像生成手段として、さらに前記コンピュータを機能させ、
前記表示制御手段は、前記圧縮画像生成手段が生成した圧縮画像データを前記可搬型表示装置へ出力し、
前記画像データ取得手段は、前記情報処理装置から出力された圧縮画像データを取得し、
前記可搬型表示装置は、前記圧縮画像データを伸張して前記第１画像を示す画像データを得る表示画像伸張手段を、さらに備え、
前記表示手段は、前記画像データ取得手段が取得して前記表示画像伸長手段が伸長した画像データが示す前記第１画像を表示する、請求項１３に記載の情報処理プログラム。
【請求項１５】
前記表示制御手段は、前記第１画像とは別に、前記仮想世界を示す第２画像を、前記情報処理装置に接続された別の表示装置にさらに表示する、請求項１乃至１２のいずれか１つに記載の情報処理プログラム。
【請求項１６】
前記第１画像を示す画像データを圧縮して圧縮画像データを生成する圧縮画像生成手段として、さらに前記コンピュータを機能させ、
前記表示制御手段は、前記圧縮画像生成手段が生成した圧縮画像データを前記可搬型表示装置へ出力し、当該圧縮画像データとは別に、前記第２画像を示す画像データを圧縮することなく前記別の表示装置へ出力し、
前記可搬型表示装置は、
前記情報処理装置から出力された圧縮画像データを取得する画像データ取得手段と、
前記圧縮画像データを伸張して前記第１画像を示す画像データを得る表示画像伸張手段と、
前記画像データ取得手段が取得して前記表示画像伸長手段が伸長した画像データが示す前記第１画像を表示する表示手段とを備える、請求項１５に記載の情報処理プログラム。
【請求項１７】
前記表示制御手段は、前記第２画像を生成するための視点を、前記第１画像を生成するための視点とは異なる位置に設定する、請求項１５または１６に記載の情報処理プログラム。
【請求項１８】
前記表示制御手段は、前記第１画像を生成するための視点を含む仮想世界内の位置に前記第２画像を生成するための視点を設定し、前記第１画像で示される仮想世界の範囲より広い範囲を、前記第２画像として前記別の表示装置に表示する、請求項１５乃至１７のいずれか１つに記載の情報処理プログラム。
【請求項１９】
前記表示制御手段は、仮想世界の鉛直方向に前記第２画像を生成するための視点からの視線方向を設定して、前記第１画像を生成するための視点を鳥瞰する位置に前記第２画像を生成するための視点を設定する、請求項１５乃至１８のいずれか１つに記載の情報処理プログラム。
【請求項２０】
前記可搬型表示装置は、可搬型表示装置本体の姿勢および／または動きに応じたデータを出力するジャイロセンサおよび加速度センサの少なくとも一方を含み、
前記回転情報算出手段は、前記ジャイロセンサおよび前記加速度センサの少なくとも一方から出力されるデータに基づいて、前記可搬型表示装置の回転方向および回転量を算出する、請求項１乃至１９のいずれか１つに記載の情報処理プログラム。
【請求項２１】
可搬型表示装置本体の姿勢および／または動きに応じたデータを少なくとも出力する当該可搬型表示装置に、画像を表示することが可能な情報処理装置であって、
前記可搬型表示装置から出力されるデータに基づいて、少なくとも実空間の所定方向周りの当該可搬型表示装置の回転方向および回転量を算出する回転情報算出手段と、
前記回転情報算出手段が算出した前記所定方向周りの回転量を所定の比率で補正した前記所定方向周りの補正回転量を算出する補正手段と、
仮想世界に設定された前記所定方向に対応する方向を基準として、前記所定方向周りの回転方向および前記所定方向周りの補正回転量に基づいた操作指示方向を算出する操作指示方向算出手段と、
前記操作指示方向に応じて、仮想世界に対する所定の処理を行う操作指示方向処理手段と、
前記操作指示方向処理手段が処理を行った仮想世界の少なくとも一部を含む第１画像を生成する第１画像生成手段と、
前記第１画像を前記可搬型表示装置に表示する表示制御手段とを備え、
前記回転情報算出手段は、前記可搬型表示装置の表示画面の奥行方向に対して垂直な実空間の水平方向を前記所定方向として、前記所定方向周り、実空間の重力方向周り、および当該所定方向に垂直な実空間の水平方向周りのそれぞれに対する前記可搬型表示装置の当該奥行方向の回転方向および回転量を算出し、
前記補正手段は、前記回転情報算出手段が算出した前記所定方向周りの全周３６０°に対応する前記所定方向周りの回転量を所定の比率で非線形変換して前記所定方向周りの補正回転量を算出するとともに、当該補正回転量が仮想世界の直上方向を越える回転量を示す場合に当該補正回転量を当該直上方向に制限して算出し、当該補正回転量が仮想世界の直下方向を越える回転量を示す場合に当該補正回転量を当該直下方向に制限して算出し、
前記操作指示方向算出手段は、前記所定方向周りの回転方向および前記所定方向周りの補正回転量に基づいて前記所定方向に対応する仮想世界の水平方向周りに前記操作指示方向を回転させ、前記重力方向周りの回転方向および前記重力方向周りの回転量に基づいて仮想世界の重力方向周りに前記操作指示方向を回転させ、前記所定方向に垂直な実空間の水平方向周りの回転方向および当該所定方向に垂直な水平方向周りの回転量に基づいて前記所定方向に対応する方向に垂直な仮想世界の水平方向周りに前記操作指示方向を回転させることによって、当該操作指示方向を算出する、情報処理装置。
【請求項２２】
複数の装置が通信可能に構成され、可搬型表示装置本体の姿勢および／または動きに応じたデータを少なくとも出力する当該可搬型表示装置に画像を表示することが可能な情報処理システムであって、
前記可搬型表示装置から出力されるデータに基づいて、少なくとも実空間の所定方向周りの当該可搬型表示装置の回転方向および回転量を算出する回転情報算出手段と、
前記回転情報算出手段が算出した前記所定方向周りの回転量を所定の比率で補正した前記所定方向周りの補正回転量を算出する補正手段と、
仮想世界に設定された前記所定方向に対応する方向を基準として、前記所定方向周りの回転方向および前記所定方向周りの補正回転量に基づいた操作指示方向を算出する操作指示方向算出手段と、
前記操作指示方向に応じて、仮想世界に対する所定の処理を行う操作指示方向処理手段と、
前記操作指示方向処理手段が処理を行った仮想世界の少なくとも一部を含む第１画像を生成する第１画像生成手段と、
前記第１画像を前記可搬型表示装置に表示する表示制御手段とを備え、
前記回転情報算出手段は、前記可搬型表示装置の表示画面の奥行方向に対して垂直な実空間の水平方向を前記所定方向として、前記所定方向周り、実空間の重力方向周り、および当該所定方向に垂直な実空間の水平方向周りのそれぞれに対する前記可搬型表示装置の当該奥行方向の回転方向および回転量を算出し、
前記補正手段は、前記回転情報算出手段が算出した前記所定方向周りの全周３６０°に対応する前記所定方向周りの回転量を所定の比率で非線形変換して前記所定方向周りの補正回転量を算出するとともに、当該補正回転量が仮想世界の直上方向を越える回転量を示す場合に当該補正回転量を当該直上方向に制限して算出し、当該補正回転量が仮想世界の直下方向を越える回転量を示す場合に当該補正回転量を当該直下方向に制限して算出し、
前記操作指示方向算出手段は、前記所定方向周りの回転方向および前記所定方向周りの補正回転量に基づいて前記所定方向に対応する仮想世界の水平方向周りに前記操作指示方向を回転させ、前記重力方向周りの回転方向および前記重力方向周りの回転量に基づいて仮想世界の重力方向周りに前記操作指示方向を回転させ、前記所定方向に垂直な実空間の水平方向周りの回転方向および当該所定方向に垂直な水平方向周りの回転量に基づいて前記所定方向に対応する方向に垂直な仮想世界の水平方向周りに前記操作指示方向を回転させることによって、当該操作指示方向を算出する、情報処理システム。
【請求項２３】
可搬型表示装置本体の姿勢および／または動きに応じたデータを少なくとも出力する当該可搬型表示装置に、画像を表示することが可能な少なくとも１つの情報処理装置により構成される情報処理システムに含まれる１つのプロセッサまたは複数のプロセッサ間の協働により実行される情報処理方法であって、
前記可搬型表示装置から出力されるデータに基づいて、少なくとも実空間の所定方向周りの当該可搬型表示装置の回転方向および回転量を算出する回転情報算出ステップと、
前記回転情報算出ステップにおいて算出された前記所定方向周りの回転量を所定の比率で補正した前記所定方向周りの補正回転量を算出する補正ステップと、
仮想世界に設定された前記所定方向に対応する方向を基準として、前記所定方向周りの回転方向および前記所定方向周りの補正回転量に基づいた操作指示方向を算出する操作指示方向算出ステップと、
前記操作指示方向に応じて、仮想世界に対する所定の処理を行う操作指示方向処理ステップと、
前記操作指示方向処理ステップにおいて処理が行われた仮想世界の少なくとも一部を含
む第１画像を生成する第１画像生成ステップと、
前記第１画像を前記可搬型表示装置に表示する表示制御ステップとを含み、
前記回転情報算出ステップでは、前記可搬型表示装置の表示画面の奥行方向に対して垂直な実空間の水平方向を前記所定方向として、前記所定方向周り、実空間の重力方向周り、および当該所定方向に垂直な実空間の水平方向周りのそれぞれに対する前記可搬型表示装置の当該奥行方向の回転方向および回転量が算出され、
前記補正ステップでは、前記回転情報算出ステップにおいて算出された前記所定方向周りの全周３６０°に対応する前記所定方向周りの回転量を所定の比率で非線形変換して前記所定方向周りの補正回転量が算出されるとともに、当該補正回転量が仮想世界の直上方向を越える回転量を示す場合に当該補正回転量が当該直上方向に制限して算出され、当該補正回転量が仮想世界の直下方向を越える回転量を示す場合に当該補正回転量が当該直下方向に制限して算出され、
前記操作指示方向算出ステップでは、前記所定方向周りの回転方向および前記所定方向周りの補正回転量に基づいて前記所定方向に対応する仮想世界の水平方向周りに前記操作指示方向を回転させ、前記重力方向周りの回転方向および前記重力方向周りの回転量に基づいて仮想世界の重力方向周りに前記操作指示方向を回転させ、前記所定方向に垂直な実空間の水平方向周りの回転方向および当該所定方向に垂直な水平方向周りの回転量に基づいて前記所定方向に対応する方向に垂直な仮想世界の水平方向周りに前記操作指示方向を回転させることによって、当該操作指示方向が算出される、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法に関し、特に例えば、仮想世界を表示する処理を行う情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法に関する。
【背景技術】
【０００２】
従来、ユーザが移動携帯端末（携帯型ゲーム装置）を把持して操作し、実空間における当該移動携帯端末の姿勢や位置に応じてイベントが実行されるゲームがある（例えば、特許文献１参照）。上記特許文献１に記載された移動携帯端末は、実空間における当該移動携帯端末の位置や姿勢を検出するセンサを備えており、当該端末のユーザは、移動携帯端末自体を動かしたり移動携帯端末自体の姿勢を変えたりしながらゲームを進める。例えば、実空間において、移動携帯端末の左右方向（すなわち、移動携帯端末の表示画面の長辺に平行な方向）周りの回転が検出された場合、当該回転の方向および回転量に応じて、当該表示画面に表示される仮想世界の視点が上下に変化する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１９８１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１で開示された移動携帯端末は、当該移動携帯端末自体の回転を検出して、その回転方向および量に応じて視点を制御している。したがって、移動携帯端末自体の姿勢変化によって変化する視点は、検出された回転方向に対応する方向に、回転した量に応じた距離だけ移動するように制御される。つまり、仮想世界の真上や真下に視点を移動させようとした場合、移動携帯端末自体を真上や真下に向ける必要があり、移動携帯端末の姿勢を変えるために要求される操作量が大きくなり、ユーザにとって操作が難しくなる。
【０００５】
それ故に、本発明の目的は、ユーザが把持して画面を見ることが可能な表示装置に仮想世界の画像を表示し、当該表示装置の姿勢や動きに応じて当該仮想世界に対する操作が行われる場合に、当該表示装置の姿勢や動きによる操作を容易にすることが可能な情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法を提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は例えば以下のような構成を採用し得る。なお、特許請求の範囲の記載を解釈する際に、特許請求の範囲の記載によってのみその範囲が解釈されるべきであることが理解され、特許請求の範囲の記載と本欄の記載とが矛盾する場合には、特許請求の範囲の記載が優先する。
【０００７】
本発明の情報処理プログラムの一構成例は、可搬型表示装置本体の姿勢および／または動きに応じたデータを少なくとも出力する当該可搬型表示装置に、画像を表示することが可能な情報処理装置のコンピュータで実行される。情報処理プログラムは、回転情報算出手段、補正手段、操作指示方向算出手段、操作指示方向処理手段、第１画像生成手段、および表示制御手段として、コンピュータを機能させる。回転情報算出手段は、可搬型表示装置から出力されるデータに基づいて、少なくとも実空間の所定方向周りの当該可搬型表示装置の回転方向および回転量を算出する。補正手段は、回転情報算出手段が算出した回転量を所定の比率で補正した補正回転量を算出する。操作指示方向算出手段は、仮想世界に設定された所定方向に対応する方向を基準として、回転方向および補正回転量に基づいた操作指示方向を算出する。操作指示方向処理手段は、操作指示方向に応じて、仮想世界に対する所定の処理を行う。第１画像生成手段は、操作指示方向処理手段が処理を行った仮想世界の少なくとも一部を含む第１画像を生成する。表示制御手段は、第１画像を可搬型表示装置に表示する。
【０００８】
なお、上記情報処理装置は、ゲーム処理を実行して当該ゲーム処理に基づいた画像を生成する装置であってもいいし、一般的なパーソナルコンピュータのような多用途の装置であってもよい。上記可搬型表示装置は、ユーザによって持ち運び可能なサイズであればよく、典型的にはユーザが両手で把持した姿勢で当該可搬型表示装置に表示される画像を視認できるような表示装置であってもよい。また、上記可搬型表示装置は、後述する実施形態における端末装置のように、可搬型表示装置本体の姿勢および／または動きに応じたデータを少なくとも出力する手段および第１画像を表示する手段以外の他の構成を備えていてもよいし、備えていなくてもよい。
【０００９】
上記によれば、ユーザが把持して画面を見ることが可能な可搬型表示装置に仮想世界の画像を表示し、当該可搬型表示装置の姿勢や動きに応じて当該仮想世界に対する操作が行われる場合に、当該可搬型表示装置の姿勢や動きによる操作を容易にすることができる。
【００１０】
また、上記操作指示方向処理手段は、操作指示方向に応じて、仮想世界に設定された第１仮想カメラの姿勢を制御する処理を行ってもよい。上記第１画像生成手段は、第１仮想カメラから見た仮想世界の画像を第１画像として生成してもよい。
【００１１】
上記によれば、可搬型表示装置の姿勢や動きに応じて当該可搬型表示装置に表示される仮想世界の視点および／または視線方向に対する操作が行われる場合に、当該可搬型表示装置の姿勢や動きによる操作を容易にすることができる。
【００１２】
また、上記操作指示方向処理手段は、操作指示方向が視線方向と一致するように、第１仮想カメラの姿勢を制御してもよい。
【００１３】
上記によれば、仮想カメラの姿勢が可搬型表示装置の姿勢に基づいて制御されるため、ユーザが見たい方向へ可搬型表示装置を向けることに応じて、例えば当該可搬型表示装置を介して仮想世界内を覗いているような画像をユーザに提供することができ、当該ユーザに仮想世界にいるかのような感覚を与えることができる。
【００１４】
また、上記回転情報算出手段は、可搬型表示装置の表示画面の奥行方向に対して垂直な実空間の水平方向を所定方向として、当該奥行方向の回転方向および回転量を算出してもよい。上記操作指示方向算出手段は、回転方向および補正回転量に基づいて、仮想世界の水平方向周りに回転させることによって操作指示方向を算出してもよい。
【００１５】
また、上記回転情報算出手段は、所定方向周り、実空間の重力方向周り、および当該所定方向に垂直な実空間の水平方向周りのそれぞれに対する可搬型表示装置の回転方向および回転量を算出してもよい。上記補正手段は、回転情報算出手段が算出した所定方向周りの回転量に対して補正回転量を算出してもよい。上記操作指示方向算出手段は、所定方向周りの回転方向および補正回転量に基づいて仮想世界の水平方向周りに操作指示方向を回転させ、重力方向周りの回転方向および回転量に基づいて仮想世界の重力方向周りに操作指示方向を回転させ、所定方向に垂直な実空間の水平方向周りの回転方向および回転量に基づいて仮想世界の水平方向周りに操作指示方向を回転させることによって、当該操作指示方向を算出してもよい。
【００１６】
上記によれば、実空間における上下方向への可搬型表示装置の姿勢や動きに応じて仮想世界に対する操作が行われる場合に、当該可搬型表示装置の姿勢や動きによる上下方向の操作を容易にすることができる。
【００１７】
また、上記補正手段は、回転情報算出手段が算出した所定方向周りの上下回転量を所定の比率で拡大補正することによって、９０°未満の当該上下回転量が実質的に９０°に補正されるように補正回転量を算出してもよい。
【００１８】
上記によれば、実空間における真上や真下に可搬型表示装置の奥行方向を向けなくとも、仮想世界の真上や真下方向に操作指示方向を設定することが可能となる。
【００１９】
また、上記回転情報算出手段は、可搬型表示装置本体に対して設定された方向を所定方向として、奥行方向の回転方向および回転量を算出してもよい。
【００２０】
上記によれば、可搬型表示装置本体を基準として回転量が補正されることになるため、実空間における可搬型表示装置の姿勢とは無関係に補正を行うことができる。
【００２１】
また、上記補正手段は、回転情報算出手段が算出した所定方向周りの奥行方向の回転量を、所定の比率で補正するとともに、当該所定方向周りに当該奥行方向を所定量オフセットして補正回転量を算出してもよい。
【００２２】
上記によれば、実空間における可搬型表示装置の奥行方向が所定方向周りに所定量オフセットされた方向を、仮想世界における操作指示方向に設定することができる。
【００２３】
また、上記補正手段は、回転情報算出手段が算出した所定方向周りの奥行方向の回転量を、所定の比率で補正するとともに、当該所定方向周りに当該奥行方向を仰角方向または俯角方向に所定量オフセットして補正回転量を算出してもよい。
【００２４】
上記によれば、実空間における可搬型表示装置の奥行方向が仰角方向または俯角方向に所定量オフセットされた方向を、仮想世界における操作指示方向に設定することができる。例えば、ユーザが楽な姿勢で可搬型表示装置を把持して維持した場合に設定される奥行方向が、仮想世界で主に操作指示方向として指示される方向にオフセットされるようにオフセット量を設定することによって、比較的楽な姿勢で可搬型表示装置を操作することができる。
【００２５】
また、上記補正手段は、回転情報算出手段が算出した回転量を所定の比率で拡大補正した補正回転量を算出してもよい。
【００２６】
上記によれば、可搬型表示装置の姿勢および／または動きの変化が相対的に小さい場合であっても、相対的に大きな変化で操作指示方向を変化させることができるため、少ない動作での操作が可能となり、ユーザの操作負担が軽減される。
【００２７】
また、上記補正手段は、回転情報算出手段が算出した回転量を所定の比率で線形変換して補正回転量を算出してもよい。
【００２８】
上記によれば、可搬型表示装置の姿勢および／または動きの変化を線形変換して操作指示方向を変化させるため、直感的な可搬型表示装置を用いた操作が可能となる。
【００２９】
また、上記補正手段は、回転情報算出手段が算出した回転量を所定の比率で非線形変換して補正回転量を算出してもよい。
【００３０】
上記によれば、可搬型表示装置の姿勢および／または動きの変化を非線形変換して操作指示方向を変化させるため、非線形変換の設定に応じて、可搬型表示装置の姿勢および／または動きの変化を拡大補正して操作指示方向を変化させたり、可搬型表示装置の姿勢および／または動きの変化を縮小補正して操作指示方向を変化させたりすることができ、操作環境に応じてメリハリのある操作が可能となる。
【００３１】
また、上記補正手段は、実空間における所定基準方向を基準として仰角方向および俯角方向へそれぞれ比率が漸増的に増大する非線形関数を用いて、回転情報算出手段が算出した回転量を補正回転量に変換してもよい。
【００３２】
上記によれば、所定基準方向に対応する仮想世界における方向に操作指示方向が設定されやすくなるとともに、当該方向から離れる方向への操作に対して操作指示方向の変化が漸増的に加速するような操作環境を生成することができる。
【００３３】
また、上記補正手段は、実空間における所定基準方向を基準として仰角方向および俯角方向へそれぞれ比率が漸減的に減少する非線形関数を用いて、回転情報算出手段が算出した回転量を補正回転量に変換してもよい。
【００３４】
上記によれば、所定基準方向に対応する仮想世界における方向から離れた方向へ操作指示方向が設定されやすくなる操作環境を生成することができる。
【００３５】
また、上記補正手段は、回転情報算出手段が算出した回転量が第１の範囲にある場合に当該回転量を第１の関数を用いて補正回転量に変換し、回転情報算出手段が算出した回転量が第２の範囲にある場合に当該回転量を第２の関数を用いて補正回転量に変換してもよい。
【００３６】
上記によれば、回転量の範囲に応じて異なる変換関数が設定されるため、当該範囲および変換関数の設定に応じて、可搬型表示装置の姿勢および／または動きの変化を拡大補正して操作指示方向を変化させたり、可搬型表示装置の姿勢および／または動きの変化と同じまたは縮小補正して操作指示方向を変化させたりする範囲を設定することができ、操作環境に応じてメリハリのある操作が可能となる。
【００３７】
また、上記補正手段は、実空間における所定基準方向を中心として第１の範囲を設定し、第１の関数によって示される比率を第２の関数によって示される比率より相対的に小さく設定してもよい。
【００３８】
上記によれば、所定基準方向付近においてユーザ操作に応じた緻密な操作指示方向の設定が可能となり、当該方向から離れた範囲では操作指示方向の変化が相対的に大きくなるような操作環境を生成することができる。
【００３９】
また、上記所定基準方向は、補正手段が当該所定基準方向を示す回転量を補正回転量に補正する際、当該補正回転量が仮想世界における水平方向となる方向であってもよい。
【００４０】
上記によれば、仮想世界の水平方向へ操作指示方向を設定する操作を基準とした操作環境を設定することができる。
【００４１】
また、上記補正手段は、補正回転量が仮想世界の直上方向を越える回転量を示す場合、当該補正回転量を当該直上方向に制限して算出してもよい。上記補正手段は、補正回転量が仮想世界の直下方向を越える回転量を示す場合、当該補正回転量を当該直下方向に制限して算出してもよい。
【００４２】
上記によれば、仮想世界の直上または直下方向に操作指示方向を設定する操作が容易となる。
【００４３】
また、上記表示制御手段は、第１画像を示す画像データを可搬型表示装置へ出力してもよい。上記可搬型表示装置は、画像データ取得手段および表示手段を備えてもよい。画像データ取得手段は、情報処理装置から出力された画像データを取得する。表示手段は、画像データ取得手段が取得した画像データが示す第１画像を表示する。
【００４４】
上記によれば、可搬型表示装置が情報処理を実行しない、いわゆるシンクライアント端末として機能することができる。
【００４５】
また、上記情報処理プログラムは、圧縮画像生成手段として、さらにコンピュータを機能させてもよい。圧縮画像生成手段は、第１画像を示す画像データを圧縮して圧縮画像データを生成する。この場合、上記表示制御手段は、圧縮画像生成手段が生成した圧縮画像データを可搬型表示装置へ出力してもよい。上記画像データ取得手段は、情報処理装置から出力された圧縮画像データを取得してもよい。上記可搬型表示装置は、表示画像伸張手段を、さらに備えてもよい。表示画像伸張手段は、圧縮画像データを伸張して第１画像を示す画像データを得る。上記表示手段は、画像データ取得手段が取得して表示画像伸長手段が伸長した画像データが示す第１画像を表示してもよい。
【００４６】
上記によれば、第１画像は、圧縮されて情報処理装置から可搬型表示装置へ出力されるので、第１画像を高速に出力することができ、第１画像が生成されてから第１画像が可搬型表示装置に表示されるまでの遅延を少なくすることができる。
【００４７】
また、上記表示制御手段は、第１画像とは別に、仮想世界を示す第２画像を、情報処理装置に接続された別の表示装置にさらに表示してもよい。
【００４８】
なお、上記別の表示装置は、後述する実施形態におけるモニタ２のように情報処理装置に接続された表示装置であり、上記可搬型表示装置と別体であればよく、情報処理装置によって生成された第２画像を表示することが可能なものであればどのようなものであってもよい。例えば、上記別の表示装置は、情報処理装置と一体に（１つの筐体内に）構成されるものであってもよい。
【００４９】
上記によれば、可搬型表示装置の姿勢を変えたり動かしたりする操作に基づいた処理を行う場合に、当該処理結果が可搬型表示装置だけでなく情報処理装置に接続された別の表示装置にも表示することができる。したがって、ユーザは、例えば２つの装置に表示される画像を操作状況や好みに応じて使い分けることが可能となり、ユーザ操作に好適な画像を見ることも可能となる。また、情報処理装置に接続された別の表示装置に表示する画像を、例えばユーザとは異なる他の人が見るための画像として用いることもでき、複数の人が処理結果を見る場合にも好適な視聴環境となり得る。
【００５０】
また、上記情報処理プログラムは、圧縮画像生成手段として、さらにコンピュータを機能させてもよい。圧縮画像生成手段は、第１画像を示す画像データを圧縮して圧縮画像データを生成する。この場合、上記表示制御手段は、圧縮画像生成手段が生成した圧縮画像データを可搬型表示装置へ出力し、当該圧縮画像データとは別に、第２画像を示す画像データを圧縮することなく別の表示装置へ出力してもよい。上記可搬型表示装置は、画像データ取得手段、表示画像伸張手段、および表示手段を備えてもよい。画像データ取得手段は、情報処理装置から出力された圧縮画像データを取得する。表示画像伸張手段は、圧縮画像データを伸張して第１画像を示す画像データを得る。表示手段は、画像データ取得手段が取得して表示画像伸長手段が伸長した画像データが示す第１画像を表示する。
【００５１】
上記によれば、第１画像は、圧縮されて情報処理装置から可搬型表示装置へ出力されるので、第１画像を高速に出力することができ、第１画像が生成されてから第１画像が可搬型表示装置に表示されるまでの遅延を少なくすることができる。
【００５２】
また、上記表示制御手段は、第２画像を生成するための視点を、第１画像を生成するための視点とは異なる位置に設定してもよい。
【００５３】
上記によれば、可搬型表示装置だけでなく別の表示装置にも視点が異なる同じ仮想世界が表示される。したがって、ユーザは、可搬型表示装置を操作する際に、２つの装置に表示される画像を操作状況や好みに応じて使い分けることが可能となる。
【００５４】
また、上記表示制御手段は、第１画像を生成するための視点を含む仮想世界内の位置に第２画像を生成するための視点を設定し、第１画像で示される仮想世界の範囲より広い範囲を、第２画像として別の表示装置に表示してもよい。
【００５５】
上記によれば、可搬型表示装置に表示される仮想世界の画像より広い表示範囲の仮想世界の画像が情報処理装置に接続された別の表示装置に表示されるため、例えば仮想世界の様子をユーザに提示する際にユーザ操作において好適となる画像を、それぞれの表示装置に表示することが可能となる。
【００５６】
また、上記表示制御手段は、仮想世界の鉛直方向に第２画像を生成するための視点からの視線方向を設定して、第１画像を生成するための視点を鳥瞰する位置に第２画像を生成するための視点を設定してもよい。
【００５７】
上記によれば、可搬型表示装置には当該可搬型表示装置の姿勢に応じた仮想世界の画像が表示され、情報処理装置に接続された別の表示装置には当該仮想世界を鳥瞰した画像が表示されるため、例えば仮想世界の様子をユーザに提示する際にユーザ操作において好適となる画像を、それぞれの表示装置に表示することが可能となる。
【００５８】
また、上記可搬型表示装置は、可搬型表示装置本体の姿勢および／または動きに応じたデータを出力するジャイロセンサおよび加速度センサの少なくとも一方を含んでもよい。上記回転情報算出手段は、ジャイロセンサおよび加速度センサの少なくとも一方から出力されるデータに基づいて、可搬型表示装置の回転方向および回転量を算出してもよい。
【００５９】
上記によれば、ジャイロセンサから出力される可搬型表示装置に生じている角速度を示すデータおよび／または加速度センサから出力される可搬型表示装置に生じている加速度を示すデータを用いることによって、当該可搬型表示装置の姿勢や動きを精確に算出することができる。
【００６０】
また、本発明は、上記各手段を備える情報処理装置および情報処理システムや上記各手段で行われる動作を含む情報処理方法の形態で実施されてもよい。
【発明の効果】
【００６１】
本発明によれば、ユーザが把持して画面を見ることが可能な可搬型表示装置に仮想世界の画像を表示し、当該可搬型表示装置の姿勢や動きに応じて当該仮想世界に対する操作が行われる場合に、当該可搬型表示装置の姿勢や動きによる操作を容易にすることができる。
【図面の簡単な説明】
【００６２】
【図１】本発明の一実施形態に係るゲームシステム１の一例を示す外観図
【図２】図１のゲーム装置本体５の一例を示す機能ブロック図
【図３】図１の端末装置６の外観構成の一例を示す図
【図４】ユーザが端末装置６を把持した様子の一例を示す図
【図５】図３の端末装置６の内部構成の一例を示すブロック図
【図６】図１のボード型コントローラ９の外観の一例を示す斜視図
【図７】図６に示したボード型コントローラ９のＡ−Ａ断面図の一例を示すとともに、荷重センサ９４が配置された隅の部分が拡大表示された一例を示す図
【図８】図６のボード型コントローラ９の電気的な構成の一例を示すブロック図
【図９】端末装置６およびボード型コントローラ９を用いて操作するユーザの様子の一例を示す図
【図１０Ａ】端末装置６のＬＣＤ６１に表示される画像の一例を示す図
【図１０Ｂ】モニタ２に表示される画像の一例を示す図
【図１１】水平指示方向を示す端末装置６の姿勢の一例を示す図
【図１２】端末装置奥行方向が水平指示方向より仰角方向に向いている場合に設定される操作指示方向の一例を示す図
【図１３】端末装置奥行方向が水平指示方向より俯角方向に向いている場合に設定される操作指示方向の一例を示す図
【図１４Ａ】端末装置６の上下角度をオフセット補正およびスケーリング補正する第１の例を示すグラフの一部
【図１４Ｂ】端末装置６の上下角度をオフセット補正およびスケーリング補正する第１の例を示すグラフ全体
【図１５Ａ】端末装置６の上下角度をオフセット補正およびスケーリング補正する第２の例を示すグラフの一部
【図１５Ｂ】端末装置６の上下角度をオフセット補正およびスケーリング補正する第２の例を示すグラフ全体
【図１６Ａ】端末装置６の上下角度をオフセット補正およびスケーリング補正する第３の例を示すグラフの一部
【図１６Ｂ】端末装置６の上下角度をオフセット補正およびスケーリング補正する第３の例を示すグラフ全体
【図１７Ａ】端末装置６の上下角度をオフセット補正およびスケーリング補正する第４の例を示すグラフの一部
【図１７Ｂ】端末装置６の上下角度をオフセット補正およびスケーリング補正する第４の例を示すグラフ全体
【図１８】図１のゲーム装置本体５のメインメモリに記憶される主なデータおよびプログラムの一例を示す図
【図１９】図１のゲーム装置本体５において実行される情報処理の一例を示すフローチャート
【図２０】図１９におけるステップ４５のゲーム制御処理の一例を示すサブルーチン
【図２１】図２０におけるステップ８３のプレイヤオブジェクト設定処理の一例を示すサブルーチン
【図２２】図２１におけるステップ１２７のプレイヤオブジェクト動作設定処理の一例を示すサブルーチン
【図２３】実空間の水平面に投影した実空間基準方向および端末装置奥行方向と仮想世界の水平面に投影した仮想世界基準方向および操作指示方向との関係の一例を説明するための図
【図２４】実空間の鉛直面に投影した端末装置奥行方向および仮想世界の鉛直面に投影した操作指示方向の関係と、端末装置上方向（ロール角度）に対応する回転動作との一例を説明するための図
【発明を実施するための形態】
【００６３】
図１を参照して、本発明の一実施形態に係る情報処理プログラムを実行する情報処理装置および当該情報処理装置を含む情報処理システムについて説明する。以下、説明を具体的にするために、当該情報処理装置の一例として据置型のゲーム装置本体５を用い、ゲーム装置本体５を含むゲームシステムを用いて説明する。なお、図１は、据置型のゲーム装置３を含むゲームシステム１の一例を示す外観図である。図２は、ゲーム装置本体５の一例を示すブロック図である。以下、当該ゲームシステム１について説明する。
【００６４】
図１において、ゲームシステム１は、表示手段の一例である家庭用テレビジョン受像機（以下、モニタと記載する）２と、モニタ２に接続コードを介して接続する据置型のゲーム装置３とから構成される。モニタ２は、ゲーム装置３から出力された音声信号を音声出力するためのスピーカ２ａを備える。また、ゲーム装置３は、本願発明の情報処理プログラムの一例となるプログラム（例えば、ゲームプログラム）を記録した光ディスク４と、光ディスク４のプログラムを実行してゲーム画面をモニタ２に表示出力させるためのコンピュータを搭載したゲーム装置本体５と、端末装置６と、表示画面に表示されたオブジェクト等を操作するために必要な操作情報をゲーム装置本体５に与えるためのコントローラ７と、ボード型コントローラ９とを含む。ゲームシステム１は、端末装置６、コントローラ７、およびボード型コントローラ９の少なくとも１つを用いたゲーム操作に基づいて、ゲーム装置本体５においてゲーム処理を実行し、ゲーム処理によって得られるゲーム画像をモニタ２および／または端末装置６に表示するものである。なお、ゲーム装置本体５と端末装置６、コントローラ７、およびボード型コントローラ９とは、無線によって無線通信可能に接続される。例えば、上記無線通信は、Ｂｌｕｅｔｏｏｔｈ（登録商標）規格やＩＥＥＥ８０２．１１ｎ規格に従って実行されるが、赤外線など他の規格に従って実行されてもよい。
【００６５】
ゲーム装置本体５には、当該ゲーム装置本体５に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置本体５において実行されるための情報処理プログラム（典型的にはゲームプログラム）が記憶されている。ゲーム装置本体５の前面には、光ディスク４の挿入口が設けられている。ゲーム装置本体５は、挿入口に挿入された光ディスク４に記憶されている情報処理プログラムを読み出して実行することによってゲーム処理を実行する。
【００６６】
ゲーム装置本体５には、モニタ２が接続コードを介して接続される。モニタ２は、ゲーム装置本体５において実行されるゲーム処理によって得られるゲーム画像を表示する。モニタ２はスピーカ２ａを有しており、スピーカ２ａは、上記ゲーム処理の結果得られるゲーム音声を出力する。なお、他の実施形態においては、ゲーム装置本体５と据置型の表示装置とは一体となっていてもよい。また、ゲーム装置本体５とモニタ２との通信は無線通信であってもよい。
【００６７】
ゲーム装置本体５には、セーブデータ等のデータを固定的に記憶するバックアップメモリとして機能するフラッシュメモリ１７（図２参照）が搭載される。ゲーム装置本体５は、光ディスク４に記憶されたゲームプログラム等を実行することによって、その結果をゲーム画像としてモニタ２および／または端末装置６に表示する。ゲームプログラム等は、光ディスク４に限らず、フラッシュメモリ１７に予め記録されたものを実行するようにしてもよい。また、ゲーム装置本体５は、フラッシュメモリ１７に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をモニタ２および／または端末装置６に表示することもできる。そして、ゲーム装置３のユーザは、モニタ２および／または端末装置６に表示されたゲーム画像を見ながら、端末装置６、コントローラ７、およびボード型コントローラ９の少なくとも１つを操作することによって、ゲーム進行を楽しむことができる。
【００６８】
コントローラ７およびボード型コントローラ９は、コントローラ通信モジュール１９を内蔵するゲーム装置本体５へ、例えばＢｌｕｅｔｏｏｔｈの技術を用いて操作情報等の送信データをそれぞれ無線送信する。コントローラ７は、主にモニタ２の表示画面に表示された選択肢の選択等をするための操作手段である。コントローラ７は、片手で把持可能な程度の大きさのハウジングと、当該ハウジングの表面に露出して設けられた複数個の操作ボタン（十字キー等を含む）とが設けられている。また、後述により明らかとなるが、コントローラ７は、コントローラ７から見た画像を撮像する撮像情報演算部を備えている。そして、撮像情報演算部の撮像対象の一例として、モニタ２の表示画面近傍（図１では画面の上側）に２つのＬＥＤモジュール（以下、マーカと記載する）８Ｌおよび８Ｒが設置される。詳細は後述するが、ユーザ（プレイヤ）は、コントローラ７を動かすゲーム操作を行うことができ、マーカ８は、コントローラ７の動きや位置や姿勢等をゲーム装置本体５が算出するために用いられる。マーカ８は、その両端に２つのマーカ８Ｌおよび８Ｒを備えている。マーカ８Ｒ（マーカ８Ｌも同様）は、具体的には１以上の赤外ＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）であり、モニタ２の前方に向かって赤外光を出力する。マーカ８はゲーム装置本体５に接続されており、ゲーム装置本体５はマーカ８が備える各赤外ＬＥＤの点灯を制御することが可能である。なお、マーカ８は可搬型であり、ユーザはマーカ８を自由な位置に設置することができる。図１ではマーカ８がモニタ２の上に設置された態様を表しているが、マーカ８を設置する位置および向きは任意である。また、コントローラ７は、ゲーム装置本体５のコントローラ通信モジュール１９から無線送信された送信データを通信部で受信して、当該送信データに応じた音や振動を発生させることもできる。
【００６９】
なお、他の実施形態においてはコントローラ７および／またはボード型コントローラ９とゲーム装置本体５とは有線で接続されてもよい。また、本実施形態では、ゲームシステム１に含まれるコントローラ７およびボード型コントローラ９はそれぞれ１つとするが、ゲーム装置本体５は複数のコントローラ７および複数のボード型コントローラ９と通信可能であり、所定台数のコントローラ７およびボード型コントローラ９をそれぞれ同時に使用することによって複数人でゲームをプレイすることが可能である。
【００７０】
コントローラ７は、例えばプラスチック成型によって形成されたハウジングを有しており、当該ハウジングに複数の操作部（操作ボタン）が設けられている。そして、コントローラ７は、操作部に対する入力状態（各操作ボタンが押下されたか否か）を示す操作データをゲーム装置本体５に送信する。
【００７１】
また、コントローラ７は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別することによってその領域の重心位置やサイズなどを算出する撮像情報演算部を有している。例えば、撮像情報演算部は、コントローラ７のハウジングに固設された撮像手段を有し、端末装置６のマーカ部６５および／またはマーカ８等の赤外光を出力するマーカを撮像対象としている。そして、撮像情報演算部は、撮像手段が撮像した撮像画像内における撮像対象の位置を算出し、算出された位置を示すマーカ座標データをゲーム装置本体５に送信する。このマーカ座標データは、コントローラ７自体の向き（傾斜角度）や位置に対応して変化するので、ゲーム装置本体５はこのマーカ座標データを用いてコントローラ７の向きや位置を算出することができる。
【００７２】
さらに、コントローラ７は、加速度センサおよび／またはジャイロセンサを内蔵している。加速度センサは、コントローラ７に生じる加速度（重力加速度を含む）を検出し、検出した加速度を示す加速度データをゲーム装置本体５に送信する。加速度センサが検出した加速度は、コントローラ７自体の向き（傾斜角度）や動きに対応して変化するので、ゲーム装置本体５は取得された加速度データを用いてコントローラ７の向きや動きを算出することができる。ジャイロセンサは、コントローラ７に設定された３軸回りの角速度をそれぞれ検出し、検出した角速度を示す角速度データをゲーム装置本体５に送信する。ジャイロセンサが検出した角速度は、コントローラ７自体の向き（傾斜角度）や動きに対応して変化するので、ゲーム装置本体５は取得された角速度データを用いてコントローラ７の向きや動きを算出することができる。このように、ユーザは、コントローラ７に設けられた操作部を押下すること、およびコントローラ７自体を動かしてその位置や姿勢（傾き）を変えることによってゲーム操作を行うことができる。
【００７３】
コントローラ７には、スピーカおよびバイブレータが設けられている。コントローラ７は、ゲーム装置本体５から送信されたサウンドデータを処理し、当該サウンドデータに応じた音声をスピーカから出力させる。また、コントローラ７は、ゲーム装置本体５から送信された振動データを処理し、当該振動データに応じてバイブレータを作動させて振動を発生させる。なお、後述する本発明の実施形態においては、コントローラ７を用いることなくゲームをプレイすることが可能である。ボード型コントローラ９の詳細な構成については後述する。
【００７４】
端末装置６は、ユーザが把持可能な程度の大きさであり、ユーザは端末装置６を手に持って動かしたり、あるいは、端末装置６を自由な位置に配置したりして使用することが可能な可搬型の装置である。詳細な構成は後述するが、端末装置６は、表示手段であるＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）６１、および入力手段（後述するタッチパネル６２やジャイロセンサ６０４等）を備える。端末装置６とゲーム装置本体５（端末通信モジュール２８（図２参照））とは無線（有線であってもよい）によって通信可能である。端末装置６は、ゲーム装置本体５で生成された画像（例えばゲーム画像）のデータをゲーム装置本体５から受信し、当該データが示す画像をＬＣＤ６１に表示する。なお、本実施形態では表示装置としてＬＣＤを用いているが、端末装置６は、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置等、他の任意の表示装置を有していてもよい。また、端末装置６は、端末通信モジュール２８を内蔵するゲーム装置本体５へ、自機に対して行われた操作の内容を表す操作データを送信する。
【００７５】
次に、図２を参照して、ゲーム装置本体５の内部構成について説明する。図２は、ゲーム装置本体５の構成の一例を示すブロック図である。ゲーム装置本体５は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、システムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ／Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）１３、ディスクドライブ１４、およびＡＶ−ＩＣ（Ａｕｄｉｏ  Ｖｉｄｅｏ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１５等を有する。
【００７６】
ＣＰＵ１０は、光ディスク４に記憶されたプログラムを実行することによって処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムＬＳＩ１１の内部構成については、後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたプログラムや、フラッシュメモリ１７から読み出されたプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置本体５の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ３５または外部メインメモリ１２に読み出したデータを書き込む。
【００７７】
システムＬＳＩ１１には、入出力プロセッサ（Ｉ／Ｏプロセッサ）３１、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）３２、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）３３、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）３４、および内部メインメモリ３５が設けられる。図示は省略するが、これらの構成要素３１〜３５は、内部バスによって互いに接続される。
【００７８】
ＧＰＵ３２は、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ３４は、ＧＰＵ３２がグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ３２は、ＶＲＡＭ３４に記憶されたデータを用いて画像データを作成する。なお、本実施形態においては、ゲーム装置本体５は、モニタ２に表示するゲーム画像と、端末装置６に表示するゲーム画像との両方を生成することがある。以下では、モニタ２に表示されるゲーム画像を「モニタ用ゲーム画像」と呼び、端末装置６に表示されるゲーム画像を「端末用ゲーム画像」と呼ぶことがある。
【００７９】
ＤＳＰ３３は、オーディオプロセッサとして機能し、内部メインメモリ３５や外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。なお、本実施形態においては、ゲーム音声についてもゲーム画像と同様、モニタ２のスピーカ２ａから出力するゲーム音声と、端末装置６のスピーカから出力するゲーム音声との両方が生成されることがある。以下では、モニタ２から出力されるゲーム音声を「モニタ用ゲーム音声」と呼び、端末装置６から出力されるゲーム音声を「端末用ゲーム音声」と呼ぶことがある。
【００８０】
上記のようにゲーム装置本体５において生成される画像および音声のうち、モニタ２に出力される画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、ＡＶコネクタ１６を介して、読み出した画像データをモニタ２に出力するとともに、読み出した音声データをモニタ２に内蔵されるスピーカ２ａに出力する。これによって、モニタ２に画像が表示されるとともにスピーカ２ａから音が出力される。
【００８１】
また、ゲーム装置本体５において生成される画像および音声のうち、端末装置６に出力される画像データおよび音声データは、入出力プロセッサ３１等によって端末装置６へ送信される。入出力プロセッサ３１等による端末装置６へのデータの送信については後述する。
【００８２】
入出力プロセッサ３１は、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ３１は、フラッシュメモリ１７、ネットワーク通信モジュール１８、コントローラ通信モジュール１９、拡張コネクタ２０、メモリカード用コネクタ２１、コーデックＬＳＩ２７に接続される。また、ネットワーク通信モジュール１８にはアンテナ２２が接続される。コントローラ通信モジュール１９にはアンテナ２３が接続される。コーデックＬＳＩ２７は端末通信モジュール２８に接続され、端末通信モジュール２８にはアンテナ２９が接続される。
【００８３】
ゲーム装置本体５は、インターネット等のネットワークに接続して外部情報処理装置（例えば他のゲーム装置や、各種サーバ等）と通信を行うことが可能である。すなわち、入出力プロセッサ３１は、ネットワーク通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される外部情報処理装置と通信することができる。入出力プロセッサ３１は、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データがある場合には、ネットワーク通信モジュール１８およびアンテナ２２を介して当該データをネットワークに送信する。また、入出力プロセッサ３１は、外部情報処理装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２、およびネットワーク通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０は、プログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してプログラムで利用する。フラッシュメモリ１７には、ゲーム装置本体５と外部情報処理装置との間で送受信されるデータの他、ゲーム装置本体５を利用してプレイしたゲームのセーブデータ（処理の結果データまたは途中データ）が記憶されてもよい。また、フラッシュメモリ１７には、ゲームプログラム等のプログラムが記憶されてもよい。
【００８４】
また、ゲーム装置本体５は、コントローラ７および／またはボード型コントローラ９からの操作データを受信することが可能である。すなわち、入出力プロセッサ３１は、アンテナ２３およびコントローラ通信モジュール１９を介して、コントローラ７および／またはボード型コントローラ９から送信される操作データ等を受信し、内部メインメモリ３５または外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。なお、内部メインメモリ３５には、外部メインメモリ１２と同様に、光ディスク４から読み出されたプログラムや、フラッシュメモリ１７から読み出されたプログラムを記憶したり、各種データを記憶したりしてもよく、ＣＰＵ１０のワーク領域やバッファ領域として用いられてもかまわない。
【００８５】
また、ゲーム装置本体５は、端末装置６との間で画像や音声等のデータを送受信することが可能である。入出力プロセッサ３１は、端末装置６へゲーム画像（端末用ゲーム画像）を送信する場合、ＧＰＵ３２が生成したゲーム画像のデータをコーデックＬＳＩ２７へ出力する。コーデックＬＳＩ２７は、入出力プロセッサ３１からの画像データに対して所定の圧縮処理を行う。端末通信モジュール２８は、端末装置６との間で無線通信を行う。したがって、コーデックＬＳＩ２７によって圧縮された画像データは、端末通信モジュール２８によってアンテナ２９を介して端末装置６へ送信される。なお、本実施形態では、ゲーム装置本体５から端末装置６へ送信される画像データはゲームに用いるものであり、ゲームにおいては表示される画像に遅延が生じるとゲームの操作性に悪影響が出る。そのため、ゲーム装置本体５から端末装置６への画像データの送信に関しては、できるだけ遅延が生じないようにすることが好ましい。したがって、本実施形態では、コーデックＬＳＩ２７は、例えばＨ．２６４規格といった高効率の圧縮技術を用いて画像データを圧縮する。なお、それ以外の圧縮技術を用いてもよいし、通信速度が十分である場合には無圧縮で画像データを送信する構成であってもよい。また、端末通信モジュール２８は、例えばＷｉ−Ｆｉの認証を受けた通信モジュールであり、例えばＩＥＥＥ８０２．１１ｎ規格で採用されるＭＩＭＯ（Ｍｕｌｔｉｐｌｅ  Ｉｎｐｕｔ  Ｍｕｌｔｉｐｌｅ  Ｏｕｔｐｕｔ）の技術を用いて端末装置６との間の無線通信を高速に行うようにしてもよいし、他の通信方式を用いてもよい。
【００８６】
また、ゲーム装置本体５は、画像データの他、音声データを端末装置６へ送信する。すなわち、入出力プロセッサ３１は、ＤＳＰ３３が生成した音声データを、コーデックＬＳＩ２７を介して端末通信モジュール２８へ出力する。コーデックＬＳＩ２７は、音声データに対しても画像データと同様に圧縮処理を行う。音声データに対する圧縮の方式は、どのような方式であってもよいが、圧縮率が高く、音声の劣化が少ない方式が好ましい。また、他の実施形態においては、音声データは圧縮されずに送信されてもよい。端末通信モジュール２８は、圧縮された画像データおよび音声データを、アンテナ２９を介して端末装置６へ送信する。
【００８７】
さらに、ゲーム装置本体５は、上記画像データおよび音声データの他に、必要に応じて各種の制御データを端末装置６へ送信する。制御データは、端末装置６が備える構成要素に対する制御指示を表すデータであり、例えばマーカ部（図５に示すマーカ部６５）の点灯を制御する指示や、カメラ（図５に示すカメラ６６）の撮像を制御する指示等を表す。入出力プロセッサ３１は、ＣＰＵ１０の指示に応じて制御データを端末装置６へ送信する。なお、この制御データに関して、本実施形態ではコーデックＬＳＩ２７はデータの圧縮処理を行わないが、他の実施形態においては圧縮処理を行うようにしてもよい。なお、ゲーム装置本体５から端末装置６へ送信される上述のデータは、必要に応じて暗号化がされていてもよいし、されていなくてもよい。
【００８８】
また、ゲーム装置本体５は、端末装置６から各種データを受信可能である。詳細は後述するが、本実施形態では、端末装置６は、操作データ、画像データ、および音声データを送信する。端末装置６から送信される各データは、アンテナ２９を介して端末通信モジュール２８によって受信される。ここで、端末装置６からの画像データおよび音声データは、ゲーム装置本体５から端末装置６への画像データおよび音声データと同様の圧縮処理が施されている。したがって、これら画像データおよび音声データについては、端末通信モジュール２８からコーデックＬＳＩ２７に送られ、コーデックＬＳＩ２７によって伸張処理が施されて入出力プロセッサ３１に出力される。一方、端末装置６からの操作データに関しては、画像や音声に比べてデータ量が少ないので、圧縮処理が施されていなくともよい。また、必要に応じて暗号化がされていてもよいし、されていなくてもよい。したがって、操作データは、端末通信モジュール２８で受信された後、コーデックＬＳＩ２７を介して入出力プロセッサ３１に出力される。入出力プロセッサ３１は、端末装置６から受信したデータを、内部メインメモリ３５または外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００８９】
また、ゲーム装置本体５は、他の機器や外部記憶媒体に接続することが可能である。すなわち、入出力プロセッサ３１には、拡張コネクタ２０およびメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインタフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによってネットワーク通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ３１は、拡張コネクタ２０やメモリカード用コネクタ２１を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００９０】
ゲーム装置本体５（例えば、前部主面）には、電源ボタン２４、リセットボタン２５、光ディスク４を脱着する投入口、およびゲーム装置本体５の投入口から光ディスク４を取り出すイジェクトボタン２６等が設けられている。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置本体５の各構成要素に対して電力が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置本体５の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００９１】
なお、他の実施形態においては、ゲーム装置本体５が備える各構成要素のうちでいくつかの構成要素は、ゲーム装置本体５とは別体の拡張機器として構成されてもよい。このとき、拡張機器は、例えば拡張コネクタ２０を介してゲーム装置本体５と接続されるようにしてもよい。具体的には、拡張機器は、例えばコーデックＬＳＩ２７、端末通信モジュール２８、およびアンテナ２９の各構成要素を備えており、拡張コネクタ２０に対して着脱可能であってもよい。これによれば、上記各構成要素を備えていないゲーム装置本体に対して上記拡張機器を接続することによって、当該ゲーム装置本体を端末装置６と通信可能な構成とすることができる。
【００９２】
次に、図３〜図５を参照して、端末装置６の構成について説明する。なお、図３は、端末装置６の外観構成の一例を示す図である。図３の（ａ）部は端末装置６の正面図であり、（ｂ）部は上面図であり、（ｃ）部は右側面図であり、（ｄ）部は下面図である。図４は、ユーザが端末装置６を把持した様子の一例を示す図である。
【００９３】
図３に示されるように、端末装置６は、大略的には横長の長方形の板状形状であるハウジング６０を備える。ハウジング６０は、ユーザが把持することができる程度の大きさである。したがって、ユーザは、端末装置６を持って動かしたり、端末装置６の配置位置を変更したりすることができる。
【００９４】
端末装置６は、ハウジング６０の表面にＬＣＤ６１を有する。ＬＣＤ６１は、ハウジング６０の表面の中央付近に設けられる。したがって、ユーザは、図４に示すようにＬＣＤ６１の両側部分のハウジング６０を持つことによって、ＬＣＤ６１の画面を見ながら端末装置６を持って動かすことができる。なお、図４では、ユーザがＬＣＤ６１の左右両側の部分のハウジング６０を持つことで端末装置６を横持ちで持つ（すなわち、長辺方向を横にして端末装置６を持つ）例を示しているが、端末装置６を縦持ちで持つ（すなわち、長辺方向を縦にして端末装置６を持つ）ことも可能である。
【００９５】
図３の（ａ）部に示すように、端末装置６は、操作手段として、ＬＣＤ６１の画面上にタッチパネル６２を有する。本実施形態では、タッチパネル６２は、抵抗膜方式のタッチパネルである。ただし、タッチパネル６２は、抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。また、タッチパネル６２は、シングルタッチ方式でもよいし、マルチタッチ方式であってもよい。本実施形態では、タッチパネル６２として、ＬＣＤ６１の解像度と同解像度（検出精度）のものを利用する。ただし、必ずしもタッチパネル６２の解像度とＬＣＤ６１の解像度とが一致している必要はない。タッチパネル６２に対する入力は、通常タッチペンを用いて行われるが、タッチペンに限らずユーザの指でタッチパネル６２に対する入力をすることも可能である。なお、ハウジング６０には、タッチパネル６２に対する操作を行うために用いられるタッチペンを収納するための収納穴が設けられていてもよい。このように、端末装置６がタッチパネル６２を備えているため、ユーザは、端末装置６を動かしながらタッチパネル６２を操作することができる。つまり、ユーザは、ＬＣＤ６１の画面を動かしつつ、その画面に対して直接（タッチパネル６２によって）入力を行うことができる。
【００９６】
図３に示すように、端末装置６は、操作手段として、２つのアナログスティック６３Ａおよび６３Ｂと、複数の操作ボタン６４Ａ〜６４Ｌとを備えている。各アナログスティック６３Ａおよび６３Ｂは、方向を指示するデバイスである。各アナログスティック６３Ａおよび６３Ｂは、ユーザの指で操作されるスティック部がハウジング６０の表面に対して任意の方向（上下左右および斜め方向の任意の角度）にスライドまたは傾倒することができるように構成されている。また、左アナログスティック６３Ａは、ＬＣＤ６１の画面の左側に、右アナログスティック６３Ｂは、ＬＣＤ６１の画面の右側にそれぞれ設けられる。したがって、ユーザは、左右いずれの手でもアナログスティック６３Ａまたは６３Ｂを用いて方向を指示する入力を行うことができる。また、図４に示すように、各アナログスティック６３Ａおよび６３Ｂは、ユーザが端末装置６の左右部分を把持した状態で操作可能な位置に設けられるので、ユーザは、端末装置６を持って動かす場合においても各アナログスティック６３Ａおよび６３Ｂを容易に操作することができる。
【００９７】
各操作ボタン６４Ａ〜６４Ｌは、所定の入力を行うための操作手段である。以下に示すように、各操作ボタン６４Ａ〜６４Ｌは、ユーザが端末装置６の左右部分を把持した状態で操作可能な位置に設けられる（図４参照）。したがって、ユーザは、端末装置６を持って動かす場合においてもこれらの操作手段を容易に操作することができる。
【００９８】
図３の（ａ）部に示すように、ハウジング６０の表面には、各操作ボタン６４Ａ〜６４Ｌのうち、十字ボタン（方向入力ボタン）６４Ａと、操作ボタン６４Ｂ〜６４Ｈとが設けられる。これらの操作ボタン６４Ａ〜６４Ｇは、ユーザの親指で操作可能な位置に配置されている（図４参照）。
【００９９】
十字ボタン６４Ａは、ＬＣＤ６１の左側であって、左アナログスティック６３Ａの下側に設けられる。つまり、十字ボタン６４Ａは、ユーザの左手で操作可能な位置に配置されている。十字ボタン６４Ａは、十字の形状を有しており、上下左右の方向を指示することが可能なボタンである。また、操作ボタン６４Ｂ〜６４Ｄは、ＬＣＤ６１の下側に設けられる。これら３つの操作ボタン６４Ｂ〜６４Ｄは、左右両方の手で操作可能な位置に配置されている。また、４つの操作ボタン６４Ｅ〜６４Ｈは、ＬＣＤ６１の右側であって、右アナログスティック６３Ｂの下側に設けられる。つまり、４つの操作ボタン６４Ｅ〜６４Ｈは、ユーザの右手で操作可能な位置に配置されている。さらに、４つの操作ボタン６４Ｅ〜６４Ｈは、（４つの操作ボタン６４Ｅ〜６４Ｈの中心位置に対して）上下左右の位置関係となるように配置されている。したがって、端末装置６は、ユーザに上下左右の方向を指示させるためのボタンとして４つの操作ボタン６４Ｅ〜６４Ｈを機能させることも可能である。
【０１００】
また、図３の（ａ）部、（ｂ）部、および（ｃ）部に示すように、第１Ｌボタン６４Ｉおよび第１Ｒボタン６４Ｊは、ハウジング６０の斜め上部分（左上部分および右上部分）に設けられる。具体的には、第１Ｌボタン６４Ｉは、板状のハウジング６０における上側の側面の左端に設けられ、上側および左側の側面から突設されている。また、第１Ｒボタン６４Ｊは、ハウジング６０における上側の側面の右端に設けられ、上側および右側の側面から突設されている。このように、第１Ｌボタン６４Ｉは、ユーザの左手人差し指で操作可能な位置に配置され、第１Ｒボタン６４Ｊは、ユーザの右手人差し指で操作可能な位置に配置される（図４参照）。
【０１０１】
また、図３の（ｂ）部および（ｃ）部に示すように、第２Ｌボタン６４Ｋおよび第２Ｒボタン６４Ｌは、板状のハウジング６０の裏面（すなわちＬＣＤ６１が設けられる表面の反対側の面）に突出して設けられた足部６８Ａおよび６８Ｂにそれぞれ突設される。具体的には、第２Ｌボタン６４Ｋは、ハウジング６０の裏面の左側（表面側から見たときの左側）のやや上方に設けられ、第２Ｒボタン６４Ｌは、ハウジング６０の裏面の右側（表面側から見たときの右側）のやや上方に設けられる。換言すれば、第２Ｌボタン６４Ｋは、表面に設けられる左アナログスティック６３Ａの概ね反対側の位置に設けられ、第２Ｒボタン６４Ｌは、表面に設けられる右アナログスティック６３Ｂの概ね反対側の位置に設けられる。第２Ｌボタン６４Ｋは、ユーザの左手中指で操作可能な位置に配置され、第２Ｒボタン６４Ｌは、ユーザの右手中指で操作可能な位置に配置される（図４参照）。また、第２Ｌボタン６４Ｋおよび第２Ｒボタン６４Ｌは、図３の（ｃ）部に示すように、上記足部６８Ａおよび６８Ｂの斜め上方を向く面に設けられ、斜め上方を向くボタン面を有する。ユーザが端末装置６を把持した場合には、中指が上下方向に動くと考えられるので、ボタン面を上方に向けることで、ユーザは第２Ｌボタン６４Ｋおよび第２Ｒボタン６４Ｌを押下しやすくなる。また、ハウジング６０の裏面に足部６８Ａおよび６８Ｂが設けられることにより、ユーザはハウジング６０を把持しやすくなり、かつ、足部６８Ａおよび６８Ｂに操作ボタンが設けられることで、ハウジング６０を把持したまま操作しやすくなる。
【０１０２】
なお、図３に示す端末装置６に関しては、第２Ｌボタン６４Ｋおよび第２Ｒボタン６４Ｌが裏面に設けられるので、ＬＣＤ６１の画面（ハウジング６０の表面）が上を向いた状態で端末装置６を載置させる場合、画面が完全に水平にはならない場合がある。そのため、他の実施形態においては、ハウジング６０の裏面に３つ以上の足部が形成されてもよい。これによれば、ＬＣＤ６１の画面が上を向いた状態では３つ以上の足部が床面と接するように端末装置６を載置できるので、画面が水平になるように端末装置６を載置することができる。また、着脱可能な足部を装着することで端末装置６を水平に載置可能にしてもよい。
【０１０３】
各操作ボタン６４Ａ〜６４Ｌには、ゲームプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン６４Ａおよび操作ボタン６４Ｅ〜６４Ｈは、方向指示操作や選択操作等に用いられてもよいし、各操作ボタン６４Ｂ〜６４Ｅは、決定操作やキャンセル操作等に用いられてもよい。
【０１０４】
なお、図示しないが、端末装置６は、端末装置６の電源をオン／オフするための電源ボタンを有している。また、端末装置６は、ＬＣＤ６１の画面表示をオン／オフするための操作ボタンや、ゲーム装置本体５との接続設定（ペアリング）を行うための操作ボタンや、スピーカ（図５に示すスピーカ６０７）の音量を調節するための操作ボタンを有していてもよい。
【０１０５】
図３の（ａ）部に示すように、端末装置６は、マーカ６５Ａおよびマーカ６５Ｂからなるマーカ部（図５に示すマーカ部６５）をハウジング６０の表面に備えている。一例として、マーカ部６５は、ＬＣＤ６１の上側に設けられる。マーカ６５Ａおよびマーカ６５Ｂは、マーカ８のマーカ８Ｌおよび８Ｒと同様、それぞれ１以上の赤外ＬＥＤで構成される。マーカ部６５は、上述したマーカ８と同様、マーカ部６５に対するコントローラ７の動き等をゲーム装置本体５が算出するために用いられる。また、ゲーム装置本体５は、マーカ部６５が備える各赤外ＬＥＤの点灯を制御することが可能である。
【０１０６】
端末装置６は、撮像手段であるカメラ６６を備えている。カメラ６６は、所定の解像度を有する撮像素子（例えば、ＣＣＤイメージセンサやＣＭＯＳイメージセンサ等）と、レンズとを含む。例えば、カメラ６６は、ハウジング６０の表面に設けられる。したがって、カメラ６６は、端末装置６を持っているユーザの顔を撮像することができ、一例としてＬＣＤ６１を見ながらゲームを行っている状態におけるユーザを撮像することができる。
【０１０７】
なお、端末装置６は、音声入力手段であるマイク（図５に示すマイク６０９）を備えている。ハウジング６０の表面には、マイクロフォン用孔６０ｂが設けられる。マイク６０９は、マイクロフォン用孔６０ｂの内側となるハウジング６０内部に設けられる。マイク６０９は、ユーザの音声等、端末装置６の周囲の音を検出する。
【０１０８】
端末装置６は、音声出力手段であるスピーカ（図５に示すスピーカ６０７）を備えている。図３の（ｄ）部に示すように、ハウジング６０の下側側面にはスピーカ孔６０ａが設けられる。スピーカ６０７の出力音は、スピーカ孔６０ａから出力される。本実施形態では、端末装置６は、２つのスピーカを備えており、左スピーカおよび右スピーカのそれぞれの位置にスピーカ孔６０ａが設けられる。
【０１０９】
また、端末装置６は、他の装置を端末装置６に接続するための拡張コネクタ６７を備えている。本実施形態においては、図３の（ｄ）部に示すように、拡張コネクタ６７は、ハウジング６０の下側側面に設けられる。なお、拡張コネクタ６７に接続される他の装置はどのようなものであってもよく、例えば、特定のゲームに用いるコントローラ（銃型のコントローラ等）やキーボード等の入力装置であってもよい。他の装置を接続する必要がなければ、拡張コネクタ６７は設けられていなくともよい。
【０１１０】
なお、図３に示した端末装置６に関して、各操作ボタンやハウジング６０の形状や、各構成要素の数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。
【０１１１】
次に、図５を参照して、端末装置６の内部構成について説明する。図５は、端末装置６の内部構成の一例を示すブロック図である。図５に示すように、端末装置６は、図３に示した構成の他、タッチパネルコントローラ６０１、磁気センサ６０２、加速度センサ６０３、ジャイロセンサ６０４、ユーザインタフェースコントローラ（ＵＩコントローラ）６０５、コーデックＬＳＩ６０６、スピーカ６０７、サウンドＩＣ６０８、マイク６０９、無線モジュール６１０、アンテナ６１１、赤外線通信モジュール６１２、フラッシュメモリ６１３、電源ＩＣ６１４、電池６１５、およびバイブレータ６１９を備える。これらの電子部品は、電子回路基板上に実装されてハウジング６０内に収納される。
【０１１２】
ＵＩコントローラ６０５は、各種の入出力部に対するデータの入出力を制御するための回路である。ＵＩコントローラ６０５は、タッチパネルコントローラ６０１、アナログスティック６３（アナログスティック６３Ａおよび６３Ｂ）、操作ボタン６４（各操作ボタン６４Ａ〜６４Ｌ）、マーカ部６５、磁気センサ６０２、加速度センサ６０３、ジャイロセンサ６０４、およびバイブレータ６１９に接続される。また、ＵＩコントローラ６０５は、コーデックＬＳＩ６０６と拡張コネクタ６７とに接続される。また、ＵＩコントローラ６０５には電源ＩＣ６１４が接続され、ＵＩコントローラ６０５を介して各部に電力が供給される。電源ＩＣ６１４には内蔵の電池６１５が接続され、電力が供給される。また、電源ＩＣ６１４には、コネクタ等を介して外部電源から電力を取得可能な充電器６１６またはケーブルを接続することが可能であり、端末装置６は、充電器６１６またはケーブルを用いて外部電源からの電力供給と充電とを行うことができる。なお、端末装置６は、図示しない充電機能を有するクレイドルに端末装置６を装着することで充電を行うようにしてもよい。
【０１１３】
タッチパネルコントローラ６０１は、タッチパネル６２に接続され、タッチパネル６２の制御を行う回路である。タッチパネルコントローラ６０１は、タッチパネル６２からの信号に基づいて所定の形式のタッチ位置データを生成してＵＩコントローラ６０５へ出力する。タッチ位置データは、タッチパネル６２の入力面において入力が行われた位置の座標を表す。なお、タッチパネルコントローラ６０１は、タッチパネル６２からの信号の読み込み、および、タッチ位置データの生成を所定時間に１回の割合で行う。また、ＵＩコントローラ６０５からタッチパネルコントローラ６０１へは、タッチパネル６２に対する各種の制御指示が出力される。
【０１１４】
アナログスティック６３は、ユーザの指で操作されるスティック部がスライドした（または傾倒した）方向および量を表すスティックデータをＵＩコントローラ６０５へ出力する。また、操作ボタン６４は、各操作ボタン６４Ａ〜６４Ｌに対する入力状況（押下されたか否か）を表す操作ボタンデータをＵＩコントローラ６０５へ出力する。
【０１１５】
磁気センサ６０２は、磁界の大きさおよび方向を検知することで方位を検出する。検出された方位を示す方位データは、ＵＩコントローラ６０５へ出力される。また、ＵＩコントローラ６０５から磁気センサ６０２へは、磁気センサ６０２に対する制御指示が出力される。磁気センサ６０２に関しては、ＭＩ（磁気インピーダンス）素子、フラックスゲートセンサ、ホール素子、ＧＭＲ（巨大磁気抵抗）素子、ＴＭＲ（トンネル磁気抵抗）素子、あるいはＡＭＲ（異方性磁気抵抗）素子等を用いたセンサがあるが、方位を検出することができればどのようなものが用いられてもよい。なお、厳密には、地磁気以外に磁界が発生している場所においては、得られた方位データは方位を示さないことになるが、そのような場合であっても、端末装置６が動いた場合には方位データが変化するため、端末装置６の姿勢の変化を算出することができる。
【０１１６】
加速度センサ６０３は、ハウジング６０の内部に設けられ、３軸（図３の（ａ）部に示すｘｙｚ軸）方向に沿った直線加速度の大きさを検出する。具体的には、加速度センサ６０３は、ハウジング６０の長辺方向をｘ軸（マーカ部６５がＬＣＤ６１の上側に配置された状態でＬＣＤ６１の表示画面に向かって当該長辺方向に沿った右方向をｘ軸正方向とする）、ハウジング６０の短辺方向をｙ軸（マーカ部６５がＬＣＤ６１の上側に配置された状態でＬＣＤ６１の表示画面に向かって当該短辺方向に沿った上方向をｙ軸正方向とする）、ハウジング６０の表面に対して垂直な方向をｚ軸（ＬＣＤ６１の表示画面奥行方向をｚ軸正方向とする）として、各軸の直線加速度の大きさを検出する。検出された加速度を表す加速度データはＵＩコントローラ６０５へ出力される。また、ＵＩコントローラ６０５から加速度センサ６０３へは、加速度センサ６０３に対する制御指示が出力される。加速度センサ６０３は、本実施形態では例えば静電容量式のＭＥＭＳ型加速度センサであるとするが、他の実施形態においては他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ６０３は１軸または２軸方向を検出する加速度センサであってもよい。
【０１１７】
ジャイロセンサ６０４は、ハウジング６０の内部に設けられ、上記ｘ軸、ｙ軸、およびｚ軸の３軸周りの角速度をそれぞれ検出する。検出された角速度を表す角速度データは、ＵＩコントローラ６０５へ出力される。また、ＵＩコントローラ６０５からジャイロセンサ６０４へは、ジャイロセンサ６０４に対する制御指示が出力される。なお、３軸の角速度を検出するために用いられるジャイロセンサの数および組み合わせはどのようなものであってもよく、ジャイロセンサ６０４は、２軸ジャイロセンサと１軸ジャイロセンサとで構成されてもよい。また、ジャイロセンサ６０４は１軸または２軸方向を検出するジャイロセンサであってもよい。
【０１１８】
バイブレータ６１９は、例えば振動モータやソレノイドであり、ＵＩコントローラ６０５と接続される。ＵＩコントローラ６０５からバイブレータ６１９へ出力される制御指示に応じて、バイブレータ６１９が作動することによって端末装置６に振動が発生する。これによって、端末装置６を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。
【０１１９】
ＵＩコントローラ６０５は、上記の各構成要素から受け取ったタッチ位置データ、スティックデータ、操作ボタンデータ、方位データ、加速度データ、および角速度データを含む操作データをコーデックＬＳＩ６０６に出力する。なお、拡張コネクタ６７を介して端末装置６に他の装置が接続される場合には、当該他の装置に対する操作を表すデータが上記操作データにさらに含まれていてもよい。
【０１２０】
コーデックＬＳＩ６０６は、ゲーム装置本体５へ送信するデータに対する圧縮処理、およびゲーム装置本体５から送信されたデータに対する伸張処理を行う回路である。コーデックＬＳＩ６０６には、ＬＣＤ６１、カメラ６６、サウンドＩＣ６０８、無線モジュール６１０、フラッシュメモリ６１３、および赤外線通信モジュール６１２が接続される。また、コーデックＬＳＩ６０６は、ＣＰＵ６１７と内部メモリ６１８とを含む。例えば、端末装置６は、ゲーム処理自体を行わない構成であるが、端末装置６の管理や通信のための最小限のプログラムを実行する必要がある。一例として、電源投入時にフラッシュメモリ６１３に格納されたプログラムを内部メモリ６１８に読み出してＣＰＵ６１７が実行することで、端末装置６が起動する。また、内部メモリ６１８の一部の領域は、ＬＣＤ６１のためのＶＲＡＭとして使用される。
【０１２１】
カメラ６６は、ゲーム装置本体５からの指示に従って画像を撮像し、撮像した画像データをコーデックＬＳＩ６０６へ出力する。また、コーデックＬＳＩ６０６からカメラ６６へは、画像の撮像指示等、カメラ６６に対する制御指示が出力される。なお、カメラ６６は、動画の撮影も可能である。すなわち、カメラ６６は、繰り返し撮像を行って画像データをコーデックＬＳＩ６０６へ繰り返し出力することも可能である。
【０１２２】
サウンドＩＣ６０８は、スピーカ６０７およびマイク６０９に接続され、スピーカ６０７およびマイク６０９への音声データの入出力を制御する回路である。すなわち、コーデックＬＳＩ６０６から音声データを受け取った場合、サウンドＩＣ６０８は、当該音声データに対してＤ／Ａ変換を行って得られる音声信号をスピーカ６０７へ出力し、スピーカ６０７から音を出力させる。また、マイク６０９は、端末装置６に伝わる音（ユーザの音声等）を検知して、当該音を示す音声信号をサウンドＩＣ６０８へ出力する。サウンドＩＣ６０８は、マイク６０９からの音声信号に対してＡ／Ｄ変換を行い、所定の形式の音声データをコーデックＬＳＩ６０６へ出力する。
【０１２３】
コーデックＬＳＩ６０６は、カメラ６６からの画像データ、マイク６０９からの音声データ、およびＵＩコントローラ６０５からの操作データを、端末操作データとして無線モジュール６１０を介してゲーム装置本体５へ送信する。本実施形態では、コーデックＬＳＩ６０６は、画像データおよび音声データに対して、コーデックＬＳＩ２７と同様の圧縮処理を行う。圧縮された画像データおよび音声データと上記端末操作データとは、送信データとして無線モジュール６１０に出力される。無線モジュール６１０にはアンテナ６１１が接続されており、無線モジュール６１０はアンテナ６１１を介してゲーム装置本体５へ上記送信データを送信する。無線モジュール６１０は、ゲーム装置本体５の端末通信モジュール２８と同様の機能を有している。すなわち、無線モジュール６１０は、例えばＩＥＥＥ８０２．１１ｎの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。無線モジュール６１０から送信されるデータは、必要に応じて暗号化されていてもよいし、されていなくてもよい。
【０１２４】
以上のように、端末装置６からゲーム装置本体５へ送信される送信データには、操作データ（端末操作データ）、画像データ、および音声データが含まれる。なお、拡張コネクタ６７を介して端末装置６に他の装置が接続される場合には、当該他の装置から受け取ったデータが上記送信データにさらに含まれていてもよい。また、赤外線通信モジュール６１２は、他の装置との間で例えばＩＲＤＡの規格に従った赤外線通信を行う。コーデックＬＳＩ６０６は、赤外線通信によって受信したデータを、必要に応じて上記送信データに含めてゲーム装置本体５へ送信してもよい。
【０１２５】
また、上述のように、ゲーム装置本体５から端末装置６へは、圧縮された画像データおよび音声データが送信される。これらのデータは、アンテナ６１１および無線モジュール６１０を介してコーデックＬＳＩ６０６で受信される。コーデックＬＳＩ６０６は、受信した画像データおよび音声データを伸張する。伸張された画像データは、ＬＣＤ６１へ出力され、当該画像データに応じた画像がＬＣＤ６１に表示される。また、伸張された音声データは、サウンドＩＣ６０８へ出力され、当該音声データに応じた音がスピーカ６０７から出力される。
【０１２６】
また、ゲーム装置本体５から受信されるデータに制御データが含まれる場合、コーデックＬＳＩ６０６およびＵＩコントローラ６０５は、制御データに従った制御指示を各部に行う。上述のように、制御データは、端末装置６が備える各構成要素（本実施形態では、カメラ６６、タッチパネルコントローラ６０１、マーカ部６５、各センサ６０２〜６０４、バイブレータ６１９、および赤外線通信モジュール６１２）に対する制御指示を表すデータである。本実施形態では、制御データが表す制御指示としては、上記各構成要素を動作させたり、動作を休止（停止）させたりする指示が考えられる。すなわち、ゲームで使用しない構成要素については電力消費を抑えるために休止させてもよく、その場合、端末装置６からゲーム装置本体５へ送信される送信データには、休止した構成要素からのデータが含まれないようにする。なお、マーカ部６５は、赤外ＬＥＤであるので、制御は単に電力の供給のＯＮ／ＯＦＦでよい。
【０１２７】
以上のように、端末装置６は、タッチパネル６２、アナログスティック６３、および操作ボタン６４といった操作手段を備えるが、他の実施形態においては、これらの操作手段に代えて、または、これらの操作手段とともに、他の操作手段を備える構成であってもよい。
【０１２８】
また、端末装置６は、端末装置６の動き（位置や姿勢、あるいは、位置や姿勢の変化を含む）を算出するためのセンサとして、磁気センサ６０２、加速度センサ６０３、およびジャイロセンサ６０４を備えるが、他の実施形態においては、これらのセンサのうち１つまたは２つのみを備える構成であってもよい。また、他の実施形態においては、これらのセンサに代えて、または、これらのセンサとともに、他のセンサを備える構成であってもよい。
【０１２９】
また、端末装置６は、カメラ６６およびマイク６０９を備える構成であるが、他の実施形態においては、カメラ６６およびマイク６０９を備えていなくてもよく、また、いずれか一方のみを備えていてもよい。
【０１３０】
また、端末装置６は、端末装置６とコントローラ７との位置関係（コントローラ７から見た端末装置６の位置および／または姿勢等）を算出するための構成としてマーカ部６５を備える構成であるが、他の実施形態ではマーカ部６５を備えていない構成としてもよい。また、他の実施形態では、端末装置６は、上記位置関係を算出するための構成として他の手段を備えていてもよい。例えば、他の実施形態においては、コントローラ７がマーカ部を備え、端末装置６が撮像素子を備える構成としてもよい。さらにこの場合、マーカ８は赤外ＬＥＤに代えて、撮像素子を備える構成としてもよい。
【０１３１】
次に、図６〜図８を参照して、ボード型コントローラ９の構成について説明する。なお、図６は、図１に示したボード型コントローラ９の外観の一例を示す斜視図である。図６に示されるように、ボード型コントローラ９は、ユーザがその上に乗る（ユーザの足を乗せる）台９ａ、台９ａに掛かる荷重を検出するための少なくとも４つの荷重センサ９４ａ〜９４ｄを備える。各荷重センサ９４ａ〜９４ｄは、それぞれ台９ａに内包されており（図７参照）、図６においてはそれらの配置位置がそれぞれ破線で示されている。なお、以下の説明において、４つの荷重センサ９４ａ〜９４ｄを総称して説明する場合、荷重センサ９４と記載することがある。
【０１３２】
台９ａは、略直方体に形成されており、上面視で略長方形状である。例えば、台９ａは、長方形状の短辺が３０ｃｍ程度に設定され、長辺が５０ｃｍ程度に設定される。台９ａの上面は、平坦に形成され、ユーザが両足裏をそれぞれ置いて乗るための一対の面が設定されている。具体的には、台９ａの上面には、ユーザが左足を乗せるための面（図６における左奥側に２重線で囲まれた領域）および左足を乗せるための面（図６における右手前側に２重線で囲まれた領域）がそれぞれ設定されている。そして、台９ａの４隅の側面は、例えば部分的に円柱状に張り出すように形成されている。
【０１３３】
台９ａにおいて、４つの荷重センサ９４ａ〜９４ｄは、所定の間隔を置いて配置される。当該実施例では、４つの荷重センサ９４ａ〜９４ｄは、台９ａの周縁部に、具体的には４隅にそれぞれ配置される。荷重センサ９４ａ〜９４ｄの間隔は、台９ａに対するユーザの荷重のかけ方によるゲーム操作の意図をより精度良く検出できるように適宜な値に設定される。
【０１３４】
図７は、図６に示したボード型コントローラ９のＡ−Ａ断面図の一例を示すとともに、荷重センサ９４が配置された隅の部分が拡大表示された一例を示している。図７において、台９ａは、ユーザが乗るための支持板９０と脚９２とを含む。荷重センサ９４ａ〜９４ｄは、脚９２が配置される箇所にそれぞれ設けられる。この実施例では、４つの脚９２が４隅に設けられているので、４つの荷重センサ９４ａ〜９４ｄがそれぞれ４隅に配置されることになる。脚９２は、例えばプラスチック成型によって略有底円筒状に形成されており、荷重センサ９４は、脚９２内の底面に設けられた球面部品９２ａ上に配置される。支持板９０は、荷重センサ９４を介して脚９２に支持される。
【０１３５】
支持板９０は、上面と側面上部とを形成する上層板９０ａ、下面と側面下部とを形成する下層板９０ｂ、および上層板９０ａと下層板９０ｂとの間に設けられる中層板９０ｃを含む。上層板９０ａと下層板９０ｂとは、例えばプラスチック成型により形成されており、接着等により一体化される。中層板９０ｃは、例えば１枚の金属板のプレス成型により形成されている。中層板９０ｃは、４つの荷重センサ９４ａ〜９４ｄの上に固定される。上層板９０ａは、その下面に格子状のリブ（図示しない）を有しており、当該リブを介して中層板９０ｃに支持されている。したがって、台９ａにユーザが乗ったときには、その荷重は、支持板９０および荷重センサ９４ａ〜９４ｄを介して、４つの脚９２に伝達する。図７に矢印で示したように、入力された荷重によって生じた床からの反作用は、脚９２から、球面部品９２ａ、荷重センサ９４ａ〜９４ｄ、および中層板９０ｃを介して、上層板９０ａに伝達する。
【０１３６】
荷重センサ９４は、例えば歪ゲージ（歪センサ）式ロードセルであり、入力された荷重を電気信号に変換する荷重変換器である。荷重センサ９４では、荷重入力に応じて、起歪体９５が変形して歪が生じる。この歪が、起歪体９５に貼り付けられた歪センサ９６によって電気抵抗の変化に変換され、さらに電圧変化に変換される。したがって、荷重センサ９４は、入力荷重を示す電圧信号を出力端子から出力することができる。
【０１３７】
なお、荷重センサ９４は、音叉振動式、弦振動式、静電容量式、圧電式、磁歪式、またはジャイロ式のような他の方式の荷重センサであってもよい。
【０１３８】
図６に戻って、ボード型コントローラ９には、さらに、電源ボタン９ｃが設けられる。ボード型コントローラ９が起動していない状態で電源ボタン９ｃが操作（例えば、電源ボタン９ｃの押下）されると、ボード型コントローラ９の各回路コンポーネント（図８参照）に電力が供給される。ただし、ボード型コントローラ９は、ゲーム装置本体５からの指示に従って電源オンされて各回路コンポーネントに電力供給が開始される場合もある。なお、ボード型コントローラ９は、ユーザが乗っていない状態が一定時間（例えば、３０秒）以上継続すると、自動的に電源がオフされてもよい。また、ボード型コントローラ９が起動している状態で、電源ボタン９ｃが再度操作された場合、電源がオフされて各回路コンポーネントへの電力供給が停止されてもよい。
【０１３９】
図８は、ボード型コントローラ９の電気的な構成の一例を示すブロック図である。なお、図８では、信号およびデータの流れは実線矢印で示され、電力の供給が破線矢印で示されている。
【０１４０】
図８において、ボード型コントローラ９は、その動作を制御するためのマイクロコンピュータ（マイコン）１００を含む。マイコン１００は、図示しないＣＰＵ、ＲＯＭ、およびＲＡＭ等を含み、ＣＰＵがＲＯＭに記憶されたプログラムに従ってボード型コントローラ９の動作を制御する。
【０１４１】
マイコン１００には、電源ボタン９ｃ、ＡＤコンバータ１０２、ＤＣ−ＤＣコンバータ１０４、および無線モジュール１０６が接続される。さらに、無線モジュール１０６には、アンテナ１０６ａが接続される。４つの荷重センサ９４ａ〜９４ｄは、それぞれ増幅器１０８を介してＡＤコンバータ１０２に接続される。
【０１４２】
また、ボード型コントローラ９には、各回路コンポーネントへの電力供給のために電池１１０が収容されている。他の実施例では、電池１１０に代えてＡＣアダプタをボード型コントローラ９に接続し、商用電力を各回路コンポーネントに供給するようにしてもよい。この場合、ＤＣ−ＤＣコンバータ１０４に代えて、交流を直流に変換し、直流電圧を降圧および整流する電源回路をボード型コントローラ９内に設ける必要がある。この実施例では、マイコン１００および無線モジュール１０６への電力供給は、電池１１０から直接的に行われる。つまり、マイコン１００内部の一部のコンポーネント（ＣＰＵ）と無線モジュール１０６とには、常に電池１１０からの電力が供給されており、電源ボタン９ｃがオンされたか否か、ゲーム装置本体５から電源オンを指示するコマンドが送信されたか否かを検出する。一方、荷重センサ９４ａ〜９４ｄ、ＡＤコンバータ１０２、および増幅器１０８には、ＤＣ−ＤＣコンバータ１０４を介して電池１１０からの電力が供給される。ＤＣ−ＤＣコンバータ１０４は、電池１１０からの直流電流の電圧値を異なる電圧値に変換して、荷重センサ９４ａ〜９４ｄ、ＡＤコンバータ１０２、および増幅器１０８に与える。
【０１４３】
これら荷重センサ９４ａ〜９４ｄ、ＡＤコンバータ１０２、および増幅器１０８への電力供給は、マイコン１００によるＤＣ−ＤＣコンバータ１０４の制御によって、必要に応じて行われるようにしてもよい。つまり、マイコン１００は、荷重センサ９４ａ〜９４ｄを動作させて荷重を検出する必要があると判断される場合に、ＤＣ−ＤＣコンバータ１０４を制御して、荷重センサ９４ａ〜９４ｄ、ＡＤコンバータ１０２、および増幅器１０８に電力を供給するようにしてよい。
【０１４４】
電力が供給されると、荷重センサ９４ａ〜９４ｄは、入力された荷重を示す信号をそれぞれ出力する。これらの信号は、各増幅器１０８で増幅され、ＡＤコンバータ１０２でアナログ信号からデジタルデータに変換されて、マイコン１００に入力される。荷重センサ９４ａ〜９４ｄの検出値には荷重センサ９４ａ〜９４ｄの識別情報が付与されて、いずれの荷重センサ９４ａ〜９４ｄの検出値であるかが識別可能にされる。このようにして、マイコン１００は、同一時刻における４つの荷重センサ９４ａ〜９４ｄそれぞれの荷重検出値を示すデータを取得することができる。
【０１４５】
一方、マイコン１００は、荷重センサ９４ａ〜９４ｄを動作させる必要がないと判断される場合、つまり、荷重検出タイミングでない場合、ＤＣ−ＤＣコンバータ１０４を制御して、荷重センサ９４ａ〜９４ｄ、ＡＤコンバータ１０２、および増幅器１０８への電力の供給を停止する。このように、ボード型コントローラ９は、必要な場合にだけ、荷重センサ９４ａ〜９４ｄを動作させて荷重や距離の検出を行うことができるので、荷重検出のための電力消費を抑制することができる。
【０１４６】
荷重検出が必要な場合とは、典型的には、ゲーム装置本体５（図１）が荷重データを取得したいときである。例えば、ゲーム装置本体５が荷重情報を必要とするとき、ゲーム装置本体５は、ボード型コントローラ９に対して情報取得命令を送信する。マイコン１００は、ゲーム装置本体５から情報取得命令を受信したときに、ＤＣ−ＤＣコンバータ１０４を制御して、荷重センサ９４ａ〜９４ｄ等に電力を供給し、荷重を検出する。一方、マイコン１００は、ゲーム装置本体５から情報取得命令を受信していないときには、ＤＣ−ＤＣコンバータ１０４を制御して、荷重センサ９４ａ〜９４ｄ等への電力供給を停止する。
【０１４７】
なお、マイコン１００は、一定時間ごとに荷重検出タイミングが到来すると判断して、ＤＣ−ＤＣコンバータ１０４を制御するようにしてもよい。このような周期的な荷重検出を行う場合、周期情報は、例えば、ゲーム開始時点においてゲーム装置本体５からボード型コントローラ９のマイコン１００に与えられて記憶されてもよいし、予めマイコン１００にプリインストールされてもよい。
【０１４８】
荷重センサ９４ａ〜９４ｄからの検出値を示すデータは、ボード型コントローラ９のボード操作データ（入力データ）として、マイコン１００から無線モジュール１０６およびアンテナ１０６ａを介してゲーム装置本体５に送信される。例えば、ゲーム装置本体５からの命令を受けて荷重検出を行った場合、マイコン１００は、ＡＤコンバータ１０２から荷重センサ９４ａ〜９４ｄの検出値データを受信したことに応じて、当該検出値データをゲーム装置本体５に送信する。なお、マイコン１００は、一定時間ごとに上記検出値データをゲーム装置本体５に送信するようにしてもよい。荷重の検出周期よりも送信周期が長い場合には、送信タイミングまでに検出された複数の検出タイミングの荷重値を含むデータを送信すればよい。
【０１４９】
なお、無線モジュール１０６は、ゲーム装置本体５のコントローラ通信モジュール１９と同じ無線規格（Ｂｌｕｅｔｏｏｔｈ、無線ＬＡＮなど）で通信可能にされる。したがって、ゲーム装置本体５のＣＰＵ１０は、コントローラ通信モジュール１９等を介して情報取得命令をボード型コントローラ９に送信することができる。このように、ボード型コントローラ９は、無線モジュール１０６およびアンテナ１０６ａを介して、ゲーム装置本体５からの命令を受信することができる。また、ボード型コントローラ９は、荷重センサ９４ａ〜９４ｄの荷重検出値（または荷重算出値）を含むボード操作データをゲーム装置本体５に送信することができる。
【０１５０】
例えば４つの荷重センサ９４ａ〜９４ｄで検出される４つの荷重値の単なる合計値を用いて実行されるようなゲームの場合には、ユーザはボード型コントローラ９の４つの荷重センサ９４ａ〜９４ｄに対して任意の位置をとることができる。つまり、ユーザは、台９ａの上の任意の位置に任意の向きで乗ってゲームをプレイすることができる。しかしながら、ゲームの種類によっては、４つの荷重センサ９４で検出される荷重値がユーザから見ていずれの方向の荷重値であるかを識別して処理を行う必要がある。つまり、ボード型コントローラ９の４つの荷重センサ９４とユーザとの位置関係が把握されている必要がある。この場合、例えば、４つの荷重センサ９４とユーザとの位置関係を予め規定しておき、当該所定の位置関係が得られるようにユーザが台９ａ上に乗ることが前提とされてもよい。典型的には、台９ａの中央に乗ったユーザの前後左右にそれぞれ荷重センサ９４ａ〜９４ｄが２つずつ存在するような位置関係、つまり、ユーザがボード型コントローラ９の台９ａの中央に乗った位置関係が規定される。この場合、この実施例では、ボード型コントローラ９の台９ａが平面視で矩形状に形成されるとともにその矩形の１辺（長辺）に電源ボタン９ｃが設けられているので、この電源ボタン９ｃを目印として利用して、ユーザには電源ボタン９ｃの設けられた長辺が所定の方向（前、後、左または右）に存在するようにして台９ａに乗ってもらうことを予め決めておく。このようにすれば、荷重センサ９４ａ〜９４ｄで検出される荷重値は、ユーザから見て所定の方向（右前、左前、右後および左後）の荷重値となる。したがって、ボード型コントローラ９およびゲーム装置本体５は、荷重検出値データに含まれる荷重センサ９４の識別情報と、予め設定（記憶）された荷重センサ９４のユーザに対する位置または方向を示す配置データとに基づいて、各荷重検出値がユーザから見ていずれの方向に対応するかを把握することができる。これにより、例えば前後左右の操作方向や上げている足の区別のようなユーザによるゲーム操作の意図を把握することが可能になる。
【０１５１】
次に、ゲーム装置本体５が行う具体的な処理を説明する前に、図９〜図１７Ｂを用いてゲーム装置本体５で行う情報処理の概要について説明する。なお、図９は、端末装置６およびボード型コントローラ９を用いて操作するユーザの様子の一例を示す図である。図１０Ａは、端末装置６のＬＣＤ６１に表示される画像の一例を示す図である。図１０Ｂは、モニタ２に表示される画像の一例を示す図である。図１１は、水平指示方向を示す端末装置６の姿勢の一例を示す図である。図１２は、端末装置奥行方向が水平指示方向より仰角方向に向いている場合に設定される操作指示方向の一例を示す図である。図１３は、端末装置奥行方向が水平指示方向より俯角方向に向いている場合に設定される操作指示方向の一例を示す図である。図１４Ａは、端末装置６の上下角度をオフセット補正およびスケーリング補正する第１の例を示すグラフの一部である。図１４Ｂは、端末装置６の上下角度をオフセット補正およびスケーリング補正する第１の例を示すグラフ全体である。図１５Ａは、端末装置６の上下角度をオフセット補正およびスケーリング補正する第２の例を示すグラフの一部である。図１５Ｂは、端末装置６の上下角度をオフセット補正およびスケーリング補正する第２の例を示すグラフ全体である。図１６Ａは、端末装置６の上下角度をオフセット補正およびスケーリング補正する第３の例を示すグラフの一部である。図１６Ｂは、端末装置６の上下角度をオフセット補正およびスケーリング補正する第３の例を示すグラフ全体である。図１７Ａは、端末装置６の上下角度をオフセット補正およびスケーリング補正する第４の例を示すグラフの一部である。図１７Ｂは、端末装置６の上下角度をオフセット補正およびスケーリング補正する第４の例を示すグラフ全体である。
【０１５２】
図９に示すように、ユーザは、端末装置６およびボード型コントローラ９を用いて操作する。具体的には、ユーザは、端末装置６を把持しながら、ボード型コントローラ９上に乗って操作する。そして、ユーザは、モニタ２に表示された画像や端末装置６のＬＣＤ６１に表示された画像を見ながら、ボード型コントローラ９上で動作（例えば、足踏み動作や屈伸動作）するとともに、端末装置６自体を動かす操作をすることによってプレイする。そして、端末装置６のＬＣＤ６１およびモニタ２には、ユーザが把持する端末装置６の方向や姿勢と、ボード型コントローラ９上におけるユーザ動作とに応じて、仮想世界においてプレイヤオブジェクトＰｏが動作（例えば、姿勢が変化する動作や移動方向や移動速度が変化する動作）し、プレイヤオブジェクトＰｏの位置や姿勢に応じて仮想世界に設定される仮想カメラの位置や姿勢を変化させたゲーム画像が表現される。
【０１５３】
図１０Ａに示すように、端末装置６のＬＣＤ６１には仮想世界内を移動するプレイヤオブジェクトＰｏが表示される。図１０Ａに示した一例では、海中を泳ぐプレイヤオブジェクトＰｏの背後近傍に仮想カメラが設定され、当該仮想カメラから見た仮想世界内の様子がプレイヤオブジェクトＰｏとともに表示されている。このように、プレイヤオブジェクトＰｏの背後近傍から見た仮想世界をＬＣＤ６１に表示することによって、端末装置６を把持しているユーザに仮想世界の臨場感を与えるとともに、ユーザがプレイヤオブジェクトＰｏの移動方向や移動速度を直感的に知ることができる。また、端末装置６の姿勢を上下方向に変えたり（ピッチ）、端末装置６の向きが変わるように回転移動させたり（ヨー）、端末装置６を表示画面の奥行方向（ｚ軸方向）周りに回転させたり（ロール）することによってプレイヤオブジェクトＰｏの姿勢や移動方向が変化するが、当該姿勢変化に応じて上記仮想カメラの位置や姿勢も変化する。例えば、端末装置６の姿勢および向きを上記仮想カメラの姿勢および向きに連動させることによって、ユーザは端末装置６のＬＣＤ６１を介してあたかも仮想世界内を覗いているような感覚を味わうことができる。
【０１５４】
また、図１０Ｂに示すように、モニタ２にもＬＣＤ６１に表示されている仮想世界と同じ仮想世界が表示される。図１０Ｂに示した一例では、海中を泳ぐプレイヤオブジェクトＰｏを遠方から鳥瞰した仮想世界内の様子がプレイヤオブジェクトＰｏとともに表示されている。また、図１０Ｂに示した一例では、海中を泳いだプレイヤオブジェクトＰｏの移動軌跡Ｌｐが仮想世界内に表示される。このように、プレイヤオブジェクトＰｏを遠方から鳥瞰した仮想世界内の様子をモニタ２に表示することによって、ユーザがプレイヤオブジェクトＰｏの周囲の状況が把握しやすくなるとともに、ユーザがプレイしている様子を見ている他の人が仮想世界をプレイヤオブジェクトＰｏが移動する様子を楽しむこともできる。
【０１５５】
一例として、ボード型コントローラ９上でユーザが足踏みするような動作をした場合、当該足踏み動作に応じた速度でプレイヤオブジェクトＰｏがバタ足して海中を泳ぐ動作をする。また、ボード型コントローラ９上でユーザが屈伸するような動作をした場合、当該屈伸動作に応じた速度でプレイヤオブジェクトＰｏがドルフィンキックして海中を泳ぐ動作をする。このように、ユーザは、ボード型コントローラ９上の動作によって、プレイヤオブジェクトＰｏの泳法や移動速度を変化させることができる。
【０１５６】
例えば、上述したように、ボード型コントローラ９からはボード型コントローラ９上のユーザ動作に応じた荷重検出値が出力される。そして、上記荷重検出値を用いれば、ボード型コントローラ９に加わっている合計荷重やボード型コントローラ９に加わっている荷重の重心位置の算出が可能である。また、上記合計荷重の変化や重心位置の変化を用いれば、ユーザがボード型コントローラ９上でどのような動作をしているのか推定することが可能となる。このようなボード型コントローラ９上で推定されるユーザ動作に応じて、プレイヤオブジェクトＰｏの泳法や移動速度が設定される。
【０１５７】
また、ユーザが把持する端末装置６の方向や姿勢に応じて、プレイヤオブジェクトＰｏが海中を泳ぐ姿勢や移動方向が変化する。一例として、ユーザが端末装置６自体を上下左右方向へ向ける（すなわち、ピッチおよびヨー）ことによって、当該方向変化に応じてプレイヤオブジェクトＰｏが海中を泳ぐ姿勢（プレイヤオブジェクトＰｏが仮想世界内で向く方向）が当該方向変化に連動して変化するとともに、泳ぐ方向も変化する。また、ユーザが把持する端末装置６を、ＬＣＤ６１の奥行方向（ｚ軸方向）周りに回転させた場合（すなわち、ロールした場合）、端末装置６の方向や姿勢に応じて、プレイヤオブジェクトＰｏが海中を泳ぐ姿勢が変化する。具体的には、ユーザが端末装置６の背面を上方向へ向けるように端末装置６自体の方向を変えた場合（すなわち、仰角方向へピッチした場合）、プレイヤオブジェクトＰｏが海面方向へ上昇する方向へ向くように泳ぐ姿勢を変化させるとともに、海面方向へ上昇するように泳ぐ方向を変化させる。また、ユーザが端末装置６の背面を左方向へ向けるように端末装置６自体の方向を変えた場合（すなわち、左方向へヨーした場合）、プレイヤオブジェクトＰｏから見た左方向へ泳ぐ姿勢を変化させるとともに、左方向へ泳ぐ方向を変化させる。このように、ユーザは、把持する端末装置６の方向や姿勢によって、プレイヤオブジェクトＰｏの姿勢や移動方向を変化させることができる。例えば、端末装置６の姿勢および向きをプレイヤオブジェクトＰｏの姿勢および移動方向に連動させることによって、ユーザは端末装置６を用いて自分自身がプレイヤオブジェクトＰｏとなったかのようなリアリティある操作が可能となる。また、上述したように、海中を泳ぐプレイヤオブジェクトＰｏの背後近傍に仮想カメラが設定されるため、上記プレイヤオブジェクトＰｏの姿勢や移動方向が変化することによって、仮想カメラの姿勢や位置も変化する。例えば、端末装置６の姿勢および向きを上記仮想カメラの姿勢および向きに連動させることによって、ユーザは端末装置６のＬＣＤ６１を介してあたかも仮想世界内を覗いているような感覚を味わうことができる。
【０１５８】
上述したように、ユーザが把持する端末装置６の方向や姿勢に応じて、プレイヤオブジェクトＰｏが海中を泳ぐ姿勢や移動方向が変化する。本ゲーム例では、実空間における端末装置６のＬＣＤ６１の奥行方向（ｚ軸正方向；以下、端末装置奥行方向と記載することがある）に対応する仮想世界における操作指示方向を算出し、当該操作指示方向によってプレイヤオブジェクトＰｏの姿勢（プレイヤオブジェクトＰｏが仮想世界内で向く方向）や移動方向が設定される。これによって、端末装置６のＬＣＤ６１に表示されている仮想世界の奥行方向を、プレイヤオブジェクトＰｏの向きや移動方向とすることができる。したがって、ユーザは、実空間における端末装置奥行方向を対応付けた仮想世界における操作指示方向をプレイヤオブジェクトＰｏの移動方向として設定できるとともに、その移動方向を奥行方向とした仮想世界がＬＣＤ６１に表示されるために、移動方向を設定する操作が直感的で当該移動方向をユーザが所望する方向に合わせることが容易となる。また、端末装置６の３方向への回転操作に応じてプレイヤオブジェクトＰｏの移動方向や仮想カメラの視線方向を設定することも可能となるため、仮想世界においてユーザが希望する移動方向や視線方向をそのまま設定することが可能となる。
【０１５９】
ここで、一般的にプレイヤオブジェクトＰｏの移動方向や仮想カメラの視線方向は、仮想世界における水平方向付近に設定する場合が多い。一方、端末装置６を把持するユーザは、仮想世界の水平方向付近に操作指示方向を設定する場合、端末装置奥行方向を実空間における水平方向に向けることになり、端末装置６のＬＣＤ６１が実空間において垂直に起立した状態を保つことが必要となる。しかしながら、ＬＣＤ６１が実空間において垂直に起立した状態を保って端末装置６を把持する姿勢はユーザに負担が大きく、長時間のゲームプレイに向かないことがある。このような問題を解決するために、本ゲーム例では、端末装置奥行方向が実空間の水平方向に対して俯角方向に所定角度下を向いたような、ユーザにとって比較的楽な姿勢で端末装置６が把持された場合に、仮想世界の水平方向へ操作指示方向が設定されるようにオフセット補正する。
【０１６０】
例えば、図１１に示すように、実空間における端末装置６の端末装置奥行方向（ｚ軸正方向）に対応して、仮想世界における操作指示方向が設定される。そして、ユーザが端末装置６を同じ姿勢に長時間維持しても比較的楽な操作姿勢における端末装置６の姿勢（例えば、端末装置奥行方向が実空間水平方向に対して角度Ａ（例えば２０°）だけ俯角方向に向いた状態。以下、基本姿勢と記載することがある）に対応して算出される操作指示方向が、仮想世界水平方向となるようにオフセット補正が行われる。以下、操作指示方向が仮想世界水平方向へ上記オフセット補正によって設定される端末装置奥行方向を、水平指示方向と記載することがある。
【０１６１】
また、端末装置６を把持するユーザは、仮想世界の真上や真下方向に操作指示方向を設定する場合、端末装置奥行方向を実空間における真上や真下方向に向けることになる。しかしながら、端末装置６が仮想世界を表示する表示手段としても用いられているため、端末装置６のＬＣＤ６１を見ながら端末装置奥行方向を実空間における真上や真下方向に向ける姿勢は、ユーザにとって負担が大きい体勢となるため操作が難しくなる。このような問題を解決するために、本ゲーム例では、実空間における端末装置奥行方向を仮想世界に対応付けて操作指示方向に変換する際、所定のスケーリングを行ってユーザの負担を軽減している。
【０１６２】
例えば、図１２に示すように、端末装置６は、水平指示方向（すなわち、実空間水平方向に対して角度Ａだけ俯角方向に向いた方向）から角度Ｂだけ仰角方向へ端末装置奥行方向が向いた状態となっている。そして、端末装置奥行方向から変換された操作指示方向が、プレイヤオブジェクトＰｏの移動方向および仮想カメラの視線方向（Ｚ軸正方向）にそれぞれ設定されている。この端末装置６の状態に対して設定される操作指示方向は、仮想世界水平方向に対して角度Ｃだけ仰角方向に向いた方向に設定される。ここで、角度Ｃは、角度Ｂに所定のスケーリング補正をした値であり、角度Ｂの関数ｆ（Ｂ）で算出される。なお、図１２に示した例では、角度Ｃが角度Ｂより大きく設定されているため、水平指示方向と端末装置奥行方向との差角が相対的に小さい端末装置６の姿勢であっても、仮想世界水平方向に対して相対的に大きな仰角となった操作指示方向が設定される。
【０１６３】
また、図１３に示すように、端末装置６は、水平指示方向から角度Ｄだけ俯角方向へ端末装置奥行方向が向いた状態となっている。そして、端末装置奥行方向から変換された操作指示方向が、プレイヤオブジェクトＰｏの移動方向および仮想カメラの視線方向（Ｚ軸正方向）にそれぞれ設定されている。この端末装置６の状態に対して設定される操作指示方向は、仮想世界水平方向に対して角度Ｅだけ俯角方向に向いた方向に設定される。ここで、角度Ｅは、角度Ｄに所定のスケーリング補正をした値であり、角度Ｄの関数ｆ（Ｄ）で算出される。なお、図１３に示した例では、角度Ｅが角度Ｄより大きく設定されているため、水平指示方向と端末装置奥行方向との差角が相対的に小さい端末装置６の姿勢であっても、仮想世界水平方向に対して相対的に大きな俯角となった操作指示方向が設定される。
【０１６４】
実空間における端末装置奥行方向を仮想世界に対応付けてオフセット補正およびスケーリング補正して操作指示方向に変換する際に用いられる関数は、ゲームに要求される操作環境に応じて、適宜設定することができる。例えば、第１の例として、図１４Ａおよび図１４Ｂに示すように、端末装置奥行方向（端末装置上下角度θｒ）を線形変換することによって、操作指示方向（仮想世界上下角度θｖ）が算出される。ここで、図１４Ａおよび図１４Ｂのグラフは、端末装置奥行方向を操作指示方向に変換した場合の、実空間における水平方向を角度０°とした端末装置奥行方向の角度（端末装置上下角度θｒ）と、仮想世界における水平方向を角度０°とした操作指示方向の角度（仮想世界上下角度θｖ）との関係を示している。そして、上記グラフは、水平方向に対する仰角を正の値で示し、水平方向に対する俯角を負の値で示している。なお、図１４Ａに示す角度θｒｈは、上記水平指示方向を示す端末装置上下角度θｒであり、当該水平指示方向の実空間水平方向からの差角（俯角；例えば−２０°）を示している。角度θｒｏは、操作指示方向が仮想世界において真上方向（仮想世界上下角度θｖ＝＋９０°）に設定される、端末装置奥行方向（真上指示方向）の端末装置上下角度θｒ（例えば＋３５°）を示している。角度θｒｕは、操作指示方向が仮想世界において真下方向（仮想世界上下角度θｖ＝−９０°）に設定される、端末装置奥行方向（真下指示方向）の端末装置上下角度θｒ（例えば−７５°）を示している。
【０１６５】
図１４Ａに示した第１の例では、端末装置上下角度θｒがθｒｈ（例えば−２０°）であるときに仮想世界上下角度θｖが水平（０°）となるように、端末装置奥行方向が操作指示方向に変換（オフセット補正）される。また、角度θｒｕ〜角度θｒｏの範囲で傾き（スケーリング倍率）が１より大きい１次関数（すなわち、θｒｏ−θｒｈ＜９０°、θｒｈ−θｒｕ＜９０°）を用いて、端末装置奥行方向が操作指示方向に線形変換（スケーリング補正）される。したがって、水平指示方向と端末装置奥行方向との差角を所定の比率で拡大補正した角度が、仮想世界水平方向と操作指示方向との差角となる。例えば、ユーザが、端末装置奥行方向を水平指示方向（例えば、θｒ＝−２０°）から真上指示方向（例えば、θｒ＝＋３５°）に変化させた場合であっても、端末装置奥行方向の回転量が９０°未満（例えば、５５°）となるが、上記スケーリング補正によって、実空間における９０°未満の端末装置奥行方向の回転量が実質的に９０°に補正される。したがって、実空間における真上や真下に端末装置奥行方向を向けなくとも、仮想世界の真上や真下方向に操作指示方向を設定することが可能となる。
【０１６６】
また、図１４Ａおよび図１４Ｂの例では、真上指示方向よりさらに仰角方向となる範囲（θｒ＞θｒｏであって操作指示方向が再び俯角方向へ変化し始めるまでの範囲。例えば、＋３５°＜θｒ＜＋１４５°）に端末装置奥行方向が設定された場合、操作指示方向が仮想世界の真上方向に固定されて設定される。さらに、図１４Ａおよび図１４Ｂの例では、真下指示方向よりさらに仰角方向となる範囲（θｒ＜θｒｕであって操作指示方向が再び仰角方向へ変化し始めるまでの範囲。例えば、−１０５°＜θｒ＜−７５°）に端末装置奥行方向が設定された場合、操作指示方向が仮想世界の真下方向に固定されて設定される。つまり、ユーザが真上指示方向よりさらに仰角方向となる範囲または真下指示方向よりさらに俯角方向となる範囲に端末装置奥行方向が向くように端末装置６を操作した場合、仮想世界の真上方向または真下方向が操作指示方向として設定されることになる。
【０１６７】
なお、図１４Ｂに示すように、操作指示方向が仮想世界の真上方向に固定されて設定される範囲を超えてさらに端末装置６がピッチして回転した場合（例えば、θｒ＞＋１４５°）、上記１次関数の傾きを負（すなわち、操作指示方向が仮想世界の真上方向に固定されて設定される範囲の中心を通るθｖ軸に平行な直線（例えば、θｒ＝＋９０°）を軸として線対称となる傾きであり、傾き（スケーリング倍率）が−１より小さい）にした１次関数を用いて、端末装置奥行方向が操作指示方向に線形変換される。そして、さらに端末装置６がピッチして回転すると、再び操作指示方向が仮想世界の真下方向に設定される角度（例えば、θｒ＝＋２５５°、すなわちθｒ＝−１０５°）に到達し、当該角度以降は上述した操作指示方向が仮想世界の真下方向に固定されて設定される範囲（すなわち、例えば、−１０５°＜θｒ＜−７５°）となる。このように、端末装置６をピッチ方向に回転し続けた場合、操作指示方向が仮想世界の真上方向に固定されて設定される範囲の中心を通るθｖ軸に平行な直線（例えば、θｒ＝＋９０°）を軸として線対称となる操作指示方向の変換方式を３６０°でループさせて、端末装置奥行方向が操作指示方向に変換される。
【０１６８】
第２の例として、図１５Ａに示すように、端末装置上下角度θｒがθｒｈ（例えば−２０°）であるときに仮想世界上下角度θｖが水平（０°）となるように、端末装置奥行方向が操作指示方向に変換（オフセット補正）される。また、端末装置奥行方向（端末装置上下角度θｒ）を非線形変換（スケーリング補正）することによって、操作指示方向（仮想世界上下角度θｖ）が算出される。図１５Ａに示した第２の例では、角度θｒｕ〜角度θｒｏの範囲で２次関数、高次関数、正弦関数、対数関数等の非線形関数を用いて、端末装置奥行方向が操作指示方向に変換される。ここで、第２の例では、水平指示方向の角度θｒｈから真上指示方向の角度θｒｏまたは真下指示方向の角度θｒｕへ離れるにつれて、角度θｒｕ〜角度θｒｏの範囲内で傾き（スケーリング倍率）が漸増的に増大して１より大きくなる非線形関数が用いられる。例えば、水平指示方向の角度θｒｈ付近ではスケーリング倍率が相対的に小さく、真上指示方向の角度θｒｏおよび真下指示方向の角度θｒｕ付近ではスケーリング倍率が相対的に大きい非線形関数が用いられ、θｒｏ−θｒｈ＜９０°およびθｒｈ−θｒｕ＜９０°となる。したがって、第２の例では、水平指示方向の角度θｒｈ付近ではスケーリング倍率が相対的に小さいために、仮想世界水平方向付近に操作指示方向が設定されやすい操作環境となる。また、第２の例でも、端末装置奥行方向を水平指示方向（例えば、θｒ＝−２０°）から真上指示方向（例えば、θｒ＝＋３５°）にユーザが変化させた場合であっても、端末装置奥行方向の回転量が９０°未満（例えば、５５°）となるが、上記スケーリング補正によって、実空間における９０°未満の端末装置奥行方向の回転量が実質的に９０°に補正される。したがって、実空間における真上や真下に端末装置奥行方向を向けなくとも、仮想世界の真上や真下方向に操作指示方向を設定することが可能となる。
【０１６９】
また、真上指示方向の角度θｒｏおよび真下指示方向の角度θｒｕ付近ではスケーリング倍率が相対的に大きいために、水平指示方向と端末装置奥行方向との差角を所定の比率で拡大補正した角度が、仮想世界水平方向と操作指示方向との差角となる。また、図１５Ａおよび図１５Ｂの例でも、真上指示方向よりさらに仰角方向となる範囲（θｒ＞θｒｏであって操作指示方向が再び俯角方向へ変化し始めるまでの範囲。例えば、＋３５°＜θｒ＜＋１４５°）に端末装置奥行方向が設定された場合、操作指示方向が仮想世界の真上方向に固定されて設定される。さらに、図１５Ａおよび図１５Ｂの例でも、真下指示方向よりさらに仰角方向となる範囲（θｒ＜θｒｕであって操作指示方向が再び仰角方向へ変化し始めるまでの範囲。例えば、−１０５°＜θｒ＜−７５°）に端末装置奥行方向が設定された場合、操作指示方向が仮想世界の真下方向に固定されて設定される。つまり、ユーザが真上指示方向よりさらに仰角方向となる範囲または真下指示方向よりさらに俯角方向となる範囲に端末装置奥行方向が向くように端末装置６を操作した場合、仮想世界の真上方向または真下方向が操作指示方向として設定されることになる。
【０１７０】
なお、図１５Ｂに示すように、第１の例と同様に、操作指示方向が仮想世界の真上方向に固定されて設定される範囲を超えてさらに端末装置６がピッチして回転した場合（例えば、θｒ＞＋１４５°）、上記非線形関数の傾きを負（すなわち、操作指示方向が仮想世界の真上方向に固定されて設定される範囲の中心を通るθｖ軸に平行な直線（例えば、θｒ＝＋９０°）を軸として線対称となる傾き）にした非線形関数を用いて、端末装置奥行方向が操作指示方向に非線形変換される。そして、さらに端末装置６がピッチして回転すると、再び操作指示方向が仮想世界の真下方向に設定される角度（例えば、θｒ＝＋２５５°、すなわちθｒ＝−１０５°）に到達し、当該角度以降は上述した操作指示方向が仮想世界の真下方向に固定されて設定される範囲（すなわち、例えば、−１０５°＜θｒ＜−７５°）となる。このように、端末装置６をピッチ方向に回転し続けた場合、操作指示方向が仮想世界の真上方向に固定されて設定される範囲の中心を通るθｖ軸に平行な直線（例えば、θｒ＝＋９０°）を軸として線対称となる操作指示方向の変換方式を３６０°でループさせて、端末装置奥行方向が操作指示方向に変換される。
【０１７１】
第３の例として、図１６Ａに示すように、端末装置上下角度θｒがθｒｈ（例えば−２０°）であるときに仮想世界上下角度θｖが水平（０°）となるように、端末装置奥行方向が操作指示方向に変換（オフセット補正）される。また、端末装置奥行方向（端末装置上下角度θｒ）を第２の例と同様に非線形変換（スケーリング補正）することによって、操作指示方向（仮想世界上下角度θｖ）が算出される。図１６Ａに示した第３の例では、角度θｒｕ〜角度θｒｏの範囲で２次関数、高次関数、正弦関数、対数関数等の非線形関数を用いて、端末装置奥行方向が操作指示方向に変換される。ここで、第３の例では、水平指示方向の角度θｒｈから真上指示方向の角度θｒｏまたは真下指示方向の角度θｒｕへ離れるにつれて、角度θｒｕ〜角度θｒｏの範囲内で１より大きい傾き（スケーリング倍率）が漸減的に減少する非線形関数が用いられる。例えば、水平指示方向の角度θｒｈ付近ではスケーリング倍率が相対的に大きく、真上指示方向の角度θｒｏおよび真下指示方向の角度θｒｕ付近ではスケーリング倍率が相対的に小さい非線形関数が用いられ、θｒｏ−θｒｈ＜９０°およびθｒｈ−θｒｕ＜９０°となる。したがって、第３の例では、水平指示方向の角度θｒｈ付近ではスケーリング倍率が相対的に大きいために、仮想世界水平方向付近から操作指示方向が変化する速度が相対的に速く、水平指示方向と端末装置奥行方向との差角を所定の比率で拡大補正した角度が、仮想世界水平方向と操作指示方向との差角となる。また、第３の例でも、端末装置奥行方向を水平指示方向（例えば、θｒ＝−２０°）から真上指示方向（例えば、θｒ＝＋３５°）にユーザが変化させた場合であっても、端末装置奥行方向の回転量が９０°未満（例えば、５５°）となるが、上記スケーリング補正によって、実空間における９０°未満の端末装置奥行方向の回転量が実質的に９０°に補正される。したがって、実空間における真上や真下に端末装置奥行方向を向けなくとも、仮想世界の真上や真下方向に操作指示方向を設定することが可能となる。
【０１７２】
また、図１６Ａおよび図１６Ｂの例でも、真上指示方向よりさらに仰角方向となる範囲（θｒ＞θｒｏであって操作指示方向が再び俯角方向へ変化し始めるまでの範囲。例えば、＋３５°＜θｒ＜＋１４５°）に端末装置奥行方向が設定された場合、操作指示方向が仮想世界の真上方向に固定されて設定される。さらに、図１６Ａおよび図１６Ｂの例でも、真下指示方向よりさらに仰角方向となる範囲（θｒ＜θｒｕであって操作指示方向が再び仰角方向へ変化し始めるまでの範囲。例えば、−１０５°＜θｒ＜−７５°）に端末装置奥行方向が設定された場合、操作指示方向が仮想世界の真下方向に固定されて設定される。つまり、ユーザが真上指示方向よりさらに仰角方向となる範囲または真下指示方向よりさらに俯角方向となる範囲に端末装置奥行方向が向くように端末装置６を操作した場合、仮想世界の真上方向または真下方向が操作指示方向として設定されることになる。
【０１７３】
なお、図１６Ｂに示すように、第１の例と同様に、操作指示方向が仮想世界の真上方向に固定されて設定される範囲を超えてさらに端末装置６がピッチして回転した場合（例えば、θｒ＞＋１４５°）、上記非線形関数の傾きを負（すなわち、操作指示方向が仮想世界の真上方向に固定されて設定される範囲の中心を通るθｖ軸に平行な直線（例えば、θｒ＝＋９０°）を軸として線対称となる傾き）にした非線形関数を用いて、端末装置奥行方向が操作指示方向に非線形変換される。そして、さらに端末装置６がピッチして回転すると、再び操作指示方向が仮想世界の真下方向に設定される角度（例えば、θｒ＝＋２５５°、すなわちθｒ＝−１０５°）に到達し、当該角度以降は上述した操作指示方向が仮想世界の真下方向に固定されて設定される範囲（すなわち、例えば、−１０５°＜θｒ＜−７５°）となる。このように、端末装置６をピッチ方向に回転し続けた場合、操作指示方向が仮想世界の真上方向に固定されて設定される範囲の中心を通るθｖ軸に平行な直線（例えば、θｒ＝＋９０°）を軸として線対称となる操作指示方向の変換方式を３６０°でループさせて、端末装置奥行方向が操作指示方向に変換される。
【０１７４】
第４の例として、図１７Ａに示すように、端末装置上下角度θｒがθｒｈ（例えば−２０°）であるときに仮想世界上下角度θｖが水平（０°）となるように、端末装置奥行方向が操作指示方向に変換（オフセット補正）される。また、端末装置上下角度θｒの値に応じて異なる関数用いて、端末装置奥行方向（端末装置上下角度θｒ）を操作指示方向（仮想世界上下角度θｖ）に変換（スケーリング補正）する。図１７Ａに示した第４の例では、角度θｒｕと角度θｒｈとの間に関数切替角度θｒ１を設け、角度θｒｈと角度θｒｏとの間に関数切替角度θｒ２を設ける。ここで、典型的には、角度θｒｈが角度θｒ１と角度θｒ２との中間となるように設定され、θｒ２−θｒｈ＝θｒｈ−θｒ１となる。そして、角度θｒ１〜角度θｒ２の範囲では、傾き（スケーリング倍率）が相対的に小さい（例えば、傾き＝１）１次関数を用いて、端末装置奥行方向が操作指示方向に変換される。また、角度θｒｕ〜角度θｒ１の範囲および角度θｒ２〜角度θｒｏの範囲では、傾き（スケーリング倍率）が相対的に大きい（例えば、傾き＞１）１次関数を用いて、端末装置奥行方向が操作指示方向に変換される。したがって、第４の例では、水平指示方向の角度θｒｈ付近ではスケーリング倍率が相対的に小さいために、仮想世界水平方向付近に操作指示方向が設定されやすい操作環境となる。また、真上指示方向の角度θｒｏおよび真下指示方向の角度θｒｕ付近ではスケーリング倍率が相対的に大きいために、水平指示方向と端末装置奥行方向との差角を所定の比率で拡大補正した角度が、仮想世界水平方向と操作指示方向との差角となる。また、第４の例でも、端末装置奥行方向を水平指示方向（例えば、θｒ＝−２０°）から真上指示方向（例えば、θｒ＝＋３５°）にユーザが変化させた場合であっても、端末装置奥行方向の回転量が９０°未満（例えば、５５°）となるが、上記スケーリング補正によって、実空間における９０°未満の端末装置奥行方向の回転量が実質的に９０°に補正される。したがって、実空間における真上や真下に端末装置奥行方向を向けなくとも、仮想世界の真上や真下方向に操作指示方向を設定することが可能となる。
【０１７５】
また、図１７Ａおよび図１７Ｂの例でも、真上指示方向よりさらに仰角方向となる範囲（θｒ＞θｒｏであって操作指示方向が再び俯角方向へ変化し始めるまでの範囲。例えば、＋３５°＜θｒ＜＋１４５°）に端末装置奥行方向が設定された場合、操作指示方向が仮想世界の真上方向に固定されて設定される。さらに、図１７Ａおよび図１７Ｂの例でも、真下指示方向よりさらに仰角方向となる範囲（θｒ＜θｒｕであって操作指示方向が再び仰角方向へ変化し始めるまでの範囲。例えば、−１０５°＜θｒ＜−７５°）に端末装置奥行方向が設定された場合、操作指示方向が仮想世界の真下方向に固定されて設定される。つまり、ユーザが真上指示方向よりさらに仰角方向となる範囲または真下指示方向よりさらに俯角方向となる範囲に端末装置奥行方向が向くように端末装置６を操作した場合、仮想世界の真上方向または真下方向が操作指示方向として設定されることになる。
【０１７６】
なお、図１７Ｂに示すように、第１の例と同様に、操作指示方向が仮想世界の真上方向に固定されて設定される範囲を超えてさらに端末装置６がピッチして回転した場合（例えば、θｒ＞＋１４５°）、上記１次関数の傾きを負（すなわち、操作指示方向が仮想世界の真上方向に固定されて設定される範囲の中心を通るθｖ軸に平行な直線（例えば、θｒ＝＋９０°）を軸として線対称となる傾き）にした１次関数を用いて、端末装置奥行方向が操作指示方向に線形変換される。そして、さらに端末装置６がピッチして回転すると、再び操作指示方向が仮想世界の真下方向に設定される角度（例えば、θｒ＝＋２５５°、すなわちθｒ＝−１０５°）に到達し、当該角度以降は上述した操作指示方向が仮想世界の真下方向に固定されて設定される範囲（すなわち、例えば、−１０５°＜θｒ＜−７５°）となる。このように、端末装置６をピッチ方向に回転し続けた場合、操作指示方向が仮想世界の真上方向に固定されて設定される範囲の中心を通るθｖ軸に平行な直線（例えば、θｒ＝＋９０°）を軸として線対称となる操作指示方向の変換方式を３６０°でループさせて、端末装置奥行方向が操作指示方向に変換される。
【０１７７】
また、上記第４の例で用いる関数は、少なくとも１つの関数が１次関数でなくてもかまわない。例えば、２次関数、高次関数、正弦関数、対数関数等の非線形関数と１次関数とを組み合わせる、または当該非線形関数のみを用いて上記第４の例で用いる関数を構成してもかまわない。
【０１７８】
また、上記第１の例〜第４の例では、角度θｒｏから角度θｒｈまでの差角（例えば、５５°）と角度θｒｈから角度θｒｕまでの差角（例えば、５５°）とが同じ角度となる例を記載しているが、両者の差角を異なる角度に設定してもかまわない。
【０１７９】
また、上記第１の例〜第４の例では、仮想世界における真上方向を仮想世界上下角度θｖ＝＋９０°に設定し、仮想世界における真下方向を仮想世界上下角度θｖ＝−９０°に設定する例を用いたが、真上指示方向または真下指示方向に設定された端末装置奥行方向が変換される仮想世界における真上方向または真下方向を示す仮想世界上下角度θｖは、他の角度であってもかまわない。仮想世界における真上方向や真下方向を示す仮想世界上下角度θｖは、実質的に＋９０°や−９０°を示す他の角度でもいいし、仮想世界の設定に応じて少なくとも一方の角度を＋９０°や−９０°とは異なる角度に設定してもかまわない。
【０１８０】
ここで、端末装置６からは、端末装置６の姿勢変化に応じた加速度データや角速度データが出力されている。そして、上記加速度データが示す加速度を用いれば、端末装置６に作用している重力加速度の方向が算出できるため、実空間における鉛直方向を基準として端末装置６がどのような姿勢になっているのか、すなわち鉛直方向を基準とした端末装置６のｘｙｚ軸方向を推定することができる。また、上記角速度データが示す角速度および／または上記加速度データが示す加速度を用いれば、端末装置６に作用している角速度や動的な加速度がわかるため、これらの角速度および／または動的な加速度を用いて、実空間における端末装置６の初期姿勢からの姿勢変化、（すなわち、ｘｙｚ各軸周りのｘｙｚ軸の方向変化）を推定することができる。このように推定される端末装置６の姿勢（ｘｙｚ軸方向）に上述したようなスケーリング補正を行うことによって、スケーリング補正後の端末装置奥行方向や端末装置上方向（ｙ軸正方向）が得られ、当該補正後の端末装置奥行方向や端末装置上方向を用いてプレイヤオブジェクトＰｏの姿勢や移動方向および仮想カメラの姿勢や位置が設定される。
【０１８１】
次に、ゲームシステム１において行われる情報処理の詳細を説明する。まず、図１８を参照して、当該情報処理において用いられる主なデータについて説明する。なお、図１８は、ゲーム装置本体５の外部メインメモリ１２および／または内部メインメモリ３５（以下、２つのメインメモリを総称して、単にメインメモリと記載する）に記憶される主なデータおよびプログラムの一例を示す図である。
【０１８２】
図１８に示すように、メインメモリのデータ記憶領域には、ボード操作データＤａ、端末操作データＤｂ、荷重値データＤｃ、重心位置データＤｄ、端末装置方向姿勢データＤｅ、操作方向データＤｆ、動作姿勢データＤｇ、移動ベクトルデータＤｈ、位置データＤｉ、仮想カメラデータＤｊ、移動軌跡データＤｋ、動作モードフラグデータＤｍ、および画像データＤｎ等が記憶される。なお、メインメモリには、図１８に示す情報に含まれるデータの他、モニタ２やＬＣＤ６１に表示される各種オブジェクトの画像データやゲームに使用される音声データ等、ゲーム処理に必要なデータが適宜記憶される。また、メインメモリのプログラム記憶領域には、上記情報処理プログラムを構成する各種プログラム群Ｐａが記憶される。
【０１８３】
ボード操作データＤａは、ボード型コントローラ９から送信データとして送信されてくる一連の操作情報（ボード操作データ）が格納され、最新のボード操作データに更新される。例えば、ボード操作データＤａは、荷重データＤａ１等を含んでいる。荷重データＤａ１は、ボード型コントローラ９の荷重センサ９４ａ〜９４ｄがそれぞれ検出した荷重検出値を示すデータである。
【０１８４】
端末操作データＤｂは、端末装置６から送信データとして送信されてくる一連の操作情報（端末操作データ）が格納され、最新の端末操作データに更新される。例えば、端末操作データＤｂは、加速度データＤｂ１および角速度データＤｂ２等を含んでいる。加速度データＤｂ１は、加速度センサ６０３によって検出された加速度（加速度ベクトル）を表すデータである。例えば、加速度データＤｂ１は、図３に示すｘｙｚの３軸の方向に関する加速度を各成分とする３次元の加速度を表すものであるが、他の例においては、任意の１以上の方向に関する加速度を表すものであってもよい。角速度データＤｂ２は、ジャイロセンサ６０４によって検出された角速度を表すデータである。例えば、角速度データＤｂ２は、図３に示すｘｙｚの３軸回りのそれぞれの角速度を表すものであるが、他の例においては、任意の１軸以上の軸回り角速度を表すものであってもよい。
【０１８５】
なお、ゲーム装置本体５は、コントローラ７、ボード型コントローラ９、および端末装置６からそれぞれ所定周期毎（例えば、１／２００秒毎）に送信される操作情報に含まれるデータ（例えば、荷重検出値、加速度、および角速度を示すデータ）を逐次受信している。例えば、受信されたデータは、入出力プロセッサ３１によってメインメモリに逐次記憶される。後述する処理フローでは、ＣＰＵ１０が最新のボード操作データおよび端末操作データを１フレーム毎（例えば、１／６０秒毎）にメインメモリから読み出して、ボード操作データＤａおよび端末操作データＤｂをそれぞれ更新する例を用いる。
【０１８６】
また、コントローラ７、ボード型コントローラ９、および端末装置６からそれぞれ所定周期毎に送信される操作情報は、コントローラ通信モジュール１９や端末通信モジュール２８等に備える図示しないバッファに一旦蓄えられてもよい。この場合、上記バッファに蓄えられたデータが、１フレーム毎に読み出されて、メインメモリのボード操作データＤａ（例えば、荷重データＤａ１）や端末操作データＤｂ（例えば、加速度データＤｂ１および角速度データＤｂ２）が更新されて用いられる。このとき、操作情報を受信する周期と処理周期とが異なるために、上記バッファには複数の時点に受信した操作情報が記述されていることになるが、複数の時点に受信した操作情報のうち最新の操作情報のみを用いて当該処理を実行してもいいし、複数の時点に受信した操作情報の代表値（例えば、平均値）を用いて当該処理を実行してもいいし、複数の時点に受信した操作情報の個数分処理を実行してもよい。
【０１８７】
荷重値データＤｃは、ボード型コントローラ９が検出する荷重値を示すデータの集合である。例えば、荷重値データＤｃは、荷重センサ９４ａ〜９４ｄがそれぞれ検出した荷重の合計値（合計荷重値）を示すデータの集合である。具体的には、荷重値データＤｃは、時系列的に算出された所定期間内の上記合計荷重値を示すデータの配列であり、配列の各要素に上記合計荷重値を示すデータが時系列に格納される。
【０１８８】
重心位置データＤｄは、ボード型コントローラ９に加わっている荷重の重心位置を示すデータの集合である。例えば、重心位置データＤｄは、荷重センサ９４ａ〜９４ｄがそれぞれ検出した荷重値から所定の数式を用いて算出される重心位置を示すデータの集合である。具体的には、重心位置データＤｄは、時系列的に算出された所定期間内の上記重心位置を示すデータの配列であり、配列の各要素に上記重心位置を示すデータが時系列に格納される。
【０１８９】
端末装置方向姿勢データＤｅは、実空間基準方向データＤｅ１、端末装置奥行方向データＤｅ２、端末装置上方向データＤｅ３、および端末装置右方向データＤｅ４等を含んでいる。実空間基準方向データＤｅ１は、実空間におけるスケーリング補正した後の端末装置６の基準方向（姿勢；実空間基準方向）を示すデータである。端末装置奥行方向データＤｅ２は、実空間おけるスケーリング補正した後の端末装置６の現時点の奥行方向（ｚ軸正方向；端末装置奥行方向）を示すデータである。端末装置上方向データＤｅ３は、実空間におけるスケーリング補正した後の端末装置６の現時点の上方向（ｙ軸正方向；端末装置上方向）を示すデータである。端末装置右方向データＤｅ４は、実空間におけるスケーリング補正した後の端末装置６の現時点の右方向（ｘ軸正方向；端末装置右方向）を示すデータである。例えば、実空間基準方向データＤｅ１、端末装置奥行方向データＤｅ２、端末装置上方向データＤｅ３、および端末装置右方向データＤｅ４は、加速度データＤｂ１および角速度データＤｂ２に基づいて算出される。実空間基準方向、端末装置奥行方向、端末装置上方向、および端末装置右方向の算出方法については、後述する。
【０１９０】
操作方向データＤｆは、仮想世界基準方向データＤｆ１、操作指示方向データＤｆ２、および操作上方向データＤｆ３等を含んでいる。仮想世界基準方向データＤｆ１は、仮想世界において設定される基準方向を示すデータである。操作指示方向データＤｆ２は、仮想世界に対して現時点でユーザから指示されている操作指示方向を示すデータである。操作上方向データＤｆ３は、仮想世界に対して現時点でユーザから指示されている操作上方向を示すデータである。仮想世界基準方向、操作指示方向、および操作上方向の算出方法については、後述する。
【０１９１】
動作姿勢データＤｇは、仮想世界におけるプレイヤオブジェクトＰｏの動作や姿勢を示すデータである。移動ベクトルデータＤｈは、仮想世界におけるプレイヤオブジェクトＰｏの移動速度および移動方向を示すデータ（例えば、仮想世界における移動ベクトルを示すデータ）である。位置データＤｉは、仮想世界におけるプレイヤオブジェクトＰｏの位置を示すデータである。仮想カメラデータＤｊは、仮想世界に設定される仮想カメラに関するデータである。例えば、仮想カメラデータＤｊは、端末装置６のＬＣＤ６１に表示するゲーム画像を生成するための第１仮想カメラに関するデータと、モニタ２に表示するゲーム画像を生成するための第２仮想カメラに関するデータとを含む。移動軌跡データＤｋは、仮想世界においてプレイヤオブジェクトＰｏが移動した軌跡を示すデータである。
【０１９２】
動作モードフラグデータＤｍは、プレイヤオブジェクトＰｏに設定されている動作（例えば、泳法）に応じて設定される動作モードフラグを示すデータである。一例として、ボード型コントローラ９上でユーザが屈伸するような動作をした場合、プレイヤオブジェクトＰｏの動作がドルフィンキックして海中を泳ぐ動作に設定されて動作モードフラグがオンに設定される。
【０１９３】
画像データＤｎは、プレイヤオブジェクトデータＤｎ１および背景画像データＤｎ２等を含んでいる。プレイヤオブジェクトデータＤｎ１は、仮想世界にプレイヤオブジェクトＰｏを配置してゲーム画像を生成するためのデータである。背景画像データＤｎ２は、仮想世界に背景を配置してゲーム画像を生成するためのデータである。
【０１９４】
次に、図１９〜図２３を参照して、ゲーム装置本体５において行われる情報処理の詳細を説明する。なお、図１９は、ゲーム装置本体５において実行される情報処理の一例を示すフローチャートである。図２０は、図１９におけるステップ４５のゲーム制御処理の一例を示すサブルーチンである。図２１は、図２０におけるステップ８３のプレイヤオブジェクト設定処理の一例を示すサブルーチンである。図２２は、図２１におけるステップ１２７のプレイヤオブジェクト動作設定処理の一例を示すサブルーチンである。図２３は、実空間の水平面に投影した実空間基準方向および端末装置奥行方向と仮想世界の水平面に投影した仮想世界基準方向および操作指示方向との関係の一例を説明するための図である。図２４は、実空間の鉛直面に投影した端末装置奥行方向および仮想世界の鉛直面に投影した操作指示方向の関係と、端末装置上方向（ロール角度）に対応する回転動作との一例を説明するための図である。ここで、図１９〜図２２に示すフローチャートにおいては、処理のうち、端末装置６およびボード型コントローラ９を用いたユーザの操作に応じて、プレイヤオブジェクトＰｏが動作して表示される処理について主に説明し、本願発明と直接関連しない他の処理については詳細な説明を省略する。また、図１９〜図２２では、ＣＰＵ１０が実行する各ステップを「Ｓ」と略称する。
【０１９５】
ゲーム装置本体５の電源が投入されると、ゲーム装置本体５のＣＰＵ１０は、ＲＯＭ／ＲＴＣ１３に記憶されている起動用のプログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク４に記憶された情報処理プログラムがメインメモリに読み込まれ、ＣＰＵ１０によって当該プログラムの実行が開始される。図１９〜図２２に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。
【０１９６】
図１９において、ＣＰＵ１０は、初期処理を実行し（ステップ４０）、次のステップに処理を進める。例えば、上記ステップ４０における初期処理において、ＣＰＵ１０は、仮想世界を構築し、ゲーム空間に登場するプレイヤオブジェクトＰｏや各オブジェクトを初期位置に配置したり、ゲーム処理で用いる各種パラメータの初期値を設定したりする。
【０１９７】
次に、ＣＰＵ１０は、端末装置６から送信されてくるデータに基づいて、オフセット補正およびスケーリング補正した端末装置６の姿勢や動きを算出し（ステップ４１）、次のステップに処理を進める。以下、ＣＰＵ１０がスケーリング補正する一例について説明する。
【０１９８】
端末装置６は、上述したようなデータをゲーム装置本体５へ繰り返し送信している。ゲーム装置本体５においては、端末通信モジュール２８が上記データを逐次受信し、入出力プロセッサ３１が端末操作データとカメラ画像データとマイク音データとをメインメモリに逐次記憶する。上記ステップ４２においては、ＣＰＵ１０は、メインメモリから最新の端末操作データを読み出して加速度データＤｂ１および角速度データＤｂ２を更新する。
【０１９９】
次に、ＣＰＵ１０は、加速度データＤｂ１および角速度データＤｂ２から得られる実空間における端末装置６の姿勢や動きをスケーリング補正して、当該スケーリング補正後の端末装置６の姿勢や動きを示すデータを用いて端末装置方向姿勢データＤｅを更新する。例えば、ＣＰＵ１０は、角速度データＤｂ２が示す角速度を用いて、端末装置６の単位時間当たりにおける実空間での回転量（方向変化量）を算出することができる。また、実空間において端末装置６がほぼ静止している状態（静的な状態）では、端末装置６に対して加えられる加速度が重力加速度となるため、加速度データＤｂ１が示す加速度によって端末装置６に加えられる重力方向（すなわち、実空間における鉛直方向を基準とした端末装置６の姿勢）を算出することができる。したがって、ＣＰＵ１０は、加速度データＤｂ１が示す加速度および角速度データＤｂ２が示す角速度に基づいて、実空間における端末装置６の姿勢や動きを算出することができる。なお、以下の説明においては、実空間における端末装置６のｘ軸正方向を長さ１のベクトルＶａｘ、ｙ軸正方向を長さ１のベクトルＶａｙ、長さ１のｚ軸正方向をベクトルＶａｚでそれぞれ示す。
【０２００】
次に、ＣＰＵ１０は、実空間における端末装置６の姿勢をオフセット補正およびスケーリング補正する。まず、ＣＰＵ１０は、実空間における水平面に対するベクトルＶａｚの角度を算出し、予め設定された補正関数に基づいて当該角度を変換する。例えば、図１４Ａに示した第１の例の１次関数を用いる場合、実空間の水平面に対してベクトルＶａｚの向きが下方へ２０°（すなわち、端末装置上下角度θｒ＝−２０°）である場合、０°に変換される。また、実空間の水平面に対してベクトルＶａｚの向きが上方へ３５°（すなわち、端末装置上下角度θｒ＝＋３５°）である場合、９０°に変換される。そして、ベクトルＶａｚの方向が実空間の水平面に対して変換後の角度となるように、ベクトルＶａｚの鉛直方向成分である鉛直方向成分ベクトルＶｇｚの長さを変化させて鉛直方向成分ベクトルＶｇｚを更新してオフセット補正およびスケーリング補正する。そして、ベクトルＶａｚの長さを１にするために、ベクトルＶａｚの水平方向成分ベクトルＶｈｚの長さを下記の数式によって算出される水平方向成分ベクトルＶｈｚの長さに更新して、補正後の鉛直方向成分ベクトルＶｇｚに補正後の水平方向成分ベクトルＶｈｚを加算することによって、補正後のベクトルＶａｚｃを求める。
【数１】
0006041466.tif 000002
【０２０１】
次に、ＣＰＵ１０は、補正後のベクトルＶａｚｃとベクトルＶａｙとの外積によって新たにベクトルＶａｘｃを算出する。そして、新たに算出されたベクトルＶａｘｃとベクトルＶａｚｃとの外積によって新たにベクトルＶａｙｃを算出する。これによって、実空間における端末装置６の姿勢を示すベクトルＶａｘ、Ｖａｙ、Ｖａｚが、ベクトルＶａｘｃ、Ｖａｙｃ、Ｖａｚｃにオフセット補正およびスケーリング補正される。そして、ＣＰＵ１０は、オフセット補正およびスケーリング補正されたベクトルＶａｘｃ、Ｖａｙｃ、およびＶａｚｃをそれぞれ端末装置右方向、端末装置上方向、および端末装置奥行方向として、端末装置右方向データＤｅ４、端末装置上方向データＤｅ３、および端末装置奥行方向データＤｅ２を更新する。
【０２０２】
次に、ＣＰＵ１０は、基準方向を設定し（ステップ４２）、次のステップに処理を進める。例えば、ＣＰＵ１０は、端末装置奥行方向データＤｅ２が示す端末装置奥行方向を実空間における基準方向（初期姿勢）として設定し、当該端末装置奥行方向を示すデータを用いて実空間基準方向データＤｅ１を更新する。また、上記ステップ４２において、仮想世界においてプレイヤオブジェクトＰｏが向いている現時点の方向（例えば、そのまま移動する場合に移動方向となる方向）を仮想世界における基準方向（初期姿勢）として算出し、算出された仮想世界の基準方向を示すデータを用いて仮想世界基準方向データＤｆ１を更新する。
【０２０３】
なお、端末装置６の初期姿勢は、加速度データＤｂ１が示す加速度に基づいて算出されてもよいし、磁気センサ６０２が検出した磁気の方向に基づいて算出されてもよいし、端末装置６を特定の姿勢にした状態でユーザに所定の操作を行わせることで、所定の操作が行われた時点における特定の姿勢を初期姿勢として用いるようにしてもよい。なお、実空間における所定方向を基準とした絶対的な姿勢として端末装置６の姿勢を算出する場合には上記初期姿勢を算出することが必要となる。上記初期姿勢を設定するタイミング、すなわち上記ステップ４２を実行するタイミングは、ゲーム開始時点に自動的に行われてもいいし、端末装置６を用いてユーザが所定の操作（例えば、所定の操作ボタン６４を押下する操作）を行ったことに応じて行われてもかまわない。
【０２０４】
上記ステップ４２の次にステップ４３の処理が実行される。以降、ステップ４３〜ステップ５２の一連の処理からなる処理ループが所定時間（１フレーム時間）に１回の割合で繰り返し実行される。
【０２０５】
ステップ４３において、ＣＰＵ１０は、ボード型コントローラ９から送信されてくるボード操作データを取得し、次のステップに処理を進める。ここで、ボード型コントローラ９は、ボード操作データをゲーム装置本体５へ繰り返し送信している。したがって、ゲーム装置本体５においては、コントローラ通信モジュール１９が上記ボード操作データを逐次受信し、受信されたボード操作データが入出力プロセッサ３１によってメインメモリに逐次記憶される。ボード型コントローラ９のボード操作データ送信の間隔は、ゲームの処理時間（１フレーム時間）よりも短い方が好ましく、例えば２００分の１秒である。上記ステップ４３においては、ＣＰＵ１０は、メインメモリから最新のボード操作データを読み出して荷重データＤａ１を更新する。なお、上記ボード操作データには、荷重センサ９４ａ〜９４ｄの識別情報を示すデータおよび荷重センサ９４ａ〜９４ｄがそれぞれ検出した荷重検出値を示すデータが含まれており、当該識別情報によって区別されたデータをそれぞれ用いて、荷重データＤａ１が更新される。
【０２０６】
次に、ＣＰＵ１０は、端末装置６から送信されてくる各種のデータを取得し（ステップ４４）、次のステップに処理を進める。ここで、端末装置６は、上記データをゲーム装置本体５へ繰り返し送信している。したがって、ゲーム装置本体５においては、端末通信モジュール２８が上記データを逐次受信し、カメラ画像データおよびマイク音データについてはコーデックＬＳＩ２７によって伸張処理が逐次施される。そして、入出力プロセッサ３１は、端末操作データとカメラ画像データとマイク音データとをメインメモリに逐次記憶する。上記ステップ４４においては、ＣＰＵ１０は、メインメモリから最新の端末操作データを読み出して加速度データＤｂ１および角速度データＤｂ２を更新する。
【０２０７】
次に、ＣＰＵ１０は、ゲーム制御処理を行って（ステップ４５）、次のステップに処理を進める。上記ゲーム制御処理は、ユーザによるゲーム操作に従って仮想世界内のプレイヤオブジェクトＰｏを動作させる処理等を実行し、ゲームを進行させる処理である。当該ゲーム例では、ユーザは、端末装置６およびボード型コントローラ９を用いて種々のゲームを行うことが可能である。以下、図２０を参照して、上記ステップ４５におけるゲーム制御処理について説明する。
【０２０８】
図２０において、ＣＰＵ１０は、荷重値および重心位置を算出して（ステップ８１）、次のステップに処理を進める。例えば、ＣＰＵ１０は、荷重データＤａ１が示す荷重検出値を合計して合計荷重値を算出し、当該合計荷重値を示すデータを用いて荷重値データＤｃにおける時系列データ配列のうち最新のデータを更新する。具体的には、荷重データＤａ１は、荷重センサ９４ａ〜９４ｄがそれぞれ検出した最新の荷重検出値を示しているため、当該荷重検出値を合計することによって、上記合計荷重値が算出される。また、ＣＰＵ１０は、荷重データＤａ１が示す荷重検出値を用いて重心位置を算出し、当該重心位置を示すデータを用いて重心位置データＤｄにおける時系列データ配列のうち最新のデータを更新する。以下、重心位置の算出方法の一例を説明する。
【０２０９】
上記重心位置は、ボード型コントローラ９の台９ａに加わる荷重の重心位置であり、各荷重センサ９４ａ〜９４ｄ（図６参照）が検出する荷重値によって定められる。例えば、上記重心位置は、ボード型コントローラ９の台９ａ上の位置に対応する所定の座標系（例えば、台９ａの中心を原点、台９ａの長辺方向をＸ１軸方向、短辺方向をＹ１軸方向とするＸ１Ｙ１座標系）に基づいた座標値によって表される。そして、荷重センサ９４ａが検出する荷重値をａ、荷重センサ９４ｂが検出する荷重値をｂ、荷重センサ９４ｃが検出する荷重値をｃ、荷重センサ９４ｄが検出する荷重値をｄとした場合、重心のＸ１軸座標値（Ｘ１）およびＹ１軸座標値（Ｙ１）は、以下の数式を用いて算出することができる。
Ｘ１＝（（ａ＋ｃ）―（ｂ＋ｄ））×ｍ
Ｙ１＝（（ｃ＋ｄ）―（ａ＋ｂ））×ｎ
ここで、ｍおよびｎは、それぞれ予め定められた定数である。
【０２１０】
このようにして算出される合計荷重値および重心位置は、ボード型コントローラ９上のユーザ動作や体重移動（姿勢）に応じて変化する。一例として、ユーザがボード型コントローラ９上で足踏みを繰り返した場合、合計荷重値が足踏み周期に応じて変動するとともに、ユーザが左足を乗せる位置と右足を乗せる位置の間を、重心位置が足踏み周期に応じて往復移動するように変化する。他の例として、ユーザがボード型コントローラ９上で屈伸運動を繰り返した場合、合計荷重値が屈伸周期に応じて変動するが、重心位置の変化が相対的に少なくなる。
【０２１１】
次に、ＣＰＵ１０は、端末装置６から送信されてくるデータに基づいて、オフセット補正およびスケーリング補正した端末装置６の姿勢や動きを算出し（ステップ８２）、次のステップに処理を進める。例えば、ＣＰＵ１０は、加速度データＤｂ１が示す加速度および角速度データＤｂ２が示す角速度に基づいて、実空間における端末装置６の姿勢や動きを（ベクトルＶａｘ、ベクトルＶａｙ、およびベクトルＶａｚ）を算出する。そして、ＣＰＵ１０は、実空間における端末装置６の姿勢や動きをオフセット補正およびスケーリング補正して、補正後の端末装置６の姿勢や動きを算出し、端末装置奥行方向データＤｅ２、端末装置上方向データＤｅ３、および端末装置右方向データＤｅ４を更新する。
【０２１２】
ここで、ＣＰＵ１０は、角速度データＤｂ２が示す角速度を用いて、端末装置６の単位時間当たりにおける実空間での回転量（方向変化量）を算出することができる。また、実空間において端末装置６がほぼ静止している状態（静的な状態）では、端末装置６に対して加えられる加速度が重力加速度となるため、加速度データＤｂ１が示す加速度によって端末装置６に加えられる重力方向（すなわち、実空間における鉛直方向を基準とした端末装置６の姿勢であり、鉛直方向を基準としたｘｙｚ軸の方向であって、ベクトルＶａｘ、ベクトルＶａｙ、およびベクトルＶａｚの方向）を算出することができる。したがって、ＣＰＵ１０は、加速度データＤｂ１が示す加速度および角速度データＤｂ２が示す角速度に基づいて、端末装置６の方向変化や姿勢を算出することができる。
【０２１３】
なお、本実施形態においては、端末装置６で検出される加速度および角速度を示すデータに基づいて端末装置６の方向変化や姿勢を算出するが、他の実施形態においては、何れか１つのデータや３つ以上のデータを用いて端末装置６の方向変化や姿勢を算出してもよい。例えば、端末装置６に設けられた磁気センサ６０２は、端末装置６に加わる磁気を検出しており、端末装置６に加わる地磁気の方向から端末装置６を基準とした所定の方位（すなわち、所定の方位を基準とした端末装置６の姿勢）を算出することができる。なお、端末装置６が配置されている実空間に、地磁気以外の磁界が発生している場合であっても、端末装置６の回転量を算出することができる。したがって、ＣＰＵ１０は、端末装置６で検出される加速度、角速度、および磁気を示すデータの少なくとも１つを用いれば、端末装置６の方向変化や姿勢を算出することができる。
【０２１４】
また、端末装置６の姿勢の具体的な算出方法はどのような方法であってもよいが、例えば、角速度データＤｂ２が示す角速度に基づいて算出される端末装置６の姿勢を、加速度データＤｂ１が示す加速度および磁気センサ６０２が検出した磁気の方向を用いて補正する方法が考えられる。
【０２１５】
具体的には、ＣＰＵ１０は、まず、角速度データＤｂ２が示す角速度に基づいて端末装置６の姿勢を算出する。端末装置６の姿勢を角速度から算出する方法はどのような方法であってもよいが、一例として、前回の姿勢（前回に算出されたｘｙｚ軸の方向）と今回の角速度（今回の処理ループにおけるステップ４３で取得された角速度）とを用いて算出される。ＣＰＵ１０は、前回のｘｙｚ軸方向を今回の角速度で各軸周りに単位時間分だけ回転させることによって新たなｘｙｚ軸方向を算出する。なお、上述したように上記ステップ４１および４２において、端末装置６の補正前の初期姿勢および補正後の初期姿勢が定められている。したがって、端末装置６の姿勢を角速度から算出する場合には、ＣＰＵ１０は、最初に算出された端末装置６の補正前の初期姿勢または補正後の初期姿勢を基準として現時点における端末装置６の姿勢を算出することができる。
【０２１６】
次に、ＣＰＵ１０は、角速度に基づいて算出した端末装置６の姿勢（ｘｙｚ軸方向）を、加速度データＤｂ１が示す加速度を用いて補正する。具体的には、ＣＰＵ１０は、加速度データＤｂ１が示す加速度に基づいて端末装置６の姿勢（ｘｙｚ軸方向）を算出する。ここで、端末装置６がほぼ静止している状態では、端末装置６に対して加えられている加速度は重力加速度となる。したがって、この状態においては、加速度データＤｂ１が示す加速度の方向を用いて重力加速度の方向（重力方向）を算出することができるので、重力方向に対する端末装置６の向き（重力方向を基準としたｘｙｚ軸方向）を算出することができる。
【０２１７】
加速度に基づく端末装置６の姿勢が算出されると、ＣＰＵ１０は、加速度に基づく姿勢を用いて、角速度に基づく姿勢を補正する。具体的には、ＣＰＵ１０は、角速度に基づいて算出された端末装置６の姿勢（ｘｙｚ軸方向）を、加速度に基づいて算出された端末装置６の姿勢（ｘｙｚ軸方向）へ所定の割合で近づける補正を行う。上記所定の割合は、予め定められた固定値であってもよいし、加速度データＤｂ１が示す加速度等に応じて設定されてもよい。また、加速度に基づいて算出された端末装置６の姿勢に関しては、重力方向を軸とする回転方向については姿勢を算出することができないので、ＣＰＵ１０は、当該回転方向に関して補正を行わないようにしてもよい。なお、角速度に基づいて算出された端末装置６の姿勢を、磁気センサ６０２が検出した磁気の方向に基づいて補正する場合には、ＣＰＵ１０は、角速度に基づいて算出された端末装置６の姿勢を、磁気の方向に基づいて算出された端末装置６の姿勢へと所定の割合で近づけるようにすればよい。以上によれば、ＣＰＵ１０は、端末装置６の姿勢を正確に算出することができる。なお、上述した加速度、角速度、磁気の方向に基づく姿勢の補正は、オフセット補正およびスケーリング補正の前に行ってもいいし、オフセット補正およびスケーリング補正の後に行ってもかまわない。オフセット補正およびスケーリング補正する方法については、上記ステップ４１の処理と同様であるため、詳細な説明を省略する。
【０２１８】
次に、ＣＰＵ１０は、プレイヤオブジェクトＰｏを設定し（ステップ８３）、次のステップに処理を進める。以下、図２１を参照して、上記ステップ８３におけるプレイヤオブジェクト設定処理について説明する。
【０２１９】
図２１において、ＣＰＵ１０は、実空間基準方向と端末装置奥行方向との間の水平角度差を算出し（ステップ１２０）、次のステップに処理を進める。ここで、上記水平角度差は、実空間における補正後の実空間基準方向と端末装置奥行方向との間の角度差を水平面に投影した角度差（例えば、図２３に示す角度Ｆ）であり、端末装置６の初期姿勢から実空間の鉛直方向を軸として端末装置６の端末装置奥行方向（ｚ軸正方向）を変えた角度を示すものである。例えば、ＣＰＵ１０は、実空間基準方向データＤｅ１が示す実空間基準方向と、端末装置奥行方向データＤｅ２が示す端末装置奥行方向とを用いて、上記水平角度差を算出する。
【０２２０】
次に、ＣＰＵ１０は、上記水平角度差および上下方向における端末装置６の姿勢（上下角度）に応じて、仮想世界基準方向に対する操作指示方向を算出し（ステップ１２１）、次のステップに処理を進める。例えば、図２３に示すように、ＣＰＵ１０は、仮想世界基準方向データＤｆ１が示す仮想世界基準方向を用いて、当該仮想世界基準方向と操作指示方向とを仮想世界の水平面に投影した場合に生じる角度差が、上記水平角度差となり、かつ、同じ位置関係となる（すなわち、実空間基準方向に対して端末装置奥行方向が左回転している場合は、仮想世界基準方向に対して操作指示方向も左回転した位置関係となるようにする）ように仮想世界における操作指示方向を算出する（図２３に示す角度Ｆ）。さらに、図２４に示すように、ＣＰＵ１０は、端末装置奥行方向データＤｅ２が示す端末装置奥行方向を用いて、仮想世界における水平方向と操作指示方向との角度差が、実空間における水平方向と当該端末装置奥行方向との角度差となり、かつ、同じ位置関係となる（すなわち、実空間の水平方向に対して端末装置奥行方向が下向きである場合は、仮想世界の水平方向に対して操作指示方向も下向きとなるようにする）ように仮想世界における操作指示方向を算出する（図２４に示す角度Ｉ）。そして、ＣＰＵ１０は、算出された操作指示方向を用いて、操作指示方向データＤｆ２を更新する。
【０２２１】
次に、ＣＰＵ１０は、端末装置６の端末装置上方向に基づいて、仮想世界における操作上方向を算出し（ステップ１２２）、次のステップに処理を進める。例えば、ＣＰＵ１０は、端末装置奥行方向データＤｅ２が示す端末装置奥行方向、端末装置上方向データＤｅ３が示す端末装置上方向、および操作指示方向データＤｆ２が示す操作指示方向を用いて、操作上方向を算出する。具体的には、図２４に示すように、操作指示方向を基準とした仮想世界における操作上方向が、端末装置奥行方向を基準とした実空間における補正後の端末装置上方向と同じ方向となるように、操作上方向を算出する。ここで、端末装置奥行方向および端末装置上方向は、重力方向（鉛直方向）を基準とした実空間における方向をオフセット補正およびスケーリング補正してそれぞれ設定されており、操作指示方向も仮想世界内の方向として設定されているため、当該仮想世界に設定されている重力方向を基準とした方向として扱うこともできる。したがって、端末装置奥行方向、端末装置上方向、および操作指示方向を用いれば、実空間の端末装置上方向に対応する仮想世界の操作上方向を算出することが可能となる。そして、ＣＰＵ１０は、算出された操作上方向を用いて、操作上方向データＤｆ３を更新する。
【０２２２】
次に、ＣＰＵ１０は、プレイヤオブジェクトＰｏが移動しているか否かを判断する（ステップ１２３）。例えば、ＣＰＵ１０は、移動ベクトルデータＤｈに移動ベクトルが設定されている場合、プレイヤオブジェクトＰｏが移動していると判断する。そして、ＣＰＵ１０は、プレイヤオブジェクトＰｏが移動している場合、次のステップ１２４に処理を進める。一方、ＣＰＵ１０は、プレイヤオブジェクトＰｏが移動していない場合、次のステップ１３０に処理を進める。
【０２２３】
ステップ１２４において、ＣＰＵ１０は、上記ステップ１２０で算出された水平角度差に応じて、回転移動角度を算出し、次のステップに処理を進める。例えば、ＣＰＵ１０は、回転移動角度Ｇ（図２３に示す角度Ｇ）を
Ｇ＝Ｆ×ｆ１
で算出する。ここで、Ｆは水平角度差であり、ｆ１は１より小さい正の定数（例えば、０．００１）である。
【０２２４】
次に、ＣＰＵ１０は、上記ステップ１２４で算出された回転移動角度に応じて、仮想世界基準方向を変化させて（ステップ１２５）、次のステップに処理を進める。例えば、ＣＰＵ１０は、仮想世界基準方向データＤｆ１が示す仮想世界基準方向を仮想世界の水平面に投影した場合に、上記回転移動角度だけ仮想世界の重力方向周りに回転するように操作指示方向に近づけて仮想世界基準方向を変化させ、変化させた仮想世界基準方向を用いて仮想世界基準方向データＤｆ１を更新する。
【０２２５】
次に、ＣＰＵ１０は、操作指示方向データＤｆ２が示す操作指示方向および操作上方向データＤｆ３が示す操作上方向に基づいて、仮想世界におけるプレイヤオブジェクトＰｏの向きおよび姿勢を設定し（ステップ１２６）、次のステップに処理を進める。一例として、ＣＰＵ１０は、操作指示方向データＤｆ２が示す操作指示方向をそのままプレイヤオブジェクトＰｏの向き（移動する方向）とする。そして、ＣＰＵ１０は、操作上方向データＤｆ３が示す操作上方向が仮想世界におけるプレイヤオブジェクトＰｏの上方向（図２４に示す胴体背面方向）となるように、プレイヤオブジェクトＰｏがロールする姿勢を設定する。そして、設定されたプレイヤオブジェクトＰｏの向きおよび姿勢に基づいて、動作姿勢データＤｇを更新する。したがって、仮想世界におけるプレイヤオブジェクトＰｏの向きおよび姿勢は、実空間における端末装置６の姿勢に基づいて設定されることになる。
【０２２６】
一例として、図２４に示すように、端末装置６がＨ方向にロール角度θだけロール回転（すなわち、ｚ軸周りにｙ軸がＨ方向に角度θだけ回転移動）した場合、プレイヤオブジェクトＰｏは、移動方向を中心としてロール角度θだけＨ方向へ仮想世界内でロール（例えば、移動方向周りに胴体背面方向がＨ方向に角度θだけ回転移動）して姿勢制御される。そして、プレイヤオブジェクトＰｏが配置されている仮想世界の上下方向が、上記ロール方向の逆方向へ上記ロール角度θだけＬＣＤ６１の上下方向から回転した方向に表示されるように、プレイヤオブジェクトＰｏおよび仮想世界が端末装置６のＬＣＤ６１に表示される。これによって、プレイヤオブジェクトＰｏは、ロール角度θだけＨ方向へ仮想世界内でロールしているが、ＬＣＤ６１に表示される仮想世界がＨ方向の逆方向に同じロール角度θだけ回転して表示されるため、結果的にＬＣＤ６１に対しては同じ状態で表示され、プレイヤオブジェクトＰｏ以外の仮想世界がＨ方向の逆方向に回転したように表示される。また、端末装置６は、Ｈ方向へロール角度θだけ回転するが、ＬＣＤ６１に表示されるプレイヤオブジェクトＰｏ以外の仮想世界がＨ方向の逆方向に同じロール角度θだけ回転して表示されるため、結果的に実空間に対しては同じ方向に当該仮想世界が表示され、プレイヤオブジェクトＰｏが仮想世界や実空間に対してＨ方向に回転したように表示される。
【０２２７】
また、ユーザが端末装置６の端末装置奥行方向を上に向けて（すなわち、上方向へピッチ）補正後の端末装置奥行方向が水平面に対して上方に向いている場合、当該上方に向いた角度に応じた仰角にプレイヤオブジェクトＰｏの向きが設定される。また、ユーザが端末装置６の端末装置奥行方向を下に向けて（すなわち、下方向へピッチ）、補正後の端末装置奥行方向が水平面に対して下方を向いている場合、当該下方に向いた角度に応じた俯角にプレイヤオブジェクトＰｏの向きが設定される。また、ユーザが端末装置６を端末装置奥行方向周りに回転させる場合（すなわち、ロール）、端末装置６がロールした方向へロールした角度に応じてプレイヤオブジェクトＰｏも仮想世界内でロールする。さらに、実空間基準方向に対する端末装置６の左右方向変化に基づいて、プレイヤオブジェクトＰｏの左右の向きが設定される。例えば、端末装置６がｙ軸回りの回転方向であるヨー方向（図３参照）に回動した場合、当該回転量に応じてプレイヤオブジェクトＰｏの向きも変化する。具体的には、端末装置６がｙ軸負方向からみて左方向へｙ軸周りの回動をした場合、当該回転量に応じてプレイヤオブジェクトＰｏの向きもプレイヤオブジェクトＰｏから見て左方向に変化する。また、実空間基準方向に対してユーザが端末装置６を左または右方向に回動させた状態を維持した場合、仮想世界基準方向が左または右方向へ変化し続けるため、上記ステップ１２１が実行されることによって仮想世界基準方向の変化に応じて操作指示方向も左または右方向へ変化し続ける。したがって、実空間基準方向に対してユーザが端末装置６を左または右方向に回動させた状態を維持した場合、プレイヤオブジェクトＰｏの向きもさらに左または右方向へ変化し続けることになる。つまり、ユーザがプレイヤオブジェクトＰｏの向きを逆方向に反転させる等、大きく変化させたい場合であっても、端末装置６の向きを逆方向等に大きく変化させる必要がないため、ユーザの操作性を向上させることができる。
【０２２８】
次に、ＣＰＵ１０は、プレイヤオブジェクト動作設定処理を行い（ステップ１２７）、次のステップに処理を進める。以下、図２２を参照して、上記ステップ１２７で行うプレイヤオブジェクト動作設定処理について説明する。
【０２２９】
図２２において、ＣＰＵ１０は、動作モードフラグデータＤｍが示す動作モードフラグがオフに設定されているか否かを判断する（ステップ１４０）。そして、ＣＰＵ１０は、動作モードフラグがオフに設定されている場合、次のステップ１４１に処理を進める。一方、ＣＰＵ１０は、動作モードフラグがオンに設定されている場合、次のステップ１４８に処理を進める。
【０２３０】
ステップ１４１において、ＣＰＵ１０は、合計荷重値が所定値以上であるか否かを判断する。例えば、ＣＰＵ１０は、荷重値データＤｃが示す最新の合計荷重値が、上記所定値以上であるか否かを判断する。上記所定値は、ボード型コントローラ９上でユーザが屈伸するような動作をしたことを判定するための閾値であり、一例としてボード型コントローラ９に乗っているユーザの体重に所定の割合（例えば、２０％）を加算した値に設定される。ここで、ボード型コントローラ９に乗っているユーザの体重は、上記合計荷重値に基づいて算出（例えば、所定期間内に得られた合計荷重値の平均値）されてもいいし、ユーザが予め入力した値であってもよい。そして、ＣＰＵ１０は、合計荷重値が所定値以上である場合、次のステップ１４２に処理を進める。一方、ＣＰＵ１０は、合計荷重値が所定値未満である場合、次のステップ１４４に処理を進める。
【０２３１】
ステップ１４２において、ＣＰＵ１０は、ドルフィンキックを打つ動作にオブジェクト動作を設定し、次のステップに処理を進める。例えば、ＣＰＵ１０は、合計荷重値が上記所定値以上である場合、ボード型コントローラ９の上でユーザが屈伸運動したと判断する。この場合、ＣＰＵ１０は、プレイヤオブジェクトＰｏの動作をドルフィンキック泳法で泳ぐ動作に設定するとともに、ドルフィンキックを打つ動作に設定し、設定された動作を用いて動作姿勢データＤｇを更新する。
【０２３２】
次に、ＣＰＵ１０は、動作モードフラグをオンに設定し（ステップ１４３）、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ１０は、動作モードフラグデータＤｍが示す動作モードフラグをオンに変更する。
【０２３３】
一方、上記ステップ１４１において合計荷重値が所定値未満であると判定された場合、ＣＰＵ１０は、重心位置データＤｄが示す重心位置が右足領域外から右足領域内へ移動したか否かを判断する（ステップ１４４）。そして、ＣＰＵ１０は、重心位置が右足領域外から右足領域内へ移動した場合、次のステップ１４５に処理を進める。一方、ＣＰＵ１０は、重心位置が右足領域外から右足領域内へ移動していない場合、次のステップ１４６に処理を進める。
【０２３４】
ここで、ボード型コントローラ９の台９ａ上の位置に対応する所定の座標系（例えば、台９ａの中心を原点、台９ａの長辺方向をＸ１軸方向、短辺方向をＹ１軸方向とするＸ１Ｙ１座標系）には、ユーザが足踏み動作において左足を上げて右足を下げた場合に上記重心位置が移動する領域（右足領域）と、ユーザが足踏み動作において右足を上げて左足を下げた場合に上記重心位置が移動する領域（左足領域）とが設定される。例えば、台９ａ上における左右（例えば、電源ボタン９ｃを下にした左右）に左足領域および右足領域が設定され、左足領域および右足領域の間には前後方向に延びる所定幅の中立領域が設定される。上記ステップ１４４の処理では、重心位置データＤｄが示す最新の重心位置が中立領域内から右足領域内に移動した場合等、右足領域外から右足領域内へ移動した場合に肯定判定される。
【０２３５】
なお、ユーザは、ボード型コントローラ９上で向きを変えながら足踏みをすることが考えられる。この場合、上記左足領域、上記右足領域、および上記中立領域それぞれの位置を固定していると、正確な足踏み判定ができなくなることが考えられる。このような場合、上記座標系における重心位置の移動に基づいて、上記座標系における上記左足領域、上記右足領域、および上記中立領域を移動させればよい。例えば、所定期間における重心位置の移動距離が所定長さ以上である場合、当該所定期間中における重心位置の移動軌跡の中心位置において当該移動軌跡に対して垂直に延びるように上記中立領域を移動させ、当該中立領域の移動に応じて上記左足領域および上記右足領域を移動させる。このように上記左足領域、上記右足領域、および上記中立領域を移動させることによって、ボード型コントローラ９上で向きを変えながらユーザが足踏みしたとしても、正確に足踏み判定を行うことができる。
【０２３６】
また、上述した足踏み判定では、ユーザがボード型コントローラ９上で足踏みした足が左足であるか右足であるかを判定しているが、このような左右の区別をしなくてもかまわない。例えば、上述した説明における「左足」を「一方の足」とし、「右足」を「他方の足」として処理を行った場合、ユーザが足踏みした足とプレイヤオブジェクトＰｏがバタ足で打つ足とが上述した処理の逆になる可能性があるものの、ユーザの足踏み動作にプレイヤオブジェクトＰｏのバタ足動作のタイミングを同期させた動作指示が可能となる。
【０２３７】
ステップ１４５において、ＣＰＵ１０は、右足でバタ足を打つ動作にオブジェクト動作を設定し、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ１０は、重心位置が右足領域外から右足領域内へ移動した場合、ボード型コントローラ９の上でユーザが左足を上げて右足を下げる足踏み動作を行ったと判断する。この場合、ＣＰＵ１０は、プレイヤオブジェクトＰｏの動作をバタ足泳法で泳ぐ動作に設定するとともに、右足でバタ足を打つ動作に設定し、設定された動作を用いて動作姿勢データＤｇを更新する。
【０２３８】
ステップ１４６において、ＣＰＵ１０は、重心位置データＤｄが示す重心位置が左足領域外から左足領域内へ移動したか否かを判断する。そして、ＣＰＵ１０は、重心位置が左足領域外から左足領域内へ移動した場合、次のステップ１４７に処理を進める。一方、ＣＰＵ１０は、重心位置が左足領域外から左足領域内へ移動していない場合、次のステップ１５１に処理を進める。
【０２３９】
ステップ１４７において、ＣＰＵ１０は、左足でバタ足を打つ動作にオブジェクト動作を設定し、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ１０は、重心位置が左足領域外から左足領域内へ移動した場合、ボード型コントローラ９の上でユーザが右足を上げて左足を下げる足踏み動作を行ったと判断する。この場合、ＣＰＵ１０は、プレイヤオブジェクトＰｏの動作をバタ足泳法で泳ぐ動作に設定するとともに、左足でバタ足を打つ動作に設定し、設定された動作を用いて動作姿勢データＤｇを更新する。
【０２４０】
上記ステップ１４０において動作モードフラグがオンであると判定された場合、ＣＰＵ１０は、動作モードフラグがオンされてから所定時間が経過したか否かを判断する（ステップ１４８）。そして、ＣＰＵ１０は、所定時間が経過した場合、次のステップ１４９に処理を進める。一方、ＣＰＵ１０は、所定時間が経過していない場合、次のステップ１５０に処理を進める。ここで、上記所定時間は、ドルフィンキックが打たれてから次のドルフィンキック操作入力やバタ足操作入力を可能にするまでの時間であり、当該所定時間が経過するまでの間はボード型コントローラ９を用いたユーザの動作判定を行わない。これによって、ドルフィンキックを行った直後におけるユーザ動作の誤判定を防止することが可能となる。
【０２４１】
ステップ１４９において、ＣＰＵ１０は、動作モードフラグをオフに設定し、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ１０は、動作モードフラグデータＤｍが示す動作モードフラグをオフに変更する。
【０２４２】
一方、ステップ１５０において、ＣＰＵ１０は、ドルフィンキック中にオブジェクト動作を設定し、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ１０は、プレイヤオブジェクトＰｏの動作をドルフィンキック泳法で泳ぐ動作に継続して設定するとともに、ドルフィンキック中に設定し、設定された動作を用いて動作姿勢データＤｇを更新する。
【０２４３】
動作モードフラグがオフ（上記ステップ１４０で否定判定）、合計荷重値が所定値未満（上記ステップ１４１で否定判定）、重心位置が右足領域外から右足領域内へ移動していない（上記ステップ１４４で否定判定）、および重心位置が左足領域外から左足領域内へ移動していない（上記ステップ１４６で否定判定）場合、ＣＰＵ１０は、現在設定されている動作を継続する動作に設定し（ステップ１５１）、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ１０は、足を打つ動作（例えば、バタ足を打つ動作）が設定されている場合は当該動作を解除し、オブジェクト動作として設定されているプレイヤオブジェクトＰｏの泳法はそのまま継続して設定し、設定された動作を用いて動作姿勢データＤｇを更新する。
【０２４４】
図２１に戻り、上記ステップ１２７におけるプレイヤオブジェクト動作設定処理の後、ＣＰＵ１０は、プレイヤオブジェクトＰｏの移動ベクトルを設定し（ステップ１２８）、次のステップに処理を進める。例えば、ＣＰＵ１０は、荷重値データＤｃが示す合計荷重値の時系列的な配列（合計荷重値の変化履歴）および上記ステップ１２７で設定されたプレイヤオブジェクトＰｏの動作（泳法）に基づいて、プレイヤオブジェクトＰｏの移動速度を算出する。一例として、ＣＰＵ１０は、合計荷重値が変化する周期が短いほど、プレイヤオブジェクトＰｏが移動する速度を速く算出する。他の例として、ＣＰＵ１０は、合計荷重値の最大値や変化幅が大きいほど、プレイヤオブジェクトＰｏが移動する速度を速く算出する。例えば、ユーザがボード型コントローラ９上で足踏みするピッチが短いほど、バタ足で泳いでいるプレイヤオブジェクトＰｏの移動速度が速くなる。また、ユーザがボード型コントローラ９上で屈伸するピッチが短いほどドルフィンキックで泳いでいるプレイヤオブジェクトＰｏの移動速度が速くなり、屈伸する強さが強いほど、ドルフィンキックで泳いでいるプレイヤオブジェクトＰｏの移動速度が速くなる。そして、ＣＰＵ１０は、算出された移動速度を設定されている泳法による係数で補正して、プレイヤオブジェクトＰｏの移動速度を決定する。また、プレイヤオブジェクトＰｏの移動速度は、足を打つタイミングにおいて相対的に速く設定し、次の足を打つタイミングまでは漸減的に遅くなるように設定される。
【０２４５】
また、ＣＰＵ１０は、操作指示方向データＤｆ２が示す仮想世界における操作指示方向をプレイヤオブジェクトＰｏの移動方向とする。そして、ＣＰＵ１０は、上述したように算出されたプレイヤオブジェクトＰｏの移動速度および移動方向を用いて、仮想世界における移動ベクトルを算出し、算出された移動ベクトルを用いて移動ベクトルデータＤｈを更新する。例えば、ＣＰＵ１０は、算出されたプレイヤオブジェクトＰｏの移動速度を用いて移動ベクトルの長さを設定し、操作指示方向データＤｆ２が示す操作指示方向を用いて移動ベクトルの方向を設定する。
【０２４６】
次に、ＣＰＵ１０は、プレイヤオブジェクトＰｏの位置を算出し（ステップ１２９）、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ１０は、移動ベクトルデータＤｈが示す移動ベクトルに基づいて、位置データＤｉが示すプレイヤオブジェクトＰｏの位置を仮想世界内で移動させ、移動後の位置を用いて位置データＤｉを更新する。
【０２４７】
一方、上記ステップ１２３においてプレイヤオブジェクトＰｏが移動していないと判定された場合、ＣＰＵ１０は、操作指示方向データＤｆ２が示す操作指示方向および操作上方向データＤｆ３に基づいて、仮想世界におけるプレイヤオブジェクトＰｏの向きを設定し（ステップ１３０）、次のステップに処理を進める。なお、上記ステップ１３０の処理については、上記ステップ１２６の処理と同様であるため詳細な説明を省略する。
【０２４８】
次に、ＣＰＵ１０は、静止状態にオブジェクト動作を設定し（ステップ１３１）、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ１０は、プレイヤオブジェクトＰｏの動作を静止状態（例えば、水中を泳ぐことなく漂っている状態）に設定し、設定された動作を用いて動作姿勢データＤｇを更新する。
【０２４９】
図２０に戻り、上記ステップ８３のプレイヤオブジェクト設定処理の後、ＣＰＵ１０は、仮想カメラに関するパラメータを設定し（ステップ８４）、次のステップに処理を進める。例えば、端末用ゲーム画像およびモニタ用ゲーム画像は、仮想世界（仮想空間）内に仮想カメラを配置して、仮想カメラから見たゲーム空間を計算することによって得られる３次元のＣＧ画像等によってそれぞれ生成される。具体的には、端末用ゲーム画像を生成するための第１仮想カメラは、仮想世界に配置されているプレイヤオブジェクトＰｏの背後近傍から見た仮想世界内の様子が含まれるように設定される。また、モニタ用ゲーム画像を生成するための第２仮想カメラは、上記第１仮想カメラが設定されている同じ仮想世界に設定され、当該仮想世界に配置されているプレイヤオブジェクトＰｏを遠方から鳥瞰した仮想世界内の様子が含まれるように設定される。ＣＰＵ１０は、位置データＤｉが示すプレイヤオブジェクトＰｏの位置や操作指示方向データＤｆ２に応じた操作指示方向（プレイヤオブジェクトＰｏの方向）に基づいて、第１仮想カメラおよび第２仮想カメラの仮想世界における位置（第１仮想カメラおよび第２仮想カメラに関するパラメータ）を設定する。このように、端末用ゲーム画像およびモニタ用ゲーム画像がそれぞれ異なる視点から見た仮想世界のゲーム画像となるため、それらが表示されるＬＣＤ６１およびモニタ２にもそれぞれ異なる視点から見た仮想世界のゲーム画像が表示されることになる。
【０２５０】
具体的には、ＣＰＵ１０は、上記オフセット補正および上記スケーリング補正が行われた端末装置６の姿勢と同じ姿勢となるように仮想世界における第１仮想カメラの姿勢を制御する。すなわち、上記補正後の端末装置６のｚ軸正方向に基づいて設定される操作指示方向（操作指示方向データＤｆ２が示す操作指示方向）を第１仮想カメラのＺ軸正方向（視線方向）に対応させ、上記補正後の端末装置６のｙ軸正方向に基づいて設定される操作上方向（操作上方向データＤｆ３が示す操作上方向）を第１仮想カメラのＹ軸正方向（仮想カメラ上方向）に対応させて、第１仮想カメラの姿勢を制御する。そして、プレイヤオブジェクトＰｏと第１仮想カメラとのロール方向を含めた位置関係を固定して、仮想世界において移動するプレイヤオブジェクトＰｏの位置に基づいて第１仮想カメラの位置を設定する。つまり、ユーザは、端末装置６本体を動かすことによって、端末装置６のＬＣＤ６１に表示されている仮想世界画像を生成する第１仮想カメラおよびプレイヤオブジェクトＰｏの動作を制御することが可能となる。そして、上記補正後の端末装置６の姿勢および向きが第１仮想カメラの姿勢および向きに連動するため、ユーザは端末装置６のＬＣＤ６１を覗き窓として仮想世界内を覗いているような感覚を味わうことができる。
【０２５１】
次に、ＣＰＵ１０は、プレイヤオブジェクトＰｏの移動軌跡を設定し（ステップ８５）、当該サブルーチンによる処理を終了する。例えば、ＣＰＵ１０は、移動軌跡データＤｋが示す移動軌跡に、位置データＤｉが示すプレイヤオブジェクトＰｏの現在位置を追加し、現在位置が追加された移動軌跡を用いて移動軌跡データＤｋを更新する。
【０２５２】
図１９に戻り、上記ステップ４５におけるゲーム制御処理の後、ＣＰＵ１０およびＧＰＵ３２は、モニタ２に表示するためのモニタ用ゲーム画像を生成し（ステップ４６）、次のステップに処理を進める。例えば、ＣＰＵ１０およびＧＰＵ３２は、上記ステップ４５のゲーム制御処理の結果を表す各データをメインメモリから読み出し、モニタ用ゲーム画像を生成するために必要なデータをＶＲＡＭ３４から読み出してゲーム画像を生成し、生成されたモニタ用ゲーム画像をＶＲＡＭ３４に記憶する。上記モニタ用ゲーム画像は、上記ステップ４５のゲーム制御処理の結果を表すものであればよく、どのような方法で生成されてもよい。例えば、モニタ用ゲーム画像は、仮想カメラデータＤｊが示す第２仮想カメラに関するパラメータに基づいて仮想世界に第２仮想カメラを配置し、動作姿勢データＤｇおよび位置データＤｉに基づいて仮想世界にプレイヤオブジェクトＰｏを配置し、移動軌跡データＤｋに基づいて仮想世界に移動軌跡Ｌｐを配置して、当該第２仮想カメラから見た仮想世界を計算することによって得られる３次元のＣＧ画像によって生成される。
【０２５３】
次に、ＣＰＵ１０およびＧＰＵ３２は、端末装置６に表示するための端末用ゲーム画像を生成し（ステップ４７）、次のステップに処理を進める。例えば、ＣＰＵ１０およびＧＰＵ３２は、上記ステップ４５のゲーム制御処理の結果を表す各データをメインメモリから読み出し、端末用ゲーム画像を生成するために必要なデータをＶＲＡＭ３４から読み出してゲーム画像を生成し、生成されたモニタ用ゲーム画像をＶＲＡＭ３４に記憶する。端末用ゲーム画像についても、上記モニタ用ゲーム画像と同様に上記ステップ４５のゲーム制御処理の結果を表すものであればよく、どのような方法で生成されてもよい。また、端末用ゲーム画像は、上記モニタ用ゲーム画像と同様の方法で生成されてもよいし、異なる方法で生成されてもよい。例えば、端末用ゲーム画像は、仮想カメラデータＤｊが示す第１仮想カメラに関するパラメータに基づいて仮想世界に第１仮想カメラを配置し、動作姿勢データＤｇおよび位置データＤｉに基づいて仮想世界にプレイヤオブジェクトＰｏを配置して、当該第１仮想カメラから見た仮想世界を計算することによって得られる３次元のＣＧ画像によって生成される。
【０２５４】
なお、動作姿勢データＤｇが示すプレイヤオブジェクトＰｏの動作が足を打つ動作（ドルフィンキックを打つ動作やバタ足を打つ動作）を示している場合、プレイヤオブジェクトＰｏが足を打つ動作を行うように上記仮想世界に配置してもよい。これによって、ユーザがボード型コントローラ９で行う動作（足踏み動作、屈伸動作）に同期させて、プレイヤオブジェクトＰｏを動作させることが可能となる。
【０２５５】
次に、ＣＰＵ１０は、モニタ２のスピーカ２ａに出力するためのモニタ用ゲーム音声を生成し（ステップ４８）、次のステップに処理を進める。例えば、ＣＰＵ１０は、上記ステップ４５のゲーム制御処理の結果に応じてスピーカ２ａから出力するためのモニタ用ゲーム音声をＤＳＰ３３に生成させる。一例として、ＣＰＵ１０は、上記ステップ４５のゲーム制御処理の結果に応じて設定された仮想世界において、第２仮想カメラの位置を基準として聞こえると想定される各オブジェクトの声、動作音、および効果音等に、モニタ２から出力させたいＢＧＭ等を加えたモニタ用ゲーム音声を、ＤＳＰ３３に生成させる。
【０２５６】
次に、ＣＰＵ１０は、端末装置６のスピーカ６０７に出力するための端末用ゲーム音声を生成し（ステップ４９）、次のステップに処理を進める。例えば、ＣＰＵ１０は、上記ステップ４５のゲーム制御処理の結果に応じてスピーカ６０７から出力するための端末用ゲーム音声をＤＳＰ３３に生成させる。一例として、ＣＰＵ１０は、上記ステップ４５のゲーム制御処理の結果に応じて設定された仮想世界において、第１仮想カメラの位置を基準として聞こえると想定される各オブジェクトの声、動作音、および効果音等に、端末装置６から出力させたいＢＧＭ等を加えた端末用ゲーム音声を、ＤＳＰ３３に生成させる。なお、上記端末用ゲーム音声は、上記モニタ用ゲーム音声と同じであってもよいし、異なっていてもよい。また、上記端末用ゲーム音声は、上記モニタ用ゲーム音声に対して、一部の音声が異なる（例えば効果音は異なるが、ＢＧＭが同じ）ものでもよい。なお、モニタ用ゲーム音声と端末用ゲーム音声とが同一である場合、ステップ４９において端末用ゲーム音声の生成処理が実行されなくてもよい。
【０２５７】
次に、ＣＰＵ１０は、モニタ２へモニタ用ゲーム画像およびモニタ用ゲーム音声を出力し（ステップ５０）、次のステップに処理を進める。例えば、ＣＰＵ１０は、ＶＲＡＭ３４に記憶されたモニタ用ゲーム画像のデータと、ＤＳＰ３３によって生成されたモニタ用ゲーム音声のデータとを、ＡＶ−ＩＣ１５へ送る。これに応じて、ＡＶ−ＩＣ１５は、モニタ用ゲーム画像およびモニタ用ゲーム音声を示すデータを、ＡＶコネクタ１６を介してモニタ２へ出力する。これによって、モニタ用ゲーム画像がモニタ２に表示されるとともに、モニタ用ゲーム音声がスピーカ２ａから出力される。
【０２５８】
次に、ＣＰＵ１０は、端末装置６へ端末用ゲーム画像および端末用ゲーム音声を送信し（ステップ５１）、次のステップに処理を進める。例えば、ＣＰＵ１０は、ＶＲＡＭ３４に記憶された端末用ゲーム画像のデータおよびＤＳＰ３３によって生成された端末用ゲーム音声のデータは、ＣＰＵ１０によってコーデックＬＳＩ２７に送られ、コーデックＬＳＩ２７によって所定の圧縮処理が行われる。さらに、圧縮処理が施された端末用ゲーム画像のデータおよび端末用ゲーム音声のデータは、コーデックＬＳＩ２７によって端末通信モジュール２８に送られ、アンテナ２９を介して端末通信モジュール２８によって端末装置６へ送信される。ゲーム装置本体５から送信された端末用ゲーム画像のデータおよび端末用ゲーム音声のデータは、端末装置６の無線モジュール６１０によって受信され、コーデックＬＳＩ６０６によって所定の伸張処理が行われる。そして、伸張処理が行われた端末用ゲーム画像のデータは、ＬＣＤ６１に出力され、伸張処理が行われた端末用ゲーム音声のデータ音声データは、サウンドＩＣ６０８に出力される。これによって、端末用ゲーム画像がＬＣＤ６１に表示されるとともに、端末用ゲーム音声がスピーカ６０７から出力される。
【０２５９】
次に、ＣＰＵ１０は、ゲームを終了するか否かを判定する（ステップ５２）。ゲームを終了する条件としては、例えば、ゲームオーバーやゲームクリアとなる条件が満たされたことや、ユーザがゲームを終了する操作を行ったこと等がある。ＣＰＵ１０は、ゲームを終了しない場合に上記ステップ４３に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。以降、ステップ４３〜ステップ５２の一連の処理は、ステップ５２でゲームを終了すると判定されるまで繰り返し実行される。
【０２６０】
このように、上述した処理によれば、端末装置６の姿勢（端末装置奥行方向）を仮想世界における操作指示方向に変換する際、オフセット補正およびスケーリング補正が行われる。例えば、上記オフセット補正を行うことによって、端末装置奥行方向が実空間の水平方向に対して俯角方向に所定角度下を向いた場合に仮想世界の水平方向へ操作指示方向が設定される。したがって、ユーザが操作指示方向を仮想世界の水平方向に維持したい場合であっても、端末装置６のＬＣＤ６１を実空間において垂直に起立した状態を保つような無理な姿勢を継続する必要がなく、ＬＣＤ６１を上記所定角度だけ仰角状態にした比較的楽な姿勢（基本姿勢）で端末装置６を操作することができる。また、上記スケーリング補正を行うことによって、端末装置奥行方向の変化角度が、適切な角度にスケーリングされて操作指示方向に変換される。例えば、上記スケーリング補正を行うことによって、端末装置奥行方向の変化角度が相対的に小さい場合であっても、仮想世界水平方向に対して相対的に大きな変化角度で操作指示方向を変化させることができるため、操作負担が軽減されるとともに、端末装置奥行方向を実空間における真上や真下方向に向けるような負担の大きい姿勢になることなく、仮想世界における真上や真下方向に操作指示方向を設定することも可能となる。
【０２６１】
なお、上述した実施形態では、端末装置６の姿勢（端末装置奥行方向）を仮想世界における操作指示方向に変換する際、オフセット補正およびスケーリング補正が行われる例を用いたが、何れか一方のみの補正を行ってもかまわない。このように何れか一方の補正を行う場合であっても、上述した効果の一部を得ることができることは言うまでもない。例えば、オフセット補正のみを行う場合は、端末装置奥行方向（ベクトルＶａｚ）を補正する際に、実空間の水平面に対する端末装置奥行方向の向きをオフセット補正する角度だけ仰角方向に回転させる補正のみが行われる。また、スケーリング補正のみを行う場合は、図１４Ａ〜図１７Ｂに示した補正に用いる関数の切片を０にし、当該関数を用いて端末装置６の姿勢（端末装置奥行方向）を仮想世界における操作指示方向に変換する。
【０２６２】
また、上述した実施形態では、端末装置６の姿勢（端末装置奥行方向）を仮想世界における操作指示方向に変換する際、端末装置６の左右水平方向周りの方向（すなわち、上下方向にピッチ）に対してスケーリング補正が行われているが、他の方向に対してもスケーリング補正を行ってもかまわない。例えば、端末装置６の姿勢（端末装置奥行方向）を仮想世界における操作指示方向に変換する際、鉛直方向周りの方向（すなわち、左右方向のヨー）や前後水平方向周りの方向（すなわち、左右回転のロール）に対してスケーリング補正を行ってもかまわない。この場合、端末装置６の姿勢（端末装置奥行方向）を仮想世界における操作指示方向に変換する際、上記３方向周り（すなわち、左右水平方向周り、鉛直方向周り、前後水平方向周り）の方向の少なくとも１つの方向に対してスケーリング補正を行うことが考えられる。
【０２６３】
また、上述した実施形態では、端末装置６の姿勢（端末装置奥行方向）を仮想世界における操作指示方向に変換する際、端末装置奥行方向を仰角方向へオフセット補正する例を用いたが、端末装置奥行方向を俯角方向へオフセット補正して操作指示方向に変換してもかまわない。例えば、仮想世界を俯瞰するような画像をＬＣＤ６１に表示する場合、第１仮想カメラの視線方向を指示する操作指示方向を当該仮想世界の鉛直方向に設定する必要がある。この場合、当該操作指示方向を設定するための端末装置６の姿勢は、端末装置奥行方向を実空間の鉛直方向に向けなければならないため、ユーザにとって負担がかかる姿勢となり長時間の操作が困難となることが考えられる。しかしながら、端末装置奥行方向を俯角方向へ所定の角度だけオフセット補正して操作指示方向に変換することによって、実空間の鉛直方向に対して当該所定の角度だけ仰角方向に端末装置奥行方向を向けた端末装置６の姿勢が、操作指示方向を仮想世界の鉛直方向に設定する操作となるため、ユーザの操作負担を軽減して比較的楽な姿勢で操作をすることが可能となる。例えば、ユーザが端末装置６を同じ姿勢に長時間維持しても比較的楽な操作姿勢における端末装置６の姿勢（例えば、端末装置奥行方向が実空間鉛直方向に対して角度Ｂだけ仰角方向に向いた基本姿勢。）に対応して算出される操作指示方向が、仮想世界の鉛直方向となるようにオフセット補正が行われる。
【０２６４】
また、上述した実施形態では、端末装置６の姿勢（端末装置奥行方向）を仮想世界における操作指示方向に変換する際、端末装置奥行方向を仰角方向または俯角方向へオフセット補正および／またはスケーリング補正する例を用いた。すなわち、当該例は、端末装置６の端末装置奥行方向に垂直な実空間の水平方向周りに当該端末装置奥行方向が回転する回転量を、実空間における上下方向にオフセット補正および／またはスケーリング補正していることになる。しかしながら、オフセット補正および／またはスケーリング補正する端末装置奥行方向の回転軸は、実空間における他の軸でもかまわない。例えば、端末装置６に対して予め定められた所定方向（例えば、ＬＣＤ６１の表示画面に平行な左右方向（ｘ軸方向）周りに端末装置奥行方向が回転する回転量を、当該所定方向周りにオフセット補正および／またはスケーリング補正してもかまわない。この場合、端末装置６を基準とした回転量が補正されることになるため、実空間における端末装置６の姿勢とは無関係にオフセット補正および／またはスケーリング補正が行われることになる。例えば、ＬＣＤ６１の表示画面に平行な左右方向（ｘ軸方向）周りに端末装置奥行方向が回転する回転量をオフセット補正および／またはスケーリング補正する場合、ユーザが寝た姿勢で端末装置６を把持して端末装置６を動かしてＬＣＤ６１に表示された画像を見るような操作環境であっても、実空間において端末装置６がロールしている姿勢とは無関係に、ユーザが端末装置６をピッチ方向に動かすことに応じて変化する端末装置奥行方向を常に補正することができる。
【０２６５】
また、上述したゲーム例では、端末装置６の姿勢に基づいてＬＣＤ６１に表示する画像を生成するための仮想カメラ（第１仮想カメラ）の制御（位置、方向、姿勢の制御）が行われている。このような制御によって、ＬＣＤ６１を介して仮想世界内を覗いているような画像をユーザに提供することができ、当該ユーザに仮想世界にいるかのような感覚を与えることができる。また、端末装置６の姿勢を用いた操作は、鉛直方向周り（例えば、ｙ軸方向周り）の左右振り運動（ヨー）、左右水平方向周り（例えば、ｘ軸方向周り）の上下振り運動（ピッチ）、前後水平方向周り（例えば、ｚ軸方向周り）の左右回転運動（ロール）のように３方向への回転操作が可能となり、仮想世界においても同様の動きが可能な仮想カメラの制御に好適であり、実空間における端末装置６の姿勢と同じ姿勢になるように仮想世界における仮想カメラの姿勢を制御することによって、仮想世界においてユーザが希望する方向を覗いたような画像を提供することができる。また、上述したゲーム例では、ボード型コントローラ９上でユーザが動作することに応じて、プレイヤオブジェクトの動作（例えば、移動動作）が行われる。つまり、ユーザは、ＬＣＤ６１に表示される画像によって仮想世界にいるかのような感覚が与えられることに加えて、さらに自分自身が実空間におけるプレイヤキャラクタになったかのような操作感覚が与えられるため、さらに仮想世界にいるかのような感覚が高まることになる。
【０２６６】
また、上述したゲーム例では、端末装置６の姿勢に基づいてＬＣＤ６１に表示されるプレイヤオブジェクトＰｏの姿勢が制御されている。このような制御によって、端末装置６自体がプレイヤオブジェクトＰｏとなったかのような操作環境をユーザに提供することができ、当該ユーザが仮想世界のプレイヤオブジェクトＰｏになったような感覚やプレイヤオブジェクトＰｏを直接操作しているかのような感覚を与えることができる。また、端末装置６の姿勢を用いた操作は、鉛直方向周り（例えば、ｙ軸方向周り）の左右振り運動（ヨー）、左右水平方向周り（例えば、ｘ軸方向周り）の上下振り運動（ピッチ）、前後水平方向周り（例えば、ｚ軸方向周り）の左右回転運動（ロール）のように３方向への回転操作が可能となり、仮想世界においても同様の動きが可能なプレイヤオブジェクトＰｏの制御に好適である。例えば、上記ゲーム例の場合、端末装置６のＬＣＤ６１に沿った縦方向（ｙ軸方向）周りの左右振り運動（ヨー）をプレイヤオブジェクトＰｏの左右方向への姿勢変化（ヨー）に対応させ、ＬＣＤ６１に沿った左右方向（ｘ軸方向）周りの上下振り運動（ピッチ）をプレイヤオブジェクトＰｏの上下方向への姿勢変化（ピッチ）に対応させ、ＬＣＤ６１の奥行方向（ｚ軸方向）周りの左右回転運動（ロール）をプレイヤオブジェクトＰｏの正面方向（移動方向）を中心とした回転姿勢変化（ロール）に対応させることによって、仮想世界においてユーザが希望する姿勢に変化するオブジェクト画像を提供することができる。また、上述したゲーム例では、ボード型コントローラ９上でユーザが動作することに応じて、プレイヤオブジェクトＰｏの動作（例えば、移動動作）が行われる。つまり、ユーザは、複数のデバイス（端末装置６およびボード型コントローラ９）によって１つのプレイヤオブジェクトＰｏを操作することになり、今までにない操作が可能となる。また、端末装置６の姿勢によるプレイヤオブジェクトＰｏの姿勢制御によって、ユーザが仮想世界のプレイヤオブジェクトＰｏになったような感覚やプレイヤオブジェクトＰｏを直接操作しているかのような感覚が与えられることに加えて、ボード型コントローラ９上の操作によってさらに自分自身が実空間におけるプレイヤキャラクタＰｏになったかのような操作感覚が与えられるため、さらに仮想世界にいるかのような感覚が高まることになる。また、上述したゲーム例では、プレイヤオブジェクトＰｏの正面方向にプレイヤオブジェクトＰｏを移動させることができる。したがって、ユーザは、端末装置６の姿勢によってプレイヤオブジェクトＰｏの姿勢（正面方向）を設定できるとともに、プレイヤオブジェクトＰｏの移動方向も設定することができ、移動方向を設定する操作が直感的で当該移動方向をユーザが所望する方向に合わせることが容易となる。また、上述したプレイヤオブジェクトＰｏの姿勢と同様に、端末装置６の３方向への回転操作に応じてプレイヤオブジェクトＰｏの移動方向を設定することも可能となるため、仮想世界においてユーザが希望する移動方向をそのまま設定することが可能となる。
【０２６７】
また、上述したゲーム例では、端末装置６の姿勢に基づいてプレイヤオブジェクトＰｏの移動方向が設定される。このような移動方向の設定によって、端末装置６自体がプレイヤオブジェクトＰｏとなったかのような操作環境をユーザに提供することができ、当該ユーザが仮想世界のプレイヤオブジェクトＰｏになったような感覚やプレイヤオブジェクトＰｏを直接操作しているかのような感覚を与えることができる。また、端末装置６の姿勢を用いた操作は、鉛直方向周り（例えば、ｙ軸方向周り）の左右振り運動（ヨー）、左右水平方向周り（例えば、ｘ軸方向周り）の上下振り運動（ピッチ）、前後水平方向周り（例えば、ｚ軸方向周り）の左右回転運動（ロール）のように３方向への回転操作が可能となり、仮想世界においても当該３方向の少なくとも１方向への移動方向の設定が可能なプレイヤオブジェクトＰｏの制御に好適である。例えば、上記ゲーム例の場合、端末装置６のＬＣＤ６１に沿った縦方向（ｙ軸方向）周りの左右振り運動（ヨー）をプレイヤオブジェクトＰｏの左右方向への移動方向変化（ヨー）に対応させ、ＬＣＤ６１に沿った左右方向（ｘ軸方向）周りの上下振り運動（ピッチ）をプレイヤオブジェクトＰｏの上下方向への移動方向変化（ピッチ）に対応させることによって、仮想世界においてユーザが希望する移動方向へ移動するオブジェクト制御を提供することができる。また、上述したゲーム例では、ボード型コントローラ９上でユーザが動作することに応じて、プレイヤオブジェクトＰｏの移動動作（例えば、移動速度の設定）が行われる。つまり、ユーザは、複数のデバイス（端末装置６およびボード型コントローラ９）によって１つのプレイヤオブジェクトＰｏの移動方向と移動速度とを操作することになり、今までにない操作が可能となる。また、端末装置６の姿勢によるプレイヤオブジェクトＰｏの移動方向設定によって、ユーザが仮想世界のプレイヤオブジェクトＰｏになったような感覚やプレイヤオブジェクトＰｏを直接操作しているかのような感覚が与えられることに加えて、ボード型コントローラ９上の操作によってさらに自分自身が実空間におけるプレイヤオブジェクトＰｏになったかのような操作感覚が与えられるため、さらに仮想世界にいるかのような感覚が高まることになる。
【０２６８】
また、上述したゲーム例では、端末装置６のＬＣＤ６１に表示されている仮想世界の奥行方向を、プレイヤオブジェクトＰｏの移動方向とすることができる。したがって、ユーザは、端末装置６の姿勢によってプレイヤオブジェクトＰｏの移動方向を設定できるとともに、その移動方向を奥行方向とした仮想世界がＬＣＤ６１に表示されるために、移動方向を設定する操作が直感的で当該移動方向をユーザが所望する方向に合わせることが容易となる。また、上述した仮想カメラの方向と同様に、端末装置６の３方向への回転操作に応じてプレイヤオブジェクトＰｏの移動方向を設定することも可能となるため、仮想世界においてユーザが希望する移動方向をそのまま設定することが可能となる。
【０２６９】
また、上述したゲーム例では、プレイヤオブジェクトＰｏを少なくとも含む仮想世界の画像を端末装置６のＬＣＤ６１に表示したが、他の態様の仮想世界の画像をＬＣＤ６１に表示してもかまわない。例えば、プレイヤオブジェクトＰｏを表示せずに、プレイヤオブジェクトＰｏから見た主観視点の仮想世界画像をＬＣＤ６１に表示してもよい。この場合、ＬＣＤ６１に主観視点で表示されている仮想世界の上下方向は、端末装置６のロールに応じて逆方向にロール（すなわち、実空間における端末装置６のロールと同じ動作で仮想世界における第１仮想カメラがロールする）してもよい。また、ＬＣＤ６１に主観視点で表示されている仮想世界の奥行方向は、プレイヤオブジェクトＰｏの移動方向と同じであってもいいし、プレイヤオブジェクトＰｏの移動方向と異なっていてもよい。ＬＣＤ６１に主観視点で表示されている仮想世界の奥行方向と、プレイヤオブジェクトＰｏの移動方向と同じである場合、移動方向を奥行方向とした仮想世界がＬＣＤ６１に表示されるために、移動方向を設定する操作が直感的で当該移動方向をユーザが所望する方向に合わせることが容易となることは言うまでもない。
【０２７０】
なお、上述したゲーム例では、端末装置６の姿勢に基づいて決定された操作指示方向に応じて、即時に仮想カメラの位置や姿勢の制御が連動するような処理例を用いた。しかしながら、操作指示方向の変化や操作上方向の変化に応じて、所定の時間遅れて第１仮想カメラの位置や姿勢の制御が行われるような処理でもかまわない。この場合、プレイヤオブジェクトＰｏの向きや姿勢が変わった後に、所定時間遅れて当該向きや姿勢に追従して第１仮想カメラの位置や姿勢が変化することになる。
【０２７１】
また、上述したゲーム例では、プレイヤオブジェクトＰｏと第１仮想カメラとのロール方向を含めた位置関係を固定して、仮想世界において移動するプレイヤオブジェクトＰｏの位置に基づいて第１仮想カメラの位置を設定しているが、プレイヤオブジェクトＰｏと第１仮想カメラとの位置関係が変化するようにしてもかまわない。一例として、端末装置６に対して、前後水平方向周り（例えば、ｚ軸方向周り）の左右回転運動（ロール）のような回転操作が行われた場合、端末装置６がロールした方向へロールした角度だけ仮想世界において第１仮想カメラを視線方向（Ｚ軸正方向）周りにロールさせる。これに対して、プレイヤオブジェクトＰｏは、上記ロールした方向へ上記ロールした角度より小さな角度で仮想世界において移動方向（移動方向と視線方向とが一致している場合は、視線方向と同じ方向）周りにロールさせる。これによって、少なくともプレイヤオブジェクトＰｏと第１仮想カメラとのロール方向への位置関係が変化することになる。このように、プレイヤオブジェクトＰｏがロール方向へ姿勢を変えるロール角度を、端末装置６のロール角度より小さな角度にした場合であっても、ユーザの端末装置６のロール操作に反応してプレイヤオブジェクトＰｏがロール動作していることは同じであるため、同様の操作感覚を味わうことができる。
【０２７２】
他の例として、端末装置６に対して、前後水平方向周り（例えば、ｚ軸方向周り）の左右回転運動（ロール）のような回転操作が行われた場合、端末装置６がロールした方向へロールした角度だけ仮想世界において第１仮想カメラを視線方向（Ｚ軸正方向）周りにロールさせる。これに対して、プレイヤオブジェクトＰｏは、上記ロールした方向へ上記ロールした角度と同じ角度だけ仮想世界において移動方向（移動方向と視線方向とが一致している場合は、視線方向と同じ方向）周りに一旦ロールさせた後、プレイヤオブジェクトＰｏのみ胴体背面方向が仮想世界の上方に向くように所定のロール回転速度で姿勢を変化させる。これによって、少なくともプレイヤオブジェクトＰｏと第１仮想カメラとのロール方向への位置関係が、ロール回転移動の後に変化することになる。このように、プレイヤオブジェクトＰｏのロール方向の姿勢が仮想世界の上下方向に基づいた方向に戻っていくような制御が行われた場合であっても、ユーザの端末装置６のロール操作に反応してプレイヤオブジェクトＰｏを一旦ロール動作させることが可能であるため、端末装置６をロール操作した時点において同様の操作感覚を味わうことができる。
【０２７３】
また、上述した説明では、実空間における端末装置６の姿勢と同じ姿勢となるように、仮想世界における第１仮想カメラの姿勢を制御している。これによって、ユーザが見たい方向へ端末装置６を向けることに応じて、例えば端末装置６を介して仮想世界内を覗いているような画像をユーザに提供することができ、当該ユーザに仮想世界にいるかのような感覚を与えることができるが、このような効果を期待しない場合、実空間における端末装置６の姿勢と仮想世界における第１仮想カメラの姿勢とが完全に一致しなくてもかまわない。例えば、端末装置６が所定軸（例えば、ｚ軸）周りに回転量θｔで回転した場合、第１仮想カメラを当該所定軸に対応する仮想世界の方向（例えば、視線方向）周りに回転量θｔより少ない回転量または多い回転量で回転させてもかまわない。また、回転量θｔより少ない回転量または多い回転量で第１仮想カメラが回転した後、実空間における端末装置６の姿勢と同じ姿勢となるように、所定の回転速度で第１仮想カメラがさらに回転をしてもかまわない。
【０２７４】
また、上述した情報処理例では、端末装置６のｚ軸周りの動きや第１仮想カメラおよびプレイヤオブジェクトＰｏをロールさせる方向を設定するために、端末装置上方向（ｙ軸正方向）や操作上方向を用いているが、端末装置６の姿勢に対応する第１仮想カメラおよびプレイヤオブジェクトＰｏの仮想世界におけるロール方向の姿勢が一旦設定されれば、その後の処理はこれらの方向を用いなくてもかまわない。例えば、端末装置６の姿勢に対応する第１仮想カメラおよびプレイヤオブジェクトＰｏの仮想世界におけるロール方向の姿勢が設定された後については、端末装置６のｚ軸周りに生じる角速度に対応する回転角度をそのまま第１仮想カメラおよびプレイヤオブジェクトＰｏの仮想世界におけるロール方向の姿勢に対応させれば、同様の姿勢制御が可能となる。
【０２７５】
また、上述した説明では、仮想世界を固定して仮想カメラやプレイヤオブジェクトＰｏを当該仮想世界に対して動かしているが、仮想カメラやプレイヤオブジェクトＰｏが仮想世界に対して相対的に動けばよいことは言うまでもない。例えば、端末装置６の方向、動き、姿勢変化等に応じて仮想世界における仮想カメラの方向、位置、姿勢変化等が変化する場合、仮想カメラの方向、位置、姿勢を固定して、端末装置６の方向、動き、姿勢変化に応じて当該仮想カメラを基準として仮想世界全体を動かしてもかまわない。また、端末装置６の方向、動き、姿勢変化等に応じて仮想世界におけるプレイヤオブジェクトＰｏの方向、位置、姿勢等が変化する場合、プレイヤオブジェクトＰｏの方向、位置、姿勢を固定して、端末装置６の方向、動き、姿勢変化に応じてプレイヤオブジェクトＰｏを基準としてプレイヤオブジェクトＰｏ以外の仮想世界全体を動かしてもかまわない。
【０２７６】
また、上述した説明では、端末装置６のｚ軸周りの動きや第１仮想カメラおよびプレイヤオブジェクトＰｏをロールさせる方向を設定するために、端末装置上方向（ｙ軸正方向）や操作上方向を用いたが、ｚ軸に直交する他の軸や第１仮想カメラの視線方向およびプレイヤオブジェクトＰｏの移動方向（操作指示方向）に直交する他の方向を用いて設定してもかまわない。例えば、端末装置左方向（ｘ軸正方向）や操作左方向を用いて端末装置６のｚ軸周りの動きや第１仮想カメラおよびプレイヤオブジェクトＰｏをロールさせる方向を設定してもかまわない。
【０２７７】
また、上述したゲーム例では、端末装置６のＬＣＤ６１に表示されるゲーム画像と、モニタ２に表示されるゲーム画像とは、何れも同じ仮想世界（仮想空間）の様子を示す画像であるが、当該仮想世界（仮想空間）を見る視点や範囲が異なる画像である。したがって、ユーザは、２つの表示画面に表示された異なる視界や表示範囲となった仮想世界（仮想空間）を見ることが可能となり、ゲーム状況等に応じて適宜好適なゲーム画像を見ることが可能となる。また、上述したゲーム例では、ユーザが端末装置６を把持して操作を行い、実空間における端末装置６の姿勢や位置に応じてプレイヤオブジェクトＰｏや仮想カメラの位置や姿勢を変化させるとともに、ＬＣＤ６１に表示される画像もプレイヤオブジェクトＰｏや仮想カメラの位置や姿勢に応じて変化させることもできる。したがって、端末装置６を把持しながらＬＣＤ６１に表示される画像を見るユーザに、仮想世界（仮想空間）の臨場感を与えることができる。その一方で、ＬＣＤ６１に表示される画像だけを見ていると仮想世界（仮想空間）全体に対する位置やプレイヤオブジェクトＰｏの周囲の状況の把握が難しくなることも考えられるが、モニタ２に相対的に広い範囲の仮想世界（仮想空間）を表示することによって、このような問題を解消することができる。
【０２７８】
また、上述したゲーム例では、ユーザは、ボード型コントローラ９にかける荷重変化によって操作が可能であるとともに、プレイヤオブジェクトＰｏを含むゲーム画像が表示される端末装置６を把持して行う操作（本体姿勢や位置による操作、タッチ操作、ボタン操作等）も可能となっている。そして、端末装置６に表示されるプレイヤオブジェクトＰｏは、ボード型コントローラ９にかける荷重変化によって操作および／または端末装置６を用いた操作に応じて、仮想世界内で動作する。したがって、ユーザ自身がプレイヤオブジェクトＰｏとなって動作して仮想世界を見ているような感覚をユーザに与えたり、プレイヤオブジェクトＰｏを実空間で操作しているような感覚をユーザに与えたりすることが可能となる。
【０２７９】
ここで、上述したボード型コントローラ９を用いた操作では、ボード型コントローラ９に掛かる荷重の有無、荷重変化、および荷重の重心位置を用いて、プレイヤオブジェクトＰｏの様々な動作制御に用いられている。例えば、上述したゲーム例では、ボード型コントローラ９に掛かる荷重変化や荷重の重心位置によって、プレイヤオブジェクトの動作、移動速度、および移動方向等を変化させている。なお、上記ゲーム例では、ユーザの操作方向に応じて仮想世界における方向（例えば、プレイヤオブジェクトＰｏの移動方向や正面方向等）が設定されるゲーム例ではあるが、当該方向が端末装置６の姿勢（方向）に基づいて設定されている。これは、端末装置６の姿勢による操作とボード型コントローラ９を用いた操作とを比較した場合に、端末装置６の姿勢による操作の方が方向を設定する操作が容易であってゲームの臨場感が増す方が選択されている例であり、端末装置６の姿勢およびボード型コントローラ９に掛かる荷重の重心位置の適切な方をゲーム内容に応じて方向指示を行う操作として選択してもかまわない。このように、端末装置６およびボード型コントローラ９を操作手段として用いる場合、ユーザの操作に応じて仮想世界における方向を設定する際、複数の操作を選択肢として好適な方式を選択することが可能となる。
【０２８０】
なお、ゲームシステム１は、端末装置６およびボード型コントローラ９を操作手段として、上記で説明したように種々のゲームを行うことが可能である。端末装置６は、可搬形のディスプレイや第２のディスプレイとしても使用することができる一方で、本体の動きによる操作、タッチ操作、ボタン操作等による入力を行うコントローラとしても使用することができ、ゲームシステム１によれば、幅広いゲームを実施することが可能となる。つまり、端末装置６は、表示装置として機能するものであるため、モニタ２やコントローラ７を使用せずに端末装置６を表示手段として使用し、ボード型コントローラ９を操作手段として使用するようなゲームシステムのような形態もあり得る。また、端末装置６は、表示装置として機能するとともに、操作装置としても機能するものであるため、モニタ２およびコントローラ７を使用せずに端末装置６を表示手段として使用し、端末装置６およびボード型コントローラ９を操作手段として使用するようなゲームシステムのような形態もあり得る。さらに、端末装置６は、表示装置として機能するとともに、操作装置としても機能するものであるため、モニタ２、コントローラ７、およびボード型コントローラ９を使用せずに端末装置６を表示手段として使用し、端末装置６を操作手段として使用するようなゲームシステムのような形態もあり得る。
【０２８１】
また、上記実施形態においては、端末装置６は、ゲーム処理を実行しない、いわゆるシンクライアント端末として機能するものであった。しかしながら、端末装置６は、上記実施形態においてゲーム装置本体５によって実行される一連のゲーム処理のうち、少なくとも一部の処理が端末装置６によって実行されてもよい。一例として、一部の処理（例えば、端末用ゲーム画像の生成処理）を端末装置６が実行するようにしてもよい。他の例として、ゲーム装置本体５によって実行される一連のゲーム処理全てを端末装置６が実行するようにしてもよい。この場合、端末装置６は、表示装置として機能するとともに、ゲーム処理を実行する処理装置としても機能するものであるため、モニタ２、ゲーム装置本体５、およびコントローラ７を使用せずに端末装置６を表示手段として使用し、ボード型コントローラ９を操作手段として使用し、端末装置６を処理手段として使用するようなゲームシステムのような形態もあり得る。当該ゲームシステムでは、端末装置６およびボード型コントローラ９のみが無線または有線によって接続され、ボード型コントローラ９からボード操作データを端末装置６へ出力することによって、種々のゲームを行うことができる。また、ボード型コントローラ９も使用しない場合、端末装置６を表示手段、操作手段、および処理手段として使用するような形態もあり得ることは言うまでもない。
【０２８２】
また、上記実施形態においては、端末装置６の動き（位置や姿勢、あるいは、位置や姿勢の変化を含む）を算出するために用いられる姿勢データ（例えば、磁気センサ６０２、加速度センサ６０３、およびジャイロセンサ６０４から出力される少なくとも１つのデータ）を端末装置６からゲーム装置本体５へ出力され、ゲーム装置本体５における情報処理によって端末装置６の動きが算出されている。しかしながら、ゲーム装置本体５において算出されている端末装置６の動きを、端末装置６において算出してもかまわない。この場合、端末装置６で算出された端末装置６の動きを示すデータ（すなわち、上記姿勢データを用いて算出された、端末装置６の位置や姿勢、あるいは、位置や姿勢の変化を示すデータ）が、端末装置６からゲーム装置本体５へ出力され、ゲーム装置本体５における情報処理において当該データが利用されることになる。
【０２８３】
また、上述した説明では、端末装置６とゲーム装置本体５との間およびボード型コントローラ９とゲーム装置本体５との間がそれぞれ無線通信によって接続された態様を用いたが、他の態様によって装置間の無線通信が行われてもかまわない。第１の例として、端末装置６が他の無線通信の中継装置として機能する。この場合、ボード型コントローラ９のボード操作データが端末装置６へ無線送信され、受信したボード操作データと共に端末装置６の端末操作データを、端末装置６がゲーム装置本体５へ無線送信する。この場合、端末装置６とゲーム装置本体５とが無線通信によって直接的に接続されるが、ボード型コントローラ９は、端末装置６を介してゲーム装置本体５と無線通信によって接続されることになる。第２の例として、ボード型コントローラ９が他の無線通信の中継装置として機能する。この場合、端末装置６の端末操作データがボード型コントローラ９へ無線送信され、受信した端末操作データと共にボード型コントローラ９のボード操作データを、ボード型コントローラ９がゲーム装置本体５へ無線送信する。この場合、ボード型コントローラ９とゲーム装置本体５とが無線通信によって直接的に接続されるが、端末装置６は、ボード型コントローラ９を介してゲーム装置本体５と無線通信によって接続されることになる。なお、他の装置が中継してゲーム装置本体５に操作データを送信する場合、ケーブルを介して当該操作データを生成する装置と当該操作データを中継する他の装置との間を電気的に接続してもかまわない。
【０２８４】
また、端末装置６および／またはボード型コントローラ９と、ゲーム装置本体５とがケーブルを介して電気的に接続されてもかまわない。この場合、端末装置６および／またはボード型コントローラ９に接続されたケーブルをゲーム装置本体５の接続端子に接続する。第１の例として、端末装置６とゲーム装置本体５とが第１のケーブルを介して電気的に接続され、ボード型コントローラ９とゲーム装置本体５とが第２のケーブルを介して電気的に接続される。第２の例として、端末装置６とゲーム装置本体５との間がケーブルを介して電気的に接続される。この場合、ボード型コントローラ９のボード操作データは、端末装置６へ無線送信された後に上記ケーブルを介してゲーム装置本体５に送信されてもいいし、ボード型コントローラ９から直接ゲーム装置本体５に無線送信されてもよい。第３の例として、ボード型コントローラ９とゲーム装置本体５との間がケーブルを介して電気的に接続される。この場合、端末装置６の端末操作データは、ボード型コントローラ９へ無線送信された後に上記ケーブルを介してゲーム装置本体５に送信されてもいいし、端末装置６から直接ゲーム装置本体５に無線送信されてもよい。
【０２８５】
また、上記実施形態においては、ゲームシステム１が端末装置６およびボード型コントローラ９をそれぞれ１つ有する構成であったが、ゲームシステム１は、複数組の端末装置６およびボード型コントローラ９を有する構成であってもよい。すなわち、ゲーム装置本体５は、複数組の端末装置６およびボード型コントローラ９とそれぞれ無線通信可能であり、ゲーム画像のデータとゲーム音声のデータと制御データとを各端末装置６へ送信し、端末操作データとカメラ画像データとマイク音データとボード操作データとを各端末装置６およびボード型コントローラ９から受信するものであってもよい。なお、ゲーム装置本体５は、複数の端末装置６およびボード型コントローラ９のそれぞれと無線通信を行うが、このとき、ゲーム装置本体５は、各端末装置６およびボード型コントローラ９との無線通信を時分割で行ってもよいし、周波数帯域を分割して行ってもよい。
【０２８６】
上記のように複数組の端末装置６およびボード型コントローラ９を有する場合には、ゲームシステム１を用いてより多くの種類のゲームを行うことができる。例えば、ゲームシステム１が２組の端末装置６およびボード型コントローラ９を有する場合には、２人のユーザが同時にゲームを行うことができる。また、ゲームシステム１が２組の端末装置６およびボード型コントローラ９を有する場合には、ゲームシステム１は３つの表示装置を有することになるので、３人のユーザのそれぞれのためのゲーム画像を生成し、各表示装置に表示させることができる。
【０２８７】
また、上述した説明では、ボード型コントローラ９に複数の荷重センサ９４を設けているが、上記処理においてボード型コントローラ９に加わっている荷重の重心位置の情報が不要であれば、荷重センサ９４を少なくとも１つボード型コントローラ９に設けてもかまわない。
【０２８８】
また、上記実施例では、据置型のゲーム装置３を用いて説明したが、携帯型のゲーム装置や一般的なパーソナルコンピュータ等の情報処理装置で本発明の情報処理プログラムを実行して、本発明を実現してもかまわない。また、他の実施形態では、ゲーム装置に限らず任意の携帯型電子機器、例えば、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）や携帯電話、パーソナルコンピュータ、カメラ等であってもよい。何れの装置であっても、当該装置と端末装置６およびボード型コントローラ９とを無線または有線で接続することによって、本発明を実現することができる。
【０２８９】
また、上述した説明では情報処理をゲーム装置本体５で行う例を用いたが、上記情報処理における処理ステップの少なくとも一部をゲームシステム１の外部に設けられた他の装置で行ってもかまわない。例えば、ゲーム装置本体５が他の装置（例えば、サーバや他のゲーム装置）と通信可能に構成されている場合、上記情報処理における処理ステップは、ゲーム装置本体５および当該他の装置が協働することによって実行してもよい。一例として、他の装置において、プレイヤオブジェクトおよび仮想世界等を設定する処理が行われ、ゲーム装置本体５からプレイヤオブジェクトの動作や姿勢に関するデータが他の装置へ送信されて、上記情報処理が行われることが考えられる。そして、他の装置で生成された仮想世界を示す画像データがゲーム装置本体５へ送信され、当該仮想世界がモニタ２やＬＣＤ６１に表示される。このように、上記情報処理における処理ステップの少なくとも一部を他の装置で行うことによって、上述した情報処理と同様の処理が可能となる。なお、上記情報処理における処理ステップの少なくとも一部をボード型コントローラ９（マイコン１００）で行ってもよい。また、上述した情報処理は、少なくとも１つの情報処理装置により構成される情報処理システムに含まれる１つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施形態においては、ゲーム装置本体５のＣＰＵ１０が所定のプログラムを実行することによって、上述したフローチャートによる処理が行われたが、ゲーム装置本体５が備える専用回路によって上記処理の一部または全部が行われてもよい。
【０２９０】
また、上述したゲーム装置本体５の形状や、端末装置６、コントローラ７、およびボード型コントローラ９の形状および各種操作ボタンやセンサの形状、数、および設置位置等は、単なる一例に過ぎず他の形状、数、および設置位置であっても、本発明を実現できることは言うまでもない。また、上述した情報処理で用いられる処理順序、設定値、表示態様、判定に用いられる値等は、単なる一例に過ぎず他の順序、表示態様、値であっても、本発明を実現できることは言うまでもない。
【０２９１】
また、上記情報処理プログラム（ゲームプログラム）は、光ディスク４等の外部記憶媒体を通じてゲーム装置本体５に供給されるだけでなく、有線または無線の通信回線を通じてゲーム装置本体５に供給されてもよい。また、情報処理プログラムは、ゲーム装置本体５内部の不揮発性記憶装置に予め記録されていてもよい。なお、情報処理プログラムを記憶する情報記憶媒体としては、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープなどでもよい。また、上記情報処理プログラムを記憶する情報記憶媒体としては、不揮発性半導体メモリや揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
【０２９２】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書（定義を含めて）が優先する。
【産業上の利用可能性】
【０２９３】
本発明に係る情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法は、ユーザが把持して画面を見ることが可能な表示装置に仮想世界の画像を表示し、当該表示装置の姿勢や動きに応じて当該仮想世界に対する操作が行われる場合に、当該表示装置の姿勢や動きによる操作を容易にすることができ、表示装置の動きに応じた処理等を行う情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法として有用である。
【符号の説明】
【０２９４】
１…ゲームシステム
２…モニタ
３…ゲーム装置
４…光ディスク
５…ゲーム装置本体
１０、６１７…ＣＰＵ
１１…システムＬＳＩ
１２…外部メインメモリ
１３…ＲＯＭ／ＲＴＣ
１４…ディスクドライブ
１５…ＡＶ−ＩＣ
１６…ＡＶコネクタ
１７…フラッシュメモリ
１８…ネットワーク通信モジュール
１９…コントローラ通信モジュール
２０…拡張コネクタ
２１…メモリカード用コネクタ
２２、２３、２９、６１１、７５４…アンテナ
２４…電源ボタン
２５…リセットボタン
２６…イジェクトボタン
２７…コーデックＬＳＩ
２８…端末通信モジュール
３１…入出力プロセッサ
３２…ＧＰＵ
３３…ＤＳＰ
３４…ＶＲＡＭ
３５…内部メインメモリ
６…端末装置
６０…ハウジング
６１…ＬＣＤ
６２…タッチパネル
６３…アナログスティック
６４…操作ボタン
６５…マーカ部
６６…カメラ
６７…拡張コネクタ
６８…足部
６０１…タッチパネルコントローラ
６０２…磁気センサ
６０３…加速度センサ
６０４…ジャイロセンサ
６０５…ＵＩコントローラ
６０６…コーデックＬＳＩ
６０７…スピーカ
６０８…サウンドＩＣ
６０９…マイク
６１２…赤外線通信モジュール
６１３…フラッシュメモリ
６１４…電源ＩＣ
６１６…充電器
６１８…内部メモリ
６１９…バイブレータ
７…コントローラ
８…マーカ
９…ボード型コントローラ
９０…支持板
９２…脚
９４…荷重センサ
９５…起歪体
９６…歪センサ
１０２…ＡＤコンバータ
１０４…ＤＣ−ＤＣコンバータ
１０６、６１０、７５３…無線モジュール
１０８…増幅器
１００、７５１…マイコン
１１０、６１５…電池
【図１】
0006041466.tif 000003
【図２】
0006041466.tif 000004
【図３】
0006041466.tif 000005
【図４】
0006041466.tif 000006
【図５】
0006041466.tif 000007
【図６】
0006041466.tif 000008
【図７】
0006041466.tif 000009
【図８】
0006041466.tif 000010
【図９】
0006041466.tif 000011
【図１０Ａ】
0006041466.tif 000012
【図１０Ｂ】
0006041466.tif 000013
【図１１】
0006041466.tif 000014
【図１２】
0006041466.tif 000015
【図１３】
0006041466.tif 000016
【図１４Ａ】
0006041466.tif 000017
【図１４Ｂ】
0006041466.tif 000018
【図１５Ａ】
0006041466.tif 000019
【図１５Ｂ】
0006041466.tif 000020
【図１６Ａ】
0006041466.tif 000021
【図１６Ｂ】
0006041466.tif 000022
【図１７Ａ】
0006041466.tif 000023
【図１７Ｂ】
0006041466.tif 000024
【図１８】
0006041466.tif 000025
【図１９】
0006041466.tif 000026
【図２０】
0006041466.tif 000027
【図２１】
0006041466.tif 000028
【図２２】
0006041466.tif 000029
【図２３】
0006041466.tif 000030
【図２４】
0006041466.tif 000031