(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0009】
以下、本発明の一実施形態について図面に基づき詳細に説明する。
【0010】
図1は、本発明の一実施形態に係る情報処理システムの一例であるゲームシステム10の全体構成図である。
図1に示すように、本実施形態に係るゲームシステム10は、本実施形態に係る情報処理装置の一例であるゲーム装置12、スピーカ等が内蔵された、家庭用テレビ受像機等のディスプレイ14、ステレオカメラ16、本実施形態に係る操作入力装置の一例であるコントローラ18(18−1〜18−m)、を含んでいる。
【0011】
本実施形態では、ゲーム装置12とディスプレイ14とは、ケーブル(例えば、AVケーブルや、HDMI(登録商標)(High-Definition Multimedia Interface)ケーブル等)を介して接続されている。また、ゲーム装置12とステレオカメラ16とは、ケーブル(例えば、USBケーブルや、AVケーブルや、HDMIケーブル等)を介して接続されている。
【0012】
ゲーム装置12は、例えば、ゲーム装置12にインストールされるプログラムに従って動作するMPU(Micro Processing Unit)等の制御部、ROMやRAM等の記憶素子やハードディスクドライブなどである記憶部、GPU(Graphical Processing Unit)とフレームバッファとから構成される画像処理部、SPU(Sound Processing Unit)とサウンドバッファとから構成される音声処理部、インターネット上のサーバ(図示せず)や、コントローラ18などとの間で、有線又は無線によりデータの送受信を行う、ネットワークボードや無線LANモジュールなどである通信部、DVD−ROMやBlu−ray(登録商標)ディスクなどの光ディスク(コンピュータ読み取り可能な情報記憶媒体)を読み取る光ディスクドライブ、USB(Universal Serial Bus)ポート、HDMIポート等を含んでいる。これらの要素は互いにバスを介して相互にデータ授受可能に接続される。
【0013】
画像処理部に含まれるGPUは、制御部から供給される画像データに基づいて、画像処理部に含まれるフレームバッファに各種画面を描画する。フレームバッファに形成された画面は、所定のタイミングでビデオ信号に変換されてディスプレイ14に出力される。
【0014】
音声処理部に含まれるサウンドバッファには、光ディスクやハードディスクから読み出されたゲーム音楽、ゲーム効果音やメッセージなどの各種音声データが記憶される。音声処理部に含まれるSPUは、これらの各種音声データを再生して、例えば、ディスプレイ14に内蔵されているスピーカや、コントローラ18に内蔵されているスピーカから出力させる。
【0015】
ステレオカメラ16は、左右に並べて配置された、レンズ及び撮像素子などを含んで構成されるデジタルカメラのそれぞれが、所定時間(例えば、1/60秒)ごとに、画像を撮像して、ゲーム装置12に出力する。
【0016】
コントローラ18は、本実施形態における操作入力装置であり、ユーザがコントローラ18に対して行った操作に応じた信号を、ゲーム装置12に送信する。コントローラ18は、方向キー、ボタン、タッチセンサ、アナログスティック、スピーカ、コントローラ18の姿勢や動きの検出に利用される種々のセンサ(加速度センサ、ジャイロセンサ、など)や、バッテリなどを内蔵している。
【0017】
また、コントローラ18は、ゲーム装置12と通信可能となっている。
図1に示すように、コントローラ18は、ゲーム装置12と無線通信(例えば、Bluetooth(登録商標)等の通信規格に従った無線通信)によって接続されるが、コントローラ18が、ゲーム装置12と有線通信によって接続されていてもよい。
【0018】
本実施形態に係るゲーム装置12の制御部は、所定時間(例えば1/60秒)ごとにコントローラ18の各部の状態をスキャンして、ユーザによって行われた操作の内容をスキャンした状態に基づいて判断する。なお、ゲーム装置12は、複数のコントローラ18を接続可能に構成されており、各コントローラ18から入力される操作状態に基づいて、制御部が各種処理を実行するようになっている。
【0019】
図2Aは、本実施形態に係るコントローラ18の上側を臨む外観の一例を示す斜視図である。
図2Bは、本実施形態に係るコントローラ18の前側を臨む外観の一例を示す斜視図である。
【0020】
図2A及び
図2Bに示すように、本実施形態に係るコントローラ18は、その左部及び右部に、ユーザが保持するための被保持部をそれぞれ有している。左側の被保持部の上面には、方向キーが配置されている。右側の被保持部の上面には、ボタンが配置されている。また、本実施形態に係るコントローラ18は、右側の被保持部の上面以外にも、様々なボタンが配置されている。
【0021】
また、左側の被保持部の前部と右側の被保持部の前部とを連結する中央部の上面には、パネルと、タッチセンサと、を含む板状操作部材22が配置されている。パネルは、タッチセンサの全体を覆っており、タッチセンサは、パネルの下面(裏面)に取り付けられている。タッチセンサは、検出面(本実施形態では、板状操作部材22の上面)上における物体(ユーザの指やスタイラス等)の位置を検出可能なセンサであり、物体の検出位置に応じた信号を出力する。コントローラ18は、当該信号をゲーム装置12に送信する。
【0022】
タッチセンサは、本実施形態では、例えば、静電容量式のセンサである。また、タッチセンサは、いわゆるマルチタッチが可能となっており、検出面上の物体の位置を複数同時に検出できるようになっている。また、板状操作部材22は、ユーザの押下操作に応じて上下動できるように支持されている。コントローラ18は、板状操作部材22が押されたことを検出するスイッチを有し、板状操作部材22は、オン/オフ操作が可能なボタンとして機能する。
【0023】
図2Bに示すように、左側の被保持部の前部と右側の被保持部の前部とを連結する中央部の前面には発光部24が設けられている。発光部24は、左側の被保持部の突出部と右側の被保持部の突出部との間に位置している。また、発光部24は、左右方向に細長い形状を有している。
図2Bの例では、発光部24は直線的に伸びる棒状である。なお、発光部24の形状はこれに限られず、例えばV字形状でもよいし、弧状に湾曲してもよい。
【0024】
本実施形態に係るゲーム装置12は、ステレオカメラ16を通して、発光部24の光を取得する。ゲーム装置12は、ステレオカメラ16を通して取得した画像に対して画像処理を行い、取得した画像における発光部24の位置や大きさに基づいて、コントローラ18の位置を検出する。
【0025】
発光部24は任意の色で光ることができる。例えば発光部24は、赤色、緑色、及び、青色の発光体(例えば、発光ダイオード)を含み、各発光体の輝度を調節することで、ゲーム装置12が指定する色や、コントローラ18の動作状態に応じた色で光る。このため、複数のコントローラ18が同時に使用される場合であっても、ゲーム装置12は各コントローラ18の位置を検出できる。
【0026】
また、本実施形態に係るコントローラ18は、左側の被保持部の前部と右側の被保持部の前部とを連結する中央部にスピーカが内蔵されている。そして、当該中央部の上面の、スピーカに対応する位置には、通音孔が形成されている。なお、通音孔の位置に、スピーカとともに、又は、スピーカの代わりに、マイクが配置されていてもよい。
【0027】
以下、本実施形態においてゲーム装置12が実現する機能について、
図3の機能ブロック図を用いて説明する。同図に示すように、ゲーム装置12は、機能的に、撮像画像取得部50と、顔検出部52と、操作受付部54と、表示画像生成部56と、を含んで構成されている。これらの機能は、ゲーム装置12内の記憶部に格納されたプログラムを制御部が実行することにより実現される。このプログラムは、インターネット等の通信回線を介してゲーム装置12に提供されてもよいし、光ディスク等の情報記憶媒体に格納されてゲーム装置12に提供されてもよい。これらの機能により、ゲーム装置12はユーザの操作に応じたゲーム処理を実現し、その処理結果をディスプレイ14の画面に表示する。特に本実施形態では、ユーザは、コントローラ18又はユーザ自身の手を動かして画面内のいずれかの位置を指定する操作を行う。以下では、このような操作をポインティング操作という。ユーザがポインティング操作を自身の手を用いて行うか、それともコントローラ18を用いて行うかは、ゲーム装置12が実行するゲームの種類や設定に応じて決定される。ゲーム装置12は、ユーザのポインティング操作によって指定された画面内の位置に応じたゲーム処理を実行する。
【0028】
撮像画像取得部50は、ステレオカメラ16によって撮像された撮像画像を取得する。前述したようにステレオカメラ16は左右に並んだ二つのデジタルカメラを含んで構成されており、これら二つのデジタルカメラのそれぞれが画像を撮像する。撮像画像取得部50は、これら二つのデジタルカメラによって撮像された二つの撮像画像のうち、一方を基準画像Ic1、他方を比較用画像Ic2として取得する。基準画像Ic1は、後述する顔検出部52及び操作受付部54による処理の対象として使用される。比較用画像Ic2は、基準画像Ic1内における距離分布のデータを生成するために用いられる。二つのデジタルカメラで同じ被写体を撮像しても、視差によって、当該被写体の基準画像Ic1内における位置と比較用画像Ic2内における位置との間にはずれが生じる。撮像画像取得部50は、このずれを測定することによって、ステレオカメラ16の位置から被写体までの距離を特定することができる。具体的に撮像画像取得部50は、基準画像Ic1を複数のブロックに分割し、各ブロックについて、比較用画像Ic2を用いて当該ブロックに写っている被写体までの距離を測定する。このようにして撮像画像取得部50は、基準画像Ic1内における被写体の距離分布を示すデータを生成する。
【0029】
顔検出部52は、撮像画像取得部50が取得した基準画像Ic1の中から人の顔を検出し、基準画像Ic1内における顔位置FPを特定する。顔検出部52が基準画像Ic1に対して顔の検出を行う具体的なアルゴリズムは、公知のものであってよい。なお、基準画像Ic1の中から複数の顔が検出された場合、顔検出部52は実際にゲームをプレイ中のユーザと検出された顔との対応関係を決定する必要がある。例えば一人用のゲームを実行中の場合、顔検出部52は基準画像Ic1の中心に最も近い位置で検出された顔をユーザの顔として特定してもよい。あるいは、基準画像Ic1に含まれる顔の中で最も大きな顔をユーザの顔として特定してもよい。また、前述した被写体の距離分布のデータを用いて、最もステレオカメラ16に近い位置(すなわち、最も手前側)にある顔をユーザの顔として特定してもよい。また、N人用のゲームを実行中の場合、中心に近い順、大きさが大きな順、又は距離が近い順にN個の顔を、ゲームをプレイ中のユーザの顔として特定してもよい。
図4は、ユーザU1の顔を含んだ基準画像Ic1の一例を示している。この図において顔検出部52は、ユーザU1の顔を検出し、検出された顔の中心の位置座標を顔位置FPとして特定する。
【0030】
操作受付部54は、ユーザからの操作を受け付けて、受け付けた操作の内容を示す情報を表示画像生成部56に対して出力する。特に本実施形態では、操作受付部54は、ユーザがポインティング操作によって指定する画面内の位置を特定し、その位置座標を表示画像生成部56に対して出力する。その際に操作受付部54は、顔検出部52によって検出された基準画像Ic1内の顔位置FPを基準位置として使用し、この顔位置FPに応じて決まる基準画像Ic1内の位置に操作領域OAを設定する。そして、操作領域OAの中から検出対象とする物体の位置を検出し、当該物体の位置に対応する画面内の位置を、ユーザが指定する位置として取得する。以下では、操作領域OA内において検出対象物が検出された位置を検出位置DPといい、検出位置DPに対応する画面内の位置を指定位置PPという。この指定位置PPが、ポインティング操作によってユーザが指定する位置となる。操作領域OAは基準画像Ic1内に設定される領域であるが、指定位置PPは画面内の位置である。そのため操作受付部54は、操作領域OA内の検出位置DPを画面内の指定位置PPに変換する必要がある。なお、検出対象物(操作受付部54が検出対象とする物体)は、ユーザが動かして位置の指定に用いることができる物体であればよく、ユーザ自身の手などユーザの体の一部であってもよいし、ユーザが手で把持するコントローラ18であってもよい。以下では具体例として、ユーザの一方の手が検出対象物である場合について説明する。
【0031】
以下、操作受付部54が指定位置PPを取得する方法の具体例について、説明する。まず操作受付部54は、顔位置FPを用いて操作領域OAを基準画像Ic1内に設定する。具体的に、操作領域OAは顔位置FPの下方に設定される。ユーザは自分の顔より下の範囲内で自分の手を動かしてポインティング操作を行うと想定されるからである。操作領域OAの大きさは、予め定められた大きさであってもよいし、検出された顔の大きさやステレオカメラ16から検出された顔までの距離に応じて決定されてもよい。例えば操作受付部54は、検出された顔の大きさが大きいほど、あるいは顔までの距離が短いほど、操作領域OAが大きくなるように操作領域OAの大きさを決定する。ユーザがステレオカメラ16の近くにいるほど、ユーザが自分の手を動かす範囲は基準画像Ic1内の比較的広い範囲に及ぶと考えられるからである。同様に、顔位置FPから操作領域OAの中心までの距離も、予め定められた値であってもよいし、検出された顔の大きさ、又は検出された顔までの距離に応じて決定されてもよい。このようにして操作領域OAは、顔検出部52が検出したユーザの顔を基準として、そのユーザが検出対象物(ここではユーザの手)を動かすと想定される範囲に対応するように設定されることになる。操作領域OAの形状は、指定可能領域PA(ディスプレイ14の画面内においてポインティング操作による位置の指定が可能な領域)の形状と対応するよう決定される。この指定可能領域PAは、ディスプレイ14の画面全体であってもよいし、画面内の一部の領域(例えば画面内に表示されているウィンドウ)であってもよい。また、操作領域OAの形状は、指定可能領域PAの形状と同一であってもよいし、指定可能領域PAの縦横比を変化させた形状であってもよい。
図4に示すように、操作領域OAの形状は矩形であってよい。なお、
図4では操作領域OAの上端はユーザの顔より下方に配置されているが、操作領域OAはユーザの顔の一部又は全部と重なる領域であってもよい。
【0032】
また、
図4の例では操作領域OAは顔位置FPの真下に設定されており、操作領域OAの中心位置のX座標と顔位置FPのX座標とは一致している。しかしながら、操作領域OAは顔位置FPに対して左右どちらかにずれた位置に設定されてもよい。特に操作受付部54は、ユーザが左右どちらの手をポインティング操作に使用するかに応じて、操作領域OAの位置を変化させてもよい。具体的に、例えば操作受付部54は、ユーザが右手を使用してポインティング操作を行う場合、基準画像Ic1内において顔位置FPよりも左寄りの位置(ユーザから見て右寄りの位置)を中心に操作領域OAを設定し、ユーザが左手を使用してポインティング操作を行う場合には、顔位置FPよりも右寄りの位置を中心に操作領域OAを設定する。このとき操作受付部54は、予め定められた距離だけ操作領域OAの中心位置を顔位置FPから左右にずらしてもよいし、検出された顔の大きさに応じた距離だけ操作領域OAの中心位置を左右にずらしてもよい。あるいは操作受付部54は、距離分布データを用いて、ユーザが右手を使用する場合にはユーザの右肩の位置を、左手を使用する場合には左肩の位置を特定し、当該特定された肩の位置に中心のX座標が一致するように操作領域OAの位置を決定してもよい。ユーザが左右どちらの手を使用しているかは、例えば以下のようにして特定できる。すなわち、まず操作受付部54は、ユーザがポインティング操作を開始する際に、後述する検出位置DPの特定処理と同様に距離分布データを用いてユーザの手の位置を検出する。そして、検出されたユーザの手の位置が顔位置FPより右手寄りであればユーザが右手を使用していると判定し、左手寄りであればユーザが左手を使用していると判定する。これにより操作受付部54は、ユーザが使用するのが左右どちらの手なのかに合わせて、操作領域OAを設定することができる。あるいはゲーム装置12は、ポインティング操作の開始時に「左手を前に伸ばしてください」などのメッセージをディスプレイ12の画面に表示することにより、ユーザに特定の手を意図的に使用させてもよい。この例では操作受付部54は、ユーザが左手を使用してポインティング操作を行うと想定できるので、ユーザの左手寄りの位置に操作領域OAを設定すればよい。
【0033】
次に操作受付部54は、操作領域OAの中から検出対象物を検出し、その位置(検出位置DP)を特定する。例えば操作受付部54は、前述した距離分布のデータを用いて、操作領域OA内において最もステレオカメラ16の近くに存在する物体の位置を検出位置DPとして特定する。ユーザは自身の手を前方に出してポインティング操作を行うので、操作領域OAの範囲内でユーザの手は他の物体よりも前方(ステレオカメラ16の近く)に位置すると考えられるからである。
図4においては、ユーザの右手の位置が検出位置DPとして特定されている。
【0034】
最後に操作受付部54は、検出位置DPの操作領域OA内における相対位置座標を用いて、指定位置PPの指定可能領域PA内における位置座標を算出する。ここで、検出位置DPの相対位置座標とは、操作領域OAの一点を原点位置とした場合の検出位置DPの位置座標である。例えば検出位置DPは、
図4に示すように、操作領域OAの左上の隅を原点としてX座標DPx及びY座標DPyによって表される。ここで、操作領域OAの横幅をOAw、高さをOAhとし、画面内の指定可能領域PAの横幅をPAw、高さをPAhとする。この場合、指定位置PPの指定可能領域PA内におけるX座標PPx及びY座標PPyは、以下の計算式により算出される。
PPx=(DPx/OAw)・PAw
PPy=(DPy/OAh)・PAh
操作受付部54は、このX座標PPx及びY座標PPyを、指定位置PPの情報として表示画像生成部56に対して出力する。なお、基準画像Ic1がステレオカメラ16からユーザを見る方向で撮像された画像であるのに対して、表示画像はその逆向きにユーザによって観覧される。そのため、指定可能領域PA内の位置座標と操作領域OAの位置座標との対応関係は左右反転させる必要がある。具体的に、操作領域OAのX座標DPxが操作領域OAの左上隅を原点、向かって右方向を正方向として表される場合、指定位置PPのX座標PPxは、指定可能領域PAの右上隅を原点、向かって左方向を正方向として表される。
【0035】
表示画像生成部56は、操作受付部54が出力する操作内容を示す情報を用いてゲーム処理を実行し、その実行結果を示す表示画像を生成する。生成された表示画像は、ゲーム装置12のフレームバッファに描画され、ディスプレイ14の画面に表示される。特に本実施形態では、表示画像生成部56は、ユーザがポインティング操作によって指定した指定位置PPに現在表示されているオブジェクト(表示要素)に応じた処理を実行する。例えば
図5では、複数のオブジェクト(表示要素)O1〜O3が配置された3次元空間内の様子を示す画像がディスプレイ14の画面に表示されており、この画面全体が指定可能領域PAになっている。ここで、
図5に示すように指定位置PPがオブジェクトO1に重なる状態が一定時間以上続いた場合、表示画像生成部56は、ユーザがポインティング操作によってオブジェクトO1を選択したと判断する。そして、この選択に応じてオブジェクトO1の状態を変化させるなどの処理を実行し、その結果を反映した表示画像を表示する。例えば表示画像生成部56は、ユーザが自分の手を動かして指定位置を移動させた場合に、その軌跡に沿ってオブジェクトO1を移動させる処理を行う。さらに、オブジェクトO1を選択した状態でユーザが表示画像の中に設定された目標領域内に指定位置を移動させ、指定位置PPが目標領域内に含まれる状態を一定時間以上維持した場合、選択されたオブジェクトO1を目標領域に表示されたオブジェクトにぶつける表示を行ってもよい。なお、表示画像生成部56は、現在の指定位置PPを示すマーカー画像を画面に表示させてもよい。こうすればユーザは指定位置PPがどこかを確認しながらポインティング操作を行うことができ、任意の位置を指定しやすくなる。
【0036】
以下、ユーザがポインティング操作を行う場合にゲーム装置12が実行する処理の流れの一例について、
図6のフロー図を用いて説明する。
【0037】
まず撮像画像取得部50が、ステレオカメラ16によって撮像された二つの撮像画像、すなわち基準画像Ic1と比較用画像Ic2を取得する(S1)。そして、S1で取得した二つの撮像画像を用いて、被写体の距離分布データを生成する(S2)。
【0038】
次に顔検出部52が、S1で取得された基準画像Ic1の中からユーザの顔を検出する(S3)。操作受付部54は、S3で検出されたユーザの顔位置FPを用いて、基準画像Ic1内に操作領域OAを設定する(S4)。さらに操作受付部54は、S2で生成された距離分布データを用いて、S4で設定された操作領域OA内のピーク位置を検出位置DPとして特定する(S5)。このピーク位置は、操作領域OA内において被写体が最もステレオカメラ16に近くなっている位置であって、このピーク位置がユーザの手の位置と想定される。
【0039】
次いで操作受付部54は、S5で特定された検出位置DPの操作領域OA内における相対位置座標を用いて、操作可能領域PA内における指定位置PPの位置座標を算出し、表示画像生成部56に対して出力する(S6)。表示画像生成部56は、S6で算出された指定位置PPの位置座標をユーザからの操作入力として用いてゲーム処理を実行し、新たな表示画像を生成する(S7)。このゲーム処理は、画面内の指定位置PPに現在表示されているオブジェクトに対するユーザの操作を反映したものになる。S7で生成された表示画像は、ディスプレイ14の画面に表示される。
【0040】
ゲーム装置12は、以上説明したS1からS7の処理を例えばディスプレイ14の1フレームレートが経過するごとに実行する。
【0041】
以上説明したポインティング操作は、複数のユーザが同時に行うこともできる。
図7は、この場合における基準画像Ic1の一例を示している。この図の例では、ユーザU1とユーザU2の二人がステレオカメラ16によって撮像されている。顔検出部52は、この基準画像Ic1の中からユーザU1の顔位置FP1とユーザU2の顔位置FP2とを検出する。そして操作受付部54は、顔位置FP1の位置に基づいて操作領域OA1を基準画像Ic1内に設定し、その中からユーザU1の手の位置を検出位置DP1として検出する。同様に、顔位置FP2の位置に基づいて操作領域OA2を基準画像Ic1内に設定し、その中からユーザU2の手の位置を検出位置DP2として検出する。最後に操作受付部54は、検出位置DP1の操作領域OA1内における相対位置座標を用いて操作可能領域PA内における指定位置PP1の位置座標を算出し、検出位置DP2の操作領域OA2内における相対位置座標を用いて操作可能領域PA内における指定位置PP2の位置座標を算出する。このようにしてゲーム装置12は、ユーザU1による指定位置PP1の指定、及びユーザU2による指定位置PP2の指定を同時に受け付けることができる。ここで、操作領域OA1及びOA2は基準画像Ic1内において互いに別の位置に設定されるが、指定位置PP1及びPP2はいずれも同じ指定可能領域PA内の位置として算出される。そのため二人のユーザは、互いに離れた位置でそれぞれ自分の体の前で手を動かせば、同じ指定可能領域PA内の位置を指定するポインティング操作を行うことができる。
【0042】
また、以上の説明ではユーザは自分の手を用いてポインティング操作を行うこととした。しかしながら、これに限らずユーザはコントローラ18を用いてポインティング操作を行ってもよい。この場合ユーザは、コントローラ18の発光部24をステレオカメラ16の方に向けてコントローラ18を手で把持し、自分の体の前でコントローラ18を動かしてポインティング操作を行う。操作受付部54は、顔位置FPに基づいて基準画像Ic1内に操作領域OAを設定した後、操作領域OAの中から発光部24が発する光の位置を検出する。この光の位置が、検出位置DPとなる。なお、複数のユーザがそれぞれコントローラ18を把持してポインティング操作を行う場合、前述したように複数のコントローラ18が互いに異なる色で発光部24を発光させることにより、ゲーム装置12はそれぞれのコントローラ18の位置を区別して検出できる。また、ユーザはコントローラ18に限らず、例えば小型の表示画面を備えた携帯型デバイスを手で持ってポインティング操作を行ってもよい。この場合、携帯型デバイスが所定の符号画像を画面に表示した状態で、ユーザはその画面をステレオカメラ16に向けて携帯型デバイスを把持し、携帯型デバイスの位置を動かしてポインティング操作を行う。これに応じてゲーム装置12の操作受付部54は、操作領域OA内に写っている符号画像をパターン認識処理によって検出し、検出位置DPを特定する。
【0043】
本実施形態に係るゲーム装置12は、ポインティング操作に限らずユーザから各種の操作入力を受け付け、これに応じてディスプレイ14の画面に各種の表示を行うことができる。以下では、このようなゲーム装置12の表示処理の具体例について説明する。
【0044】
例えば表示画像生成部56は、指定位置PPだけでなく、顔位置FPに応じて表示画像を更新してもよい。具体的に表示画像生成部56は、顔位置FPの基準画像Ic1内における移動に応じて仮想三次元空間内に設定される視点の位置を移動させ、当該視点から見た仮想三次元空間内の様子を示す表示画像を生成してもよい。また、撮像画像取得部50が生成する距離分布データを用いることにより、顔検出部52はユーザの顔の上下左右の動きだけでなく、前後の動き(すなわち、ステレオカメラ16からユーザの顔までの距離の変化)も特定することができる。表示画像生成部56は、このようにして特定されたユーザの顔の前後の動きに応じて、視点位置を前後に移動させてもよい。こうすれば、ユーザがステレオカメラ16の前で上下前後左右のどの方向に自分の顔を移動させた場合であっても、表示画像生成部56は、その動きに合わせて仮想三次元空間内における視点の位置を移動させることができる。これにより、ユーザは自分が実際に仮想三次元空間内にいるかのような感覚を体験することができる。なお、ゲーム装置12が複数人プレイ用のゲームを実行しており、基準画像Ic1内にユーザの顔が複数存在する場合、表示画像生成部56は複数の顔の中から選択された一つの顔(例えば基準画像Ic1内において最も高い位置にある顔)を基準として視点を移動させてもよい。さらに表示画像生成部56は、ユーザの顔位置FPや指定位置PP、ユーザがコントローラ18に対して入力する操作内容だけでなく、ユーザが発する音に基づいて表示画像を更新してもよい。この場合、例えばステレオカメラ16に音の発生した方向を特定可能な集音デバイス(マイクロフォンアレイなど)が搭載される。表示画像生成部56は、ユーザが手を叩いたり声をあげたりした場合、集音デバイスにより集音された音声を用いて音が発せられた方向を特定し、当該方向に応じたゲーム処理(例えば音が発生した方向に向けてオブジェクトを移動させるなど)を実行する。そして、当該ゲーム処理の内容を反映した表示画像を生成し、ディスプレイ14に表示させる。
【0045】
また、表示画像生成部56は、撮像画像取得部50によって取得された基準画像Ic1そのものに各種のオブジェクト(表示要素)を配置して表示画像を生成してもよい。さらにこの例において、操作受付部54は、ユーザのコントローラ18に対する操作を受け付けるとともに、基準画像Ic1内における当該コントローラ18の位置を発光部24からの光を検出することによって特定する。そして表示画像生成部56は、コントローラ18に対するユーザの操作内容に応じて画面に表示させるオブジェクトの位置を、当該コントローラ18の基準画像Ic1内における位置に基づいて決定する。これにより、ユーザがディスプレイ14の画面に写っている自分の姿を見ながら手元のコントローラ18に対する操作を行うと、画面内で自分が操作を行ったコントローラ18の位置を基準として表示画像の更新が行われる。そのためユーザは、より直接的に画面内のオブジェクトに対する操作を行っている感覚を得ることができる。
【0046】
このような処理の具体例として、表示画像生成部56は、ユーザがメニューを呼び出す操作をコントローラ18に対して行った場合に、メニューをコントローラ18の位置に対応する位置に表示してもよい。
図8はこの場合の表示例を示している。この図の例では、ユーザがコントローラ18に設けられたメニュー表示用のボタンを押下した場合に、当該操作を受け付けた操作受付部54が基準画像Ic1の中からコントローラ18の位置を検出する。そして、表示画像生成部56は検出されたコントローラ18の位置の上方に複数のメニュー項目を含んだメニュー画像Mを基準画像Ic1と重ねて表示画像を生成する。
【0047】
また、表示画像生成部56は、コントローラ18に対してユーザが操作を行った場合に、コントローラ18の表示位置からオブジェクトが飛び出す様子を画面に表示してもよい。
図9はこの場合の表示例を示しており、この例では、コントローラ18の板状操作部材22をユーザが操作した場合に、表示画像生成部56は基準画像Ic1内に写っているコントローラ18からオブジェクトO4が飛び出す様子を示す動画像を生成し、ディスプレイ14の画面に表示する。なお、図中における破線の矢印はオブジェクトO4の画面内における軌道を示しており、同図に示すように、オブジェクトO4はコントローラ18の位置を起点として画面内に表れる。さらにその後、コントローラ18から飛び出したオブジェクトO4から所定の距離まで近づくようにコントローラ18をユーザが移動させて特定の操作ボタンを押下すると、画面内のコントローラ18にオブジェクトO4が吸い込まれる様子を表示してもよい。また、オブジェクトO4が鳴き声やエンジン音などの音を立てる演出を行う場合、コントローラ18からオブジェクトO4が飛び出している間はディスプレイ14に設けられたスピーカからオブジェクトO4の音を再生し、オブジェクトO4がコントローラ18に吸い込まれた後はコントローラ18に設けられたスピーカからオブジェクトO4の音を再生してもよい。このような演出により、ユーザはオブジェクトO4を直接現実世界で操作しているのに近い感覚を得ることができる。このような制御を用いると、例えばユーザがコントローラ18をシャンパンのボトルに見立てて左右に振り、その後に板状操作部材22でスライド操作を行うことで、表示画像内におけるコントローラ18の位置からシャンパンが吹き出す様子を表示するなどの演出を行うことができる。このとき、ユーザがコントローラ18を左右に振る動きは、発光部24が発する光の動きやコントローラ18に内蔵されたセンサの出力により特定される。さらにこの場合、ユーザがコントローラ18を振る動きやユーザによる板状操作部材24の操作に応じて、コントローラ18が内蔵するスピーカから音を出したり内蔵するモータにより振動を起こしたりすることで、よりリアリティのある演出を行うことができる。
【0048】
また、基準画像Ic1内に複数の顔が写っている場合に、表示画像生成部56は、コントローラ18を操作しているユーザの顔が複数の顔のうちのどれかをコントローラ18の位置を用いて特定し、特定されたユーザの顔に対して画像処理を実行してもよい。基準画像Ic1内には、コントローラ18を手で持っているユーザのほかに、単にゲームを観戦している他の人の顔が写ることがある。その場合一般には、顔画像から個人を特定する顔認識技術を用いなければ、どれがユーザの顔かを識別することは困難である。しかしながら本実施形態では、コントローラ18の基準画像Ic1内における位置を特定することが可能なので、このコントローラ18の位置と対応する位置に存在する顔を、ユーザの顔として判別することができる。より具体的に、顔検出部52が複数の顔を検出した場合、操作受付部54は、基準画像Ic1内に含まれる発光部24の光を検出することによって、現在使用されているコントローラ18の位置を特定する。そして、顔検出部52によって検出された複数の顔のうち、コントローラ18の位置の上方に位置する顔を、コントローラ18を使用しているユーザの顔であると判定する。ユーザが上体を大きく傾けているのでない限り、コントローラ18は当該コントローラ18を持っているユーザの顔の下方に存在すると考えられるからである。こうしてユーザの顔が特定されれば、当該ユーザの顔に対して何らかの画像処理を施して画面に表示するなどの処理が可能になる。
【0049】
なお、以上の説明では一人のユーザが自分の持っているコントローラ18に対して操作を行うことを想定しているが、複数のユーザがそれぞれコントローラ18を所持して操作を行う場合であっても、以上説明したような表示処理を行うことができる。この場合ゲーム装置12は、予め各コントローラ18に他のコントローラ18とは異なる識別番号を割り当てるとともに、各コントローラ18の発光部24を他のコントローラ18とは異なる色で発光させる指示を行う。そして、各コントローラ18に割り当てた識別番号と、当該コントローラ18に指示した発光色との対応関係を示すテーブルを記憶しておく。その後、いずれかのコントローラ18から操作入力を受け付けた場合、このテーブルを用いて操作入力を行ったコントローラ18の識別番号に対応する色を特定し、当該色で発光している発光部24の位置を、当該コントローラ18の位置として特定する。このようにすれば、複数のユーザが同時にコントローラ18を持ってゲームをプレイしている場合にも、各ユーザの操作を受け付けた場合に、当該操作を行ったユーザが持っているコントローラ18の位置や当該操作を行ったユーザの顔の位置を特定することができる。
【0050】
図10は、二人のユーザU1及びU2とその他の観覧者が基準画像Ic1に写っている場合に、ユーザU1及びU2それぞれの顔を特定し、当該特定した顔に対して画像処理を施す場合の例を示している。この図の例では、ユーザU1が識別番号1を割り当てられたコントローラ18−1を所持し、ユーザU2が識別番号2を割り当てられたコントローラ18−2を所持している。そして、操作受付部54は、発光色によってコントローラ18−1及び18−2それぞれの位置を特定し、コントローラ18−1の上方にある顔F1をユーザU1の顔、コントローラ18−2の上方にある顔F2をユーザU2の顔として特定する。そして、ユーザU1及びU2のうち、現在実行中のゲームにおいてより成績がよいユーザ(
図10の例ではユーザU2)の顔に対して、王冠Cをかぶせた様子を示す表示画像を生成し、画面に表示する。なお、複数のユーザのうち、成績がよいユーザではなく成績が悪いユーザの顔に対して、何らかの画像処理を実行してもよい。
【0051】
また、表示画像生成部56は、基準画像Ic1にオブジェクトを重ねて表示画像を生成する場合に、表示画像内におけるコントローラ18の位置と、表示中のオブジェクトと、の間の位置関係に応じて各種の処理を実行してもよい。例えば操作対象のオブジェクトがコントローラ18の位置から所定の距離範囲内にある場合と所定の距離範囲外にある場合とで、ユーザのコントローラ18に対する操作に応じたオブジェクトの挙動を変化させてもよい。
【0052】
また、表示画像生成部56は、表示画像内に写っているユーザの手と表示画像内に配置されたオブジェクトとの間の距離に応じて、オブジェクトの挙動を制御してもよい。この場合においてユーザの手の位置は、前述したように基準画像Ic1の距離分布データを用いて指定位置PPとして特定できる。例えば表示画像生成部56は、ユーザの手を中心に表示画像内に所定の領域を設定し、当該領域外にオブジェクトが表示されている場合には、そのオブジェクトをユーザの手に向かって移動させ、当該領域内にオブジェクトが入った場合には、そのオブジェクトの移動を停止させてもよい。また、自身の手とオブジェクトとが重なるようにユーザが手を動かした場合、オブジェクトが指定位置PPから離れるような制御を行ってもよい。さらに表示画像生成部56は、手の動き(時間変化)をモニタし、その動きに応じてオブジェクトの向きや形状を変化させてもよい。こうすれば、あたかも画面内のオブジェクトがユーザの手の動きに反応するかのように演出することができる。
【0053】
さらに操作受付部54は、コントローラ18に設けられたセンサによって検出されたコントローラ18の姿勢を示す情報を取得し、表示画像生成部56は、コントローラ18の姿勢に応じて画面に表示する画像の内容を変化させてもよい。
図11は、このような処理によって表示される表示画像の例を示している。この図の例では、操作受付部54は、加速度センサやジャイロセンサなどのコントローラ18に内蔵された姿勢検出用センサの検出結果を用いて、コントローラ18の向きを検出する。表示画像生成部56は、このコントローラ18の向きの変化に応じて、画面に表示されたスリングSの向きを図中破線の矢印で示すように変化させる。そして、ユーザが例えば板状操作部材22上においていずれかの方向に向けて指をスライドさせる操作を行うと、当該操作に応じて弾を撃ち出すショットが行われる。このとき、弾が飛んでいく方向は、コントローラ18の向きに応じて決定される。そのためユーザは、スリングを動かして的を狙い、弾を撃ち出して的に当てるというゲームをより実際に近い動きで行うことができる。なお、この場合において弾が撃ち出される方向は、コントローラ18の向きと、板状操作部材22に対するスライド操作の向きとの双方に基づいて決定されてもよい。具体的に、例えばコントローラ18が基準姿勢(ゲーム開始時の姿勢)に対してθx度回転しており、さらにユーザが行ったスライド操作の向きがコントローラ18の前方に対してθy度傾いているとする。この場合に弾の撃ち出される向きは、ゲーム開始時の基準方向に対して(θx+θy)度傾いた方向に設定される。
【0054】
また、以上の説明では顔位置FPに基づいて基準画像Ic1内における操作領域OAが決定されることとしたが、画面内に設定される指定可能領域PAも、基準画像Ic1から検出された人の顔の位置に応じて決定されてもよい。この場合の処理の具体例について、
図12A及び
図12Bを用いて説明する。
【0055】
図12Aは、撮像画像取得部50が取得する基準画像Ic1の一例である。また、
図12Bは、表示画像生成部56が生成する表示画像の一例である。
図12Aの基準画像Ic1内には、コントローラ18を用いてゲーム操作を行うユーザU1と、ユーザU1によるゲーム操作のターゲットとなるユーザU2とが写っている。顔検出部52は、ユーザU1の顔F1とユーザU2の顔F2をそれぞれ検出する。ここで、コントローラ18の位置の上方にある顔がゲーム操作を行うユーザU1の顔F1として特定される。また、複数の人が基準画像Ic1内に写っている場合、ユーザU1に最も近い位置にある顔が操作対象となるユーザU2の顔F2として特定される。前述したように、操作領域OAはユーザU1の顔F1の位置に応じて決定される。さらにこの例においては、指定可能領域PPはユーザU2の顔F2の位置に応じて決定される。具体的に、
図12Bの例では、指定可能領域PAは顔F2の下方を中心位置としてユーザU2の上半身を含むような矩形の領域として設定されている。指定可能領域PAの位置及び大きさは、検出された顔F2の大きさに応じて決定されてもよい。また、
図12Bの例では、基準画像Ic1に重ねて指定可能領域PA内に別の画像を配置して表示画像が生成されている。ここでユーザU1が操作領域OA内でコントローラ18を動かすと、指定位置PPはユーザU2の体に重なる指定可能領域PA内でコントローラ18の動きに合わせて移動することになる。これにより、ユーザU1はユーザU2の体に配置された画像内でゲーム操作を行うことができる。
【0056】
図13Aは、本実施形態に係るゲーム装置12がさらに別のゲーム処理を実行する場合における基準画像の例を示している。
図13Bは、この場合の表示画像の例を示している。この例では、ユーザU1はコントローラ18を用いてハンドル操作を行うことで、画面内に表示されている車を操縦するゲームを行う。具体的に、まず操作受付部54が、基準画像Ic1内に含まれるコントローラ18の位置を特定し、その上方にある顔を、ゲームをプレイするユーザU1の顔F1として特定する。表示画像生成部56は、表示画像を生成する際に、基準画像Ic1の中から、特定された顔F1近傍の抽出領域EAを抽出して表示画像内の車オブジェクトを表示する位置に重ねて貼り付ける。これによりユーザは、自分の顔が表示画像内の車の中に写っている状態でゲームを楽しむことができる。
【0057】
さらにこの例では、ユーザの顔の位置に応じて基準画像Ic1内に検出対象領域DAが設定される。具体的に、
図13Aの例では抽出領域EAを囲むように検出対象領域DAが設定されている。操作受付部54は、検出対象領域DA内の画像の時間変化を検出することにより、ユーザがこの検出対象領域DA内で手を動かしたことを検知できる。このようなユーザの手の動きの検知に応じて、表示画像生成部56は、検知されたユーザの手の位置に対応する表示画像内の位置に配置しているオブジェクトを変化させる処理を行う。具体的に、
図13A及び
図13Bでは、ユーザの左手の動きに応じて、この左手の位置に対応する画面内の位置に配置されたオブジェクトO5がはね飛ばされる表示を行っている。
【0058】
さらにこの例において、ゲームをプレイするユーザを別のユーザに変更する制御も、検出される顔F1の位置に応じて実行されてもよい。具体例として、ゲーム装置12は、ゲームをプレイ中のユーザU1の顔F1の位置の近くまで別のユーザU2が近づいた状態で、このユーザU2が所持するコントローラ18−2から所定の操作入力を受け付けた場合に、ゲームをプレイするユーザをユーザU1からユーザU2に交代することとし、それ以降はコントローラ18−2からの入力に応じて車を移動させる処理を行う。一方で、ユーザU2がユーザU1から離れた位置でユーザ交代の操作入力を行ったとしても、ゲーム装置12はその操作入力を無視する。特に
図13A及び
図13Bの例では、ユーザU2の顔が抽出領域EA内に入った状態で、ユーザ交代の指示を受け付けることとしてもよい。これにより、ユーザU2が車に乗り込んでから操縦を交代するような演出を行うことができる。
【0059】
なお、本発明の実施の形態は以上説明したものに限られない。例えば、ゲーム装置12の撮像画像取得部50が、ステレオカメラ16ではないカメラから、撮像画像を取得するようにしてもよい。
【0060】
また、例えば、ゲーム装置12が、赤外線を出力して、その赤外線が撮像対象オブジェクトに反射して戻ってくるまでの時間を測定して、その測定された時間に基づいて、被写体とゲーム装置12との距離分布を測定する距離分布測定部から、距離分布の測定結果を受け付けるようにしてもよい。
【0061】
また、例えば、ゲーム装置12が、焦点距離の異なる複数のレンズから構成され、これらのレンズのうち、被写体に対してピントが合ったレンズに基づいて、被写体とゲーム装置12との距離分布を測定する距離分布測定部から、距離分布の測定結果を受け付けるようにしてもよい。