入力システム、情報処理装置、情報処理プログラム、および3次元位置算出方法
【課題】タッチパネルやタッチパッド等の平面的な入力面に対する入力に基づいて、3次元空間における位置を容易に指定する。
【解決手段】操作装置は、所定の入力面に対する入力位置と、慣性センサ部の検出結果とを表すデータを情報処理装置へ送信する。情報処理装置は、慣性センサ部の検出結果に基づいて操作装置の姿勢を算出し、操作装置の姿勢に応じて姿勢が変化するように仮想空間内に所定の面を設定する。面の位置を含む仮想空間内の領域を表す第1画像は、所定の表示装置に表示される。また、情報処理装置は、仮想空間内の位置として、上記入力位置によって決められる面上の位置を算出する。
【解決手段】操作装置は、所定の入力面に対する入力位置と、慣性センサ部の検出結果とを表すデータを情報処理装置へ送信する。情報処理装置は、慣性センサ部の検出結果に基づいて操作装置の姿勢を算出し、操作装置の姿勢に応じて姿勢が変化するように仮想空間内に所定の面を設定する。面の位置を含む仮想空間内の領域を表す第1画像は、所定の表示装置に表示される。また、情報処理装置は、仮想空間内の位置として、上記入力位置によって決められる面上の位置を算出する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、操作装置等に対する操作に基づいて3次元の位置を算出する入力システム、情報処理装置、情報処理プログラム、および3次元位置算出方法に関する。
【背景技術】
【0002】
従来、タッチパネルやタッチパッド等の入力装置を用いて画面上の任意の位置に対して入力を行う技術がある。例えば、特許文献1には、タッチパネルを備えるゲーム装置において、タッチパネルに対する入力によって描かれた軌跡に基づいて、ゲーム空間内のキャラクタの移動を制御する技術が記載されている。これによれば、プレイヤは、2次元平面におけるゲーム空間内の位置を自由に指定してゲーム操作を行うことができる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第3770499号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来の技術においては、タッチパネル等の入力装置を用いることによって2次元平面における位置を指定することは可能であったが、3次元空間における位置を指定することは難しかった。例えば上記特許文献1に記載の技術では、ゲーム空間が2次元平面である場合にはゲーム空間内の任意の位置を指定することが可能であるが、3次元のゲーム空間の場合にはゲーム空間内の位置を適切に指定することができない。
【0005】
それ故、本発明の目的は、タッチパネルやタッチパッド等の平面的な入力面に対する入力に基づいて、3次元空間における位置を容易に指定することができる入力システム等を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の(1)〜(15)の構成を採用した。
【0007】
(1)
本発明の一例は、操作装置と情報処理装置とを含み、当該操作装置に対する操作に基づいて3次元の仮想空間における位置を算出する入力システムである。
操作装置は、位置検出部と、慣性センサ部と、操作データ送信部とを備える。位置検出部は、所定の入力面に対する入力位置を検出する。操作データ送信部は、位置検出部および慣性センサ部の検出結果を表すデータを含む操作データを情報処理装置へ送信する。
情報処理装置は、姿勢算出部と、面設定部と、第1画像生成部と、第1画像出力部と、位置算出部とを備える。姿勢算出部は、慣性センサ部の検出結果に基づいて操作装置の姿勢を算出する。面設定部は、操作装置の姿勢に応じて姿勢が変化するように仮想空間内に所定の面を設定する。第1画像生成部は、面の位置を含む仮想空間内の領域を表す第1画像を生成する。第1画像出力部は、第1画像を所定の表示装置へ出力する。位置算出部は、仮想空間内の位置として、入力位置によって決められる面上の位置を算出する。
【0008】
上記「操作装置」は、後述する実施形態における端末装置7の他、位置検出部と慣性センサ部とを備え、操作データを情報処理装置へ送信する機能を有していればどのような装置であってもよい。
上記「情報処理装置」は、上記の各部における処理を実行する装置であればどのようなものであってもよい。上記情報処理装置は、ゲーム専用の情報処理装置であってもよいし、一般的なパーソナルコンピュータのような多用途の情報処理装置であってもよい。
上記「入力システム」は、操作装置および情報処理装置を含んでいればよく、第1画像を表示する上記「所定の表示装置」を含んでいなくともよいし、含んでいてもよい。すなわち、入力システムは、当該所定の表示装置を含まない形態で提供されてもよいし、含む形態で提供されてもよい。
上記「位置検出部」は、後述する実施形態におけるタッチパネルの他、タッチパッドであってもよい。つまり、操作装置は表示画面を備えていなくてもよい。
上記「慣性センサ部」は、加速度センサあるいはジャイロセンサ等、任意の慣性センサを含むものであればよい。
上記「所定の面」は、平面であってもよいし、曲面であってもよい。また、「所定の面」は、所定の表示装置に表示されなくてもよい。つまり、上記「第1画像」は、面の位置を含む仮想空間内の領域を表す画像であればよく、所定の面の画像を含まなくてもよい。
【0009】
上記(1)の構成によれば、ユーザは、操作装置の入力面に対する入力によって、仮想空間内の面上の位置を指定することができる。また、この面の姿勢は操作装置の姿勢に応じて変化するので、ユーザは、操作装置の姿勢を変化させつつ、入力面上の位置を指定することで、3次元の仮想空間における位置を指定することができる。このように、上記(1)の構成によれば、タッチパネルやタッチパッド等の平面的な入力面に対する入力に基づいて、3次元空間における位置を容易に指定することができる。
【0010】
(2)
第1画像生成部は、位置算出部によって算出された位置に対応する第1画像上の位置に所定の画像を生成してもよい。
【0011】
上記(2)の構成によれば、ユーザは、入力面に対する入力に応じて算出される仮想空間内の位置を容易に確認することができる。また、入力面に対して点や線を描くことで、仮想空間内に3次元の図形を描くことができる。
【0012】
(3)
第1画像生成部は、入力面に連続して入力される各入力位置によって仮想空間内において決められる各位置の軌跡を表す画像を所定の画像として生成してもよい。
【0013】
上記「入力面に連続して入力される各入力位置」とは、ユーザが入力面に接触し続ける間に繰り返し検出された入力位置であり、例えば、入力面上に線(軌跡)を描く操作を行った場合における当該線上の複数の入力位置である。
【0014】
上記(3)の構成によれば、ユーザが入力面上で線を描いた場合には、仮想空間内において線(軌跡)の画像が表示される。これによれば、入力面に対して点で入力を行った場合と線で入力を行った場合とで、表示される画像が区別されるので、入力面に対する入力をより正確に反映した画像を表示することができる。また、ユーザは、入力面に対して線を描くことで、線によって構成される3次元の図形を仮想空間内において容易に生成することができる。
【0015】
(4)
情報処理装置は、位置算出部によって算出された位置に、所定のオブジェクトを配置するオブジェクト設定部をさらに備えていてもよい。
【0016】
上記(4)の構成によれば、仮想空間内にオブジェクトを配置することで、入力面に対する入力に応じて算出される仮想空間内の位置を表す画像を容易に生成することができる。
【0017】
(5)
オブジェクト設定部は、操作装置に対する操作に基づいて所定のオブジェクトを移動させてもよい。
【0018】
上記「移動」とは、平行移動、回転移動(回転しながら位置が変化する)、および回転(位置が変化せずに姿勢が変化する)を含む概念である。
【0019】
上記(5)の構成によれば、プレイヤは、入力面に対する入力によって生成されたオブジェクトを移動させることによって、所定の表示装置に表示される当該オブジェクトをいろいろな位置あるいは向きから見ることができ、当該オブジェクトの形状を容易に確認することができる。
【0020】
(6)
オブジェクト設定部は、操作装置に対する操作に関して所定の条件が満たされる場合、所定のオブジェクトを操作装置の姿勢に基づいて移動させ、当該所定の条件が満たされない場合、操作装置の姿勢に基づく所定のオブジェクトの移動を行わないようにしてもよい。
【0021】
上記「所定の条件」とは、操作装置に対する操作に関する条件であればどのようなものであってもよい。例えば、操作装置に対して所定の操作が行われた場合に条件が満たされたと判断されてもよいし、操作装置に対してある操作が行われてから次の操作が行われるまでの間である場合に条件が満たされたと判断されてもよい。
【0022】
上記(6)の構成によれば、ユーザは、操作装置の姿勢を変化させるという直感的で容易な操作によってオブジェクトを移動させることができる。さらに、上記(6)の構成と下記(10)〜(12)のいずれかの構成とを組み合わせる場合には、面を移動させる操作と同じ操作によってオブジェクトを移動させることができるので、操作性をより向上することができる。
【0023】
(7)
操作装置は、表示部をさらに備えていてもよい。このとき、位置検出部は、表示部の表示画面上に設けられるタッチパネルである。また、情報処理装置は、第2画像生成部と、第2画像送信部とをさらに備えていてもよい。第2画像生成部は、面の位置を含む仮想空間内の領域を表す第2画像を生成する。第2画像送信部は、第2画像を操作装置へ送信する。位置算出部は、仮想空間内の位置として、表示画面上において入力位置に対応する位置を算出する。
【0024】
上記(7)の構成によれば、操作装置の表示画面にはタッチパネルが設けられ、仮想空間内において面が設定される領域を表す画像が操作装置の表示画面に表示される。そして、位置算出部によって算出される位置は、表示画面上において実際にユーザが指定した位置となるので、ユーザは、直感的かつ分かりやすい操作で仮想空間内の位置を指定することができる。
【0025】
(8)
第2画像生成部は、仮想空間において面が設定される領域を表す画像を第2画像として生成してもよい。
【0026】
上記(8)の構成によれば、仮想空間における面の位置の画像が操作装置に表示されるので、ユーザにとっては、入力面に対する入力によって面上の位置を指定する操作がより行いやすくなる。
【0027】
(9)
第1画像生成部は、面の姿勢と独立して視線方向が設定される第1仮想カメラを用いて第1画像を生成してもよい。このとき、第2画像生成部は、面に対して視線方向が略垂直となるように設定される第2仮想カメラを用いて第2画像を生成する。
【0028】
上記「第1仮想カメラ」は、面の姿勢と独立して視線方向が設定されればよく、面の姿勢以外の他の条件に応じて(例えば、ユーザの操作に応じて)視線方向が変化するものであってもよい。
【0029】
上記(9)の構成によれば、プレイヤが操作装置の姿勢を変化させることで面の姿勢を変化させた場合、所定の表示装置に表示される画像においては視線方向が変化しない一方、操作装置に表示される画像においては操作装置の姿勢に応じて視線方向が変化する。これによれば、操作装置においては面の姿勢が一定として表示されるので、面上の位置を指定する操作が容易になる。また、所定の表示装置においては面の姿勢が変化して表示されるので、仮想空間内における面の姿勢を容易に把握することができる。以上より、上記(9)の構成によれば、ユーザは、操作装置を用いて面上の位置を指定する操作を容易に行うことができるとともに、所定の表示装置の画面を見ることによって面の姿勢を容易に確認することができるので、3次元の仮想空間内の位置を指定する操作がより容易になる。
【0030】
(10)
面設定部は、操作装置の姿勢に対応するように面の姿勢を制御してもよい。
【0031】
上記(10)の構成によれば、ユーザは、操作装置の姿勢を変化させる操作によって、直感的かつ容易に面の姿勢を調整することができる。
【0032】
(11)
面設定部は、操作装置の姿勢に対応するように面の姿勢を制御すると共に、操作装置の姿勢に応じて面の位置を制御してもよい。
【0033】
上記(11)の構成によれば、ユーザは、操作装置の姿勢を変化させる操作によって、直感的かつ容易に面の姿勢を調整することができるとともに、さらに面の位置を調整することができる。
【0034】
(12)
面設定部は、仮想空間内の所定位置を中心として操作装置の姿勢に応じて回転移動するように面を制御してもよい。
【0035】
上記(12)の構成によれば、面は、所定位置を中心とする球面上を移動する。したがって、ユーザは、操作装置の姿勢を変化させつつ入力面に対する入力を行うことで、球面に対して位置を指定するような感覚を得ることができる。
【0036】
(13)
面設定部は、操作装置に対する方向入力操作に基づいて面を移動させてもよい。
【0037】
上記(13)の構成によれば、ユーザは、操作装置の姿勢を変化させる操作とは別の方向入力操作によっても面を移動させることができるので、面を移動させる操作をより自由に行うことができる。
【0038】
(14)
情報処理装置は、位置算出部によって算出された位置を入力として所定のゲーム処理を実行するゲーム処理部をさらに備えていてもよい。
【0039】
上記(14)の構成によれば、ユーザは、操作装置の姿勢を変化させつつ、入力面上の位置を指定するという新規なゲーム操作でゲームを行うことができる。また、このゲーム操作によって、3次元のゲーム空間における位置を容易に指定することができる。
【0040】
(15)
また、本発明の他の一例は、操作部に対する操作に基づいて3次元の仮想空間における位置を算出する情報処理システムである。情報処理システムは、位置検出部と、センサ部と、操作データ取得部と、姿勢算出部と、面設定部と、第1画像生成部と、第1画像出力部と、位置算出部とを備える。位置検出部は、操作部に設けられる所定の入力面に対する入力位置を検出する。センサ部は、操作部の姿勢を算出するための物理量を検出する。操作データ取得部は、位置検出部およびセンサ部の検出結果を表すデータを含む操作データを取得する。姿勢算出部は、物理量に基づいて操作装置の姿勢を算出する。面設定部は、姿勢に基づいて仮想空間内に所定の面を設定する。第1画像生成部は、面の位置を含む仮想空間内の領域を表す第1画像を生成する。第1画像出力部は、第1画像を所定の表示装置へ出力する。位置算出部は、仮想空間内の位置として、入力位置によって決められる面上の位置を算出する。
【0041】
上記「操作部」は、後述する実施形態における端末装置7の他、所定の入力面が設けられる装置であればどのような装置であってもよい。
上記「姿勢を算出するための物理量」とは、それに基づいて操作部の姿勢を算出(推測)することができればどのようなものであってもよい。したがって、このような物理量を検出するためのセンサ部は、後述する実施形態におけるジャイロや加速度センサといった慣性センサの他、磁気センサであってもよいし、カメラであってもよい。なお、センサ部が磁気センサである場合には、磁気センサによって検出される方位の情報が上記物理量に相当する。また、センサ部がカメラである場合には、撮像された画像に関する数値(例えば各画素値)、あるいは、当該画像から得られる数値(例えば、撮像された画像内における所定の撮像対象の位置座標)が上記物理量に相当する。
【0042】
上記(15)の構成によれば、ユーザは、操作部の入力面に対する入力によって、仮想空間内の面上の位置を指定することができる。また、この面の姿勢は操作装置の姿勢に応じて変化するので、ユーザは、操作部の姿勢を変化させつつ、入力面上の位置を指定することで、3次元の仮想空間における位置を指定することができる。このように、上記(15)の構成によれば、上記(1)の構成と同様、タッチパネルやタッチパッド等の平面的な入力面に対する入力に基づいて、3次元空間における位置を容易に指定することができる。
【0043】
なお、本発明の別の一例は、上記入力システムに含まれる上記情報処理装置であってもよいし、上記情報処理装置における各部(画像出力部が含まれなくてもよい)と同等の手段としてコンピュータを機能させる情報処理プログラムであってもよい。さらに、本発明の別の一例は、上記の情報処理システムまたは情報処理装置において行われる3次元位置算出方法の形態であってもよい。
【発明の効果】
【0044】
本発明によれば、操作装置の入力面に対する入力に基づいて仮想空間内の面上の位置を算出するとともに、当該面の姿勢を操作装置の姿勢に応じて制御することによって、タッチパネルやタッチパッド等の平面的な入力面に対する入力によって行われる3次元位置の指定操作をユーザに容易に行わせることができる。
【図面の簡単な説明】
【0045】
【図1】ゲームシステム1の外観図
【図2】ゲーム装置3の内部構成を示すブロック図
【図3】コントローラ5の上側後方から見た斜視図
【図4】コントローラ5を下側前方から見た斜視図
【図5】コントローラ5の内部構造を示す図
【図6】コントローラ5の内部構造を示す図
【図7】コントローラ5の構成を示すブロック図
【図8】端末装置7の外観構成を示す図
【図9】ユーザが端末装置7を把持した様子を示す図
【図10】端末装置7の内部構成を示すブロック図
【図11】本実施形態においてゲーム操作が行われる場合におけるテレビ2および端末装置7を示す図
【図12】図11に示す状態から端末装置7を傾けた場合におけるテレビ2および端末装置7を示す図
【図13】図12に示す状態から端末装置7を傾けた場合におけるテレビ2および端末装置7を示す図
【図14】図12に示す状態から図形を回転させた場合におけるテレビ2および端末装置7を示す図
【図15】ゲーム処理において用いられる各種データを示す図
【図16】ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャート
【図17】図16に示すゲーム制御処理(ステップS3)の詳細な流れを示すフローチャート
【図18】タッチパネル52の入力面上のタッチ位置に基づいて指定位置を算出する方法を説明するための図
【図19】面81と端末用仮想カメラ85との位置関係を示す図
【図20】図17に示す図形移動処理(ステップS13)の詳細な流れを示すフローチャート
【図21】上記実施形態の変形例におけるゲーム制御処理の流れを示すフローチャート
【図22】本変形例における面81の移動を示す図
【図23】他の実施形態における面81の移動を示す図
【図24】他の実施形態における面81の移動を示す図
【図25】見本と同じになるように図形を描くゲームにおいて、テレビ2に表示されるゲーム画像を示す図
【図26】3次元の仮想空間内に配置されたオブジェクト115を端末装置7に対する操作によって指定するゲームにおいて、テレビ2に表示されるゲーム画像を示す図
【図27】プレイヤが描いた図形に基づいてオブジェクトが生成されるゲームにおいて、テレビ2に表示されるゲーム画像を示す図
【図28】プレイヤが描いた図形に基づいてオブジェクトが生成されるゲームにおいて、テレビ2に表示されるゲーム画像を示す図
【発明を実施するための形態】
【0046】
[1.ゲームシステムの全体構成]
以下、図面を参照して、本発明の一実施形態に係るゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。図1において、ゲームシステム1は、テレビジョン受像器等に代表される据置型のディスプレイ装置(以下、「テレビ」と記載する)2、据置型のゲーム装置3、光ディスク4、コントローラ5、マーカ装置6、および、端末装置7を含む。ゲームシステム1は、コントローラ5および/または端末装置7を用いたゲーム操作に基づいてゲーム装置3においてゲーム処理を実行し、ゲーム処理によって得られるゲーム画像をテレビ2および/または端末装置7に表示するものである。
【0047】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるための情報処理プログラム(典型的にはゲームプログラム)が記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されている情報処理プログラムを読み出して実行することによってゲーム処理を実行する。
【0048】
ゲーム装置3には、テレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理によって得られるゲーム画像を表示する。テレビ2はスピーカ2a(図2)を有しており、スピーカ2aは、上記ゲーム処理の結果得られるゲーム音声を出力する。なお、他の実施形態においては、ゲーム装置3と据置型の表示装置とは一体となっていてもよい。また、ゲーム装置3とテレビ2との通信は無線通信であってもよい。
【0049】
テレビ2の画面の周辺(図1では画面の上側)には、マーカ装置6が設置される。詳細は後述するが、ユーザ(プレイヤ)はコントローラ5を動かすゲーム操作を行うことができ、マーカ装置6は、コントローラ5の動きや位置や姿勢等をゲーム装置3が算出するために用いられる。マーカ装置6は、その両端に2つのマーカ6Rおよび6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LED(Light Emitting Diode)であり、テレビ2の前方に向かって赤外光を出力する。マーカ装置6はゲーム装置3に接続されており、ゲーム装置3はマーカ装置6が備える各赤外LEDの点灯を制御することが可能である。なお、マーカ装置6は可搬型であり、ユーザはマーカ装置6を自由な位置に設置することができる。図1ではマーカ装置6がテレビ2の上に設置された態様を表しているが、マーカ装置6を設置する位置および向きは任意である。
【0050】
コントローラ5は、自機に対して行われた操作の内容を表す操作データをゲーム装置3に与えるものである。コントローラ5とゲーム装置3とは無線通信によって通信可能である。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。また、本実施形態では、ゲームシステム1に含まれるコントローラ5は1つとするが、ゲーム装置3は複数のコントローラと通信可能であり、所定台数のコントローラを同時に使用することによって複数人でゲームをプレイすることが可能である。コントローラ5の詳細な構成については後述する。
【0051】
端末装置7は、ユーザが把持可能な程度の大きさであり、ユーザは端末装置7を手に持って動かしたり、あるいは、端末装置7を自由な位置に配置したりして使用することが可能である。詳細な構成は後述するが、端末装置7は、表示手段であるLCD(Liquid Crystal Display:液晶表示装置)51、および、入力手段(後述するタッチパネル52やジャイロセンサ64等)を備える。端末装置7とゲーム装置3とは無線(有線であってもよい)によって通信可能である。端末装置7は、ゲーム装置3で生成された画像(例えばゲーム画像)のデータをゲーム装置3から受信し、画像をLCD51に表示する。なお、本実施形態では表示装置としてLCDを用いているが、端末装置7は、例えばEL(Electro Luminescence:電界発光)を利用した表示装置等、他の任意の表示装置を有していてもよい。また、端末装置7は、自機に対して行われた操作の内容を表す操作データをゲーム装置3に送信する。
【0052】
[2.ゲーム装置3の内部構成]
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の内部構成を示すブロック図である。ゲーム装置3は、CPU(Central Processing Unit)10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
【0053】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間におけるデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムLSI11の内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
【0054】
システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM(Video RAM)11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0055】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。なお、ゲーム装置3は、テレビ2に表示する画像と、端末装置7に表示する画像との両方を生成する。以下では、テレビ2に表示される画像を「テレビ用画像」と呼び、端末装置7に表示される画像を「端末用画像」と呼ぶことがある。
【0056】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。なお、本実施形態においては、ゲーム音声についてもゲーム画像と同様、テレビ2のスピーカから出力するゲーム音声と、端末装置7のスピーカから出力するゲーム音声との両方が生成される。以下では、テレビ2から出力される音声を「テレビ用音声」と呼び、端末装置7から出力される音声を「端末用音声」と呼ぶことがある。
【0057】
上記のようにゲーム装置3において生成される画像および音声のうちで、テレビ2において出力される画像および音声のデータは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、テレビ2に画像が表示されるとともにスピーカ2aから音が出力される。なお、ゲーム装置3とテレビ2との接続は、どのような方式で行われてもよいが、ゲーム装置3は、テレビ2を制御する制御指令を有線または無線でテレビ2へ送信するようにしてもよい。例えばHDMI(High−Definition Multimedia Interface)規格に則ったHDMIケーブルが用いられてもよい。HDMI規格では、CEC(Consumer Electronics Control)と呼ばれる機能によって、接続相手の機器を制御することが可能である。したがって、HDMIケーブルが用いられる場合のように、ゲーム装置3がテレビ2に対する制御が可能である場合には、ゲーム装置3は、適宜のタイミングでテレビ2の電源をオンにしたり、テレビ2の入力を切り替えたりすることができる。
【0058】
また、ゲーム装置3において生成される画像および音声のうちで、端末装置7において出力される画像および音声のデータは、入出力プロセッサ11a等によって端末装置7へ送信される。入出力プロセッサ11a等による端末装置7へのデータの送信については後述する。
【0059】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、ネットワーク通信モジュール18、コントローラ通信モジュール19、拡張コネクタ20、メモリカード用コネクタ21、コーデックLSI27に接続される。また、ネットワーク通信モジュール18にはアンテナ22が接続される。コントローラ通信モジュール19にはアンテナ23が接続される。コーデックLSI27は端末通信モジュール28に接続され、端末通信モジュール28にはアンテナ29が接続される。
【0060】
ゲーム装置3は、インターネット等のネットワークに接続して外部の情報処理装置(例えば他のゲーム装置や、各種サーバ等)と通信を行うことが可能である。すなわち、入出力プロセッサ11aは、ネットワーク通信モジュール18およびアンテナ22を介してインターネット等のネットワークに接続可能であり、ネットワークに接続される他の装置と通信を行うことができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、ネットワーク通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、外部情報処理装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22およびネットワーク通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と外部情報処理装置との間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。また、フラッシュメモリ17にはゲームプログラムが記憶されてもよい。
【0061】
また、ゲーム装置3は、コントローラ5からの操作データを受信することが可能である。すなわち、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23およびコントローラ通信モジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0062】
また、ゲーム装置3は、端末装置7との間で画像や音声等のデータを送受信することが可能である。入出力プロセッサ11aは、端末装置7へゲーム画像(端末用ゲーム画像)を送信する場合、GPU11bが生成したゲーム画像のデータをコーデックLSI27へ出力する。コーデックLSI27は、入出力プロセッサ11aからの画像データに対して所定の圧縮処理を行う。端末通信モジュール28は、端末装置7との間で無線通信を行う。したがって、コーデックLSI27によって圧縮された画像データは、端末通信モジュール28によってアンテナ29を介して端末装置7へ送信される。なお、本実施形態では、ゲーム装置3から端末装置7へ送信される画像データはゲームに用いるものであり、ゲームにおいては表示される画像に遅延が生じるとゲームの操作性に悪影響が出る。そのため、ゲーム装置3から端末装置7への画像データの送信に関しては、できるだけ遅延が生じないようにすることが好ましい。したがって、本実施形態では、コーデックLSI27は、例えばH.264規格といった高効率の圧縮技術を用いて画像データを圧縮する。なお、それ以外の圧縮技術を用いてもよいし、通信速度が十分である場合には無圧縮で画像データを送信する構成であってもよい。また、端末通信モジュール28は、例えばWi−Fiの認証を受けた通信モジュールであり、例えばIEEE802.11n規格で採用されるMIMO(Multiple Input Multiple Output)の技術を用いて端末装置7との間の無線通信を高速に行うようにしてもよいし、他の通信方式を用いてもよい。
【0063】
また、ゲーム装置3は、画像データの他、音声データを端末装置7へ送信する。すなわち、入出力プロセッサ11aは、DSP11cが生成した音声データを、コーデックLSI27を介して端末通信モジュール28へ出力する。コーデックLSI27は、音声データに対しても画像データと同様に圧縮処理を行う。音声データに対する圧縮の方式は、どのような方式であってもよいが、圧縮率が高く、音声の劣化が少ない方式が好ましい。また、他の実施形態においては、音声データは圧縮されずに送信されてもよい。端末通信モジュール28は、圧縮された画像データおよび音声データを、アンテナ29を介して端末装置7へ送信する。
【0064】
さらに、ゲーム装置3は、上記画像データおよび音声データの他に、必要に応じて各種の制御データを端末装置7へ送信する。制御データは、端末装置7が備える構成要素に対する制御指示を表すデータであり、例えばマーカ部(図10に示すマーカ部55)の点灯を制御する指示や、カメラ(図10に示すカメラ56)の撮像を制御する指示等を表す。入出力プロセッサ11aは、CPU10の指示に応じて制御データを端末装置7へ送信する。なお、この制御データに関して、本実施形態ではコーデックLSI27はデータの圧縮処理を行わないが、他の実施形態においては圧縮処理を行うようにしてもよい。なお、ゲーム装置3から端末装置7へ送信される上述のデータは、必要に応じて暗号化がされていてもよいし、されていなくともよい。
【0065】
また、ゲーム装置3は、端末装置7から各種データを受信可能である。詳細は後述するが、本実施形態では、端末装置7は、操作データ、画像データ、および音声データを送信する。端末装置7から送信される各データはアンテナ29を介して端末通信モジュール28によって受信される。ここで、端末装置7からの画像データおよび音声データは、ゲーム装置3から端末装置7への画像データおよび音声データと同様の圧縮処理が施されている。したがって、これら画像データおよび音声データについては、端末通信モジュール28からコーデックLSI27に送られ、コーデックLSI27によって伸張処理が施されて入出力プロセッサ11aに出力される。一方、端末装置7からの操作データに関しては、画像や音声に比べてデータ量が少ないので、圧縮処理が施されていなくともよい。また、必要に応じて暗号化がされていてもよいし、されていなくともよい。したがって、操作データは、端末通信モジュール28で受信された後、コーデックLSI27を介して入出力プロセッサ11aに出力される。入出力プロセッサ11aは、端末装置7から受信したデータを、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0066】
また、ゲーム装置3は、他の機器や外部記憶媒体に接続することが可能である。すなわち、入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタである。拡張コネクタ20に対しては、外部記憶媒体のようなメディアを接続したり、他のコントローラ等の周辺機器を接続したり、有線の通信用コネクタを接続することによってネットワーク通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【0067】
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、図示しないACアダプタによって外部の電源からゲーム装置3の各構成要素に対して電力が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0068】
なお、他の実施形態においては、ゲーム装置3が備える各構成要素のうちでいくつかの構成要素は、ゲーム装置3とは別体の拡張機器として構成されてもよい。このとき、拡張機器は、例えば上記拡張コネクタ20を介してゲーム装置3と接続されるようにしてもよい。具体的には、拡張機器は、例えば上記コーデックLSI27、端末通信モジュール28およびアンテナ29の各構成要素を備えており、拡張コネクタ20に対して着脱可能であってもよい。これによれば、上記各構成要素を備えていないゲーム装置に対して上記拡張機器を接続することによって、当該ゲーム装置を端末装置7と通信可能な構成とすることができる。
【0069】
[3.コントローラ5の構成]
次に、図3〜図7を参照して、コントローラ5について説明する。図3および図4は、コントローラ5の外観構成を示す斜視図である。図3は、コントローラ5の上側後方から見た斜視図であり、図4は、コントローラ5を下側前方から見た斜視図である。
【0070】
図3および図4において、コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。ユーザは、コントローラ5に設けられたボタンを押下すること、および、コントローラ5自体を動かしてその位置や姿勢(傾き)を変えることによってゲーム操作を行うことができる。
【0071】
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字ボタン32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、および電源ボタン32hが設けられる。本明細書では、これらのボタン32a〜32hが設けられるハウジング31の上面を「ボタン面」と呼ぶことがある。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行する情報処理プログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32fおよび電源ボタン32hは、その上面がハウジング31の上面に埋没している。これによって、ユーザがホームボタン32fまたは電源ボタン32hを誤って押下することを防止することができる。
【0072】
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、コントローラ5に他の機器(例えば、他のセンサユニットやコントローラ)を接続するために利用される。また、ハウジング31の後面におけるコネクタ33の両側には、上記他の機器が容易に離脱することを防止するために係止穴33aが設けられている。
【0073】
ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をユーザに通知したり、コントローラ5の電池残量をユーザに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dのいずれか1つが点灯する。
【0074】
また、コントローラ5は撮像情報演算部35(図6)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6Rおよび6Lからの赤外光を少なくとも透過する材質で構成される。
【0075】
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカ47(図5)からの音を外部に放出するための音抜き孔31aが形成されている。
【0076】
次に、図5および図6を参照して、コントローラ5の内部構造について説明する。図5および図6は、コントローラ5の内部構造を示す図である。なお、図5は、コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6は、コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6に示す斜視図は、図5に示す基板30を裏面から見た斜視図となっている。
【0077】
図5において、ハウジング31の内部には基板30が固設されており、当該基板30の上主面上に各操作ボタン32a〜32h、各LED34a〜34d、加速度センサ37、アンテナ45、およびスピーカ47等が設けられる。これらは、基板30等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図6参照)に接続される。本実施形態では、加速度センサ37は、X軸方向に関してコントローラ5の中心からずれた位置に配置されている。これによって、コントローラ5をZ軸回りに回転させたときのコントローラ5の動きが算出しやすくなる。また、加速度センサ37は、長手方向(Z軸方向)に関してコントローラ5の中心よりも前方に配置されている。また、無線モジュール44(図6)およびアンテナ45によって、コントローラ5がワイヤレスコントローラとして機能する。
【0078】
一方、図6において、基板30の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ5の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を備えている。これらの部材38〜41はそれぞれ基板30の下主面に取り付けられる。
【0079】
さらに、基板30の下主面上には、上記マイコン42およびバイブレータ46が設けられている。バイブレータ46は、例えば振動モータやソレノイドであり、基板30等に形成された配線によってマイコン42と接続される。マイコン42の指示によりバイブレータ46が作動することによってコントローラ5に振動が発生する。これによって、コントローラ5を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ46は、ハウジング31のやや前方寄りに配置される。つまり、バイブレータ46がコントローラ5の中心よりも端側に配置することによって、バイブレータ46の振動によりコントローラ5全体を大きく振動させることができる。また、コネクタ33は、基板30の下主面上の後端縁に取り付けられる。なお、図5および図6に示す他、コントローラ5は、マイコン42の基本クロックを生成する水晶振動子、スピーカ47に音声信号を出力するアンプ等を備えている。
【0080】
なお、図3〜図6に示したコントローラ5の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。また、本実施形態では、撮像手段による撮像方向はZ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ5における撮像情報演算部35の位置(撮像情報演算部35の光入射面35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【0081】
図7は、コントローラ5の構成を示すブロック図である。コントローラ5は、操作部32(各操作ボタン32a〜32i)、撮像情報演算部35、通信部36、加速度センサ37、およびジャイロセンサ48を備えている。コントローラ5は、自機に対して行われた操作内容を表すデータを操作データとしてゲーム装置3へ送信するものである。なお、以下では、コントローラ5が送信する操作データを「コントローラ操作データ」と呼び、端末装置7が送信する操作データを「端末操作データ」と呼ぶことがある。
【0082】
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を表す操作ボタンデータを通信部36のマイコン42へ出力する。
【0083】
撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ5の動きでも追跡して解析することができる。
【0084】
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ5の前方から入射する光から赤外線のみを通過させる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDセンサのような固体撮像素子であり、レンズ39が集光した赤外線を受光して画像信号を出力する。ここで、撮像対象となる端末装置7のマーカ部55およびマーカ装置6は、赤外光を出力するマーカで構成される。したがって、赤外線フィルタ38を設けることによって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを受光して画像データを生成するので、撮像対象(マーカ部55および/またはマーカ装置6)の画像をより正確に撮像することができる。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象の位置を算出する。画像処理回路41は、算出された位置を示す座標を通信部36のマイコン42へ出力する。この座標のデータは、マイコン42によって操作データとしてゲーム装置3に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ5自体の向き(傾斜角度)や位置に対応して変化するので、ゲーム装置3はこのマーカ座標を用いてコントローラ5の向きや位置を算出することができる。
【0085】
なお、他の実施形態においては、コントローラ5は画像処理回路41を備えていない構成であってもよく、撮像画像自体がコントローラ5からゲーム装置3へ送信されてもよい。このとき、ゲーム装置3は、画像処理回路41と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【0086】
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する、すなわち、コントローラ5に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。例えば、2軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。なお、加速度センサ37は、例えば静電容量式のMEMS(Micro Electro Mechanical System)型加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【0087】
本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ37からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ5を基準に設定されるXYZ座標系(コントローラ座標系)における3次元のベクトルとして表される。
【0088】
加速度センサ37が検出した加速度を表すデータ(加速度データ)は、通信部36へ出力される。なお、加速度センサ37が検出した加速度は、コントローラ5自体の向き(傾斜角度)や動きに対応して変化するので、ゲーム装置3は取得された加速度データを用いてコントローラ5の向きや動きを算出することができる。本実施形態では、ゲーム装置3は、取得された加速度データに基づいてコントローラ5の姿勢や傾斜角度等を算出する。
【0089】
なお、加速度センサ37(後述する加速度センサ63についても同様)から出力される加速度の信号に基づいて、ゲーム装置3のプロセッサ(例えばCPU10)またはコントローラ5のプロセッサ(例えばマイコン42)等のコンピュータが処理を行うことによって、コントローラ5に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ37を搭載するコントローラ5が静止状態であることを前提としてコンピュータ側の処理が実行される場合(すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合)、コントローラ5が現実に静止状態であれば、検出された加速度に基づいてコントローラ5の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ37の検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かによって、コントローラ5が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ37の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ5がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ37からの出力に基づいてコントローラ5の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ5の傾斜方向を算出するようにしてもよい。このように、加速度センサ37をプロセッサと組み合わせて用いることによって、コントローラ5の傾斜角度または姿勢を判定することができる。
【0090】
一方、コントローラ5が動的な状態(コントローラ5が動かされている状態)であることを前提とする場合には、加速度センサ37は重力加速度に加えてコントローラ5の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ5の動き方向を知ることができる。また、コントローラ5が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ5の傾きを知ることが可能である。なお、他の実施例では、加速度センサ37は、内蔵の加速度検出手段で検出された加速度信号をマイコン42に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ37が静的な加速度(例えば、重力加速度)を検出するために用いられる場合、加速度信号を傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0091】
ジャイロセンサ48は、3軸(本実施形態では、XYZ軸)回りの角速度を検出する。本明細書では、コントローラ5の撮像方向(Z軸正方向)を基準として、X軸回りの回転方向をピッチ方向、Y軸回りの回転方向をヨー方向、Z軸回りの回転方向をロール方向と呼ぶ。ジャイロセンサ48は、3軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。例えば、ジャイロセンサ48は、3軸ジャイロセンサであってもよいし、2軸ジャイロセンサと1軸ジャイロセンサとを組み合わせて3軸周りの角速度を検出するものであってもよい。ジャイロセンサ48で検出された角速度を表すデータは、通信部36へ出力される。また、ジャイロセンサ48は1軸または2軸回りの角速度を検出するものであってもよい。
【0092】
通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。
【0093】
操作部32、撮像情報演算部35、加速度センサ37、およびジャイロセンサ48からマイコン42へ出力されたデータは、一時的にメモリ43に格納される。これらのデータは、操作データ(コントローラ操作データ)としてゲーム装置3へ送信される。すなわち、マイコン42は、ゲーム装置3のコントローラ通信モジュール19への送信タイミングが到来すると、メモリ43に格納されている操作データを無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ5から送信される。微弱電波信号はゲーム装置3側のコントローラ通信モジュール19で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、コントローラ5から取得した操作データを用いてゲーム処理を行う。なお、通信部36からコントローラ通信モジュール19への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ5の通信部36は、例えば1/200秒に1回の割合で操作データをゲーム装置3のコントローラ通信モジュール19へ出力する。
【0094】
以上のように、コントローラ5は、自機に対する操作を表す操作データとして、マーカ座標データ、加速度データ、角速度データ、および操作ボタンデータを送信可能である。また、ゲーム装置3は、上記操作データをゲーム入力として用いてゲーム処理を実行する。したがって、上記コントローラ5を用いることによって、ユーザは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ5自体を動かすゲーム操作を行うことができる。例えば、コントローラ5を任意の姿勢に傾ける操作、コントローラ5によって画面上の任意の位置を指示する操作、および、コントローラ5自体を動かす操作等を行うことが可能となる。
【0095】
また、本実施形態において、コントローラ5は、ゲーム画像を表示する表示手段を有しないが、例えば電池残量を表す画像等を表示するための表示手段を有していてもよい。
【0096】
[4.端末装置7の構成]
次に、図8〜図10を参照して、端末装置7の構成について説明する。図8は、端末装置7の外観構成を示す図である。図8における(a)図は端末装置7の正面図であり、(b)図は上面図であり、(c)図は右側面図であり、(d)図は下面図である。また、図9は、ユーザが端末装置7を把持した様子を示す図である。
【0097】
図8に示されるように、端末装置7は、大略的には横長の長方形の板状形状であるハウジング50を備える。ハウジング50は、ユーザが把持することができる程度の大きさである。したがって、ユーザは、端末装置7を持って動かしたり、端末装置7の配置位置を変更したりすることができる。
【0098】
端末装置7は、ハウジング50の表面にLCD51を有する。LCD51は、ハウジング50の表面の中央付近に設けられる。したがって、ユーザは、図9に示すようにLCD51の両側部分のハウジング50を持つことによって、LCD51の画面を見ながら端末装置を持って動かすことができる。なお、図9ではユーザがLCD51の左右両側の部分のハウジング50を持つことで端末装置7を横持ちで(横に長い向きにして)持つ例を示しているが、端末装置7を縦持ちで(縦に長い向きにして)持つことも可能である。
【0099】
図8の(a)図に示すように、端末装置7は、操作手段として、LCD51の画面上にタッチパネル52を有する。本実施形態では、タッチパネル52は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。また、タッチパネル52はシングルタッチ方式でもよいし、マルチタッチ方式であってもよい。本実施形態では、タッチパネル52として、LCD51の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル52の解像度とLCD51の解像度が一致している必要はない。タッチパネル52に対する入力は通常タッチペンを用いて行われるが、タッチペンに限らずユーザの指でタッチパネル52に対する入力をすることも可能である。なお、ハウジング50には、タッチパネル52に対する操作を行うために用いられるタッチペンを収納するための収納穴が設けられていてもよい。このように、端末装置7はタッチパネル52を備えるので、ユーザは、端末装置7を動かしながらタッチパネル52を操作することができる。つまりユーザは、LCD51の画面を動かしつつ、その画面に対して直接(タッチパネル52によって)入力を行うことができる。
【0100】
図8に示すように、端末装置7は、操作手段として、2つのアナログスティック53Aおよび53Bと、複数のボタン54A〜54Lとを備えている。各アナログスティック53Aおよび53Bは、方向を指示するデバイスである。各アナログスティック53Aおよび53Bは、ユーザの指で操作されるスティック部がハウジング50の表面に対して任意の方向(上下左右および斜め方向の任意の角度)にスライド(または傾倒)することができるように構成されている。また、左アナログスティック53AはLCD51の画面の左側に、右アナログスティック53BはLCD51の画面の右側にそれぞれ設けられる。したがって、ユーザは、左右いずれの手でもアナログスティックを用いて方向を指示する入力を行うことができる。また、図9に示すように、各アナログスティック53Aおよび53Bは、ユーザが端末装置7の左右部分を把持した状態で操作可能な位置に設けられるので、ユーザは、端末装置7を持って動かす場合においても各アナログスティック53Aおよび53Bを容易に操作することができる。
【0101】
各ボタン54A〜54Lは、所定の入力を行うための操作手段である。以下に示すように、各ボタン54A〜54Lは、ユーザが端末装置7の左右部分を把持した状態で操作可能な位置に設けられる(図9参照)。したがって、ユーザは、端末装置7を持って動かす場合においてもこれらの操作手段を容易に操作することができる。
【0102】
図8の(a)図に示すように、ハウジング50の表面には、各操作ボタン54A〜54Lのうち、十字ボタン(方向入力ボタン)54Aと、ボタン54B〜54Hとが設けられる。つまり、これらのボタン54A〜54Gは、ユーザの親指で操作可能な位置に配置されている(図9参照)。
【0103】
十字ボタン54Aは、LCD51の左側であって、左アナログスティック53Aの下側に設けられる。つまり、十字ボタン54Aはユーザの左手で操作可能な位置に配置されている。十字ボタン54Aは、十字の形状を有しており、上下左右の方向を指示することが可能なボタンである。また、ボタン54B〜54Dは、LCD51の下側に設けられる。これら3つのボタン54B〜54Dは、左右両方の手で操作可能な位置に配置されている。また、4つのボタン54E〜54Hは、LCD51の右側であって、右アナログスティック53Bの下側に設けられる。つまり、4つのボタン54E〜54Hはユーザの右手で操作可能な位置に配置されている。さらに、4つのボタン54E〜54Hは、(4つのボタン54E〜54Hの中心位置に対して)上下左右の位置関係となるように配置されている。したがって、端末装置7は、ユーザに上下左右の方向を指示させるためのボタンとして4つのボタン54E〜54Hを機能させることも可能である。
【0104】
また、図8の(a)図、(b)図、および(c)図に示すように、第1Lボタン54Iおよび第1Rボタン54Jは、ハウジング50の斜め上部分(左上部分および右上部分)に設けられる。具体的には、第1Lボタン54Iは、板状のハウジング50における上側の側面の左端に設けられ、上側および左側の側面から露出している。また、第1Rボタン54Jは、ハウジング50における上側の側面の右端に設けられ、上側および右側の側面から露出している。このように、第1Lボタン54Iは、ユーザの左手人差し指で操作可能な位置に配置され、第1Rボタン54Jは、ユーザの右手人差し指で操作可能な位置に配置される(図9参照)。
【0105】
また、図8の(b)図および(c)図に示すように、第2Lボタン54Kおよび第2Rボタン54Lは、板状のハウジング50の裏面(すなわちLCD51が設けられる表面の反対側の面)に突起して設けられる足部59Aおよび59Bに配置される。具体的には、第2Lボタン54Kは、ハウジング50の裏面の左側(表面側から見たときの左側)のやや上方に設けられ、第2Rボタン54Lは、ハウジング50の裏面の右側(表面側から見たときの右側)のやや上方に設けられる。換言すれば、第2Lボタン54Kは、表面に設けられる左アナログスティック53Aの概ね反対側の位置に設けられ、第2Rボタン54Lは、表面に設けられる右アナログスティック53Bの概ね反対側の位置に設けられる。このように、第2Lボタン54Kは、ユーザの左手中指で操作可能な位置に配置され、第2Rボタン54Lは、ユーザの右手中指で操作可能な位置に配置される(図9参照)。また、第2Lボタン54Kおよび第2Rボタン54Lは、図8の(c)図に示すように、上記足部59Aおよび59Bの斜め上方を向く面に設けられ、斜め上方を向くボタン面を有する。ユーザが端末装置7を把持した場合には中指は上下方向に動くと考えられるので、ボタン面を上方に向けることで、ユーザは第2Lボタン54Kおよび第2Rボタン54Lを押下しやすくなる。また、ハウジング50の裏面に足部が設けられることにより、ユーザはハウジング50を把持しやすくなり、かつ、足部にボタンが設けられることで、ハウジング50を把持したまま操作しやすくなる。
【0106】
なお、図8に示す端末装置7に関しては、第2Lボタン54Kおよび第2Rボタン54Lが裏面に設けられるので、LCD51の画面(ハウジング50の表面)が上を向いた状態で端末装置7を載置させる場合、画面が完全に水平にはならない場合がある。そのため、他の実施形態においては、ハウジング50の裏面に3つ以上の足部が形成されてもよい。これによれば、LCD51の画面が上を向いた状態では足部が床面に接することで床面に載置できるので、画面が水平になるように端末装置7を載置することができる。また、着脱可能な足部を追加することで端末装置7を水平に載置するようにしてもよい。
【0107】
各ボタン54A〜54Lには、ゲームプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン54Aおよびボタン54E〜54Hは方向指示操作や選択操作等に用いられてもよいし、各ボタン54B〜54Eは決定操作やキャンセル操作等に用いられてもよい。
【0108】
なお、図示しないが、端末装置7は、端末装置7の電源をオン/オフするための電源ボタンを有している。また、端末装置7は、LCD51の画面表示をオン/オフするためのボタンや、ゲーム装置3との接続設定(ペアリング)を行うためのボタンや、スピーカ(図10に示すスピーカ67)の音量を調節するためのボタンを有していてもよい。
【0109】
図8の(a)図に示すように、端末装置7は、マーカ55Aおよびマーカ55Bからなるマーカ部(図10に示すマーカ部55)をハウジング50の表面に備えている。マーカ部55は、LCD51の上側に設けられる。各マーカ55Aおよびマーカ55Bは、マーカ装置6の各マーカ6Rおよび6Lと同様、1以上の赤外LEDで構成される。マーカ部55は、上述のマーカ装置6と同様、コントローラ5の動き等をゲーム装置3が算出するために用いられる。また、ゲーム装置3はマーカ部55が備える各赤外LEDの点灯を制御することが可能である。
【0110】
端末装置7は、撮像手段であるカメラ56を備えている。カメラ56は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。図8に示すように、本実施形態では、カメラ56はハウジング50の表面に設けられる。したがって、カメラ56は、端末装置7を持っているユーザの顔を撮像することができ、例えばLCD51を見ながらゲームを行っている時のユーザを撮像することができる。
【0111】
なお、端末装置7は、音声入力手段であるマイク(図10に示すマイク69)を備えている。ハウジング50の表面には、マイクロフォン用孔60が設けられる。マイク69はこのマイクロフォン用孔60の奥のハウジング50内部に設けられる。マイクは、ユーザの音声等、端末装置7の周囲の音を検出する。
【0112】
端末装置7は、音声出力手段であるスピーカ(図10に示すスピーカ67)を備えている。図8の(d)図に示すように、ハウジング50の下側側面にはスピーカ孔57が設けられる。スピーカ67の出力音はこのスピーカ孔57から出力される。本実施形態では、端末装置7は2つのスピーカを備えており、左スピーカおよび右スピーカのそれぞれの位置にスピーカ孔57が設けられる。
【0113】
また、端末装置7は、他の装置を端末装置7に接続するための拡張コネクタ58を備えている。本実施形態においては、図8の(d)図に示すように、拡張コネクタ58は、ハウジング50の下側側面に設けられる。なお、拡張コネクタ58に接続される他の装置はどのようなものであってもよく、例えば、特定のゲームに用いるコントローラ(銃型のコントローラ等)やキーボード等の入力装置であってもよい。他の装置を接続する必要がなければ、拡張コネクタ58は設けられていなくともよい。
【0114】
なお、図8に示した端末装置7に関して、各操作ボタンやハウジング50の形状や、各構成要素の数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。
【0115】
次に、図10を参照して、端末装置7の内部構成について説明する。図10は、端末装置7の内部構成を示すブロック図である。図10に示すように、端末装置7は、図8に示した構成の他、タッチパネルコントローラ61、磁気センサ62、加速度センサ63、ジャイロセンサ64、ユーザインタフェースコントローラ(UIコントローラ)65、コーデックLSI66、スピーカ67、サウンドIC68、マイク69、無線モジュール70、アンテナ71、赤外線通信モジュール72、フラッシュメモリ73、電源IC74、電池75、および、バイブレータ79を備える。これらの電子部品は、電子回路基板上に実装されてハウジング50内に収納される。
【0116】
UIコントローラ65は、各種の入出力部に対するデータの入出力を制御するための回路である。UIコントローラ65は、タッチパネルコントローラ61、アナログスティック53(アナログスティック53Aおよび53B)、操作ボタン54(各操作ボタン54A〜54L)、マーカ部55、磁気センサ62、加速度センサ63、ジャイロセンサ64、およびバイブレータ79に接続される。また、UIコントローラ65は、コーデックLSI66と拡張コネクタ58に接続される。また、UIコントローラ65には電源IC74が接続され、UIコントローラ65を介して各部に電力が供給される。電源IC74には内蔵の電池75が接続され、電力が供給される。また、電源IC74には、コネクタ等を介して外部電源から電力を取得可能な充電器76またはケーブルを接続することが可能であり、端末装置7は、当該充電器76またはケーブルを用いて外部電源からの電力供給と充電を行うことができる。なお、端末装置7は、図示しない充電機能を有するクレイドルに端末装置7を装着することで充電を行うようにしてもよい。
【0117】
タッチパネルコントローラ61は、タッチパネル52に接続され、タッチパネル52の制御を行う回路である。タッチパネルコントローラ61は、タッチパネル52からの信号に基づいて所定の形式のタッチ位置データを生成してUIコントローラ65へ出力する。タッチ位置データは、タッチパネル52の入力面において入力が行われた位置の座標を表す。なお、タッチパネルコントローラ61は、タッチパネル52からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。また、UIコントローラ65からタッチパネルコントローラ61へは、タッチパネル52に対する各種の制御指示が出力される。
【0118】
アナログスティック53は、ユーザの指で操作されるスティック部がスライドした(または傾倒した)方向および量を表すスティックデータをUIコントローラ65へ出力する。また、操作ボタン54は、各操作ボタン54A〜54Lに対する入力状況(押下されたか否か)を表す操作ボタンデータをUIコントローラ65へ出力する。
【0119】
磁気センサ62は、磁界の大きさおよび方向を検知することで方位を検出する。検出された方位を示す方位データは、UIコントローラ65へ出力される。また、UIコントローラ65から磁気センサ62へは、磁気センサ62に対する制御指示が出力される。磁気センサ62に関しては、MI(磁気インピーダンス)素子、フラックスゲートセンサ、ホール素子、GMR(巨大磁気抵抗)素子、TMR(トンネル磁気抵抗)素子、あるいはAMR(異方性磁気抵抗)素子等を用いたセンサがあるが、方位を検出することができればどのようなものが用いられてもよい。なお、厳密には、地磁気以外に磁界が発生している場所においては、得られた方位データは方位を示さないことになるが、そのような場合であっても、端末装置7が動いた場合には方位データが変化するため、端末装置7の姿勢の変化を算出することができる。
【0120】
加速度センサ63は、ハウジング50の内部に設けられ、3軸(図8の(a)図に示すxyz軸)方向に沿った直線加速度の大きさを検出する。具体的には、加速度センサ63は、ハウジング50の長辺方向をx軸、ハウジング50の表面に対して垂直な方向をy軸、ハウジング50の短辺方向をz軸として、各軸の直線加速度の大きさを検出する。検出された加速度を表す加速度データはUIコントローラ65へ出力される。また、UIコントローラ65から加速度センサ63へは、加速度センサ63に対する制御指示が出力される。加速度センサ63は、本実施形態では例えば静電容量式のMEMS型加速度センサであるとするが、他の実施形態においては他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ63は1軸または2軸方向を検出する加速度センサであってもよい。
【0121】
ジャイロセンサ64は、ハウジング50の内部に設けられ、上記x軸、y軸およびz軸の3軸周りの角速度を検出する。検出された角速度を表す角速度データは、UIコントローラ65へ出力される。また、UIコントローラ65からジャイロセンサ64へは、ジャイロセンサ64に対する制御指示が出力される。なお、3軸の角速度を検出するために用いられるジャイロセンサの数および組み合わせはどのようなものであってもよく、ジャイロセンサ64はジャイロセンサ48と同様、2軸ジャイロセンサと1軸ジャイロセンサとで構成されてもよい。また、ジャイロセンサ64は1軸または2軸方向を検出するジャイロセンサであってもよい。
【0122】
バイブレータ79は、例えば振動モータやソレノイドであり、UIコントローラ65に接続される。UIコントローラ65の指示によりバイブレータ79が作動することによって端末装置7に振動が発生する。これによって、端末装置7を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。
【0123】
UIコントローラ65は、上記の各構成要素から受け取ったタッチ位置データ、スティックデータ、操作ボタンデータ、方位データ、加速度データ、および角速度データを含む操作データをコーデックLSI66に出力する。なお、拡張コネクタ58を介して端末装置7に他の装置が接続される場合には、当該他の装置に対する操作を表すデータが上記操作データにさらに含まれていてもよい。
【0124】
コーデックLSI66は、ゲーム装置3へ送信するデータに対する圧縮処理、および、ゲーム装置3から送信されたデータに対する伸張処理を行う回路である。コーデックLSI66には、LCD51、カメラ56、サウンドIC68、無線モジュール70、フラッシュメモリ73、および赤外線通信モジュール72が接続される。また、コーデックLSI66はCPU77と内部メモリ78を含む。端末装置7はゲーム処理自体を行なわない構成であるが、端末装置7の管理や通信のための最小限のプログラムを実行する必要がある。電源投入時にフラッシュメモリ73に格納されたプログラムを内部メモリ78に読み出してCPU77が実行することで、端末装置7が起動する。また、内部メモリ78の一部の領域はLCD51のためのVRAMとして使用される。
【0125】
カメラ56は、ゲーム装置3からの指示に従って画像を撮像し、撮像した画像データをコーデックLSI66へ出力する。また、コーデックLSI66からカメラ56へは、画像の撮像指示等、カメラ56に対する制御指示が出力される。なお、カメラ56は動画の撮影も可能である。すなわち、カメラ56は、繰り返し撮像を行って画像データをコーデックLSI66へ繰り返し出力することも可能である。
【0126】
サウンドIC68は、スピーカ67およびマイク69に接続され、スピーカ67およびマイク69への音声データの入出力を制御する回路である。すなわち、コーデックLSI66から音声データを受け取った場合、サウンドIC68は当該音声データに対してD/A変換を行って得られる音声信号をスピーカ67へ出力し、スピーカ67から音を出力させる。また、マイク69は、端末装置7に伝わる音(ユーザの音声等)を検知して、当該音を示す音声信号をサウンドIC68へ出力する。サウンドIC68は、マイク69からの音声信号に対してA/D変換を行い、所定の形式の音声データをコーデックLSI66へ出力する。
【0127】
赤外線通信モジュール72は、赤外線信号を発光し、他の装置との間で赤外線通信を行う。ここでは、赤外線通信モジュール72は、例えばIrDAの規格に従った赤外線通信を行う機能と、テレビ2を制御するための赤外線信号を出力する機能とを備える。
【0128】
コーデックLSI66は、カメラ56からの画像データと、マイク69からの音声データと、UIコントローラ65からの端末操作データとを無線モジュール70を介してゲーム装置3へ送信する。本実施形態では、コーデックLSI66は、画像データおよび音声データに対して、コーデックLSI27と同様の圧縮処理を行う。上記端末操作データ、ならびに、圧縮された画像データおよび音声データは、送信データとして無線モジュール70に出力される。無線モジュール70にはアンテナ71が接続されており、無線モジュール70はアンテナ71を介してゲーム装置3へ上記送信データを送信する。無線モジュール70は、ゲーム装置3の端末通信モジュール28と同様の機能を有している。すなわち、無線モジュール70は、例えばIEEE802.11nの規格に準拠した方式により、無線LANに接続する機能を有する。送信されるデータは必要に応じて暗号化されていてもよいし、されていなくともよい。
【0129】
以上のように、端末装置7からゲーム装置3へ送信される送信データには、操作データ(端末操作データ)、画像データ、および音声データが含まれる。なお、拡張コネクタ58を介して端末装置7に他の装置が接続される場合には、当該他の装置から受け取ったデータが上記送信データにさらに含まれていてもよい。コーデックLSI66は、赤外線通信モジュール72による赤外線通信によって受信したデータを、必要に応じて上記送信データに含めてゲーム装置3へ送信してもよい。
【0130】
また、上述のように、ゲーム装置3から端末装置7へは、圧縮された画像データおよび音声データが送信される。これらのデータはアンテナ71および無線モジュール70を介してコーデックLSI66に受信される。コーデックLSI66は、受信した画像データおよび音声データを伸張する。伸張された画像データはLCD51へ出力され、画像がLCD51に表示される。また、伸張された音声データはサウンドIC68へ出力され、サウンドIC68はスピーカ67から音を出力させる。
【0131】
また、ゲーム装置3から受信されるデータに制御データが含まれる場合、コーデックLSI66およびUIコントローラ65は、制御データに従った制御指示を各部に行う。上述のように、制御データは、端末装置7が備える各構成要素(本実施形態では、カメラ56、タッチパネルコントローラ61、マーカ部55、各センサ62〜64、赤外線通信モジュール72、およびバイブレータ79)に対する制御指示を表すデータである。本実施形態では、制御データが表す制御指示としては、上記各構成要素を動作させたり、動作を休止(停止)させたりする指示が考えられる。すなわち、ゲームで使用しない構成要素については電力消費を抑えるために休止させてもよく、その場合、端末装置7からゲーム装置3へ送信される送信データには、休止した構成要素からのデータが含まれないようにする。なお、マーカ部55は赤外LEDであるので、制御は単に電力の供給のON/OFFでよい。
【0132】
また、ゲーム装置3は、上記赤外線通信モジュール72の出力を制御することによって、テレビ2の動作を制御することが可能である。すなわち、ゲーム装置3は、テレビ2を制御するための制御指令に対応する赤外線信号を赤外線通信モジュール72に出力させるための指示(上記制御データ)を端末装置7に出力する。この指示に応じて、コーデックLSI66は、上記制御指令に対応する赤外線信号を赤外線通信モジュール72に出力させる。ここで、テレビ2は赤外線信号を受光可能な赤外線受光部を備えている。赤外線通信モジュール72から出力された赤外線信号が赤外線受光部によって受光されることで、テレビ2は当該赤外線信号に応じた動作を行う。なお、ゲーム装置3からの上記指示は、赤外線信号のパターンを示すものであってもよいし、端末装置7が赤外線信号のパターンを記憶している場合には、当該パターンを示す指示であってもよい。
【0133】
以上のように、端末装置7は、タッチパネル52、アナログスティック53、および操作ボタン54といった操作手段を備えるが、他の実施形態においては、これらの操作手段に代えて、または、これらの操作手段とともに、他の操作手段を備える構成であってもよい。
【0134】
また、端末装置7は、端末装置7の動き(位置や姿勢、あるいは、位置や姿勢の変化を含む)を算出するためのセンサとして、磁気センサ62、加速度センサ63、およびジャイロセンサ64を備えるが、他の実施形態においては、これらのセンサのうち1つまたは2つのみを備える構成であってもよい。また、他の実施形態においては、これらのセンサに代えて、または、これらのセンサとともに、他のセンサを備える構成であってもよい。
【0135】
また、端末装置7は、カメラ56およびマイク69を備える構成であるが、他の実施形態においては、カメラ56およびマイク69を備えていなくてもよく、また、いずれか一方のみを備えていてもよい。
【0136】
また、端末装置7は、端末装置7とコントローラ5との位置関係(コントローラ5から見た端末装置7の位置および/または姿勢等)を算出するための構成としてマーカ部55を備える構成であるが、他の実施形態ではマーカ部55を備えていない構成としてもよい。また、他の実施形態では、端末装置7は、上記位置関係を算出するための構成として他の手段を備えていてもよい。例えば、他の実施形態においては、コントローラ5がマーカ部を備え、端末装置7が撮像素子を備える構成としてもよい。さらにこの場合、マーカ装置6は赤外LEDに代えて、撮像素子を備える構成としてもよい。
【0137】
[5.ゲーム処理の概要]
以下、図11〜図14を参照して、本実施形態のゲームシステム1において実行されるゲーム処理の概要について説明する。本実施形態では、プレイヤは端末装置7を用いて3次元の仮想空間(ゲーム空間)に点や線を描くことができる。仮想空間を表すゲーム画像は、テレビ2および端末装置7の2つの表示装置に表示される。本実施形態においては、端末装置7は、表示装置としてだけでなく操作装置として用いられる。そのため、コントローラ5は用いられなくてもよく、ゲームシステム1はコントローラ5を含まない構成であってもよい。
【0138】
図11は、本実施形態においてゲーム操作が行われる場合におけるテレビ2および端末装置7を示す図である。図11に示すように、テレビ2には所定の面81が設置される3次元の仮想空間が表示され、端末装置7にもこの面81が表示される。端末装置7においては、面81と表示画面とが一致するように面81が表示される。つまり、面81は、端末装置7が備えるタッチパネル52の入力面に対応する。なお、面81はタッチパネル52の入力面(LCD51の画面)と同じアスペクト比を有する長方形の平面である。また、詳細は後述するが、面81の姿勢は端末装置7の姿勢に対応しており、端末装置7の姿勢を変化させることで仮想空間における面81の姿勢が変化する。なお、図11では、端末装置7は、タッチパネル52が水平となる姿勢であるので、面81も仮想空間において水平になっている。なお、端末装置7にはアイコン82が表示される。詳細は後述するが、アイコン82は、仮想空間に生成された軌跡を移動(回転)させるために用いられる。
【0139】
プレイヤは、端末装置7のタッチパネル52上にタッチペン80や指等で点や線を描くことができる。点や線が描かれた場合、図11に示すように、仮想空間における面81上には、描かれた点や線(図11では線A1)が生成されて表示される。具体的には、タッチパネル52に対する入力(タッチ入力)が行われると、入力が行われた位置(タッチ位置)に対応する面81上の位置が算出される。なお、以下では、タッチ位置に対応する仮想空間の位置(面81上の位置)を「指定位置」と呼ぶ。本実施形態では、点や線を表すためのオブジェクトが上記指定位置に配置されることによって、入力された点や線が表示される。以上のように、プレイヤは、タッチパネル52に対する入力操作によって3次元の仮想空間内に点や線を描くことができる。
【0140】
図12は、図11に示す状態から端末装置7を傾けた場合におけるテレビ2および端末装置7を示す図である。図11に示す状態ではタッチパネル52の入力面が水平となっていたのに対して、図12に示す状態では当該入力面が鉛直となるように端末装置7の姿勢が変化している。タッチパネル52の入力面が鉛直になるように端末装置7の姿勢を変化させると、図12に示すように、仮想空間内の面81も鉛直となるように変化する。なお、本実施形態では、面81は、面81の中央の位置を回転の中心として、端末装置7の姿勢に応じて回転する。また、面81の姿勢が変化した場合、端末装置7に表示される画像の視点および視線方向は、面81と表示画面とが一致するように変化する。
【0141】
図12に示す状態においても図11に示す状態と同様、プレイヤは、タッチパネル52に対する入力操作によって3次元の仮想空間内に点や線を描くことができる。つまり、図12に示す状態で、プレイヤがタッチパネル52に対して線を描くと、仮想空間において鉛直方向に平行となった面81上に線が生成されて表示される。ここで、図12に示す状態においては、面81の姿勢が図11に示す状態とは異なっているので、タッチ入力によって生成される線の位置や向きは図11とは異なる。すなわち、図11に示す状態で生成された線A1は、水平な面内において生成されるのに対して、図12に示す状態で生成される線A2は、鉛直な面内において生成される。したがって、線A1と線A2とで形成される図形は、平面的なものではなく、立体的なものになる。
【0142】
以上のように、本実施形態においては、端末装置7のタッチパネル52に対する入力に応じて、仮想空間内の面81上に図形(点や線)が生成されるとともに、端末装置7の姿勢に応じて面81の姿勢が変化する。これによれば、面81の姿勢を変化させることによって、面81上に生成される図形を立体的なものとすることができる。つまり、プレイヤは、タッチパネル52に対する入力操作によって、3次元の仮想空間において3次元的に自由に図形を描くことができる。
【0143】
また、本実施形態では、プレイヤは、端末装置7の姿勢を変化させる操作によって仮想空間内に線を描くことも可能である。図13は、図12に示す状態から端末装置7を傾けた場合におけるテレビ2および端末装置7を示す図である。図12に示す状態では、タッチパネル52の入力面の法線方向がテレビ2の方向を向いていたのに対して、図13に示す状態では、当該法線方向がテレビ2の方向よりやや横を向いている。また、ここでは、プレイヤは、図12に示す状態から図13に示す状態へ端末装置7の姿勢を変化させる際、タッチパネル52のある1点の位置(アイコン82の位置を除く)をタッチし続けているものとする。図12に示す状態から図13に示す状態となる場合においても上記と同様、図13に示すように、端末装置7の姿勢に応じて面81の姿勢が変化する。この場合、プレイヤが同じ位置をタッチし続けていても、面81の姿勢が変化することによって仮想空間内における指定位置は変化する。したがって、図13に示すように、指定位置が変化した軌跡を表す線A3が生成されて表示される。このように、本実施形態では、タッチパネル52上に線を描く操作の他に、端末装置7の姿勢を変化させる操作によって仮想空間内に線を描くことも可能である。また、端末装置7の姿勢を変化させる操作によって、面81に平行でない向きに線を描くことが可能である。
【0144】
また、本実施形態では、プレイヤは、仮想空間内に生成された図形の向き(姿勢)を変化させることも可能である。図14は、図12に示す状態から図形を回転させた場合におけるテレビ2および端末装置7を示す図である。図12に示す状態では、タッチパネル52の入力面の法線方向がテレビ2の方向を向いていたのに対して、図14に示す状態では図13に示す状態と同様、当該法線方向がテレビ2の方向よりやや横を向いている。また、プレイヤは、図12に示す状態から図13に示す状態へ端末装置7の姿勢を変化させる際、所定の操作(ここでは、タッチパネル52のアイコン82の位置をタッチし続ける操作)を行っているものとする。このように、所定の操作が行われた状態で端末装置7の姿勢が変化される場合、生成された図形の姿勢は、端末装置7の姿勢に応じて面81の姿勢と共に変化する。例えば、図14においては、線A1およびA2からなる図形は、端末装置7が鉛直方向を軸として回転することに応じて、仮想空間における鉛直方向を軸として面81と共に回転する。このとき、テレビ2には、上記図形の向きが変化して表示される。したがって、プレイヤは、アイコン82をタッチしながら端末装置7の姿勢を変化させる操作によって、作成した図形をいろいろな向きから見ることができ、図形の形状を確認することができる。なお、端末装置7に表示される画像に関しては、視線方向が面81の姿勢と共に変化するので、図形は動いていないように見える。また、本実施形態では、上記所定の操作は、アイコン82をタッチする操作であるとするが、他の実施形態では、例えば端末装置7の所定のボタンを押下する操作等、どのような操作であってもよい。
【0145】
[6.ゲーム処理の詳細]
次に、本ゲームシステムにおいて実行されるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる各種データについて説明する。図15は、ゲーム処理において用いられる各種データを示す図である。図15において、ゲーム装置3のメインメモリ(外部メインメモリ12または内部メインメモリ11e)に記憶される主なデータを示す図である。図15に示すように、ゲーム装置3のメインメモリには、ゲームプログラム90、端末操作データ91、および処理用データ98が記憶される。なお、メインメモリには、図15に示すデータの他、ゲームに登場する各種オブジェクトの画像データやゲームに使用される音声データ等、ゲームに必要なデータが記憶される。
【0146】
ゲームプログラム90は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリに記憶される。なお、ゲームプログラム90は、光ディスク4に代えて、フラッシュメモリ17やゲーム装置3の外部装置から(例えばインターネットを介して)取得されてもよい。また、ゲームプログラム90に含まれる一部(例えば、コントローラ5および/または端末装置7の姿勢を算出するためのプログラム)については、ゲーム装置3内に予め記憶されていてもよい。
【0147】
端末操作データ91は、端末装置7に対するプレイヤの操作を表すデータである。端末操作データ91は、端末装置7から送信されてゲーム装置3において取得され、メインメモリに記憶される。端末操作データ91は、操作ボタンデータ92、スティックデータ93、タッチ位置データ94、角速度データ95、加速度データ96、および方位データ97を含む。端末操作データ91は、図15に示す各データの他、カメラ56によって撮像された画像のデータや、マイク69によって検出された音声データを含んでいてもよい。なお、メインメモリには、最新の(最後に取得された)ものから順に所定個数の端末操作データが記憶されてもよい。
【0148】
操作ボタンデータ92は、端末装置7に設けられる各操作ボタン54A〜54Lに対する入力状態を表すデータである。具体的には、操作ボタンデータ92は、各操作ボタン54A〜54Lが押下されているか否かを表す。
【0149】
スティックデータ93は、アナログスティック53(アナログスティック53Aおよび53B)のスティック部がスライドした(または傾倒した)方向および量を表すデータである。上記方向および量は、例えば2次元座標や2次元ベクトルとして表されてもよい。
【0150】
タッチ位置データ94は、タッチパネル52の入力面において入力が行われた位置(タッチ位置)を表すデータである。本実施形態では、タッチ位置データ94は、上記入力面上の位置を示すための2次元座標系の座標値を表す。なお、タッチパネル52がマルチタッチ方式である場合には、タッチ位置データ94は複数のタッチ位置を表すこともある。
【0151】
角速度データ95は、ジャイロセンサ64によって検出された角速度を表すデータである。本実施形態では、角速度データ95は、図8に示すxyzの3軸回りのそれぞれの角速度を表すものであるが、他の実施形態においては、任意の1軸以上の軸回り角速度を表すものであればよい。
【0152】
加速度データ96は、加速度センサ63によって検出された加速度(加速度ベクトル)を表すデータである。本実施形態では、加速度データ96は、図8に示すxyzの3軸の方向に関する加速度を各成分とする3次元の加速度を表すものであるが、他の実施形態においては、任意の1以上の方向に関する加速度を表すものであればよい。
【0153】
方位データ97は、磁気センサ62によって検出された方位を表すデータである。本実施形態では、方位データ97は、端末装置7を基準として所定の方位(例えば北)の向きを表す。なお、地磁気以外の磁界が発生している場合においては、方位データ97は厳密には絶対的な方位(北等)を示さないことになる。ただし、その場所における磁界の方向に対する端末装置7の相対的な方向が方位データ97によって示されるので、そのような場合であっても方位データ97に基づいて端末装置7の姿勢または姿勢の変化を算出することが可能である。
【0154】
なお、端末操作データ91は、端末装置7に対する操作を表すものであればよく、上記各データ92〜97のいずれか1つのみを含むものであってもよい。また、端末装置7が他の入力手段(例えば、タッチパッドや、コントローラ5の撮像手段等)を有する場合には、端末操作データ91は、当該他の入力手段に対する操作を表すデータを含んでいてもよい。なお、本実施形態のように端末装置7自体の動きをゲーム操作として用いる場合には、端末操作データ91は、加速度データ96、角速度データ95、または方位データ97のように、端末装置7自体の動きに応じて値が変化するデータを含むことが好ましい。
【0155】
また、本実施形態においては、端末操作データ91の他、カメラ画像データおよび/またはマイク音データが端末装置7からゲーム装置3へ送信されてもよい。カメラ画像データは、端末装置7のカメラ56によって撮像された画像(カメラ画像)を表すデータである。マイク音データは、端末装置7のマイク69によって検出された音声(マイク音)を表すデータである。なお、これらカメラ画像データおよびマイク音データは、コーデックLSI66によって圧縮されてゲーム装置3へ送信され、ゲーム装置3においてコーデックLSI27によって伸張されてメインメモリに記憶されてもよい。
【0156】
また、本実施形態ではコントローラ5が操作装置として用いられないので図示しないが、メインメモリには、コントローラ5に対するプレイヤの操作を表すコントローラ操作データが記憶されてもよい。
【0157】
処理用データ98は、後述するゲーム処理(図16)において用いられるデータである。処理用データ98は、端末姿勢データ99、面姿勢データ100、面座標データ101、空間座標データ102、図形データ103、および、端末カメラデータ105を含む。なお、図15に示すデータの他、処理用データ98は、ゲームに登場する各種オブジェクトに設定される各種パラメータを表すデータ等、ゲーム処理において用いられる各種データを含む。
【0158】
端末姿勢データ99は、端末装置7の姿勢を表すデータである。端末装置7の姿勢は、例えば、所定の基準姿勢から現在の端末装置7の姿勢への回転を表す回転行列によって表現されてもよいし、3次のベクトルまたは3つの角度によって表現されてもよい。また、本実施形態においては、端末装置7の姿勢として3次元空間における姿勢が用いられるが、他の実施形態においては、2次元平面における姿勢が用いられてもよい。本実施形態では、端末姿勢データ99は、上記端末操作データ91に含まれる角速度データ95および加速度データ96に基づいて算出される。端末姿勢データ99の算出方法についてはステップS11で後述する。
【0159】
面姿勢データ100は、仮想空間に設定される面81の姿勢を表すデータである。面姿勢データ100が表す面81の姿勢は、回転行列によって表現されてもよいし、3次のベクトルまたは3つの角度によって表現されてもよいし、平面の式によって表現されてもよい。なお、本実施形態においては、面81の位置は予め定められた位置に固定される。
【0160】
面座標データ101は、上記指定位置の面座標を表すデータである。ここで、面座標とは、面81を基準とした座標系(面座標系)によって上記指定位置を表現する座標である。なお、指定位置は面81上の点であるので、面座標データ101は2次元の座標値を表すものであってもよい。面81上の指定位置は、タッチパネル52上のタッチ位置に対応し、面座標データ101は、タッチ位置データ94に基づいて算出される。
【0161】
空間座標データ102は、上記指定位置の空間座標を表すデータである。ここで、空間座標とは、仮想空間を基準とした座標系(空間座標系)によって上記指定位置を表現した座標である。空間座標データ102は、指定位置を3次元の座標値によって表す。空間座標データ102は、面姿勢データ100と上記面座標データ101とに基づいて算出される。
【0162】
図形データ103は、指定位置によって形成される図形を表すデータである。図形データ103には、1以上の軌跡データ104が含まれる。軌跡データ104は、算出された指定位置の軌跡を表すデータである。具体的には、軌跡データ104は、タッチパネル52に対して連続して入力が行われる場合(すなわち、タッチ位置が連続して検出される場合)、タッチ位置に対応する指定位置を古いものから順に表す。軌跡データ104は、指定位置を上記空間座標系で表現した座標値を表す。また、本実施形態においては、あるタッチ入力が終了してから新たに次のタッチ入力が行われる場合、当該あるタッチ入力に応じて生成された軌跡データ104とは別に、当該次のタッチ入力に応じて新たな軌跡データ104が生成されてメインメモリに記憶される。
【0163】
端末カメラデータ105は、端末用画像を生成するために用いられる仮想カメラ(端末用仮想カメラ)の位置および姿勢を表すデータである。本実施形態においては、端末用仮想カメラの位置および姿勢は、面81の位置に基づいて設定される。
【0164】
上記各データ99〜104の他、メインメモリには、ゲーム処理において必要となる各種のデータが記憶される。本実施形態においては、例えば、つかみ状態であるか否かを表すフラグデータが記憶される。つかみ状態とは、上記アイコン82がタッチされている状態であり、上記指定位置の軌跡によって形成される図形を移動可能な状態である。
【0165】
次に、ゲーム装置3において実行されるゲーム処理の詳細を、図16〜図20を用いて説明する。図16は、ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図16に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、ゲーム装置3においては、電源投入後にゲームプログラムがすぐに実行される構成であってもよいし、電源投入後にまず所定のメニュー画面を表示する内蔵プログラムが実行され、その後例えばプレイヤによるメニュー画面に対する選択操作によってゲームの開始が指示されたことに応じてゲームプログラムが実行される構成であってもよい。
【0166】
なお、図16、図17、図20、および図21に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判断ステップで利用される閾値も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、上記フローチャートの各ステップの処理をCPU10が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、CPU10以外のプロセッサや専用回路が実行するようにしてもよい。
【0167】
まずステップS1において、CPU10は初期処理を実行する。初期処理は、仮想空間を構築し、仮想空間に登場する各オブジェクトを初期位置に配置したり、ゲーム処理で用いる各種パラメータの初期値を設定したりする処理である。なお、本実施形態においては、面81が所定の位置および所定の姿勢で仮想空間内に配置される。面81の初期位置および初期姿勢を表すデータはメインメモリに記憶される。また、テレビ用画像を生成するために用いられる仮想カメラ(テレビ用仮想カメラ)、および、端末用画像を生成するために用いられる仮想カメラ(端末用仮想カメラ)が、所定の初期位置および初期姿勢で設定される。テレビ用仮想カメラの初期位置および初期姿勢を表すデータはメインメモリに記憶され、端末用仮想カメラの初期位置および初期姿勢を表すデータは、端末用カメラデータ105としてメインメモリに記憶される。なお、テレビ用仮想カメラは、面81が視野範囲に含まれるような、予め定められた位置および姿勢に設定される。端末用仮想カメラの初期位置および初期姿勢は、視線方向が面81に垂直となり、かつ、面81がLCD51の表示画面と一致するように設定される。また、ステップS1では、つかみ状態でないことを表すデータが上記フラグデータとしてメインメモリに記憶される。ステップS1の次にステップS2の処理が実行される。以降、ステップS2〜S8の一連の処理からなる処理ループが所定時間(1フレーム時間。例えば1/60秒)に1回の割合で繰り返し実行される。
【0168】
ステップS2において、CPU10は、端末装置7から送信されてくる端末操作データを取得する。端末装置7は、端末操作データをゲーム装置3へ繰り返し送信するので、ゲーム装置3は端末操作データを逐次受信する。ゲーム装置3においては、端末通信モジュール28が端末操作データを逐次受信し、入出力プロセッサ11aが端末操作データをメインメモリに逐次記憶する。ステップS2においては、CPU10は、最新の端末操作データ91をメインメモリから読み出す。ステップS2の次にステップS3の処理が実行される。
【0169】
ステップS3において、CPU10はゲーム制御処理を実行する。ゲーム制御処理は、プレイヤによる操作に従って、点や線を表すオブジェクトを仮想空間内に生成したり、当該オブジェクトを移動させる処理等を実行する処理である。以下、図17を参照して、ゲーム制御処理の詳細について説明する。
【0170】
図17は、図16に示すゲーム制御処理(ステップS3)の詳細な流れを示すフローチャートである。ゲーム制御処理においてはまずステップS11において、CPU10は端末装置7の姿勢を算出する。端末装置7の姿勢は、端末操作データが表す、姿勢を算出するための物理量に基づいて算出される。なお、本実施形態においては、姿勢を算出するための物理量として、角速度データ95が表す角速度と、加速度データ96が表す加速度が用いられる。以下、姿勢算出処理の詳細について説明する。
【0171】
姿勢算出処理においては、まず、CPU10は、角速度データ95に基づいて端末装置7の姿勢を算出する。角速度に基づく姿勢を算出する方法はどのような方法であってもよいが、当該姿勢は、前回の姿勢(前回の処理ループにおけるステップS11で算出された姿勢)と、今回の角速度(今回の処理ループにおけるステップS2で取得された角速度)とを用いて算出される。具体的には、CPU10は、前回の姿勢を今回の角速度で単位時間分だけ回転させることによって姿勢を算出する。なお、前回の姿勢は、メインメモリに記憶されている端末姿勢データ99により表され、今回の角速度は、メインメモリに記憶されている角速度データ95により表される。したがって、CPU10は、端末姿勢データ99および角速度データ95をメインメモリから読み出して、端末装置7の姿勢を算出する。以上のようにして算出された姿勢を表すデータはメインメモリに記憶される。
【0172】
なお、角速度から姿勢を算出する場合、初期姿勢を定めておくのがよい。つまり、端末装置7の姿勢を角速度から算出する場合には、CPU10は、最初に端末装置7の初期姿勢を設定しておく。端末装置7の初期姿勢は、加速度データ96に基づいて算出されてもよいし、端末装置7を特定の姿勢にした状態でプレイヤに所定の操作を行わせることで、所定の操作が行われた時点における特定の姿勢を初期姿勢として設定するようにしてもよい。なお、空間における所定方向を基準とした絶対的な姿勢として端末装置7の姿勢を算出する場合には上記初期姿勢を算出することが良いが、例えばゲーム開始時点における端末装置7の姿勢を基準とした相対的な姿勢として端末装置7の姿勢を算出する場合には、上記初期姿勢は算出されなくても良い。
【0173】
角速度に基づいて姿勢を算出すると次に、CPU10は、算出された姿勢を、端末装置7の加速度に基づいて補正する。ここで、端末装置7がほぼ静止している状態では、端末装置7に対して加えられる加速度は重力加速度に相当する。つまり、この状態では、加速度データ96が表す加速度ベクトルは、端末装置7における重力方向を表す。したがって、CPU10は、角速度に基づいて算出された姿勢の下方向(重力方向)を、加速度ベクトルの表す重力方向へ近づける補正を行う。すなわち、上記下方向が加速度ベクトルの表す重力方向へ所定の割合で近づくように、上記姿勢を回転させる。これによって、角速度に基づく姿勢を、加速度に基づく重力方向を考慮した姿勢となるように補正することができる。なお、上記所定の割合は、予め定められた固定値であってもよいし、検出される加速度等に応じて設定されてもよい。例えば、CPU10は、検出される加速度の大きさが重力加速度の大きさに近い場合には、上記姿勢の下方向を加速度ベクトルの表す重力方向へ近づける割合を大きくし、検出される加速度の大きさが重力加速度の大きさから離れている場合には、当該割合を小さくするようにしてもよい。
【0174】
具体的には、CPU10は、角速度に基づいて算出された姿勢を表すデータと、加速度データ96とをメインメモリから読み出し、上記の補正を行う。そして、補正が行われた後の姿勢を表すデータを端末姿勢データ99としてメインメモリに記憶する。以上のステップS11の次にステップS12の処理が実行される。
【0175】
また、本実施形態においては、CPU10は、慣性センサ(加速度センサ63およびジャイロセンサ64)の検出結果に基づいて端末装置7の姿勢を算出した。ここで、他の実施形態においては、端末装置7の姿勢の算出方法はどのような方法であってもよい。例えば、他の実施形態においては、端末装置7が他のセンサ部(例えば磁気センサ62やカメラ56)を有している場合には、当該他のセンサ部の検出結果を用いてコントローラ5の姿勢が算出されてもよい。すなわち、CPU10は、磁気センサ62によって検出される方位データ97から、端末装置7を基準とした所定の方位(すなわち、所定の方位を基準とした端末装置7の姿勢)を知ることができる。したがって、他の実施形態においては、CPU10は、角速度データ95および加速度データ96に加えて、上記方位データ97をさらに用いて端末装置7の姿勢を算出してもよい。方位データ97を用いて端末装置7の姿勢を算出する場合には、実空間における所定方向を基準とした絶対的な姿勢を算出することができるので、端末装置7の姿勢をより正確に算出することができる。なお、方位データ97に関して、地磁気以外の磁界が発生している場所においては、方位データは厳密には絶対的な方位(北等)を示さないことになるが、その場所における磁界の方向に対する端末装置7の相対的な方向が示されるので、そのような場合であっても端末装置7の姿勢を算出することが可能である。また、他の実施形態においては、上記3つのデータのうち1つまたは2つに基づいて姿勢を算出するようにしてもよい。また、例えば、ゲームシステム1が端末装置7を撮像するカメラを備えている場合には、ゲーム装置3は当該カメラで端末装置7を撮像した撮像結果を取得し、撮像結果を用いて端末装置7の姿勢を算出するようにしてもよい。
【0176】
ステップS12において、CPU10は、端末装置7の姿勢に応じて姿勢が変化するように面81を設定する。本実施形態においては、面81の位置は変化しないので、CPU10は、端末装置7の姿勢に基づいて面81の姿勢を算出する。本実施形態では、仮想空間における面81の姿勢は、現実空間における端末装置7の姿勢に対応するように制御される。具体的には、端末装置7のy軸(図9参照)が水平でかつテレビ2の方を向くときの端末装置7の姿勢を基準姿勢とし、端末装置7が当該基準姿勢となる場合に面81は仮想空間において水平となる。そして、端末装置7の姿勢が上記基準姿勢から変化した場合、面81は、当該基準姿勢時における面81の姿勢から、端末装置7の姿勢の変化方向に応じた方向に、変化量に応じた量だけ(本実施形態では、端末装置7の回転量と面81の回転量が等しくなるように)回転される。なお、面81の姿勢は、端末装置7の姿勢の変化に応じて変化するように制御されればどのように制御されてもよい。
【0177】
ステップS12の具体的な処理としては、CPU10は、端末姿勢データ99をメインメモリから読み出し、端末装置7の姿勢に基づいて面81の姿勢を算出する。算出された面81の姿勢を表すデータは、面姿勢データ100としてメインメモリに記憶される。なお、本実施形態においては、面81の姿勢は、例えば、面81を基準とした3次元の面座標系における3軸の方向を空間座標系によって表す3つのベクトルとして表現されてもよい。ステップS12の次にステップS13の処理が実行される。
【0178】
ステップS13において、CPU10は、図形移動処理を実行する。図形移動処理は、プレイヤによる入力に応じて設定された指定位置によって形成される図形を、端末装置7の姿勢に応じて移動(回転)させる処理である。図形移動処理の詳細については後述する。ステップS13の次にステップS14の処理が実行される。
【0179】
ステップS14において、CPU10は、タッチパネル52に対してタッチ入力が行われたか否かを判定する。この判定は、ステップS2で読み出されるタッチ位置データ94を参照することで行うことができる。ステップS14の判定結果が肯定である場合、ステップS15の処理が実行される。一方、ステップS14の判定結果が否定である場合、ステップS15〜S20の処理がスキップされ、後述するステップS21の処理が実行される。
【0180】
ステップS15およびステップS16においては、タッチ位置に基づいて上記指定位置が算出される。上述のように、本実施形態においては、タッチ位置によって決められる面81上の位置が指定位置として算出される。図18は、タッチパネル52の入力面上のタッチ位置に基づいて指定位置を算出する方法を説明するための図である。図18に示すように、面81上の指定位置P2は、タッチパネル52の入力面上におけるタッチ位置P1に対応する面81上の位置として算出される。本実施形態では、まず、タッチ位置P1に基づいて指定位置P2の面座標(Ps,Pt)が算出される。面座標(Ps,Pt)は、面81を基準とした面座標系(stu座標系)で表現される座標である。なお、ここでは、面座標系は、面81の横方向を向くs軸と、面81の縦方向を向くt軸と、面81に垂直な方向を向くu軸とで構成される。したがって、面81上の位置はs方向成分およびt方向成分の2次元座標(Ps,Pt)で表現される。なお、面座標系のu軸は、後述する図形移動処理において面81上にない位置を面座標系で表す目的で設定される。面座標(Ps,Pt)は、例えば、タッチ位置P1の座標値を、面81の大きさとタッチパネル52の入力面の大きさとの比率に応じてスケーリングする(所定の定数を乗算する)ことによって算出される。なお、上記比率が“1”となるように面座標系および空間座標系を設定する場合には、タッチ位置P1の座標値をそのまま面座標(Ps,Pt)として用いることができる。
【0181】
指定位置P2の面座標(Ps,Pt)が算出されると、次に、面座標(Ps,Pt)が空間座標(PS,PT,PU)に変換される。空間座標(PS,PT,PU)は、指定位置P2を空間座標系(STU座標系)で表現した座標値である。なお、空間座標系における面座標系の原点の位置および各軸の向きは、面81の位置および姿勢によって決まる。したがって、面81の位置(下記(DS,DT,DU))および姿勢(下記ベクトルAおよびベクトルB)と、面座標(Ps,Pt)とに基づいて、空間座標(PS,PT,PU)を算出することができる。具体的には、空間座標(PS,PT,PU)は、以下の式(1)に従って算出することができる。
PS=Ps×AS+Pt×AS+DS
PT=Ps×AT+Pt×AT+DT
PU=Ps×AU+Pt×AU+DU …(1)
上式(1)においては、面座標系におけるs軸の正方向を向く単位ベクトルAの各成分を(AS,AT,AU)とし、面座標系におけるt軸の正方向を向く単位ベクトルBの各成分を(BS,BT,BU)とする。また、面座標系における原点の(空間座標系における)位置を(DS,DT,DU)とする。
【0182】
具体的には、まずステップS15において、CPU10は、タッチ位置に対応する指定位置の面座標を算出する。上述のように、面座標は、タッチパネル52の入力面上におけるタッチ位置P1に対応する面81上の位置P2として算出される。面座標の具体的な算出方法はどのような方法であってもよいが、面座標は、タッチパネル52の入力面の四辺に対するタッチ位置P1の位置関係と、面81の四辺に対する指定位置P2の位置関係とが同じになるように算出される。具体的に本実施形態では、上述のように、面座標は、タッチ位置P1の座標値を上記の比率に応じてスケーリングすることによって算出される。ステップS15の具体的な処理としては、CPU10は、ステップS2で読み出されたタッチ位置データ94が表すタッチ位置から、タッチ位置に対応する面81上の位置を面座標系によって表現する2次元座標を算出する。そして、算出された2次元座標を表すデータを面座標データ101としてメインメモリに記憶する。ステップS15の次にステップS16の処理が実行される。
【0183】
ステップS16において、CPU10は、上記面座標から指定位置の空間座標を算出する。上述のように、空間座標は、面座標と、面81の位置および姿勢(すなわち、空間座標系における面座標系の原点位置および各座標軸の向き)とに基づいて算出することができる。すなわち、CPU10は、面姿勢データ100と面座標データ101とをメインメモリから読み出し、面座標と面81の位置および姿勢を上式(1)に代入することによって空間座標を算出する。算出された空間座標を表すデータは、空間座標データ102としてメインメモリに記憶される。ステップS16の次にステップS17の処理が実行される。
【0184】
上記ステップS15およびS16によれば、CPU10は、仮想空間内の指定位置として、タッチパネル52(LCD51)の表示画面上においてタッチ位置に対応する(仮想空間内の)位置を算出する。つまり、表示画面上においては、プレイヤがタッチした位置が指定位置となるので、プレイヤは、直感的かつ分かりやすい操作で指定位置を指定することができる。
【0185】
ステップS17において、CPU10は、タッチ入力が開始されたか否か(タッチ入力が開始された直後であるか否か)を判定する。具体的には、CPU10は、前回の処理ループ(ステップS2〜S8の一連の処理からなる処理ループ)においてタッチ入力があったか否かを判定する。なお、タッチパネル52の誤検出やプレイヤの誤操作を考慮して、CPU10は、前回のタッチ入力だけでなく、過去所定回数に連続してタッチ入力があったかどうかを判定するようにしてもよい。ステップS17の判定結果が肯定である場合、ステップS18の処理が実行される。一方、ステップS17の判定結果が否定である場合、ステップS19の処理が実行される。
【0186】
ステップS18において、CPU10は、ステップS15およびS16で算出された指定位置を、新たな軌跡の始点として記憶する。具体的には、CPU10は、メインメモリに記憶されている空間座標データ102を、新たな軌跡データ104としてメインメモリに記憶する。これによって、図形データ103に含まれる軌跡データ104が1つ追加されたことになる。つまり、図形を構成する軌跡が1つ追加されたことになる。ステップS18の次にステップS20の処理が実行される。
【0187】
ステップS19において、CPU10は、ステップS15およびS16で算出された指定位置を、既存の軌跡の終点として記憶する。具体的には、CPU10は、図形データ103に含まれる軌跡データ104のうちで最新のものについて、空間座標データ102を当該軌跡データ104に追加するように更新する。これによって、上記指定位置が最新の軌跡の終点に追加されたことになる。ステップS19の次にステップS20の処理が実行される。
【0188】
ステップS20において、CPU10は、ステップS15およびS16で算出された指定位置に所定のオブジェクトを配置する。ここで、所定のオブジェクトは、どのような形状であってもよいが、本実施形態では、指定位置の軌跡を表すオブジェクトが配置される。すなわち、CPU10は、1つの軌跡データ104に含まれる1以上の指定位置が1本の線を形成するように、オブジェクトを配置する。具体的には、1回のステップS20の処理においては、最新の指定位置と1つ前の指定位置とを結ぶ線状のオブジェクトが配置される。この線状のオブジェクトは、例えば、どの方向から見ても線状に見えるように、円柱形のオブジェクトであってもよい。また、最新の指定位置が軌跡の始点である場合には、点を表すオブジェクト(例えば球状のオブジェクト)が配置される。なお、本実施形態においては、ステップS20で配置されたオブジェクトは、以降の処理においても配置され続けるが、他の実施形態においては、例えばプレイヤの指示に従って消去されてもよい。また、上記ステップS20で配置されたオブジェクトは、プレイヤによって所定の操作が行われたことに応じて、所定方向に順次(自動的に)移動されてもよい。これによれば、プレイヤは、例えば、仮想空間内の一点を指定するだけで直線を描いたり、オブジェクトの移動方向と垂直な方向にタッチ位置を往復させることによって波線を描いたりすることができ、より多彩な線を容易に描くことができる。ステップS20の次にステップS21の処理が実行される。
【0189】
ステップS21において、CPU10は、面81の姿勢に応じて端末用仮想カメラを制御する。図19は、面81と端末用仮想カメラ85との位置関係を示す図である。なお、図19は、面81と平行な方向から面81を見た図である。図19に示すように、面81の姿勢が変化した場合、面81の姿勢に応じて端末用仮想カメラ85の位置および姿勢が変化する。具体的には、端末用仮想カメラ85は、面81が視野範囲に含まれるように設定される。本実施形態においては、面81の外周と端末用仮想カメラ85の視野範囲の外縁とが一致するように端末用仮想カメラ85が設定される。したがって、端末用仮想カメラ85の位置は、面81の中心位置P3を通りかつ面81に垂直な直線上であって、面81からの距離が視野範囲に応じた所定距離となる位置に設定される。また、端末用仮想カメラ85の姿勢は、面81の中心位置P3を向くように設定される。以上のように端末用仮想カメラ85が設定されることによって、端末装置7のLCD51には、タッチパネル52の入力面と面81とが画面上において一致するように面81が表示されることになる(図12等参照)。これによれば、指定位置は、プレイヤがタッチした画面上の位置となり、当該位置に点や線を表すオブジェクトが生成されて表示されるので、タッチパネル52の操作を直感的でわかりやすい操作にすることができる。
【0190】
ステップS21の具体的な処理としては、CPU10は、メインメモリから面姿勢データ100を読み出し、面81の位置および姿勢に基づいて端末用仮想カメラ85の位置および姿勢を算出する。そして、算出された位置および姿勢を表すデータを端末カメラデータ105としてメインメモリに記憶する。ステップS21の後、CPU10はゲーム制御処理を終了する。
【0191】
次に、上記図形移動処理の詳細について説明する。図20は、図17に示す図形移動処理(ステップS13)の詳細な流れを示すフローチャートである。図形移動処理においてはまずステップS31において、CPU10は、現在の状態がつかみ状態であるか否かを判定する。この判定は、メインメモリに記憶される上記フラグデータを読み出し、フラグデータを参照することによって行うことができる。ステップS31の判定結果が肯定である(つかみ状態である)場合、後述するステップS35の処理が実行される。一方、ステップS31の判定結果が否定である(つかみ状態でない)場合、ステップS32の処理が実行される。
【0192】
ステップS32において、CPU10は、つかみ状態が開始されたか否かを判定する。ここで、つかみ状態が開始される場合とは、前回の処理ループ(ステップS2〜S8の処理ループ)においてアイコン82に対するタッチ入力がなく、かつ、今回の処理ループにおいてアイコン82に対するタッチ入力がある場合である。具体的には、CPU10は、上記フラグデータをメインメモリから読み出し、フラグデータがつかみ状態でないことを表し、かつ、ステップS2で読み出されたタッチ位置データ94がアイコン82の位置を表す場合、つかみ状態が開始されたと判定する。一方、上記フラグデータがつかみ状態であることを表すか、または、ステップS2で読み出されたタッチ位置データ94がアイコン82以外の位置を表す場合、つかみ状態が開始された時点ではないと判定する。ステップS32の判定結果が肯定である場合、ステップS33の処理が実行される。一方、ステップS32の判定結果が否定である場合、CPU10は図形移動処理を終了する。
【0193】
ステップS33において、CPU10は、指定位置で形成される図形を保存する。なお、本実施形態では、CPU10は、図形を構成する各指定位置を面座標系による座標値で保存する。すなわち、CPU10は、メインメモリから図形データ104と面姿勢データ100とを読み出し、図形データ104が表す1以上の指定位置の空間座標を面座標に変換する。この変換は、面姿勢データ100が表す面81の姿勢を用いて行われる。CPU10は、変換された面座標を表すデータをメインメモリに記憶する。なお、このデータは、図形データ103に含まれる軌跡データ104と同様、各指定位置を軌跡毎にまとめた形式で記憶される。ステップS33の次にステップS34の処理が実行される。
【0194】
ステップS34において、CPU10は、上記フラグデータをつかみ状態を表すように設定する。すなわち、CPU10は、メインメモリに記憶されるフラグデータを、つかみ状態であることを表すように更新する。これによって、これ以降、アイコン82に対するタッチ入力がなくなるまで、ステップS31の判定処理ではつかみ状態であると判定されることになる。ステップS34の次に、後述するステップS37の処理が実行される。
【0195】
一方、ステップS35において、CPU10は、つかみ状態が終了したか否かを判定する。すなわち、CPU10は、ステップS2で読み出されたタッチ位置データ94がアイコン82以外の位置を表すか、または、タッチ入力がないことを表す場合、つかみ状態が終了したと判定する。一方、上記タッチ位置データ94がアイコン82の位置を表す場合、つかみ状態が終了していない(継続している)と判定する。ステップS35の判定結果が肯定である場合、ステップS36の処理が実行される。一方、ステップS35の判定結果が否定である場合、ステップS36の処理がスキップされてステップS37の処理が実行される。
【0196】
ステップS36において、CPU10は、上記フラグデータをつかみ状態を解除するように設定する。すなわち、CPU10は、メインメモリに記憶されるフラグデータを、つかみ状態でないことを表すように更新する。これによって、これ以降の処理においては、ステップS31の判定処理ではつかみ状態でないと判定されることになる。ステップS36の次にステップS37の処理が実行される。
【0197】
ステップS37において、CPU10は、指定位置で形成される図形を移動する。本実施形態では、図形は、操作装置7の姿勢の変化に応じて(すなわち、面81の姿勢の変化に応じて)回転する。なお、ここでは、図形の回転中心は、面81と同様、面81の中心位置である。ここで、上述のように、現在(回転後)の指定位置の空間座標は、指定位置の面座標と、現在の面81の姿勢とに基づいて算出することができる。したがって、CPU10は、ステップS33で保存された面座標を表すデータと、面姿勢データ100とをメインメモリから読み出し、当該面座標を、面81の姿勢を用いて空間座標に変換する。これによって、面81の姿勢に応じて回転された図形を形成する指定位置の空間座標を算出することができる。CPU10は、算出された1以上の空間座標を表すデータを、新たな図形データ103としてメインメモリに記憶する。ステップS37の後、CPU10は図形移動処理を終了する。
【0198】
上記図形移動処理によれば、CPU10は、端末装置7に対する操作に基づいて上記図形を表すオブジェクトを移動(回転)させる(ステップS37)。したがって、プレイヤは、描いた図形をいろいろな位置または方向から見ることができ、描いた図形の形状を容易に確認することができる。本実施形態では、図形が3次元的な形状であるので、図形をいろいろな位置または方向から見ることが特に有効である。
【0199】
また、本実施形態においては、CPU10は、端末装置7に対する操作に関して所定の条件(具体的には、アイコン82を指定する操作が行われたこと)が満たされる場合(ステップS31でYesまたはステップS32でYes)、上記図形のオブジェクトを端末装置7の姿勢に基づいて移動させる(ステップS37)。一方、上記所定の条件が満たされない場合(ステップS32でNo)、CPU10は、端末装置7の姿勢に基づく上記オブジェクトの移動を行わない。上記によれば、プレイヤは、端末装置7の姿勢を変化させるという直感的で容易な操作によって図形の向きを変化させることができる。さらに、上記によれば、プレイヤは、面81の姿勢を変化させる操作と同じ操作によって図形の向きを変化させることができるので、操作性をより向上することができる。
【0200】
また、本実施形態においては、図形移動処理において図形を移動するために、CPU10は、図形を構成する各指定位置の面座標を記憶するようにした。すなわち、ステップS33の処理においては指定位置の面座標が記憶され、図形を移動させるステップS37の処理においては、当該面座標と、現在の面81の姿勢とを用いて、移動後の指定位置の空間座標が算出された。ここで、他の実施形態においては、CPU10は、ステップS33の処理において、図形を構成する各指定位置の空間座標を記憶するようにしてもよい。このとき、ステップS37の処理においては、CPU10は、前回の処理ループにおける面81の姿勢から今回の処理ループにおける面81の姿勢までの変化に応じて、図形を回転させてもよい。具体的には、面81の姿勢の変化方向と同じ方向に、面81の姿勢の変化量と同じ量だけ図形を移動(回転)させるようにしてもよい。ここで、空間座標を記憶する方法では、ステップS37の処理において面81の変化と図形の変化との間に誤差が生じ、ステップS37の処理が繰り返されることによって誤差が蓄積するおそれがある。そのため、面81の回転に合わせて図形を正確に回転させることができないおそれがある。これに対して、本実施形態によれば、ステップS33で面座標を保存することによって、保存した面座標と現在の面81の姿勢とを用いて移動後の指定位置を算出することができる。これによれば、誤差が蓄積されることがないので、面81の回転に合わせて図形を正確に回転させることができる。
【0201】
また、本実施形態における上記ステップS37の処理においては、仮想空間に配置された図形の全体が移動された。ここで、他の実施形態においては、上記図形の一部のみが移動されてもよい。例えば、CPU10は、プレイヤによって指定された軌跡のみを上記ステップS33で保存し、当該軌跡のみを上記ステップS37で移動させるようにしてもよい。なお、軌跡はどのような方法で指定されてもよいが、例えば、画面上におけるタッチ位置に表示される軌跡が指定されてもよい。
【0202】
図16の説明に戻り、ステップS3のゲーム制御処理の次にステップS4の処理が実行される。ステップS4においては、テレビ用画像が生成される。すなわち、CPU10およびGPU11bは、ステップS3のゲーム制御処理の結果を表すデータ(ゲーム空間における面81やオブジェクトのデータ等)をメインメモリから読み出し、また、ゲーム画像を生成するために必要なデータをVRAM11dから読み出し、テレビ用画像を生成する。本実施形態では、テレビ用仮想カメラは、面81を視野範囲に含む位置に設定される。したがって、面81の位置を含む仮想空間内の領域を表すテレビ用画像が生成される。生成されたテレビ用画像はVRAM11dに記憶される。上記ステップS4の次にステップS5の処理が実行される。
【0203】
また、本実施形態においては、指定位置に所定のオブジェクトが配置される(ステップS20)ことによって、指定位置に対応するテレビ用画像上の位置に当該オブジェクトの画像が生成される。したがって、プレイヤは、タッチパネル52の入力面に対して入力を行った位置を容易に確認することができ、入力面上に描いた図形を容易に確認することができる。また、プレイヤは、入力面に対して点や線を描くことで、仮想空間内に3次元の図形を描くことができる。さらに、本実施形態においては、上記オブジェクトは、入力面に連続して入力される各入力位置(タッチ位置)によって決められる各指定位置の軌跡を表すように生成される(ステップS20)。したがって、当該軌跡を表す画像が生成されてテレビ2に表示される。これによって、プレイヤは、タッチパネル52上で描いた線を容易に確認することができる。また、プレイヤが入力面に対して点で入力を行った場合と線で入力を行った場合とで、表示される画像が異なるので、ゲーム装置は、入力面に対する入力をより正確に反映した画像を表示することができる。
【0204】
なお、本実施形態においては、プレイヤが面81の姿勢(端末装置7の姿勢)を確認しやすくするべく、面81が表示される。さらに、プレイヤが面81と図形との奥行き関係を把握しやすくするべく、面81は半透明のオブジェクトとして生成される。ただし、他の実施形態においては、面81は表示されなくてもよい(透明であるとして取り扱われてもよい)し、不透明のオブジェクトとして生成されてもよい。
【0205】
ステップS5においては、端末用画像が上記ゲーム制御処理に基づいて生成される。すなわち、CPU10およびGPU11bは、ステップS3のゲーム制御処理の結果を表すデータをメインメモリから読み出し、また、ゲーム画像を生成するために必要なデータをVRAM11dから読み出し、端末用画像を生成する。本実施形態では、仮想空間において面81が設定される領域を表す画像が端末用画像として生成される。具体的には、タッチパネル52の入力面と面81とがLCD51の画面上で一致するように端末用画像が生成される。これによって、面81の画像が端末装置7に表示される(図12等参照)。生成された端末用画像はVRAM11dに記憶される。なお、テレビ用画像と同様に、端末用画像には、ステップS20で配置されたオブジェクトの画像が含まれる。したがって、プレイヤは、端末装置7の画面を見ることによっても、入力面上に描いた図形を確認することができる。また、端末用画像においては、面81は表示されなくてもよいし、半透明あるいは不透明のオブジェクトとして生成されてもよい。上記ステップS5の次にステップS6の処理が実行される。
【0206】
なお、本実施形態においては、テレビ用画像(および端末用画像)において、指定位置を表す画像を生成するために、仮想空間において指定位置にオブジェクトを配置することとした。ここで、指定位置を表す画像はどのような方法で生成されてもよい。例えば、他の実施形態においては、ゲーム装置3は、指定位置に対応するテレビ用画像(および端末用画像)上の位置を算出し、当該位置に所定の画像を配置することによって、指定位置を表す画像を生成してもよい。
【0207】
上記ステップS4およびS5の処理によれば、CPU10は、面81の姿勢と独立して視線方向が設定されるテレビ用仮想カメラを用いてテレビ用画像を生成し、面81との位置関係が一定となるように(より具体的には、面81に対して視線方向が略垂直となるように)設定される端末用仮想カメラを用いて端末用画像を生成する。したがって、プレイヤが端末装置7の姿勢を変化させた場合、テレビ2に表示される画像においては視線方向が変化しない一方、端末装置7に表示される画像においては当該姿勢に応じて視線方向が変化することになる(図11〜図14等)。これによれば、端末装置7においては面81の姿勢が一定として表示されるので、面81上の位置を指定する操作が容易になる。また、テレビ2においては面81の姿勢が変化して表示されるので、仮想空間内における面81の姿勢を容易に把握することができる。すなわち、本実施形態によれば、プレイヤは、端末装置7を用いて面81上の位置を指定する操作を容易に行うことができるとともに、テレビ2の画面を見ることによって面81の姿勢を容易に確認することができるので、3次元の仮想空間内の位置を容易に指定することができる。
【0208】
ステップS6において、CPU10は、テレビ2へゲーム画像を出力する。具体的には、CPU10は、VRAM11dに記憶されたテレビ用画像のデータをAV−IC15へ送る。これに応じて、AV−IC15はテレビ用画像のデータを、AVコネクタ16を介してテレビ2へ出力する。これによって、テレビ用画像がテレビ2に表示される。また、ステップS6においては、ゲーム画像のデータと共にゲーム音声のデータがテレビ2へ出力され、テレビ2のスピーカ2aからゲーム音声が出力されてもよい。ステップS6の次にステップS7の処理が実行される。
【0209】
ステップS7において、CPU10は、端末装置7へゲーム画像を出力(送信)する。具体的には、VRAM11dに記憶された端末用画像の画像データは、CPU10によってコーデックLSI27に送られ、コーデックLSI27によって所定の圧縮処理が行われる。圧縮処理が施された画像のデータは、端末通信モジュール28によってアンテナ29を介して端末装置7へ送信される。端末装置7は、ゲーム装置3から送信されてくる画像のデータを無線モジュール70によって受信し、受信された画像データに対してコーデックLSI66によって所定の伸張処理が行われる。伸張処理が行われた画像データはLCD51に出力される。これによって、端末用画像がLCD51に表示される。また、ステップS7においては、ゲーム画像のデータと共にゲーム音声のデータが端末装置7へ送信され、端末装置7のスピーカ67からゲーム音声が出力されてもよい。ステップS7の次にステップS8の処理が実行される。
【0210】
ステップS8において、CPU10は、ゲームを終了するか否かを判定する。ステップS8の判定は、例えば、ユーザがゲームを中止する指示を行ったか否か等によって行われる。ステップS8の判定結果が否定の場合、ステップS2の処理が再度実行される。一方、ステップS8の判定結果が肯定の場合、CPU10は図16に示すゲーム処理を終了する。なお、ゲーム処理を終了する際には、ゲームデータをメモリカード等にセーブする等の処理が実行されてもよい。以降、ステップS2〜S8の一連の処理は、ステップS8でゲームを終了すると判定されるまで繰り返し実行される。
【0211】
以上のように、上記ゲーム処理によれば、端末装置7のタッチパネル52に対する入力によって、仮想空間内の面81上の位置を指定される(ステップS16)とともに、端末装置7の姿勢に応じて面81の姿勢が変化する(ステップS12)。これによれば、プレイヤは、面81の姿勢を変化させつつ、タッチパネル52を用いて位置を指定することで、3次元の仮想空間における位置を指定することができる。このように、本実施形態によれば、タッチパネル52という平面的な入力面を有する入力装置を用いて、3次元空間における位置を容易に入力することができる。これによれば、例えば上記実施形態のように、プレイヤは、タッチパネル52に対して点や線の入力を行うとともに、端末装置7の姿勢を適宜変化させることで、仮想空間において3次元的な絵を描くことも可能となる。
【0212】
[7.変形例]
上記実施形態は本発明を実施する一例であり、他の実施形態においては例えば以下に説明する構成で本発明を実施することも可能である。
【0213】
(面の移動に関する変形例)
上記実施形態においては、端末装置7の姿勢に応じて面81の姿勢が変化したが、他の実施形態においては、他の方法で面81を移動させてもよい。以下、図21〜図24を参照して、面81の移動方法に関する変形例について説明する。
【0214】
図21は、上記実施形態の変形例におけるゲーム制御処理の流れを示すフローチャートである。なお、図21においては、図17に示す処理と同じ処理については同じステップ番号を付し、詳細な説明を省略する。
【0215】
本変形例においては、ステップS11の次にステップS41の処理が実行される。ステップS41において、CPU10は、端末装置7の姿勢に応じて面81の位置および姿勢を算出する。すなわち、CPU10は、端末装置7の姿勢に対応するように面81の姿勢を制御するとともに、端末装置7の姿勢に応じて面81の位置を制御する。ここで、面81の姿勢は、上記実施形態と同様、端末装置7の姿勢に基づいて制御される。また、面81の位置は、面81外の位置を回転の中心として面81が回転移動するように、面81の姿勢に応じて制御される。
【0216】
図22は、本変形例における面81の移動を示す図である。図22において、点Pcは、面81の回転の中心点であり、ゲーム空間に固定的に設定される。なお、図22においては、点Pcは、面81に関して端末用仮想カメラ85と同じ側に設定されている。端末装置7の姿勢が変化する場合、面81は、図22に示すように、姿勢の変化とともに、基準点Pcを中心に回転するように位置が変化する。具体的には、面81の位置は、基準点Pcから面81への垂線の長さが予め定められた所定値となるように(つまり、基準点Pcからの距離が一定となるように)算出される。このように、本変形例では、点Pcを中心とした球面上を回転移動するように面81の位置および姿勢が変化する(図22参照)。したがって、プレイヤは、端末装置7の姿勢を変化させつつタッチパネル52に対して入力を行うことで、球の内側面に対して絵を描いているような感覚を得ることができる。
【0217】
ステップS41の具体的な処理としては、CPU10は、まず、上記ステップS12と同様の方法によって面81の姿勢を算出する。次に、CPU10は、算出された姿勢と、上記基準点Pcの位置とに基づいて、上記垂線の長さが予め定められた所定値となるように面81の位置を算出する。例えば、基準点Pcの座標を(ES,ET,EU)とし、基準点Pcから面81までの距離をkとすると、面81の位置Pd(DS,DT,DU)は次の式(2)に従って算出される。
DS=−k×CS+ES
DT=−k×CT+ET
DU=−k×CU+EU …(2)
上式(2)においては、変数面座標系におけるu軸の正方向を向く単位ベクトルC(図22参照)の各成分を(CS,CT,CU)としている。算出された面81の位置および姿勢を表すデータは、メインメモリに記憶される。ステップS41の次にステップS42の処理が実行される。
【0218】
なお、本変形例においては、上記基準点Pcが面81に関して端末用仮想カメラ85と同じ側に設定されているものとしたが、基準点の位置はどこであってもよい。図23および図24は、他の実施形態における面81の移動を示す図である。他の実施形態においては、図23に示すように、基準点Pcは、面81に関して端末用仮想カメラ85と反対側に設定されてもよい。これによれば、プレイヤは、端末装置7の姿勢を変化させつつタッチパネル52に対して入力を行うことで、球の外側面に対して絵を描いているような感覚を得ることができる。なお、図23に示す場合においては、基準点Pcから面81の位置Pdまでの向きと、ベクトルCの向きとが同じであるので、上式(2)における“−k”を“k”に変更することで、面81の位置Pdを算出することができる。また、k=0の場合には、上記実施形態のように、面81は位置Pd(基準点Pc)を中心に回転する(図19参照)。
【0219】
また、他の実施形態においては、図24に示すように、所定の回転方向(図24では、上下方向を軸とした回転方向)に関しては面81が基準点Pcを中心として回転移動を行い、他の方向に関しては面81が平行移動を行うようにしてもよい。これによれば、プレイヤは、円柱の内側側面に対して絵を描いているような感覚を得ることができる。なお、図24における面81の平行移動は、端末装置7の姿勢の変化に応じて行われてもよいし、後述するステップS42における方向入力操作に応じて行われてもよい。
【0220】
ステップS42において、CPU10は、端末装置7に対する方向入力操作に基づいて面81を移動させる。上記方向入力操作は、どのような方法で行われてもよいが、例えば、アナログスティック53や十字ボタン54Aに対する入力操作であってもよい。具体的には、面81は、上下左右前後の方向入力操作に応じて、面81の上下左右前後の方向に移動するように制御される。すなわち、CPU10は、ステップS2で取得した端末操作データ91に基づいて、方向入力操作によって指示された方向を判断する。そして、面81の位置および姿勢を表すデータをメインメモリから読み出し、上記指示された方向に応じた方向へ面81を移動させる。メインメモリに記憶される上記データは、移動後の面81の位置を表すように更新される。ステップS42の次にステップS43の処理が実行される。
【0221】
上記ステップS42の処理によれば、端末装置7に対する方向入力操作によって面81を自由に平行移動させることができる。なお、他の実施形態においては、ステップS42においてCPU10は、面81を(平行移動ではなく)回転移動させるようにしてもよい。例えば、CPU10は、図22〜図24に示したように、球面上あるいは円柱の側面上を面81が移動するように面81を制御してもよい。
【0222】
ステップS43において、CPU10は、面81の位置および姿勢に基づいてテレビ用仮想カメラを制御する。テレビ用仮想カメラは、面81が視野範囲に含まれるように位置および姿勢が制御されればどのように制御されてもよい。例えば、テレビ用仮想カメラの位置は、視線方向が面81の方を向き、面81から所定距離となるように制御されてもよい。また、テレビ用仮想カメラの姿勢は変化しない、すなわち、テレビ用仮想カメラは平行移動するように制御されてもよい。これによれば、上記実施形態と同様、プレイヤは、仮想空間における面81の姿勢をテレビ用画像で確認することができる。ステップS43の具体的な処理としては、CPU10は、面81の位置および姿勢を表すデータをメインメモリから読み出し、面81の位置に応じてテレビ用仮想カメラの位置および姿勢を算出する。算出された位置および姿勢を表すテレビ用カメラデータはメインメモリに記憶される。このとき、ステップS4の処理においては、上記テレビ用カメラデータを用いてテレビ用画像が生成される。ステップS43の次にステップS13の処理が実行される。ステップS13の処理以降については、上記実施形態と同様の処理が実行される。
【0223】
なお、他の実施形態においては、テレビ用仮想カメラは、端末装置7に対する方向入力操作に従って制御されてもよい。すなわち、CPU10は、方向入力操作に応じて、テレビ用仮想カメラを平行移動、回転移動、または回転させるようにしてもよい。これによれば、上述した図形移動処理によって図形を回転させる場合と同様、プレイヤはいろいろな向きから図形を見ることができ、図形の形状を容易に確認することができる。
【0224】
(指定位置を用いたゲーム処理に関する変形例)
上記実施形態においては、上記指定位置を入力として用いるゲームとして、3次元仮想空間に絵を描くことができるお絵かきゲームを例として説明した。すなわち、上記実施形態においては、上記指定位置を入力としたゲーム処理の例として、指定位置にオブジェクトを配置する処理(ステップS20)を説明した。ここで、指定位置を入力として実行されるゲーム処理は、どのような処理であってもよく、例えば次のようなゲーム例が考えられる。
【0225】
図25は、見本と同じになるように図形を描くゲームにおいて、テレビ2に表示されるゲーム画像を示す図である。図25に示すように、テレビ2には、面81および見本オブジェクト111が表示される。見本オブジェクト111は、プレイヤが描く図形の見本を表すオブジェクトであり、ゲームプログラムにおいて複数種類の見本オブジェクトが用意される。なお、端末装置7に表示される画像は上記実施形態と同様である。このゲームにおいては、プレイヤは、上記実施形態と同様に端末装置7を用いて、見本オブジェクト111と同じになるように、仮想空間内に線(指定位置の軌跡を表すオブジェクト112)を描く。このとき、CPU10は、見本オブジェクト111と、プレイヤによる入力に応じて生成されるオブジェクト112との類似度を算出したり、当該類似度に基づいて得点を算出したりするゲーム処理を実行してもよい。このように、ゲーム装置3は、入力された指定位置を表す軌跡を入力とするゲーム処理を実行してもよい。
【0226】
図26は、3次元の仮想空間内に配置されたオブジェクト(コイン)115を端末装置に対する操作によって指定するゲームにおいて、テレビ2に表示されるゲーム画像を示す図である。図26に示すように、テレビ2には、面81およびコイン115が表示される。なお、端末装置7に表示される画像は上記実施形態と同様である。このゲームにおいては、プレイヤは、上記実施形態と同様の方法で仮想空間内における位置を指定する。そして、コイン115の位置を指定することでコイン115を取得することができる。例えば、プレイヤは、コイン115を正確に指定したり、制限時間内にコイン115を取得する数を競ったりしてゲームを行う。この場合、CPU10は、指定位置を入力として実行されるゲーム処理として、指定位置がコイン115の位置であるか否かを判定し、指定位置がコイン115の位置である場合、取得されたコイン115の枚数をカウントする処理を実行する。このように、ゲーム処理は、上記実施形態のような指定位置に画像を表示する処理に限らず、仮想空間内のオブジェクトを指定(選択)する処理であってもよい。
【0227】
図27および図28は、プレイヤが描いた図形に基づいてオブジェクトが生成されるゲームにおいて、テレビ2に表示されるゲーム画像を示す図である。このゲームにおいては、プレイヤはまず、上記実施形態と同様の操作によって、仮想空間内に図形を生成する。図27においては、プレイヤの入力による図形を表すオブジェクト117が生成されて表示される。ここで、CPU10は、指定位置を入力として実行されるゲーム処理として、上記図形を形成する各指定位置に基づいて3次元のオブジェクトを生成する。例えば、CPU10は、各指定位置の軌跡に基づいて面を設定することで、3次元のオブジェクトを生成する。例えば、軌跡によって閉曲線が形成される場合、当該閉曲線を周とする面が設定されてもよい。図28は、図27に示すオブジェクト117に基づいて、3次元のオブジェクト118が生成される場合におけるゲーム画像を示す。このように、ゲームシステム1は、指定位置に基づいて3次元のオブジェクトを生成するゲーム処理を実行するものであってもよい。なお、このとき、生成されたオブジェクトがゲームにおいて用いられてもよい。例えば、生成されたオブジェクトをプレイヤキャラクタがアイテムとして使用することができたり、生成されたオブジェクトをプレイヤキャラクタとして使用することができたりしてもよい。
【0228】
上記の他、指定位置を入力として実行されるゲーム処理は、どのような処理であってもよい。例えば、他の実施形態においては、CPU10は、指定位置の軌跡に応じてプレイヤキャラクタを移動させるゲーム処理を実行してもよい。すなわち、ゲーム装置3において実行されるゲームは、プレイヤが指定位置の軌跡を入力すると、仮想空間内のプレイヤキャラクタが当該軌跡に沿って移動するようなゲームであってもよい。
【0229】
(入力システムを適用する他の例)
上記実施形態では、ユーザが仮想空間における3次元位置を入力するための入力システムの一例として、プレイヤが端末装置7を用いてゲーム操作を行うゲームシステム1を例に説明を行った。ここで、他の実施形態においては、入力システムはゲーム用途に限らず、ユーザの操作に応じて仮想空間における3次元位置を指定するための任意の情報処理システムに適用されてもよい。
【0230】
(仮想空間に設定される面に関する変形例)
上記実施形態では、3次元の仮想空間に設定される面81は、平面であった。ここで、他の実施形態においては、3次元の仮想空間に設定される面は曲面であってもよい。例えば、面が球面上あるいは円柱の側面上を移動するように制御される場合(図22〜図24)においては、球面あるいは円柱側面に沿った曲面が設定されてもよい。また、上記実施形態では、面81は、端末装置7の表示画面の形状と同じ形状であったが、面81の形状と表示画面の形状とは異なっていてもよい。
【0231】
(ゲームシステムの構成に関する変形例)
上記実施形態においては、ゲームシステム1は、表示装置として、可搬型の端末装置7と、テレビ2とを含む構成であった。ここで、ゲームシステムは、少なくとも1つの表示装置に、面の位置を含む仮想空間内の領域を表す画像を表示することができればどのような構成であってもよい。例えば、他の実施形態においては、ゲームシステム1は、1つの表示装置(例えばテレビ2)に上記画像を表示し、端末装置7には画像を表示しない構成であってもよい。また、ゲームシステム1は、端末装置7とは異なる2つの表示装置を含む構成であってもよい。このとき、上記実施形態におけるテレビ用画像が一方の表示装置に表示され、端末用画像が他方の表示装置に表示される。
【0232】
また、ゲームシステム1は、端末装置7とは別の操作装置として、コントローラ5を含む構成であったが、他の実施形態においては、コントローラ5を含まない構成であってもよい。また、他の実施形態においては、端末装置7に加えてコントローラ5が操作装置としてさらに用いられてもよい。例えば、プレイヤが端末装置7を用いてタッチパネル52に対して線を描くことによって仮想空間内に図形を描いた場合、ゲーム装置3は、描かれた図形をコントローラ5に対する操作に従って移動させたり変形させたりするようにしてもよい。
【0233】
また、ユーザが仮想空間における3次元位置を入力するための入力システムは、複数の装置で実現されるものに限らず、1つの装置によって実現されてもよい。例えば、2つの表示画面を備え、少なくとも一方の表示画面にタッチパネルが設けられる携帯型の情報処理装置(ゲーム装置であってもよい)によって入力システムが実現されてもよい。このとき、情報処理装置は、タッチパネルが設けられる表示画面に上記実施形態における端末用画像を表示し、もう一方の表示画面に上記実施形態におけるテレビ用画像を表示する。また、情報処理装置は、自身の姿勢を算出するための物理量を検出するセンサ(例えば、ジャイロセンサや加速度センサ)を備えていてもよい。
【0234】
(入力面における入力位置の検出方法に関する変形例)
上記実施形態においては、端末装置7は、所定の入力面に対する入力位置を検出する位置検出部の一例として、LCD51の表画面に設けられるタッチパネル52を備える構成であった。ここで、他の実施形態においては、位置検出部は、例えばタッチパッドであってもよい。つまり、端末装置7は、表示部(LCD51)およびタッチパネル52を備えず、タッチパッドを備える構成であってもよい。また、端末装置7は、LCD51にカーソルを表示し、所定の方向入力操作(例えば、アナログスティック53や十字ボタン54に対する操作)に従って当該カーソルを移動させ、当該カーソルの位置を入力位置として用いてもよい。
【0235】
(ゲーム処理を実行する情報処理装置に関する変形例)
上記実施形態においては、ゲームシステム1において実行される一連のゲーム処理をゲーム装置3が実行したが、ゲーム処理の一部は他の装置によって実行されてもよい。例えば、他の実施形態においては、ゲーム処理の一部(例えば、端末用画像の生成処理)を端末装置7が実行するようにしてもよい。また、他の実施形態では、互いに通信可能な複数の情報処理装置を有する入力システムにおいて、当該複数の情報処理装置がゲーム処理を分担して実行するようにしてもよい。なお、複数の情報処理装置においてゲーム処理が実行される場合には、各情報処理装置で実行されるゲーム処理を同期させる必要があり、ゲーム処理が複雑になってしまう。これに対して、上記実施形態のように、ゲーム処理が1つのゲーム装置3によって実行され、端末装置7がゲーム画像を受信して表示する処理を行う場合(つまり、端末装置7がシンクライアント端末である場合)には、複数の情報処理装置間でゲーム処理の同期をとる必要がなく、ゲーム処理を簡易化することができる。
【0236】
上記のように、本明細書で説明した種々のシステム、方法、および技術は、デジタル電子回路、コンピュータハードウェア、ファームウェア、ソフトウェア、またはこれら要素の組み合わせによって提供されてもよい。上記の技術を実現するための装置は、プログラム可能なプロセッサによる実行のためのコンピュータ読み取り可能な非一時的な記憶装置において実体的に具体化されるコンピュータプログラムプロダクト、入出力装置、およびコンピュータプロセッサを含んでもよい。上記技術を実現するための処理は、入力データを処理して所望の出力を生成することによって、要求される機能を実行するためのプログラムを実行する、プログラム可能なプロセッサによって実行されてもよい。上記の技術は、入力装置、出力装置、および情報記憶装置といったハードウェア資源との間でデータや指示のやり取りを行うプログラム可能なプロセッサを含むコンピュータシステム上で実行可能な1以上のコンピュータプログラムによって実現されてもよい。また、各コンピュータプログラムは、手続型やオブジェクト指向型の高水準プログラミング言語、アセンブリ言語、または、機械語によって実現されてもよく、必要に応じてコンパイルまたはインタプリタされて実行されてもよい。また、上記のプロセッサは、汎用または専用のマイクロプロセッサであってもよい。プロセッサは、一般的に、ROMまたはRAMからデータおよび指示を受け取る。また、上記の記憶装置は、(a)EPROM、EEPROM、フラッシュメモリのような半導体メモリ装置を含む不揮発性のメモリ、(b)内部ハードディスクあるいは着脱可能な外部ディスクのような磁気ディスク、(c)光磁気ディスク、(d)CDROM、に限定されず、あらゆる種類のコンピュータメモリを含む。上記のプロセッサや記憶装置は、ASIC(Application Specific Integrated Circuit)によって補充される、あるいは、ASICに組み込まれる形で実現されてもよい。
【0237】
また、本明細書に記載の処理システム(回路)は、本明細書において記載された内容に応じたゲーム処理のような制御処理のためにプログラムされる。上記の内容に応じた指示を実行する少なくとも1つのCPUを含む処理システムが、上記の内容によって定義される処理動作を実行するための「プログラムされた論理回路」として作用するものであってもよい。
【産業上の利用可能性】
【0238】
以上のように、本発明は、タッチパネルやタッチパッド等の平面的な入力面に対する入力に基づいて、3次元空間における位置を容易に指定すること等を目的として、例えばゲームシステムやゲーム装置やゲームプログラム等として利用することができる。
【符号の説明】
【0239】
1 ゲームシステム
2 テレビ
3 ゲーム装置
4 光ディスク
5 コントローラ
6 マーカ装置
7 端末装置
10 CPU
11e 内部メインメモリ
12 外部メインメモリ
51 LCD
52 タッチパネル
63 加速度センサ
64 ジャイロセンサ
70 無線モジュール
81 面
85 端末用仮想カメラ
90 ゲームプログラム
【技術分野】
【0001】
本発明は、操作装置等に対する操作に基づいて3次元の位置を算出する入力システム、情報処理装置、情報処理プログラム、および3次元位置算出方法に関する。
【背景技術】
【0002】
従来、タッチパネルやタッチパッド等の入力装置を用いて画面上の任意の位置に対して入力を行う技術がある。例えば、特許文献1には、タッチパネルを備えるゲーム装置において、タッチパネルに対する入力によって描かれた軌跡に基づいて、ゲーム空間内のキャラクタの移動を制御する技術が記載されている。これによれば、プレイヤは、2次元平面におけるゲーム空間内の位置を自由に指定してゲーム操作を行うことができる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第3770499号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来の技術においては、タッチパネル等の入力装置を用いることによって2次元平面における位置を指定することは可能であったが、3次元空間における位置を指定することは難しかった。例えば上記特許文献1に記載の技術では、ゲーム空間が2次元平面である場合にはゲーム空間内の任意の位置を指定することが可能であるが、3次元のゲーム空間の場合にはゲーム空間内の位置を適切に指定することができない。
【0005】
それ故、本発明の目的は、タッチパネルやタッチパッド等の平面的な入力面に対する入力に基づいて、3次元空間における位置を容易に指定することができる入力システム等を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の(1)〜(15)の構成を採用した。
【0007】
(1)
本発明の一例は、操作装置と情報処理装置とを含み、当該操作装置に対する操作に基づいて3次元の仮想空間における位置を算出する入力システムである。
操作装置は、位置検出部と、慣性センサ部と、操作データ送信部とを備える。位置検出部は、所定の入力面に対する入力位置を検出する。操作データ送信部は、位置検出部および慣性センサ部の検出結果を表すデータを含む操作データを情報処理装置へ送信する。
情報処理装置は、姿勢算出部と、面設定部と、第1画像生成部と、第1画像出力部と、位置算出部とを備える。姿勢算出部は、慣性センサ部の検出結果に基づいて操作装置の姿勢を算出する。面設定部は、操作装置の姿勢に応じて姿勢が変化するように仮想空間内に所定の面を設定する。第1画像生成部は、面の位置を含む仮想空間内の領域を表す第1画像を生成する。第1画像出力部は、第1画像を所定の表示装置へ出力する。位置算出部は、仮想空間内の位置として、入力位置によって決められる面上の位置を算出する。
【0008】
上記「操作装置」は、後述する実施形態における端末装置7の他、位置検出部と慣性センサ部とを備え、操作データを情報処理装置へ送信する機能を有していればどのような装置であってもよい。
上記「情報処理装置」は、上記の各部における処理を実行する装置であればどのようなものであってもよい。上記情報処理装置は、ゲーム専用の情報処理装置であってもよいし、一般的なパーソナルコンピュータのような多用途の情報処理装置であってもよい。
上記「入力システム」は、操作装置および情報処理装置を含んでいればよく、第1画像を表示する上記「所定の表示装置」を含んでいなくともよいし、含んでいてもよい。すなわち、入力システムは、当該所定の表示装置を含まない形態で提供されてもよいし、含む形態で提供されてもよい。
上記「位置検出部」は、後述する実施形態におけるタッチパネルの他、タッチパッドであってもよい。つまり、操作装置は表示画面を備えていなくてもよい。
上記「慣性センサ部」は、加速度センサあるいはジャイロセンサ等、任意の慣性センサを含むものであればよい。
上記「所定の面」は、平面であってもよいし、曲面であってもよい。また、「所定の面」は、所定の表示装置に表示されなくてもよい。つまり、上記「第1画像」は、面の位置を含む仮想空間内の領域を表す画像であればよく、所定の面の画像を含まなくてもよい。
【0009】
上記(1)の構成によれば、ユーザは、操作装置の入力面に対する入力によって、仮想空間内の面上の位置を指定することができる。また、この面の姿勢は操作装置の姿勢に応じて変化するので、ユーザは、操作装置の姿勢を変化させつつ、入力面上の位置を指定することで、3次元の仮想空間における位置を指定することができる。このように、上記(1)の構成によれば、タッチパネルやタッチパッド等の平面的な入力面に対する入力に基づいて、3次元空間における位置を容易に指定することができる。
【0010】
(2)
第1画像生成部は、位置算出部によって算出された位置に対応する第1画像上の位置に所定の画像を生成してもよい。
【0011】
上記(2)の構成によれば、ユーザは、入力面に対する入力に応じて算出される仮想空間内の位置を容易に確認することができる。また、入力面に対して点や線を描くことで、仮想空間内に3次元の図形を描くことができる。
【0012】
(3)
第1画像生成部は、入力面に連続して入力される各入力位置によって仮想空間内において決められる各位置の軌跡を表す画像を所定の画像として生成してもよい。
【0013】
上記「入力面に連続して入力される各入力位置」とは、ユーザが入力面に接触し続ける間に繰り返し検出された入力位置であり、例えば、入力面上に線(軌跡)を描く操作を行った場合における当該線上の複数の入力位置である。
【0014】
上記(3)の構成によれば、ユーザが入力面上で線を描いた場合には、仮想空間内において線(軌跡)の画像が表示される。これによれば、入力面に対して点で入力を行った場合と線で入力を行った場合とで、表示される画像が区別されるので、入力面に対する入力をより正確に反映した画像を表示することができる。また、ユーザは、入力面に対して線を描くことで、線によって構成される3次元の図形を仮想空間内において容易に生成することができる。
【0015】
(4)
情報処理装置は、位置算出部によって算出された位置に、所定のオブジェクトを配置するオブジェクト設定部をさらに備えていてもよい。
【0016】
上記(4)の構成によれば、仮想空間内にオブジェクトを配置することで、入力面に対する入力に応じて算出される仮想空間内の位置を表す画像を容易に生成することができる。
【0017】
(5)
オブジェクト設定部は、操作装置に対する操作に基づいて所定のオブジェクトを移動させてもよい。
【0018】
上記「移動」とは、平行移動、回転移動(回転しながら位置が変化する)、および回転(位置が変化せずに姿勢が変化する)を含む概念である。
【0019】
上記(5)の構成によれば、プレイヤは、入力面に対する入力によって生成されたオブジェクトを移動させることによって、所定の表示装置に表示される当該オブジェクトをいろいろな位置あるいは向きから見ることができ、当該オブジェクトの形状を容易に確認することができる。
【0020】
(6)
オブジェクト設定部は、操作装置に対する操作に関して所定の条件が満たされる場合、所定のオブジェクトを操作装置の姿勢に基づいて移動させ、当該所定の条件が満たされない場合、操作装置の姿勢に基づく所定のオブジェクトの移動を行わないようにしてもよい。
【0021】
上記「所定の条件」とは、操作装置に対する操作に関する条件であればどのようなものであってもよい。例えば、操作装置に対して所定の操作が行われた場合に条件が満たされたと判断されてもよいし、操作装置に対してある操作が行われてから次の操作が行われるまでの間である場合に条件が満たされたと判断されてもよい。
【0022】
上記(6)の構成によれば、ユーザは、操作装置の姿勢を変化させるという直感的で容易な操作によってオブジェクトを移動させることができる。さらに、上記(6)の構成と下記(10)〜(12)のいずれかの構成とを組み合わせる場合には、面を移動させる操作と同じ操作によってオブジェクトを移動させることができるので、操作性をより向上することができる。
【0023】
(7)
操作装置は、表示部をさらに備えていてもよい。このとき、位置検出部は、表示部の表示画面上に設けられるタッチパネルである。また、情報処理装置は、第2画像生成部と、第2画像送信部とをさらに備えていてもよい。第2画像生成部は、面の位置を含む仮想空間内の領域を表す第2画像を生成する。第2画像送信部は、第2画像を操作装置へ送信する。位置算出部は、仮想空間内の位置として、表示画面上において入力位置に対応する位置を算出する。
【0024】
上記(7)の構成によれば、操作装置の表示画面にはタッチパネルが設けられ、仮想空間内において面が設定される領域を表す画像が操作装置の表示画面に表示される。そして、位置算出部によって算出される位置は、表示画面上において実際にユーザが指定した位置となるので、ユーザは、直感的かつ分かりやすい操作で仮想空間内の位置を指定することができる。
【0025】
(8)
第2画像生成部は、仮想空間において面が設定される領域を表す画像を第2画像として生成してもよい。
【0026】
上記(8)の構成によれば、仮想空間における面の位置の画像が操作装置に表示されるので、ユーザにとっては、入力面に対する入力によって面上の位置を指定する操作がより行いやすくなる。
【0027】
(9)
第1画像生成部は、面の姿勢と独立して視線方向が設定される第1仮想カメラを用いて第1画像を生成してもよい。このとき、第2画像生成部は、面に対して視線方向が略垂直となるように設定される第2仮想カメラを用いて第2画像を生成する。
【0028】
上記「第1仮想カメラ」は、面の姿勢と独立して視線方向が設定されればよく、面の姿勢以外の他の条件に応じて(例えば、ユーザの操作に応じて)視線方向が変化するものであってもよい。
【0029】
上記(9)の構成によれば、プレイヤが操作装置の姿勢を変化させることで面の姿勢を変化させた場合、所定の表示装置に表示される画像においては視線方向が変化しない一方、操作装置に表示される画像においては操作装置の姿勢に応じて視線方向が変化する。これによれば、操作装置においては面の姿勢が一定として表示されるので、面上の位置を指定する操作が容易になる。また、所定の表示装置においては面の姿勢が変化して表示されるので、仮想空間内における面の姿勢を容易に把握することができる。以上より、上記(9)の構成によれば、ユーザは、操作装置を用いて面上の位置を指定する操作を容易に行うことができるとともに、所定の表示装置の画面を見ることによって面の姿勢を容易に確認することができるので、3次元の仮想空間内の位置を指定する操作がより容易になる。
【0030】
(10)
面設定部は、操作装置の姿勢に対応するように面の姿勢を制御してもよい。
【0031】
上記(10)の構成によれば、ユーザは、操作装置の姿勢を変化させる操作によって、直感的かつ容易に面の姿勢を調整することができる。
【0032】
(11)
面設定部は、操作装置の姿勢に対応するように面の姿勢を制御すると共に、操作装置の姿勢に応じて面の位置を制御してもよい。
【0033】
上記(11)の構成によれば、ユーザは、操作装置の姿勢を変化させる操作によって、直感的かつ容易に面の姿勢を調整することができるとともに、さらに面の位置を調整することができる。
【0034】
(12)
面設定部は、仮想空間内の所定位置を中心として操作装置の姿勢に応じて回転移動するように面を制御してもよい。
【0035】
上記(12)の構成によれば、面は、所定位置を中心とする球面上を移動する。したがって、ユーザは、操作装置の姿勢を変化させつつ入力面に対する入力を行うことで、球面に対して位置を指定するような感覚を得ることができる。
【0036】
(13)
面設定部は、操作装置に対する方向入力操作に基づいて面を移動させてもよい。
【0037】
上記(13)の構成によれば、ユーザは、操作装置の姿勢を変化させる操作とは別の方向入力操作によっても面を移動させることができるので、面を移動させる操作をより自由に行うことができる。
【0038】
(14)
情報処理装置は、位置算出部によって算出された位置を入力として所定のゲーム処理を実行するゲーム処理部をさらに備えていてもよい。
【0039】
上記(14)の構成によれば、ユーザは、操作装置の姿勢を変化させつつ、入力面上の位置を指定するという新規なゲーム操作でゲームを行うことができる。また、このゲーム操作によって、3次元のゲーム空間における位置を容易に指定することができる。
【0040】
(15)
また、本発明の他の一例は、操作部に対する操作に基づいて3次元の仮想空間における位置を算出する情報処理システムである。情報処理システムは、位置検出部と、センサ部と、操作データ取得部と、姿勢算出部と、面設定部と、第1画像生成部と、第1画像出力部と、位置算出部とを備える。位置検出部は、操作部に設けられる所定の入力面に対する入力位置を検出する。センサ部は、操作部の姿勢を算出するための物理量を検出する。操作データ取得部は、位置検出部およびセンサ部の検出結果を表すデータを含む操作データを取得する。姿勢算出部は、物理量に基づいて操作装置の姿勢を算出する。面設定部は、姿勢に基づいて仮想空間内に所定の面を設定する。第1画像生成部は、面の位置を含む仮想空間内の領域を表す第1画像を生成する。第1画像出力部は、第1画像を所定の表示装置へ出力する。位置算出部は、仮想空間内の位置として、入力位置によって決められる面上の位置を算出する。
【0041】
上記「操作部」は、後述する実施形態における端末装置7の他、所定の入力面が設けられる装置であればどのような装置であってもよい。
上記「姿勢を算出するための物理量」とは、それに基づいて操作部の姿勢を算出(推測)することができればどのようなものであってもよい。したがって、このような物理量を検出するためのセンサ部は、後述する実施形態におけるジャイロや加速度センサといった慣性センサの他、磁気センサであってもよいし、カメラであってもよい。なお、センサ部が磁気センサである場合には、磁気センサによって検出される方位の情報が上記物理量に相当する。また、センサ部がカメラである場合には、撮像された画像に関する数値(例えば各画素値)、あるいは、当該画像から得られる数値(例えば、撮像された画像内における所定の撮像対象の位置座標)が上記物理量に相当する。
【0042】
上記(15)の構成によれば、ユーザは、操作部の入力面に対する入力によって、仮想空間内の面上の位置を指定することができる。また、この面の姿勢は操作装置の姿勢に応じて変化するので、ユーザは、操作部の姿勢を変化させつつ、入力面上の位置を指定することで、3次元の仮想空間における位置を指定することができる。このように、上記(15)の構成によれば、上記(1)の構成と同様、タッチパネルやタッチパッド等の平面的な入力面に対する入力に基づいて、3次元空間における位置を容易に指定することができる。
【0043】
なお、本発明の別の一例は、上記入力システムに含まれる上記情報処理装置であってもよいし、上記情報処理装置における各部(画像出力部が含まれなくてもよい)と同等の手段としてコンピュータを機能させる情報処理プログラムであってもよい。さらに、本発明の別の一例は、上記の情報処理システムまたは情報処理装置において行われる3次元位置算出方法の形態であってもよい。
【発明の効果】
【0044】
本発明によれば、操作装置の入力面に対する入力に基づいて仮想空間内の面上の位置を算出するとともに、当該面の姿勢を操作装置の姿勢に応じて制御することによって、タッチパネルやタッチパッド等の平面的な入力面に対する入力によって行われる3次元位置の指定操作をユーザに容易に行わせることができる。
【図面の簡単な説明】
【0045】
【図1】ゲームシステム1の外観図
【図2】ゲーム装置3の内部構成を示すブロック図
【図3】コントローラ5の上側後方から見た斜視図
【図4】コントローラ5を下側前方から見た斜視図
【図5】コントローラ5の内部構造を示す図
【図6】コントローラ5の内部構造を示す図
【図7】コントローラ5の構成を示すブロック図
【図8】端末装置7の外観構成を示す図
【図9】ユーザが端末装置7を把持した様子を示す図
【図10】端末装置7の内部構成を示すブロック図
【図11】本実施形態においてゲーム操作が行われる場合におけるテレビ2および端末装置7を示す図
【図12】図11に示す状態から端末装置7を傾けた場合におけるテレビ2および端末装置7を示す図
【図13】図12に示す状態から端末装置7を傾けた場合におけるテレビ2および端末装置7を示す図
【図14】図12に示す状態から図形を回転させた場合におけるテレビ2および端末装置7を示す図
【図15】ゲーム処理において用いられる各種データを示す図
【図16】ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャート
【図17】図16に示すゲーム制御処理(ステップS3)の詳細な流れを示すフローチャート
【図18】タッチパネル52の入力面上のタッチ位置に基づいて指定位置を算出する方法を説明するための図
【図19】面81と端末用仮想カメラ85との位置関係を示す図
【図20】図17に示す図形移動処理(ステップS13)の詳細な流れを示すフローチャート
【図21】上記実施形態の変形例におけるゲーム制御処理の流れを示すフローチャート
【図22】本変形例における面81の移動を示す図
【図23】他の実施形態における面81の移動を示す図
【図24】他の実施形態における面81の移動を示す図
【図25】見本と同じになるように図形を描くゲームにおいて、テレビ2に表示されるゲーム画像を示す図
【図26】3次元の仮想空間内に配置されたオブジェクト115を端末装置7に対する操作によって指定するゲームにおいて、テレビ2に表示されるゲーム画像を示す図
【図27】プレイヤが描いた図形に基づいてオブジェクトが生成されるゲームにおいて、テレビ2に表示されるゲーム画像を示す図
【図28】プレイヤが描いた図形に基づいてオブジェクトが生成されるゲームにおいて、テレビ2に表示されるゲーム画像を示す図
【発明を実施するための形態】
【0046】
[1.ゲームシステムの全体構成]
以下、図面を参照して、本発明の一実施形態に係るゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。図1において、ゲームシステム1は、テレビジョン受像器等に代表される据置型のディスプレイ装置(以下、「テレビ」と記載する)2、据置型のゲーム装置3、光ディスク4、コントローラ5、マーカ装置6、および、端末装置7を含む。ゲームシステム1は、コントローラ5および/または端末装置7を用いたゲーム操作に基づいてゲーム装置3においてゲーム処理を実行し、ゲーム処理によって得られるゲーム画像をテレビ2および/または端末装置7に表示するものである。
【0047】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるための情報処理プログラム(典型的にはゲームプログラム)が記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されている情報処理プログラムを読み出して実行することによってゲーム処理を実行する。
【0048】
ゲーム装置3には、テレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理によって得られるゲーム画像を表示する。テレビ2はスピーカ2a(図2)を有しており、スピーカ2aは、上記ゲーム処理の結果得られるゲーム音声を出力する。なお、他の実施形態においては、ゲーム装置3と据置型の表示装置とは一体となっていてもよい。また、ゲーム装置3とテレビ2との通信は無線通信であってもよい。
【0049】
テレビ2の画面の周辺(図1では画面の上側)には、マーカ装置6が設置される。詳細は後述するが、ユーザ(プレイヤ)はコントローラ5を動かすゲーム操作を行うことができ、マーカ装置6は、コントローラ5の動きや位置や姿勢等をゲーム装置3が算出するために用いられる。マーカ装置6は、その両端に2つのマーカ6Rおよび6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LED(Light Emitting Diode)であり、テレビ2の前方に向かって赤外光を出力する。マーカ装置6はゲーム装置3に接続されており、ゲーム装置3はマーカ装置6が備える各赤外LEDの点灯を制御することが可能である。なお、マーカ装置6は可搬型であり、ユーザはマーカ装置6を自由な位置に設置することができる。図1ではマーカ装置6がテレビ2の上に設置された態様を表しているが、マーカ装置6を設置する位置および向きは任意である。
【0050】
コントローラ5は、自機に対して行われた操作の内容を表す操作データをゲーム装置3に与えるものである。コントローラ5とゲーム装置3とは無線通信によって通信可能である。本実施形態では、コントローラ5とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ5とゲーム装置3とは有線で接続されてもよい。また、本実施形態では、ゲームシステム1に含まれるコントローラ5は1つとするが、ゲーム装置3は複数のコントローラと通信可能であり、所定台数のコントローラを同時に使用することによって複数人でゲームをプレイすることが可能である。コントローラ5の詳細な構成については後述する。
【0051】
端末装置7は、ユーザが把持可能な程度の大きさであり、ユーザは端末装置7を手に持って動かしたり、あるいは、端末装置7を自由な位置に配置したりして使用することが可能である。詳細な構成は後述するが、端末装置7は、表示手段であるLCD(Liquid Crystal Display:液晶表示装置)51、および、入力手段(後述するタッチパネル52やジャイロセンサ64等)を備える。端末装置7とゲーム装置3とは無線(有線であってもよい)によって通信可能である。端末装置7は、ゲーム装置3で生成された画像(例えばゲーム画像)のデータをゲーム装置3から受信し、画像をLCD51に表示する。なお、本実施形態では表示装置としてLCDを用いているが、端末装置7は、例えばEL(Electro Luminescence:電界発光)を利用した表示装置等、他の任意の表示装置を有していてもよい。また、端末装置7は、自機に対して行われた操作の内容を表す操作データをゲーム装置3に送信する。
【0052】
[2.ゲーム装置3の内部構成]
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の内部構成を示すブロック図である。ゲーム装置3は、CPU(Central Processing Unit)10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
【0053】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間におけるデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。なお、システムLSI11の内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
【0054】
システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM(Video RAM)11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0055】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。なお、ゲーム装置3は、テレビ2に表示する画像と、端末装置7に表示する画像との両方を生成する。以下では、テレビ2に表示される画像を「テレビ用画像」と呼び、端末装置7に表示される画像を「端末用画像」と呼ぶことがある。
【0056】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。なお、本実施形態においては、ゲーム音声についてもゲーム画像と同様、テレビ2のスピーカから出力するゲーム音声と、端末装置7のスピーカから出力するゲーム音声との両方が生成される。以下では、テレビ2から出力される音声を「テレビ用音声」と呼び、端末装置7から出力される音声を「端末用音声」と呼ぶことがある。
【0057】
上記のようにゲーム装置3において生成される画像および音声のうちで、テレビ2において出力される画像および音声のデータは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、テレビ2に画像が表示されるとともにスピーカ2aから音が出力される。なお、ゲーム装置3とテレビ2との接続は、どのような方式で行われてもよいが、ゲーム装置3は、テレビ2を制御する制御指令を有線または無線でテレビ2へ送信するようにしてもよい。例えばHDMI(High−Definition Multimedia Interface)規格に則ったHDMIケーブルが用いられてもよい。HDMI規格では、CEC(Consumer Electronics Control)と呼ばれる機能によって、接続相手の機器を制御することが可能である。したがって、HDMIケーブルが用いられる場合のように、ゲーム装置3がテレビ2に対する制御が可能である場合には、ゲーム装置3は、適宜のタイミングでテレビ2の電源をオンにしたり、テレビ2の入力を切り替えたりすることができる。
【0058】
また、ゲーム装置3において生成される画像および音声のうちで、端末装置7において出力される画像および音声のデータは、入出力プロセッサ11a等によって端末装置7へ送信される。入出力プロセッサ11a等による端末装置7へのデータの送信については後述する。
【0059】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、ネットワーク通信モジュール18、コントローラ通信モジュール19、拡張コネクタ20、メモリカード用コネクタ21、コーデックLSI27に接続される。また、ネットワーク通信モジュール18にはアンテナ22が接続される。コントローラ通信モジュール19にはアンテナ23が接続される。コーデックLSI27は端末通信モジュール28に接続され、端末通信モジュール28にはアンテナ29が接続される。
【0060】
ゲーム装置3は、インターネット等のネットワークに接続して外部の情報処理装置(例えば他のゲーム装置や、各種サーバ等)と通信を行うことが可能である。すなわち、入出力プロセッサ11aは、ネットワーク通信モジュール18およびアンテナ22を介してインターネット等のネットワークに接続可能であり、ネットワークに接続される他の装置と通信を行うことができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、ネットワーク通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、外部情報処理装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22およびネットワーク通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と外部情報処理装置との間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。また、フラッシュメモリ17にはゲームプログラムが記憶されてもよい。
【0061】
また、ゲーム装置3は、コントローラ5からの操作データを受信することが可能である。すなわち、入出力プロセッサ11aは、コントローラ5から送信される操作データをアンテナ23およびコントローラ通信モジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0062】
また、ゲーム装置3は、端末装置7との間で画像や音声等のデータを送受信することが可能である。入出力プロセッサ11aは、端末装置7へゲーム画像(端末用ゲーム画像)を送信する場合、GPU11bが生成したゲーム画像のデータをコーデックLSI27へ出力する。コーデックLSI27は、入出力プロセッサ11aからの画像データに対して所定の圧縮処理を行う。端末通信モジュール28は、端末装置7との間で無線通信を行う。したがって、コーデックLSI27によって圧縮された画像データは、端末通信モジュール28によってアンテナ29を介して端末装置7へ送信される。なお、本実施形態では、ゲーム装置3から端末装置7へ送信される画像データはゲームに用いるものであり、ゲームにおいては表示される画像に遅延が生じるとゲームの操作性に悪影響が出る。そのため、ゲーム装置3から端末装置7への画像データの送信に関しては、できるだけ遅延が生じないようにすることが好ましい。したがって、本実施形態では、コーデックLSI27は、例えばH.264規格といった高効率の圧縮技術を用いて画像データを圧縮する。なお、それ以外の圧縮技術を用いてもよいし、通信速度が十分である場合には無圧縮で画像データを送信する構成であってもよい。また、端末通信モジュール28は、例えばWi−Fiの認証を受けた通信モジュールであり、例えばIEEE802.11n規格で採用されるMIMO(Multiple Input Multiple Output)の技術を用いて端末装置7との間の無線通信を高速に行うようにしてもよいし、他の通信方式を用いてもよい。
【0063】
また、ゲーム装置3は、画像データの他、音声データを端末装置7へ送信する。すなわち、入出力プロセッサ11aは、DSP11cが生成した音声データを、コーデックLSI27を介して端末通信モジュール28へ出力する。コーデックLSI27は、音声データに対しても画像データと同様に圧縮処理を行う。音声データに対する圧縮の方式は、どのような方式であってもよいが、圧縮率が高く、音声の劣化が少ない方式が好ましい。また、他の実施形態においては、音声データは圧縮されずに送信されてもよい。端末通信モジュール28は、圧縮された画像データおよび音声データを、アンテナ29を介して端末装置7へ送信する。
【0064】
さらに、ゲーム装置3は、上記画像データおよび音声データの他に、必要に応じて各種の制御データを端末装置7へ送信する。制御データは、端末装置7が備える構成要素に対する制御指示を表すデータであり、例えばマーカ部(図10に示すマーカ部55)の点灯を制御する指示や、カメラ(図10に示すカメラ56)の撮像を制御する指示等を表す。入出力プロセッサ11aは、CPU10の指示に応じて制御データを端末装置7へ送信する。なお、この制御データに関して、本実施形態ではコーデックLSI27はデータの圧縮処理を行わないが、他の実施形態においては圧縮処理を行うようにしてもよい。なお、ゲーム装置3から端末装置7へ送信される上述のデータは、必要に応じて暗号化がされていてもよいし、されていなくともよい。
【0065】
また、ゲーム装置3は、端末装置7から各種データを受信可能である。詳細は後述するが、本実施形態では、端末装置7は、操作データ、画像データ、および音声データを送信する。端末装置7から送信される各データはアンテナ29を介して端末通信モジュール28によって受信される。ここで、端末装置7からの画像データおよび音声データは、ゲーム装置3から端末装置7への画像データおよび音声データと同様の圧縮処理が施されている。したがって、これら画像データおよび音声データについては、端末通信モジュール28からコーデックLSI27に送られ、コーデックLSI27によって伸張処理が施されて入出力プロセッサ11aに出力される。一方、端末装置7からの操作データに関しては、画像や音声に比べてデータ量が少ないので、圧縮処理が施されていなくともよい。また、必要に応じて暗号化がされていてもよいし、されていなくともよい。したがって、操作データは、端末通信モジュール28で受信された後、コーデックLSI27を介して入出力プロセッサ11aに出力される。入出力プロセッサ11aは、端末装置7から受信したデータを、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0066】
また、ゲーム装置3は、他の機器や外部記憶媒体に接続することが可能である。すなわち、入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタである。拡張コネクタ20に対しては、外部記憶媒体のようなメディアを接続したり、他のコントローラ等の周辺機器を接続したり、有線の通信用コネクタを接続することによってネットワーク通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して外部記憶媒体にアクセスし、外部記憶媒体にデータを保存したり、外部記憶媒体からデータを読み出したりすることができる。
【0067】
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、図示しないACアダプタによって外部の電源からゲーム装置3の各構成要素に対して電力が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0068】
なお、他の実施形態においては、ゲーム装置3が備える各構成要素のうちでいくつかの構成要素は、ゲーム装置3とは別体の拡張機器として構成されてもよい。このとき、拡張機器は、例えば上記拡張コネクタ20を介してゲーム装置3と接続されるようにしてもよい。具体的には、拡張機器は、例えば上記コーデックLSI27、端末通信モジュール28およびアンテナ29の各構成要素を備えており、拡張コネクタ20に対して着脱可能であってもよい。これによれば、上記各構成要素を備えていないゲーム装置に対して上記拡張機器を接続することによって、当該ゲーム装置を端末装置7と通信可能な構成とすることができる。
【0069】
[3.コントローラ5の構成]
次に、図3〜図7を参照して、コントローラ5について説明する。図3および図4は、コントローラ5の外観構成を示す斜視図である。図3は、コントローラ5の上側後方から見た斜視図であり、図4は、コントローラ5を下側前方から見た斜視図である。
【0070】
図3および図4において、コントローラ5は、例えばプラスチック成型によって形成されたハウジング31を有している。ハウジング31は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。ユーザは、コントローラ5に設けられたボタンを押下すること、および、コントローラ5自体を動かしてその位置や姿勢(傾き)を変えることによってゲーム操作を行うことができる。
【0071】
ハウジング31には、複数の操作ボタンが設けられる。図3に示すように、ハウジング31の上面には、十字ボタン32a、1番ボタン32b、2番ボタン32c、Aボタン32d、マイナスボタン32e、ホームボタン32f、プラスボタン32g、および電源ボタン32hが設けられる。本明細書では、これらのボタン32a〜32hが設けられるハウジング31の上面を「ボタン面」と呼ぶことがある。一方、図4に示すように、ハウジング31の下面には凹部が形成されており、当該凹部の後面側傾斜面にはBボタン32iが設けられる。これらの各操作ボタン32a〜32iには、ゲーム装置3が実行する情報処理プログラムに応じた機能が適宜割り当てられる。また、電源ボタン32hは遠隔からゲーム装置3本体の電源をオン/オフするためのものである。ホームボタン32fおよび電源ボタン32hは、その上面がハウジング31の上面に埋没している。これによって、ユーザがホームボタン32fまたは電源ボタン32hを誤って押下することを防止することができる。
【0072】
ハウジング31の後面にはコネクタ33が設けられている。コネクタ33は、コントローラ5に他の機器(例えば、他のセンサユニットやコントローラ)を接続するために利用される。また、ハウジング31の後面におけるコネクタ33の両側には、上記他の機器が容易に離脱することを防止するために係止穴33aが設けられている。
【0073】
ハウジング31上面の後方には複数(図3では4つ)のLED34a〜34dが設けられる。ここで、コントローラ5には、他のコントローラと区別するためにコントローラ種別(番号)が付与される。各LED34a〜34dは、コントローラ5に現在設定されている上記コントローラ種別をユーザに通知したり、コントローラ5の電池残量をユーザに通知したりする等の目的で用いられる。具体的には、コントローラ5を用いてゲーム操作が行われる際、上記コントローラ種別に応じて複数のLED34a〜34dのいずれか1つが点灯する。
【0074】
また、コントローラ5は撮像情報演算部35(図6)を有しており、図4に示すように、ハウジング31前面には撮像情報演算部35の光入射面35aが設けられる。光入射面35aは、マーカ6Rおよび6Lからの赤外光を少なくとも透過する材質で構成される。
【0075】
ハウジング31上面における1番ボタン32bとホームボタン32fとの間には、コントローラ5に内蔵されるスピーカ47(図5)からの音を外部に放出するための音抜き孔31aが形成されている。
【0076】
次に、図5および図6を参照して、コントローラ5の内部構造について説明する。図5および図6は、コントローラ5の内部構造を示す図である。なお、図5は、コントローラ5の上筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6は、コントローラ5の下筐体(ハウジング31の一部)を外した状態を示す斜視図である。図6に示す斜視図は、図5に示す基板30を裏面から見た斜視図となっている。
【0077】
図5において、ハウジング31の内部には基板30が固設されており、当該基板30の上主面上に各操作ボタン32a〜32h、各LED34a〜34d、加速度センサ37、アンテナ45、およびスピーカ47等が設けられる。これらは、基板30等に形成された配線(図示せず)によってマイクロコンピュータ(Micro Computer:マイコン)42(図6参照)に接続される。本実施形態では、加速度センサ37は、X軸方向に関してコントローラ5の中心からずれた位置に配置されている。これによって、コントローラ5をZ軸回りに回転させたときのコントローラ5の動きが算出しやすくなる。また、加速度センサ37は、長手方向(Z軸方向)に関してコントローラ5の中心よりも前方に配置されている。また、無線モジュール44(図6)およびアンテナ45によって、コントローラ5がワイヤレスコントローラとして機能する。
【0078】
一方、図6において、基板30の下主面上の前端縁に撮像情報演算部35が設けられる。撮像情報演算部35は、コントローラ5の前方から順に赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を備えている。これらの部材38〜41はそれぞれ基板30の下主面に取り付けられる。
【0079】
さらに、基板30の下主面上には、上記マイコン42およびバイブレータ46が設けられている。バイブレータ46は、例えば振動モータやソレノイドであり、基板30等に形成された配線によってマイコン42と接続される。マイコン42の指示によりバイブレータ46が作動することによってコントローラ5に振動が発生する。これによって、コントローラ5を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。本実施形態では、バイブレータ46は、ハウジング31のやや前方寄りに配置される。つまり、バイブレータ46がコントローラ5の中心よりも端側に配置することによって、バイブレータ46の振動によりコントローラ5全体を大きく振動させることができる。また、コネクタ33は、基板30の下主面上の後端縁に取り付けられる。なお、図5および図6に示す他、コントローラ5は、マイコン42の基本クロックを生成する水晶振動子、スピーカ47に音声信号を出力するアンプ等を備えている。
【0080】
なお、図3〜図6に示したコントローラ5の形状や、各操作ボタンの形状、加速度センサやバイブレータの数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。また、本実施形態では、撮像手段による撮像方向はZ軸正方向であるが、撮像方向はいずれの方向であってもよい。すなわち、コントローラ5における撮像情報演算部35の位置(撮像情報演算部35の光入射面35a)は、ハウジング31の前面でなくてもよく、ハウジング31の外部から光を取り入れることができれば他の面に設けられてもかまわない。
【0081】
図7は、コントローラ5の構成を示すブロック図である。コントローラ5は、操作部32(各操作ボタン32a〜32i)、撮像情報演算部35、通信部36、加速度センサ37、およびジャイロセンサ48を備えている。コントローラ5は、自機に対して行われた操作内容を表すデータを操作データとしてゲーム装置3へ送信するものである。なお、以下では、コントローラ5が送信する操作データを「コントローラ操作データ」と呼び、端末装置7が送信する操作データを「端末操作データ」と呼ぶことがある。
【0082】
操作部32は、上述した各操作ボタン32a〜32iを含み、各操作ボタン32a〜32iに対する入力状態(各操作ボタン32a〜32iが押下されたか否か)を表す操作ボタンデータを通信部36のマイコン42へ出力する。
【0083】
撮像情報演算部35は、撮像手段が撮像した画像データを解析してその中で輝度が高い領域を判別してその領域の重心位置やサイズなどを算出するためのシステムである。撮像情報演算部35は、例えば最大200フレーム/秒程度のサンプリング周期を有するので、比較的高速なコントローラ5の動きでも追跡して解析することができる。
【0084】
撮像情報演算部35は、赤外線フィルタ38、レンズ39、撮像素子40、および画像処理回路41を含んでいる。赤外線フィルタ38は、コントローラ5の前方から入射する光から赤外線のみを通過させる。レンズ39は、赤外線フィルタ38を透過した赤外線を集光して撮像素子40へ入射させる。撮像素子40は、例えばCMOSセンサやあるいはCCDセンサのような固体撮像素子であり、レンズ39が集光した赤外線を受光して画像信号を出力する。ここで、撮像対象となる端末装置7のマーカ部55およびマーカ装置6は、赤外光を出力するマーカで構成される。したがって、赤外線フィルタ38を設けることによって、撮像素子40は、赤外線フィルタ38を通過した赤外線だけを受光して画像データを生成するので、撮像対象(マーカ部55および/またはマーカ装置6)の画像をより正確に撮像することができる。以下では、撮像素子40によって撮像された画像を撮像画像と呼ぶ。撮像素子40によって生成された画像データは、画像処理回路41で処理される。画像処理回路41は、撮像画像内における撮像対象の位置を算出する。画像処理回路41は、算出された位置を示す座標を通信部36のマイコン42へ出力する。この座標のデータは、マイコン42によって操作データとしてゲーム装置3に送信される。以下では、上記座標を「マーカ座標」と呼ぶ。マーカ座標はコントローラ5自体の向き(傾斜角度)や位置に対応して変化するので、ゲーム装置3はこのマーカ座標を用いてコントローラ5の向きや位置を算出することができる。
【0085】
なお、他の実施形態においては、コントローラ5は画像処理回路41を備えていない構成であってもよく、撮像画像自体がコントローラ5からゲーム装置3へ送信されてもよい。このとき、ゲーム装置3は、画像処理回路41と同様の機能を有する回路あるいはプログラムを有しており、上記マーカ座標を算出するようにしてもよい。
【0086】
加速度センサ37は、コントローラ5の加速度(重力加速度を含む)を検出する、すなわち、コントローラ5に加わる力(重力を含む)を検出する。加速度センサ37は、当該加速度センサ37の検出部に加わっている加速度のうち、センシング軸方向に沿った直線方向の加速度(直線加速度)の値を検出する。例えば、2軸以上の多軸加速度センサの場合には、加速度センサの検出部に加わっている加速度として、各軸に沿った成分の加速度をそれぞれ検出する。なお、加速度センサ37は、例えば静電容量式のMEMS(Micro Electro Mechanical System)型加速度センサであるとするが、他の方式の加速度センサを用いるようにしてもよい。
【0087】
本実施形態では、加速度センサ37は、コントローラ5を基準とした上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向に関してそれぞれ直線加速度を検出する。加速度センサ37は、各軸に沿った直線方向に関する加速度を検出するものであるため、加速度センサ37からの出力は3軸それぞれの直線加速度の値を表すものとなる。すなわち、検出された加速度は、コントローラ5を基準に設定されるXYZ座標系(コントローラ座標系)における3次元のベクトルとして表される。
【0088】
加速度センサ37が検出した加速度を表すデータ(加速度データ)は、通信部36へ出力される。なお、加速度センサ37が検出した加速度は、コントローラ5自体の向き(傾斜角度)や動きに対応して変化するので、ゲーム装置3は取得された加速度データを用いてコントローラ5の向きや動きを算出することができる。本実施形態では、ゲーム装置3は、取得された加速度データに基づいてコントローラ5の姿勢や傾斜角度等を算出する。
【0089】
なお、加速度センサ37(後述する加速度センサ63についても同様)から出力される加速度の信号に基づいて、ゲーム装置3のプロセッサ(例えばCPU10)またはコントローラ5のプロセッサ(例えばマイコン42)等のコンピュータが処理を行うことによって、コントローラ5に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ37を搭載するコントローラ5が静止状態であることを前提としてコンピュータ側の処理が実行される場合(すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理が実行される場合)、コントローラ5が現実に静止状態であれば、検出された加速度に基づいてコントローラ5の姿勢が重力方向に対して傾いているか否かまたはどの程度傾いているかを知ることができる。具体的には、加速度センサ37の検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かによって、コントローラ5が基準に対して傾いているか否かを知ることができるし、その大きさによって基準に対してどの程度傾いているかも知ることができる。また、多軸の加速度センサ37の場合には、さらに各軸の加速度の信号に対して処理を施すことによって、重力方向に対してコントローラ5がどの程度傾いているかをより詳細に知ることができる。この場合において、プロセッサは、加速度センサ37からの出力に基づいてコントローラ5の傾斜角度を算出してもよいし、当該傾斜角度を算出せずに、コントローラ5の傾斜方向を算出するようにしてもよい。このように、加速度センサ37をプロセッサと組み合わせて用いることによって、コントローラ5の傾斜角度または姿勢を判定することができる。
【0090】
一方、コントローラ5が動的な状態(コントローラ5が動かされている状態)であることを前提とする場合には、加速度センサ37は重力加速度に加えてコントローラ5の動きに応じた加速度を検出するので、検出された加速度から重力加速度の成分を所定の処理により除去することによってコントローラ5の動き方向を知ることができる。また、コントローラ5が動的な状態であることを前提とする場合であっても、検出された加速度から、加速度センサの動きに応じた加速度の成分を所定の処理により除去することによって、重力方向に対するコントローラ5の傾きを知ることが可能である。なお、他の実施例では、加速度センサ37は、内蔵の加速度検出手段で検出された加速度信号をマイコン42に出力する前に当該加速度信号に対して所定の処理を行うための、組込み式の処理装置または他の種類の専用の処理装置を備えていてもよい。組込み式または専用の処理装置は、例えば、加速度センサ37が静的な加速度(例えば、重力加速度)を検出するために用いられる場合、加速度信号を傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0091】
ジャイロセンサ48は、3軸(本実施形態では、XYZ軸)回りの角速度を検出する。本明細書では、コントローラ5の撮像方向(Z軸正方向)を基準として、X軸回りの回転方向をピッチ方向、Y軸回りの回転方向をヨー方向、Z軸回りの回転方向をロール方向と呼ぶ。ジャイロセンサ48は、3軸回りの角速度を検出することができればよく、用いるジャイロセンサの数および組み合わせはどのようなものであってもよい。例えば、ジャイロセンサ48は、3軸ジャイロセンサであってもよいし、2軸ジャイロセンサと1軸ジャイロセンサとを組み合わせて3軸周りの角速度を検出するものであってもよい。ジャイロセンサ48で検出された角速度を表すデータは、通信部36へ出力される。また、ジャイロセンサ48は1軸または2軸回りの角速度を検出するものであってもよい。
【0092】
通信部36は、マイコン42、メモリ43、無線モジュール44、およびアンテナ45を含んでいる。マイコン42は、処理を行う際にメモリ43を記憶領域として用いながら、マイコン42が取得したデータをゲーム装置3へ無線送信する無線モジュール44を制御する。
【0093】
操作部32、撮像情報演算部35、加速度センサ37、およびジャイロセンサ48からマイコン42へ出力されたデータは、一時的にメモリ43に格納される。これらのデータは、操作データ(コントローラ操作データ)としてゲーム装置3へ送信される。すなわち、マイコン42は、ゲーム装置3のコントローラ通信モジュール19への送信タイミングが到来すると、メモリ43に格納されている操作データを無線モジュール44へ出力する。無線モジュール44は、例えばBluetooth(ブルートゥース)(登録商標)の技術を用いて、所定周波数の搬送波を操作データで変調し、その微弱電波信号をアンテナ45から放射する。つまり、操作データは、無線モジュール44で微弱電波信号に変調されてコントローラ5から送信される。微弱電波信号はゲーム装置3側のコントローラ通信モジュール19で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置3は操作データを取得することができる。そして、ゲーム装置3のCPU10は、コントローラ5から取得した操作データを用いてゲーム処理を行う。なお、通信部36からコントローラ通信モジュール19への無線送信は所定の周期毎に逐次行われるが、ゲームの処理は1/60秒を単位として(1フレーム時間として)行われることが一般的であるので、この時間以下の周期で送信を行うことが好ましい。コントローラ5の通信部36は、例えば1/200秒に1回の割合で操作データをゲーム装置3のコントローラ通信モジュール19へ出力する。
【0094】
以上のように、コントローラ5は、自機に対する操作を表す操作データとして、マーカ座標データ、加速度データ、角速度データ、および操作ボタンデータを送信可能である。また、ゲーム装置3は、上記操作データをゲーム入力として用いてゲーム処理を実行する。したがって、上記コントローラ5を用いることによって、ユーザは、各操作ボタンを押下する従来の一般的なゲーム操作に加えて、コントローラ5自体を動かすゲーム操作を行うことができる。例えば、コントローラ5を任意の姿勢に傾ける操作、コントローラ5によって画面上の任意の位置を指示する操作、および、コントローラ5自体を動かす操作等を行うことが可能となる。
【0095】
また、本実施形態において、コントローラ5は、ゲーム画像を表示する表示手段を有しないが、例えば電池残量を表す画像等を表示するための表示手段を有していてもよい。
【0096】
[4.端末装置7の構成]
次に、図8〜図10を参照して、端末装置7の構成について説明する。図8は、端末装置7の外観構成を示す図である。図8における(a)図は端末装置7の正面図であり、(b)図は上面図であり、(c)図は右側面図であり、(d)図は下面図である。また、図9は、ユーザが端末装置7を把持した様子を示す図である。
【0097】
図8に示されるように、端末装置7は、大略的には横長の長方形の板状形状であるハウジング50を備える。ハウジング50は、ユーザが把持することができる程度の大きさである。したがって、ユーザは、端末装置7を持って動かしたり、端末装置7の配置位置を変更したりすることができる。
【0098】
端末装置7は、ハウジング50の表面にLCD51を有する。LCD51は、ハウジング50の表面の中央付近に設けられる。したがって、ユーザは、図9に示すようにLCD51の両側部分のハウジング50を持つことによって、LCD51の画面を見ながら端末装置を持って動かすことができる。なお、図9ではユーザがLCD51の左右両側の部分のハウジング50を持つことで端末装置7を横持ちで(横に長い向きにして)持つ例を示しているが、端末装置7を縦持ちで(縦に長い向きにして)持つことも可能である。
【0099】
図8の(a)図に示すように、端末装置7は、操作手段として、LCD51の画面上にタッチパネル52を有する。本実施形態では、タッチパネル52は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、例えば静電容量方式等、任意の方式のタッチパネルを用いることができる。また、タッチパネル52はシングルタッチ方式でもよいし、マルチタッチ方式であってもよい。本実施形態では、タッチパネル52として、LCD51の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル52の解像度とLCD51の解像度が一致している必要はない。タッチパネル52に対する入力は通常タッチペンを用いて行われるが、タッチペンに限らずユーザの指でタッチパネル52に対する入力をすることも可能である。なお、ハウジング50には、タッチパネル52に対する操作を行うために用いられるタッチペンを収納するための収納穴が設けられていてもよい。このように、端末装置7はタッチパネル52を備えるので、ユーザは、端末装置7を動かしながらタッチパネル52を操作することができる。つまりユーザは、LCD51の画面を動かしつつ、その画面に対して直接(タッチパネル52によって)入力を行うことができる。
【0100】
図8に示すように、端末装置7は、操作手段として、2つのアナログスティック53Aおよび53Bと、複数のボタン54A〜54Lとを備えている。各アナログスティック53Aおよび53Bは、方向を指示するデバイスである。各アナログスティック53Aおよび53Bは、ユーザの指で操作されるスティック部がハウジング50の表面に対して任意の方向(上下左右および斜め方向の任意の角度)にスライド(または傾倒)することができるように構成されている。また、左アナログスティック53AはLCD51の画面の左側に、右アナログスティック53BはLCD51の画面の右側にそれぞれ設けられる。したがって、ユーザは、左右いずれの手でもアナログスティックを用いて方向を指示する入力を行うことができる。また、図9に示すように、各アナログスティック53Aおよび53Bは、ユーザが端末装置7の左右部分を把持した状態で操作可能な位置に設けられるので、ユーザは、端末装置7を持って動かす場合においても各アナログスティック53Aおよび53Bを容易に操作することができる。
【0101】
各ボタン54A〜54Lは、所定の入力を行うための操作手段である。以下に示すように、各ボタン54A〜54Lは、ユーザが端末装置7の左右部分を把持した状態で操作可能な位置に設けられる(図9参照)。したがって、ユーザは、端末装置7を持って動かす場合においてもこれらの操作手段を容易に操作することができる。
【0102】
図8の(a)図に示すように、ハウジング50の表面には、各操作ボタン54A〜54Lのうち、十字ボタン(方向入力ボタン)54Aと、ボタン54B〜54Hとが設けられる。つまり、これらのボタン54A〜54Gは、ユーザの親指で操作可能な位置に配置されている(図9参照)。
【0103】
十字ボタン54Aは、LCD51の左側であって、左アナログスティック53Aの下側に設けられる。つまり、十字ボタン54Aはユーザの左手で操作可能な位置に配置されている。十字ボタン54Aは、十字の形状を有しており、上下左右の方向を指示することが可能なボタンである。また、ボタン54B〜54Dは、LCD51の下側に設けられる。これら3つのボタン54B〜54Dは、左右両方の手で操作可能な位置に配置されている。また、4つのボタン54E〜54Hは、LCD51の右側であって、右アナログスティック53Bの下側に設けられる。つまり、4つのボタン54E〜54Hはユーザの右手で操作可能な位置に配置されている。さらに、4つのボタン54E〜54Hは、(4つのボタン54E〜54Hの中心位置に対して)上下左右の位置関係となるように配置されている。したがって、端末装置7は、ユーザに上下左右の方向を指示させるためのボタンとして4つのボタン54E〜54Hを機能させることも可能である。
【0104】
また、図8の(a)図、(b)図、および(c)図に示すように、第1Lボタン54Iおよび第1Rボタン54Jは、ハウジング50の斜め上部分(左上部分および右上部分)に設けられる。具体的には、第1Lボタン54Iは、板状のハウジング50における上側の側面の左端に設けられ、上側および左側の側面から露出している。また、第1Rボタン54Jは、ハウジング50における上側の側面の右端に設けられ、上側および右側の側面から露出している。このように、第1Lボタン54Iは、ユーザの左手人差し指で操作可能な位置に配置され、第1Rボタン54Jは、ユーザの右手人差し指で操作可能な位置に配置される(図9参照)。
【0105】
また、図8の(b)図および(c)図に示すように、第2Lボタン54Kおよび第2Rボタン54Lは、板状のハウジング50の裏面(すなわちLCD51が設けられる表面の反対側の面)に突起して設けられる足部59Aおよび59Bに配置される。具体的には、第2Lボタン54Kは、ハウジング50の裏面の左側(表面側から見たときの左側)のやや上方に設けられ、第2Rボタン54Lは、ハウジング50の裏面の右側(表面側から見たときの右側)のやや上方に設けられる。換言すれば、第2Lボタン54Kは、表面に設けられる左アナログスティック53Aの概ね反対側の位置に設けられ、第2Rボタン54Lは、表面に設けられる右アナログスティック53Bの概ね反対側の位置に設けられる。このように、第2Lボタン54Kは、ユーザの左手中指で操作可能な位置に配置され、第2Rボタン54Lは、ユーザの右手中指で操作可能な位置に配置される(図9参照)。また、第2Lボタン54Kおよび第2Rボタン54Lは、図8の(c)図に示すように、上記足部59Aおよび59Bの斜め上方を向く面に設けられ、斜め上方を向くボタン面を有する。ユーザが端末装置7を把持した場合には中指は上下方向に動くと考えられるので、ボタン面を上方に向けることで、ユーザは第2Lボタン54Kおよび第2Rボタン54Lを押下しやすくなる。また、ハウジング50の裏面に足部が設けられることにより、ユーザはハウジング50を把持しやすくなり、かつ、足部にボタンが設けられることで、ハウジング50を把持したまま操作しやすくなる。
【0106】
なお、図8に示す端末装置7に関しては、第2Lボタン54Kおよび第2Rボタン54Lが裏面に設けられるので、LCD51の画面(ハウジング50の表面)が上を向いた状態で端末装置7を載置させる場合、画面が完全に水平にはならない場合がある。そのため、他の実施形態においては、ハウジング50の裏面に3つ以上の足部が形成されてもよい。これによれば、LCD51の画面が上を向いた状態では足部が床面に接することで床面に載置できるので、画面が水平になるように端末装置7を載置することができる。また、着脱可能な足部を追加することで端末装置7を水平に載置するようにしてもよい。
【0107】
各ボタン54A〜54Lには、ゲームプログラムに応じた機能が適宜割り当てられる。例えば、十字ボタン54Aおよびボタン54E〜54Hは方向指示操作や選択操作等に用いられてもよいし、各ボタン54B〜54Eは決定操作やキャンセル操作等に用いられてもよい。
【0108】
なお、図示しないが、端末装置7は、端末装置7の電源をオン/オフするための電源ボタンを有している。また、端末装置7は、LCD51の画面表示をオン/オフするためのボタンや、ゲーム装置3との接続設定(ペアリング)を行うためのボタンや、スピーカ(図10に示すスピーカ67)の音量を調節するためのボタンを有していてもよい。
【0109】
図8の(a)図に示すように、端末装置7は、マーカ55Aおよびマーカ55Bからなるマーカ部(図10に示すマーカ部55)をハウジング50の表面に備えている。マーカ部55は、LCD51の上側に設けられる。各マーカ55Aおよびマーカ55Bは、マーカ装置6の各マーカ6Rおよび6Lと同様、1以上の赤外LEDで構成される。マーカ部55は、上述のマーカ装置6と同様、コントローラ5の動き等をゲーム装置3が算出するために用いられる。また、ゲーム装置3はマーカ部55が備える各赤外LEDの点灯を制御することが可能である。
【0110】
端末装置7は、撮像手段であるカメラ56を備えている。カメラ56は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。図8に示すように、本実施形態では、カメラ56はハウジング50の表面に設けられる。したがって、カメラ56は、端末装置7を持っているユーザの顔を撮像することができ、例えばLCD51を見ながらゲームを行っている時のユーザを撮像することができる。
【0111】
なお、端末装置7は、音声入力手段であるマイク(図10に示すマイク69)を備えている。ハウジング50の表面には、マイクロフォン用孔60が設けられる。マイク69はこのマイクロフォン用孔60の奥のハウジング50内部に設けられる。マイクは、ユーザの音声等、端末装置7の周囲の音を検出する。
【0112】
端末装置7は、音声出力手段であるスピーカ(図10に示すスピーカ67)を備えている。図8の(d)図に示すように、ハウジング50の下側側面にはスピーカ孔57が設けられる。スピーカ67の出力音はこのスピーカ孔57から出力される。本実施形態では、端末装置7は2つのスピーカを備えており、左スピーカおよび右スピーカのそれぞれの位置にスピーカ孔57が設けられる。
【0113】
また、端末装置7は、他の装置を端末装置7に接続するための拡張コネクタ58を備えている。本実施形態においては、図8の(d)図に示すように、拡張コネクタ58は、ハウジング50の下側側面に設けられる。なお、拡張コネクタ58に接続される他の装置はどのようなものであってもよく、例えば、特定のゲームに用いるコントローラ(銃型のコントローラ等)やキーボード等の入力装置であってもよい。他の装置を接続する必要がなければ、拡張コネクタ58は設けられていなくともよい。
【0114】
なお、図8に示した端末装置7に関して、各操作ボタンやハウジング50の形状や、各構成要素の数および設置位置等は単なる一例に過ぎず、他の形状、数、および設置位置であってもよい。
【0115】
次に、図10を参照して、端末装置7の内部構成について説明する。図10は、端末装置7の内部構成を示すブロック図である。図10に示すように、端末装置7は、図8に示した構成の他、タッチパネルコントローラ61、磁気センサ62、加速度センサ63、ジャイロセンサ64、ユーザインタフェースコントローラ(UIコントローラ)65、コーデックLSI66、スピーカ67、サウンドIC68、マイク69、無線モジュール70、アンテナ71、赤外線通信モジュール72、フラッシュメモリ73、電源IC74、電池75、および、バイブレータ79を備える。これらの電子部品は、電子回路基板上に実装されてハウジング50内に収納される。
【0116】
UIコントローラ65は、各種の入出力部に対するデータの入出力を制御するための回路である。UIコントローラ65は、タッチパネルコントローラ61、アナログスティック53(アナログスティック53Aおよび53B)、操作ボタン54(各操作ボタン54A〜54L)、マーカ部55、磁気センサ62、加速度センサ63、ジャイロセンサ64、およびバイブレータ79に接続される。また、UIコントローラ65は、コーデックLSI66と拡張コネクタ58に接続される。また、UIコントローラ65には電源IC74が接続され、UIコントローラ65を介して各部に電力が供給される。電源IC74には内蔵の電池75が接続され、電力が供給される。また、電源IC74には、コネクタ等を介して外部電源から電力を取得可能な充電器76またはケーブルを接続することが可能であり、端末装置7は、当該充電器76またはケーブルを用いて外部電源からの電力供給と充電を行うことができる。なお、端末装置7は、図示しない充電機能を有するクレイドルに端末装置7を装着することで充電を行うようにしてもよい。
【0117】
タッチパネルコントローラ61は、タッチパネル52に接続され、タッチパネル52の制御を行う回路である。タッチパネルコントローラ61は、タッチパネル52からの信号に基づいて所定の形式のタッチ位置データを生成してUIコントローラ65へ出力する。タッチ位置データは、タッチパネル52の入力面において入力が行われた位置の座標を表す。なお、タッチパネルコントローラ61は、タッチパネル52からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。また、UIコントローラ65からタッチパネルコントローラ61へは、タッチパネル52に対する各種の制御指示が出力される。
【0118】
アナログスティック53は、ユーザの指で操作されるスティック部がスライドした(または傾倒した)方向および量を表すスティックデータをUIコントローラ65へ出力する。また、操作ボタン54は、各操作ボタン54A〜54Lに対する入力状況(押下されたか否か)を表す操作ボタンデータをUIコントローラ65へ出力する。
【0119】
磁気センサ62は、磁界の大きさおよび方向を検知することで方位を検出する。検出された方位を示す方位データは、UIコントローラ65へ出力される。また、UIコントローラ65から磁気センサ62へは、磁気センサ62に対する制御指示が出力される。磁気センサ62に関しては、MI(磁気インピーダンス)素子、フラックスゲートセンサ、ホール素子、GMR(巨大磁気抵抗)素子、TMR(トンネル磁気抵抗)素子、あるいはAMR(異方性磁気抵抗)素子等を用いたセンサがあるが、方位を検出することができればどのようなものが用いられてもよい。なお、厳密には、地磁気以外に磁界が発生している場所においては、得られた方位データは方位を示さないことになるが、そのような場合であっても、端末装置7が動いた場合には方位データが変化するため、端末装置7の姿勢の変化を算出することができる。
【0120】
加速度センサ63は、ハウジング50の内部に設けられ、3軸(図8の(a)図に示すxyz軸)方向に沿った直線加速度の大きさを検出する。具体的には、加速度センサ63は、ハウジング50の長辺方向をx軸、ハウジング50の表面に対して垂直な方向をy軸、ハウジング50の短辺方向をz軸として、各軸の直線加速度の大きさを検出する。検出された加速度を表す加速度データはUIコントローラ65へ出力される。また、UIコントローラ65から加速度センサ63へは、加速度センサ63に対する制御指示が出力される。加速度センサ63は、本実施形態では例えば静電容量式のMEMS型加速度センサであるとするが、他の実施形態においては他の方式の加速度センサを用いるようにしてもよい。また、加速度センサ63は1軸または2軸方向を検出する加速度センサであってもよい。
【0121】
ジャイロセンサ64は、ハウジング50の内部に設けられ、上記x軸、y軸およびz軸の3軸周りの角速度を検出する。検出された角速度を表す角速度データは、UIコントローラ65へ出力される。また、UIコントローラ65からジャイロセンサ64へは、ジャイロセンサ64に対する制御指示が出力される。なお、3軸の角速度を検出するために用いられるジャイロセンサの数および組み合わせはどのようなものであってもよく、ジャイロセンサ64はジャイロセンサ48と同様、2軸ジャイロセンサと1軸ジャイロセンサとで構成されてもよい。また、ジャイロセンサ64は1軸または2軸方向を検出するジャイロセンサであってもよい。
【0122】
バイブレータ79は、例えば振動モータやソレノイドであり、UIコントローラ65に接続される。UIコントローラ65の指示によりバイブレータ79が作動することによって端末装置7に振動が発生する。これによって、端末装置7を把持しているユーザの手にその振動が伝達される、いわゆる振動対応ゲームを実現することができる。
【0123】
UIコントローラ65は、上記の各構成要素から受け取ったタッチ位置データ、スティックデータ、操作ボタンデータ、方位データ、加速度データ、および角速度データを含む操作データをコーデックLSI66に出力する。なお、拡張コネクタ58を介して端末装置7に他の装置が接続される場合には、当該他の装置に対する操作を表すデータが上記操作データにさらに含まれていてもよい。
【0124】
コーデックLSI66は、ゲーム装置3へ送信するデータに対する圧縮処理、および、ゲーム装置3から送信されたデータに対する伸張処理を行う回路である。コーデックLSI66には、LCD51、カメラ56、サウンドIC68、無線モジュール70、フラッシュメモリ73、および赤外線通信モジュール72が接続される。また、コーデックLSI66はCPU77と内部メモリ78を含む。端末装置7はゲーム処理自体を行なわない構成であるが、端末装置7の管理や通信のための最小限のプログラムを実行する必要がある。電源投入時にフラッシュメモリ73に格納されたプログラムを内部メモリ78に読み出してCPU77が実行することで、端末装置7が起動する。また、内部メモリ78の一部の領域はLCD51のためのVRAMとして使用される。
【0125】
カメラ56は、ゲーム装置3からの指示に従って画像を撮像し、撮像した画像データをコーデックLSI66へ出力する。また、コーデックLSI66からカメラ56へは、画像の撮像指示等、カメラ56に対する制御指示が出力される。なお、カメラ56は動画の撮影も可能である。すなわち、カメラ56は、繰り返し撮像を行って画像データをコーデックLSI66へ繰り返し出力することも可能である。
【0126】
サウンドIC68は、スピーカ67およびマイク69に接続され、スピーカ67およびマイク69への音声データの入出力を制御する回路である。すなわち、コーデックLSI66から音声データを受け取った場合、サウンドIC68は当該音声データに対してD/A変換を行って得られる音声信号をスピーカ67へ出力し、スピーカ67から音を出力させる。また、マイク69は、端末装置7に伝わる音(ユーザの音声等)を検知して、当該音を示す音声信号をサウンドIC68へ出力する。サウンドIC68は、マイク69からの音声信号に対してA/D変換を行い、所定の形式の音声データをコーデックLSI66へ出力する。
【0127】
赤外線通信モジュール72は、赤外線信号を発光し、他の装置との間で赤外線通信を行う。ここでは、赤外線通信モジュール72は、例えばIrDAの規格に従った赤外線通信を行う機能と、テレビ2を制御するための赤外線信号を出力する機能とを備える。
【0128】
コーデックLSI66は、カメラ56からの画像データと、マイク69からの音声データと、UIコントローラ65からの端末操作データとを無線モジュール70を介してゲーム装置3へ送信する。本実施形態では、コーデックLSI66は、画像データおよび音声データに対して、コーデックLSI27と同様の圧縮処理を行う。上記端末操作データ、ならびに、圧縮された画像データおよび音声データは、送信データとして無線モジュール70に出力される。無線モジュール70にはアンテナ71が接続されており、無線モジュール70はアンテナ71を介してゲーム装置3へ上記送信データを送信する。無線モジュール70は、ゲーム装置3の端末通信モジュール28と同様の機能を有している。すなわち、無線モジュール70は、例えばIEEE802.11nの規格に準拠した方式により、無線LANに接続する機能を有する。送信されるデータは必要に応じて暗号化されていてもよいし、されていなくともよい。
【0129】
以上のように、端末装置7からゲーム装置3へ送信される送信データには、操作データ(端末操作データ)、画像データ、および音声データが含まれる。なお、拡張コネクタ58を介して端末装置7に他の装置が接続される場合には、当該他の装置から受け取ったデータが上記送信データにさらに含まれていてもよい。コーデックLSI66は、赤外線通信モジュール72による赤外線通信によって受信したデータを、必要に応じて上記送信データに含めてゲーム装置3へ送信してもよい。
【0130】
また、上述のように、ゲーム装置3から端末装置7へは、圧縮された画像データおよび音声データが送信される。これらのデータはアンテナ71および無線モジュール70を介してコーデックLSI66に受信される。コーデックLSI66は、受信した画像データおよび音声データを伸張する。伸張された画像データはLCD51へ出力され、画像がLCD51に表示される。また、伸張された音声データはサウンドIC68へ出力され、サウンドIC68はスピーカ67から音を出力させる。
【0131】
また、ゲーム装置3から受信されるデータに制御データが含まれる場合、コーデックLSI66およびUIコントローラ65は、制御データに従った制御指示を各部に行う。上述のように、制御データは、端末装置7が備える各構成要素(本実施形態では、カメラ56、タッチパネルコントローラ61、マーカ部55、各センサ62〜64、赤外線通信モジュール72、およびバイブレータ79)に対する制御指示を表すデータである。本実施形態では、制御データが表す制御指示としては、上記各構成要素を動作させたり、動作を休止(停止)させたりする指示が考えられる。すなわち、ゲームで使用しない構成要素については電力消費を抑えるために休止させてもよく、その場合、端末装置7からゲーム装置3へ送信される送信データには、休止した構成要素からのデータが含まれないようにする。なお、マーカ部55は赤外LEDであるので、制御は単に電力の供給のON/OFFでよい。
【0132】
また、ゲーム装置3は、上記赤外線通信モジュール72の出力を制御することによって、テレビ2の動作を制御することが可能である。すなわち、ゲーム装置3は、テレビ2を制御するための制御指令に対応する赤外線信号を赤外線通信モジュール72に出力させるための指示(上記制御データ)を端末装置7に出力する。この指示に応じて、コーデックLSI66は、上記制御指令に対応する赤外線信号を赤外線通信モジュール72に出力させる。ここで、テレビ2は赤外線信号を受光可能な赤外線受光部を備えている。赤外線通信モジュール72から出力された赤外線信号が赤外線受光部によって受光されることで、テレビ2は当該赤外線信号に応じた動作を行う。なお、ゲーム装置3からの上記指示は、赤外線信号のパターンを示すものであってもよいし、端末装置7が赤外線信号のパターンを記憶している場合には、当該パターンを示す指示であってもよい。
【0133】
以上のように、端末装置7は、タッチパネル52、アナログスティック53、および操作ボタン54といった操作手段を備えるが、他の実施形態においては、これらの操作手段に代えて、または、これらの操作手段とともに、他の操作手段を備える構成であってもよい。
【0134】
また、端末装置7は、端末装置7の動き(位置や姿勢、あるいは、位置や姿勢の変化を含む)を算出するためのセンサとして、磁気センサ62、加速度センサ63、およびジャイロセンサ64を備えるが、他の実施形態においては、これらのセンサのうち1つまたは2つのみを備える構成であってもよい。また、他の実施形態においては、これらのセンサに代えて、または、これらのセンサとともに、他のセンサを備える構成であってもよい。
【0135】
また、端末装置7は、カメラ56およびマイク69を備える構成であるが、他の実施形態においては、カメラ56およびマイク69を備えていなくてもよく、また、いずれか一方のみを備えていてもよい。
【0136】
また、端末装置7は、端末装置7とコントローラ5との位置関係(コントローラ5から見た端末装置7の位置および/または姿勢等)を算出するための構成としてマーカ部55を備える構成であるが、他の実施形態ではマーカ部55を備えていない構成としてもよい。また、他の実施形態では、端末装置7は、上記位置関係を算出するための構成として他の手段を備えていてもよい。例えば、他の実施形態においては、コントローラ5がマーカ部を備え、端末装置7が撮像素子を備える構成としてもよい。さらにこの場合、マーカ装置6は赤外LEDに代えて、撮像素子を備える構成としてもよい。
【0137】
[5.ゲーム処理の概要]
以下、図11〜図14を参照して、本実施形態のゲームシステム1において実行されるゲーム処理の概要について説明する。本実施形態では、プレイヤは端末装置7を用いて3次元の仮想空間(ゲーム空間)に点や線を描くことができる。仮想空間を表すゲーム画像は、テレビ2および端末装置7の2つの表示装置に表示される。本実施形態においては、端末装置7は、表示装置としてだけでなく操作装置として用いられる。そのため、コントローラ5は用いられなくてもよく、ゲームシステム1はコントローラ5を含まない構成であってもよい。
【0138】
図11は、本実施形態においてゲーム操作が行われる場合におけるテレビ2および端末装置7を示す図である。図11に示すように、テレビ2には所定の面81が設置される3次元の仮想空間が表示され、端末装置7にもこの面81が表示される。端末装置7においては、面81と表示画面とが一致するように面81が表示される。つまり、面81は、端末装置7が備えるタッチパネル52の入力面に対応する。なお、面81はタッチパネル52の入力面(LCD51の画面)と同じアスペクト比を有する長方形の平面である。また、詳細は後述するが、面81の姿勢は端末装置7の姿勢に対応しており、端末装置7の姿勢を変化させることで仮想空間における面81の姿勢が変化する。なお、図11では、端末装置7は、タッチパネル52が水平となる姿勢であるので、面81も仮想空間において水平になっている。なお、端末装置7にはアイコン82が表示される。詳細は後述するが、アイコン82は、仮想空間に生成された軌跡を移動(回転)させるために用いられる。
【0139】
プレイヤは、端末装置7のタッチパネル52上にタッチペン80や指等で点や線を描くことができる。点や線が描かれた場合、図11に示すように、仮想空間における面81上には、描かれた点や線(図11では線A1)が生成されて表示される。具体的には、タッチパネル52に対する入力(タッチ入力)が行われると、入力が行われた位置(タッチ位置)に対応する面81上の位置が算出される。なお、以下では、タッチ位置に対応する仮想空間の位置(面81上の位置)を「指定位置」と呼ぶ。本実施形態では、点や線を表すためのオブジェクトが上記指定位置に配置されることによって、入力された点や線が表示される。以上のように、プレイヤは、タッチパネル52に対する入力操作によって3次元の仮想空間内に点や線を描くことができる。
【0140】
図12は、図11に示す状態から端末装置7を傾けた場合におけるテレビ2および端末装置7を示す図である。図11に示す状態ではタッチパネル52の入力面が水平となっていたのに対して、図12に示す状態では当該入力面が鉛直となるように端末装置7の姿勢が変化している。タッチパネル52の入力面が鉛直になるように端末装置7の姿勢を変化させると、図12に示すように、仮想空間内の面81も鉛直となるように変化する。なお、本実施形態では、面81は、面81の中央の位置を回転の中心として、端末装置7の姿勢に応じて回転する。また、面81の姿勢が変化した場合、端末装置7に表示される画像の視点および視線方向は、面81と表示画面とが一致するように変化する。
【0141】
図12に示す状態においても図11に示す状態と同様、プレイヤは、タッチパネル52に対する入力操作によって3次元の仮想空間内に点や線を描くことができる。つまり、図12に示す状態で、プレイヤがタッチパネル52に対して線を描くと、仮想空間において鉛直方向に平行となった面81上に線が生成されて表示される。ここで、図12に示す状態においては、面81の姿勢が図11に示す状態とは異なっているので、タッチ入力によって生成される線の位置や向きは図11とは異なる。すなわち、図11に示す状態で生成された線A1は、水平な面内において生成されるのに対して、図12に示す状態で生成される線A2は、鉛直な面内において生成される。したがって、線A1と線A2とで形成される図形は、平面的なものではなく、立体的なものになる。
【0142】
以上のように、本実施形態においては、端末装置7のタッチパネル52に対する入力に応じて、仮想空間内の面81上に図形(点や線)が生成されるとともに、端末装置7の姿勢に応じて面81の姿勢が変化する。これによれば、面81の姿勢を変化させることによって、面81上に生成される図形を立体的なものとすることができる。つまり、プレイヤは、タッチパネル52に対する入力操作によって、3次元の仮想空間において3次元的に自由に図形を描くことができる。
【0143】
また、本実施形態では、プレイヤは、端末装置7の姿勢を変化させる操作によって仮想空間内に線を描くことも可能である。図13は、図12に示す状態から端末装置7を傾けた場合におけるテレビ2および端末装置7を示す図である。図12に示す状態では、タッチパネル52の入力面の法線方向がテレビ2の方向を向いていたのに対して、図13に示す状態では、当該法線方向がテレビ2の方向よりやや横を向いている。また、ここでは、プレイヤは、図12に示す状態から図13に示す状態へ端末装置7の姿勢を変化させる際、タッチパネル52のある1点の位置(アイコン82の位置を除く)をタッチし続けているものとする。図12に示す状態から図13に示す状態となる場合においても上記と同様、図13に示すように、端末装置7の姿勢に応じて面81の姿勢が変化する。この場合、プレイヤが同じ位置をタッチし続けていても、面81の姿勢が変化することによって仮想空間内における指定位置は変化する。したがって、図13に示すように、指定位置が変化した軌跡を表す線A3が生成されて表示される。このように、本実施形態では、タッチパネル52上に線を描く操作の他に、端末装置7の姿勢を変化させる操作によって仮想空間内に線を描くことも可能である。また、端末装置7の姿勢を変化させる操作によって、面81に平行でない向きに線を描くことが可能である。
【0144】
また、本実施形態では、プレイヤは、仮想空間内に生成された図形の向き(姿勢)を変化させることも可能である。図14は、図12に示す状態から図形を回転させた場合におけるテレビ2および端末装置7を示す図である。図12に示す状態では、タッチパネル52の入力面の法線方向がテレビ2の方向を向いていたのに対して、図14に示す状態では図13に示す状態と同様、当該法線方向がテレビ2の方向よりやや横を向いている。また、プレイヤは、図12に示す状態から図13に示す状態へ端末装置7の姿勢を変化させる際、所定の操作(ここでは、タッチパネル52のアイコン82の位置をタッチし続ける操作)を行っているものとする。このように、所定の操作が行われた状態で端末装置7の姿勢が変化される場合、生成された図形の姿勢は、端末装置7の姿勢に応じて面81の姿勢と共に変化する。例えば、図14においては、線A1およびA2からなる図形は、端末装置7が鉛直方向を軸として回転することに応じて、仮想空間における鉛直方向を軸として面81と共に回転する。このとき、テレビ2には、上記図形の向きが変化して表示される。したがって、プレイヤは、アイコン82をタッチしながら端末装置7の姿勢を変化させる操作によって、作成した図形をいろいろな向きから見ることができ、図形の形状を確認することができる。なお、端末装置7に表示される画像に関しては、視線方向が面81の姿勢と共に変化するので、図形は動いていないように見える。また、本実施形態では、上記所定の操作は、アイコン82をタッチする操作であるとするが、他の実施形態では、例えば端末装置7の所定のボタンを押下する操作等、どのような操作であってもよい。
【0145】
[6.ゲーム処理の詳細]
次に、本ゲームシステムにおいて実行されるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる各種データについて説明する。図15は、ゲーム処理において用いられる各種データを示す図である。図15において、ゲーム装置3のメインメモリ(外部メインメモリ12または内部メインメモリ11e)に記憶される主なデータを示す図である。図15に示すように、ゲーム装置3のメインメモリには、ゲームプログラム90、端末操作データ91、および処理用データ98が記憶される。なお、メインメモリには、図15に示すデータの他、ゲームに登場する各種オブジェクトの画像データやゲームに使用される音声データ等、ゲームに必要なデータが記憶される。
【0146】
ゲームプログラム90は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリに記憶される。なお、ゲームプログラム90は、光ディスク4に代えて、フラッシュメモリ17やゲーム装置3の外部装置から(例えばインターネットを介して)取得されてもよい。また、ゲームプログラム90に含まれる一部(例えば、コントローラ5および/または端末装置7の姿勢を算出するためのプログラム)については、ゲーム装置3内に予め記憶されていてもよい。
【0147】
端末操作データ91は、端末装置7に対するプレイヤの操作を表すデータである。端末操作データ91は、端末装置7から送信されてゲーム装置3において取得され、メインメモリに記憶される。端末操作データ91は、操作ボタンデータ92、スティックデータ93、タッチ位置データ94、角速度データ95、加速度データ96、および方位データ97を含む。端末操作データ91は、図15に示す各データの他、カメラ56によって撮像された画像のデータや、マイク69によって検出された音声データを含んでいてもよい。なお、メインメモリには、最新の(最後に取得された)ものから順に所定個数の端末操作データが記憶されてもよい。
【0148】
操作ボタンデータ92は、端末装置7に設けられる各操作ボタン54A〜54Lに対する入力状態を表すデータである。具体的には、操作ボタンデータ92は、各操作ボタン54A〜54Lが押下されているか否かを表す。
【0149】
スティックデータ93は、アナログスティック53(アナログスティック53Aおよび53B)のスティック部がスライドした(または傾倒した)方向および量を表すデータである。上記方向および量は、例えば2次元座標や2次元ベクトルとして表されてもよい。
【0150】
タッチ位置データ94は、タッチパネル52の入力面において入力が行われた位置(タッチ位置)を表すデータである。本実施形態では、タッチ位置データ94は、上記入力面上の位置を示すための2次元座標系の座標値を表す。なお、タッチパネル52がマルチタッチ方式である場合には、タッチ位置データ94は複数のタッチ位置を表すこともある。
【0151】
角速度データ95は、ジャイロセンサ64によって検出された角速度を表すデータである。本実施形態では、角速度データ95は、図8に示すxyzの3軸回りのそれぞれの角速度を表すものであるが、他の実施形態においては、任意の1軸以上の軸回り角速度を表すものであればよい。
【0152】
加速度データ96は、加速度センサ63によって検出された加速度(加速度ベクトル)を表すデータである。本実施形態では、加速度データ96は、図8に示すxyzの3軸の方向に関する加速度を各成分とする3次元の加速度を表すものであるが、他の実施形態においては、任意の1以上の方向に関する加速度を表すものであればよい。
【0153】
方位データ97は、磁気センサ62によって検出された方位を表すデータである。本実施形態では、方位データ97は、端末装置7を基準として所定の方位(例えば北)の向きを表す。なお、地磁気以外の磁界が発生している場合においては、方位データ97は厳密には絶対的な方位(北等)を示さないことになる。ただし、その場所における磁界の方向に対する端末装置7の相対的な方向が方位データ97によって示されるので、そのような場合であっても方位データ97に基づいて端末装置7の姿勢または姿勢の変化を算出することが可能である。
【0154】
なお、端末操作データ91は、端末装置7に対する操作を表すものであればよく、上記各データ92〜97のいずれか1つのみを含むものであってもよい。また、端末装置7が他の入力手段(例えば、タッチパッドや、コントローラ5の撮像手段等)を有する場合には、端末操作データ91は、当該他の入力手段に対する操作を表すデータを含んでいてもよい。なお、本実施形態のように端末装置7自体の動きをゲーム操作として用いる場合には、端末操作データ91は、加速度データ96、角速度データ95、または方位データ97のように、端末装置7自体の動きに応じて値が変化するデータを含むことが好ましい。
【0155】
また、本実施形態においては、端末操作データ91の他、カメラ画像データおよび/またはマイク音データが端末装置7からゲーム装置3へ送信されてもよい。カメラ画像データは、端末装置7のカメラ56によって撮像された画像(カメラ画像)を表すデータである。マイク音データは、端末装置7のマイク69によって検出された音声(マイク音)を表すデータである。なお、これらカメラ画像データおよびマイク音データは、コーデックLSI66によって圧縮されてゲーム装置3へ送信され、ゲーム装置3においてコーデックLSI27によって伸張されてメインメモリに記憶されてもよい。
【0156】
また、本実施形態ではコントローラ5が操作装置として用いられないので図示しないが、メインメモリには、コントローラ5に対するプレイヤの操作を表すコントローラ操作データが記憶されてもよい。
【0157】
処理用データ98は、後述するゲーム処理(図16)において用いられるデータである。処理用データ98は、端末姿勢データ99、面姿勢データ100、面座標データ101、空間座標データ102、図形データ103、および、端末カメラデータ105を含む。なお、図15に示すデータの他、処理用データ98は、ゲームに登場する各種オブジェクトに設定される各種パラメータを表すデータ等、ゲーム処理において用いられる各種データを含む。
【0158】
端末姿勢データ99は、端末装置7の姿勢を表すデータである。端末装置7の姿勢は、例えば、所定の基準姿勢から現在の端末装置7の姿勢への回転を表す回転行列によって表現されてもよいし、3次のベクトルまたは3つの角度によって表現されてもよい。また、本実施形態においては、端末装置7の姿勢として3次元空間における姿勢が用いられるが、他の実施形態においては、2次元平面における姿勢が用いられてもよい。本実施形態では、端末姿勢データ99は、上記端末操作データ91に含まれる角速度データ95および加速度データ96に基づいて算出される。端末姿勢データ99の算出方法についてはステップS11で後述する。
【0159】
面姿勢データ100は、仮想空間に設定される面81の姿勢を表すデータである。面姿勢データ100が表す面81の姿勢は、回転行列によって表現されてもよいし、3次のベクトルまたは3つの角度によって表現されてもよいし、平面の式によって表現されてもよい。なお、本実施形態においては、面81の位置は予め定められた位置に固定される。
【0160】
面座標データ101は、上記指定位置の面座標を表すデータである。ここで、面座標とは、面81を基準とした座標系(面座標系)によって上記指定位置を表現する座標である。なお、指定位置は面81上の点であるので、面座標データ101は2次元の座標値を表すものであってもよい。面81上の指定位置は、タッチパネル52上のタッチ位置に対応し、面座標データ101は、タッチ位置データ94に基づいて算出される。
【0161】
空間座標データ102は、上記指定位置の空間座標を表すデータである。ここで、空間座標とは、仮想空間を基準とした座標系(空間座標系)によって上記指定位置を表現した座標である。空間座標データ102は、指定位置を3次元の座標値によって表す。空間座標データ102は、面姿勢データ100と上記面座標データ101とに基づいて算出される。
【0162】
図形データ103は、指定位置によって形成される図形を表すデータである。図形データ103には、1以上の軌跡データ104が含まれる。軌跡データ104は、算出された指定位置の軌跡を表すデータである。具体的には、軌跡データ104は、タッチパネル52に対して連続して入力が行われる場合(すなわち、タッチ位置が連続して検出される場合)、タッチ位置に対応する指定位置を古いものから順に表す。軌跡データ104は、指定位置を上記空間座標系で表現した座標値を表す。また、本実施形態においては、あるタッチ入力が終了してから新たに次のタッチ入力が行われる場合、当該あるタッチ入力に応じて生成された軌跡データ104とは別に、当該次のタッチ入力に応じて新たな軌跡データ104が生成されてメインメモリに記憶される。
【0163】
端末カメラデータ105は、端末用画像を生成するために用いられる仮想カメラ(端末用仮想カメラ)の位置および姿勢を表すデータである。本実施形態においては、端末用仮想カメラの位置および姿勢は、面81の位置に基づいて設定される。
【0164】
上記各データ99〜104の他、メインメモリには、ゲーム処理において必要となる各種のデータが記憶される。本実施形態においては、例えば、つかみ状態であるか否かを表すフラグデータが記憶される。つかみ状態とは、上記アイコン82がタッチされている状態であり、上記指定位置の軌跡によって形成される図形を移動可能な状態である。
【0165】
次に、ゲーム装置3において実行されるゲーム処理の詳細を、図16〜図20を用いて説明する。図16は、ゲーム装置3において実行されるゲーム処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図16に示すフローチャートは、以上の処理が完了した後に行われる処理を示すフローチャートである。なお、ゲーム装置3においては、電源投入後にゲームプログラムがすぐに実行される構成であってもよいし、電源投入後にまず所定のメニュー画面を表示する内蔵プログラムが実行され、その後例えばプレイヤによるメニュー画面に対する選択操作によってゲームの開始が指示されたことに応じてゲームプログラムが実行される構成であってもよい。
【0166】
なお、図16、図17、図20、および図21に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判断ステップで利用される閾値も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、上記フローチャートの各ステップの処理をCPU10が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、CPU10以外のプロセッサや専用回路が実行するようにしてもよい。
【0167】
まずステップS1において、CPU10は初期処理を実行する。初期処理は、仮想空間を構築し、仮想空間に登場する各オブジェクトを初期位置に配置したり、ゲーム処理で用いる各種パラメータの初期値を設定したりする処理である。なお、本実施形態においては、面81が所定の位置および所定の姿勢で仮想空間内に配置される。面81の初期位置および初期姿勢を表すデータはメインメモリに記憶される。また、テレビ用画像を生成するために用いられる仮想カメラ(テレビ用仮想カメラ)、および、端末用画像を生成するために用いられる仮想カメラ(端末用仮想カメラ)が、所定の初期位置および初期姿勢で設定される。テレビ用仮想カメラの初期位置および初期姿勢を表すデータはメインメモリに記憶され、端末用仮想カメラの初期位置および初期姿勢を表すデータは、端末用カメラデータ105としてメインメモリに記憶される。なお、テレビ用仮想カメラは、面81が視野範囲に含まれるような、予め定められた位置および姿勢に設定される。端末用仮想カメラの初期位置および初期姿勢は、視線方向が面81に垂直となり、かつ、面81がLCD51の表示画面と一致するように設定される。また、ステップS1では、つかみ状態でないことを表すデータが上記フラグデータとしてメインメモリに記憶される。ステップS1の次にステップS2の処理が実行される。以降、ステップS2〜S8の一連の処理からなる処理ループが所定時間(1フレーム時間。例えば1/60秒)に1回の割合で繰り返し実行される。
【0168】
ステップS2において、CPU10は、端末装置7から送信されてくる端末操作データを取得する。端末装置7は、端末操作データをゲーム装置3へ繰り返し送信するので、ゲーム装置3は端末操作データを逐次受信する。ゲーム装置3においては、端末通信モジュール28が端末操作データを逐次受信し、入出力プロセッサ11aが端末操作データをメインメモリに逐次記憶する。ステップS2においては、CPU10は、最新の端末操作データ91をメインメモリから読み出す。ステップS2の次にステップS3の処理が実行される。
【0169】
ステップS3において、CPU10はゲーム制御処理を実行する。ゲーム制御処理は、プレイヤによる操作に従って、点や線を表すオブジェクトを仮想空間内に生成したり、当該オブジェクトを移動させる処理等を実行する処理である。以下、図17を参照して、ゲーム制御処理の詳細について説明する。
【0170】
図17は、図16に示すゲーム制御処理(ステップS3)の詳細な流れを示すフローチャートである。ゲーム制御処理においてはまずステップS11において、CPU10は端末装置7の姿勢を算出する。端末装置7の姿勢は、端末操作データが表す、姿勢を算出するための物理量に基づいて算出される。なお、本実施形態においては、姿勢を算出するための物理量として、角速度データ95が表す角速度と、加速度データ96が表す加速度が用いられる。以下、姿勢算出処理の詳細について説明する。
【0171】
姿勢算出処理においては、まず、CPU10は、角速度データ95に基づいて端末装置7の姿勢を算出する。角速度に基づく姿勢を算出する方法はどのような方法であってもよいが、当該姿勢は、前回の姿勢(前回の処理ループにおけるステップS11で算出された姿勢)と、今回の角速度(今回の処理ループにおけるステップS2で取得された角速度)とを用いて算出される。具体的には、CPU10は、前回の姿勢を今回の角速度で単位時間分だけ回転させることによって姿勢を算出する。なお、前回の姿勢は、メインメモリに記憶されている端末姿勢データ99により表され、今回の角速度は、メインメモリに記憶されている角速度データ95により表される。したがって、CPU10は、端末姿勢データ99および角速度データ95をメインメモリから読み出して、端末装置7の姿勢を算出する。以上のようにして算出された姿勢を表すデータはメインメモリに記憶される。
【0172】
なお、角速度から姿勢を算出する場合、初期姿勢を定めておくのがよい。つまり、端末装置7の姿勢を角速度から算出する場合には、CPU10は、最初に端末装置7の初期姿勢を設定しておく。端末装置7の初期姿勢は、加速度データ96に基づいて算出されてもよいし、端末装置7を特定の姿勢にした状態でプレイヤに所定の操作を行わせることで、所定の操作が行われた時点における特定の姿勢を初期姿勢として設定するようにしてもよい。なお、空間における所定方向を基準とした絶対的な姿勢として端末装置7の姿勢を算出する場合には上記初期姿勢を算出することが良いが、例えばゲーム開始時点における端末装置7の姿勢を基準とした相対的な姿勢として端末装置7の姿勢を算出する場合には、上記初期姿勢は算出されなくても良い。
【0173】
角速度に基づいて姿勢を算出すると次に、CPU10は、算出された姿勢を、端末装置7の加速度に基づいて補正する。ここで、端末装置7がほぼ静止している状態では、端末装置7に対して加えられる加速度は重力加速度に相当する。つまり、この状態では、加速度データ96が表す加速度ベクトルは、端末装置7における重力方向を表す。したがって、CPU10は、角速度に基づいて算出された姿勢の下方向(重力方向)を、加速度ベクトルの表す重力方向へ近づける補正を行う。すなわち、上記下方向が加速度ベクトルの表す重力方向へ所定の割合で近づくように、上記姿勢を回転させる。これによって、角速度に基づく姿勢を、加速度に基づく重力方向を考慮した姿勢となるように補正することができる。なお、上記所定の割合は、予め定められた固定値であってもよいし、検出される加速度等に応じて設定されてもよい。例えば、CPU10は、検出される加速度の大きさが重力加速度の大きさに近い場合には、上記姿勢の下方向を加速度ベクトルの表す重力方向へ近づける割合を大きくし、検出される加速度の大きさが重力加速度の大きさから離れている場合には、当該割合を小さくするようにしてもよい。
【0174】
具体的には、CPU10は、角速度に基づいて算出された姿勢を表すデータと、加速度データ96とをメインメモリから読み出し、上記の補正を行う。そして、補正が行われた後の姿勢を表すデータを端末姿勢データ99としてメインメモリに記憶する。以上のステップS11の次にステップS12の処理が実行される。
【0175】
また、本実施形態においては、CPU10は、慣性センサ(加速度センサ63およびジャイロセンサ64)の検出結果に基づいて端末装置7の姿勢を算出した。ここで、他の実施形態においては、端末装置7の姿勢の算出方法はどのような方法であってもよい。例えば、他の実施形態においては、端末装置7が他のセンサ部(例えば磁気センサ62やカメラ56)を有している場合には、当該他のセンサ部の検出結果を用いてコントローラ5の姿勢が算出されてもよい。すなわち、CPU10は、磁気センサ62によって検出される方位データ97から、端末装置7を基準とした所定の方位(すなわち、所定の方位を基準とした端末装置7の姿勢)を知ることができる。したがって、他の実施形態においては、CPU10は、角速度データ95および加速度データ96に加えて、上記方位データ97をさらに用いて端末装置7の姿勢を算出してもよい。方位データ97を用いて端末装置7の姿勢を算出する場合には、実空間における所定方向を基準とした絶対的な姿勢を算出することができるので、端末装置7の姿勢をより正確に算出することができる。なお、方位データ97に関して、地磁気以外の磁界が発生している場所においては、方位データは厳密には絶対的な方位(北等)を示さないことになるが、その場所における磁界の方向に対する端末装置7の相対的な方向が示されるので、そのような場合であっても端末装置7の姿勢を算出することが可能である。また、他の実施形態においては、上記3つのデータのうち1つまたは2つに基づいて姿勢を算出するようにしてもよい。また、例えば、ゲームシステム1が端末装置7を撮像するカメラを備えている場合には、ゲーム装置3は当該カメラで端末装置7を撮像した撮像結果を取得し、撮像結果を用いて端末装置7の姿勢を算出するようにしてもよい。
【0176】
ステップS12において、CPU10は、端末装置7の姿勢に応じて姿勢が変化するように面81を設定する。本実施形態においては、面81の位置は変化しないので、CPU10は、端末装置7の姿勢に基づいて面81の姿勢を算出する。本実施形態では、仮想空間における面81の姿勢は、現実空間における端末装置7の姿勢に対応するように制御される。具体的には、端末装置7のy軸(図9参照)が水平でかつテレビ2の方を向くときの端末装置7の姿勢を基準姿勢とし、端末装置7が当該基準姿勢となる場合に面81は仮想空間において水平となる。そして、端末装置7の姿勢が上記基準姿勢から変化した場合、面81は、当該基準姿勢時における面81の姿勢から、端末装置7の姿勢の変化方向に応じた方向に、変化量に応じた量だけ(本実施形態では、端末装置7の回転量と面81の回転量が等しくなるように)回転される。なお、面81の姿勢は、端末装置7の姿勢の変化に応じて変化するように制御されればどのように制御されてもよい。
【0177】
ステップS12の具体的な処理としては、CPU10は、端末姿勢データ99をメインメモリから読み出し、端末装置7の姿勢に基づいて面81の姿勢を算出する。算出された面81の姿勢を表すデータは、面姿勢データ100としてメインメモリに記憶される。なお、本実施形態においては、面81の姿勢は、例えば、面81を基準とした3次元の面座標系における3軸の方向を空間座標系によって表す3つのベクトルとして表現されてもよい。ステップS12の次にステップS13の処理が実行される。
【0178】
ステップS13において、CPU10は、図形移動処理を実行する。図形移動処理は、プレイヤによる入力に応じて設定された指定位置によって形成される図形を、端末装置7の姿勢に応じて移動(回転)させる処理である。図形移動処理の詳細については後述する。ステップS13の次にステップS14の処理が実行される。
【0179】
ステップS14において、CPU10は、タッチパネル52に対してタッチ入力が行われたか否かを判定する。この判定は、ステップS2で読み出されるタッチ位置データ94を参照することで行うことができる。ステップS14の判定結果が肯定である場合、ステップS15の処理が実行される。一方、ステップS14の判定結果が否定である場合、ステップS15〜S20の処理がスキップされ、後述するステップS21の処理が実行される。
【0180】
ステップS15およびステップS16においては、タッチ位置に基づいて上記指定位置が算出される。上述のように、本実施形態においては、タッチ位置によって決められる面81上の位置が指定位置として算出される。図18は、タッチパネル52の入力面上のタッチ位置に基づいて指定位置を算出する方法を説明するための図である。図18に示すように、面81上の指定位置P2は、タッチパネル52の入力面上におけるタッチ位置P1に対応する面81上の位置として算出される。本実施形態では、まず、タッチ位置P1に基づいて指定位置P2の面座標(Ps,Pt)が算出される。面座標(Ps,Pt)は、面81を基準とした面座標系(stu座標系)で表現される座標である。なお、ここでは、面座標系は、面81の横方向を向くs軸と、面81の縦方向を向くt軸と、面81に垂直な方向を向くu軸とで構成される。したがって、面81上の位置はs方向成分およびt方向成分の2次元座標(Ps,Pt)で表現される。なお、面座標系のu軸は、後述する図形移動処理において面81上にない位置を面座標系で表す目的で設定される。面座標(Ps,Pt)は、例えば、タッチ位置P1の座標値を、面81の大きさとタッチパネル52の入力面の大きさとの比率に応じてスケーリングする(所定の定数を乗算する)ことによって算出される。なお、上記比率が“1”となるように面座標系および空間座標系を設定する場合には、タッチ位置P1の座標値をそのまま面座標(Ps,Pt)として用いることができる。
【0181】
指定位置P2の面座標(Ps,Pt)が算出されると、次に、面座標(Ps,Pt)が空間座標(PS,PT,PU)に変換される。空間座標(PS,PT,PU)は、指定位置P2を空間座標系(STU座標系)で表現した座標値である。なお、空間座標系における面座標系の原点の位置および各軸の向きは、面81の位置および姿勢によって決まる。したがって、面81の位置(下記(DS,DT,DU))および姿勢(下記ベクトルAおよびベクトルB)と、面座標(Ps,Pt)とに基づいて、空間座標(PS,PT,PU)を算出することができる。具体的には、空間座標(PS,PT,PU)は、以下の式(1)に従って算出することができる。
PS=Ps×AS+Pt×AS+DS
PT=Ps×AT+Pt×AT+DT
PU=Ps×AU+Pt×AU+DU …(1)
上式(1)においては、面座標系におけるs軸の正方向を向く単位ベクトルAの各成分を(AS,AT,AU)とし、面座標系におけるt軸の正方向を向く単位ベクトルBの各成分を(BS,BT,BU)とする。また、面座標系における原点の(空間座標系における)位置を(DS,DT,DU)とする。
【0182】
具体的には、まずステップS15において、CPU10は、タッチ位置に対応する指定位置の面座標を算出する。上述のように、面座標は、タッチパネル52の入力面上におけるタッチ位置P1に対応する面81上の位置P2として算出される。面座標の具体的な算出方法はどのような方法であってもよいが、面座標は、タッチパネル52の入力面の四辺に対するタッチ位置P1の位置関係と、面81の四辺に対する指定位置P2の位置関係とが同じになるように算出される。具体的に本実施形態では、上述のように、面座標は、タッチ位置P1の座標値を上記の比率に応じてスケーリングすることによって算出される。ステップS15の具体的な処理としては、CPU10は、ステップS2で読み出されたタッチ位置データ94が表すタッチ位置から、タッチ位置に対応する面81上の位置を面座標系によって表現する2次元座標を算出する。そして、算出された2次元座標を表すデータを面座標データ101としてメインメモリに記憶する。ステップS15の次にステップS16の処理が実行される。
【0183】
ステップS16において、CPU10は、上記面座標から指定位置の空間座標を算出する。上述のように、空間座標は、面座標と、面81の位置および姿勢(すなわち、空間座標系における面座標系の原点位置および各座標軸の向き)とに基づいて算出することができる。すなわち、CPU10は、面姿勢データ100と面座標データ101とをメインメモリから読み出し、面座標と面81の位置および姿勢を上式(1)に代入することによって空間座標を算出する。算出された空間座標を表すデータは、空間座標データ102としてメインメモリに記憶される。ステップS16の次にステップS17の処理が実行される。
【0184】
上記ステップS15およびS16によれば、CPU10は、仮想空間内の指定位置として、タッチパネル52(LCD51)の表示画面上においてタッチ位置に対応する(仮想空間内の)位置を算出する。つまり、表示画面上においては、プレイヤがタッチした位置が指定位置となるので、プレイヤは、直感的かつ分かりやすい操作で指定位置を指定することができる。
【0185】
ステップS17において、CPU10は、タッチ入力が開始されたか否か(タッチ入力が開始された直後であるか否か)を判定する。具体的には、CPU10は、前回の処理ループ(ステップS2〜S8の一連の処理からなる処理ループ)においてタッチ入力があったか否かを判定する。なお、タッチパネル52の誤検出やプレイヤの誤操作を考慮して、CPU10は、前回のタッチ入力だけでなく、過去所定回数に連続してタッチ入力があったかどうかを判定するようにしてもよい。ステップS17の判定結果が肯定である場合、ステップS18の処理が実行される。一方、ステップS17の判定結果が否定である場合、ステップS19の処理が実行される。
【0186】
ステップS18において、CPU10は、ステップS15およびS16で算出された指定位置を、新たな軌跡の始点として記憶する。具体的には、CPU10は、メインメモリに記憶されている空間座標データ102を、新たな軌跡データ104としてメインメモリに記憶する。これによって、図形データ103に含まれる軌跡データ104が1つ追加されたことになる。つまり、図形を構成する軌跡が1つ追加されたことになる。ステップS18の次にステップS20の処理が実行される。
【0187】
ステップS19において、CPU10は、ステップS15およびS16で算出された指定位置を、既存の軌跡の終点として記憶する。具体的には、CPU10は、図形データ103に含まれる軌跡データ104のうちで最新のものについて、空間座標データ102を当該軌跡データ104に追加するように更新する。これによって、上記指定位置が最新の軌跡の終点に追加されたことになる。ステップS19の次にステップS20の処理が実行される。
【0188】
ステップS20において、CPU10は、ステップS15およびS16で算出された指定位置に所定のオブジェクトを配置する。ここで、所定のオブジェクトは、どのような形状であってもよいが、本実施形態では、指定位置の軌跡を表すオブジェクトが配置される。すなわち、CPU10は、1つの軌跡データ104に含まれる1以上の指定位置が1本の線を形成するように、オブジェクトを配置する。具体的には、1回のステップS20の処理においては、最新の指定位置と1つ前の指定位置とを結ぶ線状のオブジェクトが配置される。この線状のオブジェクトは、例えば、どの方向から見ても線状に見えるように、円柱形のオブジェクトであってもよい。また、最新の指定位置が軌跡の始点である場合には、点を表すオブジェクト(例えば球状のオブジェクト)が配置される。なお、本実施形態においては、ステップS20で配置されたオブジェクトは、以降の処理においても配置され続けるが、他の実施形態においては、例えばプレイヤの指示に従って消去されてもよい。また、上記ステップS20で配置されたオブジェクトは、プレイヤによって所定の操作が行われたことに応じて、所定方向に順次(自動的に)移動されてもよい。これによれば、プレイヤは、例えば、仮想空間内の一点を指定するだけで直線を描いたり、オブジェクトの移動方向と垂直な方向にタッチ位置を往復させることによって波線を描いたりすることができ、より多彩な線を容易に描くことができる。ステップS20の次にステップS21の処理が実行される。
【0189】
ステップS21において、CPU10は、面81の姿勢に応じて端末用仮想カメラを制御する。図19は、面81と端末用仮想カメラ85との位置関係を示す図である。なお、図19は、面81と平行な方向から面81を見た図である。図19に示すように、面81の姿勢が変化した場合、面81の姿勢に応じて端末用仮想カメラ85の位置および姿勢が変化する。具体的には、端末用仮想カメラ85は、面81が視野範囲に含まれるように設定される。本実施形態においては、面81の外周と端末用仮想カメラ85の視野範囲の外縁とが一致するように端末用仮想カメラ85が設定される。したがって、端末用仮想カメラ85の位置は、面81の中心位置P3を通りかつ面81に垂直な直線上であって、面81からの距離が視野範囲に応じた所定距離となる位置に設定される。また、端末用仮想カメラ85の姿勢は、面81の中心位置P3を向くように設定される。以上のように端末用仮想カメラ85が設定されることによって、端末装置7のLCD51には、タッチパネル52の入力面と面81とが画面上において一致するように面81が表示されることになる(図12等参照)。これによれば、指定位置は、プレイヤがタッチした画面上の位置となり、当該位置に点や線を表すオブジェクトが生成されて表示されるので、タッチパネル52の操作を直感的でわかりやすい操作にすることができる。
【0190】
ステップS21の具体的な処理としては、CPU10は、メインメモリから面姿勢データ100を読み出し、面81の位置および姿勢に基づいて端末用仮想カメラ85の位置および姿勢を算出する。そして、算出された位置および姿勢を表すデータを端末カメラデータ105としてメインメモリに記憶する。ステップS21の後、CPU10はゲーム制御処理を終了する。
【0191】
次に、上記図形移動処理の詳細について説明する。図20は、図17に示す図形移動処理(ステップS13)の詳細な流れを示すフローチャートである。図形移動処理においてはまずステップS31において、CPU10は、現在の状態がつかみ状態であるか否かを判定する。この判定は、メインメモリに記憶される上記フラグデータを読み出し、フラグデータを参照することによって行うことができる。ステップS31の判定結果が肯定である(つかみ状態である)場合、後述するステップS35の処理が実行される。一方、ステップS31の判定結果が否定である(つかみ状態でない)場合、ステップS32の処理が実行される。
【0192】
ステップS32において、CPU10は、つかみ状態が開始されたか否かを判定する。ここで、つかみ状態が開始される場合とは、前回の処理ループ(ステップS2〜S8の処理ループ)においてアイコン82に対するタッチ入力がなく、かつ、今回の処理ループにおいてアイコン82に対するタッチ入力がある場合である。具体的には、CPU10は、上記フラグデータをメインメモリから読み出し、フラグデータがつかみ状態でないことを表し、かつ、ステップS2で読み出されたタッチ位置データ94がアイコン82の位置を表す場合、つかみ状態が開始されたと判定する。一方、上記フラグデータがつかみ状態であることを表すか、または、ステップS2で読み出されたタッチ位置データ94がアイコン82以外の位置を表す場合、つかみ状態が開始された時点ではないと判定する。ステップS32の判定結果が肯定である場合、ステップS33の処理が実行される。一方、ステップS32の判定結果が否定である場合、CPU10は図形移動処理を終了する。
【0193】
ステップS33において、CPU10は、指定位置で形成される図形を保存する。なお、本実施形態では、CPU10は、図形を構成する各指定位置を面座標系による座標値で保存する。すなわち、CPU10は、メインメモリから図形データ104と面姿勢データ100とを読み出し、図形データ104が表す1以上の指定位置の空間座標を面座標に変換する。この変換は、面姿勢データ100が表す面81の姿勢を用いて行われる。CPU10は、変換された面座標を表すデータをメインメモリに記憶する。なお、このデータは、図形データ103に含まれる軌跡データ104と同様、各指定位置を軌跡毎にまとめた形式で記憶される。ステップS33の次にステップS34の処理が実行される。
【0194】
ステップS34において、CPU10は、上記フラグデータをつかみ状態を表すように設定する。すなわち、CPU10は、メインメモリに記憶されるフラグデータを、つかみ状態であることを表すように更新する。これによって、これ以降、アイコン82に対するタッチ入力がなくなるまで、ステップS31の判定処理ではつかみ状態であると判定されることになる。ステップS34の次に、後述するステップS37の処理が実行される。
【0195】
一方、ステップS35において、CPU10は、つかみ状態が終了したか否かを判定する。すなわち、CPU10は、ステップS2で読み出されたタッチ位置データ94がアイコン82以外の位置を表すか、または、タッチ入力がないことを表す場合、つかみ状態が終了したと判定する。一方、上記タッチ位置データ94がアイコン82の位置を表す場合、つかみ状態が終了していない(継続している)と判定する。ステップS35の判定結果が肯定である場合、ステップS36の処理が実行される。一方、ステップS35の判定結果が否定である場合、ステップS36の処理がスキップされてステップS37の処理が実行される。
【0196】
ステップS36において、CPU10は、上記フラグデータをつかみ状態を解除するように設定する。すなわち、CPU10は、メインメモリに記憶されるフラグデータを、つかみ状態でないことを表すように更新する。これによって、これ以降の処理においては、ステップS31の判定処理ではつかみ状態でないと判定されることになる。ステップS36の次にステップS37の処理が実行される。
【0197】
ステップS37において、CPU10は、指定位置で形成される図形を移動する。本実施形態では、図形は、操作装置7の姿勢の変化に応じて(すなわち、面81の姿勢の変化に応じて)回転する。なお、ここでは、図形の回転中心は、面81と同様、面81の中心位置である。ここで、上述のように、現在(回転後)の指定位置の空間座標は、指定位置の面座標と、現在の面81の姿勢とに基づいて算出することができる。したがって、CPU10は、ステップS33で保存された面座標を表すデータと、面姿勢データ100とをメインメモリから読み出し、当該面座標を、面81の姿勢を用いて空間座標に変換する。これによって、面81の姿勢に応じて回転された図形を形成する指定位置の空間座標を算出することができる。CPU10は、算出された1以上の空間座標を表すデータを、新たな図形データ103としてメインメモリに記憶する。ステップS37の後、CPU10は図形移動処理を終了する。
【0198】
上記図形移動処理によれば、CPU10は、端末装置7に対する操作に基づいて上記図形を表すオブジェクトを移動(回転)させる(ステップS37)。したがって、プレイヤは、描いた図形をいろいろな位置または方向から見ることができ、描いた図形の形状を容易に確認することができる。本実施形態では、図形が3次元的な形状であるので、図形をいろいろな位置または方向から見ることが特に有効である。
【0199】
また、本実施形態においては、CPU10は、端末装置7に対する操作に関して所定の条件(具体的には、アイコン82を指定する操作が行われたこと)が満たされる場合(ステップS31でYesまたはステップS32でYes)、上記図形のオブジェクトを端末装置7の姿勢に基づいて移動させる(ステップS37)。一方、上記所定の条件が満たされない場合(ステップS32でNo)、CPU10は、端末装置7の姿勢に基づく上記オブジェクトの移動を行わない。上記によれば、プレイヤは、端末装置7の姿勢を変化させるという直感的で容易な操作によって図形の向きを変化させることができる。さらに、上記によれば、プレイヤは、面81の姿勢を変化させる操作と同じ操作によって図形の向きを変化させることができるので、操作性をより向上することができる。
【0200】
また、本実施形態においては、図形移動処理において図形を移動するために、CPU10は、図形を構成する各指定位置の面座標を記憶するようにした。すなわち、ステップS33の処理においては指定位置の面座標が記憶され、図形を移動させるステップS37の処理においては、当該面座標と、現在の面81の姿勢とを用いて、移動後の指定位置の空間座標が算出された。ここで、他の実施形態においては、CPU10は、ステップS33の処理において、図形を構成する各指定位置の空間座標を記憶するようにしてもよい。このとき、ステップS37の処理においては、CPU10は、前回の処理ループにおける面81の姿勢から今回の処理ループにおける面81の姿勢までの変化に応じて、図形を回転させてもよい。具体的には、面81の姿勢の変化方向と同じ方向に、面81の姿勢の変化量と同じ量だけ図形を移動(回転)させるようにしてもよい。ここで、空間座標を記憶する方法では、ステップS37の処理において面81の変化と図形の変化との間に誤差が生じ、ステップS37の処理が繰り返されることによって誤差が蓄積するおそれがある。そのため、面81の回転に合わせて図形を正確に回転させることができないおそれがある。これに対して、本実施形態によれば、ステップS33で面座標を保存することによって、保存した面座標と現在の面81の姿勢とを用いて移動後の指定位置を算出することができる。これによれば、誤差が蓄積されることがないので、面81の回転に合わせて図形を正確に回転させることができる。
【0201】
また、本実施形態における上記ステップS37の処理においては、仮想空間に配置された図形の全体が移動された。ここで、他の実施形態においては、上記図形の一部のみが移動されてもよい。例えば、CPU10は、プレイヤによって指定された軌跡のみを上記ステップS33で保存し、当該軌跡のみを上記ステップS37で移動させるようにしてもよい。なお、軌跡はどのような方法で指定されてもよいが、例えば、画面上におけるタッチ位置に表示される軌跡が指定されてもよい。
【0202】
図16の説明に戻り、ステップS3のゲーム制御処理の次にステップS4の処理が実行される。ステップS4においては、テレビ用画像が生成される。すなわち、CPU10およびGPU11bは、ステップS3のゲーム制御処理の結果を表すデータ(ゲーム空間における面81やオブジェクトのデータ等)をメインメモリから読み出し、また、ゲーム画像を生成するために必要なデータをVRAM11dから読み出し、テレビ用画像を生成する。本実施形態では、テレビ用仮想カメラは、面81を視野範囲に含む位置に設定される。したがって、面81の位置を含む仮想空間内の領域を表すテレビ用画像が生成される。生成されたテレビ用画像はVRAM11dに記憶される。上記ステップS4の次にステップS5の処理が実行される。
【0203】
また、本実施形態においては、指定位置に所定のオブジェクトが配置される(ステップS20)ことによって、指定位置に対応するテレビ用画像上の位置に当該オブジェクトの画像が生成される。したがって、プレイヤは、タッチパネル52の入力面に対して入力を行った位置を容易に確認することができ、入力面上に描いた図形を容易に確認することができる。また、プレイヤは、入力面に対して点や線を描くことで、仮想空間内に3次元の図形を描くことができる。さらに、本実施形態においては、上記オブジェクトは、入力面に連続して入力される各入力位置(タッチ位置)によって決められる各指定位置の軌跡を表すように生成される(ステップS20)。したがって、当該軌跡を表す画像が生成されてテレビ2に表示される。これによって、プレイヤは、タッチパネル52上で描いた線を容易に確認することができる。また、プレイヤが入力面に対して点で入力を行った場合と線で入力を行った場合とで、表示される画像が異なるので、ゲーム装置は、入力面に対する入力をより正確に反映した画像を表示することができる。
【0204】
なお、本実施形態においては、プレイヤが面81の姿勢(端末装置7の姿勢)を確認しやすくするべく、面81が表示される。さらに、プレイヤが面81と図形との奥行き関係を把握しやすくするべく、面81は半透明のオブジェクトとして生成される。ただし、他の実施形態においては、面81は表示されなくてもよい(透明であるとして取り扱われてもよい)し、不透明のオブジェクトとして生成されてもよい。
【0205】
ステップS5においては、端末用画像が上記ゲーム制御処理に基づいて生成される。すなわち、CPU10およびGPU11bは、ステップS3のゲーム制御処理の結果を表すデータをメインメモリから読み出し、また、ゲーム画像を生成するために必要なデータをVRAM11dから読み出し、端末用画像を生成する。本実施形態では、仮想空間において面81が設定される領域を表す画像が端末用画像として生成される。具体的には、タッチパネル52の入力面と面81とがLCD51の画面上で一致するように端末用画像が生成される。これによって、面81の画像が端末装置7に表示される(図12等参照)。生成された端末用画像はVRAM11dに記憶される。なお、テレビ用画像と同様に、端末用画像には、ステップS20で配置されたオブジェクトの画像が含まれる。したがって、プレイヤは、端末装置7の画面を見ることによっても、入力面上に描いた図形を確認することができる。また、端末用画像においては、面81は表示されなくてもよいし、半透明あるいは不透明のオブジェクトとして生成されてもよい。上記ステップS5の次にステップS6の処理が実行される。
【0206】
なお、本実施形態においては、テレビ用画像(および端末用画像)において、指定位置を表す画像を生成するために、仮想空間において指定位置にオブジェクトを配置することとした。ここで、指定位置を表す画像はどのような方法で生成されてもよい。例えば、他の実施形態においては、ゲーム装置3は、指定位置に対応するテレビ用画像(および端末用画像)上の位置を算出し、当該位置に所定の画像を配置することによって、指定位置を表す画像を生成してもよい。
【0207】
上記ステップS4およびS5の処理によれば、CPU10は、面81の姿勢と独立して視線方向が設定されるテレビ用仮想カメラを用いてテレビ用画像を生成し、面81との位置関係が一定となるように(より具体的には、面81に対して視線方向が略垂直となるように)設定される端末用仮想カメラを用いて端末用画像を生成する。したがって、プレイヤが端末装置7の姿勢を変化させた場合、テレビ2に表示される画像においては視線方向が変化しない一方、端末装置7に表示される画像においては当該姿勢に応じて視線方向が変化することになる(図11〜図14等)。これによれば、端末装置7においては面81の姿勢が一定として表示されるので、面81上の位置を指定する操作が容易になる。また、テレビ2においては面81の姿勢が変化して表示されるので、仮想空間内における面81の姿勢を容易に把握することができる。すなわち、本実施形態によれば、プレイヤは、端末装置7を用いて面81上の位置を指定する操作を容易に行うことができるとともに、テレビ2の画面を見ることによって面81の姿勢を容易に確認することができるので、3次元の仮想空間内の位置を容易に指定することができる。
【0208】
ステップS6において、CPU10は、テレビ2へゲーム画像を出力する。具体的には、CPU10は、VRAM11dに記憶されたテレビ用画像のデータをAV−IC15へ送る。これに応じて、AV−IC15はテレビ用画像のデータを、AVコネクタ16を介してテレビ2へ出力する。これによって、テレビ用画像がテレビ2に表示される。また、ステップS6においては、ゲーム画像のデータと共にゲーム音声のデータがテレビ2へ出力され、テレビ2のスピーカ2aからゲーム音声が出力されてもよい。ステップS6の次にステップS7の処理が実行される。
【0209】
ステップS7において、CPU10は、端末装置7へゲーム画像を出力(送信)する。具体的には、VRAM11dに記憶された端末用画像の画像データは、CPU10によってコーデックLSI27に送られ、コーデックLSI27によって所定の圧縮処理が行われる。圧縮処理が施された画像のデータは、端末通信モジュール28によってアンテナ29を介して端末装置7へ送信される。端末装置7は、ゲーム装置3から送信されてくる画像のデータを無線モジュール70によって受信し、受信された画像データに対してコーデックLSI66によって所定の伸張処理が行われる。伸張処理が行われた画像データはLCD51に出力される。これによって、端末用画像がLCD51に表示される。また、ステップS7においては、ゲーム画像のデータと共にゲーム音声のデータが端末装置7へ送信され、端末装置7のスピーカ67からゲーム音声が出力されてもよい。ステップS7の次にステップS8の処理が実行される。
【0210】
ステップS8において、CPU10は、ゲームを終了するか否かを判定する。ステップS8の判定は、例えば、ユーザがゲームを中止する指示を行ったか否か等によって行われる。ステップS8の判定結果が否定の場合、ステップS2の処理が再度実行される。一方、ステップS8の判定結果が肯定の場合、CPU10は図16に示すゲーム処理を終了する。なお、ゲーム処理を終了する際には、ゲームデータをメモリカード等にセーブする等の処理が実行されてもよい。以降、ステップS2〜S8の一連の処理は、ステップS8でゲームを終了すると判定されるまで繰り返し実行される。
【0211】
以上のように、上記ゲーム処理によれば、端末装置7のタッチパネル52に対する入力によって、仮想空間内の面81上の位置を指定される(ステップS16)とともに、端末装置7の姿勢に応じて面81の姿勢が変化する(ステップS12)。これによれば、プレイヤは、面81の姿勢を変化させつつ、タッチパネル52を用いて位置を指定することで、3次元の仮想空間における位置を指定することができる。このように、本実施形態によれば、タッチパネル52という平面的な入力面を有する入力装置を用いて、3次元空間における位置を容易に入力することができる。これによれば、例えば上記実施形態のように、プレイヤは、タッチパネル52に対して点や線の入力を行うとともに、端末装置7の姿勢を適宜変化させることで、仮想空間において3次元的な絵を描くことも可能となる。
【0212】
[7.変形例]
上記実施形態は本発明を実施する一例であり、他の実施形態においては例えば以下に説明する構成で本発明を実施することも可能である。
【0213】
(面の移動に関する変形例)
上記実施形態においては、端末装置7の姿勢に応じて面81の姿勢が変化したが、他の実施形態においては、他の方法で面81を移動させてもよい。以下、図21〜図24を参照して、面81の移動方法に関する変形例について説明する。
【0214】
図21は、上記実施形態の変形例におけるゲーム制御処理の流れを示すフローチャートである。なお、図21においては、図17に示す処理と同じ処理については同じステップ番号を付し、詳細な説明を省略する。
【0215】
本変形例においては、ステップS11の次にステップS41の処理が実行される。ステップS41において、CPU10は、端末装置7の姿勢に応じて面81の位置および姿勢を算出する。すなわち、CPU10は、端末装置7の姿勢に対応するように面81の姿勢を制御するとともに、端末装置7の姿勢に応じて面81の位置を制御する。ここで、面81の姿勢は、上記実施形態と同様、端末装置7の姿勢に基づいて制御される。また、面81の位置は、面81外の位置を回転の中心として面81が回転移動するように、面81の姿勢に応じて制御される。
【0216】
図22は、本変形例における面81の移動を示す図である。図22において、点Pcは、面81の回転の中心点であり、ゲーム空間に固定的に設定される。なお、図22においては、点Pcは、面81に関して端末用仮想カメラ85と同じ側に設定されている。端末装置7の姿勢が変化する場合、面81は、図22に示すように、姿勢の変化とともに、基準点Pcを中心に回転するように位置が変化する。具体的には、面81の位置は、基準点Pcから面81への垂線の長さが予め定められた所定値となるように(つまり、基準点Pcからの距離が一定となるように)算出される。このように、本変形例では、点Pcを中心とした球面上を回転移動するように面81の位置および姿勢が変化する(図22参照)。したがって、プレイヤは、端末装置7の姿勢を変化させつつタッチパネル52に対して入力を行うことで、球の内側面に対して絵を描いているような感覚を得ることができる。
【0217】
ステップS41の具体的な処理としては、CPU10は、まず、上記ステップS12と同様の方法によって面81の姿勢を算出する。次に、CPU10は、算出された姿勢と、上記基準点Pcの位置とに基づいて、上記垂線の長さが予め定められた所定値となるように面81の位置を算出する。例えば、基準点Pcの座標を(ES,ET,EU)とし、基準点Pcから面81までの距離をkとすると、面81の位置Pd(DS,DT,DU)は次の式(2)に従って算出される。
DS=−k×CS+ES
DT=−k×CT+ET
DU=−k×CU+EU …(2)
上式(2)においては、変数面座標系におけるu軸の正方向を向く単位ベクトルC(図22参照)の各成分を(CS,CT,CU)としている。算出された面81の位置および姿勢を表すデータは、メインメモリに記憶される。ステップS41の次にステップS42の処理が実行される。
【0218】
なお、本変形例においては、上記基準点Pcが面81に関して端末用仮想カメラ85と同じ側に設定されているものとしたが、基準点の位置はどこであってもよい。図23および図24は、他の実施形態における面81の移動を示す図である。他の実施形態においては、図23に示すように、基準点Pcは、面81に関して端末用仮想カメラ85と反対側に設定されてもよい。これによれば、プレイヤは、端末装置7の姿勢を変化させつつタッチパネル52に対して入力を行うことで、球の外側面に対して絵を描いているような感覚を得ることができる。なお、図23に示す場合においては、基準点Pcから面81の位置Pdまでの向きと、ベクトルCの向きとが同じであるので、上式(2)における“−k”を“k”に変更することで、面81の位置Pdを算出することができる。また、k=0の場合には、上記実施形態のように、面81は位置Pd(基準点Pc)を中心に回転する(図19参照)。
【0219】
また、他の実施形態においては、図24に示すように、所定の回転方向(図24では、上下方向を軸とした回転方向)に関しては面81が基準点Pcを中心として回転移動を行い、他の方向に関しては面81が平行移動を行うようにしてもよい。これによれば、プレイヤは、円柱の内側側面に対して絵を描いているような感覚を得ることができる。なお、図24における面81の平行移動は、端末装置7の姿勢の変化に応じて行われてもよいし、後述するステップS42における方向入力操作に応じて行われてもよい。
【0220】
ステップS42において、CPU10は、端末装置7に対する方向入力操作に基づいて面81を移動させる。上記方向入力操作は、どのような方法で行われてもよいが、例えば、アナログスティック53や十字ボタン54Aに対する入力操作であってもよい。具体的には、面81は、上下左右前後の方向入力操作に応じて、面81の上下左右前後の方向に移動するように制御される。すなわち、CPU10は、ステップS2で取得した端末操作データ91に基づいて、方向入力操作によって指示された方向を判断する。そして、面81の位置および姿勢を表すデータをメインメモリから読み出し、上記指示された方向に応じた方向へ面81を移動させる。メインメモリに記憶される上記データは、移動後の面81の位置を表すように更新される。ステップS42の次にステップS43の処理が実行される。
【0221】
上記ステップS42の処理によれば、端末装置7に対する方向入力操作によって面81を自由に平行移動させることができる。なお、他の実施形態においては、ステップS42においてCPU10は、面81を(平行移動ではなく)回転移動させるようにしてもよい。例えば、CPU10は、図22〜図24に示したように、球面上あるいは円柱の側面上を面81が移動するように面81を制御してもよい。
【0222】
ステップS43において、CPU10は、面81の位置および姿勢に基づいてテレビ用仮想カメラを制御する。テレビ用仮想カメラは、面81が視野範囲に含まれるように位置および姿勢が制御されればどのように制御されてもよい。例えば、テレビ用仮想カメラの位置は、視線方向が面81の方を向き、面81から所定距離となるように制御されてもよい。また、テレビ用仮想カメラの姿勢は変化しない、すなわち、テレビ用仮想カメラは平行移動するように制御されてもよい。これによれば、上記実施形態と同様、プレイヤは、仮想空間における面81の姿勢をテレビ用画像で確認することができる。ステップS43の具体的な処理としては、CPU10は、面81の位置および姿勢を表すデータをメインメモリから読み出し、面81の位置に応じてテレビ用仮想カメラの位置および姿勢を算出する。算出された位置および姿勢を表すテレビ用カメラデータはメインメモリに記憶される。このとき、ステップS4の処理においては、上記テレビ用カメラデータを用いてテレビ用画像が生成される。ステップS43の次にステップS13の処理が実行される。ステップS13の処理以降については、上記実施形態と同様の処理が実行される。
【0223】
なお、他の実施形態においては、テレビ用仮想カメラは、端末装置7に対する方向入力操作に従って制御されてもよい。すなわち、CPU10は、方向入力操作に応じて、テレビ用仮想カメラを平行移動、回転移動、または回転させるようにしてもよい。これによれば、上述した図形移動処理によって図形を回転させる場合と同様、プレイヤはいろいろな向きから図形を見ることができ、図形の形状を容易に確認することができる。
【0224】
(指定位置を用いたゲーム処理に関する変形例)
上記実施形態においては、上記指定位置を入力として用いるゲームとして、3次元仮想空間に絵を描くことができるお絵かきゲームを例として説明した。すなわち、上記実施形態においては、上記指定位置を入力としたゲーム処理の例として、指定位置にオブジェクトを配置する処理(ステップS20)を説明した。ここで、指定位置を入力として実行されるゲーム処理は、どのような処理であってもよく、例えば次のようなゲーム例が考えられる。
【0225】
図25は、見本と同じになるように図形を描くゲームにおいて、テレビ2に表示されるゲーム画像を示す図である。図25に示すように、テレビ2には、面81および見本オブジェクト111が表示される。見本オブジェクト111は、プレイヤが描く図形の見本を表すオブジェクトであり、ゲームプログラムにおいて複数種類の見本オブジェクトが用意される。なお、端末装置7に表示される画像は上記実施形態と同様である。このゲームにおいては、プレイヤは、上記実施形態と同様に端末装置7を用いて、見本オブジェクト111と同じになるように、仮想空間内に線(指定位置の軌跡を表すオブジェクト112)を描く。このとき、CPU10は、見本オブジェクト111と、プレイヤによる入力に応じて生成されるオブジェクト112との類似度を算出したり、当該類似度に基づいて得点を算出したりするゲーム処理を実行してもよい。このように、ゲーム装置3は、入力された指定位置を表す軌跡を入力とするゲーム処理を実行してもよい。
【0226】
図26は、3次元の仮想空間内に配置されたオブジェクト(コイン)115を端末装置に対する操作によって指定するゲームにおいて、テレビ2に表示されるゲーム画像を示す図である。図26に示すように、テレビ2には、面81およびコイン115が表示される。なお、端末装置7に表示される画像は上記実施形態と同様である。このゲームにおいては、プレイヤは、上記実施形態と同様の方法で仮想空間内における位置を指定する。そして、コイン115の位置を指定することでコイン115を取得することができる。例えば、プレイヤは、コイン115を正確に指定したり、制限時間内にコイン115を取得する数を競ったりしてゲームを行う。この場合、CPU10は、指定位置を入力として実行されるゲーム処理として、指定位置がコイン115の位置であるか否かを判定し、指定位置がコイン115の位置である場合、取得されたコイン115の枚数をカウントする処理を実行する。このように、ゲーム処理は、上記実施形態のような指定位置に画像を表示する処理に限らず、仮想空間内のオブジェクトを指定(選択)する処理であってもよい。
【0227】
図27および図28は、プレイヤが描いた図形に基づいてオブジェクトが生成されるゲームにおいて、テレビ2に表示されるゲーム画像を示す図である。このゲームにおいては、プレイヤはまず、上記実施形態と同様の操作によって、仮想空間内に図形を生成する。図27においては、プレイヤの入力による図形を表すオブジェクト117が生成されて表示される。ここで、CPU10は、指定位置を入力として実行されるゲーム処理として、上記図形を形成する各指定位置に基づいて3次元のオブジェクトを生成する。例えば、CPU10は、各指定位置の軌跡に基づいて面を設定することで、3次元のオブジェクトを生成する。例えば、軌跡によって閉曲線が形成される場合、当該閉曲線を周とする面が設定されてもよい。図28は、図27に示すオブジェクト117に基づいて、3次元のオブジェクト118が生成される場合におけるゲーム画像を示す。このように、ゲームシステム1は、指定位置に基づいて3次元のオブジェクトを生成するゲーム処理を実行するものであってもよい。なお、このとき、生成されたオブジェクトがゲームにおいて用いられてもよい。例えば、生成されたオブジェクトをプレイヤキャラクタがアイテムとして使用することができたり、生成されたオブジェクトをプレイヤキャラクタとして使用することができたりしてもよい。
【0228】
上記の他、指定位置を入力として実行されるゲーム処理は、どのような処理であってもよい。例えば、他の実施形態においては、CPU10は、指定位置の軌跡に応じてプレイヤキャラクタを移動させるゲーム処理を実行してもよい。すなわち、ゲーム装置3において実行されるゲームは、プレイヤが指定位置の軌跡を入力すると、仮想空間内のプレイヤキャラクタが当該軌跡に沿って移動するようなゲームであってもよい。
【0229】
(入力システムを適用する他の例)
上記実施形態では、ユーザが仮想空間における3次元位置を入力するための入力システムの一例として、プレイヤが端末装置7を用いてゲーム操作を行うゲームシステム1を例に説明を行った。ここで、他の実施形態においては、入力システムはゲーム用途に限らず、ユーザの操作に応じて仮想空間における3次元位置を指定するための任意の情報処理システムに適用されてもよい。
【0230】
(仮想空間に設定される面に関する変形例)
上記実施形態では、3次元の仮想空間に設定される面81は、平面であった。ここで、他の実施形態においては、3次元の仮想空間に設定される面は曲面であってもよい。例えば、面が球面上あるいは円柱の側面上を移動するように制御される場合(図22〜図24)においては、球面あるいは円柱側面に沿った曲面が設定されてもよい。また、上記実施形態では、面81は、端末装置7の表示画面の形状と同じ形状であったが、面81の形状と表示画面の形状とは異なっていてもよい。
【0231】
(ゲームシステムの構成に関する変形例)
上記実施形態においては、ゲームシステム1は、表示装置として、可搬型の端末装置7と、テレビ2とを含む構成であった。ここで、ゲームシステムは、少なくとも1つの表示装置に、面の位置を含む仮想空間内の領域を表す画像を表示することができればどのような構成であってもよい。例えば、他の実施形態においては、ゲームシステム1は、1つの表示装置(例えばテレビ2)に上記画像を表示し、端末装置7には画像を表示しない構成であってもよい。また、ゲームシステム1は、端末装置7とは異なる2つの表示装置を含む構成であってもよい。このとき、上記実施形態におけるテレビ用画像が一方の表示装置に表示され、端末用画像が他方の表示装置に表示される。
【0232】
また、ゲームシステム1は、端末装置7とは別の操作装置として、コントローラ5を含む構成であったが、他の実施形態においては、コントローラ5を含まない構成であってもよい。また、他の実施形態においては、端末装置7に加えてコントローラ5が操作装置としてさらに用いられてもよい。例えば、プレイヤが端末装置7を用いてタッチパネル52に対して線を描くことによって仮想空間内に図形を描いた場合、ゲーム装置3は、描かれた図形をコントローラ5に対する操作に従って移動させたり変形させたりするようにしてもよい。
【0233】
また、ユーザが仮想空間における3次元位置を入力するための入力システムは、複数の装置で実現されるものに限らず、1つの装置によって実現されてもよい。例えば、2つの表示画面を備え、少なくとも一方の表示画面にタッチパネルが設けられる携帯型の情報処理装置(ゲーム装置であってもよい)によって入力システムが実現されてもよい。このとき、情報処理装置は、タッチパネルが設けられる表示画面に上記実施形態における端末用画像を表示し、もう一方の表示画面に上記実施形態におけるテレビ用画像を表示する。また、情報処理装置は、自身の姿勢を算出するための物理量を検出するセンサ(例えば、ジャイロセンサや加速度センサ)を備えていてもよい。
【0234】
(入力面における入力位置の検出方法に関する変形例)
上記実施形態においては、端末装置7は、所定の入力面に対する入力位置を検出する位置検出部の一例として、LCD51の表画面に設けられるタッチパネル52を備える構成であった。ここで、他の実施形態においては、位置検出部は、例えばタッチパッドであってもよい。つまり、端末装置7は、表示部(LCD51)およびタッチパネル52を備えず、タッチパッドを備える構成であってもよい。また、端末装置7は、LCD51にカーソルを表示し、所定の方向入力操作(例えば、アナログスティック53や十字ボタン54に対する操作)に従って当該カーソルを移動させ、当該カーソルの位置を入力位置として用いてもよい。
【0235】
(ゲーム処理を実行する情報処理装置に関する変形例)
上記実施形態においては、ゲームシステム1において実行される一連のゲーム処理をゲーム装置3が実行したが、ゲーム処理の一部は他の装置によって実行されてもよい。例えば、他の実施形態においては、ゲーム処理の一部(例えば、端末用画像の生成処理)を端末装置7が実行するようにしてもよい。また、他の実施形態では、互いに通信可能な複数の情報処理装置を有する入力システムにおいて、当該複数の情報処理装置がゲーム処理を分担して実行するようにしてもよい。なお、複数の情報処理装置においてゲーム処理が実行される場合には、各情報処理装置で実行されるゲーム処理を同期させる必要があり、ゲーム処理が複雑になってしまう。これに対して、上記実施形態のように、ゲーム処理が1つのゲーム装置3によって実行され、端末装置7がゲーム画像を受信して表示する処理を行う場合(つまり、端末装置7がシンクライアント端末である場合)には、複数の情報処理装置間でゲーム処理の同期をとる必要がなく、ゲーム処理を簡易化することができる。
【0236】
上記のように、本明細書で説明した種々のシステム、方法、および技術は、デジタル電子回路、コンピュータハードウェア、ファームウェア、ソフトウェア、またはこれら要素の組み合わせによって提供されてもよい。上記の技術を実現するための装置は、プログラム可能なプロセッサによる実行のためのコンピュータ読み取り可能な非一時的な記憶装置において実体的に具体化されるコンピュータプログラムプロダクト、入出力装置、およびコンピュータプロセッサを含んでもよい。上記技術を実現するための処理は、入力データを処理して所望の出力を生成することによって、要求される機能を実行するためのプログラムを実行する、プログラム可能なプロセッサによって実行されてもよい。上記の技術は、入力装置、出力装置、および情報記憶装置といったハードウェア資源との間でデータや指示のやり取りを行うプログラム可能なプロセッサを含むコンピュータシステム上で実行可能な1以上のコンピュータプログラムによって実現されてもよい。また、各コンピュータプログラムは、手続型やオブジェクト指向型の高水準プログラミング言語、アセンブリ言語、または、機械語によって実現されてもよく、必要に応じてコンパイルまたはインタプリタされて実行されてもよい。また、上記のプロセッサは、汎用または専用のマイクロプロセッサであってもよい。プロセッサは、一般的に、ROMまたはRAMからデータおよび指示を受け取る。また、上記の記憶装置は、(a)EPROM、EEPROM、フラッシュメモリのような半導体メモリ装置を含む不揮発性のメモリ、(b)内部ハードディスクあるいは着脱可能な外部ディスクのような磁気ディスク、(c)光磁気ディスク、(d)CDROM、に限定されず、あらゆる種類のコンピュータメモリを含む。上記のプロセッサや記憶装置は、ASIC(Application Specific Integrated Circuit)によって補充される、あるいは、ASICに組み込まれる形で実現されてもよい。
【0237】
また、本明細書に記載の処理システム(回路)は、本明細書において記載された内容に応じたゲーム処理のような制御処理のためにプログラムされる。上記の内容に応じた指示を実行する少なくとも1つのCPUを含む処理システムが、上記の内容によって定義される処理動作を実行するための「プログラムされた論理回路」として作用するものであってもよい。
【産業上の利用可能性】
【0238】
以上のように、本発明は、タッチパネルやタッチパッド等の平面的な入力面に対する入力に基づいて、3次元空間における位置を容易に指定すること等を目的として、例えばゲームシステムやゲーム装置やゲームプログラム等として利用することができる。
【符号の説明】
【0239】
1 ゲームシステム
2 テレビ
3 ゲーム装置
4 光ディスク
5 コントローラ
6 マーカ装置
7 端末装置
10 CPU
11e 内部メインメモリ
12 外部メインメモリ
51 LCD
52 タッチパネル
63 加速度センサ
64 ジャイロセンサ
70 無線モジュール
81 面
85 端末用仮想カメラ
90 ゲームプログラム
【特許請求の範囲】
【請求項1】
操作装置と情報処理装置とを含み、当該操作装置に対する操作に基づいて3次元の仮想空間における位置を算出する入力システムであって、
前記操作装置は、
所定の入力面に対する入力位置を検出する位置検出部と、
慣性センサ部と、
前記位置検出部および前記慣性センサ部の検出結果を表すデータを含む操作データを前記情報処理装置へ送信する操作データ送信部とを備え、
前記情報処理装置は、
前記慣性センサ部の検出結果に基づいて前記操作装置の姿勢を算出する姿勢算出部と、
前記操作装置の姿勢に応じて姿勢が変化するように前記仮想空間内に所定の面を設定する面設定部と、
前記面の位置を含む前記仮想空間内の領域を表す第1画像を生成する第1画像生成部と、
前記第1画像を所定の表示装置へ出力する第1画像出力部と、
前記仮想空間内の位置として、前記入力位置によって決められる前記面上の位置を算出する位置算出部とを備える、入力システム。
【請求項2】
前記第1画像生成部は、前記位置算出部によって算出された位置に対応する前記第1画像上の位置に所定の画像を生成する、請求項1に記載の入力システム。
【請求項3】
前記第1画像生成部は、前記入力面に連続して入力される各入力位置によって前記仮想空間内において決められる各位置の軌跡を表す画像を前記所定の画像として生成する、請求項2に記載の入力システム。
【請求項4】
前記情報処理装置は、前記位置算出部によって算出された位置に、所定のオブジェクトを配置するオブジェクト設定部をさらに備える、請求項1から請求項3のいずれか1項に記載の入力システム。
【請求項5】
前記オブジェクト設定部は、前記操作装置に対する操作に基づいて前記所定のオブジェクトを移動させる、請求項4に記載の入力システム。
【請求項6】
前記オブジェクト設定部は、前記操作装置に対する操作に関して所定の条件が満たされる場合、前記所定のオブジェクトを前記操作装置の姿勢に基づいて移動させ、当該所定の条件が満たされない場合、前記操作装置の姿勢に基づく前記所定のオブジェクトの移動を行わない、請求項5に記載の入力システム。
【請求項7】
前記操作装置は、表示部をさらに備え、
前記位置検出部は、前記表示部の表示画面上に設けられるタッチパネルであり、
前記情報処理装置は、
前記面の位置を含む前記仮想空間内の領域を表す第2画像を生成する第2画像生成部と、
前記第2画像を前記操作装置へ送信する第2画像送信部とをさらに備え、
前記位置算出部は、仮想空間内の位置として、前記表示画面上において前記入力位置に対応する位置を算出する、請求項1から請求項6のいずれか1項に記載の入力システム。
【請求項8】
前記第2画像生成部は、前記仮想空間において前記面が設定される領域を表す画像を前記第2画像として生成する、請求項7に記載の入力システム。
【請求項9】
前記第1画像生成部は、前記面の姿勢と独立して視線方向が設定される第1仮想カメラを用いて第1画像を生成し、
前記第2画像生成部は、前記面に対して視線方向が略垂直となるように設定される第2仮想カメラを用いて前記第2画像を生成する、請求項8に記載の入力システム。
【請求項10】
前記面設定部は、前記操作装置の姿勢に対応するように前記面の姿勢を制御する、請求項1から請求項9のいずれか1項に記載の入力システム。
【請求項11】
前記面設定部は、前記操作装置の姿勢に対応するように前記面の姿勢を制御すると共に、前記操作装置の姿勢に応じて前記面の位置を制御する、請求項1から請求項9のいずれか1項に記載の入力システム。
【請求項12】
前記面設定部は、前記仮想空間内の所定位置を中心として前記操作装置の姿勢に応じて回転移動するように前記面を制御する、請求項11に記載の入力システム。
【請求項13】
前記面設定部は、前記操作装置に対する方向入力操作に基づいて前記面を移動させる、請求項1から請求項12のいずれか1項に記載の入力システム。
【請求項14】
前記情報処理装置は、前記位置算出部によって算出された位置を入力として所定のゲーム処理を実行するゲーム処理部をさらに備える、請求項1から請求項13のいずれか1項に記載の入力システム。
【請求項15】
操作部に対する操作に基づいて3次元の仮想空間における位置を算出する情報処理システムであって、
前記操作部に設けられる所定の入力面に対する入力位置を検出する位置検出部と、
前記操作部の姿勢を算出するための物理量を検出するセンサ部と、
前記位置検出部および前記センサ部の検出結果を表すデータを含む操作データを取得する操作データ取得部と、
前記物理量に基づいて前記操作装置の姿勢を算出する姿勢算出部と、
前記姿勢に基づいて前記仮想空間内に所定の面を設定する面設定部と、
前記面の位置を含む前記仮想空間内の領域を表す第1画像を生成する第1画像生成部と、
前記第1画像を所定の表示装置へ出力する第1画像出力部と、
前記仮想空間内の位置として、前記入力位置によって決められる前記面上の位置を算出する位置算出部とを備える、情報処理システム。
【請求項16】
操作装置に対する操作に基づいて3次元の仮想空間における位置を算出する情報処理装置であって、
前記操作装置が備えるタッチパネルおよび慣性センサの検出結果を表すデータを含む操作データを取得する操作データ取得部と、
前記慣性センサの検出結果に基づいて前記操作装置の姿勢を算出する姿勢算出部と、
前記操作装置の姿勢に応じて姿勢が変化するように前記仮想空間内に所定の面を設定する面設定部と、
前記仮想空間内の位置として、前記タッチパネルに対する入力位置によって決められる前記面上の位置を算出する位置算出部と、
前記位置算出部によって算出された位置に、所定のオブジェクトを配置するオブジェクト設定部と、
前記面の位置を含む前記仮想空間内の領域を表す第1画像を生成する第1画像生成部と、
前記第1画像を所定の表示装置へ出力する第1画像出力部と、
前記タッチパネルが設けられる表示画面に表示されるための第2画像として、前記仮想空間において前記面が設定される領域を表す画像を生成する第2画像生成部と、
前記第2画像を前記操作装置へ送信する第2画像送信部とを備える、情報処理装置。
【請求項17】
操作装置に対する操作に基づいて3次元の仮想空間における位置を算出する情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、
前記操作装置が備えるタッチパネルおよび慣性センサの検出結果を表すデータを含む操作データを取得する操作データ取得手段と、
前記慣性センサの検出結果に基づいて前記操作装置の姿勢を算出する姿勢算出手段と、
前記操作装置の姿勢に応じて姿勢が変化するように前記仮想空間内に所定の面を設定する面設定手段と、
前記仮想空間内の位置として、前記タッチパネルに対する入力位置によって決められる前記面上の位置を算出する位置算出手段と、
前記位置算出手段によって算出された位置に、所定のオブジェクトを配置するオブジェクト設定手段と、
所定の表示装置に表示するための第1画像として、前記面の位置を含む前記仮想空間内の領域を表す画像を生成する第1画像生成手段と、
前記タッチパネルが設けられる表示画面に表示するための第2画像として、前記仮想空間において前記面が設定される領域を表す画像を生成する第2画像生成手段として前記コンピュータを機能させる、情報処理プログラム。
【請求項18】
操作装置と情報処理装置とを含む入力システムにおいて実行される、当該操作装置に対する操作に基づいて3次元の仮想空間における位置を算出するための3次元位置算出方法であって、
前記操作装置が備える慣性センサの検出結果に基づいて前記操作装置の姿勢を算出する姿勢算出ステップと、
前記操作装置の姿勢に応じて姿勢が変化するように前記仮想空間内に所定の面を設定する面設定ステップと、
前記面の位置を含む前記仮想空間内の領域を表す第1画像を生成する第1画像生成ステップと、
前記第1画像を所定の表示装置へ出力する第1画像出力ステップと、
前記仮想空間内の位置として、前記操作装置が備える所定の入力面に対する入力位置によって決められる前記面上の位置を算出する位置算出ステップとを備える、3次元位置算出方法。
【請求項19】
前記第1画像生成ステップにおいて、前記情報処理装置は、前記位置算出ステップにおいて算出された位置に対応する前記第1画像上の位置に所定の画像を生成する、請求項18に記載の3次元位置算出方法。
【請求項20】
前記第1画像生成ステップにおいて、前記情報処理装置は、前記入力面に連続して入力される各入力位置によって前記仮想空間内において決められる各位置の軌跡を表す画像を前記所定の画像として生成する、請求項19に記載の3次元位置算出方法。
【請求項21】
前記位置算出ステップにおいて算出された位置に、所定のオブジェクトを配置するオブジェクト設定ステップをさらに備える、請求項18から請求項20のいずれか1項に記載の3次元位置算出方法。
【請求項22】
前記オブジェクト設定ステップにおいて、前記情報処理装置は、前記操作装置に対する操作に基づいて前記所定のオブジェクトを移動させる、請求項21に記載の3次元位置算出方法。
【請求項23】
前記オブジェクト設定ステップにおいて、前記情報処理装置は、前記操作装置に対する操作に関して所定の条件が満たされる場合、前記所定のオブジェクトを前記操作装置の姿勢に基づいて移動させ、当該所定の条件が満たされない場合、前記操作装置の姿勢に基づく前記所定のオブジェクトの移動を行わない、請求項22に記載の3次元位置算出方法。
【請求項24】
前記操作装置は、表示部と、当該表示部の表示画面上に設けられるタッチパネルとを備えており、
前記面の位置を含む前記仮想空間内の領域を表す第2画像を生成する第2画像生成ステップと、
前記第2画像を前記操作装置へ送信する第2画像送信ステップとをさらに備え、
前記位置算出ステップにおいて、前記情報処理装置は、仮想空間内の位置として、前記表示画面上において前記入力位置に対応する位置を算出する、請求項18から請求項23のいずれか1項に記載の3次元位置算出方法。
【請求項25】
前記第2画像生成ステップにおいて、前記情報処理装置は、前記仮想空間において前記面が設定される領域を表す画像を前記第2画像として生成する、請求項24に記載の3次元位置算出方法。
【請求項26】
前記第1画像生成ステップにおいて、前記情報処理装置は、前記面の姿勢と独立して視線方向が設定される第1仮想カメラを用いて第1画像を生成し、
前記第2画像生成ステップにおいて、前記情報処理装置は、前記面に対して視線方向が略垂直となるように設定される第2仮想カメラを用いて前記第2画像を生成する、請求項25に記載の3次元位置算出方法。
【請求項27】
前記面設定ステップにおいて、前記情報処理装置は、前記操作装置の姿勢に対応するように前記面の姿勢を制御する、請求項18から請求項26のいずれか1項に記載の3次元位置算出方法。
【請求項28】
前記面設定ステップにおいて、前記情報処理装置は、前記操作装置の姿勢に対応するように前記面の姿勢を制御すると共に、前記操作装置の姿勢に応じて前記面の位置を制御する、請求項18から請求項26のいずれか1項に記載の3次元位置算出方法。
【請求項29】
前記面設定ステップにおいて、前記情報処理装置は、前記仮想空間内の所定位置を中心として前記操作装置の姿勢に応じて回転移動するように前記面を制御する、請求項28に記載の3次元位置算出方法。
【請求項30】
前記面設定ステップにおいて、前記情報処理装置は、前記操作装置に対する方向入力操作に基づいて前記面を移動させる、請求項18から請求項29のいずれか1項に記載の3次元位置算出方法。
【請求項31】
前記位置算出ステップにおいて算出された位置を入力として所定のゲーム処理を実行するゲーム処理ステップをさらに備える、請求項18から請求項30のいずれか1項に記載の3次元位置算出方法。
【請求項32】
操作部に対する操作に基づいて3次元の仮想空間における位置を算出する情報処理システムにおいて実行される3次元位置算出方法であって、
前記操作部に設けられる所定の入力面に対する入力位置を表すデータと、前記操作部の姿勢を算出するための物理量を表すデータを含む操作データを取得する操作データ取得ステップと、
前記物理量に基づいて前記操作装置の姿勢を算出する姿勢算出ステップと、
前記姿勢に基づいて前記仮想空間内に所定の面を設定する面設定ステップと、
前記面の位置を含む前記仮想空間内の領域を表す第1画像を生成する第1画像生成ステップと、
前記第1画像を所定の表示装置へ出力する第1画像出力ステップと、
前記仮想空間内の位置として、前記入力位置によって決められる前記面上の位置を算出する位置算出ステップとを備える、3次元位置算出方法。
【請求項1】
操作装置と情報処理装置とを含み、当該操作装置に対する操作に基づいて3次元の仮想空間における位置を算出する入力システムであって、
前記操作装置は、
所定の入力面に対する入力位置を検出する位置検出部と、
慣性センサ部と、
前記位置検出部および前記慣性センサ部の検出結果を表すデータを含む操作データを前記情報処理装置へ送信する操作データ送信部とを備え、
前記情報処理装置は、
前記慣性センサ部の検出結果に基づいて前記操作装置の姿勢を算出する姿勢算出部と、
前記操作装置の姿勢に応じて姿勢が変化するように前記仮想空間内に所定の面を設定する面設定部と、
前記面の位置を含む前記仮想空間内の領域を表す第1画像を生成する第1画像生成部と、
前記第1画像を所定の表示装置へ出力する第1画像出力部と、
前記仮想空間内の位置として、前記入力位置によって決められる前記面上の位置を算出する位置算出部とを備える、入力システム。
【請求項2】
前記第1画像生成部は、前記位置算出部によって算出された位置に対応する前記第1画像上の位置に所定の画像を生成する、請求項1に記載の入力システム。
【請求項3】
前記第1画像生成部は、前記入力面に連続して入力される各入力位置によって前記仮想空間内において決められる各位置の軌跡を表す画像を前記所定の画像として生成する、請求項2に記載の入力システム。
【請求項4】
前記情報処理装置は、前記位置算出部によって算出された位置に、所定のオブジェクトを配置するオブジェクト設定部をさらに備える、請求項1から請求項3のいずれか1項に記載の入力システム。
【請求項5】
前記オブジェクト設定部は、前記操作装置に対する操作に基づいて前記所定のオブジェクトを移動させる、請求項4に記載の入力システム。
【請求項6】
前記オブジェクト設定部は、前記操作装置に対する操作に関して所定の条件が満たされる場合、前記所定のオブジェクトを前記操作装置の姿勢に基づいて移動させ、当該所定の条件が満たされない場合、前記操作装置の姿勢に基づく前記所定のオブジェクトの移動を行わない、請求項5に記載の入力システム。
【請求項7】
前記操作装置は、表示部をさらに備え、
前記位置検出部は、前記表示部の表示画面上に設けられるタッチパネルであり、
前記情報処理装置は、
前記面の位置を含む前記仮想空間内の領域を表す第2画像を生成する第2画像生成部と、
前記第2画像を前記操作装置へ送信する第2画像送信部とをさらに備え、
前記位置算出部は、仮想空間内の位置として、前記表示画面上において前記入力位置に対応する位置を算出する、請求項1から請求項6のいずれか1項に記載の入力システム。
【請求項8】
前記第2画像生成部は、前記仮想空間において前記面が設定される領域を表す画像を前記第2画像として生成する、請求項7に記載の入力システム。
【請求項9】
前記第1画像生成部は、前記面の姿勢と独立して視線方向が設定される第1仮想カメラを用いて第1画像を生成し、
前記第2画像生成部は、前記面に対して視線方向が略垂直となるように設定される第2仮想カメラを用いて前記第2画像を生成する、請求項8に記載の入力システム。
【請求項10】
前記面設定部は、前記操作装置の姿勢に対応するように前記面の姿勢を制御する、請求項1から請求項9のいずれか1項に記載の入力システム。
【請求項11】
前記面設定部は、前記操作装置の姿勢に対応するように前記面の姿勢を制御すると共に、前記操作装置の姿勢に応じて前記面の位置を制御する、請求項1から請求項9のいずれか1項に記載の入力システム。
【請求項12】
前記面設定部は、前記仮想空間内の所定位置を中心として前記操作装置の姿勢に応じて回転移動するように前記面を制御する、請求項11に記載の入力システム。
【請求項13】
前記面設定部は、前記操作装置に対する方向入力操作に基づいて前記面を移動させる、請求項1から請求項12のいずれか1項に記載の入力システム。
【請求項14】
前記情報処理装置は、前記位置算出部によって算出された位置を入力として所定のゲーム処理を実行するゲーム処理部をさらに備える、請求項1から請求項13のいずれか1項に記載の入力システム。
【請求項15】
操作部に対する操作に基づいて3次元の仮想空間における位置を算出する情報処理システムであって、
前記操作部に設けられる所定の入力面に対する入力位置を検出する位置検出部と、
前記操作部の姿勢を算出するための物理量を検出するセンサ部と、
前記位置検出部および前記センサ部の検出結果を表すデータを含む操作データを取得する操作データ取得部と、
前記物理量に基づいて前記操作装置の姿勢を算出する姿勢算出部と、
前記姿勢に基づいて前記仮想空間内に所定の面を設定する面設定部と、
前記面の位置を含む前記仮想空間内の領域を表す第1画像を生成する第1画像生成部と、
前記第1画像を所定の表示装置へ出力する第1画像出力部と、
前記仮想空間内の位置として、前記入力位置によって決められる前記面上の位置を算出する位置算出部とを備える、情報処理システム。
【請求項16】
操作装置に対する操作に基づいて3次元の仮想空間における位置を算出する情報処理装置であって、
前記操作装置が備えるタッチパネルおよび慣性センサの検出結果を表すデータを含む操作データを取得する操作データ取得部と、
前記慣性センサの検出結果に基づいて前記操作装置の姿勢を算出する姿勢算出部と、
前記操作装置の姿勢に応じて姿勢が変化するように前記仮想空間内に所定の面を設定する面設定部と、
前記仮想空間内の位置として、前記タッチパネルに対する入力位置によって決められる前記面上の位置を算出する位置算出部と、
前記位置算出部によって算出された位置に、所定のオブジェクトを配置するオブジェクト設定部と、
前記面の位置を含む前記仮想空間内の領域を表す第1画像を生成する第1画像生成部と、
前記第1画像を所定の表示装置へ出力する第1画像出力部と、
前記タッチパネルが設けられる表示画面に表示されるための第2画像として、前記仮想空間において前記面が設定される領域を表す画像を生成する第2画像生成部と、
前記第2画像を前記操作装置へ送信する第2画像送信部とを備える、情報処理装置。
【請求項17】
操作装置に対する操作に基づいて3次元の仮想空間における位置を算出する情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、
前記操作装置が備えるタッチパネルおよび慣性センサの検出結果を表すデータを含む操作データを取得する操作データ取得手段と、
前記慣性センサの検出結果に基づいて前記操作装置の姿勢を算出する姿勢算出手段と、
前記操作装置の姿勢に応じて姿勢が変化するように前記仮想空間内に所定の面を設定する面設定手段と、
前記仮想空間内の位置として、前記タッチパネルに対する入力位置によって決められる前記面上の位置を算出する位置算出手段と、
前記位置算出手段によって算出された位置に、所定のオブジェクトを配置するオブジェクト設定手段と、
所定の表示装置に表示するための第1画像として、前記面の位置を含む前記仮想空間内の領域を表す画像を生成する第1画像生成手段と、
前記タッチパネルが設けられる表示画面に表示するための第2画像として、前記仮想空間において前記面が設定される領域を表す画像を生成する第2画像生成手段として前記コンピュータを機能させる、情報処理プログラム。
【請求項18】
操作装置と情報処理装置とを含む入力システムにおいて実行される、当該操作装置に対する操作に基づいて3次元の仮想空間における位置を算出するための3次元位置算出方法であって、
前記操作装置が備える慣性センサの検出結果に基づいて前記操作装置の姿勢を算出する姿勢算出ステップと、
前記操作装置の姿勢に応じて姿勢が変化するように前記仮想空間内に所定の面を設定する面設定ステップと、
前記面の位置を含む前記仮想空間内の領域を表す第1画像を生成する第1画像生成ステップと、
前記第1画像を所定の表示装置へ出力する第1画像出力ステップと、
前記仮想空間内の位置として、前記操作装置が備える所定の入力面に対する入力位置によって決められる前記面上の位置を算出する位置算出ステップとを備える、3次元位置算出方法。
【請求項19】
前記第1画像生成ステップにおいて、前記情報処理装置は、前記位置算出ステップにおいて算出された位置に対応する前記第1画像上の位置に所定の画像を生成する、請求項18に記載の3次元位置算出方法。
【請求項20】
前記第1画像生成ステップにおいて、前記情報処理装置は、前記入力面に連続して入力される各入力位置によって前記仮想空間内において決められる各位置の軌跡を表す画像を前記所定の画像として生成する、請求項19に記載の3次元位置算出方法。
【請求項21】
前記位置算出ステップにおいて算出された位置に、所定のオブジェクトを配置するオブジェクト設定ステップをさらに備える、請求項18から請求項20のいずれか1項に記載の3次元位置算出方法。
【請求項22】
前記オブジェクト設定ステップにおいて、前記情報処理装置は、前記操作装置に対する操作に基づいて前記所定のオブジェクトを移動させる、請求項21に記載の3次元位置算出方法。
【請求項23】
前記オブジェクト設定ステップにおいて、前記情報処理装置は、前記操作装置に対する操作に関して所定の条件が満たされる場合、前記所定のオブジェクトを前記操作装置の姿勢に基づいて移動させ、当該所定の条件が満たされない場合、前記操作装置の姿勢に基づく前記所定のオブジェクトの移動を行わない、請求項22に記載の3次元位置算出方法。
【請求項24】
前記操作装置は、表示部と、当該表示部の表示画面上に設けられるタッチパネルとを備えており、
前記面の位置を含む前記仮想空間内の領域を表す第2画像を生成する第2画像生成ステップと、
前記第2画像を前記操作装置へ送信する第2画像送信ステップとをさらに備え、
前記位置算出ステップにおいて、前記情報処理装置は、仮想空間内の位置として、前記表示画面上において前記入力位置に対応する位置を算出する、請求項18から請求項23のいずれか1項に記載の3次元位置算出方法。
【請求項25】
前記第2画像生成ステップにおいて、前記情報処理装置は、前記仮想空間において前記面が設定される領域を表す画像を前記第2画像として生成する、請求項24に記載の3次元位置算出方法。
【請求項26】
前記第1画像生成ステップにおいて、前記情報処理装置は、前記面の姿勢と独立して視線方向が設定される第1仮想カメラを用いて第1画像を生成し、
前記第2画像生成ステップにおいて、前記情報処理装置は、前記面に対して視線方向が略垂直となるように設定される第2仮想カメラを用いて前記第2画像を生成する、請求項25に記載の3次元位置算出方法。
【請求項27】
前記面設定ステップにおいて、前記情報処理装置は、前記操作装置の姿勢に対応するように前記面の姿勢を制御する、請求項18から請求項26のいずれか1項に記載の3次元位置算出方法。
【請求項28】
前記面設定ステップにおいて、前記情報処理装置は、前記操作装置の姿勢に対応するように前記面の姿勢を制御すると共に、前記操作装置の姿勢に応じて前記面の位置を制御する、請求項18から請求項26のいずれか1項に記載の3次元位置算出方法。
【請求項29】
前記面設定ステップにおいて、前記情報処理装置は、前記仮想空間内の所定位置を中心として前記操作装置の姿勢に応じて回転移動するように前記面を制御する、請求項28に記載の3次元位置算出方法。
【請求項30】
前記面設定ステップにおいて、前記情報処理装置は、前記操作装置に対する方向入力操作に基づいて前記面を移動させる、請求項18から請求項29のいずれか1項に記載の3次元位置算出方法。
【請求項31】
前記位置算出ステップにおいて算出された位置を入力として所定のゲーム処理を実行するゲーム処理ステップをさらに備える、請求項18から請求項30のいずれか1項に記載の3次元位置算出方法。
【請求項32】
操作部に対する操作に基づいて3次元の仮想空間における位置を算出する情報処理システムにおいて実行される3次元位置算出方法であって、
前記操作部に設けられる所定の入力面に対する入力位置を表すデータと、前記操作部の姿勢を算出するための物理量を表すデータを含む操作データを取得する操作データ取得ステップと、
前記物理量に基づいて前記操作装置の姿勢を算出する姿勢算出ステップと、
前記姿勢に基づいて前記仮想空間内に所定の面を設定する面設定ステップと、
前記面の位置を含む前記仮想空間内の領域を表す第1画像を生成する第1画像生成ステップと、
前記第1画像を所定の表示装置へ出力する第1画像出力ステップと、
前記仮想空間内の位置として、前記入力位置によって決められる前記面上の位置を算出する位置算出ステップとを備える、3次元位置算出方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【公開番号】特開2012−221145(P2012−221145A)
【公開日】平成24年11月12日(2012.11.12)
【国際特許分類】
【出願番号】特願2011−85214(P2011−85214)
【出願日】平成23年4月7日(2011.4.7)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成24年11月12日(2012.11.12)
【国際特許分類】
【出願日】平成23年4月7日(2011.4.7)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]