以下、本実施形態の一例に係る情報処理システムについて説明する。本実施形態における情報処理システムの一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とケース200とによって構成される。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能であり、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用でき、また、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(図2参照)。また、情報処理システムは、本体装置2に画像を表示する態様での利用と、テレビ等の他の表示装置(例えば、据置型モニタ)に画像を表示させる態様での利用が可能である。前者の態様において、情報処理システムは、携帯型装置(例えば、携帯ゲーム機)として利用することができる。また、後者の態様において、情報処理システムは、据置型装置(例えば、据置型ゲーム機)として利用することができる。また、情報処理システムにおけるケース200は、その内部にコントローラ(例えば、右コントローラ4)を装着することによって、拡張操作装置として利用することができる。
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態を示す図である。図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、情報処理システムにおける各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。図1および図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。左コントローラ3は、本体装置2の左側面(図1に示すx軸正方向側の側面)に装着することができ、本体装置2の左側面に沿って図1に示すy軸方向にスライドさせることによって本体装置2に着脱可能となっている。また、右コントローラ4は、本体装置2の右側面(図1に示すx軸負方向側の側面)に装着することができ、本体装置2の右側面に沿って図1に示すy軸方向にスライドさせることによって本体装置2に着脱可能となっている。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。なお、本実施形態において、1人のユーザが操作する「操作装置」は、1つのコントローラ(例えば、左コントローラ3および右コントローラ4の一方)でも複数のコントローラ(例えば、左コントローラ3および右コントローラ4の両方、またはさらに他のコントローラを含んでもよい)でもよく、当該「操作装置」は、1以上のコントローラによって構成可能となる。また、本実施形態において、1つのコントローラ(例えば、右コントローラ4)を拡張操作装置(例えば、ケース200)に装着することによって、ユーザが当該拡張操作装置を操作することによって本体装置2において実行されている情報処理(例えばゲーム処理)を制御することができる。以下、本体装置2と左コントローラ3および右コントローラ4との具体的な構成の一例について説明する。
図3は、本体装置2の一例を示す六面図である。図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。本実施形態においては、ハウジング11は、横長の形状であるものとする。つまり、本実施形態においては、ハウジング11の主面の長手方向(すなわち、図1に示すx軸方向)を横方向(左右方向とも言う)と呼び、当該主面の短手方向(すなわち、図1に示すy軸方向)を縦方向(上下方向とも言う)と呼び、主面に垂直な方向(すなわち、図1に示すz軸方向)を奥行方向(前後方向とも言う)と呼ぶこととする。本体装置2は、本体装置2が横長となる向きで利用されることが可能である。また、本体装置2が縦長となる向きで利用されることも可能である。その場合には、ハウジング11を縦長の形状であるものと見なしてもよい。
なお、ハウジング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からそれぞれ出力される。
図3に示すように、本体装置2は、ハウジング11の左側面において左レール部材15を備える。左レール部材15は、左コントローラ3を本体装置2に着脱可能に装着するための部材である。左レール部材15は、ハウジング11の左側面において、上下方向に沿って延びるように設けられる。左レール部材15は、左コントローラ3のスライダ(すなわち、図4に示すスライダ40)と係合可能な形状を有しており、左レール部材15とスライダ40とによってスライド機構が形成される。このスライド機構によって、左コントローラ3を本体装置2に対してスライド可能かつ着脱可能に装着することができる。
また、本体装置2は、左側端子17を備える。左側端子17は、本体装置2が左コントローラ3と有線通信を行うための端子である。左側端子17は、左コントローラ3が本体装置2に装着された場合に、左コントローラ3の端子(図4に示す端子42)と接触する位置に設けられる。左側端子17の具体的な位置は任意である。本実施形態においては、図3に示すように、左側端子17は、左レール部材15の底面に設けられる。また、本実施形態においては、左側端子17は、左レール部材15の底面における下側の端部付近に設けられ、左レール部材15の一部によって外部に露出しない位置に配置されている。
図3に示すように、ハウジング11の右側面には、左側面に設けられる構成と同様の構成が設けられる。すなわち、本体装置2は、ハウジング11の右側面において右レール部材19を備える。右レール部材19は、ハウジング11の右側面において、上下方向に沿って延びるように設けられる。右レール部材19は、右コントローラ4のスライダ(すなわち、図5に示すスライダ62)と係合可能な形状を有しており、右レール部材19とスライダ62とによってスライド機構が形成される。このスライド機構によって、右コントローラ4を本体装置2に対してスライド可能かつ着脱可能に装着することができる。
また、本体装置2は右側端子21を備える。右側端子21は、本体装置2が右コントローラ4と有線通信を行うための端子である。右側端子21は、右コントローラ4が本体装置2に装着された場合に、右コントローラ4の端子(図5に示す端子64)と接触する位置に設けられる。右側端子21の具体的な位置は任意である。本実施形態においては、図3に示すように、右側端子21は、右レール部材19の底面に設けられる。また、本実施形態においては、右側端子21は、右レール部材19の底面における下側の端部付近に設けられ、右レール部材19の一部によって外部に露出しない位置に配置されている。
図3に示すように、本体装置2は、第1スロット23を備える。第1スロット23は、ハウジング11の上側面に設けられる。第1スロット23は、第1の種類の記憶媒体を装着可能な形状を有する。第1の種類の記憶媒体は、例えば、情報処理システムおよびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。第1の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。図3に示すように、電源ボタン28は、ハウジング11の上側面に設けられる。電源ボタン28は、本体装置2の電源のオン/オフを切り替えるためのボタンである。
本体装置2は、音声入出力端子(具体的には、イヤホンジャック)25を備える。すなわち、本体装置2は、音声入出力端子25にマイクやイヤホンを装着することができる。図3に示すように、音声入出力端子25は、ハウジング11の上側面に設けられる。
本体装置2は、音量ボタン26aおよび26bを備える。図3に示すように、音量ボタン26aおよび26bは、ハウジング11の上側面に設けられる。音量ボタン26aおよび26bは、本体装置2によって出力される音量を調整する指示を行うためのボタンである。すなわち、音量ボタン26aは、音量を下げる指示を行うためのボタンであり、音量ボタン26bは、音量を上げる指示を行うためのボタンである。
また、ハウジング11には、排気孔11cが形成される。図3に示すように、排気孔11cは、ハウジング11の上側面に形成される。排気孔11cは、ハウジング11の内部で発生した熱をハウジング11の外部へ排気する(換言すれば、放出する)ために形成される。すなわち、排気孔11cは、排熱孔であるとも言える。
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。図3に示すように、下側端子27は、ハウジング11の下側面に設けられる。本体装置2がクレードルに装着された場合、下側端子27は、クレードルの端子に接続される。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。クレードルは、左コントローラ3および右コントローラ4を本体装置2から取り外した状態で本体装置2のみを載置することが可能である。また、さらに他の例として、クレードルは、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置を載置することも可能である。そして、クレードルは、本体装置2とは別体の外部表示装置の一例である据置型モニタ(例えば、据置型テレビ)と通信可能である(有線通信であってもよいし、無線通信であってもよい)。上記一体型装置または本体装置2単体をクレードルに載置した場合、情報処理システムは、本体装置2が取得または生成した画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
また、本体装置2は、第2スロット24を備える。本実施形態においては、第2スロット24は、ハウジング11の下側面に設けられる。ただし、他の実施形態においては、第2スロット24は、第1スロット23とは同じ面に設けられてもよい。第2スロット24は、第1の種類とは異なる第2の種類の記憶媒体を装着可能な形状を有する。第2の種類の記憶媒体は、例えば、汎用の記憶媒体であってもよい。例えば、第2の種類の記憶媒体は、SDカードであってもよい。第2の種類の記憶媒体は、例えば、第1の種類の記憶媒体と同様、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。
また、ハウジング11には、吸気孔11dが形成される。図3に示すように、吸気孔11dは、ハウジング11の下側面に形成される。吸気孔11dは、ハウジング11の外部の空気をハウジング11の内部へ吸気する(換言すれば、導入する)ために形成される。本実施形態においては、排気孔11cが形成される面の反対側の面に吸気孔11dが形成されるので、ハウジング11内部の放熱を効率良く行うことができる。
以上に説明した、ハウジング11に設けられる各構成要素(具体的には、ボタン、スロット、端子等)の形状、数、および設置位置は、任意である。例えば、他の実施形態においては、電源ボタン28および各スロット23および24のうちのいくつかは、ハウジング11の他の側面あるいは背面に設けられてもよい。また、他の実施形態においては、本体装置2は、上記各構成要素のうちいくつかを備えていない構成であってもよい。
図4は、左コントローラ3の一例を示す六面図である。図4に示すように、左コントローラ3は、ハウジング31を備える。本実施形態において、ハウジング31は、略板状である。また、ハウジング31の主面(換言すれば、表側の面、すなわち、図1に示すz軸負方向側の面)は、大略的には矩形形状である。また、本実施形態においては、ハウジング31は、縦長の形状、すなわち、上下方向(すなわち、図1に示すy軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。なお、ハウジング31の形状は任意であり、他の実施形態においては、ハウジング31は略板状でなくてもよい。また、ハウジング31は、矩形形状でなくてもよく、例えば半円状の形状等であってもよい。また、ハウジング31は、縦長の形状でなくてもよい。
ハウジング31の上下方向の長さは、本体装置2のハウジング11の上下方向の長さとほぼ同じである。また、ハウジング31の厚さ(すなわち、前後方向の長さ、換言すれば、図1に示すz軸方向の長さ)は、本体装置2のハウジング11の厚さとほぼ同じである。したがって、左コントローラ3が本体装置2に装着された場合(図1参照)には、ユーザは、本体装置2と左コントローラ3とを一体の装置のような感覚で把持することができる。
また、図4に示すように、ハウジング31の主面は、左側の角部分が、右側の角部分よりも丸みを帯びた形状になっている。すなわち、ハウジング31の上側面と左側面との接続部分、および、ハウジング31の下側面と左側面との接続部分は、その上側面と右側面との接続部分、および、その下側面と右側面との接続部分に比べて、丸くなっている(換言すれば、面取りにおけるRが大きい)。したがって、左コントローラ3が本体装置2に装着された場合(図1参照)には、一体型装置の左側が丸みを帯びた形状となるので、ユーザにとって持ちやすい形状となる。
左コントローラ3は、アナログスティック32を備える。図4に示すように、アナログスティック32が、ハウジング31の主面に設けられる。アナログスティック32は、方向を入力することが可能な方向入力部の一例である。アナログスティック32は、ハウジング31の主面に平行な全方向(すなわち、上下左右および斜め方向を含む、360°の方向)に傾倒可能なスティック部材を有する。ユーザは、スティック部材を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、方向入力部は、十字キーまたはスライドスティック等であってもよい。また、本実施形態においては、スティック部材を(ハウジング31に垂直な方向に)押下する入力が可能である。すなわち、アナログスティック32は、スティック部材の傾倒方向および傾倒量に応じた方向および大きさの入力と、スティック部材に対する押下入力とを行うことが可能な入力部である。
左コントローラ3は、4つの操作ボタン33〜36(具体的には、右方向ボタン33、下方向ボタン34、上方向ボタン35、および、左方向ボタン36)を備える。図4に示すように、これら4つの操作ボタン33〜36は、ハウジング31の主面においてアナログスティック32の下側に設けられる。なお、本実施形態においては、左コントローラ3の主面に設けられる操作ボタンを4つとするが、操作ボタンの数は任意である。これらの操作ボタン33〜36は、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。なお、本実施形態においては、各操作ボタン33〜36は方向入力を行うために用いられてもよいことから、各操作ボタン33〜36を、右方向ボタン33、下方向ボタン34、上方向ボタン35、および、左方向ボタン36と呼んでいる。ただし、各操作ボタン33〜36は、方向入力以外の指示を行うために用いられてもよい。
また、左コントローラ3は録画ボタン37を備える。図4に示すように、録画ボタン37は、ハウジング31の主面に設けられ、より具体的には、主面における右下領域に設けられる。録画ボタン37は、本体装置2のディスプレイ12に表示される画像を保存する指示を行うためのボタンである。例えば、ディスプレイ12にゲーム画像が表示されている場合において、ユーザは、録画ボタン37を押下することによって、押下された時点で表示されているゲーム画像を、例えば本体装置2の記憶部に保存することができる。
また、左コントローラ3は−(マイナス)ボタン47を備える。図4に示すように、−ボタン47は、ハウジング31の主面に設けられ、より具体的には、主面における右上領域に設けられる。−ボタン47は、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。−ボタン47は、例えば、ゲームアプリケーションにおいてセレクトボタン(例えば、選択項目の切り替えに用いられるボタン)として用いられる。
左コントローラ3の主面に設けられる各操作部(具体的には、アナログスティック32および上記各ボタン33〜37、47)は、左コントローラ3が本体装置2に装着される場合、一体型装置を把持するユーザの例えば左手の親指によって操作される。また、左コントローラ3が本体装置2から外された状態において両手で横向きに把持されて使用される場合、上記各操作部は、左コントローラ3を把持するユーザの例えば左右の手の親指で操作される。具体的には、この場合、アナログスティック32はユーザの左手の親指で操作され、各操作ボタン33〜36はユーザの右手の親指で操作される。
左コントローラ3は、第1Lボタン38を備える。また、左コントローラ3は、ZLボタン39を備える。これらの操作ボタン38および39は、上記操作ボタン33〜36と同様、本体装置2で実行される各種プログラムに応じた指示を行うために用いられる。図4に示すように、第1Lボタン38は、ハウジング31の側面のうちの左上部分に設けられる。また、ZLボタン39は、ハウジング31の側面から裏面にかけての左上部分(厳密には、ハウジング31を表側から見たときの左上部分)に設けられる。つまり、ZLボタン39は、第1Lボタン38の後側(図1に示すz軸正方向側)に設けられる。本実施形態においては、ハウジング31の左上部分が丸みを帯びた形状であるので、第1Lボタン38およびZLボタン39は、ハウジング31の当該左上部分の丸みに応じた丸みを帯びた形状を有する。左コントローラ3が本体装置2に装着される場合、第1Lボタン38およびZLボタン39は、一体型装置における左上部分に配置されることになる。
左コントローラ3は、上述のスライダ40を備えている。図4に示すように、スライダ40は、ハウジング31の右側面において、上下方向に延びるように設けられる。スライダ40は、本体装置2の左レール部材15(より具体的には、左レール部材15の溝)と係合可能な形状を有している。したがって、左レール部材15に係合したスライダ40は、スライド方向(換言すれば左レール部材15が延びる方向)に垂直な向きに関しては固定されて外れないようになっている。
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。端子42は、左コントローラ3が本体装置2に装着された場合に、本体装置2の左側端子17(図3)と接触する位置に設けられる。端子42の具体的な位置は任意である。本実施形態においては、図4に示すように、端子42は、スライダ40の装着面によって外部に露出しない位置に設けられる。また、本実施形態においては、端子42は、スライダ40の装着面における下側の端部付近に設けられる。
また、左コントローラ3は、第2Lボタン43および第2Rボタン44を備える。これらのボタン43および44は、他の操作ボタン33〜36と同様、本体装置2で実行される各種プログラムに応じた指示を行うために用いられる。図4に示すように、第2Lボタン43および第2Rボタン44は、スライダ40の装着面に設けられる。第2Lボタン43は、スライダ40の装着面において、上下方向(図1に示すy軸方向)に関する中央よりも上側に設けられる。第2Rボタン44は、スライダ40の装着面において、上下方向に関する中央よりも下側に設けられる。第2Lボタン43および第2Rボタン44は、左コントローラ3が本体装置2に装着されている状態では押下することができない位置に配置されている。つまり、第2Lボタン43および第2Rボタン44は、左コントローラ3を本体装置2から外した場合において用いられるボタンである。第2Lボタン43および第2Rボタン44は、例えば、本体装置2から外された左コントローラ3を把持するユーザの左右の手の人差し指または中指で操作される。
左コントローラ3は、ペアリングボタン46を備える。本実施形態において、ペアリングボタン46は、左コントローラ3と本体装置2との無線通信に関する設定(ペアリングとも言う)処理を指示するため、および、左コントローラ3のリセット処理を指示するために用いられる。なお、他の実施形態においては、ペアリングボタン46は、上記設定処理およびリセット処理のいずれか一方の機能のみを有するものであってもよい。例えば、ペアリングボタン46に対して短押し操作が行われた場合(具体的には、ペアリングボタン46が所定時間よりも短い時間だけ押下された場合)、左コントローラ3は、上記設定処理を実行する。また、ペアリングボタン46に対して長押し操作が行われた場合(具体的には、ペアリングボタン46が上記所定時間以上押し続けられた場合)、左コントローラ3は、リセット処理を実行する。本実施形態においては、ペアリングボタン46は、図4に示すように、スライダ40の装着面に設けられる。このように、ペアリングボタン46は、左コントローラ3が本体装置2に装着されている状態では見えない位置に配置されている。つまり、ペアリングボタン46は、左コントローラ3を本体装置2から外した場合において用いられる。
なお、本実施形態において、スライダ40の装着面に設けられるボタン(具体的には、第2Lボタン43、第2Rボタン44、およびペアリングボタン46)は、当該装着面に対して突出しないように設けられる。すなわち、上記ボタンの上面(換言すれば押下面)は、スライダ40の装着面と同じ面に配置されるか、あるいは、装着面よりも凹んだ位置に配置される。これによれば、スライダ40が本体装置2の左レール部材15に装着された状態において、スライダ40を左レール部材15に対してスムーズにスライドさせることができる。
図5は、右コントローラ4の一例を示す六面図である。図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態において、ハウジング51は、略板状である。また、ハウジング51の主面(換言すれば、表側の面、すなわち、図1に示すz軸負方向側の面)は、大略的には矩形形状である。また、本実施形態においては、ハウジング51は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
右コントローラ4のハウジング51は、左コントローラ3のハウジング31と同様、その上下方向の長さは、本体装置2のハウジング11の上下方向の長さとほぼ同じであり、その厚さは、本体装置2のハウジング11の厚さとほぼ同じである。したがって、右コントローラ4が本体装置2に装着された場合(図1参照)には、ユーザは、本体装置2と右コントローラ4とを一体の装置のような感覚で把持することができる。
また、図5に示すように、ハウジング51の主面は、右側の角部分が、左側の角部分よりも丸みを帯びた形状になっている。すなわち、ハウジング51の上側面と右側面との接続部分、および、ハウジング51の下側面と右側面との接続部分は、その上側面と左側面との接続部分、および、その下側面と左側面との接続部分に比べて、丸くなっている(換言すれば、面取りにおけるRが大きい)。したがって、右コントローラ4が本体装置2に装着された場合(図1参照)には、一体型装置の右側が丸みを帯びた形状となるので、ユーザにとって持ちやすい形状となる。
右コントローラ4は、左コントローラ3と同様、方向入力部としてアナログスティック52を備える。本実施形態においては、アナログスティック52は、左コントローラ3のアナログスティック32と同じ構成である。また、右コントローラ4は、左コントローラ3と同様、4つの操作ボタン53〜56(具体的には、Aボタン53、Bボタン54、Xボタン55、および、Yボタン56)を備える。本実施形態においては、これら4つの操作ボタン53〜56は、左コントローラ3の4つの操作ボタン33〜36と同じ機構である。図5に示すように、これらアナログスティック52および各操作ボタン53〜56は、ハウジング51の主面に設けられる。なお、本実施形態においては、右コントローラ4の主面に設けられる操作ボタンを4つとするが、操作ボタンの数は任意である。
ここで、本実施形態においては、右コントローラ4における2種類の操作部(アナログスティックおよび操作ボタン)の位置関係は、左コントローラ3におけるこれら2種類の操作部の位置関係とは反対になっている。すなわち、右コントローラ4においては、アナログスティック52は各操作ボタン53〜56の上方に配置されるのに対して、左コントローラ3においては、アナログスティック32は各操作ボタン33〜36の下方に配置される。このような配置によって、左コントローラ3および右コントローラ4を本体装置2から外して使用する場合に似たような操作感覚で使用することができる。
また、右コントローラ4は、+(プラス)ボタン57を備える。図5に示すように、+ボタン57は、ハウジング51の主面に設けられ、より具体的には、主面の左上領域に設けられる。+ボタン57は、他の操作ボタン53〜56と同様、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。+ボタン57は、例えば、ゲームアプリケーションにおいてスタートボタン(例えば、ゲーム開始の指示に用いられるボタン)として用いられる。
右コントローラ4は、ホームボタン58を備える。図5に示すように、ホームボタン58は、ハウジング51の主面に設けられ、より具体的には、主面の左下領域に設けられる。ホームボタン58は、本体装置2のディスプレイ12に所定のメニュー画面を表示させるためのボタンである。メニュー画面は、例えば、本体装置2において実行可能な1以上のアプリケーションのうちからユーザが指定したアプリケーションを起動することが可能な画面である。メニュー画面は、例えば、本体装置2の起動時に表示されてもよい。本実施形態においては、本体装置2においてアプリケーションが実行されている状態(すなわち、当該アプリケーションの画像がディスプレイ12に表示されている状態)において、ホームボタン58が押下されると、所定の操作画面がディスプレイ12に表示されてもよい(このとき、操作画面に代えてメニュー画面が表示されてもよい)。なお、操作画面は、例えば、アプリケーションを終了してメニュー画面をディスプレイ12に表示させる指示、および、アプリケーションを再開する指示等を行うことが可能な画面である。
右コントローラ4の主面に設けられる各操作部(具体的には、アナログスティック52および上記各ボタン53〜58)は、右コントローラ4が本体装置2に装着される場合、一体型装置を把持するユーザの例えば右手の親指によって操作される。また、右コントローラ4が本体装置2から外された状態において両手で横向きに把持されて使用される場合、上記各操作部は、右コントローラ4を把持するユーザの例えば左右の手の親指で操作される。具体的には、この場合、アナログスティック52はユーザの左手の親指で操作され、各操作ボタン53〜56はユーザの右手の親指で操作される。
右コントローラ4は、第1Rボタン60を備える。また、右コントローラ4は、ZRボタン61を備える。図5に示すように、第1Rボタン60は、ハウジング51の側面のうちの右上部分に設けられる。また、ZRボタン61は、ハウジング51の側面から裏面にかけての右上部分(厳密には、ハウジング51を表側から見たときの右上部分)に設けられる。つまり、ZRボタン61は、第1Rボタン60の後側(図1に示すz軸正方向側)に設けられる。本実施形態においては、ハウジング51の右上部分が丸みを帯びた形状であるので、第1Rボタン60およびZRボタン61は、ハウジング51の当該右上部分の丸みに応じた丸みを帯びた形状を有する。右コントローラ4が本体装置2に装着される場合、第1Rボタン60およびZRボタン61は、一体型装置における右上部分に配置されることになる。
右コントローラ4は、左コントローラ3と同様のスライダ機構を備えている。すなわち、右コントローラ4は、上述のスライダ62を備えている。図5に示すように、スライダ62は、ハウジング51の左側面において、上下方向に延びるように設けられる。スライダ62は、本体装置2の右レール部材19(より具体的には、右レール部材19の溝)と係合可能な形状を有している。したがって、右レール部材19に係合したスライダ62は、スライド方向(換言すれば右レール部材19が延びる方向)に垂直な向きに関しては固定されて外れないようになっている。
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。端子64は、右コントローラ4が本体装置2に装着された場合に、本体装置2の右側端子21(図3)と接触する位置に設けられる。端子64の具体的な位置は任意である。本実施形態においては、図5に示すように、端子64は、スライダ62の装着面によって外部に露出しない位置に設けられる。本実施形態においては、端子64は、スライダ62の装着面における下側の端部付近に設けられる。
また、右コントローラ4は、左コントローラ3と同様、第2Lボタン65および第2Rボタン66を備える。これらのボタン65および66は、他の操作ボタン53〜56と同様、本体装置2で実行される各種プログラムに応じた指示を行うために用いられる。図5に示すように、第2Lボタン65および第2Rボタン66は、スライダ62の装着面に設けられる。第2Lボタン65は、スライダ62の装着面において、上下方向(図1に示すy軸方向)に関する中央よりも下側に設けられる。第2Rボタン66は、スライダ62の装着面において、上下方向に関する中央よりも上側に設けられる。第2Lボタン65および第2Rボタン66は、左コントローラ3の第2Lボタン43および第2Rボタン44と同様、右コントローラ4が本体装置2に装着されている状態では押下することができない位置に配置されており、右コントローラ4を本体装置2から外した場合において用いられるボタンである。第2Lボタン65および第2Rボタン66は、例えば、本体装置2から外された右コントローラ4を把持するユーザの左右の手の人差し指または中指で操作される。
右コントローラ4は、ペアリングボタン69を備える。ペアリングボタン69は、左コントローラ3のペアリングボタン46と同様、右コントローラ4と本体装置2との無線通信に関する設定(ペアリングとも言う)処理を指示するため、および、右コントローラ4のリセット処理を指示するために用いられる。上記設定処理およびリセット処理については、左コントローラ3におけるこれらの処理と同様であるので、詳細な説明を省略する。また、本実施形態においては、ペアリングボタン69は、図5に示すように、スライダ62の装着面に設けられる。つまり、ペアリングボタン69は、左コントローラ3のペアリングボタン46と同様の理由で、右コントローラ4が本体装置2に装着されている状態では見えない位置に配置されている。
また、右コントローラ4においても左コントローラ3と同様、スライダ62の装着面に設けられるボタン(具体的には、第2Lボタン65、第2Rボタン66、およびペアリングボタン69)は、当該装着面に対して突出しないように設けられる。これによって、スライダ62が本体装置2の右レール部材19に装着された状態において、スライダ62を右レール部材19に対してスムーズにスライドさせることができる。
また、ハウジング51の下側面には、窓部68が設けられる。詳細は後述するが、右コントローラ4は、ハウジング51の内部に配置される赤外撮像部123および赤外発光部124を備えている。赤外撮像部123は、右コントローラ4の下方向(図5に示すy軸負方向)を撮像方向として、窓部68を介して右コントローラ4の周囲を撮像する。赤外発光部124は、右コントローラ4の下方向(図5に示すy軸負方向)を中心とする所定範囲を照射範囲として、赤外撮像部123が撮像する撮像対象部材に窓部68を介して赤外光を照射する。なお、図5の例では、赤外発光部124の赤外光照射範囲を大きくするために、照射方向が異なる複数の赤外発光部124が設けられている。窓部68は、赤外撮像部123のカメラのレンズや赤外発光部124の発光体等を保護するためのものであり、当該カメラが検知する波長の光や当該発光体が照射する光を透過する材質(例えば、透明な材質)で構成される。なお、窓部68は、ハウジング51に形成された孔であってもよい。なお、本実施形態においては、カメラが検知する光(本実施形態においては、赤外光)以外の波長の光の透過を抑制するフィルタ部材を赤外撮像部123自身が有する。ただし、他の実施形態においては、窓部68がフィルタの機能を有していてもよい。
また、詳細は後述するが、右コントローラ4は、NFC通信部122を備える。NFC通信部122は、NFC(Near Field Communication)の規格に基づく近距離無線通信を行う。NFC通信部122は、近距離無線通信に用いられるアンテナ122aと、アンテナ122aから送出すべき信号(電波)を生成する回路(例えばNFCチップ)とを有する。例えば、アンテナ122aは、上記近距離無線通信の際にターゲットとなる他の無線通信装置(例えばNFCタグ)がハウジング51の主面の下方領域と近接または接する他の装置に配置された場合に、当該無線通信装置と上記近距離無線通信が可能となるハウジング51の内部の位置に設けられる。なお、近距離無線通信は、NFCの規格に基づくものに限らず、任意の近接通信(非接触通信とも言う)であってもよい。近接通信には、例えば、一方の装置からの電波によって(例えば電磁誘導によって)他方の装置に起電力を発生させる通信方式が含まれる。
なお、上記左コントローラ3および右コントローラ4において、ハウジング31または51に設けられる各構成要素(具体的には、スライダ、スティック、およびボタン等)の形状、数、および、設置位置は任意である。例えば、他の実施形態においては、左コントローラ3および右コントローラ4は、アナログスティックとは別の種類の方向入力部を備えていてもよい。また、スライダ40または62は、本体装置2に設けられるレール部材15または19の位置に応じた位置に配置されてよく、例えば、ハウジング31または51の主面または裏面に配置されてもよい。また、他の実施形態においては、左コントローラ3および右コントローラ4は、上記各構成要素のうちいくつかを備えていない構成であってもよい。
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、図3に示す構成の他、図6に示す各構成要素81〜98を備える。これらの構成要素81〜98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
本体装置2は、CPU(Central Processing Unit)81を備える。CPU81は、本体装置2において実行される各種の情報処理を実行する情報処理部である。CPU81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、各スロット23および24に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、CPU81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
本体装置2は、第1スロットインターフェース(以下、「I/F」と略記する。)91を備える。また、本体装置2は、第2スロットI/F92を備える。第1スロットI/F91および第2スロットI/F92は、CPU81に接続される。第1スロットI/F91は、第1スロット23に接続され、第1スロット23に装着された第1の種類の記憶媒体(例えば、SDカード)に対するデータの読み出しおよび書き込みを、CPU81の指示に応じて行う。第2スロットI/F92は、第2スロット24に接続され、第2スロット24に装着された第2の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、CPU81の指示に応じて行う。
CPU81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、CPU81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi−Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、CPU81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
CPU81は、上述の左側端子17、右側端子21、および、下側端子27に接続される。CPU81は、左コントローラ3と有線通信を行う場合、左側端子17を介して左コントローラ3へデータを送信するとともに、左側端子17を介して左コントローラ3から操作データを受信する。また、CPU81は、右コントローラ4と有線通信を行う場合、右側端子21を介して右コントローラ4へデータを送信するとともに、右側端子21を介して右コントローラ4から操作データを受信する。また、CPU81は、クレードルと通信を行う場合、下側端子27を介してクレードルへデータを送信する。このように、本実施形態においては、本体装置2は、左コントローラ3および右コントローラ4との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置または本体装置2単体がクレードルに装着された場合、本体装置2は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、ユーザは、複数の左コントローラ3および複数の右コントローラ4を用いて本体装置2に対する入力を行うことができる。
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とCPU81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、CPU81へ出力する。
また、ディスプレイ12は、CPU81に接続される。CPU81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、CPU81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。すなわち、コーデック回路87は、CPU81から音声データを受け取った場合、当該音声データに対してD/A変換を行って得られる音声信号をスピーカ88または音声入出力端子25へ出力する。これによって、スピーカ88あるいは音声入出力端子25に接続された音声出力部(例えば、イヤホン)から音が出力される。また、コーデック回路87は、音声入出力端子25から音声信号を受け取った場合、音声信号に対してA/D変換を行い、所定の形式の音声データをCPU81へ出力する。また、音量ボタン26は、CPU81に接続される。CPU81は、音量ボタン26に対する入力に基づいて、スピーカ88または上記音声出力部から出力される音量を制御する。
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびCPU81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、CPU81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。また、電力制御部97は、電源ボタン28に接続される。電力制御部97は、電源ボタン28に対する入力に基づいて、上記各部への電力供給を制御する。すなわち、電力制御部97は、電源ボタン28に対して電源をオフする操作が行われた場合、上記各部の全部または一部への電力供給を停止し、電源ボタン28に対して電源をオンする操作が行われた場合、電力制御部97は、上記各部の全部または一部への電力供給を開始する。また、電力制御部97は、電源ボタン28に対する入力を示す情報(具体的には、電源ボタン28が押下されているか否かを示す情報)をCPU81へ出力する。
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
また、本体装置2は、本体装置2内部の熱を放熱するための冷却ファン96を備える。冷却ファン96が動作することによって、ハウジング11の外部の空気が吸気孔11dから導入されるとともに、ハウジング11内部の空気が排気孔11cから放出されることで、ハウジング11内部の熱が放出される。冷却ファン96は、CPU81に接続され、冷却ファン96の動作はCPU81によって制御される。また、本体装置2は、本体装置2内の温度を検出する温度センサ95を備える。温度センサ95は、CPU81に接続され、温度センサ95の検出結果がCPU81へ出力される。CPU81は、温度センサ95の検出結果に基づいて、冷却ファン96の動作を制御する。
図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、および46)を備える。また、左コントローラ3は、アナログスティック(図7では「スティック」と記載する)32を備える。各ボタン103およびアナログスティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
左コントローラ3は、加速度センサ104を備える。本実施形態においては、加速度センサ104は、所定の3軸(例えば、図4に示すxyz軸)方向に沿った直線加速度の大きさを検出する。なお、加速度センサ104は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。また、左コントローラ3は、角速度センサ105を備える。本実施形態においては、角速度センサ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は、振動によってユーザに通知を行うための振動子107を備える。本実施形態においては、振動子107は、本体装置2からの指令によって制御される。すなわち、通信制御部101は、本体装置2からの上記指令を受け取ると、当該指令に従って振動子107を駆動させる。ここで、左コントローラ3は、増幅器106を備える。通信制御部101は、上記指令を受け取ると、指令に応じた制御信号を増幅器106へ出力する。増幅器106は、通信制御部101からの制御信号を増幅して、振動子107を駆動させるための駆動信号を生成して振動子107へ与える。これによって振動子107が動作する。
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。電力制御回路は、バッテリから上記各部への電力供給を制御する。また、バッテリは、端子42に接続される。本実施形態においては、左コントローラ3が本体装置2に装着される場合、所定の条件下で、バッテリは、端子42を介して本体装置2からの給電によって充電される。
図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は、振動子117および増幅器116を備える。振動子117および増幅器116は、左コントローラ3の振動子107および増幅器106と同様に動作する。すなわち、通信制御部111は、本体装置2からの指令に従って、増幅器116を用いて振動子117を動作させる。
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。すなわち、電力供給部118は、バッテリから給電を受ける各部への電力供給を制御する。また、右コントローラ4が本体装置2に装着される場合、所定の条件下で、バッテリは、端子64を介して本体装置2からの給電によって充電される。
右コントローラ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と赤外発光部124とは、それぞれ別のデバイスとして右コントローラ4内に設けられてもよいし、同じパッケージ内に設けられた単一のデバイスとして右コントローラ4内に設けられてもよい。また、本実施例においては、赤外線カメラを有する赤外撮像部123が用いられるが、なお、他の実施形態においては、撮像手段として、赤外線カメラに代えて可視光カメラ(可視光イメージセンサを用いたカメラ)が用いられてもよい。
右コントローラ4は、処理部121を備える。処理部121は、通信制御部111に接続されるとともに、NFC通信部122に接続される。処理部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であってもよい。
次に、図8を参照して、拡張操作装置の一例であるケース200を用いた操作について説明する。図8は、ユーザがケース200を装着してゲーム操作する様子の一例を示す図である。本実施例において、ケース200には右コントローラ4を装着することが可能であり、ケース200に装着された右コントローラ4から送信されるデータに基づいて、ケース200に対する操作内容に応じた処理が実行される。ここで、詳細は後述するが、ケース200に対する操作内容は、赤外撮像部123によって撮像された撮像画像に基づいて検出される。したがって、ケース200は、ユーザによる操作内容を検出したり、検出結果を本体装置2へ送信したりする電子回路等の電気的構成を必要としない。そのため、本実施例によれば、拡張操作装置の一例であるケース200の構成を簡易化することができる。
例えば、本実施例では、図8に示すように、ユーザは、ケース200を背負って装着し、ケース200に備えられている複数の紐部材204を引っ張ったり緩めたりすることによって、ケース200を用いた操作を行う。例えば、ユーザは、紐部材204の一端を両足、両手、および頭部(頭部右と頭部左)にそれぞれ装着する。これによって、ユーザが左足を動かした場合、左足に装着された紐部材204が引っ張られたり緩められたりし、ユーザが右足を動かした場合、右足に装着された紐部材204が引っ張られたり緩められたりする。また、ユーザが左手を動かした場合、左手に装着された紐部材204が引っ張られたり緩められたりし、ユーザが右手を動かした場合、右手に装着された紐部材204が引っ張られたり緩められたりする。さらに、ユーザが頭部を前後左右に動かした場合、頭部の左右にそれぞれ装着された紐部材204が引っ張られたり緩められたりする。ここで、図8に例示した実施例では、ユーザが頭部に部材を装着しており、当該部材の左方下部と右方下部とにそれぞれ別の紐部材204の一端が接続されている。これによって、ユーザが頭部を左右に倒すことによって一方の紐部材204が引っ張られると共に、他方の紐部材204が緩められる。このように、ユーザが両手両足または頭部を動かす態様に応じて、異なる紐部材204が引っ張られたり緩められたりすることになる。
なお、図8に例示されているユーザ頭部の部材は、後述するケース200のように、厚紙部材を折り曲げることによって組み立てられてもよい。この場合、ユーザ頭部の部材は、ケース200とセットで商品化され、ユーザによって組立可能に構成されてもよい。一例として、組立によってヘルメットや帽子のような頭部に被ることができる部材が形成される構成となっていてもよい。また、紐部材204の一端が接続されるととともにユーザが装着する部材は、頭部に被る態様だけでなく、ユーザが手で握る部材や手に巻き付ける部材であってもよいし、ユーザが足で履く部材や足に巻き付ける部材であってもよい。
このようなケース200を用いた操作に応じて、仮想空間に配置されたプレイヤオブジェクトPOが動作し、当該プレイヤオブジェクトPOの動作が反映された仮想空間の画像が表示装置(例えば、本体装置11のディスプレイ12)に表示される。例えば、紐部材204が装着された左手を縮めた状態から伸ばした状態になるようにユーザが動作した場合、当該左手に装着された紐部材204が引っ張られることになる。この紐部材204を引っ張る操作によって、当該紐部材204は、ケース200のケース本体201(図9参照)から引っ張り出されるように動く。このような紐部材204の動きをケース200内部において検出することによって、ケース200を背負ったユーザが左手を伸ばすような動作をしたことが推測され、プレイヤオブジェクトPOも仮想空間において左手を伸ばすように動作する。つまり、紐部材204が装着された部位をユーザが動作させた場合、当該部位に対応するプレイヤオブジェクト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を用いた操作に応じて動作するプレイヤオブジェクトPOは、表示装置(例えば、本体装置11のディスプレイ12)に表示される。したがって、ケース200を背負って操作するユーザは、プレイヤオブジェクトPOが表示される表示装置を見ることによってゲームを楽しむことになるが、当該表示装置にプレイヤオブジェクトPOを表示するための視点は、仮想空間においてどのような位置に配置されてもよい。第1の例として、プレイヤオブジェクトPOの背後からプレイヤオブジェクトPOを見た仮想空間画像を上記表示装置に表示してもよい。第2の例として、プレイヤオブジェクトPOの第1人称視点によって、上記表示装置に仮想空間画像を表示してもよい。第3の例として、プレイヤオブジェクトPOの正面からプレイヤオブジェクトPOを見た仮想空間画像を上記表示装置に表示してもよい。ここで、仮想空間に配置する視点および視線方向によっては、ユーザにとって自分自身の動きに対するプレイヤオブジェクトPOの動きを把握することが難しくなることが考えられるが、ケース200を用いた操作に対応して動作するプレイヤオブジェクトPOの部位や動作方向を当該視点および視線方向に応じて設定することによって、臨場感のあるゲームプレイを提供することが可能となる。
次に、図9〜図12を参照して、拡張操作装置の一例であるケース200について説明する。なお、図9は、ケース200の外観の一例を示す図である。図10は、ケース200のコントローラ配置部202に右コントローラ4が装着された状態の一例を示す図である。図11は、ケース200内部に設けられた撮像対象部材205を撮像する右コントローラ4の状態の一例を示す図である。図12は、紐部材204の動きに応じて、撮像対象部材205がスライド移動する一例を示す図である。
図9において、ケース200は、ケース本体201、コントローラ配置部202、肩ベルト203、および紐部材204を有している。ケース200は、全体として背負いカバンのような形状であり、ケース本体201に2本の肩ベルト203が取り付けられていることによって、ユーザがケース200を背負うことが可能である。ケース本体201は、2本の肩ベルト203が取り付けられるとともにユーザがケース200を背負った場合にユーザの背中と接する部分となる前側本体201aと、ユーザがケース200を背負った場合に背面部分となる後側本体201bとによって構成されている。そして、前側本体201aと後側本体201bとを組み合わせることによって、ケース本体201内には、外部からの光が遮られた内部空間が形成される。
前側本体201aは、ケース本体201から引き出したりケース本体201へ戻したりする操作が可能に構成される複数(図9においては6本)の紐部材204が設けられている。具体的には、紐部材204は、それぞれ前側本体201aの上面に形成された複数の孔から一方端が外部に引き出された状態で配置され、他方端が前側本体201aの内部に設けられている複数の撮像対象部材205(図11、図12参照)にそれぞれ接続されている。そして、図8を用いて説明したように、ユーザがケース200を背負って装着した場合、紐部材204の一方端をそれぞれユーザの両手、両足、頭部等につなぐことによって、ケース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が引っ張られたり緩められたりする操作に応じて、ケース本体201の内部空間内で昇降するスライド移動することになる。
図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をより認識しやすくなる。
なお、上述した実施例では、ケース200に設けられた紐部材204を引っ張ったり緩めたりすることによって、ケース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内で算出されて本体装置2へ送信される。したがって、赤外撮像部123が撮像した撮像画像そのものを示すデータを送信する場合と比較すると、本体装置2へ送信するデータ量を削減することができるとともに、本体装置2側における処理負荷も低減することができる。また、撮像対象部材の情報のデータ量が小さいため、右コントローラ4から送信する他の操作データに含ませて当該撮像対象部材の情報を本体装置2へ送信することも可能であり、右コントローラ4と本体装置2との間の通信処理自体も簡素に構成することができる。
次に、図15〜図17を参照して、ケース200の組立方法について説明する。なお、図15は、ケース200を組み立てる際の主要部品の組み合わせ例を示す図である。図16は、前側本体201aを組み立てるための厚紙部材の一例を示す図である。図17は、後側本体201bを組み立てるための厚紙部材の一例を示す図である。なお、図16および図17においては、実線が厚紙部材から切り取る線を示し、破線が厚紙部材を山折りにする線を示し、一点鎖線が厚紙部材を谷折りにする線を示している。
図15において、ケース200における各構成部品は、厚紙部材を折り曲げることによって構成されている。例えば、スライド部206は、紐部材204が接続された複数の撮像対象部材205を各レーンに配置した状態(図15では、紐部材204および撮像対象部材205は図示せず)で、仕切り部207を角筒部材208の内部に挿入することによって組み立てられる。具体的には、仕切り部207は、レーン毎の切り込みが生成された保持板材に複数の仕切り板材を挿入することによって組み立てられ、各板材が厚紙部材によって構成される。また、角筒部材208は、上記スリットが形成された板材を上記スライド方向が開口した角筒状に折り曲げることによって組み立てられ、当該板材が厚紙部材によって構成される。
なお、本実施例における厚紙部材は、積層構造を有する板紙単体や複数の板紙を貼り合わせた部材であってよい。一例として、波状に成形した板紙の片面または両面に板紙を貼り合わせた、いわゆる段ボール部材であってもよい。
また、前側本体201aおよび後側本体201bは、後側本体201bが有する4つの差し込み片Pbを前側本体201aに形成された4つの差し込み孔Hcにそれぞれ嵌合させることによって、スライド部206を設置する前のケース本体201が組み立てられる。
図16に示すように、前側本体201aは、紐部材204を貫装するための複数の貫装孔Ha、肩ベルト203を装着するための4つの装着孔Hb、後側本体201bが有する4つの差し込み片Pbを差し込むための4つの差し込み孔Hc、後側本体201bに形成された差し込み孔Hfに差し込むための差し込み片Pa等がそれぞれ形成された板材を折り曲げることによって組み立てられる。具体的には、上記板材は、厚紙部材によって構成され、後面の一部が開口した略六面体形状に当該厚紙部材を折り曲げることによって、前側本体201aが組み立てられる。
図17示すように、後側本体201bは、前側本体201aに形成された4つの差し込み孔Hcに差し込むための4つの差し込み片Pb、前側本体201aが有する差し込み片Paを差し込むための差し込み孔Hf、コントローラ配置部202を挿設するための挿設孔Hd、ケース200に装着する右コントローラ4の一部を貫装して固定するための固定孔He等がそれぞれ形成された板材を折り曲げることによって組み立てられる。具体的には、上記板材は、厚紙部材によって構成される。そして、上記厚紙部材の一部には、当該厚紙部材を切り出して折り曲げることによってコントローラ配置部202を形成する切り出し領域が形成されており、当該切り出し領域の厚紙部材を角筒状に折り曲げた状態で挿設孔Hdに貫装することによって、後側本体201bにコントローラ配置部202が形成される。そして、コントローラ配置部202が形成された状態で、略六面体形状に上記厚紙部材を折り曲げることによって、後側本体201bが組み立てられる。
このように組み立てられたケース本体201の4つの装着孔Hbに肩ベルト203(図15では、肩ベルト203は図示せず)を装着する。そして、ケース本体201の上面を開放した状態で、当該ケース本体201の前面側の内部空間にスライド部206を設置する。そして、各紐部材204を貫装孔Haに貫装した状態で、前側本体201aが有する差し込み片Paを後側本体201bに形成された差し込み孔Hfに嵌合させるように、ケース本体201の上面を閉じることによって、ケース200が組み立てられる。
このように、上述したケース200は、厚紙部材を折り曲げることによって組み立てられる各構成部品を組み合わせることによって構成されるため、板状の部材群を商品形態としてユーザが組み立てるような拡張操作装置を実現することができる。また、上述したように、当該拡張操作装置は、ユーザによる操作内容を検出したり、検出結果を本体装置2へ送信したりする電子回路等の電気的構成を必要としないため、上述したユーザ組立による商品として実現することが可能となる。
なお、上述した厚紙部材を折り曲げて多面体を形成する際の面同士の接合方法については、任意の方法でかまわない。例えば、当該面同士の接合辺を粘着テープで貼り合わせてもよいし、当該接合辺に差し込み辺および差し込み孔を形成して当該差し込みによって当該接合辺を接合してもよいし、当該接合辺同士を接着剤で接合してもよい。また、ケース200を構成する各部品が厚紙部材で構成される例を用いたが、これらの各部品の少なくとも一部は、薄紙部材や他の材質の板材であってもよい。例えば、上記各部品の少なくとも一部は、樹脂製や木製や金属製の薄板材や厚板材を折り曲げることによって組み立てられてもよいし、肩ベルト203が帯状の繊維材で構成されてもよい。また、上記各部品の一部に他の材質の部品が組み付けられていてもよい。例えば、紐部材204が貫装される孔は、当該紐部材204の移動によって削られることが考えられるため、当該孔において紐部材204と接触する部分に樹脂製等のリング部材をはめ込むことが考えられる。また、上記各部品の少なくとも一部は、予め多面体形状の部品として形成されていてもよい。
また、本実施例の拡張操作装置の一例としてケース200を用いたが、拡張操作装置は、他の態様の操作装置であってもよい。以下、図18および図19を参照して、拡張操作装置の他の例である操縦装置250を用いた操作について説明する。図18は、ユーザが操縦装置250を用いてゲーム操作する様子の一例を示す図である。図19は、操縦装置250の内部構造の一例を示す図である。操縦装置250においても右コントローラ4を装着することが可能であり、操縦装置250に装着された右コントローラ4から送信されるデータに基づいて、操縦装置250に対する操作内容に応じた処理が実行される。ここで、操縦装置250に対する操作内容も、赤外撮像部123によって撮像された撮像画像に基づいて検出される。したがって、操縦装置250も、ユーザによる操作内容を検出したり、検出結果を本体装置2へ送信したりする電子回路等の電気的構成を必要としない。そのため、拡張操作装置の他の例である操縦装置250の構成を簡易化することができる。
図18に示すように、ユーザは、操縦装置250上に乗って、操縦装置250に備えられている操作ペダル252や操作桿253を操作することによって、操縦装置250を用いた操作を行う。図18に示した一例では、操縦装置250は、装置本体251上に、複数の操作ペダル252および複数の操作桿253が設けられている。
例えば、ユーザは、装置本体251上に着席して、当該装置本体251の上面に設置された複数の操作ペダル252を両足で踏むことによって操作する。操作ペダル252は、ユーザが踏むペダル面が上昇する方向に付勢されており、ユーザが当該ペダル面を当該付勢力より大きな力で踏むことによって装置本体251の上面に向かって当該ペダル面が踏み下げられる。また、ユーザは、装置本体251の上面に設置された複数の操作桿253を両手で操作する。具体的には、ユーザは、装置本体251に操作桿253が支持されている支持部を中心として、操作桿253をそれぞれ前後左右に倒すことによって操作する。また、ユーザは、操作桿253の上端付近にそれぞれ設けられた操作レバー254を両手で握ることによって操作する。操作レバー254は、操作レバー254の開く角度が大きくなる方向に付勢されており、ユーザが当該付勢力より大きな力で操作レバー254を握ることによって、操作レバー254の開く角度が小さくなる。そして、これら操作ペダル252および操作桿253に対する操作内容を検出するために、装置本体251に設けられたコントローラ配置部に右コントローラ4が装着されている。
図19に示すように、右コントローラ4が装置本体251に設けられたコントローラ配置部に装着された場合、右コントローラ4の一部が装置本体251の内部空間に内包されるとともに、赤外撮像部123が当該内部空間内を撮像可能な状態となる。そして、装置本体251の内部空間における赤外撮像部123の撮像範囲内、かつ、赤外発光部124の赤外光照射範囲内には、撮像対象部材255〜257が配置される。
撮像対象部材255は、複数の操作ペダル252それぞれに対応して、装置本体251の内部空間内に複数設けられる。撮像対象部材255は、操作ペダル252のペダル面にその一方端が接続された紐部材252aの他方端にそれぞれ接続されている。図19に示すように、紐部材252aは、操作ペダル252のペダル面の上昇/下降動作に応じて上下に移動するため、当該紐部材252aの上下移動に応じて、操作対象255も装置本体251の内部空間内で移動する。したがって、赤外撮像部123が撮像した撮像画像を用いて算出した撮像対象部材255の位置に基づいて、操作ペダル252に対する操作内容を把握することができる。
撮像対象部材256は、装置本体251の内部空間内に突出している複数の操作桿253の下方端部付近それぞれに設けられる。図19に示すように、操作桿253は、操作桿253が支持されている装置本体251の上面の支持部を中心として、傾倒移動した場合、操作桿253の下方端部も装置本体251の内部空間内で傾倒移動する。したがって、操作桿253の下方端部に設けられている撮像対象部材256も装置本体251の内部空間内で移動する。したがって、赤外撮像部123が撮像した撮像画像を用いて算出した撮像対象部材256の位置等に基づいて、操作桿253に対する傾倒操作内容を把握することができる。なお、赤外撮像部123の撮像方向に対して操作桿253が前後に傾倒した場合、撮像対象部材256も赤外撮像部123に対して前後に移動することになる。この場合、赤外撮像部123が撮像した撮像画像において、撮像された撮像対象部材256の輝度の変化や撮像された撮像対象部材256のサイズの変化を算出することによって、赤外撮像部123に対する撮像対象部材256の前後位置を算出することが可能となる。
撮像対象部材257は、複数の操作レバー254それぞれに対応して、装置本体251の内部空間内に複数設けられる。撮像対象部材257は、操作レバー257にその一方端が接続された紐部材254aの他方端にそれぞれ接続されている。紐部材254aは、操作レバー254が開く角度に応じて上下に移動するため、当該紐部材254aの上下移動に応じて、操作対象257も装置本体251の内部空間内で移動する。したがって、赤外撮像部123が撮像した撮像画像を用いて算出した撮像対象部材257の位置に基づいて、操作レバー257に対する操作内容を把握することができる。
このような操縦装置250を用いた操作に応じて、仮想空間に配置されたプレイヤオブジェクトPOが動作し、当該プレイヤオブジェクトPOの動作が反映された仮想空間の画像が表示装置(例えば、本体装置11のディスプレイ12)に表示される。例えば、ユーザが操作ペダル252を踏む操作をした場合、プレイヤオブジェクトPOが移動する速度が増減される。また、ユーザが操作桿253を前後左右に倒す操作をした場合、操作桿253それぞれの傾倒方向に応じて、プレイヤオブジェクトPOの移動方向が変化する。また、ユーザが操作レバー254を握る操作をした場合、プレイヤオブジェクトPOが所定の動作(例えば、攻撃や防御等)を行う。
なお、上述した実施例では、操縦装置250に備えられている操作手段の1つとして操作桿253を備えているが、操作桿253は、アナログスティックのような方向指示可能な操作部であってもよい。例えば、アナログスティックの傾倒操作と連動して移動する撮像対象部材を当該アナログスティック下部の空間に設け、当該撮像対象部材の動きを赤外撮像部123によって撮像することによって、アナログスティックの傾倒方向や傾倒量についても、操作桿253の傾倒方向や傾倒角度と同様に算出することが可能である。
次に、図20および図21を参照して、本実施形態において右コントローラ4で実行される具体的な処理の一例について説明する。図20は、本実施形態において右コントローラ4のメモリ(例えば、処理部121に含まれるメモリ)において設定されるデータ領域の一例を示す図である。なお、上記右コントローラ4のメモリには、図20に示すデータの他、他の処理で用いられるデータも記憶されるが、詳細な説明を省略する。また、後述する右コントローラ4で実行される情報算出処理では、第1モード(クラスタリングモード)によって撮像対象部材の情報を算出する例を用いる。
右コントローラ4のメモリのプログラム記憶領域には、処理部121で実行される各種プログラムPsが記憶される。本実施形態においては、各種プログラムPsは、上述した撮像画像の撮像結果に基づく情報を取得して算出するための情報算出プログラムや算出した情報を本体装置2へ送信するためのプログラム等が記憶される。なお、各種プログラムPsは、右コントローラ4内に予め記憶されていてもよいし、本体装置2に着脱可能な記憶媒体(例えば、第1スロット23に装着された第1の種類の記憶媒体、第2スロット24に装着された第2の種類の記憶媒体)から取得されて右コントローラ4のメモリに記憶されてもよいし、インターネット等のネットワークを介して他の装置から取得されて右コントローラ4のメモリに記憶されてもよい。処理部121は、右コントローラ4のメモリに記憶された各種プログラムPsを実行する。
また、右コントローラ4のメモリのデータ記憶領域には、処理部121において実行される処理において用いられる各種のデータが記憶される。本実施形態においては、右コントローラ4のメモリには、撮像画像データDsa、解析ウインドウデータDsb、抽出画素データDsc、抽出画素群データDsd、クラスタデータDse、およびクラスタ数データDsf等が記憶される。
撮像画像データDsaは、赤外撮像部123が撮像した撮像画像を示すデータである。本実施形態では、処理部121の指示に基づいた周期で赤外撮像部123が撮像処理を行っており、当該撮像された撮像画像を用いて撮像画像データDsaが適宜更新される。なお、撮像画像データDsaの更新周期は、後述する処理部123において実行される処理および/またはCPU81において実行される処理の周期毎に更新されてもよいし、上記撮像画像が撮像される周期毎に更新されてもよい。
解析ウインドウデータDsbは、撮像画像データDsaに格納されている撮像画像のうち、撮像結果に基づく情報を算出するために解析する範囲(解析ウインドウ)の画像を示すデータである。
抽出画素データDscは、上記解析ウインドウ内の画像から抽出された所定の閾値以上の輝度を有する画素を示すデータである。抽出画素群データDsdは、上記解析ウインドウ内の画像において、上記抽出された画素が隣接している画素群を示すデータである。
クラスタデータDseは、上記解析ウインドウ内の画像において判定されたクラスタ毎の情報を示すデータであり、平均輝度データDse1、面積データDse2、重心座標データDse3、および外接長方形データDse4等を含む。平均輝度データDse1は、クラスタ毎の平均輝度を示すデータである。面積データDse2は、クラスタ毎の面積(画素数)を示すデータである。重心座標データDse3は、クラスタ毎の重心座標を示すデータである。外接長方形データDse4は、クラスタ毎に所定方向に外接する長方形の位置およびサイズを示すデータである。
クラスタ数データDsfは、上記解析ウインドウ内の画像から抽出されたクラスタの数を示すデータである。
次に、本実施形態における撮像画像の撮像結果に基づく情報を算出する処理(以下、単に情報算出処理と記載する)の詳細な一例を説明する。図21は、処理部121のCPUで実行される情報算出処理の一例を示すフローチャートである。本実施形態においては、図21に示す一連の処理は、処理部121のCPUが各種プログラムPsに含まれる情報算出プログラム等を実行することによって行われる。また、図21に示す情報算出処理が開始されるタイミングは任意である。
なお、図21に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。また、本実施形態では、上記フローチャートの各ステップの処理を処理部121のCPUが実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、処理部121のCPU以外のプロセッサや専用回路が実行するようにしてもよい。また、右コントローラ4において実行される処理の一部は、右コントローラ4と通信可能な他の情報処理装置(例えば、本体装置2や本体装置2とネットワークを介して通信可能なサーバ)によって実行されてもよい。すなわち、図21に示す各処理は、右コントローラ4を含む複数の情報処理装置が協働することによって実行されてもよい。
図21において、処理部121のCPUは、情報算出処理における初期設定を行い(ステップS141)、次のステップに処理を進める。例えば、上記初期設定において、処理部121のCPUは、以下に説明する処理を行うためのパラメータを初期化する。また、上記初期設定において、処理部121のCPUは、右コントローラ4が装着されている拡張操作装置の種別や識別情報を必要に応じて設定する。例えば、本体装置2、左コントローラ3、または右コントローラ4を用いて、ユーザが拡張操作装置の種別を選択する操作を行うことによって、拡張操作装置の種別が初期設定されてもよい。また、他の例として、NFC通信部122を介して、右コントローラ4が拡張操作装置に設けられた通信対象と近距離無線通信が可能である場合、当該通信対象から拡張操作装置の種別や識別情報を取得することによって、拡張操作装置の種別や識別情報が初期設定されてもよい。さらに、上述した基準マーカが赤外撮像部123の撮像画像に撮像されている場合、当該基準マーカの撮像形状や当該基準マーカと他の撮像対象部材との撮像位置関係に基づいて、拡張操作装置の種別が初期設定されてもよい。また、上記初期設定において、処理部121のCPUは、撮像画像のうち、撮像結果に基づく情報を算出するために解析する範囲(解析ウインドウ)を初期設定する。なお、解析ウインドウの範囲は、本体装置2からの指示に基づいて設定されてもよいし、拡張操作装置の種別に応じて予め定められていてもよい。また、解析ウインドウの範囲は複数設定されてもよく、この場合、時系列的に順次異なる解析ウインドウ毎に撮像結果に基づく情報が算出されることになる。
次に、処理部121のCPUは、赤外撮像部123が撮像した撮像画像を取得し(ステップS142)、次のステップに処理を進める。例えば、処理部121のCPUは、赤外撮像部123から撮像画像を取得して撮像画像データDsaを更新する。
次に、処理部121のCPUは、解析ウインドウを設定し(ステップS143)、次のステップに処理を進める。例えば、処理部121のCPUは、上記初期設定されている解析ウインドウの範囲に基づいて、撮像画像データDsaに格納されている撮像画像から解析ウインドウ内の画像を切り出し、当該切り出した画像を用いて解析ウインドウデータDsbを更新する。
次に、処理部121のCPUは、上記解析ウインドウ内の画像から所定の閾値以上の輝度を有する画素を抽出し(ステップS144)、次のステップに処理を進める。例えば、処理部121のCPUは、解析ウインドウデータDsbに格納されている画像において、所定の閾値以上の輝度を有する画素を抽出画素として抽出し、当該抽出画素を用いて抽出画素データDscを更新する。
次に、処理部121のCPUは、上記解析ウインドウ内の画像から上記ステップS144において抽出された抽出画素が隣接している抽出画素群を抽出し(ステップS145)、次のステップに処理を進める。例えば、処理部121のCPUは、上記解析ウインドウ内の画像から抽出した抽出画素群のうち、後述するステップS146〜ステップS150の処理が行われていない抽出画素群の1つを以降の処理の処理対象として選択し、当該抽出画素群を示すデータを用いて抽出画素群データDsdを更新する。
次に、処理部121のCPUは、現処理対象の抽出画素群のサイズSを算出し(ステップS146)、次のステップに処理を進める。例えば、処理部121のCPUは、抽出画素群データDsdが示す抽出画素群のサイズS(例えば、画素数S)を算出する。
次に、処理部121のCPUは、上記ステップS146において算出されたサイズSが、第1閾値T1以上、かつ、第2閾値T2(T2>T1)以下であるか否かを判定する(ステップS147)。ここで、第1閾値T1は、上記解析ウインドウ内の画像において撮像対象部材が撮像された高輝度画素の塊(クラスタ)であると認識する最小サイズを示す値である。また、第2閾値T2は、上記解析ウインドウ内の画像において撮像対象部材が撮像されたクラスタであると認識する最大サイズを示す値である。そして、処理部121のCPUは、サイズSが、第1閾値T1以上、かつ、第2閾値T2以下である場合、ステップS148に処理を進める。一方、処理部121のCPUは、サイズSが、第1閾値T1以上、かつ、第2閾値T2以下でない場合、ステップS150に処理を進める。
ステップS148において、処理部121のCPUは、現処理対象の抽出画素群をクラスタに設定する。そして、処理部121のCPUは、上記ステップS148において設定されたクラスタに関するクラスタ情報を算出し(ステップS149)、ステップS151に処理を進める。例えば、上記ステップS149において、処理部121のCPUは、抽出画素群データDsdが示す抽出画素群の平均輝度を算出し、当該算出された平均輝度を用いて、上記ステップS148において設定されたクラスタに対応するクラスタデータDseにおける平均輝度データDse1を更新する。また、処理部121のCPUは、上記ステップS146で算出されたサイズSを用いて、上記ステップS148において設定されたクラスタに対応するクラスタデータDseにおける面積データDse2を更新する。また、処理部121のCPUは、抽出画素群データDsdが示す抽出画素群の重心位置を算出し、上記解析ウインドウ内の画像における当該重心位置を示す座標値(例えば、図13に例示したXY座標値)を用いて、上記ステップS148において設定されたクラスタに対応するクラスタデータDseにおける重心座標データDse3を更新する。また、処理部121のCPUは、抽出画素群データDsdが示す抽出画素群に外接、かつ、上記解析ウインドウ内の画像に対する所定方向の辺(例えば、図13に例示したX軸またはY軸に平行な辺)を有する長方形を設定し、当該長方形において対向する2つの頂点の位置を示すそれぞれの座標値(例えば、図13に例示したXY座標値)を用いて、上記ステップS148において設定されたクラスタに対応するクラスタデータDseにおける外接長方形データDse4を更新する。なお、上述した基準マーカが赤外撮像部123の撮像画像に撮像されている場合、当該基準マーカが撮像されている位置を基準として、抽出画素群の重心位置や外接長方形の位置を算出してもかまわない。
一方、ステップS150において、処理部121のCPUは、現処理対象の抽出画素群をクラスタに設定せずに、そのままステップS151に処理を進める。
ステップS151において、処理部121のCPUは、上記解析ウインドウ内の画像内に、上記ステップS145〜ステップS150の処理が行われていない抽出画素群が残っているか否かを判定する。そして、処理部121のCPUは、未処理の画素群が残っている場合、上記ステップS145に戻って処理を繰り返す。一方、処理部121のCPUは、未処理の画素群が残っていない場合、上記ステップS149においてクラスタ情報が更新されなかったクラスタデータDseを削除して、ステップS152に処理を進める。
ステップS152において、処理部121のCPUは、上記ステップS148において、上記解析ウインドウ内の画像から設定されたクラスタの数を算出し、次のステップに処理を進める。例えば、処理部121のCPUは、上記解析ウインドウ内の画像から設定されたクラスタの数を用いて、クラスタ数データDsfを更新する。
次に、処理部121のCPUは、撮像画像の撮像結果に基づく情報を示すデータを本体装置2へ送信する処理を行い(ステップS153)、次のステップに処理を進める。例えば、処理部121のCPUは、クラスタデータDseおよびクラスタ数データDsfを用いて、本体装置2へ送信するためのデータを生成し、通信制御部111へ当該データを出力する。これによって、通信制御部111は、他の操作データ(ボタン操作データ、加速度データ、角速度データ等)とともに撮像画像の撮像結果に基づく情報を操作データとして生成し、当該操作データを所定の送信周期毎に本体装置2へ送信する。
次に、処理部121のCPUは、情報算出処理を終了するか否かを判定する(ステップS154)。上記ステップS154において情報算出処理を終了する条件としては、例えば、本体装置2から情報算出処理を終了する指示を受領したことや、ユーザが情報算出処理を終了する操作を行ったこと等がある。処理部121のCPUは、情報算出処理を終了しない場合に上記ステップS142に戻って処理を繰り返し、情報算出処理を終了する場合に当該フローチャートによる処理を終了する。以降、ステップS142〜ステップS154の一連の処理は、ステップS154で情報算出処理を終了すると判定されるまで繰り返し実行される。
次に、図22および図23を参照して、本実施形態において本体装置2で実行される具体的な処理の一例について説明する。図22は、本実施形態において本体装置2のDRAM85に設定されるデータ領域の一例を示す図である。なお、DRAM85には、図22に示すデータの他、他の処理で用いられるデータも記憶されるが、詳細な説明を省略する。また、後述する本体装置2で実行される情報処理では、第1モード(クラスタリングモード)によって算出された撮像対象部材の情報を取得する例を用いる。
DRAM85のプログラム記憶領域には、本体装置2で実行される各種プログラムPaが記憶される。本実施形態においては、各種プログラムPaは、上述した左コントローラ3および/または右コントローラ4との間で無線通信するための通信プログラムや、左コントローラ3および/または右コントローラ4から取得したデータに基づいた情報処理(例えば、ゲーム処理)を行うためのアプリケーションプログラム等が記憶される。なお、各種プログラムPaは、フラッシュメモリ84に予め記憶されていてもよいし、本体装置2に着脱可能な記憶媒体(例えば、第1スロット23に装着された第1の種類の記憶媒体、第2スロット24に装着された第2の種類の記憶媒体)から取得されてDRAM85に記憶されてもよいし、インターネット等のネットワークを介して他の装置から取得されてDRAM85に記憶されてもよい。CPU81は、DRAM85に記憶された各種プログラムPaを実行する。
また、DRAM85のデータ記憶領域には、本体装置2において実行される通信処理や情報処理等の処理において用いられる各種のデータが記憶される。本実施形態においては、DRAM85には、操作データDa、操作内容データDb、姿勢データDc、オブジェクト動作データDd、および画像データDe等が記憶される。
操作データDaは、右コントローラ4からそれぞれ適宜取得した操作データである。上述したように、右コントローラ4から送信される操作データには、各入力部(具体的には、各ボタン、アナログスティック、各センサ)からの入力に関する情報(具体的には、操作に関する情報、または、センサによる検出結果)と、赤外撮像部123の撮像画像の撮像結果に基づく情報が含まれている。本実施形態では、無線通信によって右コントローラ4から所定周期で操作データが送信されており、当該受信した操作データを用いて操作データDaが適宜更新される。なお、操作データDaの更新周期は、後述する本体装置2で実行される処理の周期である1フレーム毎に更新されてもよいし、上記無線通信によって操作データが送信される周期毎に更新されてもよい。操作データDaは、ボタン操作データDa1、クラスタデータDa2、クラスタ数データDa3、角速度データDa4、および加速度データDa5を含んでいる。ボタン操作データDa1は、右コントローラ4の各ボタンやアナログスティックからの入力に関する情報を示すデータである。クラスタデータDa2は、右コントローラ4の処理部121において算出されたクラスタ毎の情報を示すデータである。クラスタ数データDa3は、右コントローラ4の処理部121において抽出されたクラスタの数を示すデータである。角速度データDa4は、右コントローラ4の角速度センサ115によって検出された右コントローラ4に生じている角速度に関する情報を示すデータである。例えば、角速度データDa4は、右コントローラ4に生じているxyz軸周りの角速度を示すデータ等を含んでいる。加速度データDa5は、右コントローラ4の加速度センサ114によって検出された右コントローラ4に生じている加速度に関する情報を示すデータである。例えば、加速度データDa5は、右コントローラ4に生じているxyz軸方向の加速度を示すデータ等を含んでいる。
操作内容データDbは、クラスタデータDa2およびクラスタ数データDa3に基づいて算出された、ケース200を用いた操作内容を示すデータである。
姿勢データDcは、実空間における重力加速度の方向を基準とした右コントローラ4の姿勢を示すデータである。例えば、姿勢データDcは、右コントローラ4に作用している重力加速度の方向を示すデータや、当該重力加速度方向に対するxyz軸方向を示すデータ等を含んでいる。
オブジェクト動作データDdは、仮想世界に配置されるプレイヤオブジェクトの動作に関するデータである。画像データDeは、ゲームの際に表示装置(例えば、本体装置2のディスプレイ12)に画像(例えば、プレイヤオブジェクトの画像、他のオブジェクトの画像、背景画像等)を表示するためのデータである。
次に、本実施形態における情報処理(例えば、ゲーム処理)の詳細な一例を説明する。図23は、本体装置2で実行される情報処理の一例を示すフローチャートである。本実施形態においては、図23に示す一連の処理は、CPU81が各種プログラムPaに含まれる通信プログラムや所定のアプリケーションプログラム(例えば、ゲームプログラム)を実行することによって行われる。また、図23に示す情報処理が開始されるタイミングは任意である。
なお、図23に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。また、本実施形態では、上記フローチャートの各ステップの処理をCPU81が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、CPU81以外のプロセッサや専用回路が実行するようにしてもよい。また、本体装置2において実行される処理の一部は、本体装置2と通信可能な他の情報処理装置(例えば、本体装置2とネットワークを介して通信可能なサーバ)によって実行されてもよい。すなわち、図23に示す各処理は、本体装置2を含む複数の情報処理装置が協働することによって実行されてもよい。
図23において、CPU81は、ゲーム処理における初期設定を行い(ステップS161)、次のステップに処理を進める。例えば、上記初期設定では、CPU81は、以下に説明する処理を行うためのパラメータを初期化する。また、上記初期設定において、CPU81は、右コントローラ4が装着されている拡張操作装置の種別や識別情報を必要に応じて設定する。例えば、本体装置2、左コントローラ3、または右コントローラ4を用いて、ユーザが拡張操作装置の種別を選択する操作を行うことによって、拡張操作装置の種別が初期設定されてもよい。また、他の例として、NFC通信部122を介して、右コントローラ4が拡張操作装置に設けられた通信対象と近距離無線通信が可能である場合、当該通信対象から拡張操作装置の種別や識別情報を取得することによって、拡張操作装置の種別や識別情報が初期設定されてもよい。さらに、上述した基準マーカが赤外撮像部123の撮像画像に撮像されている場合、当該基準マーカの撮像形状や当該基準マーカと他の撮像対象部材との撮像位置関係に基づいて特定された拡張操作装置の種別を取得することによって、拡張操作装置の種別が初期設定されてもよい。また、上記初期設定において、CPU81は、赤外撮像部123の撮像画像のうち、撮像結果に基づく情報を算出するために解析する範囲(解析ウインドウ)を初期設定して、右コントローラ4へ当該設定内容を指示してもよい。
次に、CPU81は、右コントローラ4から操作データを取得して操作データDaを更新し(ステップS162)、次のステップに処理を進める。例えば、CPU81は、右コントローラ4から取得した操作データに応じて、ボタン操作データDa1、クラスタデータDa2、クラスタ数データDa3、角速度データDa4、および加速度データDa5を更新する。
次に、CPU81は、赤外撮像部123の撮像画像から抽出されたクラスタ毎の重心座標に基づいて、ケース200を用いた操作内容を算出し(ステップS163)、次のステップに処理を進める。例えば、CPU81は、上記ステップS162において更新されたクラスタデータDa2およびクラスタ数データDa3におけるクラスタ毎の重心座標データおよびクラスタの数に基づいて、ケース200を用いた操作内容を算出する。具体的には、ユーザの右手に装着されている紐部材204が接続されている撮像対象部材205の位置、すなわち当該撮像対象部材205に対応するクラスタの位置が上昇した場合、ユーザが右手を伸ばすような操作をしたと判定する。また、ユーザの両足に装着されている紐部材204が接続されている撮像対象部材205の位置、すなわち当該撮像対象部材205に対応するクラスタの位置が両方とも下降した場合、ユーザがしゃがむような操作をしたと判定する。
次に、CPU81は、右コントローラ4の姿勢を算出し(ステップS164)、次のステップに処理を進める。例えば、CPU81は、右コントローラ4に生じている加速度を示すデータを加速度データDa5から取得し、右コントローラ4に作用している重力加速度の方向を算出して、当該方向を示すデータを用いて姿勢データDcを更新する。重力加速度を抽出する方法については任意の方法を用いればよく、例えば右コントローラ4に平均的に生じている加速度成分を算出して当該加速度成分を重力加速度として抽出してもよい。そして、CPU81は、右コントローラ4に生じている角速度を示すデータを角速度データDa4から取得し、右コントローラ4のxyz軸周りの角速度を算出して、当該角速度を示すデータを用いて重力加速度の方向を基準とした右コントローラ4のxyz軸方向を算出して姿勢データDcを更新する。
なお、右コントローラ4の姿勢については、重力加速度を基準としたxyz軸方向が算出された以降は、xyz各軸周りの角速度のみに応じて更新してもよい。しかしながら、右コントローラ4の姿勢と重力加速度の方向との関係が誤差の累積によってずれていくことを防止するために、所定周期毎に重力加速度の方向に対するxyz軸方向を算出して右コントローラ4の姿勢を補正してもよい。
次に、CPU81は、ケース200を用いた操作内容に基づいて、プレイヤオブジェクトPOの各部位(パーツ)の動作を設定し(ステップS165)、次のステップに処理を進める。例えば、CPU81は、上記ステップS163において算出された操作内容に基づいて、ユーザの操作内容と類似した動きでプレイヤオブジェクトPOの各部位の動作を設定し、当該動作を用いてプレイヤオブジェクト動作データDdを更新する。具体的には、上記ステップS163において、ケース200に対してユーザが左手を伸ばすような操作が行われたと判定された場合、プレイヤオブジェクトPOも仮想空間において左手を伸ばす動作に設定し、当該動作を用いてプレイヤオブジェクト動作データDdを更新する。このように、ユーザがケース200を用いてあるユーザ部位を動かすような操作を行った場合、当該部位に対応するプレイヤオブジェクトPOの一部(例えば、ユーザが動かした部位と同じ部位)が動く動作が設定されることになる。なお、上記ステップS165において設定されるプレイヤオブジェクトPOの動作は、ユーザが動かした部位に対応するプレイヤオブジェクトPOの部位が動く動作に限られず、他の動作が設定されてもよい。例えば、ユーザがケース200を用いて所定の操作(例えば、しゃがむような操作)を行った場合、当該動かしたユーザ部位とは関連しないプレイヤオブジェクトPOの動作が設定されてもいいし、プレイヤオブジェクトPOが仮想空間において他の態様に変化するような動作に設定されてもよい。
次に、CPU81は、右コントローラ4の姿勢に基づいて、プレイヤオブジェクトPO全体の動作を設定し(ステップS166)、次のステップに処理を進める。例えば、CPU81は、姿勢データDcが示す右コントローラ4の姿勢が、ケース200を右に倒すように傾倒していく姿勢である場合、プレイヤオブジェクトPOが仮想空間において右に倒れていく動作に設定し、当該動作を用いてプレイヤオブジェクト動作データDdを更新する。
次に、CPU81は、表示装置にプレイヤオブジェクトPOが配置された仮想空間の画像を表示する処理を行い(ステップS167)、次のステップに処理を進める。例えば、CPU81は、プレイヤオブジェクト動作データDdに基づいてプレイヤオブジェクトPOの姿勢や位置を変化させ、当該変化させた後の姿勢および位置に基づいてプレイヤオブジェクトPOを仮想空間に配置する。そして、CPU81は、所定の位置(例えば、プレイヤオブジェクトPOの背後の視点や第1人称視点)に配置された仮想カメラから、プレイヤオブジェクトPOが配置された仮想空間を見た仮想空間画像を生成し、当該仮想空間画像を表示装置(例えば、本体装置11のディスプレイ12)に表示する処理を行う。
次に、CPU81は、ゲームを終了するか否かを判定する(ステップS168)。上記ステップS168においてゲームを終了する条件としては、例えば、上記ゲームを終了する条件が満たされたことや、ユーザがゲームを終了する操作を行ったこと等がある。CPU81は、ゲームを終了しない場合に上記ステップS162に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。以降、ステップS162〜ステップS168の一連の処理は、ステップS164でゲームを終了すると判定されるまで繰り返し実行される。
このように、本実施例においては、拡張操作装置の一例であるケース200に対する操作内容は、赤外撮像部123によって撮像された撮像画像に基づいて検出される。したがって、ケース200は、ユーザによる操作内容を検出したり、検出結果を本体装置2へ送信したりする電子回路等の電気的構成を必要としない。そのため、本実施例によれば、拡張操作装置の一例であるケース200の構成を簡易化することができる。また、本実施例においては、右コントローラ4から本体装置2へ送信されるデータは、当該撮像画像に撮像されたクラスタの位置に関するデータ等、赤外撮像部123が撮像した撮像画像そのものを示すデータではない。したがって、右コントローラ4から本体装置2へ送信されるデータ量を削減することが可能となる。また、本実施例においては、本体装置2が検出可能な拡張操作装置に対する操作内容は、撮像対象部材が撮像されている位置に基づいて算出することが可能であるため、操作手段に対する操作の有無だけでなく、操作手段を操作する操作量(アナログ入力量)を算出することができる。
なお、上述した実施例において、右コントローラ4から本体装置2へ送信する撮像画像に基づいたデータは、赤外撮像部123が撮像した撮像画像そのものを示すデータでもよい。この場合、右コントローラ4から本体装置2へ送信されるデータ量が増加することが考えられるが、本体装置2側において、上記撮像画像に関する様々な解析処理を行うことが可能となる。
また、上述した拡張操作装置では、拡張操作装置本体内に設けられた撮像対象部材が上下方向、左右方向、および前後方向の何れかの方向に少なくとも移動して、当該撮像対象部材の位置に基づいて拡張操作装置に対する操作内容を算出しているが、拡張操作装置に対する操作に応じて操作対象が他の方向に動いてもよい。一例として、拡張操作装置に対する操作に応じて、拡張操作装置本体内に設けられた操作対象が回転するものであってもよい。第1の例として、赤外撮像部123の撮像方向に対して平行に設けられた回転軸を中心に撮像対象部材が回転する場合、所定の方向を指し示すことが可能なマーカを当該撮像対象部材の赤外撮像部123側の面に貼り付ける。そして、赤外撮像部123の撮像画像において上記マーカが指し示す方向を検出することによって、上記撮像対象部材が回転している回転角度を算出することが可能となり、当該回転角度に基づいて拡張操作装置に対する操作内容を算出することができる。第2の例として、赤外撮像部123の撮像方向に対して垂直に設けられた回転軸を中心に撮像対象部材が回転する場合、赤外撮像部123と対向する位置における長さや模様が回転角度によって異なるマーカを当該撮像対象部材の側面に貼り付ける。そして、赤外撮像部123の撮像画像において上記マーカの長さや模様を検出することによって、上記撮像対象部材が回転している回転角度を算出することが可能となり、当該回転角度に基づいて拡張操作装置に対する操作内容を算出することができる。
また、上述した実施例において、右コントローラ4の動きや姿勢を検出する方法については、単なる一例であって、他の方法や他のデータを用いて右コントローラ4の動きや姿勢を検出してもよい。例えば、右コントローラ4の姿勢を、当該右コントローラ4に生じる角速度のみで算出、または当該右コントローラ4に生じる角速度と加速度とを組み合わせて算出しているが、当該右コントローラ4に生じる加速度のみで姿勢を算出してもかまわない。右コントローラ4に生じる加速度のみ検出する場合であっても、右コントローラ4に生じる重力加速度が生じている方向を算出可能であり、当該重力加速度を基準としたxyz軸方向を逐次算出すれば上述した実施例と同様の処理が可能であることは言うまでもない。また、上述した実施例では、右コントローラ4が装着された拡張操作装置を用いた操作に応じたゲーム画像を本体装置2のディスプレイ12に表示しているが、クレードルを介して据置型モニタに表示してもよい。
また、本体装置2と左コントローラ3および右コントローラ4とは、どのような装置であってもよく、携帯型のゲーム装置、任意の携帯型電子機器(PDA(Personal Digital Assistant)、携帯電話、パーソナルコンピュータ、カメラ、タブレット等)等であってもよい。
また、上述した説明では情報処理(ゲーム処理)を本体装置2でそれぞれ行う例を用いたが、上記処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、本体装置2がさらに他の装置(例えば、別のサーバ、他の画像表示装置、他のゲーム装置、他の携帯端末)と通信可能に構成されている場合、上記処理ステップは、さらに当該他の装置が協働することによって実行してもよい。このように、上記処理ステップの少なくとも一部を他の装置で行うことによって、上述した処理と同様の処理が可能となる。また、上述した情報処理(ゲーム処理)は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施例においては、本体装置2のCPU81が所定のプログラムを実行することによって情報処理を行うことが可能であるが、本体装置2が備える専用回路によって上記処理の一部または全部が行われてもよい。
ここで、上述した変形例によれば、いわゆるクラウドコンピューティングのシステム形態や分散型の広域ネットワークおよびローカルネットワークのシステム形態でも本発明を実現することが可能となる。例えば、分散型のローカルネットワークのシステム形態では、据置型の情報処理装置(据置型のゲーム装置)と携帯型の情報処理装置(携帯型のゲーム装置)との間で上記処理を協働により実行することも可能となる。なお、これらのシステム形態では、上述した処理をどの装置で行うかについては特に限定されず、どのような処理分担をしたとしても本発明を実現できることは言うまでもない。
また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる条件等は、単なる一例に過ぎず他の順序、値、条件であっても、本実施例を実現できることは言うまでもない。
また、上記プログラムは、外部メモリ等の外部記憶媒体を通じて本体装置2や右コントローラ4に供給されるだけでなく、有線または無線の通信回線を通じて当該装置に供給されてもよい。また、上記プログラムは、当該装置内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施例の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。