(57)【特許請求の範囲】
【請求項１】
操作装置と情報処理装置とを含み、当該操作装置に対する操作に基づいて３次元の仮想空間における位置を算出する入力システムであって、
前記操作装置は、
所定の入力面に対する入力位置を検出する位置検出部と、
慣性センサ部と、
前記位置検出部および前記慣性センサ部の検出結果を表すデータを含む操作データを前記情報処理装置へ送信する操作データ送信部とを備え、
前記情報処理装置は、
前記慣性センサ部の検出結果に基づいて前記操作装置の姿勢を算出する姿勢算出部と、
前記操作装置の姿勢に応じて姿勢が変化するように前記仮想空間内に所定の面を設定する面設定部と、
前記面の位置を含む前記仮想空間内の領域を表す第１画像を生成する第１画像生成部と、
前記第１画像を所定の表示装置へ出力する第１画像出力部と、
前記仮想空間内の位置として、前記入力位置によって決められる前記面上の位置を算出する位置算出部とを備える、入力システム。
【請求項２】
前記第１画像生成部は、前記位置算出部によって算出された位置に対応する前記第１画像上の位置に所定の画像を生成する、請求項１に記載の入力システム。
【請求項３】
前記第１画像生成部は、前記入力面に連続して入力される各入力位置によって前記仮想空間内において決められる各位置の軌跡を表す画像を前記所定の画像として生成する、請求項２に記載の入力システム。
【請求項４】
前記情報処理装置は、前記位置算出部によって算出された位置に、所定のオブジェクトを配置するオブジェクト設定部をさらに備える、請求項１から請求項３のいずれか１項に記載の入力システム。
【請求項５】
前記オブジェクト設定部は、前記操作装置に対する操作に基づいて前記所定のオブジェクトを移動させる、請求項４に記載の入力システム。
【請求項６】
前記オブジェクト設定部は、前記操作装置に対する操作に関して所定の条件が満たされる場合、前記所定のオブジェクトを前記操作装置の姿勢に基づいて移動させ、当該所定の条件が満たされない場合、前記操作装置の姿勢に基づく前記所定のオブジェクトの移動を行わない、請求項５に記載の入力システム。
【請求項７】
前記操作装置は、表示部をさらに備え、
前記位置検出部は、前記表示部の表示画面上に設けられるタッチパネルであり、
前記情報処理装置は、
前記面の位置を含む前記仮想空間内の領域を表す第２画像を生成する第２画像生成部と、
前記第２画像を前記操作装置へ送信する第２画像送信部とをさらに備え、
前記位置算出部は、仮想空間内の位置として、前記表示画面上において前記入力位置に対応する位置を算出する、請求項１から請求項６のいずれか１項に記載の入力システム。
【請求項８】
前記第２画像生成部は、前記仮想空間において前記面が設定される領域を表す画像を前記第２画像として生成する、請求項７に記載の入力システム。
【請求項９】
前記第１画像生成部は、前記面の姿勢と独立して視線方向が設定される第１仮想カメラを用いて第１画像を生成し、
前記第２画像生成部は、前記面に対して視線方向が略垂直となるように設定される第２仮想カメラを用いて前記第２画像を生成する、請求項８に記載の入力システム。
【請求項１０】
前記面設定部は、前記操作装置の姿勢に対応するように前記面の姿勢を制御する、請求項１から請求項９のいずれか１項に記載の入力システム。
【請求項１１】
前記面設定部は、前記操作装置の姿勢に対応するように前記面の姿勢を制御すると共に、前記操作装置の姿勢に応じて前記面の位置を制御する、請求項１から請求項９のいずれか１項に記載の入力システム。
【請求項１２】
前記面設定部は、前記仮想空間内の所定位置を中心として前記操作装置の姿勢に応じて回転移動するように前記面を制御する、請求項１１に記載の入力システム。
【請求項１３】
前記面設定部は、前記操作装置に対する方向入力操作に基づいて前記面を移動させる、請求項１から請求項１２のいずれか１項に記載の入力システム。
【請求項１４】
前記情報処理装置は、前記位置算出部によって算出された位置を入力として所定のゲーム処理を実行するゲーム処理部をさらに備える、請求項１から請求項１３のいずれか１項に記載の入力システム。
【請求項１５】
操作部に対する操作に基づいて３次元の仮想空間における位置を算出する情報処理システムであって、
前記操作部に設けられる所定の入力面に対する入力位置を検出する位置検出部と、
前記操作部の姿勢を算出するための物理量を検出するセンサ部と、
前記位置検出部および前記センサ部の検出結果を表すデータを含む操作データを取得する操作データ取得部と、
前記物理量に基づいて前記操作部の姿勢を算出する姿勢算出部と、
前記姿勢に基づいて前記仮想空間内に所定の面を設定する面設定部と、
前記面の位置を含む前記仮想空間内の領域を表す第１画像を生成する第１画像生成部と、
前記第１画像を所定の表示装置へ出力する第１画像出力部と、
前記仮想空間内の位置として、前記入力位置によって決められる前記面上の位置を算出する位置算出部とを備える、情報処理システム。
【請求項１６】
操作装置に対する操作に基づいて３次元の仮想空間における位置を算出する情報処理装置であって、
前記操作装置が備えるタッチパネルおよび慣性センサの検出結果を表すデータを含む操作データを取得する操作データ取得部と、
前記慣性センサの検出結果に基づいて前記操作装置の姿勢を算出する姿勢算出部と、
前記操作装置の姿勢に応じて姿勢が変化するように前記仮想空間内に所定の面を設定する面設定部と、
前記仮想空間内の位置として、前記タッチパネルに対する入力位置によって決められる前記面上の位置を算出する位置算出部と、
前記位置算出部によって算出された位置に、所定のオブジェクトを配置するオブジェクト設定部と、
前記面の位置を含む前記仮想空間内の領域を表す第１画像を生成する第１画像生成部と、
前記第１画像を所定の表示装置へ出力する第１画像出力部と、
前記タッチパネルが設けられる表示画面に表示されるための第２画像として、前記仮想空間において前記面が設定される領域を表す画像を生成する第２画像生成部と、
前記第２画像を前記操作装置へ送信する第２画像送信部とを備える、情報処理装置。
【請求項１７】
操作装置に対する操作に基づいて３次元の仮想空間における位置を算出する情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、
前記操作装置が備えるタッチパネルおよび慣性センサの検出結果を表すデータを含む操作データを取得する操作データ取得手段と、
前記慣性センサの検出結果に基づいて前記操作装置の姿勢を算出する姿勢算出手段と、
前記操作装置の姿勢に応じて姿勢が変化するように前記仮想空間内に所定の面を設定する面設定手段と、
前記仮想空間内の位置として、前記タッチパネルに対する入力位置によって決められる前記面上の位置を算出する位置算出手段と、
前記位置算出手段によって算出された位置に、所定のオブジェクトを配置するオブジェクト設定手段と、
所定の表示装置に表示するための第１画像として、前記面の位置を含む前記仮想空間内の領域を表す画像を生成する第１画像生成手段と、
前記タッチパネルが設けられる表示画面に表示するための第２画像として、前記仮想空間において前記面が設定される領域を表す画像を生成する第２画像生成手段として前記コンピュータを機能させる、情報処理プログラム。
【請求項１８】
操作装置と情報処理装置とを含む入力システムにおいて実行される、当該操作装置に対する操作に基づいて３次元の仮想空間における位置を算出するための３次元位置算出方法であって、
前記操作装置が備える慣性センサの検出結果に基づいて前記操作装置の姿勢を算出する姿勢算出ステップと、
前記操作装置の姿勢に応じて姿勢が変化するように前記仮想空間内に所定の面を設定する面設定ステップと、
前記面の位置を含む前記仮想空間内の領域を表す第１画像を生成する第１画像生成ステップと、
前記第１画像を所定の表示装置へ出力する第１画像出力ステップと、
前記仮想空間内の位置として、前記操作装置が備える所定の入力面に対する入力位置によって決められる前記面上の位置を算出する位置算出ステップとを備える、３次元位置算出方法。
【請求項１９】
前記第１画像生成ステップにおいて、前記情報処理装置は、前記位置算出ステップにおいて算出された位置に対応する前記第１画像上の位置に所定の画像を生成する、請求項１８に記載の３次元位置算出方法。
【請求項２０】
前記第１画像生成ステップにおいて、前記情報処理装置は、前記入力面に連続して入力される各入力位置によって前記仮想空間内において決められる各位置の軌跡を表す画像を前記所定の画像として生成する、請求項１９に記載の３次元位置算出方法。
【請求項２１】
前記位置算出ステップにおいて算出された位置に、所定のオブジェクトを配置するオブジェクト設定ステップをさらに備える、請求項１８から請求項２０のいずれか１項に記載の３次元位置算出方法。
【請求項２２】
前記オブジェクト設定ステップにおいて、前記情報処理装置は、前記操作装置に対する操作に基づいて前記所定のオブジェクトを移動させる、請求項２１に記載の３次元位置算出方法。
【請求項２３】
前記オブジェクト設定ステップにおいて、前記情報処理装置は、前記操作装置に対する操作に関して所定の条件が満たされる場合、前記所定のオブジェクトを前記操作装置の姿勢に基づいて移動させ、当該所定の条件が満たされない場合、前記操作装置の姿勢に基づく前記所定のオブジェクトの移動を行わない、請求項２２に記載の３次元位置算出方法。
【請求項２４】
前記操作装置は、表示部と、当該表示部の表示画面上に設けられるタッチパネルとを備えており、
前記面の位置を含む前記仮想空間内の領域を表す第２画像を生成する第２画像生成ステップと、
前記第２画像を前記操作装置へ送信する第２画像送信ステップとをさらに備え、
前記位置算出ステップにおいて、前記情報処理装置は、仮想空間内の位置として、前記表示画面上において前記入力位置に対応する位置を算出する、請求項１８から請求項２３のいずれか１項に記載の３次元位置算出方法。
【請求項２５】
前記第２画像生成ステップにおいて、前記情報処理装置は、前記仮想空間において前記面が設定される領域を表す画像を前記第２画像として生成する、請求項２４に記載の３次元位置算出方法。
【請求項２６】
前記第１画像生成ステップにおいて、前記情報処理装置は、前記面の姿勢と独立して視線方向が設定される第１仮想カメラを用いて第１画像を生成し、
前記第２画像生成ステップにおいて、前記情報処理装置は、前記面に対して視線方向が略垂直となるように設定される第２仮想カメラを用いて前記第２画像を生成する、請求項２５に記載の３次元位置算出方法。
【請求項２７】
前記面設定ステップにおいて、前記情報処理装置は、前記操作装置の姿勢に対応するように前記面の姿勢を制御する、請求項１８から請求項２６のいずれか１項に記載の３次元位置算出方法。
【請求項２８】
前記面設定ステップにおいて、前記情報処理装置は、前記操作装置の姿勢に対応するように前記面の姿勢を制御すると共に、前記操作装置の姿勢に応じて前記面の位置を制御する、請求項１８から請求項２６のいずれか１項に記載の３次元位置算出方法。
【請求項２９】
前記面設定ステップにおいて、前記情報処理装置は、前記仮想空間内の所定位置を中心として前記操作装置の姿勢に応じて回転移動するように前記面を制御する、請求項２８に記載の３次元位置算出方法。
【請求項３０】
前記面設定ステップにおいて、前記情報処理装置は、前記操作装置に対する方向入力操作に基づいて前記面を移動させる、請求項１８から請求項２９のいずれか１項に記載の３次元位置算出方法。
【請求項３１】
前記位置算出ステップにおいて算出された位置を入力として所定のゲーム処理を実行するゲーム処理ステップをさらに備える、請求項１８から請求項３０のいずれか１項に記載の３次元位置算出方法。
【請求項３２】
操作部に対する操作に基づいて３次元の仮想空間における位置を算出する情報処理システムにおいて実行される３次元位置算出方法であって、
前記操作部に設けられる所定の入力面に対する入力位置を表すデータと、前記操作部の姿勢を算出するための物理量を表すデータを含む操作データを取得する操作データ取得ステップと、
前記物理量に基づいて前記操作部の姿勢を算出する姿勢算出ステップと、
前記姿勢に基づいて前記仮想空間内に所定の面を設定する面設定ステップと、
前記面の位置を含む前記仮想空間内の領域を表す第１画像を生成する第１画像生成ステップと、
前記第１画像を所定の表示装置へ出力する第１画像出力ステップと、
前記仮想空間内の位置として、前記入力位置によって決められる前記面上の位置を算出する位置算出ステップとを備える、３次元位置算出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、操作装置等に対する操作に基づいて３次元の位置を算出する入力システム、情報処理装置、情報処理プログラム、および３次元位置算出方法に関する。
【背景技術】
【０００２】
従来、タッチパネルやタッチパッド等の入力装置を用いて画面上の任意の位置に対して入力を行う技術がある。例えば、特許文献１には、タッチパネルを備えるゲーム装置において、タッチパネルに対する入力によって描かれた軌跡に基づいて、ゲーム空間内のキャラクタの移動を制御する技術が記載されている。これによれば、プレイヤは、２次元平面におけるゲーム空間内の位置を自由に指定してゲーム操作を行うことができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第３７７０４９９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の技術においては、タッチパネル等の入力装置を用いることによって２次元平面における位置を指定することは可能であったが、３次元空間における位置を指定することは難しかった。例えば上記特許文献１に記載の技術では、ゲーム空間が２次元平面である場合にはゲーム空間内の任意の位置を指定することが可能であるが、３次元のゲーム空間の場合にはゲーム空間内の位置を適切に指定することができない。
【０００５】
それ故、本発明の目的は、タッチパネルやタッチパッド等の平面的な入力面に対する入力に基づいて、３次元空間における位置を容易に指定することができる入力システム等を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の（１）〜（１５）の構成を採用した。
【０００７】
（１）
本発明の一例は、操作装置と情報処理装置とを含み、当該操作装置に対する操作に基づいて３次元の仮想空間における位置を算出する入力システムである。
操作装置は、位置検出部と、慣性センサ部と、操作データ送信部とを備える。位置検出部は、所定の入力面に対する入力位置を検出する。操作データ送信部は、位置検出部および慣性センサ部の検出結果を表すデータを含む操作データを情報処理装置へ送信する。
情報処理装置は、姿勢算出部と、面設定部と、第１画像生成部と、第１画像出力部と、位置算出部とを備える。姿勢算出部は、慣性センサ部の検出結果に基づいて操作装置の姿勢を算出する。面設定部は、操作装置の姿勢に応じて姿勢が変化するように仮想空間内に所定の面を設定する。第１画像生成部は、面の位置を含む仮想空間内の領域を表す第１画像を生成する。第１画像出力部は、第１画像を所定の表示装置へ出力する。位置算出部は、仮想空間内の位置として、入力位置によって決められる面上の位置を算出する。
【０００８】
上記「操作装置」は、後述する実施形態における端末装置７の他、位置検出部と慣性センサ部とを備え、操作データを情報処理装置へ送信する機能を有していればどのような装置であってもよい。
上記「情報処理装置」は、上記の各部における処理を実行する装置であればどのようなものであってもよい。上記情報処理装置は、ゲーム専用の情報処理装置であってもよいし、一般的なパーソナルコンピュータのような多用途の情報処理装置であってもよい。
上記「入力システム」は、操作装置および情報処理装置を含んでいればよく、第１画像を表示する上記「所定の表示装置」を含んでいなくともよいし、含んでいてもよい。すなわち、入力システムは、当該所定の表示装置を含まない形態で提供されてもよいし、含む形態で提供されてもよい。
上記「位置検出部」は、後述する実施形態におけるタッチパネルの他、タッチパッドであってもよい。つまり、操作装置は表示画面を備えていなくてもよい。
上記「慣性センサ部」は、加速度センサあるいはジャイロセンサ等、任意の慣性センサを含むものであればよい。
上記「所定の面」は、平面であってもよいし、曲面であってもよい。また、「所定の面」は、所定の表示装置に表示されなくてもよい。つまり、上記「第１画像」は、面の位置を含む仮想空間内の領域を表す画像であればよく、所定の面の画像を含まなくてもよい。
【０００９】
上記（１）の構成によれば、ユーザは、操作装置の入力面に対する入力によって、仮想空間内の面上の位置を指定することができる。また、この面の姿勢は操作装置の姿勢に応じて変化するので、ユーザは、操作装置の姿勢を変化させつつ、入力面上の位置を指定することで、３次元の仮想空間における位置を指定することができる。このように、上記（１）の構成によれば、タッチパネルやタッチパッド等の平面的な入力面に対する入力に基づいて、３次元空間における位置を容易に指定することができる。
【００１０】
（２）
第１画像生成部は、位置算出部によって算出された位置に対応する第１画像上の位置に所定の画像を生成してもよい。
【００１１】
上記（２）の構成によれば、ユーザは、入力面に対する入力に応じて算出される仮想空間内の位置を容易に確認することができる。また、入力面に対して点や線を描くことで、仮想空間内に３次元の図形を描くことができる。
【００１２】
（３）
第１画像生成部は、入力面に連続して入力される各入力位置によって仮想空間内において決められる各位置の軌跡を表す画像を所定の画像として生成してもよい。
【００１３】
上記「入力面に連続して入力される各入力位置」とは、ユーザが入力面に接触し続ける間に繰り返し検出された入力位置であり、例えば、入力面上に線（軌跡）を描く操作を行った場合における当該線上の複数の入力位置である。
【００１４】
上記（３）の構成によれば、ユーザが入力面上で線を描いた場合には、仮想空間内において線（軌跡）の画像が表示される。これによれば、入力面に対して点で入力を行った場合と線で入力を行った場合とで、表示される画像が区別されるので、入力面に対する入力をより正確に反映した画像を表示することができる。また、ユーザは、入力面に対して線を描くことで、線によって構成される３次元の図形を仮想空間内において容易に生成することができる。
【００１５】
（４）
情報処理装置は、位置算出部によって算出された位置に、所定のオブジェクトを配置するオブジェクト設定部をさらに備えていてもよい。
【００１６】
上記（４）の構成によれば、仮想空間内にオブジェクトを配置することで、入力面に対する入力に応じて算出される仮想空間内の位置を表す画像を容易に生成することができる。
【００１７】
（５）
オブジェクト設定部は、操作装置に対する操作に基づいて所定のオブジェクトを移動させてもよい。
【００１８】
上記「移動」とは、平行移動、回転移動（回転しながら位置が変化する）、および回転（位置が変化せずに姿勢が変化する）を含む概念である。
【００１９】
上記（５）の構成によれば、プレイヤは、入力面に対する入力によって生成されたオブジェクトを移動させることによって、所定の表示装置に表示される当該オブジェクトをいろいろな位置あるいは向きから見ることができ、当該オブジェクトの形状を容易に確認することができる。
【００２０】
（６）
オブジェクト設定部は、操作装置に対する操作に関して所定の条件が満たされる場合、所定のオブジェクトを操作装置の姿勢に基づいて移動させ、当該所定の条件が満たされない場合、操作装置の姿勢に基づく所定のオブジェクトの移動を行わないようにしてもよい。
【００２１】
上記「所定の条件」とは、操作装置に対する操作に関する条件であればどのようなものであってもよい。例えば、操作装置に対して所定の操作が行われた場合に条件が満たされたと判断されてもよいし、操作装置に対してある操作が行われてから次の操作が行われるまでの間である場合に条件が満たされたと判断されてもよい。
【００２２】
上記（６）の構成によれば、ユーザは、操作装置の姿勢を変化させるという直感的で容易な操作によってオブジェクトを移動させることができる。さらに、上記（６）の構成と下記（１０）〜（１２）のいずれかの構成とを組み合わせる場合には、面を移動させる操作と同じ操作によってオブジェクトを移動させることができるので、操作性をより向上することができる。
【００２３】
（７）
操作装置は、表示部をさらに備えていてもよい。このとき、位置検出部は、表示部の表示画面上に設けられるタッチパネルである。また、情報処理装置は、第２画像生成部と、第２画像送信部とをさらに備えていてもよい。第２画像生成部は、面の位置を含む仮想空間内の領域を表す第２画像を生成する。第２画像送信部は、第２画像を操作装置へ送信する。位置算出部は、仮想空間内の位置として、表示画面上において入力位置に対応する位置を算出する。
【００２４】
上記（７）の構成によれば、操作装置の表示画面にはタッチパネルが設けられ、仮想空間内において面が設定される領域を表す画像が操作装置の表示画面に表示される。そして、位置算出部によって算出される位置は、表示画面上において実際にユーザが指定した位置となるので、ユーザは、直感的かつ分かりやすい操作で仮想空間内の位置を指定することができる。
【００２５】
（８）
第２画像生成部は、仮想空間において面が設定される領域を表す画像を第２画像として生成してもよい。
【００２６】
上記（８）の構成によれば、仮想空間における面の位置の画像が操作装置に表示されるので、ユーザにとっては、入力面に対する入力によって面上の位置を指定する操作がより行いやすくなる。
【００２７】
（９）
第１画像生成部は、面の姿勢と独立して視線方向が設定される第１仮想カメラを用いて第１画像を生成してもよい。このとき、第２画像生成部は、面に対して視線方向が略垂直となるように設定される第２仮想カメラを用いて第２画像を生成する。
【００２８】
上記「第１仮想カメラ」は、面の姿勢と独立して視線方向が設定されればよく、面の姿勢以外の他の条件に応じて（例えば、ユーザの操作に応じて）視線方向が変化するものであってもよい。
【００２９】
上記（９）の構成によれば、プレイヤが操作装置の姿勢を変化させることで面の姿勢を変化させた場合、所定の表示装置に表示される画像においては視線方向が変化しない一方、操作装置に表示される画像においては操作装置の姿勢に応じて視線方向が変化する。これによれば、操作装置においては面の姿勢が一定として表示されるので、面上の位置を指定する操作が容易になる。また、所定の表示装置においては面の姿勢が変化して表示されるので、仮想空間内における面の姿勢を容易に把握することができる。以上より、上記（９）の構成によれば、ユーザは、操作装置を用いて面上の位置を指定する操作を容易に行うことができるとともに、所定の表示装置の画面を見ることによって面の姿勢を容易に確認することができるので、３次元の仮想空間内の位置を指定する操作がより容易になる。
【００３０】
（１０）
面設定部は、操作装置の姿勢に対応するように面の姿勢を制御してもよい。
【００３１】
上記（１０）の構成によれば、ユーザは、操作装置の姿勢を変化させる操作によって、直感的かつ容易に面の姿勢を調整することができる。
【００３２】
（１１）
面設定部は、操作装置の姿勢に対応するように面の姿勢を制御すると共に、操作装置の姿勢に応じて面の位置を制御してもよい。
【００３３】
上記（１１）の構成によれば、ユーザは、操作装置の姿勢を変化させる操作によって、直感的かつ容易に面の姿勢を調整することができるとともに、さらに面の位置を調整することができる。
【００３４】
（１２）
面設定部は、仮想空間内の所定位置を中心として操作装置の姿勢に応じて回転移動するように面を制御してもよい。
【００３５】
上記（１２）の構成によれば、面は、所定位置を中心とする球面上を移動する。したがって、ユーザは、操作装置の姿勢を変化させつつ入力面に対する入力を行うことで、球面に対して位置を指定するような感覚を得ることができる。
【００３６】
（１３）
面設定部は、操作装置に対する方向入力操作に基づいて面を移動させてもよい。
【００３７】
上記（１３）の構成によれば、ユーザは、操作装置の姿勢を変化させる操作とは別の方向入力操作によっても面を移動させることができるので、面を移動させる操作をより自由に行うことができる。
【００３８】
（１４）
情報処理装置は、位置算出部によって算出された位置を入力として所定のゲーム処理を実行するゲーム処理部をさらに備えていてもよい。
【００３９】
上記（１４）の構成によれば、ユーザは、操作装置の姿勢を変化させつつ、入力面上の位置を指定するという新規なゲーム操作でゲームを行うことができる。また、このゲーム操作によって、３次元のゲーム空間における位置を容易に指定することができる。
【００４０】
（１５）
また、本発明の他の一例は、操作部に対する操作に基づいて３次元の仮想空間における位置を算出する情報処理システムである。情報処理システムは、位置検出部と、センサ部と、操作データ取得部と、姿勢算出部と、面設定部と、第１画像生成部と、第１画像出力部と、位置算出部とを備える。位置検出部は、操作部に設けられる所定の入力面に対する入力位置を検出する。センサ部は、操作部の姿勢を算出するための物理量を検出する。操作データ取得部は、位置検出部およびセンサ部の検出結果を表すデータを含む操作データを取得する。姿勢算出部は、物理量に基づいて操作部の姿勢を算出する。面設定部は、姿勢に基づいて仮想空間内に所定の面を設定する。第１画像生成部は、面の位置を含む仮想空間内の領域を表す第１画像を生成する。第１画像出力部は、第１画像を所定の表示装置へ出力する。位置算出部は、仮想空間内の位置として、入力位置によって決められる面上の位置を算出する。
【００４１】
上記「操作部」は、後述する実施形態における端末装置７の他、所定の入力面が設けられる装置であればどのような装置であってもよい。
上記「姿勢を算出するための物理量」とは、それに基づいて操作部の姿勢を算出（推測）することができればどのようなものであってもよい。したがって、このような物理量を検出するためのセンサ部は、後述する実施形態におけるジャイロや加速度センサといった慣性センサの他、磁気センサであってもよいし、カメラであってもよい。なお、センサ部が磁気センサである場合には、磁気センサによって検出される方位の情報が上記物理量に相当する。また、センサ部がカメラである場合には、撮像された画像に関する数値（例えば各画素値）、あるいは、当該画像から得られる数値（例えば、撮像された画像内における所定の撮像対象の位置座標）が上記物理量に相当する。
【００４２】
上記（１５）の構成によれば、ユーザは、操作部の入力面に対する入力によって、仮想空間内の面上の位置を指定することができる。また、この面の姿勢は操作装置の姿勢に応じて変化するので、ユーザは、操作部の姿勢を変化させつつ、入力面上の位置を指定することで、３次元の仮想空間における位置を指定することができる。このように、上記（１５）の構成によれば、上記（１）の構成と同様、タッチパネルやタッチパッド等の平面的な入力面に対する入力に基づいて、３次元空間における位置を容易に指定することができる。
【００４３】
なお、本発明の別の一例は、上記入力システムに含まれる上記情報処理装置であってもよいし、上記情報処理装置における各部（画像出力部が含まれなくてもよい）と同等の手段としてコンピュータを機能させる情報処理プログラムであってもよい。さらに、本発明の別の一例は、上記の情報処理システムまたは情報処理装置において行われる３次元位置算出方法の形態であってもよい。
【発明の効果】
【００４４】
本発明によれば、操作装置の入力面に対する入力に基づいて仮想空間内の面上の位置を算出するとともに、当該面の姿勢を操作装置の姿勢に応じて制御することによって、タッチパネルやタッチパッド等の平面的な入力面に対する入力によって行われる３次元位置の指定操作をユーザに容易に行わせることができる。
【図面の簡単な説明】
【００４５】
【図１】ゲームシステム１の外観図
【図２】ゲーム装置３の内部構成を示すブロック図
【図３】コントローラ５の上側後方から見た斜視図
【図４】コントローラ５を下側前方から見た斜視図
【図５】コントローラ５の内部構造を示す図
【図６】コントローラ５の内部構造を示す図
【図７】コントローラ５の構成を示すブロック図
【図８】端末装置７の外観構成を示す図
【図９】ユーザが端末装置７を把持した様子を示す図
【図１０】端末装置７の内部構成を示すブロック図
【図１１】本実施形態においてゲーム操作が行われる場合におけるテレビ２および端末装置７を示す図
【図１２】図１１に示す状態から端末装置７を傾けた場合におけるテレビ２および端末装置７を示す図
【図１３】図１２に示す状態から端末装置７を傾けた場合におけるテレビ２および端末装置７を示す図
【図１４】図１２に示す状態から図形を回転させた場合におけるテレビ２および端末装置７を示す図
【図１５】ゲーム処理において用いられる各種データを示す図
【図１６】ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャート
【図１７】図１６に示すゲーム制御処理（ステップＳ３）の詳細な流れを示すフローチャート
【図１８】タッチパネル５２の入力面上のタッチ位置に基づいて指定位置を算出する方法を説明するための図
【図１９】面８１と端末用仮想カメラ８５との位置関係を示す図
【図２０】図１７に示す図形移動処理（ステップＳ１３）の詳細な流れを示すフローチャート
【図２１】上記実施形態の変形例におけるゲーム制御処理の流れを示すフローチャート
【図２２】本変形例における面８１の移動を示す図
【図２３】他の実施形態における面８１の移動を示す図
【図２４】他の実施形態における面８１の移動を示す図
【図２５】見本と同じになるように図形を描くゲームにおいて、テレビ２に表示されるゲーム画像を示す図
【図２６】３次元の仮想空間内に配置されたオブジェクト１１５を端末装置７に対する操作によって指定するゲームにおいて、テレビ２に表示されるゲーム画像を示す図
【図２７】プレイヤが描いた図形に基づいてオブジェクトが生成されるゲームにおいて、テレビ２に表示されるゲーム画像を示す図
【図２８】プレイヤが描いた図形に基づいてオブジェクトが生成されるゲームにおいて、テレビ２に表示されるゲーム画像を示す図
【発明を実施するための形態】
【００４６】
［１．ゲームシステムの全体構成］
以下、図面を参照して、本発明の一実施形態に係るゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。図１において、ゲームシステム１は、テレビジョン受像器等に代表される据置型のディスプレイ装置（以下、「テレビ」と記載する）２、据置型のゲーム装置３、光ディスク４、コントローラ５、マーカ装置６、および、端末装置７を含む。ゲームシステム１は、コントローラ５および／または端末装置７を用いたゲーム操作に基づいてゲーム装置３においてゲーム処理を実行し、ゲーム処理によって得られるゲーム画像をテレビ２および／または端末装置７に表示するものである。
【００４７】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるための情報処理プログラム（典型的にはゲームプログラム）が記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されている情報処理プログラムを読み出して実行することによってゲーム処理を実行する。
【００４８】
ゲーム装置３には、テレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理によって得られるゲーム画像を表示する。テレビ２はスピーカ２ａ（図２）を有しており、スピーカ２ａは、上記ゲーム処理の結果得られるゲーム音声を出力する。なお、他の実施形態においては、ゲーム装置３と据置型の表示装置とは一体となっていてもよい。また、ゲーム装置３とテレビ２との通信は無線通信であってもよい。
【００４９】
テレビ２の画面の周辺（図１では画面の上側）には、マーカ装置６が設置される。詳細は後述するが、ユーザ（プレイヤ）はコントローラ５を動かすゲーム操作を行うことができ、マーカ装置６は、コントローラ５の動きや位置や姿勢等をゲーム装置３が算出するために用いられる。マーカ装置６は、その両端に２つのマーカ６Ｒおよび６Ｌを備えている。マーカ６Ｒ（マーカ６Ｌも同様）は、具体的には１以上の赤外ＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）であり、テレビ２の前方に向かって赤外光を出力する。マーカ装置６はゲーム装置３に接続されており、ゲーム装置３はマーカ装置６が備える各赤外ＬＥＤの点灯を制御することが可能である。なお、マーカ装置６は可搬型であり、ユーザはマーカ装置６を自由な位置に設置することができる。図１ではマーカ装置６がテレビ２の上に設置された態様を表しているが、マーカ装置６を設置する位置および向きは任意である。
【００５０】
コントローラ５は、自機に対して行われた操作の内容を表す操作データをゲーム装置３に与えるものである。コントローラ５とゲーム装置３とは無線通信によって通信可能である。本実施形態では、コントローラ５とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ５とゲーム装置３とは有線で接続されてもよい。また、本実施形態では、ゲームシステム１に含まれるコントローラ５は１つとするが、ゲーム装置３は複数のコントローラと通信可能であり、所定台数のコントローラを同時に使用することによって複数人でゲームをプレイすることが可能である。コントローラ５の詳細な構成については後述する。
【００５１】
端末装置７は、ユーザが把持可能な程度の大きさであり、ユーザは端末装置７を手に持って動かしたり、あるいは、端末装置７を自由な位置に配置したりして使用することが可能である。詳細な構成は後述するが、端末装置７は、表示手段であるＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）５１、および、入力手段（後述するタッチパネル５２やジャイロセンサ６４等）を備える。端末装置７とゲーム装置３とは無線（有線であってもよい）によって通信可能である。端末装置７は、ゲーム装置３で生成された画像（例えばゲーム画像）のデータをゲーム装置３から受信し、画像をＬＣＤ５１に表示する。なお、本実施形態では表示装置としてＬＣＤを用いているが、端末装置７は、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置等、他の任意の表示装置を有していてもよい。また、端末装置７は、自機に対して行われた操作の内容を表す操作データをゲーム装置３に送信する。
【００５２】
［２．ゲーム装置３の内部構成］
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の内部構成を示すブロック図である。ゲーム装置３は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５等を有する。
【００５３】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間におけるデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムＬＳＩ１１の内部構成については後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅまたは外部メインメモリ１２に読み出したデータを書き込む。
【００５４】
システムＬＳＩ１１には、入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）１１ｄ、および内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００５５】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。なお、ゲーム装置３は、テレビ２に表示する画像と、端末装置７に表示する画像との両方を生成する。以下では、テレビ２に表示される画像を「テレビ用画像」と呼び、端末装置７に表示される画像を「端末用画像」と呼ぶことがある。
【００５６】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。なお、本実施形態においては、ゲーム音声についてもゲーム画像と同様、テレビ２のスピーカから出力するゲーム音声と、端末装置７のスピーカから出力するゲーム音声との両方が生成される。以下では、テレビ２から出力される音声を「テレビ用音声」と呼び、端末装置７から出力される音声を「端末用音声」と呼ぶことがある。
【００５７】
上記のようにゲーム装置３において生成される画像および音声のうちで、テレビ２において出力される画像および音声のデータは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、テレビ２に画像が表示されるとともにスピーカ２ａから音が出力される。なお、ゲーム装置３とテレビ２との接続は、どのような方式で行われてもよいが、ゲーム装置３は、テレビ２を制御する制御指令を有線または無線でテレビ２へ送信するようにしてもよい。例えばＨＤＭＩ（Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）規格に則ったＨＤＭＩケーブルが用いられてもよい。ＨＤＭＩ規格では、ＣＥＣ（Ｃｏｎｓｕｍｅｒ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｃｏｎｔｒｏｌ）と呼ばれる機能によって、接続相手の機器を制御することが可能である。したがって、ＨＤＭＩケーブルが用いられる場合のように、ゲーム装置３がテレビ２に対する制御が可能である場合には、ゲーム装置３は、適宜のタイミングでテレビ２の電源をオンにしたり、テレビ２の入力を切り替えたりすることができる。
【００５８】
また、ゲーム装置３において生成される画像および音声のうちで、端末装置７において出力される画像および音声のデータは、入出力プロセッサ１１ａ等によって端末装置７へ送信される。入出力プロセッサ１１ａ等による端末装置７へのデータの送信については後述する。
【００５９】
入出力プロセッサ１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、ネットワーク通信モジュール１８、コントローラ通信モジュール１９、拡張コネクタ２０、メモリカード用コネクタ２１、コーデックＬＳＩ２７に接続される。また、ネットワーク通信モジュール１８にはアンテナ２２が接続される。コントローラ通信モジュール１９にはアンテナ２３が接続される。コーデックＬＳＩ２７は端末通信モジュール２８に接続され、端末通信モジュール２８にはアンテナ２９が接続される。
【００６０】
ゲーム装置３は、インターネット等のネットワークに接続して外部の情報処理装置（例えば他のゲーム装置や、各種サーバ等）と通信を行うことが可能である。すなわち、入出力プロセッサ１１ａは、ネットワーク通信モジュール１８およびアンテナ２２を介してインターネット等のネットワークに接続可能であり、ネットワークに接続される他の装置と通信を行うことができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、ネットワーク通信モジュール１８およびアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、外部情報処理装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２およびネットワーク通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と外部情報処理装置との間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。また、フラッシュメモリ１７にはゲームプログラムが記憶されてもよい。
【００６１】
また、ゲーム装置３は、コントローラ５からの操作データを受信することが可能である。すなわち、入出力プロセッサ１１ａは、コントローラ５から送信される操作データをアンテナ２３およびコントローラ通信モジュール１９を介して受信し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００６２】
また、ゲーム装置３は、端末装置７との間で画像や音声等のデータを送受信することが可能である。入出力プロセッサ１１ａは、端末装置７へゲーム画像（端末用ゲーム画像）を送信する場合、ＧＰＵ１１ｂが生成したゲーム画像のデータをコーデックＬＳＩ２７へ出力する。コーデックＬＳＩ２７は、入出力プロセッサ１１ａからの画像データに対して所定の圧縮処理を行う。端末通信モジュール２８は、端末装置７との間で無線通信を行う。したがって、コーデックＬＳＩ２７によって圧縮された画像データは、端末通信モジュール２８によってアンテナ２９を介して端末装置７へ送信される。なお、本実施形態では、ゲーム装置３から端末装置７へ送信される画像データはゲームに用いるものであり、ゲームにおいては表示される画像に遅延が生じるとゲームの操作性に悪影響が出る。そのため、ゲーム装置３から端末装置７への画像データの送信に関しては、できるだけ遅延が生じないようにすることが好ましい。したがって、本実施形態では、コーデックＬＳＩ２７は、例えばＨ．２６４規格といった高効率の圧縮技術を用いて画像データを圧縮する。なお、それ以外の圧縮技術を用いてもよいし、通信速度が十分である場合には無圧縮で画像データを送信する構成であってもよい。また、端末通信モジュール２８は、例えばＷｉ−Ｆｉの認証を受けた通信モジュールであり、例えばＩＥＥＥ８０２．１１ｎ規格で採用されるＭＩＭＯ（Ｍｕｌｔｉｐｌｅ  Ｉｎｐｕｔ  Ｍｕｌｔｉｐｌｅ  Ｏｕｔｐｕｔ）の技術を用いて端末装置７との間の無線通信を高速に行うようにしてもよいし、他の通信方式を用いてもよい。
【００６３】
また、ゲーム装置３は、画像データの他、音声データを端末装置７へ送信する。すなわち、入出力プロセッサ１１ａは、ＤＳＰ１１ｃが生成した音声データを、コーデックＬＳＩ２７を介して端末通信モジュール２８へ出力する。コーデックＬＳＩ２７は、音声データに対しても画像データと同様に圧縮処理を行う。音声データに対する圧縮の方式は、どのような方式であってもよいが、圧縮率が高く、音声の劣化が少ない方式が好ましい。また、他の実施形態においては、音声データは圧縮されずに送信されてもよい。端末通信モジュール２８は、圧縮された画像データおよび音声データを、アンテナ２９を介して端末装置７へ送信する。
【００６４】
さらに、ゲーム装置３は、上記画像データおよび音声データの他に、必要に応じて各種の制御データを端末装置７へ送信する。制御データは、端末装置７が備える構成要素に対する制御指示を表すデータであり、例えばマーカ部（図１０に示すマーカ部５５）の点灯を制御する指示や、カメラ（図１０に示すカメラ５６）の撮像を制御する指示等を表す。入出力プロセッサ１１ａは、ＣＰＵ１０の指示に応じて制御データを端末装置７へ送信する。なお、この制御データに関して、本実施形態ではコーデックＬＳＩ２７はデータの圧縮処理を行わないが、他の実施形態においては圧縮処理を行うようにしてもよい。なお、ゲーム装置３から端末装置７へ送信される上述のデータは、必要に応じて暗号化がされていてもよいし、されていなくともよい。
【００６５】
また、ゲーム装置３は、端末装置７から各種データを受信可能である。詳細は後述するが、本実施形態では、端末装置７は、操作データ、画像データ、および音声データを送信する。端末装置７から送信される各データはアンテナ２９を介して端末通信モジュール２８によって受信される。ここで、端末装置７からの画像データおよび音声データは、ゲーム装置３から端末装置７への画像データおよび音声データと同様の圧縮処理が施されている。したがって、これら画像データおよび音声データについては、端末通信モジュール２８からコーデックＬＳＩ２７に送られ、コーデックＬＳＩ２７によって伸張処理が施されて入出力プロセッサ１１ａに出力される。一方、端末装置７からの操作データに関しては、画像や音声に比べてデータ量が少ないので、圧縮処理が施されていなくともよい。また、必要に応じて暗号化がされていてもよいし、されていなくともよい。したがって、操作データは、端末通信モジュール２８で受信された後、コーデックＬＳＩ２７を介して入出力プロセッサ１１ａに出力される。入出力プロセッサ１１ａは、端末装置７から受信したデータを、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００６６】
また、ゲーム装置３は、他の機器や外部記憶媒体に接続することが可能である。すなわち、入出力プロセッサ１１ａには、拡張コネクタ２０およびメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタである。拡張コネクタ２０に対しては、外部記憶媒体のようなメディアを接続したり、他のコントローラ等の周辺機器を接続したり、有線の通信用コネクタを接続することによってネットワーク通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【００６７】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、およびイジェクトボタン２６が設けられる。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、図示しないＡＣアダプタによって外部の電源からゲーム装置３の各構成要素に対して電力が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００６８】
なお、他の実施形態においては、ゲーム装置３が備える各構成要素のうちでいくつかの構成要素は、ゲーム装置３とは別体の拡張機器として構成されてもよい。このとき、拡張機器は、例えば上記拡張コネクタ２０を介してゲーム装置３と接続されるようにしてもよい。具体的には、拡張機器は、例えば上記コーデックＬＳＩ２７、端末通信モジュール２８およびアンテナ２９の各構成要素を備えており、拡張コネクタ２０に対して着脱可能であってもよい。これによれば、上記各構成要素を備えていないゲーム装置に対して上記拡張機器を接続することによって、当該ゲーム装置を端末装置７と通信可能な構成とすることができる。
【００６９】
［３．コントローラ５の構成］
次に、図３〜図７を参照して、コントローラ５について説明する。図３および図４は、コントローラ５の外観構成を示す斜視図である。図３は、コントローラ５の上側後方から見た斜視図であり、図４は、コントローラ５を下側前方から見た斜視図である。
【００７０】
図３および図４において、コントローラ５は、例えばプラスチック成型によって形成されたハウジング３１を有している。ハウジング３１は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。ユーザは、コントローラ５に設けられたボタンを押下すること、および、コントローラ５自体を動かしてその位置や姿勢（傾き）を変えることによってゲーム操作を行うことができる。
【００７１】
ハウジング３１には、複数の操作ボタンが設けられる。図３に示すように、ハウジング３１の上面には、十字ボタン３２ａ、１番ボタン３２ｂ、２番ボタン３２ｃ、Ａボタン３２ｄ、マイナスボタン３２ｅ、ホームボタン３２ｆ、プラスボタン３２ｇ、および電源ボタン３２ｈが設けられる。本明細書では、これらのボタン３２ａ〜３２ｈが設けられるハウジング３１の上面を「ボタン面」と呼ぶことがある。一方、図４に示すように、ハウジング３１の下面には凹部が形成されており、当該凹部の後面側傾斜面にはＢボタン３２ｉが設けられる。これらの各操作ボタン３２ａ〜３２ｉには、ゲーム装置３が実行する情報処理プログラムに応じた機能が適宜割り当てられる。また、電源ボタン３２ｈは遠隔からゲーム装置３本体の電源をオン／オフするためのものである。ホームボタン３２ｆおよび電源ボタン３２ｈは、その上面がハウジング３１の上面に埋没している。これによって、ユーザがホームボタン３２ｆまたは電源ボタン３２ｈを誤って押下することを防止することができる。
【００７２】
ハウジング３１の後面にはコネクタ３３が設けられている。コネクタ３３は、コントローラ５に他の機器（例えば、他のセンサユニットやコントローラ）を接続するために利用される。また、ハウジング３１の後面におけるコネクタ３３の両側には、上記他の機器が容易に離脱することを防止するために係止穴３３ａが設けられている。
【００７３】
ハウジング３１上面の後方には複数（図３では４つ）のＬＥＤ３４ａ〜３４ｄが設けられる。ここで、コントローラ５には、他のコントローラと区別するためにコントローラ種別（番号）が付与される。各ＬＥＤ３４ａ〜３４ｄは、コントローラ５に現在設定されている上記コントローラ種別をユーザに通知したり、コントローラ５の電池残量をユーザに通知したりする等の目的で用いられる。具体的には、コントローラ５を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のＬＥＤ３４ａ〜３４ｄのいずれか１つが点灯する。
【００７４】
また、コントローラ５は撮像情報演算部３５（図６）を有しており、図４に示すように、ハウジング３１前面には撮像情報演算部３５の光入射面３５ａが設けられる。光入射面３５ａは、マーカ６Ｒおよび６Ｌからの赤外光を少なくとも透過する材質で構成される。
【００７５】
ハウジング３１上面における１番ボタン３２ｂとホームボタン３２ｆとの間には、コントローラ５に内蔵されるスピーカ４７（図５）からの音を外部に放出するための音抜き孔３１ａが形成されている。
【００７６】
次に、図５および図６を参照して、コントローラ５の内部構造について説明する。図５および図６は、コントローラ５の内部構造を示す図である。なお、図５は、コントローラ５の上筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６は、コントローラ５の下筐体（ハウジング３１の一部）を外した状態を示す斜視図である。図６に示す斜視図は、図５に示す基板３０を裏面から見た斜視図となっている。
【００７７】
図５において、ハウジング３１の内部には基板３０が固設されており、当該基板３０の上主面上に各操作ボタン３２ａ〜３２ｈ、各ＬＥＤ３４ａ〜３４ｄ、加速度センサ３７、アンテナ４５、およびスピーカ４７等が設けられる。これらは、基板３０等に形成された配線（図示せず）によってマイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）４２（図６参照）に接続される。本実施形態では、加速度センサ３７は、Ｘ軸方向に関してコントローラ５の中心からずれた位置に配置されている。これによって、コントローラ５をＺ軸回りに回転させたときのコントローラ５の動きが算出しやすくなる。また、加速度センサ３７は、長手方向（Ｚ軸方向）に関してコントローラ５の中心よりも前方に配置されている。また、無線モジュール４４（図６）およびアンテナ４５によって、コントローラ５がワイヤレスコントローラとして機能する。
【００７８】
一方、図６において、基板３０の下主面上の前端縁に撮像情報演算部３５が設けられる。撮像情報演算部３５は、コントローラ５の前方から順に赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を備えている。これらの部材３８〜４１はそれぞれ基板３０の下主面に取り付けられる。
【００７９】
さらに、基板３０の下主面上には、上記マイコン４２およびバイブレータ４６が設けられている。バイブレータ４６は、例えば振動モータやソレノイドであり、基板３０等に形成された配線によってマイコン４２と接続される。マイコン４２の指示によりバイブレータ４６が作動することによってコントローラ５に振動が発生する。これによって、コントローラ５を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ４６は、ハウジング３１のやや前方寄りに配置される。つまり、バイブレータ４６がコントローラ５の中心よりも端側に配置することによって、バイブレータ４６の振動によりコントローラ５全体を大きく振動させることができる。また、コネクタ３３は、基板３０の下主面上の後端縁に取り付けられる。なお、図５および図６に示す他、コントローラ５は、マイコン４２の基本クロックを生成する水晶振動子、スピーカ４７に音声信号を出力するアンプ等を備えている。
【００８０】
なお、図３〜図６に示したコントローラ５の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。また、本実施形態では、撮像手段による撮像方向はＺ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ５における撮像情報演算部３５の位置（撮像情報演算部３５の光入射面３５ａ）は、ハウジング３１の前面でなくてもよく、ハウジング３１の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【００８１】
図７は、コントローラ５の構成を示すブロック図である。コントローラ５は、操作部３２（各操作ボタン３２ａ〜３２ｉ）、撮像情報演算部３５、通信部３６、加速度センサ３７、およびジャイロセンサ４８を備えている。コントローラ５は、自機に対して行われた操作内容を表すデータを操作データとしてゲーム装置３へ送信するものである。なお、以下では、コントローラ５が送信する操作データを「コントローラ操作データ」と呼び、端末装置７が送信する操作データを「端末操作データ」と呼ぶことがある。
【００８２】
操作部３２は、上述した各操作ボタン３２ａ〜３２ｉを含み、各操作ボタン３２ａ〜３２ｉに対する入力状態（各操作ボタン３２ａ〜３２ｉが押下されたか否か）を表す操作ボタンデータを通信部３６のマイコン４２へ出力する。
【００８３】
撮像情報演算部３５は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部３５は、例えば最大２００フレーム／秒程度のサンプリング周期を有するので、比較的高速なコントローラ５の動きでも追跡して解析することができる。
【００８４】
撮像情報演算部３５は、赤外線フィルタ３８、レンズ３９、撮像素子４０、および画像処理回路４１を含んでいる。赤外線フィルタ３８は、コントローラ５の前方から入射する光から赤外線のみを通過させる。レンズ３９は、赤外線フィルタ３８を透過した赤外線を集光して撮像素子４０へ入射させる。撮像素子４０は、例えばＣＭＯＳセンサやあるいはＣＣＤセンサのような固体撮像素子であり、レンズ３９が集光した赤外線を受光して画像信号を出力する。ここで、撮像対象となる端末装置７のマーカ部５５およびマーカ装置６は、赤外光を出力するマーカで構成される。したがって、赤外線フィルタ３８を設けることによって、撮像素子４０は、赤外線フィルタ３８を通過した赤外線だけを受光して画像データを生成するので、撮像対象（マーカ部５５および／またはマーカ装置６）の画像をより正確に撮像することができる。以下では、撮像素子４０によって撮像された画像を撮像画像と呼ぶ。撮像素子４０によって生成された画像データは、画像処理回路４１で処理される。画像処理回路４１は、撮像画像内における撮像対象の位置を算出する。画像処理回路４１は、算出された位置を示す座標を通信部３６のマイコン４２へ出力する。この座標のデータは、マイコン４２によって操作データとしてゲーム装置３に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ５自体の向き（傾斜角度）や位置に対応して変化するので、ゲーム装置３はこのマーカ座標を用いてコントローラ５の向きや位置を算出することができる。
【００８５】
なお、他の実施形態においては、コントローラ５は画像処理回路４１を備えていない構成であってもよく、撮像画像自体がコントローラ５からゲーム装置３へ送信されてもよい。このとき、ゲーム装置３は、画像処理回路４１と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【００８６】
加速度センサ３７は、コントローラ５の加速度（重力加速度を含む）を検出する、すなわち、コントローラ５に加わる力（重力を含む）を検出する。加速度センサ３７は、当該加速度センサ３７の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度（直線加速度）の値を検出する。例えば、２軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。なお、加速度センサ３７は、例えば静電容量式のＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍ）型加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【００８７】
本実施形態では、加速度センサ３７は、コントローラ５を基準とした上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸方向に関してそれぞれ直線加速度を検出する。加速度センサ３７は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ３７からの出力は３軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ５を基準に設定されるＸＹＺ座標系（コントローラ座標系）における３次元のベクトルとして表される。
【００８８】
加速度センサ３７が検出した加速度を表すデータ（加速度データ）は、通信部３６へ出力される。なお、加速度センサ３７が検出した加速度は、コントローラ５自体の向き（傾斜角度）や動きに対応して変化するので、ゲーム装置３は取得された加速度データを用いてコントローラ５の向きや動きを算出することができる。本実施形態では、ゲーム装置３は、取得された加速度データに基づいてコントローラ５の姿勢や傾斜角度等を算出する。
【００８９】
なお、加速度センサ３７（後述する加速度センサ６３についても同様）から出力される加速度の信号に基づいて、ゲーム装置３のプロセッサ（例えばＣＰＵ１０）またはコントローラ５のプロセッサ（例えばマイコン４２）等のコンピュータが処理を行うことによって、コントローラ５に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ３７を搭載するコントローラ５が静止状態であることを前提としてコンピュータ側の処理が実行される場合（すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合）、コントローラ５が現実に静止状態であれば、検出された加速度に基づいてコントローラ５の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ３７の検出軸が鉛直下方向を向いている状態を基準としたとき、１Ｇ（重力加速度）がかかっているか否かによって、コントローラ５が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ３７の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ５がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ３７からの出力に基づいてコントローラ５の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ５の傾斜方向を算出するようにしてもよい。このように、加速度センサ３７をプロセッサと組み合わせて用いることによって、コントローラ５の傾斜角度または姿勢を判定することができる。
【００９０】
一方、コントローラ５が動的な状態（コントローラ５が動かされている状態）であることを前提とする場合には、加速度センサ３７は重力加速度に加えてコントローラ５の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ５の動き方向を知ることができる。また、コントローラ５が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ５の傾きを知ることが可能である。なお、他の実施例では、加速度センサ３７は、内蔵の加速度検出手段で検出された加速度信号をマイコン４２に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ３７が静的な加速度（例えば、重力加速度）を検出するために用いられる場合、加速度信号を傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。
【００９１】
ジャイロセンサ４８は、３軸（本実施形態では、ＸＹＺ軸）回りの角速度を検出する。本明細書では、コントローラ５の撮像方向（Ｚ軸正方向）を基準として、Ｘ軸回りの回転方向をピッチ方向、Ｙ軸回りの回転方向をヨー方向、Ｚ軸回りの回転方向をロール方向と呼ぶ。ジャイロセンサ４８は、３軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。例えば、ジャイロセンサ４８は、３軸ジャイロセンサであってもよいし、２軸ジャイロセンサと１軸ジャイロセンサとを組み合わせて３軸周りの角速度を検出するものであってもよい。ジャイロセンサ４８で検出された角速度を表すデータは、通信部３６へ出力される。また、ジャイロセンサ４８は１軸または２軸回りの角速度を検出するものであってもよい。
【００９２】
通信部３６は、マイコン４２、メモリ４３、無線モジュール４４、およびアンテナ４５を含んでいる。マイコン４２は、処理を行う際にメモリ４３を記憶領域として用いながら、マイコン４２が取得したデータをゲーム装置３へ無線送信する無線モジュール４４を制御する。
【００９３】
操作部３２、撮像情報演算部３５、加速度センサ３７、およびジャイロセンサ４８からマイコン４２へ出力されたデータは、一時的にメモリ４３に格納される。これらのデータは、操作データ（コントローラ操作データ）としてゲーム装置３へ送信される。すなわち、マイコン４２は、ゲーム装置３のコントローラ通信モジュール１９への送信タイミングが到来すると、メモリ４３に格納されている操作データを無線モジュール４４へ出力する。無線モジュール４４は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ４５から放射する。つまり、操作データは、無線モジュール４４で微弱電波信号に変調されてコントローラ５から送信される。微弱電波信号はゲーム装置３側のコントローラ通信モジュール１９で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置３は操作データを取得することができる。そして、ゲーム装置３のＣＰＵ１０は、コントローラ５から取得した操作データを用いてゲーム処理を行う。なお、通信部３６からコントローラ通信モジュール１９への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は１／６０秒を単位として（１フレーム時間として）行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ５の通信部３６は、例えば１／２００秒に１回の割合で操作データをゲーム装置３のコントローラ通信モジュール１９へ出力する。
【００９４】
以上のように、コントローラ５は、自機に対する操作を表す操作データとして、マーカ座標データ、加速度データ、角速度データ、および操作ボタンデータを送信可能である。また、ゲーム装置３は、上記操作データをゲーム入力として用いてゲーム処理を実行する。したがって、上記コントローラ５を用いることによって、ユーザは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ５自体を動かすゲーム操作を行うことができる。例えば、コントローラ５を任意の姿勢に傾ける操作、コントローラ５によって画面上の任意の位置を指示する操作、および、コントローラ５自体を動かす操作等を行うことが可能となる。
【００９５】
また、本実施形態において、コントローラ５は、ゲーム画像を表示する表示手段を有しないが、例えば電池残量を表す画像等を表示するための表示手段を有していてもよい。
【００９６】
［４．端末装置７の構成］
次に、図８〜図１０を参照して、端末装置７の構成について説明する。図８は、端末装置７の外観構成を示す図である。図８における（ａ）図は端末装置７の正面図であり、（ｂ）図は上面図であり、（ｃ）図は右側面図であり、（ｄ）図は下面図である。また、図９は、ユーザが端末装置７を把持した様子を示す図である。
【００９７】
図８に示されるように、端末装置７は、大略的には横長の長方形の板状形状であるハウジング５０を備える。ハウジング５０は、ユーザが把持することができる程度の大きさである。したがって、ユーザは、端末装置７を持って動かしたり、端末装置７の配置位置を変更したりすることができる。
【００９８】
端末装置７は、ハウジング５０の表面にＬＣＤ５１を有する。ＬＣＤ５１は、ハウジング５０の表面の中央付近に設けられる。したがって、ユーザは、図９に示すようにＬＣＤ５１の両側部分のハウジング５０を持つことによって、ＬＣＤ５１の画面を見ながら端末装置を持って動かすことができる。なお、図９ではユーザがＬＣＤ５１の左右両側の部分のハウジング５０を持つことで端末装置７を横持ちで（横に長い向きにして）持つ例を示しているが、端末装置７を縦持ちで（縦に長い向きにして）持つことも可能である。
【００９９】
図８の（ａ）図に示すように、端末装置７は、操作手段として、ＬＣＤ５１の画面上にタッチパネル５２を有する。本実施形態では、タッチパネル５２は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。また、タッチパネル５２はシングルタッチ方式でもよいし、マルチタッチ方式であってもよい。本実施形態では、タッチパネル５２として、ＬＣＤ５１の解像度と同解像度（検出精度）のものを利用する。ただし、必ずしもタッチパネル５２の解像度とＬＣＤ５１の解像度が一致している必要はない。タッチパネル５２に対する入力は通常タッチペンを用いて行われるが、タッチペンに限らずユーザの指でタッチパネル５２に対する入力をすることも可能である。なお、ハウジング５０には、タッチパネル５２に対する操作を行うために用いられるタッチペンを収納するための収納穴が設けられていてもよい。このように、端末装置７はタッチパネル５２を備えるので、ユーザは、端末装置７を動かしながらタッチパネル５２を操作することができる。つまりユーザは、ＬＣＤ５１の画面を動かしつつ、その画面に対して直接（タッチパネル５２によって）入力を行うことができる。
【０１００】
図８に示すように、端末装置７は、操作手段として、２つのアナログスティック５３Ａおよび５３Ｂと、複数のボタン５４Ａ〜５４Ｌとを備えている。各アナログスティック５３Ａおよび５３Ｂは、方向を指示するデバイスである。各アナログスティック５３Ａおよび５３Ｂは、ユーザの指で操作されるスティック部がハウジング５０の表面に対して任意の方向（上下左右および斜め方向の任意の角度）にスライド（または傾倒）することができるように構成されている。また、左アナログスティック５３ＡはＬＣＤ５１の画面の左側に、右アナログスティック５３ＢはＬＣＤ５１の画面の右側にそれぞれ設けられる。したがって、ユーザは、左右いずれの手でもアナログスティックを用いて方向を指示する入力を行うことができる。また、図９に示すように、各アナログスティック５３Ａおよび５３Ｂは、ユーザが端末装置７の左右部分を把持した状態で操作可能な位置に設けられるので、ユーザは、端末装置７を持って動かす場合においても各アナログスティック５３Ａおよび５３Ｂを容易に操作することができる。
【０１０１】
各ボタン５４Ａ〜５４Ｌは、所定の入力を行うための操作手段である。以下に示すように、各ボタン５４Ａ〜５４Ｌは、ユーザが端末装置７の左右部分を把持した状態で操作可能な位置に設けられる（図９参照）。したがって、ユーザは、端末装置７を持って動かす場合においてもこれらの操作手段を容易に操作することができる。
【０１０２】
図８の（ａ）図に示すように、ハウジング５０の表面には、各操作ボタン５４Ａ〜５４Ｌのうち、十字ボタン（方向入力ボタン）５４Ａと、ボタン５４Ｂ〜５４Ｈとが設けられる。つまり、これらのボタン５４Ａ〜５４Ｇは、ユーザの親指で操作可能な位置に配置されている（図９参照）。
【０１０３】
十字ボタン５４Ａは、ＬＣＤ５１の左側であって、左アナログスティック５３Ａの下側に設けられる。つまり、十字ボタン５４Ａはユーザの左手で操作可能な位置に配置されている。十字ボタン５４Ａは、十字の形状を有しており、上下左右の方向を指示することが可能なボタンである。また、ボタン５４Ｂ〜５４Ｄは、ＬＣＤ５１の下側に設けられる。これら３つのボタン５４Ｂ〜５４Ｄは、左右両方の手で操作可能な位置に配置されている。また、４つのボタン５４Ｅ〜５４Ｈは、ＬＣＤ５１の右側であって、右アナログスティック５３Ｂの下側に設けられる。つまり、４つのボタン５４Ｅ〜５４Ｈはユーザの右手で操作可能な位置に配置されている。さらに、４つのボタン５４Ｅ〜５４Ｈは、（４つのボタン５４Ｅ〜５４Ｈの中心位置に対して）上下左右の位置関係となるように配置されている。したがって、端末装置７は、ユーザに上下左右の方向を指示させるためのボタンとして４つのボタン５４Ｅ〜５４Ｈを機能させることも可能である。
【０１０４】
また、図８の（ａ）図、（ｂ）図、および（ｃ）図に示すように、第１Ｌボタン５４Ｉおよび第１Ｒボタン５４Ｊは、ハウジング５０の斜め上部分（左上部分および右上部分）に設けられる。具体的には、第１Ｌボタン５４Ｉは、板状のハウジング５０における上側の側面の左端に設けられ、上側および左側の側面から露出している。また、第１Ｒボタン５４Ｊは、ハウジング５０における上側の側面の右端に設けられ、上側および右側の側面から露出している。このように、第１Ｌボタン５４Ｉは、ユーザの左手人差し指で操作可能な位置に配置され、第１Ｒボタン５４Ｊは、ユーザの右手人差し指で操作可能な位置に配置される（図９参照）。
【０１０５】
また、図８の（ｂ）図および（ｃ）図に示すように、第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌは、板状のハウジング５０の裏面（すなわちＬＣＤ５１が設けられる表面の反対側の面）に突起して設けられる足部５９Ａおよび５９Ｂに配置される。具体的には、第２Ｌボタン５４Ｋは、ハウジング５０の裏面の左側（表面側から見たときの左側）のやや上方に設けられ、第２Ｒボタン５４Ｌは、ハウジング５０の裏面の右側（表面側から見たときの右側）のやや上方に設けられる。換言すれば、第２Ｌボタン５４Ｋは、表面に設けられる左アナログスティック５３Ａの概ね反対側の位置に設けられ、第２Ｒボタン５４Ｌは、表面に設けられる右アナログスティック５３Ｂの概ね反対側の位置に設けられる。このように、第２Ｌボタン５４Ｋは、ユーザの左手中指で操作可能な位置に配置され、第２Ｒボタン５４Ｌは、ユーザの右手中指で操作可能な位置に配置される（図９参照）。また、第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌは、図８の（ｃ）図に示すように、上記足部５９Ａおよび５９Ｂの斜め上方を向く面に設けられ、斜め上方を向くボタン面を有する。ユーザが端末装置７を把持した場合には中指は上下方向に動くと考えられるので、ボタン面を上方に向けることで、ユーザは第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌを押下しやすくなる。また、ハウジング５０の裏面に足部が設けられることにより、ユーザはハウジング５０を把持しやすくなり、かつ、足部にボタンが設けられることで、ハウジング５０を把持したまま操作しやすくなる。
【０１０６】
なお、図８に示す端末装置７に関しては、第２Ｌボタン５４Ｋおよび第２Ｒボタン５４Ｌが裏面に設けられるので、ＬＣＤ５１の画面（ハウジング５０の表面）が上を向いた状態で端末装置７を載置させる場合、画面が完全に水平にはならない場合がある。そのため、他の実施形態においては、ハウジング５０の裏面に３つ以上の足部が形成されてもよい。これによれば、ＬＣＤ５１の画面が上を向いた状態では足部が床面に接することで床面に載置できるので、画面が水平になるように端末装置７を載置することができる。また、着脱可能な足部を追加することで端末装置７を水平に載置するようにしてもよい。
【０１０７】
各ボタン５４Ａ〜５４Ｌには、ゲームプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン５４Ａおよびボタン５４Ｅ〜５４Ｈは方向指示操作や選択操作等に用いられてもよいし、各ボタン５４Ｂ〜５４Ｅは決定操作やキャンセル操作等に用いられてもよい。
【０１０８】
なお、図示しないが、端末装置７は、端末装置７の電源をオン／オフするための電源ボタンを有している。また、端末装置７は、ＬＣＤ５１の画面表示をオン／オフするためのボタンや、ゲーム装置３との接続設定（ペアリング）を行うためのボタンや、スピーカ（図１０に示すスピーカ６７）の音量を調節するためのボタンを有していてもよい。
【０１０９】
図８の（ａ）図に示すように、端末装置７は、マーカ５５Ａおよびマーカ５５Ｂからなるマーカ部（図１０に示すマーカ部５５）をハウジング５０の表面に備えている。マーカ部５５は、ＬＣＤ５１の上側に設けられる。各マーカ５５Ａおよびマーカ５５Ｂは、マーカ装置６の各マーカ６Ｒおよび６Ｌと同様、１以上の赤外ＬＥＤで構成される。マーカ部５５は、上述のマーカ装置６と同様、コントローラ５の動き等をゲーム装置３が算出するために用いられる。また、ゲーム装置３はマーカ部５５が備える各赤外ＬＥＤの点灯を制御することが可能である。
【０１１０】
端末装置７は、撮像手段であるカメラ５６を備えている。カメラ５６は、所定の解像度を有する撮像素子（例えば、ＣＣＤイメージセンサやＣＭＯＳイメージセンサ等）と、レンズとを含む。図８に示すように、本実施形態では、カメラ５６はハウジング５０の表面に設けられる。したがって、カメラ５６は、端末装置７を持っているユーザの顔を撮像することができ、例えばＬＣＤ５１を見ながらゲームを行っている時のユーザを撮像することができる。
【０１１１】
なお、端末装置７は、音声入力手段であるマイク（図１０に示すマイク６９）を備えている。ハウジング５０の表面には、マイクロフォン用孔６０が設けられる。マイク６９はこのマイクロフォン用孔６０の奥のハウジング５０内部に設けられる。マイクは、ユーザの音声等、端末装置７の周囲の音を検出する。
【０１１２】
端末装置７は、音声出力手段であるスピーカ（図１０に示すスピーカ６７）を備えている。図８の（ｄ）図に示すように、ハウジング５０の下側側面にはスピーカ孔５７が設けられる。スピーカ６７の出力音はこのスピーカ孔５７から出力される。本実施形態では、端末装置７は２つのスピーカを備えており、左スピーカおよび右スピーカのそれぞれの位置にスピーカ孔５７が設けられる。
【０１１３】
また、端末装置７は、他の装置を端末装置７に接続するための拡張コネクタ５８を備えている。本実施形態においては、図８の（ｄ）図に示すように、拡張コネクタ５８は、ハウジング５０の下側側面に設けられる。なお、拡張コネクタ５８に接続される他の装置はどのようなものであってもよく、例えば、特定のゲームに用いるコントローラ（銃型のコントローラ等）やキーボード等の入力装置であってもよい。他の装置を接続する必要がなければ、拡張コネクタ５８は設けられていなくともよい。
【０１１４】
なお、図８に示した端末装置７に関して、各操作ボタンやハウジング５０の形状や、各構成要素の数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。
【０１１５】
次に、図１０を参照して、端末装置７の内部構成について説明する。図１０は、端末装置７の内部構成を示すブロック図である。図１０に示すように、端末装置７は、図８に示した構成の他、タッチパネルコントローラ６１、磁気センサ６２、加速度センサ６３、ジャイロセンサ６４、ユーザインタフェースコントローラ（ＵＩコントローラ）６５、コーデックＬＳＩ６６、スピーカ６７、サウンドＩＣ６８、マイク６９、無線モジュール７０、アンテナ７１、赤外線通信モジュール７２、フラッシュメモリ７３、電源ＩＣ７４、電池７５、および、バイブレータ７９を備える。これらの電子部品は、電子回路基板上に実装されてハウジング５０内に収納される。
【０１１６】
ＵＩコントローラ６５は、各種の入出力部に対するデータの入出力を制御するための回路である。ＵＩコントローラ６５は、タッチパネルコントローラ６１、アナログスティック５３（アナログスティック５３Ａおよび５３Ｂ）、操作ボタン５４（各操作ボタン５４Ａ〜５４Ｌ）、マーカ部５５、磁気センサ６２、加速度センサ６３、ジャイロセンサ６４、およびバイブレータ７９に接続される。また、ＵＩコントローラ６５は、コーデックＬＳＩ６６と拡張コネクタ５８に接続される。また、ＵＩコントローラ６５には電源ＩＣ７４が接続され、ＵＩコントローラ６５を介して各部に電力が供給される。電源ＩＣ７４には内蔵の電池７５が接続され、電力が供給される。また、電源ＩＣ７４には、コネクタ等を介して外部電源から電力を取得可能な充電器７６またはケーブルを接続することが可能であり、端末装置７は、当該充電器７６またはケーブルを用いて外部電源からの電力供給と充電を行うことができる。なお、端末装置７は、図示しない充電機能を有するクレイドルに端末装置７を装着することで充電を行うようにしてもよい。
【０１１７】
タッチパネルコントローラ６１は、タッチパネル５２に接続され、タッチパネル５２の制御を行う回路である。タッチパネルコントローラ６１は、タッチパネル５２からの信号に基づいて所定の形式のタッチ位置データを生成してＵＩコントローラ６５へ出力する。タッチ位置データは、タッチパネル５２の入力面において入力が行われた位置の座標を表す。なお、タッチパネルコントローラ６１は、タッチパネル５２からの信号の読み込み、および、タッチ位置データの生成を所定時間に１回の割合で行う。また、ＵＩコントローラ６５からタッチパネルコントローラ６１へは、タッチパネル５２に対する各種の制御指示が出力される。
【０１１８】
アナログスティック５３は、ユーザの指で操作されるスティック部がスライドした（または傾倒した）方向および量を表すスティックデータをＵＩコントローラ６５へ出力する。また、操作ボタン５４は、各操作ボタン５４Ａ〜５４Ｌに対する入力状況（押下されたか否か）を表す操作ボタンデータをＵＩコントローラ６５へ出力する。
【０１１９】
磁気センサ６２は、磁界の大きさおよび方向を検知することで方位を検出する。検出された方位を示す方位データは、ＵＩコントローラ６５へ出力される。また、ＵＩコントローラ６５から磁気センサ６２へは、磁気センサ６２に対する制御指示が出力される。磁気センサ６２に関しては、ＭＩ（磁気インピーダンス）素子、フラックスゲートセンサ、ホール素子、ＧＭＲ（巨大磁気抵抗）素子、ＴＭＲ（トンネル磁気抵抗）素子、あるいはＡＭＲ（異方性磁気抵抗）素子等を用いたセンサがあるが、方位を検出することができればどのようなものが用いられてもよい。なお、厳密には、地磁気以外に磁界が発生している場所においては、得られた方位データは方位を示さないことになるが、そのような場合であっても、端末装置７が動いた場合には方位データが変化するため、端末装置７の姿勢の変化を算出することができる。
【０１２０】
加速度センサ６３は、ハウジング５０の内部に設けられ、３軸（図８の（ａ）図に示すｘｙｚ軸）方向に沿った直線加速度の大きさを検出する。具体的には、加速度センサ６３は、ハウジング５０の長辺方向をｘ軸、ハウジング５０の表面に対して垂直な方向をｙ軸、ハウジング５０の短辺方向をｚ軸として、各軸の直線加速度の大きさを検出する。検出された加速度を表す加速度データはＵＩコントローラ６５へ出力される。また、ＵＩコントローラ６５から加速度センサ６３へは、加速度センサ６３に対する制御指示が出力される。加速度センサ６３は、本実施形態では例えば静電容量式のＭＥＭＳ型加速度センサであるとするが、他の実施形態においては他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ６３は１軸または２軸方向を検出する加速度センサであってもよい。
【０１２１】
ジャイロセンサ６４は、ハウジング５０の内部に設けられ、上記ｘ軸、ｙ軸およびｚ軸の３軸周りの角速度を検出する。検出された角速度を表す角速度データは、ＵＩコントローラ６５へ出力される。また、ＵＩコントローラ６５からジャイロセンサ６４へは、ジャイロセンサ６４に対する制御指示が出力される。なお、３軸の角速度を検出するために用いられるジャイロセンサの数および組み合わせはどのようなものであってもよく、ジャイロセンサ６４はジャイロセンサ４８と同様、２軸ジャイロセンサと１軸ジャイロセンサとで構成されてもよい。また、ジャイロセンサ６４は１軸または２軸方向を検出するジャイロセンサであってもよい。
【０１２２】
バイブレータ７９は、例えば振動モータやソレノイドであり、ＵＩコントローラ６５に接続される。ＵＩコントローラ６５の指示によりバイブレータ７９が作動することによって端末装置７に振動が発生する。これによって、端末装置７を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。
【０１２３】
ＵＩコントローラ６５は、上記の各構成要素から受け取ったタッチ位置データ、スティックデータ、操作ボタンデータ、方位データ、加速度データ、および角速度データを含む操作データをコーデックＬＳＩ６６に出力する。なお、拡張コネクタ５８を介して端末装置７に他の装置が接続される場合には、当該他の装置に対する操作を表すデータが上記操作データにさらに含まれていてもよい。
【０１２４】
コーデックＬＳＩ６６は、ゲーム装置３へ送信するデータに対する圧縮処理、および、ゲーム装置３から送信されたデータに対する伸張処理を行う回路である。コーデックＬＳＩ６６には、ＬＣＤ５１、カメラ５６、サウンドＩＣ６８、無線モジュール７０、フラッシュメモリ７３、および赤外線通信モジュール７２が接続される。また、コーデックＬＳＩ６６はＣＰＵ７７と内部メモリ７８を含む。端末装置７はゲーム処理自体を行なわない構成であるが、端末装置７の管理や通信のための最小限のプログラムを実行する必要がある。電源投入時にフラッシュメモリ７３に格納されたプログラムを内部メモリ７８に読み出してＣＰＵ７７が実行することで、端末装置７が起動する。また、内部メモリ７８の一部の領域はＬＣＤ５１のためのＶＲＡＭとして使用される。
【０１２５】
カメラ５６は、ゲーム装置３からの指示に従って画像を撮像し、撮像した画像データをコーデックＬＳＩ６６へ出力する。また、コーデックＬＳＩ６６からカメラ５６へは、画像の撮像指示等、カメラ５６に対する制御指示が出力される。なお、カメラ５６は動画の撮影も可能である。すなわち、カメラ５６は、繰り返し撮像を行って画像データをコーデックＬＳＩ６６へ繰り返し出力することも可能である。
【０１２６】
サウンドＩＣ６８は、スピーカ６７およびマイク６９に接続され、スピーカ６７およびマイク６９への音声データの入出力を制御する回路である。すなわち、コーデックＬＳＩ６６から音声データを受け取った場合、サウンドＩＣ６８は当該音声データに対してＤ／Ａ変換を行って得られる音声信号をスピーカ６７へ出力し、スピーカ６７から音を出力させる。また、マイク６９は、端末装置７に伝わる音（ユーザの音声等）を検知して、当該音を示す音声信号をサウンドＩＣ６８へ出力する。サウンドＩＣ６８は、マイク６９からの音声信号に対してＡ／Ｄ変換を行い、所定の形式の音声データをコーデックＬＳＩ６６へ出力する。
【０１２７】
赤外線通信モジュール７２は、赤外線信号を発光し、他の装置との間で赤外線通信を行う。ここでは、赤外線通信モジュール７２は、例えばＩｒＤＡの規格に従った赤外線通信を行う機能と、テレビ２を制御するための赤外線信号を出力する機能とを備える。
【０１２８】
コーデックＬＳＩ６６は、カメラ５６からの画像データと、マイク６９からの音声データと、ＵＩコントローラ６５からの端末操作データとを無線モジュール７０を介してゲーム装置３へ送信する。本実施形態では、コーデックＬＳＩ６６は、画像データおよび音声データに対して、コーデックＬＳＩ２７と同様の圧縮処理を行う。上記端末操作データ、ならびに、圧縮された画像データおよび音声データは、送信データとして無線モジュール７０に出力される。無線モジュール７０にはアンテナ７１が接続されており、無線モジュール７０はアンテナ７１を介してゲーム装置３へ上記送信データを送信する。無線モジュール７０は、ゲーム装置３の端末通信モジュール２８と同様の機能を有している。すなわち、無線モジュール７０は、例えばＩＥＥＥ８０２．１１ｎの規格に準拠した方式により、無線ＬＡＮに接続する機能を有する。送信されるデータは必要に応じて暗号化されていてもよいし、されていなくともよい。
【０１２９】
以上のように、端末装置７からゲーム装置３へ送信される送信データには、操作データ（端末操作データ）、画像データ、および音声データが含まれる。なお、拡張コネクタ５８を介して端末装置７に他の装置が接続される場合には、当該他の装置から受け取ったデータが上記送信データにさらに含まれていてもよい。コーデックＬＳＩ６６は、赤外線通信モジュール７２による赤外線通信によって受信したデータを、必要に応じて上記送信データに含めてゲーム装置３へ送信してもよい。
【０１３０】
また、上述のように、ゲーム装置３から端末装置７へは、圧縮された画像データおよび音声データが送信される。これらのデータはアンテナ７１および無線モジュール７０を介してコーデックＬＳＩ６６に受信される。コーデックＬＳＩ６６は、受信した画像データおよび音声データを伸張する。伸張された画像データはＬＣＤ５１へ出力され、画像がＬＣＤ５１に表示される。また、伸張された音声データはサウンドＩＣ６８へ出力され、サウンドＩＣ６８はスピーカ６７から音を出力させる。
【０１３１】
また、ゲーム装置３から受信されるデータに制御データが含まれる場合、コーデックＬＳＩ６６およびＵＩコントローラ６５は、制御データに従った制御指示を各部に行う。上述のように、制御データは、端末装置７が備える各構成要素（本実施形態では、カメラ５６、タッチパネルコントローラ６１、マーカ部５５、各センサ６２〜６４、赤外線通信モジュール７２、およびバイブレータ７９）に対する制御指示を表すデータである。本実施形態では、制御データが表す制御指示としては、上記各構成要素を動作させたり、動作を休止（停止）させたりする指示が考えられる。すなわち、ゲームで使用しない構成要素については電力消費を抑えるために休止させてもよく、その場合、端末装置７からゲーム装置３へ送信される送信データには、休止した構成要素からのデータが含まれないようにする。なお、マーカ部５５は赤外ＬＥＤであるので、制御は単に電力の供給のＯＮ／ＯＦＦでよい。
【０１３２】
また、ゲーム装置３は、上記赤外線通信モジュール７２の出力を制御することによって、テレビ２の動作を制御することが可能である。すなわち、ゲーム装置３は、テレビ２を制御するための制御指令に対応する赤外線信号を赤外線通信モジュール７２に出力させるための指示（上記制御データ）を端末装置７に出力する。この指示に応じて、コーデックＬＳＩ６６は、上記制御指令に対応する赤外線信号を赤外線通信モジュール７２に出力させる。ここで、テレビ２は赤外線信号を受光可能な赤外線受光部を備えている。赤外線通信モジュール７２から出力された赤外線信号が赤外線受光部によって受光されることで、テレビ２は当該赤外線信号に応じた動作を行う。なお、ゲーム装置３からの上記指示は、赤外線信号のパターンを示すものであってもよいし、端末装置７が赤外線信号のパターンを記憶している場合には、当該パターンを示す指示であってもよい。
【０１３３】
以上のように、端末装置７は、タッチパネル５２、アナログスティック５３、および操作ボタン５４といった操作手段を備えるが、他の実施形態においては、これらの操作手段に代えて、または、これらの操作手段とともに、他の操作手段を備える構成であってもよい。
【０１３４】
また、端末装置７は、端末装置７の動き（位置や姿勢、あるいは、位置や姿勢の変化を含む）を算出するためのセンサとして、磁気センサ６２、加速度センサ６３、およびジャイロセンサ６４を備えるが、他の実施形態においては、これらのセンサのうち１つまたは２つのみを備える構成であってもよい。また、他の実施形態においては、これらのセンサに代えて、または、これらのセンサとともに、他のセンサを備える構成であってもよい。
【０１３５】
また、端末装置７は、カメラ５６およびマイク６９を備える構成であるが、他の実施形態においては、カメラ５６およびマイク６９を備えていなくてもよく、また、いずれか一方のみを備えていてもよい。
【０１３６】
また、端末装置７は、端末装置７とコントローラ５との位置関係（コントローラ５から見た端末装置７の位置および／または姿勢等）を算出するための構成としてマーカ部５５を備える構成であるが、他の実施形態ではマーカ部５５を備えていない構成としてもよい。また、他の実施形態では、端末装置７は、上記位置関係を算出するための構成として他の手段を備えていてもよい。例えば、他の実施形態においては、コントローラ５がマーカ部を備え、端末装置７が撮像素子を備える構成としてもよい。さらにこの場合、マーカ装置６は赤外ＬＥＤに代えて、撮像素子を備える構成としてもよい。
【０１３７】
［５．ゲーム処理の概要］
以下、図１１〜図１４を参照して、本実施形態のゲームシステム１において実行されるゲーム処理の概要について説明する。本実施形態では、プレイヤは端末装置７を用いて３次元の仮想空間（ゲーム空間）に点や線を描くことができる。仮想空間を表すゲーム画像は、テレビ２および端末装置７の２つの表示装置に表示される。本実施形態においては、端末装置７は、表示装置としてだけでなく操作装置として用いられる。そのため、コントローラ５は用いられなくてもよく、ゲームシステム１はコントローラ５を含まない構成であってもよい。
【０１３８】
図１１は、本実施形態においてゲーム操作が行われる場合におけるテレビ２および端末装置７を示す図である。図１１に示すように、テレビ２には所定の面８１が設置される３次元の仮想空間が表示され、端末装置７にもこの面８１が表示される。端末装置７においては、面８１と表示画面とが一致するように面８１が表示される。つまり、面８１は、端末装置７が備えるタッチパネル５２の入力面に対応する。なお、面８１はタッチパネル５２の入力面（ＬＣＤ５１の画面）と同じアスペクト比を有する長方形の平面である。また、詳細は後述するが、面８１の姿勢は端末装置７の姿勢に対応しており、端末装置７の姿勢を変化させることで仮想空間における面８１の姿勢が変化する。なお、図１１では、端末装置７は、タッチパネル５２が水平となる姿勢であるので、面８１も仮想空間において水平になっている。なお、端末装置７にはアイコン８２が表示される。詳細は後述するが、アイコン８２は、仮想空間に生成された軌跡を移動（回転）させるために用いられる。
【０１３９】
プレイヤは、端末装置７のタッチパネル５２上にタッチペン８０や指等で点や線を描くことができる。点や線が描かれた場合、図１１に示すように、仮想空間における面８１上には、描かれた点や線（図１１では線Ａ１）が生成されて表示される。具体的には、タッチパネル５２に対する入力（タッチ入力）が行われると、入力が行われた位置（タッチ位置）に対応する面８１上の位置が算出される。なお、以下では、タッチ位置に対応する仮想空間の位置（面８１上の位置）を「指定位置」と呼ぶ。本実施形態では、点や線を表すためのオブジェクトが上記指定位置に配置されることによって、入力された点や線が表示される。以上のように、プレイヤは、タッチパネル５２に対する入力操作によって３次元の仮想空間内に点や線を描くことができる。
【０１４０】
図１２は、図１１に示す状態から端末装置７を傾けた場合におけるテレビ２および端末装置７を示す図である。図１１に示す状態ではタッチパネル５２の入力面が水平となっていたのに対して、図１２に示す状態では当該入力面が鉛直となるように端末装置７の姿勢が変化している。タッチパネル５２の入力面が鉛直になるように端末装置７の姿勢を変化させると、図１２に示すように、仮想空間内の面８１も鉛直となるように変化する。なお、本実施形態では、面８１は、面８１の中央の位置を回転の中心として、端末装置７の姿勢に応じて回転する。また、面８１の姿勢が変化した場合、端末装置７に表示される画像の視点および視線方向は、面８１と表示画面とが一致するように変化する。
【０１４１】
図１２に示す状態においても図１１に示す状態と同様、プレイヤは、タッチパネル５２に対する入力操作によって３次元の仮想空間内に点や線を描くことができる。つまり、図１２に示す状態で、プレイヤがタッチパネル５２に対して線を描くと、仮想空間において鉛直方向に平行となった面８１上に線が生成されて表示される。ここで、図１２に示す状態においては、面８１の姿勢が図１１に示す状態とは異なっているので、タッチ入力によって生成される線の位置や向きは図１１とは異なる。すなわち、図１１に示す状態で生成された線Ａ１は、水平な面内において生成されるのに対して、図１２に示す状態で生成される線Ａ２は、鉛直な面内において生成される。したがって、線Ａ１と線Ａ２とで形成される図形は、平面的なものではなく、立体的なものになる。
【０１４２】
以上のように、本実施形態においては、端末装置７のタッチパネル５２に対する入力に応じて、仮想空間内の面８１上に図形（点や線）が生成されるとともに、端末装置７の姿勢に応じて面８１の姿勢が変化する。これによれば、面８１の姿勢を変化させることによって、面８１上に生成される図形を立体的なものとすることができる。つまり、プレイヤは、タッチパネル５２に対する入力操作によって、３次元の仮想空間において３次元的に自由に図形を描くことができる。
【０１４３】
また、本実施形態では、プレイヤは、端末装置７の姿勢を変化させる操作によって仮想空間内に線を描くことも可能である。図１３は、図１２に示す状態から端末装置７を傾けた場合におけるテレビ２および端末装置７を示す図である。図１２に示す状態では、タッチパネル５２の入力面の法線方向がテレビ２の方向を向いていたのに対して、図１３に示す状態では、当該法線方向がテレビ２の方向よりやや横を向いている。また、ここでは、プレイヤは、図１２に示す状態から図１３に示す状態へ端末装置７の姿勢を変化させる際、タッチパネル５２のある１点の位置（アイコン８２の位置を除く）をタッチし続けているものとする。図１２に示す状態から図１３に示す状態となる場合においても上記と同様、図１３に示すように、端末装置７の姿勢に応じて面８１の姿勢が変化する。この場合、プレイヤが同じ位置をタッチし続けていても、面８１の姿勢が変化することによって仮想空間内における指定位置は変化する。したがって、図１３に示すように、指定位置が変化した軌跡を表す線Ａ３が生成されて表示される。このように、本実施形態では、タッチパネル５２上に線を描く操作の他に、端末装置７の姿勢を変化させる操作によって仮想空間内に線を描くことも可能である。また、端末装置７の姿勢を変化させる操作によって、面８１に平行でない向きに線を描くことが可能である。
【０１４４】
また、本実施形態では、プレイヤは、仮想空間内に生成された図形の向き（姿勢）を変化させることも可能である。図１４は、図１２に示す状態から図形を回転させた場合におけるテレビ２および端末装置７を示す図である。図１２に示す状態では、タッチパネル５２の入力面の法線方向がテレビ２の方向を向いていたのに対して、図１４に示す状態では図１３に示す状態と同様、当該法線方向がテレビ２の方向よりやや横を向いている。また、プレイヤは、図１２に示す状態から図１３に示す状態へ端末装置７の姿勢を変化させる際、所定の操作（ここでは、タッチパネル５２のアイコン８２の位置をタッチし続ける操作）を行っているものとする。このように、所定の操作が行われた状態で端末装置７の姿勢が変化される場合、生成された図形の姿勢は、端末装置７の姿勢に応じて面８１の姿勢と共に変化する。例えば、図１４においては、線Ａ１およびＡ２からなる図形は、端末装置７が鉛直方向を軸として回転することに応じて、仮想空間における鉛直方向を軸として面８１と共に回転する。このとき、テレビ２には、上記図形の向きが変化して表示される。したがって、プレイヤは、アイコン８２をタッチしながら端末装置７の姿勢を変化させる操作によって、作成した図形をいろいろな向きから見ることができ、図形の形状を確認することができる。なお、端末装置７に表示される画像に関しては、視線方向が面８１の姿勢と共に変化するので、図形は動いていないように見える。また、本実施形態では、上記所定の操作は、アイコン８２をタッチする操作であるとするが、他の実施形態では、例えば端末装置７の所定のボタンを押下する操作等、どのような操作であってもよい。
【０１４５】
［６．ゲーム処理の詳細］
次に、本ゲームシステムにおいて実行されるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる各種データについて説明する。図１５は、ゲーム処理において用いられる各種データを示す図である。図１５において、ゲーム装置３のメインメモリ（外部メインメモリ１２または内部メインメモリ１１ｅ）に記憶される主なデータを示す図である。図１５に示すように、ゲーム装置３のメインメモリには、ゲームプログラム９０、端末操作データ９１、および処理用データ９８が記憶される。なお、メインメモリには、図１５に示すデータの他、ゲームに登場する各種オブジェクトの画像データやゲームに使用される音声データ等、ゲームに必要なデータが記憶される。
【０１４６】
ゲームプログラム９０は、ゲーム装置３に電源が投入された後の適宜のタイミングで光ディスク４からその一部または全部が読み込まれてメインメモリに記憶される。なお、ゲームプログラム９０は、光ディスク４に代えて、フラッシュメモリ１７やゲーム装置３の外部装置から（例えばインターネットを介して）取得されてもよい。また、ゲームプログラム９０に含まれる一部（例えば、コントローラ５および／または端末装置７の姿勢を算出するためのプログラム）については、ゲーム装置３内に予め記憶されていてもよい。
【０１４７】
端末操作データ９１は、端末装置７に対するプレイヤの操作を表すデータである。端末操作データ９１は、端末装置７から送信されてゲーム装置３において取得され、メインメモリに記憶される。端末操作データ９１は、操作ボタンデータ９２、スティックデータ９３、タッチ位置データ９４、角速度データ９５、加速度データ９６、および方位データ９７を含む。端末操作データ９１は、図１５に示す各データの他、カメラ５６によって撮像された画像のデータや、マイク６９によって検出された音声データを含んでいてもよい。なお、メインメモリには、最新の（最後に取得された）ものから順に所定個数の端末操作データが記憶されてもよい。
【０１４８】
操作ボタンデータ９２は、端末装置７に設けられる各操作ボタン５４Ａ〜５４Ｌに対する入力状態を表すデータである。具体的には、操作ボタンデータ９２は、各操作ボタン５４Ａ〜５４Ｌが押下されているか否かを表す。
【０１４９】
スティックデータ９３は、アナログスティック５３（アナログスティック５３Ａおよび５３Ｂ）のスティック部がスライドした（または傾倒した）方向および量を表すデータである。上記方向および量は、例えば２次元座標や２次元ベクトルとして表されてもよい。
【０１５０】
タッチ位置データ９４は、タッチパネル５２の入力面において入力が行われた位置（タッチ位置）を表すデータである。本実施形態では、タッチ位置データ９４は、上記入力面上の位置を示すための２次元座標系の座標値を表す。なお、タッチパネル５２がマルチタッチ方式である場合には、タッチ位置データ９４は複数のタッチ位置を表すこともある。
【０１５１】
角速度データ９５は、ジャイロセンサ６４によって検出された角速度を表すデータである。本実施形態では、角速度データ９５は、図８に示すｘｙｚの３軸回りのそれぞれの角速度を表すものであるが、他の実施形態においては、任意の１軸以上の軸回り角速度を表すものであればよい。
【０１５２】
加速度データ９６は、加速度センサ６３によって検出された加速度（加速度ベクトル）を表すデータである。本実施形態では、加速度データ９６は、図８に示すｘｙｚの３軸の方向に関する加速度を各成分とする３次元の加速度を表すものであるが、他の実施形態においては、任意の１以上の方向に関する加速度を表すものであればよい。
【０１５３】
方位データ９７は、磁気センサ６２によって検出された方位を表すデータである。本実施形態では、方位データ９７は、端末装置７を基準として所定の方位（例えば北）の向きを表す。なお、地磁気以外の磁界が発生している場合においては、方位データ９７は厳密には絶対的な方位（北等）を示さないことになる。ただし、その場所における磁界の方向に対する端末装置７の相対的な方向が方位データ９７によって示されるので、そのような場合であっても方位データ９７に基づいて端末装置７の姿勢または姿勢の変化を算出することが可能である。
【０１５４】
なお、端末操作データ９１は、端末装置７に対する操作を表すものであればよく、上記各データ９２〜９７のいずれか１つのみを含むものであってもよい。また、端末装置７が他の入力手段（例えば、タッチパッドや、コントローラ５の撮像手段等）を有する場合には、端末操作データ９１は、当該他の入力手段に対する操作を表すデータを含んでいてもよい。なお、本実施形態のように端末装置７自体の動きをゲーム操作として用いる場合には、端末操作データ９１は、加速度データ９６、角速度データ９５、または方位データ９７のように、端末装置７自体の動きに応じて値が変化するデータを含むことが好ましい。
【０１５５】
また、本実施形態においては、端末操作データ９１の他、カメラ画像データおよび／またはマイク音データが端末装置７からゲーム装置３へ送信されてもよい。カメラ画像データは、端末装置７のカメラ５６によって撮像された画像（カメラ画像）を表すデータである。マイク音データは、端末装置７のマイク６９によって検出された音声（マイク音）を表すデータである。なお、これらカメラ画像データおよびマイク音データは、コーデックＬＳＩ６６によって圧縮されてゲーム装置３へ送信され、ゲーム装置３においてコーデックＬＳＩ２７によって伸張されてメインメモリに記憶されてもよい。
【０１５６】
また、本実施形態ではコントローラ５が操作装置として用いられないので図示しないが、メインメモリには、コントローラ５に対するプレイヤの操作を表すコントローラ操作データが記憶されてもよい。
【０１５７】
処理用データ９８は、後述するゲーム処理（図１６）において用いられるデータである。処理用データ９８は、端末姿勢データ９９、面姿勢データ１００、面座標データ１０１、空間座標データ１０２、図形データ１０３、および、端末カメラデータ１０５を含む。なお、図１５に示すデータの他、処理用データ９８は、ゲームに登場する各種オブジェクトに設定される各種パラメータを表すデータ等、ゲーム処理において用いられる各種データを含む。
【０１５８】
端末姿勢データ９９は、端末装置７の姿勢を表すデータである。端末装置７の姿勢は、例えば、所定の基準姿勢から現在の端末装置７の姿勢への回転を表す回転行列によって表現されてもよいし、３次のベクトルまたは３つの角度によって表現されてもよい。また、本実施形態においては、端末装置７の姿勢として３次元空間における姿勢が用いられるが、他の実施形態においては、２次元平面における姿勢が用いられてもよい。本実施形態では、端末姿勢データ９９は、上記端末操作データ９１に含まれる角速度データ９５および加速度データ９６に基づいて算出される。端末姿勢データ９９の算出方法についてはステップＳ１１で後述する。
【０１５９】
面姿勢データ１００は、仮想空間に設定される面８１の姿勢を表すデータである。面姿勢データ１００が表す面８１の姿勢は、回転行列によって表現されてもよいし、３次のベクトルまたは３つの角度によって表現されてもよいし、平面の式によって表現されてもよい。なお、本実施形態においては、面８１の位置は予め定められた位置に固定される。
【０１６０】
面座標データ１０１は、上記指定位置の面座標を表すデータである。ここで、面座標とは、面８１を基準とした座標系（面座標系）によって上記指定位置を表現する座標である。なお、指定位置は面８１上の点であるので、面座標データ１０１は２次元の座標値を表すものであってもよい。面８１上の指定位置は、タッチパネル５２上のタッチ位置に対応し、面座標データ１０１は、タッチ位置データ９４に基づいて算出される。
【０１６１】
空間座標データ１０２は、上記指定位置の空間座標を表すデータである。ここで、空間座標とは、仮想空間を基準とした座標系（空間座標系）によって上記指定位置を表現した座標である。空間座標データ１０２は、指定位置を３次元の座標値によって表す。空間座標データ１０２は、面姿勢データ１００と上記面座標データ１０１とに基づいて算出される。
【０１６２】
図形データ１０３は、指定位置によって形成される図形を表すデータである。図形データ１０３には、１以上の軌跡データ１０４が含まれる。軌跡データ１０４は、算出された指定位置の軌跡を表すデータである。具体的には、軌跡データ１０４は、タッチパネル５２に対して連続して入力が行われる場合（すなわち、タッチ位置が連続して検出される場合）、タッチ位置に対応する指定位置を古いものから順に表す。軌跡データ１０４は、指定位置を上記空間座標系で表現した座標値を表す。また、本実施形態においては、あるタッチ入力が終了してから新たに次のタッチ入力が行われる場合、当該あるタッチ入力に応じて生成された軌跡データ１０４とは別に、当該次のタッチ入力に応じて新たな軌跡データ１０４が生成されてメインメモリに記憶される。
【０１６３】
端末カメラデータ１０５は、端末用画像を生成するために用いられる仮想カメラ（端末用仮想カメラ）の位置および姿勢を表すデータである。本実施形態においては、端末用仮想カメラの位置および姿勢は、面８１の位置に基づいて設定される。
【０１６４】
上記各データ９９〜１０４の他、メインメモリには、ゲーム処理において必要となる各種のデータが記憶される。本実施形態においては、例えば、つかみ状態であるか否かを表すフラグデータが記憶される。つかみ状態とは、上記アイコン８２がタッチされている状態であり、上記指定位置の軌跡によって形成される図形を移動可能な状態である。
【０１６５】
次に、ゲーム装置３において実行されるゲーム処理の詳細を、図１６〜図２０を用いて説明する。図１６は、ゲーム装置３において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムがメインメモリに読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１６に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、ゲーム装置３においては、電源投入後にゲームプログラムがすぐに実行される構成であってもよいし、電源投入後にまず所定のメニュー画面を表示する内蔵プログラムが実行され、その後例えばプレイヤによるメニュー画面に対する選択操作によってゲームの開始が指示されたことに応じてゲームプログラムが実行される構成であってもよい。
【０１６６】
なお、図１６、図１７、図２０、および図２１に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判断ステップで利用される閾値も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、上記フローチャートの各ステップの処理をＣＰＵ１０が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、ＣＰＵ１０以外のプロセッサや専用回路が実行するようにしてもよい。
【０１６７】
まずステップＳ１において、ＣＰＵ１０は初期処理を実行する。初期処理は、仮想空間を構築し、仮想空間に登場する各オブジェクトを初期位置に配置したり、ゲーム処理で用いる各種パラメータの初期値を設定したりする処理である。なお、本実施形態においては、面８１が所定の位置および所定の姿勢で仮想空間内に配置される。面８１の初期位置および初期姿勢を表すデータはメインメモリに記憶される。また、テレビ用画像を生成するために用いられる仮想カメラ（テレビ用仮想カメラ）、および、端末用画像を生成するために用いられる仮想カメラ（端末用仮想カメラ）が、所定の初期位置および初期姿勢で設定される。テレビ用仮想カメラの初期位置および初期姿勢を表すデータはメインメモリに記憶され、端末用仮想カメラの初期位置および初期姿勢を表すデータは、端末用カメラデータ１０５としてメインメモリに記憶される。なお、テレビ用仮想カメラは、面８１が視野範囲に含まれるような、予め定められた位置および姿勢に設定される。端末用仮想カメラの初期位置および初期姿勢は、視線方向が面８１に垂直となり、かつ、面８１がＬＣＤ５１の表示画面と一致するように設定される。また、ステップＳ１では、つかみ状態でないことを表すデータが上記フラグデータとしてメインメモリに記憶される。ステップＳ１の次にステップＳ２の処理が実行される。以降、ステップＳ２〜Ｓ８の一連の処理からなる処理ループが所定時間（１フレーム時間。例えば１／６０秒）に１回の割合で繰り返し実行される。
【０１６８】
ステップＳ２において、ＣＰＵ１０は、端末装置７から送信されてくる端末操作データを取得する。端末装置７は、端末操作データをゲーム装置３へ繰り返し送信するので、ゲーム装置３は端末操作データを逐次受信する。ゲーム装置３においては、端末通信モジュール２８が端末操作データを逐次受信し、入出力プロセッサ１１ａが端末操作データをメインメモリに逐次記憶する。ステップＳ２においては、ＣＰＵ１０は、最新の端末操作データ９１をメインメモリから読み出す。ステップＳ２の次にステップＳ３の処理が実行される。
【０１６９】
ステップＳ３において、ＣＰＵ１０はゲーム制御処理を実行する。ゲーム制御処理は、プレイヤによる操作に従って、点や線を表すオブジェクトを仮想空間内に生成したり、当該オブジェクトを移動させる処理等を実行する処理である。以下、図１７を参照して、ゲーム制御処理の詳細について説明する。
【０１７０】
図１７は、図１６に示すゲーム制御処理（ステップＳ３）の詳細な流れを示すフローチャートである。ゲーム制御処理においてはまずステップＳ１１において、ＣＰＵ１０は端末装置７の姿勢を算出する。端末装置７の姿勢は、端末操作データが表す、姿勢を算出するための物理量に基づいて算出される。なお、本実施形態においては、姿勢を算出するための物理量として、角速度データ９５が表す角速度と、加速度データ９６が表す加速度が用いられる。以下、姿勢算出処理の詳細について説明する。
【０１７１】
姿勢算出処理においては、まず、ＣＰＵ１０は、角速度データ９５に基づいて端末装置７の姿勢を算出する。角速度に基づく姿勢を算出する方法はどのような方法であってもよいが、当該姿勢は、前回の姿勢（前回の処理ループにおけるステップＳ１１で算出された姿勢）と、今回の角速度（今回の処理ループにおけるステップＳ２で取得された角速度）とを用いて算出される。具体的には、ＣＰＵ１０は、前回の姿勢を今回の角速度で単位時間分だけ回転させることによって姿勢を算出する。なお、前回の姿勢は、メインメモリに記憶されている端末姿勢データ９９により表され、今回の角速度は、メインメモリに記憶されている角速度データ９５により表される。したがって、ＣＰＵ１０は、端末姿勢データ９９および角速度データ９５をメインメモリから読み出して、端末装置７の姿勢を算出する。以上のようにして算出された姿勢を表すデータはメインメモリに記憶される。
【０１７２】
なお、角速度から姿勢を算出する場合、初期姿勢を定めておくのがよい。つまり、端末装置７の姿勢を角速度から算出する場合には、ＣＰＵ１０は、最初に端末装置７の初期姿勢を設定しておく。端末装置７の初期姿勢は、加速度データ９６に基づいて算出されてもよいし、端末装置７を特定の姿勢にした状態でプレイヤに所定の操作を行わせることで、所定の操作が行われた時点における特定の姿勢を初期姿勢として設定するようにしてもよい。なお、空間における所定方向を基準とした絶対的な姿勢として端末装置７の姿勢を算出する場合には上記初期姿勢を算出することが良いが、例えばゲーム開始時点における端末装置７の姿勢を基準とした相対的な姿勢として端末装置７の姿勢を算出する場合には、上記初期姿勢は算出されなくても良い。
【０１７３】
角速度に基づいて姿勢を算出すると次に、ＣＰＵ１０は、算出された姿勢を、端末装置７の加速度に基づいて補正する。ここで、端末装置７がほぼ静止している状態では、端末装置７に対して加えられる加速度は重力加速度に相当する。つまり、この状態では、加速度データ９６が表す加速度ベクトルは、端末装置７における重力方向を表す。したがって、ＣＰＵ１０は、角速度に基づいて算出された姿勢の下方向（重力方向）を、加速度ベクトルの表す重力方向へ近づける補正を行う。すなわち、上記下方向が加速度ベクトルの表す重力方向へ所定の割合で近づくように、上記姿勢を回転させる。これによって、角速度に基づく姿勢を、加速度に基づく重力方向を考慮した姿勢となるように補正することができる。なお、上記所定の割合は、予め定められた固定値であってもよいし、検出される加速度等に応じて設定されてもよい。例えば、ＣＰＵ１０は、検出される加速度の大きさが重力加速度の大きさに近い場合には、上記姿勢の下方向を加速度ベクトルの表す重力方向へ近づける割合を大きくし、検出される加速度の大きさが重力加速度の大きさから離れている場合には、当該割合を小さくするようにしてもよい。
【０１７４】
具体的には、ＣＰＵ１０は、角速度に基づいて算出された姿勢を表すデータと、加速度データ９６とをメインメモリから読み出し、上記の補正を行う。そして、補正が行われた後の姿勢を表すデータを端末姿勢データ９９としてメインメモリに記憶する。以上のステップＳ１１の次にステップＳ１２の処理が実行される。
【０１７５】
また、本実施形態においては、ＣＰＵ１０は、慣性センサ（加速度センサ６３およびジャイロセンサ６４）の検出結果に基づいて端末装置７の姿勢を算出した。ここで、他の実施形態においては、端末装置７の姿勢の算出方法はどのような方法であってもよい。例えば、他の実施形態においては、端末装置７が他のセンサ部（例えば磁気センサ６２やカメラ５６）を有している場合には、当該他のセンサ部の検出結果を用いてコントローラ５の姿勢が算出されてもよい。すなわち、ＣＰＵ１０は、磁気センサ６２によって検出される方位データ９７から、端末装置７を基準とした所定の方位（すなわち、所定の方位を基準とした端末装置７の姿勢）を知ることができる。したがって、他の実施形態においては、ＣＰＵ１０は、角速度データ９５および加速度データ９６に加えて、上記方位データ９７をさらに用いて端末装置７の姿勢を算出してもよい。方位データ９７を用いて端末装置７の姿勢を算出する場合には、実空間における所定方向を基準とした絶対的な姿勢を算出することができるので、端末装置７の姿勢をより正確に算出することができる。なお、方位データ９７に関して、地磁気以外の磁界が発生している場所においては、方位データは厳密には絶対的な方位（北等）を示さないことになるが、その場所における磁界の方向に対する端末装置７の相対的な方向が示されるので、そのような場合であっても端末装置７の姿勢を算出することが可能である。また、他の実施形態においては、上記３つのデータのうち１つまたは２つに基づいて姿勢を算出するようにしてもよい。また、例えば、ゲームシステム１が端末装置７を撮像するカメラを備えている場合には、ゲーム装置３は当該カメラで端末装置７を撮像した撮像結果を取得し、撮像結果を用いて端末装置７の姿勢を算出するようにしてもよい。
【０１７６】
ステップＳ１２において、ＣＰＵ１０は、端末装置７の姿勢に応じて姿勢が変化するように面８１を設定する。本実施形態においては、面８１の位置は変化しないので、ＣＰＵ１０は、端末装置７の姿勢に基づいて面８１の姿勢を算出する。本実施形態では、仮想空間における面８１の姿勢は、現実空間における端末装置７の姿勢に対応するように制御される。具体的には、端末装置７のｙ軸（図９参照）が水平でかつテレビ２の方を向くときの端末装置７の姿勢を基準姿勢とし、端末装置７が当該基準姿勢となる場合に面８１は仮想空間において水平となる。そして、端末装置７の姿勢が上記基準姿勢から変化した場合、面８１は、当該基準姿勢時における面８１の姿勢から、端末装置７の姿勢の変化方向に応じた方向に、変化量に応じた量だけ（本実施形態では、端末装置７の回転量と面８１の回転量が等しくなるように）回転される。なお、面８１の姿勢は、端末装置７の姿勢の変化に応じて変化するように制御されればどのように制御されてもよい。
【０１７７】
ステップＳ１２の具体的な処理としては、ＣＰＵ１０は、端末姿勢データ９９をメインメモリから読み出し、端末装置７の姿勢に基づいて面８１の姿勢を算出する。算出された面８１の姿勢を表すデータは、面姿勢データ１００としてメインメモリに記憶される。なお、本実施形態においては、面８１の姿勢は、例えば、面８１を基準とした３次元の面座標系における３軸の方向を空間座標系によって表す３つのベクトルとして表現されてもよい。ステップＳ１２の次にステップＳ１３の処理が実行される。
【０１７８】
ステップＳ１３において、ＣＰＵ１０は、図形移動処理を実行する。図形移動処理は、プレイヤによる入力に応じて設定された指定位置によって形成される図形を、端末装置７の姿勢に応じて移動（回転）させる処理である。図形移動処理の詳細については後述する。ステップＳ１３の次にステップＳ１４の処理が実行される。
【０１７９】
ステップＳ１４において、ＣＰＵ１０は、タッチパネル５２に対してタッチ入力が行われたか否かを判定する。この判定は、ステップＳ２で読み出されるタッチ位置データ９４を参照することで行うことができる。ステップＳ１４の判定結果が肯定である場合、ステップＳ１５の処理が実行される。一方、ステップＳ１４の判定結果が否定である場合、ステップＳ１５〜Ｓ２０の処理がスキップされ、後述するステップＳ２１の処理が実行される。
【０１８０】
ステップＳ１５およびステップＳ１６においては、タッチ位置に基づいて上記指定位置が算出される。上述のように、本実施形態においては、タッチ位置によって決められる面８１上の位置が指定位置として算出される。図１８は、タッチパネル５２の入力面上のタッチ位置に基づいて指定位置を算出する方法を説明するための図である。図１８に示すように、面８１上の指定位置Ｐ２は、タッチパネル５２の入力面上におけるタッチ位置Ｐ１に対応する面８１上の位置として算出される。本実施形態では、まず、タッチ位置Ｐ１に基づいて指定位置Ｐ２の面座標（Ｐｓ，Ｐｔ）が算出される。面座標（Ｐｓ，Ｐｔ）は、面８１を基準とした面座標系（ｓｔｕ座標系）で表現される座標である。なお、ここでは、面座標系は、面８１の横方向を向くｓ軸と、面８１の縦方向を向くｔ軸と、面８１に垂直な方向を向くｕ軸とで構成される。したがって、面８１上の位置はｓ方向成分およびｔ方向成分の２次元座標（Ｐｓ，Ｐｔ）で表現される。なお、面座標系のｕ軸は、後述する図形移動処理において面８１上にない位置を面座標系で表す目的で設定される。面座標（Ｐｓ，Ｐｔ）は、例えば、タッチ位置Ｐ１の座標値を、面８１の大きさとタッチパネル５２の入力面の大きさとの比率に応じてスケーリングする（所定の定数を乗算する）ことによって算出される。なお、上記比率が“１”となるように面座標系および空間座標系を設定する場合には、タッチ位置Ｐ１の座標値をそのまま面座標（Ｐｓ，Ｐｔ）として用いることができる。
【０１８１】
指定位置Ｐ２の面座標（Ｐｓ，Ｐｔ）が算出されると、次に、面座標（Ｐｓ，Ｐｔ）が空間座標（ＰＳ，ＰＴ，ＰＵ）に変換される。空間座標（ＰＳ，ＰＴ，ＰＵ）は、指定位置Ｐ２を空間座標系（ＳＴＵ座標系）で表現した座標値である。なお、空間座標系における面座標系の原点の位置および各軸の向きは、面８１の位置および姿勢によって決まる。したがって、面８１の位置（下記（ＤＳ，ＤＴ，ＤＵ））および姿勢（下記ベクトルＡおよびベクトルＢ）と、面座標（Ｐｓ，Ｐｔ）とに基づいて、空間座標（ＰＳ，ＰＴ，ＰＵ）を算出することができる。具体的には、空間座標（ＰＳ，ＰＴ，ＰＵ）は、以下の式（１）に従って算出することができる。
ＰＳ＝Ｐｓ×ＡＳ＋Ｐｔ×ＡＳ＋ＤＳ
ＰＴ＝Ｐｓ×ＡＴ＋Ｐｔ×ＡＴ＋ＤＴ
ＰＵ＝Ｐｓ×ＡＵ＋Ｐｔ×ＡＵ＋ＤＵ  …（１）
上式（１）においては、面座標系におけるｓ軸の正方向を向く単位ベクトルＡの各成分を（ＡＳ，ＡＴ，ＡＵ）とし、面座標系におけるｔ軸の正方向を向く単位ベクトルＢの各成分を（ＢＳ，ＢＴ，ＢＵ）とする。また、面座標系における原点の（空間座標系における）位置を（ＤＳ，ＤＴ，ＤＵ）とする。
【０１８２】
具体的には、まずステップＳ１５において、ＣＰＵ１０は、タッチ位置に対応する指定位置の面座標を算出する。上述のように、面座標は、タッチパネル５２の入力面上におけるタッチ位置Ｐ１に対応する面８１上の位置Ｐ２として算出される。面座標の具体的な算出方法はどのような方法であってもよいが、面座標は、タッチパネル５２の入力面の四辺に対するタッチ位置Ｐ１の位置関係と、面８１の四辺に対する指定位置Ｐ２の位置関係とが同じになるように算出される。具体的に本実施形態では、上述のように、面座標は、タッチ位置Ｐ１の座標値を上記の比率に応じてスケーリングすることによって算出される。ステップＳ１５の具体的な処理としては、ＣＰＵ１０は、ステップＳ２で読み出されたタッチ位置データ９４が表すタッチ位置から、タッチ位置に対応する面８１上の位置を面座標系によって表現する２次元座標を算出する。そして、算出された２次元座標を表すデータを面座標データ１０１としてメインメモリに記憶する。ステップＳ１５の次にステップＳ１６の処理が実行される。
【０１８３】
ステップＳ１６において、ＣＰＵ１０は、上記面座標から指定位置の空間座標を算出する。上述のように、空間座標は、面座標と、面８１の位置および姿勢（すなわち、空間座標系における面座標系の原点位置および各座標軸の向き）とに基づいて算出することができる。すなわち、ＣＰＵ１０は、面姿勢データ１００と面座標データ１０１とをメインメモリから読み出し、面座標と面８１の位置および姿勢を上式（１）に代入することによって空間座標を算出する。算出された空間座標を表すデータは、空間座標データ１０２としてメインメモリに記憶される。ステップＳ１６の次にステップＳ１７の処理が実行される。
【０１８４】
上記ステップＳ１５およびＳ１６によれば、ＣＰＵ１０は、仮想空間内の指定位置として、タッチパネル５２（ＬＣＤ５１）の表示画面上においてタッチ位置に対応する（仮想空間内の）位置を算出する。つまり、表示画面上においては、プレイヤがタッチした位置が指定位置となるので、プレイヤは、直感的かつ分かりやすい操作で指定位置を指定することができる。
【０１８５】
ステップＳ１７において、ＣＰＵ１０は、タッチ入力が開始されたか否か（タッチ入力が開始された直後であるか否か）を判定する。具体的には、ＣＰＵ１０は、前回の処理ループ（ステップＳ２〜Ｓ８の一連の処理からなる処理ループ）においてタッチ入力があったか否かを判定する。なお、タッチパネル５２の誤検出やプレイヤの誤操作を考慮して、ＣＰＵ１０は、前回のタッチ入力だけでなく、過去所定回数に連続してタッチ入力があったかどうかを判定するようにしてもよい。ステップＳ１７の判定結果が肯定である場合、ステップＳ１８の処理が実行される。一方、ステップＳ１７の判定結果が否定である場合、ステップＳ１９の処理が実行される。
【０１８６】
ステップＳ１８において、ＣＰＵ１０は、ステップＳ１５およびＳ１６で算出された指定位置を、新たな軌跡の始点として記憶する。具体的には、ＣＰＵ１０は、メインメモリに記憶されている空間座標データ１０２を、新たな軌跡データ１０４としてメインメモリに記憶する。これによって、図形データ１０３に含まれる軌跡データ１０４が１つ追加されたことになる。つまり、図形を構成する軌跡が１つ追加されたことになる。ステップＳ１８の次にステップＳ２０の処理が実行される。
【０１８７】
ステップＳ１９において、ＣＰＵ１０は、ステップＳ１５およびＳ１６で算出された指定位置を、既存の軌跡の終点として記憶する。具体的には、ＣＰＵ１０は、図形データ１０３に含まれる軌跡データ１０４のうちで最新のものについて、空間座標データ１０２を当該軌跡データ１０４に追加するように更新する。これによって、上記指定位置が最新の軌跡の終点に追加されたことになる。ステップＳ１９の次にステップＳ２０の処理が実行される。
【０１８８】
ステップＳ２０において、ＣＰＵ１０は、ステップＳ１５およびＳ１６で算出された指定位置に所定のオブジェクトを配置する。ここで、所定のオブジェクトは、どのような形状であってもよいが、本実施形態では、指定位置の軌跡を表すオブジェクトが配置される。すなわち、ＣＰＵ１０は、１つの軌跡データ１０４に含まれる１以上の指定位置が１本の線を形成するように、オブジェクトを配置する。具体的には、１回のステップＳ２０の処理においては、最新の指定位置と１つ前の指定位置とを結ぶ線状のオブジェクトが配置される。この線状のオブジェクトは、例えば、どの方向から見ても線状に見えるように、円柱形のオブジェクトであってもよい。また、最新の指定位置が軌跡の始点である場合には、点を表すオブジェクト（例えば球状のオブジェクト）が配置される。なお、本実施形態においては、ステップＳ２０で配置されたオブジェクトは、以降の処理においても配置され続けるが、他の実施形態においては、例えばプレイヤの指示に従って消去されてもよい。また、上記ステップＳ２０で配置されたオブジェクトは、プレイヤによって所定の操作が行われたことに応じて、所定方向に順次（自動的に）移動されてもよい。これによれば、プレイヤは、例えば、仮想空間内の一点を指定するだけで直線を描いたり、オブジェクトの移動方向と垂直な方向にタッチ位置を往復させることによって波線を描いたりすることができ、より多彩な線を容易に描くことができる。ステップＳ２０の次にステップＳ２１の処理が実行される。
【０１８９】
ステップＳ２１において、ＣＰＵ１０は、面８１の姿勢に応じて端末用仮想カメラを制御する。図１９は、面８１と端末用仮想カメラ８５との位置関係を示す図である。なお、図１９は、面８１と平行な方向から面８１を見た図である。図１９に示すように、面８１の姿勢が変化した場合、面８１の姿勢に応じて端末用仮想カメラ８５の位置および姿勢が変化する。具体的には、端末用仮想カメラ８５は、面８１が視野範囲に含まれるように設定される。本実施形態においては、面８１の外周と端末用仮想カメラ８５の視野範囲の外縁とが一致するように端末用仮想カメラ８５が設定される。したがって、端末用仮想カメラ８５の位置は、面８１の中心位置Ｐ３を通りかつ面８１に垂直な直線上であって、面８１からの距離が視野範囲に応じた所定距離となる位置に設定される。また、端末用仮想カメラ８５の姿勢は、面８１の中心位置Ｐ３を向くように設定される。以上のように端末用仮想カメラ８５が設定されることによって、端末装置７のＬＣＤ５１には、タッチパネル５２の入力面と面８１とが画面上において一致するように面８１が表示されることになる（図１２等参照）。これによれば、指定位置は、プレイヤがタッチした画面上の位置となり、当該位置に点や線を表すオブジェクトが生成されて表示されるので、タッチパネル５２の操作を直感的でわかりやすい操作にすることができる。
【０１９０】
ステップＳ２１の具体的な処理としては、ＣＰＵ１０は、メインメモリから面姿勢データ１００を読み出し、面８１の位置および姿勢に基づいて端末用仮想カメラ８５の位置および姿勢を算出する。そして、算出された位置および姿勢を表すデータを端末カメラデータ１０５としてメインメモリに記憶する。ステップＳ２１の後、ＣＰＵ１０はゲーム制御処理を終了する。
【０１９１】
次に、上記図形移動処理の詳細について説明する。図２０は、図１７に示す図形移動処理（ステップＳ１３）の詳細な流れを示すフローチャートである。図形移動処理においてはまずステップＳ３１において、ＣＰＵ１０は、現在の状態がつかみ状態であるか否かを判定する。この判定は、メインメモリに記憶される上記フラグデータを読み出し、フラグデータを参照することによって行うことができる。ステップＳ３１の判定結果が肯定である（つかみ状態である）場合、後述するステップＳ３５の処理が実行される。一方、ステップＳ３１の判定結果が否定である（つかみ状態でない）場合、ステップＳ３２の処理が実行される。
【０１９２】
ステップＳ３２において、ＣＰＵ１０は、つかみ状態が開始されたか否かを判定する。ここで、つかみ状態が開始される場合とは、前回の処理ループ（ステップＳ２〜Ｓ８の処理ループ）においてアイコン８２に対するタッチ入力がなく、かつ、今回の処理ループにおいてアイコン８２に対するタッチ入力がある場合である。具体的には、ＣＰＵ１０は、上記フラグデータをメインメモリから読み出し、フラグデータがつかみ状態でないことを表し、かつ、ステップＳ２で読み出されたタッチ位置データ９４がアイコン８２の位置を表す場合、つかみ状態が開始されたと判定する。一方、上記フラグデータがつかみ状態であることを表すか、または、ステップＳ２で読み出されたタッチ位置データ９４がアイコン８２以外の位置を表す場合、つかみ状態が開始された時点ではないと判定する。ステップＳ３２の判定結果が肯定である場合、ステップＳ３３の処理が実行される。一方、ステップＳ３２の判定結果が否定である場合、ＣＰＵ１０は図形移動処理を終了する。
【０１９３】
ステップＳ３３において、ＣＰＵ１０は、指定位置で形成される図形を保存する。なお、本実施形態では、ＣＰＵ１０は、図形を構成する各指定位置を面座標系による座標値で保存する。すなわち、ＣＰＵ１０は、メインメモリから図形データ１０４と面姿勢データ１００とを読み出し、図形データ１０４が表す１以上の指定位置の空間座標を面座標に変換する。この変換は、面姿勢データ１００が表す面８１の姿勢を用いて行われる。ＣＰＵ１０は、変換された面座標を表すデータをメインメモリに記憶する。なお、このデータは、図形データ１０３に含まれる軌跡データ１０４と同様、各指定位置を軌跡毎にまとめた形式で記憶される。ステップＳ３３の次にステップＳ３４の処理が実行される。
【０１９４】
ステップＳ３４において、ＣＰＵ１０は、上記フラグデータをつかみ状態を表すように設定する。すなわち、ＣＰＵ１０は、メインメモリに記憶されるフラグデータを、つかみ状態であることを表すように更新する。これによって、これ以降、アイコン８２に対するタッチ入力がなくなるまで、ステップＳ３１の判定処理ではつかみ状態であると判定されることになる。ステップＳ３４の次に、後述するステップＳ３７の処理が実行される。
【０１９５】
一方、ステップＳ３５において、ＣＰＵ１０は、つかみ状態が終了したか否かを判定する。すなわち、ＣＰＵ１０は、ステップＳ２で読み出されたタッチ位置データ９４がアイコン８２以外の位置を表すか、または、タッチ入力がないことを表す場合、つかみ状態が終了したと判定する。一方、上記タッチ位置データ９４がアイコン８２の位置を表す場合、つかみ状態が終了していない（継続している）と判定する。ステップＳ３５の判定結果が肯定である場合、ステップＳ３６の処理が実行される。一方、ステップＳ３５の判定結果が否定である場合、ステップＳ３６の処理がスキップされてステップＳ３７の処理が実行される。
【０１９６】
ステップＳ３６において、ＣＰＵ１０は、上記フラグデータをつかみ状態を解除するように設定する。すなわち、ＣＰＵ１０は、メインメモリに記憶されるフラグデータを、つかみ状態でないことを表すように更新する。これによって、これ以降の処理においては、ステップＳ３１の判定処理ではつかみ状態でないと判定されることになる。ステップＳ３６の次にステップＳ３７の処理が実行される。
【０１９７】
ステップＳ３７において、ＣＰＵ１０は、指定位置で形成される図形を移動する。本実施形態では、図形は、操作装置７の姿勢の変化に応じて（すなわち、面８１の姿勢の変化に応じて）回転する。なお、ここでは、図形の回転中心は、面８１と同様、面８１の中心位置である。ここで、上述のように、現在（回転後）の指定位置の空間座標は、指定位置の面座標と、現在の面８１の姿勢とに基づいて算出することができる。したがって、ＣＰＵ１０は、ステップＳ３３で保存された面座標を表すデータと、面姿勢データ１００とをメインメモリから読み出し、当該面座標を、面８１の姿勢を用いて空間座標に変換する。これによって、面８１の姿勢に応じて回転された図形を形成する指定位置の空間座標を算出することができる。ＣＰＵ１０は、算出された１以上の空間座標を表すデータを、新たな図形データ１０３としてメインメモリに記憶する。ステップＳ３７の後、ＣＰＵ１０は図形移動処理を終了する。
【０１９８】
上記図形移動処理によれば、ＣＰＵ１０は、端末装置７に対する操作に基づいて上記図形を表すオブジェクトを移動（回転）させる（ステップＳ３７）。したがって、プレイヤは、描いた図形をいろいろな位置または方向から見ることができ、描いた図形の形状を容易に確認することができる。本実施形態では、図形が３次元的な形状であるので、図形をいろいろな位置または方向から見ることが特に有効である。
【０１９９】
また、本実施形態においては、ＣＰＵ１０は、端末装置７に対する操作に関して所定の条件（具体的には、アイコン８２を指定する操作が行われたこと）が満たされる場合（ステップＳ３１でＹｅｓまたはステップＳ３２でＹｅｓ）、上記図形のオブジェクトを端末装置７の姿勢に基づいて移動させる（ステップＳ３７）。一方、上記所定の条件が満たされない場合（ステップＳ３２でＮｏ）、ＣＰＵ１０は、端末装置７の姿勢に基づく上記オブジェクトの移動を行わない。上記によれば、プレイヤは、端末装置７の姿勢を変化させるという直感的で容易な操作によって図形の向きを変化させることができる。さらに、上記によれば、プレイヤは、面８１の姿勢を変化させる操作と同じ操作によって図形の向きを変化させることができるので、操作性をより向上することができる。
【０２００】
また、本実施形態においては、図形移動処理において図形を移動するために、ＣＰＵ１０は、図形を構成する各指定位置の面座標を記憶するようにした。すなわち、ステップＳ３３の処理においては指定位置の面座標が記憶され、図形を移動させるステップＳ３７の処理においては、当該面座標と、現在の面８１の姿勢とを用いて、移動後の指定位置の空間座標が算出された。ここで、他の実施形態においては、ＣＰＵ１０は、ステップＳ３３の処理において、図形を構成する各指定位置の空間座標を記憶するようにしてもよい。このとき、ステップＳ３７の処理においては、ＣＰＵ１０は、前回の処理ループにおける面８１の姿勢から今回の処理ループにおける面８１の姿勢までの変化に応じて、図形を回転させてもよい。具体的には、面８１の姿勢の変化方向と同じ方向に、面８１の姿勢の変化量と同じ量だけ図形を移動（回転）させるようにしてもよい。ここで、空間座標を記憶する方法では、ステップＳ３７の処理において面８１の変化と図形の変化との間に誤差が生じ、ステップＳ３７の処理が繰り返されることによって誤差が蓄積するおそれがある。そのため、面８１の回転に合わせて図形を正確に回転させることができないおそれがある。これに対して、本実施形態によれば、ステップＳ３３で面座標を保存することによって、保存した面座標と現在の面８１の姿勢とを用いて移動後の指定位置を算出することができる。これによれば、誤差が蓄積されることがないので、面８１の回転に合わせて図形を正確に回転させることができる。
【０２０１】
また、本実施形態における上記ステップＳ３７の処理においては、仮想空間に配置された図形の全体が移動された。ここで、他の実施形態においては、上記図形の一部のみが移動されてもよい。例えば、ＣＰＵ１０は、プレイヤによって指定された軌跡のみを上記ステップＳ３３で保存し、当該軌跡のみを上記ステップＳ３７で移動させるようにしてもよい。なお、軌跡はどのような方法で指定されてもよいが、例えば、画面上におけるタッチ位置に表示される軌跡が指定されてもよい。
【０２０２】
図１６の説明に戻り、ステップＳ３のゲーム制御処理の次にステップＳ４の処理が実行される。ステップＳ４においては、テレビ用画像が生成される。すなわち、ＣＰＵ１０およびＧＰＵ１１ｂは、ステップＳ３のゲーム制御処理の結果を表すデータ（ゲーム空間における面８１やオブジェクトのデータ等）をメインメモリから読み出し、また、ゲーム画像を生成するために必要なデータをＶＲＡＭ１１ｄから読み出し、テレビ用画像を生成する。本実施形態では、テレビ用仮想カメラは、面８１を視野範囲に含む位置に設定される。したがって、面８１の位置を含む仮想空間内の領域を表すテレビ用画像が生成される。生成されたテレビ用画像はＶＲＡＭ１１ｄに記憶される。上記ステップＳ４の次にステップＳ５の処理が実行される。
【０２０３】
また、本実施形態においては、指定位置に所定のオブジェクトが配置される（ステップＳ２０）ことによって、指定位置に対応するテレビ用画像上の位置に当該オブジェクトの画像が生成される。したがって、プレイヤは、タッチパネル５２の入力面に対して入力を行った位置を容易に確認することができ、入力面上に描いた図形を容易に確認することができる。また、プレイヤは、入力面に対して点や線を描くことで、仮想空間内に３次元の図形を描くことができる。さらに、本実施形態においては、上記オブジェクトは、入力面に連続して入力される各入力位置（タッチ位置）によって決められる各指定位置の軌跡を表すように生成される（ステップＳ２０）。したがって、当該軌跡を表す画像が生成されてテレビ２に表示される。これによって、プレイヤは、タッチパネル５２上で描いた線を容易に確認することができる。また、プレイヤが入力面に対して点で入力を行った場合と線で入力を行った場合とで、表示される画像が異なるので、ゲーム装置は、入力面に対する入力をより正確に反映した画像を表示することができる。
【０２０４】
なお、本実施形態においては、プレイヤが面８１の姿勢（端末装置７の姿勢）を確認しやすくするべく、面８１が表示される。さらに、プレイヤが面８１と図形との奥行き関係を把握しやすくするべく、面８１は半透明のオブジェクトとして生成される。ただし、他の実施形態においては、面８１は表示されなくてもよい（透明であるとして取り扱われてもよい）し、不透明のオブジェクトとして生成されてもよい。
【０２０５】
ステップＳ５においては、端末用画像が上記ゲーム制御処理に基づいて生成される。すなわち、ＣＰＵ１０およびＧＰＵ１１ｂは、ステップＳ３のゲーム制御処理の結果を表すデータをメインメモリから読み出し、また、ゲーム画像を生成するために必要なデータをＶＲＡＭ１１ｄから読み出し、端末用画像を生成する。本実施形態では、仮想空間において面８１が設定される領域を表す画像が端末用画像として生成される。具体的には、タッチパネル５２の入力面と面８１とがＬＣＤ５１の画面上で一致するように端末用画像が生成される。これによって、面８１の画像が端末装置７に表示される（図１２等参照）。生成された端末用画像はＶＲＡＭ１１ｄに記憶される。なお、テレビ用画像と同様に、端末用画像には、ステップＳ２０で配置されたオブジェクトの画像が含まれる。したがって、プレイヤは、端末装置７の画面を見ることによっても、入力面上に描いた図形を確認することができる。また、端末用画像においては、面８１は表示されなくてもよいし、半透明あるいは不透明のオブジェクトとして生成されてもよい。上記ステップＳ５の次にステップＳ６の処理が実行される。
【０２０６】
なお、本実施形態においては、テレビ用画像（および端末用画像）において、指定位置を表す画像を生成するために、仮想空間において指定位置にオブジェクトを配置することとした。ここで、指定位置を表す画像はどのような方法で生成されてもよい。例えば、他の実施形態においては、ゲーム装置３は、指定位置に対応するテレビ用画像（および端末用画像）上の位置を算出し、当該位置に所定の画像を配置することによって、指定位置を表す画像を生成してもよい。
【０２０７】
上記ステップＳ４およびＳ５の処理によれば、ＣＰＵ１０は、面８１の姿勢と独立して視線方向が設定されるテレビ用仮想カメラを用いてテレビ用画像を生成し、面８１との位置関係が一定となるように（より具体的には、面８１に対して視線方向が略垂直となるように）設定される端末用仮想カメラを用いて端末用画像を生成する。したがって、プレイヤが端末装置７の姿勢を変化させた場合、テレビ２に表示される画像においては視線方向が変化しない一方、端末装置７に表示される画像においては当該姿勢に応じて視線方向が変化することになる（図１１〜図１４等）。これによれば、端末装置７においては面８１の姿勢が一定として表示されるので、面８１上の位置を指定する操作が容易になる。また、テレビ２においては面８１の姿勢が変化して表示されるので、仮想空間内における面８１の姿勢を容易に把握することができる。すなわち、本実施形態によれば、プレイヤは、端末装置７を用いて面８１上の位置を指定する操作を容易に行うことができるとともに、テレビ２の画面を見ることによって面８１の姿勢を容易に確認することができるので、３次元の仮想空間内の位置を容易に指定することができる。
【０２０８】
ステップＳ６において、ＣＰＵ１０は、テレビ２へゲーム画像を出力する。具体的には、ＣＰＵ１０は、ＶＲＡＭ１１ｄに記憶されたテレビ用画像のデータをＡＶ−ＩＣ１５へ送る。これに応じて、ＡＶ−ＩＣ１５はテレビ用画像のデータを、ＡＶコネクタ１６を介してテレビ２へ出力する。これによって、テレビ用画像がテレビ２に表示される。また、ステップＳ６においては、ゲーム画像のデータと共にゲーム音声のデータがテレビ２へ出力され、テレビ２のスピーカ２ａからゲーム音声が出力されてもよい。ステップＳ６の次にステップＳ７の処理が実行される。
【０２０９】
ステップＳ７において、ＣＰＵ１０は、端末装置７へゲーム画像を出力（送信）する。具体的には、ＶＲＡＭ１１ｄに記憶された端末用画像の画像データは、ＣＰＵ１０によってコーデックＬＳＩ２７に送られ、コーデックＬＳＩ２７によって所定の圧縮処理が行われる。圧縮処理が施された画像のデータは、端末通信モジュール２８によってアンテナ２９を介して端末装置７へ送信される。端末装置７は、ゲーム装置３から送信されてくる画像のデータを無線モジュール７０によって受信し、受信された画像データに対してコーデックＬＳＩ６６によって所定の伸張処理が行われる。伸張処理が行われた画像データはＬＣＤ５１に出力される。これによって、端末用画像がＬＣＤ５１に表示される。また、ステップＳ７においては、ゲーム画像のデータと共にゲーム音声のデータが端末装置７へ送信され、端末装置７のスピーカ６７からゲーム音声が出力されてもよい。ステップＳ７の次にステップＳ８の処理が実行される。
【０２１０】
ステップＳ８において、ＣＰＵ１０は、ゲームを終了するか否かを判定する。ステップＳ８の判定は、例えば、ユーザがゲームを中止する指示を行ったか否か等によって行われる。ステップＳ８の判定結果が否定の場合、ステップＳ２の処理が再度実行される。一方、ステップＳ８の判定結果が肯定の場合、ＣＰＵ１０は図１６に示すゲーム処理を終了する。なお、ゲーム処理を終了する際には、ゲームデータをメモリカード等にセーブする等の処理が実行されてもよい。以降、ステップＳ２〜Ｓ８の一連の処理は、ステップＳ８でゲームを終了すると判定されるまで繰り返し実行される。
【０２１１】
以上のように、上記ゲーム処理によれば、端末装置７のタッチパネル５２に対する入力によって、仮想空間内の面８１上の位置を指定される（ステップＳ１６）とともに、端末装置７の姿勢に応じて面８１の姿勢が変化する（ステップＳ１２）。これによれば、プレイヤは、面８１の姿勢を変化させつつ、タッチパネル５２を用いて位置を指定することで、３次元の仮想空間における位置を指定することができる。このように、本実施形態によれば、タッチパネル５２という平面的な入力面を有する入力装置を用いて、３次元空間における位置を容易に入力することができる。これによれば、例えば上記実施形態のように、プレイヤは、タッチパネル５２に対して点や線の入力を行うとともに、端末装置７の姿勢を適宜変化させることで、仮想空間において３次元的な絵を描くことも可能となる。
【０２１２】
［７．変形例］
上記実施形態は本発明を実施する一例であり、他の実施形態においては例えば以下に説明する構成で本発明を実施することも可能である。
【０２１３】
（面の移動に関する変形例）
上記実施形態においては、端末装置７の姿勢に応じて面８１の姿勢が変化したが、他の実施形態においては、他の方法で面８１を移動させてもよい。以下、図２１〜図２４を参照して、面８１の移動方法に関する変形例について説明する。
【０２１４】
図２１は、上記実施形態の変形例におけるゲーム制御処理の流れを示すフローチャートである。なお、図２１においては、図１７に示す処理と同じ処理については同じステップ番号を付し、詳細な説明を省略する。
【０２１５】
本変形例においては、ステップＳ１１の次にステップＳ４１の処理が実行される。ステップＳ４１において、ＣＰＵ１０は、端末装置７の姿勢に応じて面８１の位置および姿勢を算出する。すなわち、ＣＰＵ１０は、端末装置７の姿勢に対応するように面８１の姿勢を制御するとともに、端末装置７の姿勢に応じて面８１の位置を制御する。ここで、面８１の姿勢は、上記実施形態と同様、端末装置７の姿勢に基づいて制御される。また、面８１の位置は、面８１外の位置を回転の中心として面８１が回転移動するように、面８１の姿勢に応じて制御される。
【０２１６】
図２２は、本変形例における面８１の移動を示す図である。図２２において、点Ｐｃは、面８１の回転の中心点であり、ゲーム空間に固定的に設定される。なお、図２２においては、点Ｐｃは、面８１に関して端末用仮想カメラ８５と同じ側に設定されている。端末装置７の姿勢が変化する場合、面８１は、図２２に示すように、姿勢の変化とともに、基準点Ｐｃを中心に回転するように位置が変化する。具体的には、面８１の位置は、基準点Ｐｃから面８１への垂線の長さが予め定められた所定値となるように（つまり、基準点Ｐｃからの距離が一定となるように）算出される。このように、本変形例では、点Ｐｃを中心とした球面上を回転移動するように面８１の位置および姿勢が変化する（図２２参照）。したがって、プレイヤは、端末装置７の姿勢を変化させつつタッチパネル５２に対して入力を行うことで、球の内側面に対して絵を描いているような感覚を得ることができる。
【０２１７】
ステップＳ４１の具体的な処理としては、ＣＰＵ１０は、まず、上記ステップＳ１２と同様の方法によって面８１の姿勢を算出する。次に、ＣＰＵ１０は、算出された姿勢と、上記基準点Ｐｃの位置とに基づいて、上記垂線の長さが予め定められた所定値となるように面８１の位置を算出する。例えば、基準点Ｐｃの座標を（ＥＳ，ＥＴ，ＥＵ）とし、基準点Ｐｃから面８１までの距離をｋとすると、面８１の位置Ｐｄ（ＤＳ，ＤＴ，ＤＵ）は次の式（２）に従って算出される。
ＤＳ＝−ｋ×ＣＳ＋ＥＳ
ＤＴ＝−ｋ×ＣＴ＋ＥＴ
ＤＵ＝−ｋ×ＣＵ＋ＥＵ  …（２）
上式（２）においては、変数面座標系におけるｕ軸の正方向を向く単位ベクトルＣ（図２２参照）の各成分を（ＣＳ，ＣＴ，ＣＵ）としている。算出された面８１の位置および姿勢を表すデータは、メインメモリに記憶される。ステップＳ４１の次にステップＳ４２の処理が実行される。
【０２１８】
なお、本変形例においては、上記基準点Ｐｃが面８１に関して端末用仮想カメラ８５と同じ側に設定されているものとしたが、基準点の位置はどこであってもよい。図２３および図２４は、他の実施形態における面８１の移動を示す図である。他の実施形態においては、図２３に示すように、基準点Ｐｃは、面８１に関して端末用仮想カメラ８５と反対側に設定されてもよい。これによれば、プレイヤは、端末装置７の姿勢を変化させつつタッチパネル５２に対して入力を行うことで、球の外側面に対して絵を描いているような感覚を得ることができる。なお、図２３に示す場合においては、基準点Ｐｃから面８１の位置Ｐｄまでの向きと、ベクトルＣの向きとが同じであるので、上式（２）における“−ｋ”を“ｋ”に変更することで、面８１の位置Ｐｄを算出することができる。また、ｋ＝０の場合には、上記実施形態のように、面８１は位置Ｐｄ（基準点Ｐｃ）を中心に回転する（図１９参照）。
【０２１９】
また、他の実施形態においては、図２４に示すように、所定の回転方向（図２４では、上下方向を軸とした回転方向）に関しては面８１が基準点Ｐｃを中心として回転移動を行い、他の方向に関しては面８１が平行移動を行うようにしてもよい。これによれば、プレイヤは、円柱の内側側面に対して絵を描いているような感覚を得ることができる。なお、図２４における面８１の平行移動は、端末装置７の姿勢の変化に応じて行われてもよいし、後述するステップＳ４２における方向入力操作に応じて行われてもよい。
【０２２０】
ステップＳ４２において、ＣＰＵ１０は、端末装置７に対する方向入力操作に基づいて面８１を移動させる。上記方向入力操作は、どのような方法で行われてもよいが、例えば、アナログスティック５３や十字ボタン５４Ａに対する入力操作であってもよい。具体的には、面８１は、上下左右前後の方向入力操作に応じて、面８１の上下左右前後の方向に移動するように制御される。すなわち、ＣＰＵ１０は、ステップＳ２で取得した端末操作データ９１に基づいて、方向入力操作によって指示された方向を判断する。そして、面８１の位置および姿勢を表すデータをメインメモリから読み出し、上記指示された方向に応じた方向へ面８１を移動させる。メインメモリに記憶される上記データは、移動後の面８１の位置を表すように更新される。ステップＳ４２の次にステップＳ４３の処理が実行される。
【０２２１】
上記ステップＳ４２の処理によれば、端末装置７に対する方向入力操作によって面８１を自由に平行移動させることができる。なお、他の実施形態においては、ステップＳ４２においてＣＰＵ１０は、面８１を（平行移動ではなく）回転移動させるようにしてもよい。例えば、ＣＰＵ１０は、図２２〜図２４に示したように、球面上あるいは円柱の側面上を面８１が移動するように面８１を制御してもよい。
【０２２２】
ステップＳ４３において、ＣＰＵ１０は、面８１の位置および姿勢に基づいてテレビ用仮想カメラを制御する。テレビ用仮想カメラは、面８１が視野範囲に含まれるように位置および姿勢が制御されればどのように制御されてもよい。例えば、テレビ用仮想カメラの位置は、視線方向が面８１の方を向き、面８１から所定距離となるように制御されてもよい。また、テレビ用仮想カメラの姿勢は変化しない、すなわち、テレビ用仮想カメラは平行移動するように制御されてもよい。これによれば、上記実施形態と同様、プレイヤは、仮想空間における面８１の姿勢をテレビ用画像で確認することができる。ステップＳ４３の具体的な処理としては、ＣＰＵ１０は、面８１の位置および姿勢を表すデータをメインメモリから読み出し、面８１の位置に応じてテレビ用仮想カメラの位置および姿勢を算出する。算出された位置および姿勢を表すテレビ用カメラデータはメインメモリに記憶される。このとき、ステップＳ４の処理においては、上記テレビ用カメラデータを用いてテレビ用画像が生成される。ステップＳ４３の次にステップＳ１３の処理が実行される。ステップＳ１３の処理以降については、上記実施形態と同様の処理が実行される。
【０２２３】
なお、他の実施形態においては、テレビ用仮想カメラは、端末装置７に対する方向入力操作に従って制御されてもよい。すなわち、ＣＰＵ１０は、方向入力操作に応じて、テレビ用仮想カメラを平行移動、回転移動、または回転させるようにしてもよい。これによれば、上述した図形移動処理によって図形を回転させる場合と同様、プレイヤはいろいろな向きから図形を見ることができ、図形の形状を容易に確認することができる。
【０２２４】
（指定位置を用いたゲーム処理に関する変形例）
上記実施形態においては、上記指定位置を入力として用いるゲームとして、３次元仮想空間に絵を描くことができるお絵かきゲームを例として説明した。すなわち、上記実施形態においては、上記指定位置を入力としたゲーム処理の例として、指定位置にオブジェクトを配置する処理（ステップＳ２０）を説明した。ここで、指定位置を入力として実行されるゲーム処理は、どのような処理であってもよく、例えば次のようなゲーム例が考えられる。
【０２２５】
図２５は、見本と同じになるように図形を描くゲームにおいて、テレビ２に表示されるゲーム画像を示す図である。図２５に示すように、テレビ２には、面８１および見本オブジェクト１１１が表示される。見本オブジェクト１１１は、プレイヤが描く図形の見本を表すオブジェクトであり、ゲームプログラムにおいて複数種類の見本オブジェクトが用意される。なお、端末装置７に表示される画像は上記実施形態と同様である。このゲームにおいては、プレイヤは、上記実施形態と同様に端末装置７を用いて、見本オブジェクト１１１と同じになるように、仮想空間内に線（指定位置の軌跡を表すオブジェクト１１２）を描く。このとき、ＣＰＵ１０は、見本オブジェクト１１１と、プレイヤによる入力に応じて生成されるオブジェクト１１２との類似度を算出したり、当該類似度に基づいて得点を算出したりするゲーム処理を実行してもよい。このように、ゲーム装置３は、入力された指定位置を表す軌跡を入力とするゲーム処理を実行してもよい。
【０２２６】
図２６は、３次元の仮想空間内に配置されたオブジェクト（コイン）１１５を端末装置に対する操作によって指定するゲームにおいて、テレビ２に表示されるゲーム画像を示す図である。図２６に示すように、テレビ２には、面８１およびコイン１１５が表示される。なお、端末装置７に表示される画像は上記実施形態と同様である。このゲームにおいては、プレイヤは、上記実施形態と同様の方法で仮想空間内における位置を指定する。そして、コイン１１５の位置を指定することでコイン１１５を取得することができる。例えば、プレイヤは、コイン１１５を正確に指定したり、制限時間内にコイン１１５を取得する数を競ったりしてゲームを行う。この場合、ＣＰＵ１０は、指定位置を入力として実行されるゲーム処理として、指定位置がコイン１１５の位置であるか否かを判定し、指定位置がコイン１１５の位置である場合、取得されたコイン１１５の枚数をカウントする処理を実行する。このように、ゲーム処理は、上記実施形態のような指定位置に画像を表示する処理に限らず、仮想空間内のオブジェクトを指定（選択）する処理であってもよい。
【０２２７】
図２７および図２８は、プレイヤが描いた図形に基づいてオブジェクトが生成されるゲームにおいて、テレビ２に表示されるゲーム画像を示す図である。このゲームにおいては、プレイヤはまず、上記実施形態と同様の操作によって、仮想空間内に図形を生成する。図２７においては、プレイヤの入力による図形を表すオブジェクト１１７が生成されて表示される。ここで、ＣＰＵ１０は、指定位置を入力として実行されるゲーム処理として、上記図形を形成する各指定位置に基づいて３次元のオブジェクトを生成する。例えば、ＣＰＵ１０は、各指定位置の軌跡に基づいて面を設定することで、３次元のオブジェクトを生成する。例えば、軌跡によって閉曲線が形成される場合、当該閉曲線を周とする面が設定されてもよい。図２８は、図２７に示すオブジェクト１１７に基づいて、３次元のオブジェクト１１８が生成される場合におけるゲーム画像を示す。このように、ゲームシステム１は、指定位置に基づいて３次元のオブジェクトを生成するゲーム処理を実行するものであってもよい。なお、このとき、生成されたオブジェクトがゲームにおいて用いられてもよい。例えば、生成されたオブジェクトをプレイヤキャラクタがアイテムとして使用することができたり、生成されたオブジェクトをプレイヤキャラクタとして使用することができたりしてもよい。
【０２２８】
上記の他、指定位置を入力として実行されるゲーム処理は、どのような処理であってもよい。例えば、他の実施形態においては、ＣＰＵ１０は、指定位置の軌跡に応じてプレイヤキャラクタを移動させるゲーム処理を実行してもよい。すなわち、ゲーム装置３において実行されるゲームは、プレイヤが指定位置の軌跡を入力すると、仮想空間内のプレイヤキャラクタが当該軌跡に沿って移動するようなゲームであってもよい。
【０２２９】
（入力システムを適用する他の例）
上記実施形態では、ユーザが仮想空間における３次元位置を入力するための入力システムの一例として、プレイヤが端末装置７を用いてゲーム操作を行うゲームシステム１を例に説明を行った。ここで、他の実施形態においては、入力システムはゲーム用途に限らず、ユーザの操作に応じて仮想空間における３次元位置を指定するための任意の情報処理システムに適用されてもよい。
【０２３０】
（仮想空間に設定される面に関する変形例）
上記実施形態では、３次元の仮想空間に設定される面８１は、平面であった。ここで、他の実施形態においては、３次元の仮想空間に設定される面は曲面であってもよい。例えば、面が球面上あるいは円柱の側面上を移動するように制御される場合（図２２〜図２４）においては、球面あるいは円柱側面に沿った曲面が設定されてもよい。また、上記実施形態では、面８１は、端末装置７の表示画面の形状と同じ形状であったが、面８１の形状と表示画面の形状とは異なっていてもよい。
【０２３１】
（ゲームシステムの構成に関する変形例）
上記実施形態においては、ゲームシステム１は、表示装置として、可搬型の端末装置７と、テレビ２とを含む構成であった。ここで、ゲームシステムは、少なくとも１つの表示装置に、面の位置を含む仮想空間内の領域を表す画像を表示することができればどのような構成であってもよい。例えば、他の実施形態においては、ゲームシステム１は、１つの表示装置（例えばテレビ２）に上記画像を表示し、端末装置７には画像を表示しない構成であってもよい。また、ゲームシステム１は、端末装置７とは異なる２つの表示装置を含む構成であってもよい。このとき、上記実施形態におけるテレビ用画像が一方の表示装置に表示され、端末用画像が他方の表示装置に表示される。
【０２３２】
また、ゲームシステム１は、端末装置７とは別の操作装置として、コントローラ５を含む構成であったが、他の実施形態においては、コントローラ５を含まない構成であってもよい。また、他の実施形態においては、端末装置７に加えてコントローラ５が操作装置としてさらに用いられてもよい。例えば、プレイヤが端末装置７を用いてタッチパネル５２に対して線を描くことによって仮想空間内に図形を描いた場合、ゲーム装置３は、描かれた図形をコントローラ５に対する操作に従って移動させたり変形させたりするようにしてもよい。
【０２３３】
また、ユーザが仮想空間における３次元位置を入力するための入力システムは、複数の装置で実現されるものに限らず、１つの装置によって実現されてもよい。例えば、２つの表示画面を備え、少なくとも一方の表示画面にタッチパネルが設けられる携帯型の情報処理装置（ゲーム装置であってもよい）によって入力システムが実現されてもよい。このとき、情報処理装置は、タッチパネルが設けられる表示画面に上記実施形態における端末用画像を表示し、もう一方の表示画面に上記実施形態におけるテレビ用画像を表示する。また、情報処理装置は、自身の姿勢を算出するための物理量を検出するセンサ（例えば、ジャイロセンサや加速度センサ）を備えていてもよい。
【０２３４】
（入力面における入力位置の検出方法に関する変形例）
上記実施形態においては、端末装置７は、所定の入力面に対する入力位置を検出する位置検出部の一例として、ＬＣＤ５１の表画面に設けられるタッチパネル５２を備える構成であった。ここで、他の実施形態においては、位置検出部は、例えばタッチパッドであってもよい。つまり、端末装置７は、表示部（ＬＣＤ５１）およびタッチパネル５２を備えず、タッチパッドを備える構成であってもよい。また、端末装置７は、ＬＣＤ５１にカーソルを表示し、所定の方向入力操作（例えば、アナログスティック５３や十字ボタン５４に対する操作）に従って当該カーソルを移動させ、当該カーソルの位置を入力位置として用いてもよい。
【０２３５】
（ゲーム処理を実行する情報処理装置に関する変形例）
上記実施形態においては、ゲームシステム１において実行される一連のゲーム処理をゲーム装置３が実行したが、ゲーム処理の一部は他の装置によって実行されてもよい。例えば、他の実施形態においては、ゲーム処理の一部（例えば、端末用画像の生成処理）を端末装置７が実行するようにしてもよい。また、他の実施形態では、互いに通信可能な複数の情報処理装置を有する入力システムにおいて、当該複数の情報処理装置がゲーム処理を分担して実行するようにしてもよい。なお、複数の情報処理装置においてゲーム処理が実行される場合には、各情報処理装置で実行されるゲーム処理を同期させる必要があり、ゲーム処理が複雑になってしまう。これに対して、上記実施形態のように、ゲーム処理が１つのゲーム装置３によって実行され、端末装置７がゲーム画像を受信して表示する処理を行う場合（つまり、端末装置７がシンクライアント端末である場合）には、複数の情報処理装置間でゲーム処理の同期をとる必要がなく、ゲーム処理を簡易化することができる。
【０２３６】
上記のように、本明細書で説明した種々のシステム、方法、および技術は、デジタル電子回路、コンピュータハードウェア、ファームウェア、ソフトウェア、またはこれら要素の組み合わせによって提供されてもよい。上記の技術を実現するための装置は、プログラム可能なプロセッサによる実行のためのコンピュータ読み取り可能な非一時的な記憶装置において実体的に具体化されるコンピュータプログラムプロダクト、入出力装置、およびコンピュータプロセッサを含んでもよい。上記技術を実現するための処理は、入力データを処理して所望の出力を生成することによって、要求される機能を実行するためのプログラムを実行する、プログラム可能なプロセッサによって実行されてもよい。上記の技術は、入力装置、出力装置、および情報記憶装置といったハードウェア資源との間でデータや指示のやり取りを行うプログラム可能なプロセッサを含むコンピュータシステム上で実行可能な１以上のコンピュータプログラムによって実現されてもよい。また、各コンピュータプログラムは、手続型やオブジェクト指向型の高水準プログラミング言語、アセンブリ言語、または、機械語によって実現されてもよく、必要に応じてコンパイルまたはインタプリタされて実行されてもよい。また、上記のプロセッサは、汎用または専用のマイクロプロセッサであってもよい。プロセッサは、一般的に、ＲＯＭまたはＲＡＭからデータおよび指示を受け取る。また、上記の記憶装置は、（ａ）ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリのような半導体メモリ装置を含む不揮発性のメモリ、（ｂ）内部ハードディスクあるいは着脱可能な外部ディスクのような磁気ディスク、（ｃ）光磁気ディスク、（ｄ）ＣＤＲＯＭ、に限定されず、あらゆる種類のコンピュータメモリを含む。上記のプロセッサや記憶装置は、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）によって補充される、あるいは、ＡＳＩＣに組み込まれる形で実現されてもよい。
【０２３７】
また、本明細書に記載の処理システム（回路）は、本明細書において記載された内容に応じたゲーム処理のような制御処理のためにプログラムされる。上記の内容に応じた指示を実行する少なくとも１つのＣＰＵを含む処理システムが、上記の内容によって定義される処理動作を実行するための「プログラムされた論理回路」として作用するものであってもよい。
【産業上の利用可能性】
【０２３８】
以上のように、本発明は、タッチパネルやタッチパッド等の平面的な入力面に対する入力に基づいて、３次元空間における位置を容易に指定すること等を目的として、例えばゲームシステムやゲーム装置やゲームプログラム等として利用することができる。
【符号の説明】
【０２３９】
１  ゲームシステム
２  テレビ
３  ゲーム装置
４  光ディスク
５  コントローラ
６  マーカ装置
７  端末装置
１０  ＣＰＵ
１１ｅ  内部メインメモリ
１２  外部メインメモリ
５１  ＬＣＤ
５２  タッチパネル
６３  加速度センサ
６４  ジャイロセンサ
７０  無線モジュール
８１  面
８５  端末用仮想カメラ
９０  ゲームプログラム
【図１】
0005689014.tif 000002
【図２】
0005689014.tif 000003
【図３】
0005689014.tif 000004
【図４】
0005689014.tif 000005
【図５】
0005689014.tif 000006
【図６】
0005689014.tif 000007
【図７】
0005689014.tif 000008
【図８】
0005689014.tif 000009
【図９】
0005689014.tif 000010
【図１０】
0005689014.tif 000011
【図１１】
0005689014.tif 000012
【図１２】
0005689014.tif 000013
【図１３】
0005689014.tif 000014
【図１４】
0005689014.tif 000015
【図１５】
0005689014.tif 000016
【図１６】
0005689014.tif 000017
【図１７】
0005689014.tif 000018
【図１８】
0005689014.tif 000019
【図１９】
0005689014.tif 000020
【図２０】
0005689014.tif 000021
【図２１】
0005689014.tif 000022
【図２２】
0005689014.tif 000023
【図２３】
0005689014.tif 000024
【図２４】
0005689014.tif 000025
【図２５】
0005689014.tif 000026
【図２６】
0005689014.tif 000027
【図２７】
0005689014.tif 000028
【図２８】
0005689014.tif 000029