以下、本実施形態の一例に係る情報処理システムの一例であるゲームシステムについて説明する。本実施形態におけるゲームシステムは、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とケース200と頭部装着具300とによって構成される。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、ゲームシステムは、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、ゲームシステムは、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(図2参照)。また、ゲームシステムにおけるケース200および頭部装着具300は、その内部にコントローラ(例えば、左コントローラ3や右コントローラ4)を装着することによって、それぞれ拡張操作装置として利用することができる。以下では、本実施形態のゲームシステムのハードウェア構成について説明し、その後に本実施形態のゲームシステムの制御について説明する。なお、内部に右コントローラ4が装着された拡張操作装置(ケース200)が、本実施例における慣性センサ、撮像部、被検出部、および操作部を備える装置の一例に相当する。
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステムにおける各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。図1および図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
図3は、本体装置2の一例を示す六面図である。図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。本実施形態においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、図6に示すスピーカ88)を備えている。図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
図3に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステムおよびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステムは、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
図4は、左コントローラ3の一例を示す六面図である。図4に示すように、左コントローラ3は、ハウジング31を備える。本実施形態においては、ハウジング31は、縦長の形状、すなわち、上下方向(すなわち、図1および図4に示すy軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
左コントローラ3は、アナログスティック32を備える。図4に示すように、アナログスティック32は、ハウジング31の主面に設けられる。アナログスティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック32を押下する入力が可能である。
左コントローラ3は、各種操作ボタンを備える。左コントローラ3は、ハウジング31の主面上に4つの操作ボタン33〜36(具体的には、右方向ボタン33、下方向ボタン34、上方向ボタン35、および左方向ボタン36)を備える。さらに、左コントローラ3は、録画ボタン37および−(マイナス)ボタン47を備える。左コントローラ3は、ハウジング31の側面の左上に第1Lボタン38およびZLボタン39を備える。また、左コントローラ3は、ハウジング31の側面の、本体装置2に装着される際に装着される側の面に第2Lボタン43および第2Rボタン44を備える。これらの操作ボタンは、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
図5は、右コントローラ4の一例を示す六面図である。図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態においては、ハウジング51は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
右コントローラ4は、左コントローラ3と同様、方向入力部としてアナログスティック52を備える。本実施形態においては、アナログスティック52は、左コントローラ3のアナログスティック32と同じ構成である。また、右コントローラ4は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ4は、左コントローラ3と同様、ハウジング51の主面上に4つの操作ボタン53〜56(具体的には、Aボタン53、Bボタン54、Xボタン55、およびYボタン56)を備える。さらに、右コントローラ4は、+(プラス)ボタン57およびホームボタン58を備える。また、右コントローラ4は、ハウジング51の側面の右上に第1Rボタン60およびZRボタン61を備える。また、右コントローラ4は、左コントローラ3と同様、第2Lボタン65および第2Rボタン66を備える。
また、ハウジング51の下側面には、窓部68が設けられる。詳細は後述するが、右コントローラ4は、ハウジング51の内部に配置される赤外撮像部123および赤外発光部124を備えている。赤外撮像部123は、右コントローラ4の下方向(図5に示すy軸負方向)を撮像方向として、窓部68を介して右コントローラ4の周囲を撮像する。赤外発光部124は、右コントローラ4の下方向(図5に示すy軸負方向)を中心とする所定範囲を照射範囲として、赤外撮像部123が撮像する撮像対象に窓部68を介して赤外光を照射する。窓部68は、赤外撮像部123のカメラのレンズや赤外発光部124の発光体等を保護するためのものであり、当該カメラが検知する波長の光や当該発光体が照射する光を透過する材質(例えば、透明な材質)で構成される。なお、窓部68は、ハウジング51に形成された孔であってもよい。なお、本実施形態においては、カメラが検知する光(本実施形態においては、赤外光)以外の波長の光の透過を抑制するフィルタ部材を赤外撮像部123自身が有する。ただし、他の実施形態においては、窓部68がフィルタの機能を有していてもよい。
また、詳細は後述するが、右コントローラ4は、NFC通信部122を備える。NFC通信部122は、NFC(Near Field Communication)の規格に基づく近距離無線通信を行う。NFC通信部122は、近距離無線通信に用いられるアンテナ122aと、アンテナ122aから送出すべき信号(電波)を生成する回路(例えばNFCチップ)とを有する。なお、NFC通信部122は、NFCの規格に基づく近距離無線通信を行う代わりに、任意の近接通信(非接触通信とも言う)で近距離無線通信を行うようにしてもよい。ここで、NFCの規格は、近接通信(非接触通信)に用いることができるものであり、「任意の近接通信で近距離無線通信を行うようにしてもよい」とは、NFCの規格による近接通信を除いた他の近接通信で近距離無線通信を行ってもよいことを意図している。
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、図3に示す構成の他、図6に示す各構成要素81〜91、97、および98を備える。これらの構成要素81〜91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System−on−a−chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi−Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
プロセッサ81は、上述の左側端子17、右側端子21、および下側端子27に接続される。プロセッサ81は、左コントローラ3と有線通信を行う場合、左側端子17を介して左コントローラ3へデータを送信するとともに、左側端子17を介して左コントローラ3から操作データを受信する。また、プロセッサ81は、右コントローラ4と有線通信を行う場合、右側端子21を介して右コントローラ4へデータを送信するとともに、右側端子21を介して右コントローラ4から操作データを受信する。また、プロセッサ81は、クレードルと通信を行う場合、下側端子27を介してクレードルへデータを送信する。このように、本実施形態においては、本体装置2は、左コントローラ3および右コントローラ4との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置または本体装置2単体がクレードルに装着された場合、本体装置2は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、複数のユーザは、左コントローラ3および右コントローラ4のセットをそれぞれ用いて、本体装置2に対する入力を同時に行うことができる。一例として、第1ユーザが左コントローラ3および右コントローラ4の第1セットを用いて本体装置2に対して入力を行うと同時に、第2ユーザが左コントローラ3および右コントローラ4の第2セットを用いて本体装置2に対して入力を行うことが可能となる。
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とプロセッサ81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ81へ出力する。
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
また、本体装置2は、加速度センサ89を備える。本実施形態においては、加速度センサ89は、所定の3軸(例えば、図1に示すxyz軸)方向に沿った加速度の大きさを検出する。なお、加速度センサ89は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。
また、本体装置2は、角速度センサ90を備える。本実施形態においては、角速度センサ90は、所定の3軸(例えば、図1に示すxyz軸)回りの角速度を検出する。なお、角速度センサ90は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。
加速度センサ89および角速度センサ90は、プロセッサ81に接続され、加速度センサ89および角速度センサ90の検出結果は、プロセッサ81へ出力される。プロセッサ81は、上記の加速度センサ89および角速度センサ90の検出結果に基づいて、本体装置2の動きおよび/または姿勢に関する情報を算出することが可能である。
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、図6で示しているため図7では省略している。
左コントローラ3は、本体装置2との間で通信を行う通信制御部101を備える。図7に示すように、通信制御部101は、端子42を含む各構成要素に接続される。本実施形態においては、通信制御部101は、端子42を介した有線通信と、端子42を介さない無線通信との両方で本体装置2と通信を行うことが可能である。通信制御部101は、左コントローラ3が本体装置2に対して行う通信方法を制御する。すなわち、左コントローラ3が本体装置2に装着されている場合、通信制御部101は、端子42を介して本体装置2と通信を行う。また、左コントローラ3が本体装置2から外されている場合、通信制御部101は、本体装置2(具体的には、コントローラ通信部83)との間で無線通信を行う。コントローラ通信部83と通信制御部101との間の無線通信は、例えばBluetooth(登録商標)の規格に従って行われる。
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
左コントローラ3は、各ボタン103(具体的には、ボタン33〜39、43、44、および47)を備える。また、左コントローラ3は、アナログスティック(図7では「スティック」と記載する)32を備える。各ボタン103およびアナログスティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
左コントローラ3は、慣性センサを備える。具体的には、左コントローラ3は、加速度センサ104を備える。また、左コントローラ3は、角速度センサ105を備える。本実施形態においては、加速度センサ104は、所定の3軸(例えば、図4に示すxyz軸)方向に沿った加速度の大きさを検出する。なお、加速度センサ104は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。本実施形態においては、角速度センサ105は、所定の3軸(例えば、図4に示すxyz軸)回りの角速度を検出する。なお、角速度センサ105は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。加速度センサ104および角速度センサ105は、それぞれ通信制御部101に接続される。そして、加速度センサ104および角速度センサ105の検出結果は、適宜のタイミングで繰り返し通信制御部101へ出力される。
通信制御部101は、各入力部(具体的には、各ボタン103、アナログスティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103およびアナログスティック32に対する操作を、操作データに基づいて判別することができる。また、本体装置2は、左コントローラ3の動きおよび/または姿勢に関する情報を、操作データ(具体的には、加速度センサ104および角速度センサ105の検出結果)に基づいて算出することができる。
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、アナログスティック52、慣性センサ(加速度センサ114および角速度センサ115)を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
右コントローラ4は、NFCの規格に基づく近距離無線通信を行うNFC通信部122を備える。NFC通信部122は、いわゆるNFCリーダ・ライタの機能を有する。ここで、本明細書において近距離無線通信とは、一方の装置(ここでは、右コントローラ4)からの電波によって(例えば電磁誘導によって)他方の装置(ここでは、アンテナ122aと近接する装置)に起電力を発生させる通信方式が含まれる。他方の装置は、発生した起電力によって動作することが可能であり、電源を有していてもよいし有していなくてもよい。NFC通信部122は、右コントローラ4(アンテナ122a)と通信対象とが接近した場合(典型的には、両者の距離が十数センチメートル以下となった場合)に当該通信対象との間で通信可能となる。通信対象は、NFC通信部122との間で近距離無線通信が可能な任意の装置であり、例えばNFCタグやNFCタグの機能を有する記憶媒体である。ただし、通信対象は、NFCのカードエミュレーション機能を有する他の装置であってもよい。一例として、本実施例では、NFC通信部122は、ケース200内に装着された通信対象(例えば、NFCタグ)との間で無線通信することによって、ケース200の種別情報や識別情報等を取得してもよい。
また、右コントローラ4は、赤外撮像部123を備える。赤外撮像部123は、右コントローラ4の周囲を撮像する赤外線カメラを有する。本実施形態においては、赤外撮像部123は、拡張操作装置(例えば、ケース200)内部に配置された撮像対象部材を撮像するために用いられる。本体装置2および/または右コントローラ4は、撮像された撮像対象部材の情報(例えば、撮像対象部材の平均輝度、面積、重心座標等)を算出し、当該情報に基づいて、拡張操作装置に対して操作された操作内容を判別する。また、赤外撮像部123は、環境光によって撮像を行ってもよいが、本実施例においては、赤外線を照射する赤外発光部124を有する。赤外発光部124は、例えば、赤外線カメラが画像を撮像するタイミングと同期して、赤外線を照射する。そして、赤外発光部124によって照射された赤外線が撮像対象部材によって反射され、当該反射された赤外線が赤外線カメラによって受光されることで、赤外線の画像が取得される。これによって、赤外撮像部123は、より鮮明な赤外線画像を得ることができる。なお、赤外撮像部123と赤外発光部124とは、それぞれ別のデバイスとして右コントローラ4内に設けられてもよいし、同じパッケージ内に設けられた単一のデバイスとして右コントローラ4内に設けられてもよい。また、本実施形態においては、赤外線カメラを有する赤外撮像部123が用いられるが、他の実施形態においては、撮像手段として、赤外線カメラに代えて可視光カメラ(可視光イメージセンサを用いたカメラ)が用いられてもよい。
右コントローラ4は、処理部121を備える。処理部121は、通信制御部111に接続される。また、処理部121は、NFC通信部122、赤外撮像部123、および赤外発光部124に接続される。処理部121は、本体装置2からの指令に応じて、NFC通信部122に対する管理処理を実行する。例えば、処理部121は、本体装置2からの指令に応じてNFC通信部122の動作を制御する。また、処理部121は、NFC通信部122の起動を制御したり、通信対象(例えば、NFCタグ)に対するNFC通信部122の動作(具体的には、読み出しおよび書き込み等)を制御したりする。また、処理部121は、通信制御部111を介して通信対象に送信されるべき情報を本体装置2から受信してNFC通信部122へ渡したり、通信対象から受信された情報をNFC通信部122から取得して通信制御部111を介して本体装置2へ送信したりする。
また、処理部121は、CPUやメモリ等を含み、右コントローラ4に備えられた図示しない記憶装置(例えば、不揮発性メモリ等)に記憶された所定のプログラム(例えば、画像処理や各種演算を行うためのアプリケーションプログラム)に基づいて、本体装置2からの指令に応じて赤外撮像部123に対する管理処理を実行する。例えば、処理部121は、赤外撮像部123に撮像動作を行わせたり、撮像結果に基づく情報(撮像画像の情報、あるいは、当該情報から算出される情報等)を取得および/または算出して通信制御部111を介して本体装置2へ送信したりする。また、処理部121は、本体装置2からの指令に応じて赤外発光部124に対する管理処理を実行する。例えば、処理部121は、本体装置2からの指令に応じて赤外発光部124の発光を制御する。なお、処理部121が処理を行う際に用いるメモリは、処理部121内に設けられてもいいし、メモリ112であってもよい。
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
次に、図8を参照して、拡張操作装置の一例であるケース200および頭部装着具300を用いた操作について説明する。図8は、ユーザがケース200および頭部装着具300を装着してゲーム操作する様子の一例を示す図である。本実施例において、ケース200には右コントローラ4を装着することが可能であり、ケース200に装着された右コントローラ4から送信されるデータに基づいて、ケース200に対する操作内容に応じた処理が実行される。また、頭部装着具300には左コントローラ3を装着することが可能であり、頭部装着具300に装着された左コントローラ3から送信されるデータに基づいて、頭部装着具300に対する操作内容に応じた処理が実行される。ここで、詳細は後述するが、ケース200に対する操作内容は、赤外撮像部123によって撮像された撮像画像や右コントローラ4に設けられた慣性センサの検出結果に基づいて検出される。したがって、ケース200は、ユーザによる操作内容を検出したり、検出結果を本体装置2へ送信したりする電子回路等の電気的構成を必要としない。また、頭部装着具300に対する操作内容は、左コントローラ3に設けられた慣性センサの検出結果に基づいて検出される。したがって、頭部装着具300も、ユーザによる操作内容を検出したり、検出結果を本体装置2へ送信したりする電子回路等の電気的構成を必要としない。そのため、本実施例によれば、拡張操作装置の一例であるケース200や頭部装着具300の構成を簡易化することができる。
例えば、本実施例では、図8に示すように、ユーザは、ケース200を背負って装着し、ケース200に備えられている複数の紐部材204を引っ張ったり緩めたりすることによって、ケース200を用いた操作を行う。例えば、ユーザは、紐部材204の一端に設けられた操作部(後述する操作部250および操作部260)を両足および両手にそれぞれ装着する。これによって、ユーザが左足を動かした場合、左足に装着された操作部250に接続された紐部材204が引っ張られたり緩められたりし、ユーザが右足を動かした場合、右足に装着された操作部250に接続された紐部材204が引っ張られたり緩められたりする。また、ユーザが左手を動かした場合、左手に装着された操作部260に接続された紐部材204が引っ張られたり緩められたりし、ユーザが右手を動かした場合、右手に装着された操作部260に接続された紐部材204が引っ張られたり緩められたりする。このように、ユーザが両手両足を動かす態様に応じて、異なる紐部材204が引っ張られたり緩められたりすることになる。また、本実施例では、ユーザは、背負っているケース200を傾けることによって、ケース200を用いた操作を行うことも可能である。なお、ケース200が、慣性センサ、撮像部、被検出部、および操作部等を含む装置の一例に相当する。
また、本実施例では、図8に示すように、ユーザは、頭部装着具300をヘルメットや帽子のように頭部に被り、頭部装着具300を前後左右に傾けることによって、頭部装着具300を用いた操作を行う。
このようなケース200および頭部装着具300を用いた操作に応じて、仮想空間に配置されたプレイヤオブジェクトPOが動作し、当該プレイヤオブジェクトPOの動作が反映された仮想空間の画像が表示装置(例えば、本体装置11のディスプレイ12)に表示される。例えば、操作部260が装着された左手を縮めた状態から伸ばした状態になるようにユーザが動作した場合、当該操作部260に接続された紐部材204が引っ張られることになる。この紐部材204を引っ張る操作によって、当該紐部材204は、ケース200のケース本体201(図9参照)から引っ張り出されるように動く。このような紐部材204の動きをケース200内部において検出することによって、ケース200を背負ったユーザが左手を伸ばすような動作をしたことが推測され、プレイヤオブジェクトPOも仮想空間において左手を伸ばすように動作する。また、操作部250が装着された左足を伸ばした状態から上げるようにユーザが動作した場合、当該操作部250に接続された紐部材204が緩むことになる。この紐部材204を緩める操作によって、当該紐部材204は、ケース200のケース本体201(図9参照)に戻るように動く。このような紐部材204の動きをケース200内部において検出することによって、ケース200を背負ったユーザが左足を上げるような動作をしたことが推測され、プレイヤオブジェクトPOも仮想空間において左足を上げるように動作する。つまり、紐部材204が接続された操作部250または操作部260が装着された部位をユーザが動作させた場合、当該部位に対応するプレイヤオブジェクトPOの一部(例えば、ユーザが動かした部位と同じ部位)が動作することになる。なお、ケース200を用いた操作に応じて、仮想空間に配置されたプレイヤオブジェクトPOが動作するだけでなく、プレイヤオブジェクトPOが仮想空間において他の態様で変化してもよい。例えば、ケース200を用いた所定の操作に応じて、プレイヤオブジェクトPOの表示態様が変化(例えば、色が変わる、他のオブジェクトに変異する、サイズが変わる、能力が変わる等)してもよい。
また、ケース200に装着されている右コントローラ4には、慣性センサ(加速度センサ114および角速度センサ115)が備えられており、当該慣性センサの検出結果を用いて、右コントローラ4の姿勢および/または動き(すなわち、ケース200の姿勢および/または動き)を算出することが可能である。本実施例では、このようなケース200の姿勢および/または動きに応じて、プレイヤオブジェクトPOの動作を制御することが可能である。例えば、ケース200を背負うユーザが身体全体を右に倒すように動いた場合、ケース200自体も右に倒れるように動くため、このような動きを右コントローラ4の慣性センサで検出することによって、ケース200を背負ったユーザが右に倒れるような動作をしたことが推測できる。そして、ユーザが右に倒れるような動作をしたと推測された場合、プレイヤオブジェクトPOも仮想空間において右に倒れたり右に旋回したりするように動作する。また、ケース200を背負うユーザがジャンプした場合、ケース200自体も上下に動くため、このような動きを右コントローラ4の慣性センサで検出することによって、ケース200を背負ったユーザがジャンプしたことが推測できる。そして、ユーザがジャンプしたと推測された場合、プレイヤオブジェクトPOも仮想空間においてジャンプしたり空中を飛んだりする。つまり、ユーザがケース200全体を動かした場合、プレイヤオブジェクトPO全体が当該ケース200全体の動きや姿勢に応じて動作することになる。なお、本実施例では、ケース200に右コントローラ4が装着されることによってケース200内に慣性センサが設けられるため、当該慣性センサがケース200に対して着脱自在に装着されることになる。しかしながら、他の態様においては、慣性センサがケース200に固設(すなわち、着脱不可能)されていてもよい。また、右コントローラ4自体がケース200に固設(すなわち、着脱不可能)されていてもよい。この場合、右コントローラ4に内蔵されている赤外撮像部123(撮像部)もケース200に固設されることになる。
また、頭部装着具300に装着されている左コントローラ3には、慣性センサ(加速度センサ104および角速度センサ105)が備えられており、当該慣性センサの検出結果を用いて、左コントローラ3の姿勢および/または動き(すなわち、頭部装着具300の姿勢および/または動き)を算出することが可能である。本実施例では、このような頭部装着具300の姿勢および/または動きに応じて、プレイヤオブジェクトPOの動作を制御することが可能である。例えば、頭部装着具300を被るユーザが頭部を右に倒すように動いた場合、頭部装着具300自体も右に倒れるように動くため、このような動きを左コントローラ3の慣性センサで検出することによって、頭部装着具300を背負ったユーザが右に傾くような動作をしたことが推測できる。そして、ユーザが右に傾くような動作をしたと推測された場合、プレイヤオブジェクトPOも仮想空間において右に傾いたり右に旋回したりするように動作する。つまり、ユーザが頭部装着具300全体を動かした場合、プレイヤオブジェクトPO全体が当該頭部装着具300全体の動きや姿勢に応じて動作することになる。なお、本実施例では、頭部装着具300に左コントローラ3が装着されることによって頭部装着具300に慣性センサが設けられるため、当該慣性センサが頭部装着具300に対して着脱自在に装着されることになる。しかしながら、他の態様においては、慣性センサが頭部装着具300に固設(すなわち、着脱不可能)されていてもよい。
上述したように、ケース200および頭部装着具300を用いた操作に応じて動作するプレイヤオブジェクトPOは、表示装置(例えば、本体装置11のディスプレイ12)に表示される。したがって、ケース200および頭部装着具300を装着して操作するユーザは、プレイヤオブジェクトPOが表示される表示装置を見ることによってゲームを楽しむことになるが、当該表示装置にプレイヤオブジェクトPOを表示するための視点は、仮想空間においてどのような位置に配置されてもよい。第1の例として、プレイヤオブジェクトPOの背後からプレイヤオブジェクトPOを見た仮想空間画像を上記表示装置に表示してもよい。第2の例として、プレイヤオブジェクトPOの第1人称視点によって、上記表示装置に仮想空間画像を表示してもよい。第3の例として、プレイヤオブジェクトPOの正面からプレイヤオブジェクトPOを見た仮想空間画像を上記表示装置に表示してもよい。ここで、仮想空間に配置する視点および視線方向によっては、ユーザにとって自分自身の動きに対するプレイヤオブジェクトPOの動きを把握することが難しくなることが考えられるが、ケース200および頭部装着具300を用いた操作に対応して動作するプレイヤオブジェクトPOの部位や動作方向を当該視点および視線方向に応じて設定することによって、臨場感のあるゲームプレイを提供することが可能となる。
次に、図9〜図12を参照して、拡張操作装置の一例であるケース200について説明する。なお、図9は、ケース200の外観の一例を示す図である。図10は、ケース200のコントローラ配置部202に右コントローラ4が装着された状態の一例を示す図である。図11は、ケース200内部に設けられた撮像対象部材205を撮像する右コントローラ4の状態の一例を示す図である。図12は、操作部250、操作部260、および紐部材204の動きに応じて、撮像対象部材205がスライド移動する一例を示す図である。
図9において、ケース200は、ケース本体201、コントローラ配置部202、肩ベルト203、紐部材204、操作部250、および操作部260を有している。ケース200は、全体として背負いカバンのような形状であり、ケース本体201に2本の肩ベルト203が取り付けられていることによって、ユーザがケース200を背負うことが可能である。ケース本体201は、2本の肩ベルト203が取り付けられるとともにユーザがケース200を背負った場合にユーザの背中と接する部分となる前側本体201aと、ユーザがケース200を背負った場合に背面部分となる後側本体201bとによって構成されている。そして、前側本体201aと後側本体201bとを組み合わせることによって、ケース本体201内には、外部からの光が遮られた内部空間が形成される。
前側本体201aは、ケース本体201から引き出したりケース本体201へ戻したりする操作が可能に構成される複数(図9においては4本)の紐部材204が設けられている。具体的には、紐部材204は、それぞれ前側本体201aの上面に形成された複数の孔から一方端が外部に引き出された状態で配置され、他方端が前側本体201aの内部に設けられている複数の撮像対象部材205(図11、図12参照)にそれぞれ接続されている。そして、図8を用いて説明したように、ユーザがケース200を背負って装着した場合、紐部材204の一方端に接続された操作部250および操作部260をそれぞれユーザの両足、両手等にそれぞれ装着することによって、ケース200を用いた操作が行われる。
後側本体201bは、背面中央付近にコントローラ配置部202を有している。コントローラ配置部202は、前側本体201aおよび後側本体201bによって形成されるケース本体201の内部空間を後側本体201bの背面側外部(すなわち、ケース本体201の外部)に開放する開口部が形成される。図10に示すように、コントローラ配置部202の開口部は、その上下方向の長さが右コントローラ4のハウジング51の厚さ(図1に示すz軸方向の長さ)とほぼ同じであり、その左右方向の長さが右コントローラ4のハウジング51の左右方向の長さ(図1に示すx軸方向の最大長さ)とほぼ同じである。したがって、右コントローラ4の下面がケース本体201の内部に進入するようにコントローラ配置部202の開口部に右コントローラ4が挿入された状態で配置された場合には、ハウジング51によって当該開口部が塞がれるような状態となる。そして、コントローラ配置部202の開口部の上面には、切り欠き部Naが形成されている。これによって、右コントローラ4の上面が上方を向いた状態で右コントローラ4のy軸負方向がケース200の前方方向となるように右コントローラ4が当該開口部に挿入された場合に、右コントローラ4のアナログスティック52の操作軸部が切り欠き部Naに嵌合する状態となって、右コントローラ4がコントローラ配置部202に配置される(図10下図参照)。このように、右コントローラ4がコントローラ配置部202に配置されてケース200に装着された場合、右コントローラ4の一部がケース200の内部空間に内包されるとともに、赤外撮像部123が当該内部空間内を撮像可能な状態となる。なお、図10に例示している右コントローラ4は、その一部がケース200の内部空間に内包されて装着されているが、その全部がケース200の内部空間に内包されて装着されてもよいし、その下面(窓部68が設けられている面)だけがケース200の内部空間に面するように装着されてもよい。
なお、後側本体201bは、コントローラ配置部202の近傍にNFC通信部122の通信対象(例えば、NFCタグ)が備えられていてもよい。例えば、右コントローラ4がコントローラ配置部202に配置された状態で、後側本体201bにおける当該右コントローラ4のアンテナ122aと近接する位置に上記通信対象を配置する。これによって、右コントローラ4がコントローラ配置部202に装着されると同時に上記通信対象との間で近距離無線通信が可能な状態となり、当該通信対象に拡張操作装置の種別(ここでは、ケース200)や固有の識別情報等を記憶させておくことによって、右コントローラ4が装着された拡張操作装置の信頼性を確認することができる。
図11および図12に示すように、ケース本体201の内部空間には複数の撮像対象部材205が配置される。複数の撮像対象部材205は、それぞれ上下方向(図12に示すA方向およびB方向)にスライド移動可能にするスライド部206内に配置される。スライド部206は、スライド部206内の空間を複数の撮像対象部材205がそれぞれ上記スライド方向にスライド移動するレーンに分割する仕切り部207を有している。また、スライド部206は、上記各レーンの上方開口部がそれぞれ前側本体201aの上面に形成された複数の孔の下方位置に配置されるように、ケース本体201の内部空間における前側本体201a内に固設される。
撮像対象部材205は、それぞれ所定の重量を有しており、紐部材204の他方端にそれぞれ接続されている。そして、撮像対象部材205に接続されている紐部材204は、スライド部206のレーン内および当該レーン上方に形成されている前側本体201aの上面に形成された孔を通って、ケース本体201の外部へ引き出されている。したがって、撮像対象部材205に接続されている紐部材204が、当該撮像部材205の重量より大きな力でケース本体201の外部へ引っ張られた場合、当該撮像部材205がスライド部206のレーンに沿って上方向(図12におけるA方向)に上昇することになる。また、撮像部材205を上昇させている紐部材204が緩められた場合、当該撮像部材205が自重によってスライド部206のレーンに沿って下方向(図12におけるB方向)に下降することになる。このように、複数の撮像対象部材205は、それぞれ接続された紐部材204が操作部250または260を用いて引っ張られたり緩められたりする操作に応じて、ケース本体201の内部空間内で昇降するスライド移動して連動することになる。なお、紐部材204が、接続部の一例に相当する。
図11に示すように、スライダ部206は、コントローラ配置部202に装着された右コントローラ4の赤外撮像部123と対向する位置となる。したがって、右コントローラ4がコントローラ配置部202に装着された状態では、赤外撮像部123は、スライダ部206を撮像可能である。また、上記状態では、赤外発光部124は、スライダ部206に赤外光を照射可能である。したがって、ケース本体201の内部空間は、外部光が遮られた状態となっているが、赤外発光部124によって赤外光がスライダ部206に照射されているため、赤外撮像部123によってスライダ部206を撮像することができる。
スライダ部206は、コントローラ配置部202に装着された右コントローラ4と対向する面(後側となる面)に複数のスリットが形成されている。上記スリットは、右コントローラ4側から見て、スライダ部206に配置されている各撮像対象部材205の位置が見えるように、上記スライド方向を長軸方向として上記レーン毎に形成されている。したがって、赤外撮像部123が撮像した撮像画像は、上記スリットを介して、スライダ部206における各撮像対象部材205の位置を認識することができる。
撮像対象部材205の少なくとも一部(典型的には、上記スリットを介して赤外撮像部123から見える部分を少なくとも含む部分)は、赤外撮像部123が撮像する撮像画像において他の部分と区別可能な材質で構成される認識部205aで構成される。例えば、認識部205aは、再帰性反射の特性を有する材質で構成されてもよい。これによって、赤外発光部124から照射された赤外光がより多く反射するため、赤外撮像部123が撮像する撮像画像において認識部205a、すなわち撮像対象部材205をより認識しやすくなる。なお、上述した認識部205aは、受動的に赤外光を反射することによって発光するマーカとして機能するが、撮像部の特性に応じて受動的に他の光(例えば、可視光や紫外光)を反射することによって発光するマーカとして機能するものであってもよい。また、認識部205aは、能動的に光を発光するものでもよい。この場合、認識部205aは、赤外発光装置や可視光を強発光する装置等で構成されることが考えられる。また、認識部205aは、特殊な形状の指標(マーカ)であってもよい。一例として、認識部205aは、渦巻き型、矢印型、多角形型等、様々な形状であってもよい。なお、撮像対象部材205および/または認識部205aは、被検出部の一例に相当する。
なお、上述した実施例では、ケース200に設けられた紐部材204を操作部250または260を用いて引っ張ったり緩めたりすることによって、ケース200に対する操作が行われる例を用いたが、他の操作方法によってケース本体201内の撮像対象部材205を動かす操作手段が含まれていてもよい。例えば、ケース200内に差し込まれている棒状部材の一部を撮像対象部材として、当該撮像対象部材の位置や当該撮像対象部材がケース200内に存在するか否かを検出してもよい。この場合、ケース200内に差し込まれている棒状部材を差し込む深さを変えたり、当該棒状部材を引き抜いたり、当該棒状部材を差し戻したりする操作によって、ケース200に対する操作が行われることになる。
次に、図13および図14を参照して、赤外撮像部123が撮像した撮像画像から算出する撮像対象部材の情報について説明する。なお、図13は、第1モード(クラスタリングモード)において算出する撮像対象部材の情報の一例を説明するための図である。図14は、第2モード(モーメントモード)において算出する撮像対象部材の情報の一例を説明するための図である。
図13において、第1モードでは、赤外撮像部123が撮像した撮像画像の中から高輝度画素の塊(クラスタ)を検出し、当該撮像画像における当該クラスタの位置やサイズを算出する。例えば、図13に示すように、赤外撮像部123が撮像した撮像画像全体または当該撮像画像から情報を算出する撮像画像の一部領域(後述する解析ウインドウ)に対して、所定の座標軸(例えば、横方向をX軸、縦方向をY軸とする座標軸)を設定する。そして、上記座標軸が設定された画像から、所定の閾値以上の輝度を有する画素が隣接している画素群を抽出し、当該画素群が所定の範囲内のサイズ(第1閾値以上、かつ、第2閾値以下のサイズ)であればクラスタであると判定する。例えば、ケース200内のスライダ部206が撮像された撮像画像の場合、赤外発光部124から照射された赤外光をより多く反射する認識部205aが高輝度画素として抽出されるため、上記スリットを介して撮像された各認識部205aがそれぞれクラスタとして判定されることになる。そして、上記第1モードでは、このように抽出されたクラスタの総数が算出されるとともに、各クラスタの平均輝度、面積(画素数)、重心座標、および外接長方形が算出され、これらの算出結果が撮像対象部材の情報として算出される。
なお、上記第1モードにおいて、各クラスタの位置(重心座標や外接長方形の位置)を算出する際、撮像画像において設定された基準位置を基準として算出してもよい。一例として、上記基準位置は、撮像画像に撮像されている所定の被撮像物の位置に設定してもよい。具体的には、上述した撮像対象部材205(認識部205a)とは別に、再帰性反射の特性を有する材質で予め定められた形状で構成された基準マーカをスライダ部206付近(赤外撮像部123によって撮像可能な位置)の他の撮像対象部材205との位置関係が予め定められた位置に設け、当該基準マーカの位置を上記基準位置として機能させる。そして、赤外撮像部123の撮像画像を解析する際に、当該撮像画像に対してパターンマッチングを用いた画像処理等を行うことによって、当該撮像画像内から基準マーカが撮像されている位置を算出する。このような基準マーカの撮像位置を基準として各クラスタの位置を算出することによって、各クラスタの位置、向き、形状等を精度よく検出することができる。また、撮像画像内に撮像されている基準マーカと他の撮像対象部材205との位置関係や基準マーカが撮像されている形状を用いることによって、撮像対象部材205それぞれを特定することが容易になるとともに、当該位置関係や基準マーカの形状を拡張操作装置固有のものにすることによって、赤外撮像部123の撮像画像から拡張操作装置の種別等を判別することも可能となる。
図14において、第2モードでは、赤外撮像部123が撮像した撮像画像を複数のブロックに分割し、ブロック毎の平均輝度や重心位置を算出する。例えば、図14に示すように、赤外撮像部123が撮像した撮像画像全体または当該撮像画像から情報を算出する撮像画像の一部領域(後述する解析ウインドウ)に所定の座標軸(例えば、横方向をX軸、縦方向をY軸とする座標軸)を設定するとともに、当該座標軸が設定された画像を所定のブロック(例えば、8×6の48ブロック)に分割する。そして、各ブロックにおいて所定の閾値以上の輝度を有する画素を処理対象として、各ブロックの輝度の総和、各ブロックの横方向の一次モーメント、および各ブロックの縦方向の一次モーメントが算出され、これらの算出結果が撮像対象部材の情報として算出される。例えば、各ブロックの輝度の総和は、各ブロック内の画素が有する輝度を全画素について合計した値であり、当該総和を当該ブロックの画素数で除算することによって当該ブロックの平均輝度が得られるパラメータである。また、各ブロックの横方向の一次モーメントは、各ブロック内の画素が有する輝度に当該画素のX軸方向位置を乗算した値を全画素について合計した値であり、当該ブロックの横方向の一次モーメントを当該ブロックの輝度の総和で除算することによって当該ブロックにおける輝度の横方向重心位置が得られるパラメータである。また、各ブロックの縦方向の一次モーメントは、各ブロック内の画素が有する輝度に当該画素のY軸方向位置を乗算した値を全画素について合計した値であり、当該ブロックの縦方向の一次モーメントを当該ブロックの輝度の総和で除算することによって当該ブロックにおける輝度の縦方向重心位置が得られるパラメータである。
なお、これら第1モードにおける撮像対象部材の情報や第2モードにおける撮像対象部材の情報は、右コントローラ4内の処理部121において算出されて本体装置2へ送信される。したがって、赤外撮像部123が撮像した撮像画像そのものを示すデータを送信する場合と比較すると、本体装置2へ送信するデータ量を削減することができるとともに、本体装置2側における処理負荷も低減することができる。また、撮像対象部材の情報のデータ量が小さいため、右コントローラ4から送信する他の操作データに含ませて当該撮像対象部材の情報を本体装置2へ送信することも可能であり、右コントローラ4と本体装置2との間の通信処理自体も簡素に構成することができる。なお、撮像対象部材の情報を算出する右コントローラ4(処理部121)は、検出部および特定部の一例に相当する。
次に、図15を参照して、ケース200の組立方法について説明する。なお、図15は、ケース200を組み立てる際の主要部品の組み合わせ例を示す図である。
図15において、例えば、紐部材204を除くケース200における各構成部品は、厚紙部材を折り曲げることによって構成されている。なお、図15では、肩ベルト203、紐部材204、撮像対象部材205、操作部250、および操作部260の図示を省略している。スライド部206は、紐部材204が接続された複数の撮像対象部材205を各レーンに配置した状態で、仕切り部207を角筒部材208の内部に挿入することによって組み立てられる。具体的には、仕切り部207は、レーン毎の切り込みが生成された保持板材に複数の仕切り板材を挿入することによって組み立てられ、各板材が厚紙部材によって構成される。また、角筒部材208は、上記スリットが形成された板材を上記スライド方向が開口した角筒状に折り曲げることによって組み立てられ、当該板材が厚紙部材によって構成される。
なお、本実施例における厚紙部材は、積層構造を有する板紙単体や複数の板紙を貼り合わせた部材であってよい。一例として、波状に成形した板紙の片面または両面に板紙を貼り合わせた、いわゆる段ボール部材であってもよい。
また、前側本体201aおよび後側本体201bは、後側本体201bが有する4つの差し込み片Pbを前側本体201aに形成された4つの差し込み孔Hcにそれぞれ嵌合させることによって、スライド部206を設置する前のケース本体201が組み立てられる。
前側本体201aは、紐部材204を貫装するための複数の貫装孔Ha、肩ベルト203を装着するための4つの装着孔Hb、後側本体201bが有する4つの差し込み片Pbを差し込むための4つの差し込み孔Hc、後側本体201bに形成された差し込み孔Hfに差し込むための差し込み片Pa等がそれぞれ形成された板材を折り曲げることによって組み立てられる。具体的には、上記板材は、厚紙部材によって構成され、後面の一部が開口した略六面体形状に当該厚紙部材を折り曲げることによって、前側本体201aが組み立てられる。
後側本体201bは、前側本体201aに形成された4つの差し込み孔Hcに差し込むための4つの差し込み片Pb、前側本体201aが有する差し込み片Paを差し込むための差し込み孔Hf、コントローラ配置部202を挿設するための挿設孔Hd等がそれぞれ形成された板材を折り曲げることによって組み立てられる。具体的には、上記板材は、厚紙部材によって構成される。そして、上記厚紙部材の一部には、当該厚紙部材を切り出して折り曲げることによってコントローラ配置部202を形成する切り出し領域が形成されており、当該切り出し領域の厚紙部材を角筒状に折り曲げた状態で挿設孔Hdに貫装することによって、後側本体201bにコントローラ配置部202が形成される。そして、コントローラ配置部202が形成された状態で、略六面体形状に上記厚紙部材を折り曲げることによって、後側本体201bが組み立てられる。
このように組み立てられたケース本体201の4つの装着孔Hbに肩ベルト203を取り付ける。そして、ケース本体201の上面を開放した状態で、当該ケース本体201の前面側の内部空間にスライド部206を設置する。そして、各紐部材204を貫装孔Haに貫装した状態で、前側本体201aが有する差し込み片Paを後側本体201bに形成された差し込み孔Hfに嵌合させるように、ケース本体201の上面を閉じることによって、ケース200が組み立てられる。
このように、上述したケース200は、厚紙部材を折り曲げることによって組み立てられる各構成部品を組み合わせることによって構成されるため、板状の部材群を商品形態としてユーザが組み立てるような拡張操作装置を実現することができる。また、上述したように、当該拡張操作装置は、ユーザによる操作内容を検出したり、検出結果を本体装置2へ送信したりする電子回路等の電気的構成を必要としないため、上述したユーザ組立による商品として実現することが可能となる。
なお、上述した厚紙部材を折り曲げて多面体を形成する際の面同士の接合方法については、任意の方法でかまわない。例えば、当該面同士の接合辺を粘着テープで貼り合わせてもよいし、当該接合辺に差し込み辺および差し込み孔を形成して当該差し込みによって当該接合辺を接合してもよいし、当該接合辺同士を接着剤で接合してもよい。また、ケース200を構成する各部品が厚紙部材で構成される例を用いたが、これらの各部品の少なくとも一部は、薄紙部材や他の材質の板材であってもよい。例えば、上記各部品の少なくとも一部は、樹脂製や木製や金属製の薄板材や厚板材を折り曲げることによって組み立てられてもよいし、肩ベルト203が帯状の繊維材で構成されてもよい。また、上記各部品の一部に他の材質の部品が組み付けられていてもよい。例えば、紐部材204が貫装される孔は、当該紐部材204の移動によって削られることが考えられるため、当該孔において紐部材204と接触する部分に樹脂製等のリング部材をはめ込むことが考えられる。また、上記各部品の少なくとも一部は、予め多面体形状の部品として形成されていてもよい。
また、頭部装着具300(図8参照)は、上述したケース200のように、厚紙部材を折り曲げることによって、ヘルメットや帽子のような頭部に被ることができる部材として組み立てられてもよい。そして、頭部装着具300には、左コントローラ3の下面(図4に示すy軸負方向側に形成されている面)を下方としてy軸負方向に左コントローラ3を上方から縦に挿入して、左コントローラ3の主面(図4に示すz軸負方向側に形成されている面)がユーザの頭部左方向を向くように固定できる挿入孔が設けられる。したがって、左コントローラ3が縦方向に挿入されて固定された頭部装着具300をユーザが頭部に被って装着した場合、ユーザの首から頭部への方向が左コントローラ3のy軸正方向となり、ユーザの頭部左方向がz軸負方向となるため、左コントローラ3の慣性センサの検出結果に基づいて、ユーザの頭部が倒れている方向を推定することができる。なお、頭部装着具300は、ケース200とセットで商品化され、ユーザによって組立可能に構成されてもよい。
次に、図16〜図18を参照して、ケース200および頭部装着具300を装着したユーザが足を上げた場合の処理について説明する。なお、図16は、ケース200および頭部装着具300を装着したユーザが左足を上げた様子の一例を示す図である。図17は、ユーザが左足を上げた場合の撮像対象部材205の動きの一例を示す図である。図18は、ユーザが左足を上げた場合のプレイヤオブジェクトPOの動作の一例を示す図である。
図16において、ケース200および頭部装着具300を装着したユーザが左足を上げた場合、当該左足に装着されている操作部250が当該左足の上昇とともに上方へ移動し、当該操作部250にその一方端が接続されている紐部材204が緩む。したがって、ユーザが足を下ろした状態で当該足に対応する撮像対象部材205がスライド部206の上方に配置されるように紐部材204の長さ等が調整されている場合、ユーザが左足を上げることによって緩んだ紐部材204の他方端に接続されている撮像対象部材205は、スライド部206に沿って下方に降下する(図16に示す矢印方向)。
図17において、複数の撮像対象部材205がそれぞれスライド移動する経路に対して、撮像対象部材205の位置を判定するための閾値がそれぞれ設定されている。例えば、左足の動作に応じて昇降する左足用の撮像対象部材205は、左足用スライド部材206に沿ってスライド移動し、当該スライド移動に対して上限閾値FLHと下限閾値FLLとが設定されている。そして、左足用の撮像対象部材205の位置FLP(例えば、左足用の撮像対象部材205を構成する認識部205aの重心位置)が、上限閾値FLHの上方か否か、上限閾値FLHと下限閾値FLLとの間の範囲内か否か、下限閾値FLLの下方か否かを判定することによって、ユーザの左足動作を推定する。一例として、上限閾値FLH=170および下限閾値FLL=100にそれぞれ設定し、撮像対象部材205の位置FLPが170より大きな値である場合にユーザの左足が下ろされた状態と判定し、撮像対象部材205の位置FLPが100〜170の範囲である場合にユーザの左足が上げられている状態と判定し、撮像対象部材205の位置FLPが100より小さな値である場合にユーザの左足が最大限で上げられている状態と判定する。なお、撮像対象部材205の位置FLPが100より小さな値である場合、異常値であると判定してエラー判定してもよいし、位置FLPの値と同じ値または下限閾値FLLと位置FLPの値との間の値に下限閾値FLLを変化させてもかまわない。
撮像対象部材205の位置を判定するための閾値は、さらに細分化されてもよい。例えば、上限閾値FLH=170および下限閾値FLL=100に加えて、上限近傍判定値=163(上限より上記範囲の10%下方)および中間判定値=135(上記範囲の中央)を設定する。この場合、撮像対象部材205の位置FLPが170より大きな値である場合にユーザの左足が下ろされた状態と判定し、撮像対象部材205の位置FLPが163〜170の範囲である場合にユーザの左足が上げられようとしている準備状態と判定し、撮像対象部材205の位置FLPが135〜163の範囲である場合にユーザの左足が小さく上げられている状態(小股状態)と判定し、撮像対象部材205の位置FLPが100〜135である場合にユーザの左足が大きく上げられている状態(大股状態)と判定し、撮像対象部材205の位置FLPが100より小さな値である場合にユーザの左足が最大限で上げられている状態と判定してもよい。
また、左足用の撮像対象部材205と同様に、右足用の撮像対象部材205、左手用の撮像対象部材205、および右手用の撮像対象部材205にも、それぞれ撮像対象部材205の位置を判定するための閾値が設定されている。例えば、右足の動作に応じて昇降する右足用の撮像対象部材205は、右足用スライド部材206に沿ってスライド移動し、当該スライド移動に対して上限閾値FRH(例えば、FRH=170)と下限閾値FRL(例えば、FRL=100)とが設定されている。そして、右足用の撮像対象部材205の位置FRPが、上限閾値FRHの上方か否か、上限閾値FRHと下限閾値FRLとの間の範囲内か否か、下限閾値FRLの下方か否かを判定することによって、ユーザの右足動作(右足が上げられているか否かおよびその高さ)を推定する。また、左手の動作に応じて昇降する左手用の撮像対象部材205は、左手用スライド部材206に沿ってスライド移動し、当該スライド移動に対して上限閾値HLH(例えば、HLH=220)と下限閾値HLL(例えば、HLL=100)とが設定されている。そして、左手用の撮像対象部材205の位置HLPが、上限閾値HLHの上方か否か、上限閾値HLHと下限閾値HLLとの間の範囲内か否か、下限閾値HLLの下方か否かを判定することによって、ユーザの左手動作(左手が伸ばされているか否かおよび左手までの距離)を推定する。そして、右手の動作に応じて昇降する右手用の撮像対象部材205は、右手用スライド部材206に沿ってスライド移動し、当該スライド移動に対して上限閾値HRH(例えば、HRH=220)と下限閾値HRL(例えば、HRL=100)とが設定されている。そして、右手用の撮像対象部材205の位置HRPが、上限閾値HRHの上方か否か、上限閾値HRHと下限閾値HRLとの間の範囲内か否か、下限閾値HRLの下方か否かを判定することによって、ユーザの右手動作(右手が伸ばされているか否かおよび右手までの距離)を推定する。
そして、図18に示すように、撮像対象部材205の位置に応じて推定されたユーザの両足および両手の動作に基づいて、プレイヤオブジェクトPOを動作させ、当該プレイヤオブジェクトPOが表示された仮想空間を表示画面(例えば、ディスプレイ12)に表示する。例えば、左足用の撮像対象部材205の位置FLPによってユーザが左足を上げていると推定された場合、左足を踏み出して歩行する動作をプレイヤオブジェクトPOに行わせ、プレイヤオブジェクトPOが左足を踏み出して仮想空間を歩行する様子がディスプレイ12に表示される。なお、プレイヤオブジェクトPOが左足を踏み出す長さや左足を上げる高さについては、ユーザの左足が小股状態か大股状態かによって変化させたり、左足用の撮像対象部材205の位置FLPの値に応じて変化させたりしてもよい。
次に、図19〜図23を参照して、ケース200および頭部装着具300を装着したユーザが身体を傾けた場合の処理について説明する。なお、図19は、ケース200および頭部装着具300を装着したユーザが左に身体を傾けた様子の一例を示す図である。図20は、ユーザが身体を左に傾けた場合の撮像対象部材205の動きの一例を示す図である。図21は、ユーザが身体を左に傾けた場合に行われる閾値補正処理の一例を示す図である。図22は、ユーザが身体を後ろに傾けた場合に行われる閾値補正処理の一例を示す図である。図23は、ユーザが身体を左に傾けた場合のプレイヤオブジェクトPOの動作の一例を示す図である。
図19において、ケース200および頭部装着具300を装着したユーザが身体を左に傾けた場合、ケース200および頭部装着具300がそれぞれ左に傾く。したがって、ケース200に固定されている右コントローラ4および頭部装着具300に固定されている左コントローラ3もそれぞれ左に傾けられるため、右コントローラ4の慣性センサおよび/または左コントローラ3の慣性センサによる検出結果を解析することによって、ユーザが身体を左に傾けたことを推定することができる。
一方、ケース200が左に傾いた場合、ユーザの左足に装着されている操作部250にその一方端が接続されている紐部材204も緩むことになる。したがって、ユーザが身体を左に傾けることによって緩んだ紐部材204の他方端に接続されている左足用の撮像対象部材205は、スライド部206に沿って下方に降下する(図19に示す矢印方向)。つまり、左足用の撮像対象部材205は、ユーザが身体を左に傾けた場合もユーザが左足を上げた場合と同様に下方に降下することになる。したがって、左足用の撮像対象部材205のスライド移動に対して設定されている上限閾値FLHと下限閾値FLLとを用いてユーザの左足動作を推定する処理を行うと、ユーザが左足を上げていない状態でも左足を上げていると誤認することが考えられる。このように、固定された閾値を用いて撮像対象部材205の位置を判定する場合、ユーザ動作を正確に検出できないことが考えられる。
本実施例では、ケース200を装着したユーザの姿勢、すなわち右コントローラ4の慣性センサの検出結果に基づいた右コントローラ4の姿勢に応じて、撮像対象部材205の位置を判定するための閾値(範囲)を補正する。具体的には、本実施例では、ケース200を装着したユーザが左に傾いた場合、左足用の撮像対象部材205の位置を判定するための上限閾値FLHおよび下限閾値FLLをそれぞれ下げる補正を行う。また、本実施例では、ケース200を装着したユーザが右に傾いた場合、右足用の撮像対象部材205の位置を判定するための上限閾値FRHおよび下限閾値FRLをそれぞれ下げる補正を行う。また、本実施例では、ケース200を装着したユーザが後ろに傾いた場合、左足用の撮像対象部材205の位置を判定するための上限閾値FLHおよび下限閾値FLLと、右足用の撮像対象部材205の位置を判定するための上限閾値FRHおよび下限閾値FRLとを、それぞれ下げる補正を行う。そして、ケース200を装着したユーザの傾きが左右にも後ろにも傾いていない状態(例えば、鉛直方向)に戻った場合、それぞれの閾値を上述した初期値に戻す。
例えば、図20に示すように、ケース200を装着したユーザが左に傾いた場合、左足用の撮像対象部材205の位置FLPを判定するための上限閾値FLHを当該傾きに応じた補正量だけ図示a方向に下げ、下限閾値FLLを当該傾きに応じた補正量だけ図示b方向に下げる補正が行われる。このように、ケース200を装着したユーザが左に傾くことによって左足用の撮像対象部材205の位置FLPの値が上限閾値FLHの初期値(例えば、FLH=170)より小さい場合であっても、上限閾値FLHおよび下限閾値FLLをそれぞれ下げる補正を行うことによって、補正後の上限閾値FLHより大きな値となる。したがって、ケース200を装着したユーザが左に傾くことによって左足用の撮像対象部材205が降下したとしても、当該降下によってユーザが左足を上げていると判定されることを防止することができる。このように、ケース200を装着したユーザの姿勢、すなわち右コントローラ4の慣性センサの検出結果に基づいた右コントローラ4の姿勢に応じて、撮像対象部材205の位置を判定するための閾値を補正することによって、ユーザ動作を正確に検出することが可能となる。つまり、紐部材204を引き出したり緩めたりすることによるユーザ操作を検出する際、当該操作とは別のユーザ動作(例えば、身体を傾ける)によって同様に紐部材204が動く場合、これらのユーザ操作とユーザ動作との区別が難しくなるため、当該区別を正確に行うために閾値補正が必要となる。
図21に示すように、ケース200を装着したユーザが左または右に傾いた場合、当該傾き角度に応じて左足用の上限閾値FLHおよび下限閾値FLLまたは右足用の上限閾値FRHおよび下限閾値FRLがそれぞれ補正される。一例として、ケース200を装着したユーザが左に傾いた場合、右足用の上限閾値FRHおよび下限閾値FRLがそれぞれ初期値に維持され、図21に示す傾き角度に応じた閾値補正量で左足用の上限閾値FLHおよび下限閾値FLLがそれぞれ下げられる補正が行われる。また、ケース200を装着したユーザが右に傾いた場合、左足用の上限閾値FLHおよび下限閾値FLLがそれぞれ初期値に維持され、図21に示す傾き角度に応じた閾値補正量で右足用の上限閾値FRHおよび下限閾値FRLがそれぞれ下げられる補正が行われる。
例えば、ケース200を装着したユーザが左に傾いた場合、当該左に傾いた傾斜角度の1°あたり約6.67の補正量が増加していく関数に基づいて、左足用の上限閾値FLHおよび下限閾値FLLがそれぞれ下げられる補正が行われる。そして、それぞれの閾値に対する補正限界(例えば、上限閾値FLHの補正限界が125(補正量45)、下限閾値FLLの補正限界が65(補正量35))に到達した場合、補正限界に到達した上限閾値FLHまたは下限閾値FLLの補正は行われない。したがって、上限閾値FLHと下限閾値FLLとの間となる範囲は、補正処理において下限閾値FLLが先に補正限界に到達する場合、上限閾値FLHおよび下限閾値FLLがともに補正限界に到達した状態において最小幅となる。例えば、上述した例の場合、上限閾値FLHと下限閾値FLLとの間となる範囲は、補正前の初期状態において70であり、上記補正が行われることによって最小幅60まで縮小されることになる。
また、ケース200を装着したユーザが右に傾いた場合、左に傾いた場合と同様に当該右に傾いた傾斜角度の1°あたり約6.67の補正量が増加していく関数に基づいて、右足用の上限閾値FRHおよび下限閾値FRLがそれぞれ下げられる補正が行われる。そして、それぞれの閾値に対する補正限界(例えば、上限閾値FRHの補正限界が125(補正量45)、下限閾値FRLの補正限界が65(補正量35))に到達した場合、補正限界に到達した上限閾値FRHまたは下限閾値FRLの補正は行われない。したがって、上限閾値FRHと下限閾値FRLとの間となる範囲も、補正処理において下限閾値FRLが先に補正限界に到達する場合、上限閾値FRHおよび下限閾値FRLがともに補正限界に到達した状態において最小幅となる。例えば、上述した例の場合、上限閾値FRHと下限閾値FRLとの間となる範囲は、補正前の初期状態において70であり、上記補正が行われることによって最小幅60まで縮小されることになる。
図22に示すように、ケース200を装着したユーザが後ろに傾いた場合、当該後傾角度に応じて左足用の上限閾値FLHおよび下限閾値FLLと右足用の上限閾値FRHおよび下限閾値FRLとの全てがそれぞれ補正される。一例として、ケース200を装着したユーザが後ろに傾いた場合、図22に示す後傾角度に応じた閾値補正量で左足用の上限閾値FLHおよび下限閾値FLLと右足用の上限閾値FRHおよび下限閾値FRLとがそれぞれ下げられる補正が行われる。
例えば、ケース200を装着したユーザが後ろに傾いた場合、当該後傾角度の1°あたり約10.0の補正量が増加していく関数に基づいて、左足用の上限閾値FLHおよび下限閾値FLLと右足用の上限閾値FRHおよび下限閾値FRLとがそれぞれ下げられる補正が行われる。そして、それぞれの閾値に対する補正限界(例えば、上限閾値FLHおよびFRHの補正限界が125(補正量45)、下限閾値FLLおよびFRLの補正限界が65(補正量35))に到達した場合、補正限界に到達した閾値の補正は行われない。したがって、ケース200を装着したユーザが後ろに傾いた場合でも、上限閾値FLHと下限閾値FLLとの間となる範囲は、補正処理において下限閾値FLLが先に補正限界に到達する場合、上限閾値FLHおよび下限閾値FLLがともに補正限界に到達した状態において最小幅となる。例えば、上述した例の場合、上限閾値FLHと下限閾値FLLとの間となる範囲は、補正前の初期状態において70であり、上記補正が行われることによって最小幅60まで縮小されることになる。また、上限閾値FRHと下限閾値FRLとの間となる範囲も、補正処理において下限閾値FRLが先に補正限界に到達する場合、上限閾値FRHおよび下限閾値FRLがともに補正限界に到達した状態において最小幅となる。例えば、上述した例の場合、上限閾値FRHと下限閾値FRLとの間となる範囲は、補正前の初期状態において70であり、上記補正が行われることによって最小幅60まで縮小されることになる。
なお、ケース200を装着したユーザの傾きが鉛直方向へ近づくように戻される場合、それぞれの閾値を上述した初期値に戻すことになるが、撮像対象部材205が通常の位置に戻るよりも閾値が初期値に戻る方が早い場合、一時的に誤判定されることが考えられる。したがって、それぞれの閾値を上述した初期値に戻す場合、所定の係数に基づいてユーザの傾きが戻る速度よりも遅い速度でそれぞれの閾値を変化させてもかまわない。一例として、閾値補正量が小さくなる場合、当該閾値補正量が減少する量に1以下の係数(例えば、0.08)を乗算した値を用いて、当該閾値補正量を変化させてもよい。
また、実空間においてユーザが装着しているケース200が傾いている方向は、例えば重力加速度方向を基準として判定することが可能である。一例として、右コントローラ4に設けられている加速度センサ114が検出する加速度の値を解析することによって、任意の方法を用いて重力加速度の方向を算出することが可能であり、当該重力加速度の方向を基準とした右コントローラ4の姿勢を算出することによって、実空間においてケース200が傾いている方向を推定することができる。しかしながら、実空間においてユーザが装着しているケース200が傾いている方向は、この方法に限定されず、他の方法を用いてもかまわない。
また、ケース200を装着したユーザが左後ろに傾いた場合や右後ろに傾いた場合等、左または右への傾きと後ろへの傾きとが同時に生じた場合、最も大きい補正量となるものを選択して上記閾値を補正してもよいし、最も小さい補正量となるものを選択して上記閾値を補正してもよいし、算出された2つの閾値補正量の平均値や加算値を用いて上記閾値を補正してもよい。また、上述した補正では、ケース200を装着したユーザが前に傾いた場合、各閾値の補正が行われないが、当該前傾角度に応じて各閾値の補正が行われてもかまわない。また、上述した説明では左足用および右足用の撮像対象部材205の位置を判定するための閾値を補正する例を用いたが、ケース200を装着したユーザの傾き等に応じて、左手用または右手用の撮像対象部材205の位置を判定するための閾値を補正してもかまわない。
また、上述した閾値の補正処理では、閾値そのものや補正量に補正限界を設けているが、他の方法を用いて補正限界を設けてもかまわない。例えば、閾値を補正するケース200の最大傾斜角度を設定し、当該最大傾斜角度以上のケース200の傾きに対しては当該最大傾斜角度の補正量で補正してもよい。一例として、ケース200を装着したユーザが左右に傾いた場合の最大傾斜角度を30°に設定し、当該30°より大きな傾斜角度でケース200を装着したユーザが左右に傾いた場合には当該最大傾斜角度に対応する閾値補正量を用いてそれぞれの閾値を補正してもかまわない。また、ケース200を装着したユーザが後ろに傾いた場合の最大後傾角度を20°に設定し、当該20°より大きな後傾角度でケース200を装着したユーザが後ろに傾いた場合には当該最大後傾角度に対応する閾値補正量を用いてそれぞれの閾値を補正してもかまわない。
また、上述した閾値の補正処理では、複数の補正限界を組み合わせてもかまわない。例えば、上述した閾値そのものや補正量に設ける補正限界と傾斜角度に設ける補正限界とを組み合わせる場合、上限閾値に何れか一方による補正限界を採用し、下限閾値に何れか他方による補正限界を採用することが考えられる。
また、上述した説明では、ケース200を装着したユーザが左右およびまたは後ろに傾いた場合、当該傾斜角度に応じて各閾値が足を上げたと判定されにくい方向に補正される例を用いたが、他の方向に補正されてもかまわない。例えば、検出するユーザの動作によっては、ケース200を装着したユーザの傾きに応じて、足を上げたと判定されやすい方向に各閾値を補正することも考えられる。また、ケース200を装着したユーザが左右および/または後ろに傾いた場合であっても、傾斜角度に応じて閾値が何れの方向にも補正されない範囲が設けられてもよい。
また、上述した説明では、ケース200を装着したユーザが左に傾いた場合、右足用の上限閾値FRHおよび下限閾値FRLがそれぞれ初期値に維持され、ケース200を装着したユーザが右に傾いた場合、左足用の上限閾値FLHおよび下限閾値FLLがそれぞれ初期値に維持されて、各閾値が補正されない例を用いたが、これらの閾値においても補正されるような例も考えられる。例えば、ケース200を装着したユーザが左に傾いた場合、左足用の上限閾値FLHおよび下限閾値FLLが上記説明のようにそれぞれ下げられる補正が行われて左足が上げられたと判定されにくい状態に補正するとともに、右足用の上限閾値FRHおよび下限閾値FRLがそれぞれ上げられる補正が行われて右足が上げられたと判定されやすい状態に補正することが考えられる。また、ケース200を装着したユーザが右に傾いた場合、右足用の上限閾値FRHおよび下限閾値FRLが上記説明のようにそれぞれ下げられる補正が行われて右足が上げられたと判定されにくい状態に補正するとともに、左足用の上限閾値FLHおよび下限閾値FLLがそれぞれ上げられる補正が行われて左足が上げられたと判定されやすい状態に補正することが考えられる。
このように、ケース200および頭部装着具300を装着したユーザが身体を左右や後ろに傾けた場合、足を上げたと誤認されないように閾値の補正が行われるため、右コントローラ4の慣性センサおよび/または左コントローラ3の慣性センサによる検出結果を解析することによって、ユーザが身体の傾きに応じてプレイヤオブジェクトPOの動作を制御する処理を正確に行うことができる。例えば、図23に示すように、右コントローラ4の慣性センサおよび/または左コントローラ3の慣性センサによる検出結果に基づいて、プレイヤオブジェクトPOを動作させ、当該プレイヤオブジェクトPOが表示された仮想空間を表示画面(例えば、ディスプレイ12)に表示する。例えば、右コントローラ4の慣性センサおよび/または左コントローラ3の慣性センサによる検出結果に基づいて、ユーザが左に傾いていると推定された場合、左に傾きながら左に旋回させる動作をプレイヤオブジェクトPOに行わせ、仮想空間においてプレイヤオブジェクトPOが左に傾きながら左に旋回する様子がディスプレイ12に表示される。なお、プレイヤオブジェクトPOが左に旋回する速さや左に傾く角度については、右コントローラ4の慣性センサによって推定されるケース200の傾きおよび左コントローラ3の慣性センサによって推定される頭部装着具300の傾きの両方(例えば、平均値、加算値、差分値)に応じて変化させてもよいし、何れか一方の傾きに応じて変化させてもよい。
次に、図24〜図26を参照して、本実施例において本体装置2で実行される具体的な処理の一例について説明する。図24は、本実施例において本体装置2のDRAM85に設定されるデータ領域の一例を示す図である。なお、DRAM85には、図24に示すデータの他、他の処理で用いられるデータも記憶されるが、詳細な説明を省略する。また、後述する本体装置2で実行される情報処理では、第1モード(クラスタリングモード)によって算出された撮像対象部材の情報を取得する例を用いる。
DRAM85のプログラム記憶領域には、本体装置2で実行される各種プログラムPaが記憶される。本実施形態においては、各種プログラムPaは、上述した左コントローラ3および/または右コントローラ4との間で無線通信するための通信プログラムや、左コントローラ3および/または右コントローラ4から取得したデータに基づいた情報処理(例えば、ゲーム処理)を行うためのアプリケーションプログラム等が記憶される。なお、各種プログラムPaは、フラッシュメモリ84に予め記憶されていてもよいし、本体装置2に着脱可能な記憶媒体(例えば、スロット23に装着された記憶媒体)から取得されてDRAM85に記憶されてもよいし、インターネット等のネットワークを介して他の装置から取得されてDRAM85に記憶されてもよい。プロセッサ81は、DRAM85に記憶された各種プログラムPaを実行する。
また、DRAM85のデータ記憶領域には、本体装置2において実行される通信処理や情報処理等の処理において用いられる各種のデータが記憶される。本実施形態においては、DRAM85には、操作データDa、姿勢データDb、閾値データDc、操作内容データDd、オブジェクト動作データDe、および画像データDf等が記憶される。
操作データDaは、左コントローラ3および右コントローラ4からそれぞれ適宜取得した操作データである。上述したように、右コントローラ4から送信される操作データには、各入力部(具体的には、各ボタン、アナログスティック、各センサ)からの入力に関する情報(具体的には、操作に関する情報、または、センサによる検出結果)と、赤外撮像部123の撮像画像の撮像結果に基づく情報が含まれている。また、左コントローラ3から送信される操作データには、各入力部からの入力に関する情報が含まれている。本実施形態では、無線通信によって左コントローラ3および右コントローラ4から所定周期で操作データが送信されており、当該受信した操作データを用いて操作データDaが適宜更新される。なお、操作データDaの更新周期は、後述する本体装置2で実行される処理の周期である1フレーム毎に更新されてもよいし、上記無線通信によって操作データが送信される周期毎に更新されてもよい。操作データDaは、ボタン操作データDa1、クラスタデータDa2、クラスタ数データDa3、角速度データDa4、および加速度データDa5を含んでいる。ボタン操作データDa1は、左コントローラ3および右コントローラ4の各ボタンやアナログスティックからの入力に関する情報を示すデータである。クラスタデータDa2は、右コントローラ4の処理部121において算出されたクラスタ毎の情報を示すデータである。クラスタ数データDa3は、右コントローラ4の処理部121において抽出されたクラスタの数を示すデータである。角速度データDa4は、左コントローラ3およびの角速度センサ105および右コントローラ4の角速度センサ115によって検出された左コントローラ3および右コントローラ4にそれぞれ生じている角速度に関する情報を示すデータである。例えば、角速度データDa4は、左コントローラ3および右コントローラ4にそれぞれ生じているxyz軸周りの角速度を示すデータ等を含んでいる。加速度データDa5は、左コントローラ3の加速度センサ104および右コントローラ4の加速度センサ114によって検出された左コントローラ3および右コントローラ4にそれぞれ生じている加速度に関する情報を示すデータである。例えば、加速度データDa5は、左コントローラ3および右コントローラ4にそれぞれ生じているxyz軸方向の加速度を示すデータ等を含んでいる。
姿勢データDbは、実空間における重力加速度の方向を基準とした左コントローラ3および右コントローラ4のそれぞれの姿勢を示すデータである。例えば、姿勢データDcは、左コントローラ3および右コントローラ4にそれぞれ作用している重力加速度の方向を示すデータや、当該重力加速度方向に対するそれぞれのxyz軸方向を示すデータ等を含んでいる。
閾値データDcは、撮像対象部材205の位置を判定するための閾値を示すデータである。例えば、閾値データDcは、上限閾値FLH、下限閾値FLL、上限閾値FRH、下限閾値FRL、上限閾値HLH、下限閾値HLL、上限閾値HRH、および下限閾値HRLをそれぞれ示すデータである。
操作内容データDdは、クラスタデータDa2およびクラスタ数データDa3に基づいて算出されたケース200を用いた操作内容を示すデータと、角速度データDa4および加速度データDa5に基づいて算出されたケース200および/または頭部装身具300を用いた操作内容を示すデータとを示すデータである。
オブジェクト動作データDeは、仮想世界に配置されるプレイヤオブジェクトの動作に関するデータである。画像データDfは、ゲームの際に表示装置(例えば、本体装置2のディスプレイ12)に画像(例えば、プレイヤオブジェクトの画像、他のオブジェクトの画像、背景画像等)を表示するためのデータである。
次に、本実施形態における情報処理(例えば、ゲーム処理)の詳細な一例を説明する。なお、図25は、本体装置2で実行される情報処理の一例を示すフローチャートである。図26は、図25のステップS133における操作内容算出処理の詳細な処理の一例を示すサブルーチンである。本実施形態においては、図25および図26に示す一連の処理は、プロセッサ81が各種プログラムPaに含まれる通信プログラムや所定のアプリケーションプログラム(例えば、ゲームプログラム)を実行することによって行われる。また、図25および図26に示す情報処理が開始されるタイミングは任意である。
なお、図25および図26に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。また、本実施形態では、上記フローチャートの各ステップの処理をプロセッサ81が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、プロセッサ81以外のプロセッサや専用回路が実行するようにしてもよい。また、本体装置2において実行される処理の一部は、本体装置2と通信可能な他の情報処理装置(例えば、本体装置2とネットワークを介して通信可能なサーバ)によって実行されてもよい。すなわち、図25および図26に示す各処理は、本体装置2を含む複数の情報処理装置が協働することによって実行されてもよい。
図25において、プロセッサ81は、ゲーム処理における初期設定を行い(ステップS131)、次のステップに処理を進める。例えば、上記初期設定では、プロセッサ81は、以下に説明する処理を行うためのパラメータを初期化する。また、上記初期設定において、プロセッサ81は、左コントローラ3および右コントローラ4が装着されている拡張操作装置の種別や識別情報を必要に応じて設定する。例えば、本体装置2、左コントローラ3、または右コントローラ4を用いて、ユーザが拡張操作装置の種別を選択する操作を行うことによって、拡張操作装置の種別が初期設定されてもよい。また、他の例として、NFC通信部122を介して、右コントローラ4が拡張操作装置(ケース200)に設けられた通信対象と近距離無線通信が可能である場合、当該通信対象から拡張操作装置の種別や識別情報を取得することによって、拡張操作装置の種別や識別情報が初期設定されてもよい。さらに、上述した基準マーカが赤外撮像部123の撮像画像に撮像されている場合、当該基準マーカの撮像形状や当該基準マーカと他の撮像対象部材との撮像位置関係に基づいて特定された拡張操作装置の種別を取得することによって、拡張操作装置の種別が初期設定されてもよい。また、上記初期設定において、プロセッサ81は、赤外撮像部123の撮像画像のうち、撮像結果に基づく情報を算出するために解析する範囲(解析ウインドウ)を初期設定して、右コントローラ4へ当該設定内容を指示してもよい。
次に、プロセッサ81は、左コントローラ3および右コントローラ4からそれぞれ操作データを取得して操作データDaを更新し(ステップS132)、次のステップに処理を進める。例えば、プロセッサ81は、左コントローラ3および右コントローラ4からそれぞれ取得した操作データに応じて、ボタン操作データDa1、クラスタデータDa2、クラスタ数データDa3、角速度データDa4、および加速度データDa5を更新する。
次に、プロセッサ81は、操作内容算出処理を行って(ステップS133)、ステップS134に処理を進める。以下、図26を参照して、上記ステップS133において行われる操作内容算出処理について説明する。
図26において、プロセッサ81は、左コントローラ3および右コントローラ4の姿勢を算出し(ステップS141)、次のステップに処理を進める。例えば、プロセッサ81は、左コントローラ3に生じている加速度を示すデータを加速度データDa5から取得し、左コントローラ3に作用している重力加速度の方向を算出して、当該方向を示すデータを用いて姿勢データDcを更新する。また、プロセッサ81は、右コントローラ4に生じている加速度を示すデータを加速度データDa5から取得し、右コントローラ4に作用している重力加速度の方向を算出して、当該方向を示すデータを用いて姿勢データDcを更新する。重力加速度を抽出する方法については任意の方法を用いればよく、例えば左コントローラ3や右コントローラ4に平均的に生じている加速度成分を算出して当該加速度成分を重力加速度として抽出してもよい。そして、プロセッサ81は、左コントローラ3に生じている角速度を示すデータを角速度データDa4から取得し、左コントローラ3のxyz軸周りの角速度を算出して、当該角速度を示すデータを用いて重力加速度の方向を基準とした左コントローラ3のxyz軸方向を算出して姿勢データDcを更新する。また、プロセッサ81は、右コントローラ4に生じている角速度を示すデータを角速度データDa4から取得し、右コントローラ4のxyz軸周りの角速度を算出して、当該角速度を示すデータを用いて重力加速度の方向を基準とした右コントローラ4のxyz軸方向を算出して姿勢データDcを更新する。
なお、左コントローラ3および右コントローラ4の姿勢については、重力加速度を基準としたxyz軸方向が算出された以降は、xyz各軸周りの角速度のみに応じてそれぞれ更新してもよい。しかしながら、左コントローラ3および右コントローラ4の姿勢と重力加速度の方向との関係が誤差の累積によってずれていくことを防止するために、所定周期毎に重力加速度の方向に対するxyz軸方向を算出して左コントローラ3および右コントローラ4の姿勢をそれぞれ補正してもよい。
次に、プロセッサ81は、ケース200を装着しているユーザが左に傾いていることを、右コントローラ4の姿勢が示しているか否かを判定する(ステップS142)。そして、プロセッサ81は、ユーザが左に傾いていることを右コントローラ4の姿勢が示している場合、次のステップS143に処理を進める。一方、プロセッサ81は、ユーザが左に傾いていることを右コントローラ4の姿勢が示していない場合、次のステップS144に処理を進める。例えば、プロセッサ81は、姿勢データDcを参照して、右コントローラ4の姿勢を取得する。そして、図10に示すように、右コントローラ4の上面(z軸負方向)が上方を向いた状態で右コントローラ4のy軸負方向がケース200の前方方向となるように右コントローラ4がケース200の開口部に挿入されて固定されている場合、右コントローラ4の図5に示すx軸正方向が実空間の水平より上方を向いていれば、プロセッサ81は、上記ステップS142において肯定判定する。
ステップS143において、プロセッサ81は、右コントローラ4の姿勢に応じて左足用の上限閾値FLHおよび下限閾値FLLを補正し、ステップS146に処理を進める。例えば、プロセッサ81は、姿勢データDcが示す右コントローラ4のx軸正方向と水平方向との角度差(すなわち、ユーザが左に傾いている傾斜角度)と、図21を用いて説明した補正関数とを用いて、左足用の上限閾値FLHおよび下限閾値FLLを補正し、補正後の上限閾値FLHおよび下限閾値FLLを用いて閾値データDcを更新する。なお、プロセッサ81は、右コントローラ4のx軸正方向と水平方向との角度差が小さくなる方向に変化している場合、補正による上限閾値FLHおよび下限閾値FLLの変化量に所定の補正係数(1以下の係数であり、例えば、0.08)を乗算し、乗算した変化量を用いて上限閾値FLHおよび下限閾値FLLを補正する。
ステップS144において、プロセッサ81は、ケース200を装着しているユーザが右に傾いていることを、右コントローラ4の姿勢が示しているか否かを判定する。そして、プロセッサ81は、ユーザが右に傾いていることを右コントローラ4の姿勢が示している場合、次のステップS145に処理を進める。一方、プロセッサ81は、ユーザが右に傾いていることを右コントローラ4の姿勢が示していない場合、次のステップS146に処理を進める。例えば、プロセッサ81は、姿勢データDcを参照して、右コントローラ4の姿勢を取得する。そして、図10に示すように、右コントローラ4の上面(z軸負方向)が上方を向いた状態で右コントローラ4のy軸負方向がケース200の前方方向となるように右コントローラ4がケース200の開口部に挿入されて固定されている場合、右コントローラ4の図5に示すx軸正方向が実空間の水平より下方を向いていれば、プロセッサ81は、上記ステップS144において肯定判定する。
ステップS145において、プロセッサ81は、右コントローラ4の姿勢に応じて右足用の上限閾値FRHおよび下限閾値FRLを補正し、ステップS146に処理を進める。例えば、プロセッサ81は、姿勢データDcが示す右コントローラ4のx軸正方向と水平方向との角度差(すなわち、ユーザが右に傾いている傾斜角度)と、図21を用いて説明した補正関数とを用いて、右足用の上限閾値FRHおよび下限閾値FRLを補正し、補正後の上限閾値FRHおよび下限閾値FRLを用いて閾値データDcを更新する。なお、プロセッサ81は、右コントローラ4のx軸正方向と水平方向との角度差が小さくなる方向に変化している場合、補正による上限閾値FRHおよび下限閾値FRLの変化量に所定の補正係数(1以下の係数であり、例えば、0.08)を乗算し、乗算した変化量を用いて上限閾値FRHおよび下限閾値FRLを補正する。
ステップS146において、プロセッサ81は、ケース200を装着しているユーザが後傾していることを、右コントローラ4の姿勢が示しているか否かを判定する。そして、プロセッサ81は、ユーザが後傾していることを右コントローラ4の姿勢が示している場合、次のステップS147に処理を進める。一方、プロセッサ81は、ユーザが後傾していることを右コントローラ4の姿勢が示していない場合、次のステップS148に処理を進める。例えば、プロセッサ81は、姿勢データDcを参照して、右コントローラ4の姿勢を取得する。そして、図10に示すように、右コントローラ4の上面(z軸負方向)が上方を向いた状態で右コントローラ4のy軸負方向がケース200の前方方向となるように右コントローラ4がケース200の開口部に挿入されて固定されている場合、右コントローラ4の図5に示すy軸正方向が実空間の水平より下方を向いていれば、プロセッサ81は、上記ステップS146において肯定判定する。
ステップS147において、プロセッサ81は、右コントローラ4の姿勢に応じて左足用の上限閾値FLHおよび下限閾値FLLと右足用の上限閾値FRHおよび下限閾値FRLとを補正し、ステップS148に処理を進める。例えば、プロセッサ81は、姿勢データDcが示す右コントローラ4のy軸正方向と水平方向との角度差(すなわち、ユーザの後傾角度)と、図22を用いて説明した補正関数とを用いて、左足用の上限閾値FLHおよび下限閾値FLLと右足用の上限閾値FRHおよび下限閾値FRLとを補正し、補正後の上限閾値FLHおよび下限閾値FLLと上限閾値FRHおよび下限閾値FRLとを用いて閾値データDcを更新する。なお、プロセッサ81は、右コントローラ4のy軸正方向と水平方向との角度差が小さくなる方向に変化している場合、補正による上限閾値FLHおよび下限閾値FLLと上限閾値FRHおよび下限閾値FRLとの変化量に所定の補正係数(1以下の係数であり、例えば、0.08)を乗算し、乗算した変化量を用いて上限閾値FLHおよび下限閾値FLLと上限閾値FRHおよび下限閾値FRLとを補正する。
なお、上記ステップS143またはステップS145における閾値補正と上記ステップS147における閾値補正とがともに行われる場合、双方の補正から最も大きい補正量となるものを選択して閾値補正してもよいし、双方の補正から最も小さい補正量となるものを選択して閾値補正してもよいし、双方の補正においてそれぞれ算出された2つの閾値補正量の平均値や加算値を用いて閾値補正してもよい。なお、上記ステップS141〜ステップS147の処理を行うプロセッサ81が、変更部の一例に相当する。
ステップS148において、プロセッサ81は、赤外撮像部123の撮像画像から抽出されたクラスタ毎の重心座標と各閾値とに基づいて、ケース200を用いた操作内容を算出し、次のステップに処理を進める。例えば、プロセッサ81は、上記ステップS132において更新されたクラスタデータDa2およびクラスタ数データDa3におけるクラスタ毎の重心座標データおよびクラスタの数と閾値データDcにおける各閾値とに基づいて、ケース200を用いた操作内容を算出して、操作内容データDdを更新する。例えば、プロセッサ81は、ユーザの左足に装着されている操作部250に接続されている撮像対象部材205の位置、すなわち左足用の撮像対象部材205に対応するクラスタの位置が上限閾値FLHより降下した場合、ユーザが左足を上げたと判定する。また、プロセッサ81は、ユーザの右足に装着されている操作部250に接続されている撮像対象部材205の位置、すなわち右足用の撮像対象部材205に対応するクラスタの位置が上限閾値FRHより降下した場合、ユーザが右足を上げたと判定する。また、プロセッサ81は、ユーザの左手に装着されている操作部260に接続されている撮像対象部材205の位置、すなわち左手用の撮像対象部材205に対応するクラスタの位置が上限閾値HLHより降下した場合、ユーザが左手を伸ばすような操作をしたと判定する。また、プロセッサ81は、ユーザの右手に装着されている操作部260に接続されている撮像対象部材205の位置、すなわち右手用の撮像対象部材205に対応するクラスタの位置が上限閾値HRHより降下した場合、ユーザが右手を伸ばすような操作をしたと判定する。さらに、プロセッサ81は、左足用の撮像対象部材205および右足用の撮像対象部材205に対応するクラスタの位置が両方とも上限閾値FLHおよび上限閾値FRHより下降した場合、ユーザがしゃがむような操作をしたと判定する。なお、上記ステップS148の処理を行うプロセッサ81が、判定部および処理部の一例に相当する。
次に、プロセッサ81は、左コントローラ3および右コントローラ4の姿勢に基づいて、ケース200および頭部装着具300を用いた操作内容を算出し(ステップS149)、当該サブルーチンによる処理を終了する。例えば、プロセッサ81は、上記ステップS141において更新された姿勢データDbにおける左コントローラ3および右コントローラ4の姿勢に基づいて、ケース200および頭部装着具300を用いた操作内容を算出して、操作内容データDdを更新する。例えば、右コントローラ4の上面(z軸負方向)が上方を向いた状態で右コントローラ4のy軸負方向がケース200の前方方向となるように右コントローラ4がケース200の開口部に固定され、左コントローラ3の下面を下方として左コントローラ3の上面(図4に示すz軸負方向)がユーザの頭部左方向を向くように左コントローラ3が頭部装着具300に固定されている場合、右コントローラ4のx軸正方向が実空間の水平より上方を向き、左コントローラ3のz軸正方向が実空間の水平より上方を向いていれば、プロセッサ81は、ユーザが身体を左に傾ける操作を行っていると判定する。また、右コントローラ4のx軸正方向が実空間の水平より下方を向き、左コントローラ3のz軸正方向が実空間の水平より下方を向いていれば、プロセッサ81は、ユーザが身体を右に傾ける操作を行っていると判定する。なお、上記ステップS149の処理を行うプロセッサ81が、処理部の一例に相当する。
図25に戻り、上記ステップS133における操作内容算出処理の後、プロセッサ81は、ケース200および/または頭部装着具300を用いた操作内容に基づいて、プレイヤオブジェクトPOの各部位(パーツ)の動作を設定し(ステップS134)、次のステップに処理を進める。例えば、プロセッサ81は、上記ステップS133において算出された操作内容に基づいて、ユーザの操作内容と類似した動きでプレイヤオブジェクトPOの各部位の動作を設定し、当該動作を用いてプレイヤオブジェクト動作データDeを更新する。一例として、上記ステップS133において、ケース200および/または頭部装着具300を用いてユーザが左足を上げたと判定された場合、プレイヤオブジェクトPOも仮想空間において左足を上げて歩行する動作(図18参照)に設定され、当該動作を用いてプレイヤオブジェクト動作データDeが更新される。なお、プレイヤオブジェクトPOが足を上げる高さや歩行する速度については、ユーザが上げた左足が小股状態か大股状態かによって変化させたり、左足用の撮像対象部材205の位置FLPの値に応じて変化させたりして設定してもよい。他の例として、上記ステップS133において、ケース200および/または頭部装着具300を用いてユーザが身体を左に傾けたと判定された場合、プレイヤオブジェクトPOも仮想空間において身体を左に傾けて左に旋回する動作(図23参照)に設定され、当該動作を用いてプレイヤオブジェクト動作データDeが更新される。なお、プレイヤオブジェクトPOが左に身体を傾ける角度や旋回する速度については、右コントローラ4の姿勢によって推定されるケース200の傾きおよび左コントローラ3の姿勢によって推定される頭部装着具300の傾きの両方(例えば、平均値、加算値、差分値)に応じて設定されてもよいし、何れか一方の傾きに応じて設定されてもよい。なお、上記ステップS134の処理を行うプロセッサ81が、処理部の一例に相当する。
次に、プロセッサ81は、表示装置にプレイヤオブジェクトPOが配置された仮想空間の画像を表示する処理を行い(ステップS135)、次のステップに処理を進める。例えば、プロセッサ81は、プレイヤオブジェクト動作データDeに基づいてプレイヤオブジェクトPOの姿勢や位置を変化させ、当該変化させた後の姿勢および位置に基づいてプレイヤオブジェクトPOを仮想空間に配置する。そして、プロセッサ81は、所定の位置(例えば、プレイヤオブジェクトPOの背後の視点や第1人称視点)に配置された仮想カメラから、プレイヤオブジェクトPOが配置された仮想空間を見た仮想空間画像を生成し、当該仮想空間画像を表示装置(例えば、本体装置11のディスプレイ12)に表示する処理を行う。なお、上記ステップS135の処理を行うプロセッサ81が、ゲーム画像生成部の一例に相当する。
次に、プロセッサ81は、ゲームを終了するか否かを判定する(ステップS136)。上記ステップS136においてゲームを終了する条件としては、例えば、上記ゲームを終了する条件が満たされたことや、ユーザがゲームを終了する操作を行ったこと等がある。プロセッサ81は、ゲームを終了しない場合に上記ステップS132に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。以降、ステップS132〜ステップS136の一連の処理は、ステップS136でゲームを終了すると判定されるまで繰り返し実行される。
このように、本実施例においては、拡張操作装置に含まれるケース200に対する操作内容は、赤外撮像部123によって撮像された撮像画像に基づいて検出される。そして、ケース200および頭部装着具300を装着したユーザが身体を左右や後ろに傾けた場合、足を上げたと誤認されないように閾値の補正が行われるため、右コントローラ4の慣性センサおよび/または左コントローラ3の慣性センサによる検出結果を解析することによって、ユーザが身体の傾きに応じてプレイヤオブジェクトPOの動作を制御する処理を正確に行うことができる。
なお、上述した実施例では、右コントローラ4の姿勢に基づいて、被検出部画像の位置を判定するための閾値を変更しているが、左コントローラ3の姿勢に基づいて、被検出部画像の位置を判定するための閾値を変更してもよい。例えば、左コントローラ3が固定された頭部装着具300を装着したユーザの頭部が左に傾いた場合に左足用の閾値を変更し、ユーザの頭部が右に傾いた場合に右足用の閾値を変更し、ユーザの頭部が後ろに傾いた場合に左足用および右足用の閾値を変更することにより、右コントローラ4の姿勢を用いた制御と同様の効果を期待してもよい。
また、左コントローラ3の姿勢と右コントローラ4の姿勢との両方に基づいて、被検出部画像の位置を判定するための閾値を変更してもよい。この場合、左コントローラ3の姿勢と右コントローラ4の姿勢との平均値、左コントローラ3の姿勢と右コントローラ4の姿勢との加算値、左コントローラ3の姿勢と右コントローラ4の姿勢との差分値、左コントローラ3の姿勢と右コントローラ4の姿勢とのうち傾斜角度が大きい方の値、左コントローラ3の姿勢と右コントローラ4の姿勢とのうち傾斜角度が小さい方の値等に基づいて、被検出部画像の位置を判定するための閾値を変更することが考えられる。
また、上述した実施例では、ケース200および頭部装着具300によって構成される拡張操作装置を用いているが、拡張操作装置は、他の操作装置がさらに加えられた構成でもよいし、何れか一方(例えば、ケース200)のみによって構成されてもよい。例えば、拡張操作装置がケース200のみによって構成される場合、左コントローラ3が不要となるため、右コントローラ4の姿勢のみのよって、ユーザの身体の傾きによる操作内容が判定されてもよい。
また、上述した実施例では、紐部材204の一端に操作部250または操作部260が設けられているが、紐部材204の一端に操作部250または操作部260が設けられていない態様でもかまわない。例えば、紐部材204の一端をユーザが手で握って操作したり、紐部材204の一端を足にむすびつけて操作したりすることによって、ユーザがケース200を背負って操作してもよい。この場合、紐部材204自体がユーザ操作に応じて撮像対象部材205と連動する操作部として機能することになる。
また、上述した実施例において、右コントローラ4から本体装置2へ送信する撮像画像に基づいたデータは、赤外撮像部123が撮像した撮像画像そのものを示すデータでもよい。この場合、右コントローラ4から本体装置2へ送信されるデータ量が増加することが考えられるが、本体装置2側において、上記撮像画像に関する様々な解析処理を行うことが可能となる。
また、上述した拡張操作装置では、ケース200内に設けられた撮像対象部材205がユーザ操作に応じて上下方向に移動し、当該撮像対象部材205の位置に基づいてケース200を用いた操作内容を算出しているが、ケース200に対するユーザ操作に応じて操作対象部材が他の方向に動いてもよい。第1の例として、ユーザ操作に応じて、撮像対象部材が左右方向または前後方向に移動し、当該撮像対象の位置に基づいて拡張操作装置に対する操作内容を算出してもよい。第2の例として、赤外撮像部123の撮像方向に対して平行に設けられた回転軸を中心に撮像対象部材が回転する場合、所定の方向を指し示すことが可能なマーカを当該撮像対象部材の赤外撮像部123側の面に貼り付ける。そして、赤外撮像部123の撮像画像において上記マーカが指し示す方向を検出することによって、上記撮像対象部材が回転している回転角度を算出することが可能となり、当該回転角度に基づいて拡張操作装置に対する操作内容を算出することができる。この場合、慣性センサから出力されるデータに基づいて、上記回転角度を判定するための閾値を変更することが考えられる。第3の例として、赤外撮像部123の撮像方向に対して垂直に設けられた回転軸を中心に撮像対象部材が回転する場合、ユーザ操作に応じて撮像される被検出部の形状を変化させることが考えられる。例えば、赤外撮像部123と対向する位置における長さや模様等の形状が回転角度によって異なるマーカを当該撮像対象部材の側面に貼り付ける。そして、赤外撮像部123の撮像画像において上記マーカの長さや模様等の形状を検出することによって、上記撮像対象部材が回転している回転角度を算出することが可能となり、当該回転角度に基づいて拡張操作装置に対する操作内容を算出することができる。この場合、慣性センサから出力されるデータに基づいて、上記回転角度を判定するための閾値を変更することが考えられる。
なお、撮像される被検出部の形状を変化させる場合、第1の例として「○」「×」「△」等、全く別個の形状へと被検出部(例えば、マーカ)が差し替わって変化することが考えられる。また、第2の例として、1つの被検出部(例えば、マーカ)の一部が赤外撮像部123によって撮像可能な位置に配置され、当該被検出部の一部である第1部分が撮像されている状態から、当該第1部分とは異なる形状となる当該被検出部の他部である第2部分が撮像されている状態へと変化することが考えられる。なお、上記撮像される被検出部の形状を変化させる例は、被検出部が操作部への操作と連動して異なる撮像形状に変化する一例に相当する。
また、上述した実施例において、左コントローラ3の動きや姿勢および右コントローラ4の動きや姿勢を検出する方法については、単なる一例であって、他の方法や他のデータを用いて左コントローラ3の動きや姿勢および右コントローラ4の動きや姿勢を検出してもよい。例えば、左コントローラ3の姿勢および右コントローラ4の姿勢を、当該左コントローラ3および右コントローラ4にそれぞれ生じる角速度のみで算出、または当該左コントローラ3および右コントローラ4にそれぞれ生じる角速度と加速度とを組み合わせて算出しているが、当該左コントローラ3および右コントローラ4にそれぞれ生じる加速度のみで姿勢を算出してもかまわない。左コントローラ3および右コントローラ4にそれぞれ生じる加速度のみ検出する場合であっても、左コントローラ3および右コントローラ4にそれぞれ生じる重力加速度が生じている方向を算出可能であり、当該重力加速度を基準としたxyz軸方向を逐次算出すれば上述した実施例と同様の処理が可能であることは言うまでもない。
また、本体装置2と左コントローラ3および右コントローラ4とは、どのような装置であってもよく、携帯型のゲーム装置、任意の携帯型電子機器(PDA(Personal Digital Assistant)、携帯電話、パーソナルコンピュータ、カメラ、タブレット等)等であってもよい。
また、上述した説明では情報処理(ゲーム処理)を本体装置2でそれぞれ行う例を用いたが、上記処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、本体装置2がさらに他の装置(例えば、別のサーバ、他の画像表示装置、他のゲーム装置、他の携帯端末)と通信可能に構成されている場合、上記処理ステップは、さらに当該他の装置が協働することによって実行してもよい。このように、上記処理ステップの少なくとも一部を他の装置で行うことによって、上述した処理と同様の処理が可能となる。また、上述した情報処理(ゲーム処理)は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施例においては、本体装置2のプロセッサ81が所定のプログラムを実行することによって情報処理を行うことが可能であるが、本体装置2が備える専用回路によって上記処理の一部または全部が行われてもよい。
ここで、上述した変形例によれば、いわゆるクラウドコンピューティングのシステム形態や分散型の広域ネットワークおよびローカルネットワークのシステム形態でも本発明を実現することが可能となる。例えば、分散型のローカルネットワークのシステム形態では、据置型の情報処理装置(据置型のゲーム装置)と携帯型の情報処理装置(携帯型のゲーム装置)との間で上記処理を協働により実行することも可能となる。なお、これらのシステム形態では、上述した処理をどの装置で行うかについては特に限定されず、どのような処理分担をしたとしても本発明を実現できることは言うまでもない。
また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる条件等は、単なる一例に過ぎず他の順序、値、条件であっても、本実施例を実現できることは言うまでもない。
また、上記プログラムは、外部メモリ等の外部記憶媒体を通じて本体装置2や右コントローラ4に供給されるだけでなく、有線または無線の通信回線を通じて当該装置に供給されてもよい。また、上記プログラムは、当該装置内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施例の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。