以下、本実施形態の一例に係る情報処理システムについて説明する。本実施形態における情報処理システムの一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)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以上のコントローラによって構成可能となる。また、本体装置2から外された左コントローラ3および/または右コントローラ4は、ゲームコントローラとして機能することもでき、この場合、本体装置2がゲーム装置本体として機能する。また、本実施形態において、1つのコントローラ(例えば、右コントローラ4)を拡張入力装置200に装着することによって、拡張入力装置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は、窓部68が設けられているハウジング51の下側面に近いハウジング51の主面の下方部に設けられ、上記近距離無線通信の際にターゲットとなる他の無線通信装置(例えば情報記憶媒体として機能するNFCタグ)が当該下方部と近接または接する位置に配置された場合に、当該無線通信装置と上記近距離無線通信が可能となるハウジング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からの給電によって充電される。また、左コントローラ3が他の装置に装着される場合、バッテリは、端子42を介して他の装置へ給電することもできる。
図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が他の装置(例えば、拡張入力装置200)に装着される場合、バッテリは、端子64を介して他の装置へ給電することもできる。
右コントローラ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の内部に配置された撮像対象(例えば、赤外LED(Light Emitting Diodeが発する赤外光)を撮像するために用いられる。本体装置2および/または右コントローラ4は、撮像された撮像対象の情報(例えば、撮像対象の平均輝度、面積、重心座標等)を算出し、当該情報に基づいて、拡張入力装置200に対して操作された操作内容を判別する。また、赤外撮像部123は、環境光によって撮像を行ったり暗所で撮像を行ったりしてもよいが、本実施例においては、赤外線を照射する赤外発光部124を有する。赤外発光部124は、例えば、赤外線カメラが画像を撮像するタイミングと同期して、赤外線を照射する。そして、赤外発光部124によって照射された赤外線が反射して赤外撮像部123によって受光されることで、赤外線の画像を取得することもできる。なお、赤外撮像部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は、複数の入力キー205を有するキーボード型の入力装置である。そして、ユーザは、拡張入力装置200の入力キー205の何れかを選択して指で入力キー205をタッチ操作または指で入力キー205を押下操作することによって、操作された入力キー205に応じた文字が入力されたり、操作された入力キー205に応じて表示オブジェクト(例えば、カーソル)が移動したり、操作された入力キー205に応じたユーザ指示が実行されたりして、表示装置(例えば、本体装置11のディスプレイ12)に表示される。なお、拡張入力装置200を用いた操作に応じて、仮想空間に配置されたプレイヤオブジェクトが動作するようなゲームが行われてもよいし、各種情報が表示されてもよい。本実施例では、いわゆるキーボードを用いてユーザ入力可能な様々な処理を行うことが可能である。
次に、図9〜図13を参照して、拡張入力装置200の内部構成ついて説明する。なお、図9は、拡張入力装置200の内部に設けられる発光部201および固定部202と当該内部に装着される右コントローラ4の一例を示す図である。図10は、図9の発光部201と右コントローラ4との位置関係の一例を示す図である。図11は、拡張入力装置200の入力キー205の構造例を示す図である。図12は、入力キー205に対する入力操作に応じて赤外LED203を発光させる回路の一例を示す図である。図13は、入力キー205に対する入力操作に応じて赤外LED203を発光させる回路の他の例を示す図である。
図9において、拡張入力装置200の内部空間内には、発光部201および固定部202が設けられている。固定部202は、拡張入力装置200の内部空間内に右コントローラ4を固定可能である。図9の例では、固定部202は、拡張入力装置200の入力キー205が設けられている上面側に当該上面と対向するように右コントローラ4の上面が配置されるように、右コントローラ4を着脱可能に固定する。発光部201は、少なくとも1つ(図9の例では、複数)の赤外LED203を含んでおり、固定部202に固定された右コントローラ4の赤外撮像部123が全ての赤外LED203を撮像可能となる拡張入力装置200の内部空間内に固定される。つまり、固定部202に右コントローラ4が装着された場合、赤外撮像部123の撮像方向となる右コントローラ4のy軸負方向側に発光部201が設けられていることになる。
図10に示すように、発光部201は、固定板204の表面上に複数の赤外LED203を固設し、当該固定板204が拡張入力装置200の内部空間内で斜めになるように固定されている。ここで、斜めとは、複数の赤外LED203が固設された固定板204の表面が拡張入力装置200の上面方向、かつ赤外撮像部123に向く方向であって、拡張入力装置200の上面および赤外撮像部123の撮像方向に対して何れも当該表面が斜めとなる位置関係である。このように、表面上に複数の赤外LED203が固設された固定板204を斜めに固定することによって、当該表面を赤外撮像部123に向けながら、拡張入力装置200における上下方向厚さを薄くすることができる。このように、複数の赤外LED203が固設された固定板204の表面は、固定部202に装着された右コントローラ4の赤外撮像部123と対向する位置となる。したがって、右コントローラ4が固定部202に装着された状態では、赤外撮像部123は、複数の赤外LED203を撮像可能となる。
複数の赤外LED203は、固定板204の表面上にマトリックス状に並設されてもよいが、図10に例示されているようにその配置位置に応じて左右間隔および前後間隔が調整されてもよい。例えば、図10の例では、最も赤外撮像部123側となる最前列に配置されている赤外LED203は、それぞれの左右間隔が距離Wとなるように並設される。そして、赤外LED203は、赤外撮像部123側前方部に配置されている赤外LED203列間隔(例えば、上記最前列と1つ後方となる第2列との間の間隔)が距離2Wとなるように並設される。また、赤外撮像部123に対して後方側の列に配置されている赤外LED203は、それぞれの左右間隔が距離2Wとなるように並設される。そして、赤外LED203は、赤外撮像部123側後方部に配置されている赤外LED203列間隔(例えば、最後列と1つ前方となる列との間の間隔)が距離4Wとなるように並設される。このように、図10の例では、赤外撮像部123側前方部より後方部の方が赤外LED203の前後間隔および左右間隔が広くなるように配置されている。このように、赤外撮像部123側前方部と後方部との配置間隔を変えることによって、赤外撮像部123から遠い箇所に赤外LED203が配置されている場合であっても、隣接する赤外LED203同士が発する赤外光が交ざることを防止することができ、赤外撮像部123が当該赤外光を独立して撮像することができる。なお、後述するように、複数の赤外LED203は、ユーザが入力した入力キー205に応じてそれぞれ赤外光を発するが、赤外撮像部123が撮像する撮像画像の解像度が不足している場合であっても、遠方の赤外LED203の配置間隔を広くすることによって、当該赤外LED203が発する赤外光を正確に判別することができる。
ここで、赤外LED203が発光するための電源は、拡張入力装置200内に設けられていてもよいし、拡張入力装置200に装着される右コントローラ4から電力が供給されてもよい。後者の場合、右コントローラ4の端子64と接続可能な電力供給端子が拡張入力装置200内に設けられ、右コントローラ4が固定部202に装着された際に当該電源供給端子と端子64とが接続される。そして、上記電力供給端子を介して、拡張入力装置200内の各構成要素(例えば、赤外LED203)に右コントローラ4から電力が供給される。
また、図10に示すように、拡張入力装置200の内部空間内における固定部202の近傍には、NFC通信部122の通信対象となるNFCタグ210が備えられている。例えば、右コントローラ4が固定部202に装着された状態で、当該右コントローラ4のアンテナ122aと近接または接する位置にNFCタグ210が設けられている。これによって、右コントローラ4が固定部202に装着されると同時にNFCタグ210との間で近距離無線通信が可能な状態となり、NFCタグ210に拡張入力装置200の種別、固有の識別情報、キャリブレーション情報、ユーザ設定情報等を記憶させておくことによって、右コントローラ4が装着された拡張入力装置200の信頼性や設定状況を確認することができる。
図11に示すように、拡張入力装置200の入力キー205は、それぞれ2つの電極206および207から構成されており、各入力キー205の間および電極206と電極207との間は互いに絶縁されている。そして、ユーザが何れかの入力キー205の上面を指でタッチした場合、当該入力キー205の電極206および207の間がユーザの指によって通電することになり、当該通電を検出することによって、ユーザが入力した入力キー205を検出することができる。
図12に示すように、拡張入力装置200は、電極206および207の間の通電に応じて、当該電極206および207に対応する赤外LED203を照射させて赤外光を発する検出回路を有している。例えば、上記検出回路は、NPN型トランジスタT1を有している。NPN型トランジスタT1のコレクタは、赤外LED203および抵抗Rdを介して、電源Vccに接続されている。また、NPN型トランジスタT1のベースは、電極206および電極207と抵抗Rbとを介して、電源Vccに接続されている。また、NPN型トランジスタT1のエミッタは、接地されている。このような検出回路を用いることによって、電極206および電極207との間が絶縁されている場合は、NPN型トランジスタT1のベース電圧が0となるため、NPN型トランジスタT1のコレクタからエミッタに電流が流れず赤外LED203が点灯しない。一方、電極206および電極207との間がユーザの指を介して通電している場合は、NPN型トランジスタT1のベース電圧が当該通電状態に応じた電圧に上昇するため、NPN型トランジスタT1のコレクタからエミッタに電流が流れて赤外LED203が点灯する。このような、検出回路を入力キー205毎に設けることによって、入力操作された入力キー205に対応する赤外LED203から赤外光を発することができる。
なお、抵抗Rbおよび抵抗Rdの抵抗値を調整することによって、点灯する赤外LED203の光量を調整することができる。例えば、抵抗Rdの抵抗値を小さく設定することによって、当該抵抗Rdに接続されている赤外LED203が点灯する場合の光量を増加させることができる。一例として、赤外撮像部123から遠方に設置されている赤外LED203や赤外撮像部123の注視点から遠い位置に設置されている赤外LED203に接続されている抵抗Rdの抵抗値を小さく設定することによって、赤外撮像部123が撮像する撮像画像においてこれらの赤外LED203が発する赤外光をより認識しやすくなる。
ここで、一般的なキーボードでは、同じ入力を示す入力キー(例えば、Ctrlキー、Shiftキー、Altキー、Winキー等)が設けられている。このように同じ入力を示す複数の入力キーが拡張入力装置200に設けられている場合、何れの入力キーが入力操作されたとしても、同じ赤外LED203が発光するようにしてもよい。
例えば、図13に示すように、上述した同じ入力を示す2つの入力キー205がそれぞれ電極206aおよび207aと電極206bおよび206bとによって構成されているとする。このような場合、検出回路のNPN型トランジスタT1のコレクタは、上記検出回路と同様に、赤外LED203および抵抗Rdを介して、電源Vccに接続されている。また、NPN型トランジスタT1のベースは、電極206aおよび電極207aと抵抗Rbとを介して、電源Vccに接続される回路と、当該回路と並列に電極206bおよび電極207bと抵抗Rbとを介して、電源Vccに接続される回路とを有している。そして、NPN型トランジスタT1のエミッタは、上記検出回路と同様に、接地されている。このような検出回路を用いることによって、電極206aおよび電極207aの間と電極206bおよび電極207bの間との両方が絶縁されている場合は、NPN型トランジスタT1のベース電圧が0となるため、NPN型トランジスタT1のコレクタからエミッタに電流が流れず赤外LED203が点灯しない。一方、電極206aおよび電極207aとの間と電極206bおよび電極207bの間との少なくとも一方がユーザの指を介して通電している場合は、NPN型トランジスタT1のベース電圧が当該通電状態に応じた電圧に上昇するため、NPN型トランジスタT1のコレクタからエミッタに電流が流れて赤外LED203が点灯する。このような、検出回路を同じ入力を示す入力キー205に対して設けることによって、何れの入力キー205が入力操作された場合であっても同じ赤外LED203が赤外光を発することになる。
なお、上述した拡張入力装置200の例では、1つの入力キー205を2つの電極206および207によって構成することによって当該入力キー205に対する操作入力を検出しているが、他の態様によって入力キー205に対する操作入力を検出してもよい。第1の例として、1つの入力キー205に1つの一方電極を構成し、拡張入力装置200において入力キー205が設けられていない上面部(例えば、上面の外縁部)を他方電極として構成する。このように電極を構成することによって、ユーザが上記他方電極と掌が接する状態でキー入力することによって、入力する入力キー205(一方電極)と他方電極とがユーザの手を介して通電するため、当該通電を検出することによって同様に赤外LED203を発光させることができる。第2の例として、1つの入力キー205に1つの一方電極を構成し、ユーザの身体の一部と有線接続する端子を他方電極として構成する。このように電極を構成しても、ユーザが身体の一部に上記他方電極を接続した状態でキー入力することによって、入力する入力キー205(一方電極)と他方電極とがユーザの身体を介して通電するため、当該通電を検出することによって同様に赤外LED203を発光させることができる。
次に、図14を参照して、拡張入力装置を用いる他の例として、拡張入力装置250を用いたユーザ操作について説明する。図14は、ユーザが拡張入力装置250を用いてゲーム操作を行う様子の一例を示す図である。本実施例においても、拡張入力装置250には右コントローラ4を装着することが可能であり、拡張入力装置250に装着された右コントローラ4から送信されるデータに基づいて、拡張入力装置250に対する操作内容に応じた処理が実行される。そして、拡張入力装置250に対する操作内容も、赤外撮像部123によって撮像された撮像画像に基づいて検出される。したがって、拡張入力装置250は、ユーザによる入力や操作の検出結果を本体装置2へ送信する電子回路等の電気的構成を必要としないため、拡張入力装置250の構成を簡易化することができる。
例えば、本実施例では、図14に示すように、拡張入力装置250は、複数の操作面255a、255b、255x、および255yと、操作ボタン255sと、マイク257mとを有する太鼓型コントローラである。そして、ユーザは、複数の操作面255a、255b、255x、および255yの少なくとも1箇所を叩いたり、声や拍子の音をマイク257mに入力したり、操作ボタン255sを押下操作したりすることによって、操作内容に応じてプレイヤキャラクタPCが動作して、表示装置(例えば、本体装置11のディスプレイ12)に表示される。なお、拡張入力装置250を用いた操作に応じて、仮想空間に配置された仮想オブジェクトが変化するような処理が行われてもよいし、操作タイミングの一致度が判定されてもよいし、各種情報が表示されてもよく、様々なゲーム処理や情報処理が行われることが考えられる。
次に、図15および図16を参照して、拡張入力装置250の内部構成ついて説明する。なお、図15は、複数の操作面255a、255b、255x、および255yと、操作ボタン255sとに対する操作に応じて赤外LED253を発光させる回路の一例を示す図である。図16は、マイク257mに対する音声入力に応じて赤外LED253を発光させる回路の例を示す図である。
ここで、図9および図10を用いて説明した拡張入力装置200と同様に、拡張入力装置250の内部空間内には、複数の赤外LED253を有する発光部および右コントローラ4を装着する固定部が設けられている。つまり、拡張入力装置250の内部空間内においても、右コントローラ4が固定部に装着されることによって、赤外撮像部123は、複数の赤外LED253を撮像可能となる。また、拡張入力装置250の内部空間内における固定部の近傍にも、拡張入力装置200と同様に、NFC通信部122の通信対象となるNFCタグが備えられており、右コントローラ4が固定部に装着されると同時に当該NFCタグとの間で近距離無線通信が可能な状態となる。
図15に示すように、拡張入力装置250の複数の操作面255a、255b、255x、および255yは、それぞれスイッチ256a、256b、256x、および256yが内蔵されている。スイッチ256a、256b、256x、および256yは、複数の操作面255a、255b、255x、および255yが操作されていない状態ではオフ状態であり、複数の操作面255a、255b、255x、および255yが叩かれることによってそれぞれオン状態となる。また、操作ボタン255sは、スイッチ256sが内蔵されている。スイッチ256sは、操作ボタン255sが押下操作されていない状態ではオフ状態にあり、操作ボタン255sが押下操作されることによってオン状態となる。
拡張入力装置250は、スイッチ256a、256b、256x、256y、および256sのオン/オフ状態に応じて、当該スイッチに対応する赤外LED253を照射させて赤外光を発する検出回路を有している。例えば、上記検出回路は、スイッチ256a、赤外LED253a、および抵抗Rを介して、電源Vccが接地される回路を有している。また、上記検出回路は、スイッチ256b、赤外LED253b、および抵抗Rを介して、電源Vccが接地される回路を有している。また、上記検出回路は、スイッチ256x、赤外LED253x、および抵抗Rを介して、電源Vccが接地される回路を有している。また、上記検出回路は、スイッチ256y、赤外LED253y、および抵抗Rを介して、電源Vccが接地される回路を有している。さらに、上記検出回路は、スイッチ256s、赤外LED253s、および抵抗Rを介して、電源Vccが接地される回路を有している。これらの検出回路を用いることによって、スイッチ256a、256b、256x、256y、および256sがオフ状態の場合、それぞれのスイッチに接続されている赤外LED253a、253b、253x、253y、および253sが点灯しない。一方、スイッチ256a、256b、256x、256y、または256sがオン状態の場合、それぞれのスイッチに接続されている赤外LED253a、253b、253x、253y、または253sが点灯する。このような、検出回路を操作部毎に設けることによって、操作された操作面や操作ボタンに対応する赤外LED253が赤外光を発することができる。
また、図16に示すように、拡張入力装置250は、マイク257mに対する音声入力の音量に応じて、異なる赤外LED253を照射させて赤外光を発する検出回路を有している。例えば、上記検出回路は、マイク257mと3つの赤外LED253m1、253m2、および253m3と3つのコンパレータCom1、Com2、およびCom3とが少なくとも接続されている。赤外LED253m1は、電源Vccに接続されるとともに、所定の抵抗を介してコンパレータCom1の出力端子に接続される。コンパレータCom1の+入力端子は、可変抵抗RS1を介して電源Vccが接続される。そして、コンパレータCom1の−入力端子には、マイク257mの出力に応じた電圧が入力され、マイク257mの出力に応じた電圧が+入力端子の電圧より高くなった場合にコンパレータCom1の出力端子の出力が高レベルの電圧から低レベルの電圧に変化する。また、赤外LED253m2は、電源Vccに接続されるとともに、所定の抵抗を介してコンパレータCom2の出力端子に接続される。コンパレータCom2の+入力端子は、可変抵抗RS2を介して電源Vccが接続される。そして、コンパレータCom2の−入力端子には、コンパレータCom1の−入力端子と同じマイク257mの出力に応じた電圧が入力され、マイク257mの出力に応じた電圧が+入力端子の電圧より高くなった場合にコンパレータCom2の出力端子の出力が高レベルの電圧から低レベルの電圧に変化する。さらに、赤外LED253m3は、電源Vccに接続されるとともに、所定の抵抗を介してコンパレータCom3の出力端子に接続される。コンパレータCom3の+入力端子は、可変抵抗RS3を介して電源Vccが接続される。そして、コンパレータCom3の−入力端子には、コンパレータCom1やCom2の−入力端子と同じマイク257mの出力に応じた電圧が入力され、マイク257mの出力に応じた電圧が+入力端子の電圧より高くなった場合にコンパレータCom3の出力端子の出力が高レベルの電圧から低レベルの電圧に変化する。
このように、マイク257mの出力に応じた電圧が変化した場合、+入力端子の入力電圧との比較に基づいて3つのコンパレータCom1、Com2、およびCom3の出力端子の出力レベルが変化することになる。したがって、コンパレータCom1、Com2、およびCom3それぞれの+入力端子の入力電圧が異なるように調整することによって、それぞれの出力端子において出力レベルが変化するマイク257mの出力電圧が調整される。上記検出回路では、可変抵抗RS1、RS2、およびRS3の値を調整することによって、コンパレータCom1、Com2、およびCom3それぞれの+入力端子の入力電圧を調整することが可能であり、それぞれ異なる抵抗値となるように調整される。
ここで、コンパレータCom1、Com2、およびCom3の出力端子の出力が高レベルである場合、その電位差が極めて小さくなるために赤外LED253m1、253m2、および253m3は点灯しない。一方、コンパレータCom1、Com2、およびCom3の出力端子の出力が低レベルである場合、その電位差が大きくなるために赤外LED253m1、253m2、および253m3が点灯する。つまり、可変抵抗RS1、RS2、およびRS3の値が異なるように調整されることによって、赤外LED253m1、253m2、および253m3がそれぞれ点灯するマイク257mの出力電圧が異なることになる。したがって、上記検出回路では、マイク257mの出力電圧、すなわちマイク257mに入力された音量に応じて、異なる赤外LED253が段階的に点灯していくことになる。
このように、拡張入力装置250は、複数の操作面255a、255b、255x、および255yと、操作ボタン255sとに対する操作に応じて、赤外LED253a、253b、253x、253y、および253sを点灯/消灯させる。また、拡張入力装置250は、マイク257mに入力された音量(すなわち、入力量や操作量)に応じて、赤外LED253m1、253m2、および253m3を段階的に点灯/消灯させる。そして、赤外LED253a、253b、253x、253y、253s、253m1、253m2、および253m3が発する赤外光を赤外撮像部123によって撮像することによって、当該撮像画像から拡張入力装置250に対する操作内容や入力内容を判別することができる。
なお、上述した拡張入力装置200の例においても、拡張入力装置250と同様に各入力キー205にスイッチを設けてもかまわない。押下操作された場合にオン状態となるスイッチを各入力キー205に設けることによって、拡張入力装置250と同様の回路構成によって拡張入力装置200の検出回路を構成することも可能である。
また、上述した実施例では、キーボード型の拡張入力装置と太鼓型コントローラの拡張入力装置を用いたが、他の態様の操作装置、入力装置、コントローラ等であっても同様に実現できることは言うまでもない。例えば、ギター等の弦楽器、オカリナや笛等の気鳴楽器、ピアノ等の鍵盤楽器等を模した楽器型のコントローラを拡張入力装置としてもよい。一例として、ギターを模した楽器型コントローラに適用する場合、上述した入力キー205と同様にユーザがタッチしているフレットを検出するとともに、ユーザが弦をピッキングした振動をマイクで検出することによって当該マイクへ入力された振動の振幅をマイク257mと同様に検出することが考えられる。他の例として、オカリナを模した楽器型コントローラに適用する場合、上述した入力キー205と同様にユーザがタッチしている孔を検出するとともに、ユーザが吹き込んだ息をマイクで検出することによって当該マイクへ入力された息の量をマイク257mと同様に検出することが考えられる。
また、ユーザが載って操作するマット型コントローラやボード型コントローラを拡張入力装置としてもよい。例えば、ボード型コントローラに入力された荷重値を荷重センサによって検出している場合、当該荷重値を表すデジタル情報を赤外LEDの点灯/消灯で表現して、当該赤外LEDの点灯/消灯を赤外撮像部123によって撮像することが考えられる。例えば、上記荷重値を示すデジタル情報が16ビットで表される場合、16個の赤外LEDを用意して各ビットの値を各ビットに対応する赤外LEDを点灯/消灯することによって当該デジタル情報を表現することができる。
次に、図17および図18を参照して、赤外撮像部123が撮像した撮像画像から算出する撮像対象の情報について説明する。なお、図17は、第1モード(クラスタリングモード)において算出する撮像対象の情報の一例を説明するための図である。図18は、第2モード(モーメントモード)において算出する撮像対象の情報の一例を説明するための図である。
図17において、第1モードでは、赤外撮像部123が撮像した撮像画像の中から高輝度画素の塊(クラスタ)を検出し、当該撮像画像における当該クラスタの位置やサイズを算出する。例えば、図17に示すように、赤外撮像部123が撮像した撮像画像全体または当該撮像画像から情報を算出する撮像画像の一部領域(後述する解析ウインドウ)に対して、所定の座標軸(例えば、横方向をX軸、縦方向をY軸とする座標軸)を設定する。そして、上記座標軸が設定された画像から、所定の閾値以上の輝度を有する画素が隣接している画素群を抽出し、当該画素群が所定の範囲内のサイズ(第1閾値以上、かつ、第2閾値以下のサイズ)であればクラスタであると判定する。例えば、拡張入力装置200内で発光している赤外LED203や拡張入力装置250内で発光している赤外LED253が撮像された撮像画像の場合、赤外光を発光している赤外LED203や赤外LED253が高輝度画素として抽出されて、それぞれクラスタとして判定されることになる。そして、上記第1モードでは、このように抽出されたクラスタの総数が算出されるとともに、各クラスタの平均輝度、面積(画素数)、重心座標、および外接長方形が算出され、これらの算出結果が撮像対象の情報として算出される。
上記第1モードによって算出された撮像対象の情報は、右コントローラ4から本体装置2へ送信され、本体装置2において受信した撮像対象の情報に基づいて点灯している赤外LEDを判定することができる。例えば、本体装置2は、各クラスタの重心座標を用いて、点灯している赤外LEDの位置を算出することが可能であり、当該点灯している赤外LEDの位置に基づいて、拡張入力装置に対して行われているユーザ入力やユーザ操作を判定することができる。
なお、上記第1モードにおいて、各クラスタの位置(重心座標や外接長方形の位置)を算出する際、撮像画像において設定された基準位置を基準として算出してもよい。このような基準位置を基準として各クラスタの位置を算出することによって、各クラスタの位置、向き、形状等を精度よく検出することができる。
一例として、上記基準位置は、発光している基準赤外LEDの位置(例えば、基準赤外LEDが撮像されている高輝度画素の重心座標)に設定してもよい。具体的には、拡張入力装置200や拡張入力装置250に右コントローラ4を装着した状態でユーザに対して所定の初期設定操作を促すことにより赤外LED203の何れか1つまたは赤外LED253の何れか1つ(すなわち、基準赤外LED)を点灯させ、当該初期設定操作において点灯した基準赤外LEDが撮像されている位置を上記基準位置に設定してもよい。この場合、上記基準位置に基づいて、撮像画像全体または撮像画像の一部領域となる解析ウインドウに対して上記座標軸が設定されてもよい。また、上記基準の赤外LEDが撮像された位置と当該赤外LEDが撮像されるべき位置との差分値を算出して、今後の位置算出に用いる補正値として当該差分値を設定してもよい。なお、上記初期設定操作は、拡張入力装置200や拡張入力装置250の製造工程において行ってもよい。この場合、上記製造工程において設定された基準位置に関する情報は、拡張入力装置200や拡張入力装置250に設けられているNFCタグに記憶されてもよい。また、ユーザによって上記初期設定操作が行われる場合であっても、当該ユーザ初期設定操作によって設定された基準位置に関する情報も、拡張入力装置200や拡張入力装置250に設けられているNFCタグに記憶されてもよい。
他の例として、上記基準位置は、ユーザ入力および/またはユーザ操作に応じて点灯する赤外LEDとは異なる所定の被撮像物における撮像位置に設定してもよい。具体的には、上述した赤外LED203や赤外LED253とは別に、他の赤外LEDや再帰性反射の特性を有する材質で予め定められた形状で構成された基準マーカを、赤外LED203や赤外LED253との位置関係が予め定められた位置に設け、当該基準マーカの位置を上記基準位置として機能させる。そして、赤外撮像部123の撮像画像を解析する際に、基準マーカとして点灯している赤外LEDの位置や、当該撮像画像に対してパターンマッチングを用いた画像処理によって得られる基準マーカの位置を算出する。
図18において、第2モードでは、赤外撮像部123が撮像した撮像画像を複数のブロックに分割し、ブロック毎の平均輝度や重心位置を算出する。例えば、図18に示すように、赤外撮像部123が撮像した撮像画像全体または当該撮像画像から情報を算出する撮像画像の一部領域(後述する解析ウインドウ)に所定の座標軸(例えば、横方向をX軸、縦方向をY軸とする座標軸)を設定するとともに、当該座標軸が設定された画像を所定のブロック(例えば、8×6の48ブロック)に分割する。そして、各ブロックにおいて所定の閾値以上の輝度を有する画素を処理対象として、各ブロックの輝度の総和、各ブロックの横方向輝度の一次モーメント、および各ブロックの縦方向輝度の一次モーメントが算出され、これらの算出結果が撮像対象の情報として算出される。例えば、各ブロックの輝度の総和は、各ブロック内の画素が有する輝度を全画素について合計した値であり、当該総和を当該ブロックの画素数で除算することによって当該ブロックの平均輝度が得られるパラメータである。また、各ブロックの横方向輝度の一次モーメントは、各ブロック内の画素が有する輝度に当該画素のX軸方向位置を乗算した値を全画素について合計した値であり、当該ブロックの横方向輝度の一次モーメントを当該ブロックの輝度の総和で除算することによって当該ブロックにおける輝度の横方向重心位置が得られるパラメータである。また、各ブロックの縦方向輝度の一次モーメントは、各ブロック内の画素が有する輝度に当該画素のY軸方向位置を乗算した値を全画素について合計した値であり、当該ブロックの縦方向輝度の一次モーメントを当該ブロックの輝度の総和で除算することによって当該ブロックにおける輝度の縦方向重心位置が得られるパラメータである。
なお、これら第1モードにおける撮像対象の情報や第2モードにおける撮像対象の情報は、右コントローラ4内で算出されて本体装置2へ送信される。したがって、赤外撮像部123が撮像した撮像画像そのものを示すデータを送信する場合と比較すると、本体装置2へ送信するデータ量を削減することができるとともに、本体装置2側における処理負荷も低減することができる。また、撮像対象の情報のデータ量が小さいため、右コントローラ4から送信する他の操作データに含ませて当該撮像対象の情報を本体装置2へ送信することも可能であり、右コントローラ4と本体装置2との間の通信処理自体も簡素に構成することができる。また、本実施例においては、複数の赤外LEDの点灯/消灯を撮像対象とした撮像画像を用いて算出された第1モードまたは第2モードによる情報を本体装置2へ送信することが可能であり、当該撮像対象の情報を用いて拡張入力装置に対するユーザ入力やユーザ操作を判別することができる。つまり、拡張入力装置の種類に応じて、複数の赤外LEDの配置数や配置位置が異なる場合であっても、同様の撮像画像から第1モードまたは第2モードによる撮像対象の情報を算出して本体装置2へ送信することができるため、拡張入力装置の種別毎に新しいデータフォーマットを用意しなくとも、同じデータフォーマット(すなわち、上記第1モードや上記第2モードによる撮像対象のデータ)を用いて様々な種類の拡張入力装置を追加することができる。
次に、図19および図20を参照して、本実施形態において右コントローラ4で実行される具体的な処理の一例について説明する。図19は、本実施形態において右コントローラ4のメモリ(例えば、処理部121に含まれるメモリ)において設定されるデータ領域の一例を示す図である。なお、上記右コントローラ4のメモリには、図19に示すデータの他、他の処理で用いられるデータも記憶されるが、詳細な説明を省略する。また、後述する右コントローラ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は、上記解析ウインドウ内の画像から抽出されたクラスタの数を示すデータである。
次に、本実施形態における撮像画像の撮像結果に基づく情報を算出する処理(以下、単に情報算出処理と記載する)の詳細な一例を説明する。図20は、処理部121のCPUで実行される情報算出処理の一例を示すフローチャートである。本実施形態においては、図20に示す一連の処理は、処理部121のCPUが各種プログラムPsに含まれる情報算出プログラム等を実行することによって行われる。また、図20に示す情報算出処理が開始されるタイミングは任意である。
なお、図20に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。また、本実施形態では、上記フローチャートの各ステップの処理を処理部121のCPUが実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、処理部121のCPU以外のプロセッサや専用回路が実行するようにしてもよい。また、右コントローラ4において実行される処理の一部は、右コントローラ4と通信可能な他の情報処理装置(例えば、本体装置2や本体装置2とネットワークを介して通信可能なサーバ)によって実行されてもよい。すなわち、図20に示す各処理は、右コントローラ4を含む複数の情報処理装置が協働することによって実行されてもよい。
図20において、処理部121のCPUは、情報算出処理における初期設定を行い(ステップS141)、次のステップに処理を進める。例えば、上記初期設定において、処理部121のCPUは、以下に説明する処理を行うためのパラメータを初期化する。また、上記初期設定において、処理部121のCPUは、右コントローラ4が装着されている拡張入力装置の種別や識別情報を必要に応じて設定する。例えば、本体装置2、左コントローラ3、または右コントローラ4を用いて、ユーザが拡張入力装置の種別を選択する操作や基準位置を設定するための初期設定操作を行うことによって、拡張入力装置の種別が初期設定されたり、キャリブレーションが行われたりしてもよい。また、他の例として、NFC通信部122を介して、右コントローラ4が拡張入力装置に設けられた通信対象と近距離無線通信が可能である場合、当該通信対象から拡張入力装置の種別、識別情報、およびキャリブレーション情報を取得することによって、拡張入力装置の種別、識別情報、およびキャリブレーション情報が初期設定されてもよい。
また、上記初期設定において、処理部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は、上記解析ウインドウ内の画像において撮像対象(例えば、発光している赤外LED)が撮像された高輝度画素の塊(クラスタ)であると認識する最小サイズを示す値である。また、第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が示す抽出画素群の重心位置を算出し、上記解析ウインドウ内の画像における当該重心位置を示す座標値(例えば、図17に例示したXY座標値)を用いて、上記ステップS148において設定されたクラスタに対応するクラスタデータDseにおける重心座標データDse3を更新する。また、処理部121のCPUは、抽出画素群データDsdが示す抽出画素群に外接、かつ、上記解析ウインドウ内の画像に対する所定方向の辺(例えば、図17に例示したX軸またはY軸に平行な辺)を有する長方形を設定し、当該長方形において対向する2つの頂点の位置を示すそれぞれの座標値(例えば、図17に例示したXY座標値)を用いて、上記ステップS148において設定されたクラスタに対応するクラスタデータDseにおける外接長方形データDse4を更新する。
一方、ステップ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は、上記データを本体装置2へ送信する際、拡張入力装置に設けられた通信対象から取得した拡張入力装置の種別、識別情報、およびキャリブレーション情報等を示すデータを含ませてもよい。
次に、処理部121のCPUは、情報算出処理を終了するか否かを判定する(ステップS154)。上記ステップS154において情報算出処理を終了する条件としては、例えば、本体装置2から情報算出処理を終了する指示を受領したことや、ユーザが情報算出処理を終了する操作を行ったこと等がある。処理部121のCPUは、情報算出処理を終了しない場合に上記ステップS142に戻って処理を繰り返し、情報算出処理を終了する場合に当該フローチャートによる処理を終了する。以降、ステップS142〜ステップS154の一連の処理は、ステップS154で情報算出処理を終了すると判定されるまで繰り返し実行される。
次に、図21および図22を参照して、本実施形態において本体装置2で実行される具体的な処理の一例について説明する。図21は、本実施形態において本体装置2のDRAM85に設定されるデータ領域の一例を示す図である。なお、DRAM85には、図21に示すデータの他、他の処理で用いられるデータも記憶されるが、詳細な説明を省略する。また、後述する本体装置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等が記憶される。
操作データDaは、右コントローラ4からそれぞれ適宜取得した操作データである。上述したように、右コントローラ4から送信される操作データには、各入力部(具体的には、各ボタン、アナログスティック、各センサ)からの入力に関する情報(具体的には、操作に関する情報、または、センサによる検出結果)と、赤外撮像部123の撮像画像の撮像結果に基づく情報が含まれている。また、右コントローラ4が拡張入力装置に設けられた通信対象から拡張入力装置の種別、識別情報、およびキャリブレーション情報等を取得している場合、当該情報が右コントローラ4から送信される操作データに含まれていることもある。本実施形態では、無線通信によって右コントローラ4から所定周期で操作データが送信されており、当該受信した操作データを用いて操作データDaが適宜更新される。なお、操作データDaの更新周期は、後述する本体装置2で実行される処理の周期である1フレーム毎に更新されてもよいし、上記無線通信によって操作データが送信される周期毎に更新されてもよい。操作データDaは、クラスタデータDa1、クラスタ数データDa2、およびNFCデータDa3を含んでいる。クラスタデータDa1は、右コントローラ4の処理部121において算出されたクラスタ毎の情報を示すデータである。クラスタ数データDa2は、右コントローラ4の処理部121において抽出されたクラスタの数を示すデータである。NFCデータDa3は、右コントローラ4が拡張入力装置に設けられた通信対象から取得した拡張入力装置の種別、識別情報、およびキャリブレーション情報等を示すデータである。
操作内容データDbは、クラスタデータDa1およびクラスタ数データDa2に基づいて算出された、拡張入力装置(例えば、拡張入力装置200)を用いた操作内容を示すデータである。
入力文字データDcは、上記操作内容に基づいて設定されるユーザ入力に応じた入力文字を示すデータである。
画像データDdは、情報処理の際に表示装置(例えば、本体装置2のディスプレイ12)に画像(例えば、ユーザが入力した文字を示す画像、背景画像等)を表示するためのデータである。
次に、本実施形態における情報処理(例えば、文字入力処理)の詳細な一例を説明する。図22は、本体装置2で実行される情報処理の一例を示すフローチャートである。本実施形態においては、図22に示す一連の処理は、CPU81が各種プログラムPaに含まれる通信プログラムや所定のアプリケーションプログラム(例えば、文字入力プログラム)を実行することによって行われる。また、図22に示す情報処理が開始されるタイミングは任意である。
なお、図22に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。また、本実施形態では、上記フローチャートの各ステップの処理をCPU81が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、CPU81以外のプロセッサや専用回路が実行するようにしてもよい。また、本体装置2において実行される処理の一部は、本体装置2と通信可能な他の情報処理装置(例えば、本体装置2とネットワークを介して通信可能なサーバ)によって実行されてもよい。すなわち、図22に示す各処理は、本体装置2を含む複数の情報処理装置が協働することによって実行されてもよい。
図22において、CPU81は、情報処理における初期設定を行い(ステップS161)、次のステップに処理を進める。例えば、上記初期設定では、CPU81は、以下に説明する処理を行うためのパラメータを初期化する。
次に、CPU81は、右コントローラ4から操作データを取得して操作データDaを更新し(ステップS162)、次のステップに処理を進める。例えば、CPU81は、右コントローラ4から取得した操作データに応じて、クラスタデータDa1、クラスタ数データDa2、およびNFCデータDa3を更新する。
次に、CPU81は、認証キャリブレーション処理を行い(ステップS163)、次のステップに処理を進める。例えば、上記認証キャリブレーション処理において、CPU81は、右コントローラ4が装着されている拡張入力装置200の種別や識別情報を設定する。一例として、CPU81は、拡張入力装置200に設けられた通信対象から拡張入力装置200の種別および識別情報を取得している場合、NFCデータDa3における拡張入力装置200の種別および識別情報を参照して、拡張入力装置200の種別や識別情報を認証する。他の例として、本体装置2、左コントローラ3、または右コントローラ4が装着された拡張入力装置200を用いて、ユーザが拡張入力装置200の種別や識別情報を選択する操作を行う場合、当該操作結果に基づいて拡張入力装置200の種別や識別情報が認証される。なお、当該認証処理は、右コントローラ4側で行われてもかまわない。
また、上記認証キャリブレーション処理において、CPU81は、ユーザ初期設定操作によるキャリブレーション結果や右コントローラ4が装着されている拡張入力装置の通信対象から取得したキャリブレーション情報に基づいて、以降の処理におけるキャリブレーションを行う。一例として、拡張入力装置200に設けられた通信対象から基準位置に関する情報を取得している場合、NFCデータDa3における基準位置に関する情報を参照して、今後の位置算出に用いる補正値を設定する。他の例として、右コントローラ4が装着された拡張入力装置200を用いて、所定のユーザ初期設定操作が行われる場合、当該ユーザ初期設定操作によって設定された基準位置に関する情報に基づいて、今後の位置算出に用いる補正値を設定する。なお、当該キャリブレーション処理は、右コントローラ4側で行われてもかまわない。この場合、右コントローラ4において解析ウインドウに対する座標軸が設定される際に、上記基準位置に関する情報に基づいて当該座標軸が設定されてもよい。
次に、CPU81は、右コントローラ4から操作データを取得して操作データDaを更新し(ステップS164)、次のステップに処理を進める。例えば、CPU81は、右コントローラ4から取得した操作データに応じて、クラスタデータDa1およびクラスタ数データDa2を更新する。
次に、CPU81は、赤外撮像部123の撮像画像から抽出されたクラスタ毎の重心座標および平均輝度に基づいて、拡張入力装置200を用いた入力内容を算出し(ステップS165)、次のステップに処理を進める。例えば、CPU81は、上記ステップS164において更新されたクラスタデータDa1およびクラスタ数データDa2が示すクラスタ毎の重心座標および平均輝度とクラスタの数とに基づいて、拡張入力装置200を用いた操作内容を算出する。一例として、CPU81は、所定の閾値以上の平均輝度を有するクラスタを点灯している赤外LED203が撮像されているとして判定する。また、CPU81は、上記ステップS163におけるキャリブレーションが反映された当該クラスタの重心座標に基づいて、複数の赤外LED203のうち点灯している赤外LED203を特定する。そして、CPU81は、点灯していると特定された赤外LED203に対応する入力キー205が、ユーザによって入力操作されたと判定し、当該入力操作された内容を用いて操作内容データDbを更新する。
次に、CPU81は、拡張入力装置200を用いた入力内容に基づいて、ユーザが入力した入力文字を設定し(ステップ166)、次のステップに処理を進める。例えば、CPU81は、操作内容データDbを参照して、ユーザが入力操作した入力キー205を取得し、当該入力キー205に応じた入力文字を設定して、入力文字データDcを更新する。なお、ユーザが拡張入力装置200を用いて文字入力とは異なる指示(例えば、文字を消去する指示、文字を変換する指示、文字を確定する指示、文字種を変更する指示、文字やカーソル等の表示物を移動させる指示、所定の処理を行う指示等)を入力した場合、当該指示内容を用いて入力文字データDcを更新してもよい。ユーザの指示内容を判別する方法については、キーボード入力に基づいてユーザ指示を判別する一般的な方法を用いればよい。
次に、CPU81は、表示装置に入力文字を表示する処理を行い(ステップS167)、次のステップに処理を進める。例えば、CPU81は、入力文字データDcに基づいてユーザが入力した文字を適宜更新し、当該更新した後の文字を表示装置(例えば、本体装置11のディスプレイ12)に表示する処理を行う。
次に、CPU81は、入力を終了するか否かを判定する(ステップS168)。上記ステップS168において入力を終了する条件としては、例えば、上記入力を終了する条件が満たされたことや、ユーザが入力を終了する操作を行ったこと等がある。CPU81は、入力を終了しない場合に上記ステップS164に戻って処理を繰り返し、入力を終了する場合に当該フローチャートによる処理を終了する。以降、ステップS164〜ステップS168の一連の処理は、ステップS168で入力を終了すると判定されるまで繰り返し実行される。
このように、本実施例においては、拡張入力装置に対するユーザ入力やユーザ操作に応じて、当該拡張入力装置に設けられた赤外LEDが点灯/消灯する。そして、拡張入力装置に対するユーザ入力やユーザ操作は、当該拡張入力装置に装着されている右コントローラ4の赤外撮像部123によって赤外LEDが撮像された撮像画像に基づいて検出される。したがって、拡張入力装置は、ユーザによる入力内容や操作内容を本体装置2へ送信する電子回路等の電気的構成を必要としない。そのため、本実施例によれば、拡張入力装置の構成を簡易化することができる。また、本実施例においては、複数の赤外LEDが点灯/消灯を撮像することによって、拡張入力装置に対するユーザ入力やユーザ操作を判別することができるため、新しいデータフォーマットを用意しなくとも赤外撮像部123の解像度や処理能力が許す限り、同じ所定のデータフォーマット(例えば、上記第1モードや上記第2モードによって生成されるデータ)を用いて様々な種類の拡張入力装置を追加することができる。また、本実施例においては、右コントローラ4から本体装置2へ送信されるデータは、当該撮像画像に撮像されたクラスタの位置に関するデータ等、赤外撮像部123が撮像した撮像画像そのものを示すデータではない。したがって、右コントローラ4から本体装置2へ送信されるデータ量を削減することが可能となる。
なお、上述した実施例において、右コントローラ4から本体装置2へ送信する撮像画像に基づいたデータは、赤外撮像部123が撮像した撮像画像そのものを示すデータでもよい。この場合、右コントローラ4から本体装置2へ送信されるデータ量が増加することが考えられるが、本体装置2側において、上記撮像画像に関する様々な解析処理を行うことが可能となる。
また、上述した実施例では、拡張入力装置に対するユーザ入力やユーザ操作に応じて、1つの赤外LEDが消灯状態から点灯状態に変化しているが、赤外LEDの点灯状態が他の態様によって変化してもよい。例えば、拡張入力装置に対してユーザが所定の入力や所定の操作を行うことによって、1つの赤外LEDが点灯状態から消灯状態に変化してもよい。また、拡張入力装置に対してユーザが所定の入力や所定の操作を行うことによって、複数の赤外LEDが消灯状態から点灯状態に変化してもよい。このように点灯状態に変化する赤外LEDが複数ある場合、当該点灯状態に変化する複数の赤外LEDの組み合わせに基づいて、ユーザ入力やユーザ操作を判定することが可能となる。
また、上述した実施例では、赤外LEDの点灯/消灯に基づいて、拡張入力装置に対するユーザ入力やユーザ操作を判別しているが、他の態様によってユーザ入力やユーザ操作を判別してもよい。例えば、DMD(デジタルミラーデバイス)や透過型LCD(例えば、赤外バックライト)等に対するオン/オフ制御を用いて、拡張入力装置に対するユーザ入力やユーザ操作を判別してもよい。また、上述した実施例では、ユーザの身体と電極との接触やユーザがスイッチをオン/オフすることに応じて赤外LEDを点灯/消灯する例を用いたが、ユーザ入力やユーザ操作の有無を検出する他の検出方法を用いてもよい。第1の例として、所定波長の光を発するLEDと、ユーザの身体(例えば、ユーザの指)で当該LEDが発する光が反射した場合に当該所定波長の反射光を受光するフォトダイオードとを設ける。この場合、上記フォトダイオードが上記所定波長の反射光を受光した場合に点灯する赤外LEDを設けて、当該赤外LEDの点灯/消灯を右コントローラ4の赤外撮像部123で撮像することによって、上記LEDおよび上記フォトダイオード付近の空間におけるユーザ身体の有無やユーザ身体の動き(例えば、ユーザ身体の脈動)を判定することができる。第2の例として、赤外LEDが発光した赤外光を一方端からそれぞれ伝送して他方端からそれぞれ外部に照射する第1光ファイバ群と、当該他方端から照射された赤外光の何れかがユーザの身体(例えば、ユーザの指)で反射した場合に当該反射赤外光を一方端の何れかで受光する第2光ファイバ群とを設ける。この場合、上記第2光ファイバ群の他方端の何れかから照射される反射赤外光を右コントローラ4の赤外撮像部123で撮像することによって、上記第1光ファイバ群の他方端および上記第2光ファイバ群の一方端のいずれかの付近の空間におけるユーザ身体の有無やユーザ身体の動き(例えば、ユーザ身体の脈動)を判定することができる。第3の例として、静電容量タッチセンサ等の近接センサが物体(例えば、ユーザの身体)を検出した場合に点灯する赤外LEDを設け、当該赤外LEDの点灯/消灯を右コントローラ4の赤外撮像部123で撮像することによって、上記近接センサによって物体が検出されているか否かを判定することができる。
また、上述した実施例では、赤外LEDの点灯/消灯に基づいて、拡張入力装置に対するユーザ入力やユーザ操作を判別しているが、赤外LEDが点灯している明るさも用いて、ユーザ入力やユーザ操作を判別してもよい。例えば、赤外LEDの点灯/消灯に基づいて、上述したデジタル情報の各ビットの数値、ユーザ操作量(例えば、ボタンを押下する押下量または押下力や操作レバーを傾倒させる傾倒量等)、またはユーザ入力量(例えば、マイク入力した音量、振動入力した振幅等)を表現する場合、赤外LEDが点灯している明るさ(例えば、上記第1モードにおけるクラスタの平均輝度や外接長方形のサイズ)も用いることによって、さらに当該赤外LEDを撮像した撮像画像によって示すことができる情報量を増やすことができる。この場合、単一の赤外LEDを撮像する場合であっても、複数のユーザ入力やユーザ操作を判別することが可能となる。
上述した実施例では、赤外LEDから照射される赤外光を赤外撮像部123で撮像する例を用いたが、他の波長の光を用いてもよい。例えば、特定の波長の光(例えば、可視光)を照射する発光部と、当該発光部が発する光を撮像可能な撮像部とを用いても、同様に拡張入力装置に対するユーザ入力やユーザ操作を判別可能であることは言うまでもない。
また、上述した実施例において、赤外撮像部123によって赤外LEDが撮像された撮像画像だけでなく、拡張入力装置に装着された右コントローラ4の動きや姿勢を用いて、当該拡張入力装置を用いたユーザ入力やユーザ操作を検出してもかまわない。例えば、拡張入力装置に装着された右コントローラ4の動きや姿勢を、当該右コントローラ4に生じる加速度で算出、当該右コントローラ4に生じる角速度で算出、または当該右コントローラ4に生じる角速度と加速度とを組み合わせて算出する。この場合、拡張入力装置に装着された右コントローラ4の動きや姿勢に基づいて、当該拡張入力装置をユーザが操作している姿勢(例えば、ギターを模した楽器型の拡張入力装置のネック部分を左手で持つ姿勢または右手で持つ姿勢)を判別したり、拡張入力装置本体を傾けたり動かしたりする操作を検出したり、拡張入力装置本体を向けている方向を検出したりすることができる。
また、本体装置2と左コントローラ3および右コントローラ4とは、どのような装置であってもよく、携帯型のゲーム装置、任意の携帯型電子機器(PDA(Personal Digital Assistant)、携帯電話、パーソナルコンピュータ、カメラ、タブレット等)等であってもよい。
また、上述した説明では情報処理(例えば、文字入力処理やゲーム処理)を本体装置2でそれぞれ行う例を用いたが、上記処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、本体装置2がさらに他の装置(例えば、別のサーバ、他の画像表示装置、他のゲーム装置、他の携帯端末)と通信可能に構成されている場合、上記処理ステップは、さらに当該他の装置が協働することによって実行してもよい。このように、上記処理ステップの少なくとも一部を他の装置で行うことによって、上述した処理と同様の処理が可能となる。また、上述した情報処理は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施例においては、本体装置2のCPU81が所定のプログラムを実行することによって情報処理を行うことが可能であるが、本体装置2が備える専用回路によって上記処理の一部または全部が行われてもよい。
ここで、上述した変形例によれば、いわゆるクラウドコンピューティングのシステム形態や分散型の広域ネットワークおよびローカルネットワークのシステム形態でも本発明を実現することが可能となる。例えば、分散型のローカルネットワークのシステム形態では、据置型の情報処理装置(据置型のゲーム装置)と携帯型の情報処理装置(携帯型のゲーム装置)との間で上記処理を協働により実行することも可能となる。なお、これらのシステム形態では、上述した処理をどの装置で行うかについては特に限定されず、どのような処理分担をしたとしても本発明を実現できることは言うまでもない。
また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる条件等は、単なる一例に過ぎず他の順序、値、条件であっても、本実施例を実現できることは言うまでもない。
また、上記プログラムは、外部メモリ等の外部記憶媒体を通じて本体装置2や右コントローラ4に供給されるだけでなく、有線または無線の通信回線を通じて当該装置に供給されてもよい。また、上記プログラムは、当該装置内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD−ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施例の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。