[1.実施形態1]
以下、本発明の実施形態の一例について図面に基づき詳細に説明する。本発明の実施形態に係るゲーム装置は、例えば家庭用ゲーム機(据置型ゲーム機)、携帯ゲーム機、携帯電話機、携帯情報端末(PDA)又はパーソナルコンピュータ等によって実現される。ここでは、本発明の実施形態に係るゲーム装置を家庭用ゲーム機によって実現する場合について説明する。
[1−1.全体の概要]
図1は、位置検出装置1、ゲーム装置20、及びプレイヤ100の位置関係を示す図である。図1に示すように、プレイヤ100は、例えば、位置検出装置1の前方に位置する。位置検出装置1とゲーム装置20とは、データ通信可能に接続される。
位置検出装置1は、プレイヤ100を撮影して得られる画像と、位置検出装置1とプレイヤ100との距離に関する情報と、に基づいてプレイヤ100の位置に関する情報を生成する。例えば、位置検出装置1は、プレイヤ100の体を構成する複数の部位(例えば、頭や両ひじ等)のそれぞれに対応する3次元座標を検出する。
ゲーム装置20は、プレイヤ100の位置に関する情報を位置検出装置1から取得する。ゲーム装置20は、例えば、3次元空間におけるプレイヤ100の立ち位置やプレイヤ100の各部位の位置を示す3次元座標を位置検出装置1から取得する。ゲーム装置20は、この3次元座標の変化に基づいてゲームの制御を行う。
プレイヤ100に対応する3次元座標の変化は、プレイヤ100の動作に対応する。例えば、プレイヤ100が右手を上げる動作をした場合、このプレイヤ100の右ひじ及び右手に対応する3次元座標が、主に変化する。
[1−2.位置検出装置の動作]
次に、位置検出装置1がプレイヤ100の位置に関する情報(3次元位置情報)を生成する処理について説明する。本実施形態においては、3次元位置情報が、プレイヤ100の複数の部位の位置に関する情報を含む場合を説明する。プレイヤ100の部位とは、プレイヤ100の全身に対する一部分のことであり、例えば、頭や両ひじ等である。
図1に示すように、位置検出装置1は、例えば、CCDカメラ2、赤外線センサ3、複数のマイクロフォンを含むマイク4等を備える。本実施形態においては、CCDカメラ2及び赤外線センサ3から得られる情報に基づいてプレイヤ100の3次元位置情報が生成される。
CCDカメラ2は、CCDイメージセンサを備えた公知のカメラである。CCDカメラ2は、プレイヤ100を撮影する。CCDカメラ2は、例えば、所定時間毎(例えば1/60秒毎)にプレイヤ100を撮影した静止画像(例えば、RGBデジタル画像)を生成する。以降、CCDカメラ2により生成される静止画像を撮影画像という。撮影画像には、CCDカメラ2に対応する視野内に配置された物体が含まれる。
図2は、CCDカメラ2によって生成される撮影画像の一例を示す図である。図2に示すように、撮影画像には、例えば、プレイヤ100が含まれる。なお、説明の簡略化のため図2では省略しているが、CCDカメラ2の視野内に家具やリビングルームの床や壁等が含まれている場合、撮影画像には、これらが含まれる。
撮影画像には、互いに直行するXs軸、Ys軸が設定される。例えば、撮影画像の左上を、原点Os(0,0)とする。また例えば、撮影画像の右下を、座標Pmax(Xmax,Ymax)とする。撮影画像に対応する各画素の位置は、それぞれの画素に割り当てられる2次元座標(Xs−Ys座標)によって特定される。
赤外線センサ3は、例えば、赤外線発光素子及び赤外線受光素子(例えば、赤外線ダイオード)から構成される。赤外線センサ3は、赤外線光を照射して得られる反射光を検出する。赤外線センサ3は、この反射光の検出結果に基づいて被写体(例えば、プレイヤ100)の深度を測定する。
被写体の深度とは、測定基準位置(例えば、赤外線センサ3の赤外線受光素子の位置)と被写体の位置との距離間隔である。測定基準位置とは、プレイヤ100の位置の深度(奥行き)を測定する際の基準となる位置である。測定基準位置は、位置検出装置1の配置位置と関連付けられる所定の位置であればよい。赤外線センサ3は、例えば、赤外線を照射してから反射光を受光するまでの飛行時間(TOF:Time of Flight)に基づいてプレイヤ100の深度を測定する。
図3は、赤外線センサ3によるプレイヤ100の深度の測定方法を説明するための図である。図3に示すように、赤外線センサ3から所定間隔でパルス状の赤外線光が照射される。赤外線センサ3から照射された赤外線光は、赤外線センサ3の発光位置を中心点として球状に広がる。
赤外線センサ3から照射された赤外線光は、例えば、プレイヤ100の体や、リビングルームに配置された他の物体(例えば、家具や壁等)の表面に当たる。これらの表面に当たった赤外線光は、反射する。反射した赤外線光は、赤外線センサ3の赤外線受光素子により検出される。即ち、赤外線センサ3は、照射した赤外線に対して位相が180度反転した反射光を検出する。
例えば、図3に示すように、プレイヤ100が両手を前に突き出している場合、突き出された両手は、プレイヤ100の胴体よりも赤外線センサ3に近い。つまり、プレイヤ100の両手によって反射される赤外線光の飛行時間は、プレイヤ100の胴体によって反射される赤外線光の飛行時間よりも短い。
赤外線センサ3が赤外線光を照射してから反射光を検出するまでの時間(つまり、飛行時間)と、赤外線の速度と、を乗算して半分で割った値は、測定基準位置とプレイヤ100との距離間隔(即ち、深度)に相当する。このようにして、赤外線センサ3は、プレイヤ100の深度を測定することができる。
また、赤外線センサ3は、反射した赤外線光から得られる深度差を検出することにより、被写体(プレイヤ100)の輪郭を検出することもできる。
具体的には、上記のように、赤外線センサ3が赤外線光の反射光を受信する、ということは、この場所に物体が配置されていることを意味する。この物体の後方の近い位置に他の物体が配置されていなければ、この物体と、この物体の周囲と、の深度差は大きくなる。つまり、例えば、プレイヤ100に赤外線光が反射されて得られる深度と、プレイヤ100の後方にある壁に赤外線光が反射されて得られる深度と、の深度差は大きいので、この深度差が所定値よりも大きい箇所をつなぎ合わせることによって、プレイヤ100の輪郭を検出することができる。
なお、プレイヤ100の輪郭を検出する方法は、上記の例に限られない。他にも例えば、CCDカメラ2によって得られる撮影画像の各画素の輝度に基づいて輪郭を検知するようにしてもよい。この場合も、例えば、画素間の輝度差が大きい箇所をつなぎ合わせることによってプレイヤ100の輪郭を検出することができる。
また、赤外線センサ3に戻ってきた光は、所定のフィルタリング処理が施されるようにしてもよい。つまり、赤外線センサ3が発した赤外線光に対応する反射光のみが、光検知センサによって検知されるようにして、ノイズが低減されるようにしてもよい。
上記のようにして検出されるプレイヤ100の深度に関する情報(深度情報)は、例えば、深度画像として表現される。本実施形態においては、深度情報が、グレースケールの深度画像(例えば、256ビットのグレースケールの画像データ)として表現される例を挙げて説明する。
図4は、赤外線センサ3によって得られる深度画像の一例を示す図である。図4に示すように、例えば、赤外線センサ3に近い物体は明るく(輝度が高く)、遠い物体は暗く(輝度が低く)表現される。例えば、深度画像が256ビットのグレースケールの画像データとして表される場合、プレイヤ100の深度は、深度画像の輝度(画素値)に対応する。即ち、例えば、プレイヤ100の深度が2センチ異なる毎に深度画像の輝度が1ビット異なる。この場合、赤外線センサ3は、被写体の深度を2センチ単位で検出することが可能であることを示す。
図3に示すように、プレイヤ100が両手を突き出している場合、突き出された両手は、プレイヤ100の胴体よりも、赤外線センサ3に近い。つまり、プレイヤ100の両手は、胴体よりも深度が小さい。したがって、図4に示すように、プレイヤ100の両手に対応する画素は、胴体に対応する画素よりも明るく(輝度が高く)表現される。
本実施形態においては、赤外線センサ3は、CCDカメラ2と同様に所定時間毎(例えば1/60秒毎)に、深度画像を生成する。CCDカメラ2により得られる撮影画像と、赤外線センサ3により得られる深度画像と、に基づいてプレイヤ100の部位の位置に関する3次元位置情報が生成される。
例えば、CCDカメラ2により得られる撮影画像(RGBデータ)に、深度画像が示す深度情報(D:Depth)が合算された合成画像(RGBDデータ)が生成される。即ち、合成画像は、各画素ごとに、色情報(RGBそれぞれの明度)と深度情報とを含む。
なお、合成画像が生成される際には、CCDカメラ2と赤外線センサ3との位置間隔に基づいて、撮影画像と深度画像との少なくとも一方の位置が変更される。例えば、CCDカメラ2と赤外線センサ3が水平方向に2センチ離れている場合、深度画像の各画素の座標を、2センチに対応する画素数だけ移動させることによって、位置の変更が行われる。
この合成画像に基づいて3次元位置情報が生成される。例えば、3次元位置情報は、プレイヤ100の複数の部位の位置に関する複数の情報を含む。本実施形態においては、3次元位置情報が、プレイヤ100の体の各部位(例えば、頭や肩等)に対応する3次元座標を含む場合を説明する。
具体的には、例えば、次のようにして3次元位置情報が生成される。
まず、先述のように、深度画像に基づいてプレイヤ100の輪郭に対応する画素が特定される。プレイヤ100の輪郭によって囲まれる画素は、プレイヤ100の体に対応する画素である。
次いで、撮影画像のうち、上記の輪郭によって囲まれた画素の色情報(RGBの明度)が参照される。撮影画像の色情報に基づいて、プレイヤ100の体の各部位に対応する画素が特定される。この特定方法としては、例えば、比較画像(教師画像)との比較によって画像の中から対象物(即ち、プレイヤ100の体の各部位)を抽出するパターンマッチング法等、公知の手法を適用可能である。
他にも例えば、撮影画像の各画素の色情報の変化から体の各部位の速度ベクトルを算出し、物体の運動を表すオプティカルフロー(例えば、勾配法又はフィルタリング法)等に基づいて各画素の動きベクトルを検出し、プレイヤ100の頭の位置や両肘の位置等に対応する画素が特定されるようにしてもよい。
上記のようにして特定された画素の画素値(RGBD値)に基づいて、プレイヤ100の頭や両ひじ等の3次元座標が算出される。例えば、この画素値に対して所定の行列変換処理が施されることによって、3次元座標が生成される。この行例変換処理は、例えば、3Dグラフィックにおけるワールド座標−スクリーン座標の2つの座標系の変換処理と同様の行例演算によって実行される。つまり、画素の色情報を示すRGB値と奥行きを示すD値と、が所定の行列式に代入されることにより、この画素の3次元座標が算出される。即ち、プレイヤ100の各部位の3次元座標が算出される。
なお、画素値(RGBD値)から画素に対応する3次元座標が算出される方法は、公知の手法を適用可能であり、この算出方法は、上記の例に限られない。他にも例えば、ルックアップテーブルを用いて座標変換が行われるようにしてもよい。
図5は、位置検出装置1により生成される3次元位置情報の一例を示す図である。図5に示すように、3次元位置情報は、例えば、プレイヤ100の各部位と、3次元座標と、が対応付けられて格納される。
図6は、3次元位置情報によって特定されるプレイヤ100の位置を示す図である。本実施形態では、例えば、位置検出装置1に対応する所定位置(例えば、測定基準位置)を原点Owとする。例えば、原点Owは、赤外線センサ3の測定基準位置に対応する3次元座標である。なお、原点Owの位置は、プレイヤ100がいる3次元空間のどこに設定されてもよい。例えば、撮影画像の原点Osに対応する3次元座標が、原点Owとして設定されるようにしてもよい。
図6に示すように、本実施形態では、3次元位置情報がプレイヤ100の複数の部位のうちで少なくとも頭の位置及び腰の位置に関する部位情報を含む場合を説明する。例えば、3次元位置情報は、プレイヤ100の頭P1、首P2、右肩P3、左肩P4、右ひじP5、左ひじP6、右手P7、左手P8、胸P9、腰P10、右ひざP11、左ひざP12、右かかとP13、左かかとP14、右つま先P15、左つま先P16に対応する3次元座標が含まれる。
なお、3次元位置情報によって示されるプレイヤ100の体の部位は、プレイヤの体(骨格)のうちで予め定められた部位のものであってよい。例えば、この部位は、先述したパターンマッチング法によって特定可能な体の部位であればどこでもよい。
本実施形態においては、先述のように、所定間隔で生成される撮影画像と深度画像とに基づいて、所定間隔毎(例えば、1/60秒毎)に3次元位置情報が生成される。生成された3次元位置情報は、所定時間毎に位置検出装置1からゲーム装置20に対して送信される。
ゲーム装置20は、位置検出装置1から送信される3次元位置情報を受信して、この3次元位置情報に基づいてプレイヤ100の体の位置を把握する。つまり、プレイヤ100が踊ったりボールを蹴ったりする動作をすると、この動作に対応するように3次元位置情報が変化するので、この3次元位置情報の変化に基づき、ゲーム装置20はプレイヤの動きを把握する。詳細は後述するが、ゲーム装置20は、3次元位置情報に基づいてプレイヤの体の動きを把握してゲームを実行する。
次に、位置検出装置1がプレイヤ100を検知することができる空間(以降、検知可能空間60という。)について説明する。
検知可能空間60は、位置検出装置1により撮影される空間(つまり、視野内の空間)のうちでプレイヤ100を正確に捉えることができる空間である。
例えば、位置検出装置1とプレイヤ100との距離が近すぎる場合(例えば、1メートル以内)、位置検出装置1は、プレイヤ100の全身を撮影することができない。この場合、静止画像(図2)に例えばプレイヤ100の頭や足等が含まれなくなると、位置検出装置1は、正確な3次元位置情報を取得することができなくなる。したがって、CCDカメラ2の視野内の空間であっても、位置検出装置1との距離が比較的近い空間は、検知可能空間60には含まれない。
また例えば、位置検出装置1とプレイヤ100との距離が遠すぎる場合(例えば、5メートル以上)、赤外線が減衰するため、位置検出装置1は、反射光を検出することができない。この場合、位置検出装置1は、正確な深度情報を取得することができなくなる。したがって、CCDカメラ2の視野内の空間であっても、位置検出装置1との距離が比較的遠い空間は、検知可能空間60には含まれない。
また例えば、プレイヤ100の立ち位置が、水平方向(例えば、Yw軸方向)にずれている場合、位置検出装置1は、プレイヤ100の全身を撮影することができない。この場合、プレイヤ100の右半身や左半身が撮影画像(図2)から切れてしまい、位置検出装置1は、正確な3次元位置情報を取得することができなくなる。したがって、CCDカメラ2の視野内の空間であっても、水平方向の両端部に近い空間は、検知可能空間60には含まれない。
図6に示すように、検知可能空間60は、例えば、CCDカメラ2の視野内の空間から上記のそれぞれの空間を除いた空間である。即ち、検知可能空間60とは、その内部にプレイヤ100が立っている場合、位置検出装置1が正確な3次元位置情報を生成することができる空間である。検知可能空間60の広さ(体積)、形状、及び位置は、例えば、ゲーム作成者によって予め定められていてよいし、位置検出装置1を設置する部屋の状況に応じて変更されるようにしてもよい。
また、以上説明した例では、プレイヤ100を一人としたが、ゲームをプレイするプレイヤ100は複数人であってもよい。プレイヤ100が複数人である場合、上記と同様の処理によって、各プレイヤ100の3次元位置情報が生成される。即ち、赤外線センサ3によって把握されるプレイヤ100の輪郭の個数に基づいて、位置検出装置1は、プレイヤ100の人数を把握することができる。それぞれのプレイヤ100に対応する画素に対して上記と同様の処理が実行されることによって、複数のプレイヤ100の3次元位置情報を生成することができる。
また、位置検出装置1により撮影される撮影画像からプレイヤ100を認識する際に、所定の高さ(例えば、1メートル)以下の物体を排除するようにしてもよい。つまり、プレイヤ100が床に座っていて、座高が所定の高さ以下である等は、プレイヤ100を正確に検出することができない可能性があるので、この場合には、プレイヤ100を検出しないようにしてもよい。
ゲーム装置20は、検知可能空間60にいるプレイヤ100の3次元位置情報の変化に基づいてプレイヤ100の動作を判定する。また、この判定された動作に基づいて、ゲーム装置20は、ゲームを実行する。以降、ゲーム装置20において実行されるゲーム及びプレイヤ100の動作の判定方法について説明する。
[1−3.ゲーム装置で実行されるゲーム]
本実施形態においては、ゲーム装置20が、3次元位置情報に基づいてプレイヤ100の立ち位置や動作を検出し、スノーボードで山を滑り降りるスポーツを模したゲームを実行する例を挙げて説明する。
図7は、ゲーム画面50の一例を示す図である。図7に示すように、ゲーム画面50には、プレイヤ100の操作に供されるゲームキャラクタ51、スノーボード52、コース53、障害物54、アイテム55、コース外領域56等が含まれる。例えば、ゲームキャラクタ51は、障害物54をよけつつ、コース外領域56にはみ出さないようにコース53を滑り降りる。また例えば、ゲームキャラクタ51がアイテム55に触れると、アイテム55を入手することができる。
先述のように、3次元位置情報が示すプレイヤ100の部位の3次元座標の変化に基づいてプレイヤ100の動作が検出され、ゲームが制御される。例えば、プレイヤ100が体を左に傾ける動作をした場合、ゲームキャラクタ51は、左に移動する。
また例えば、プレイヤ100が両手を上げた場合、ゲームキャラクタ51は両手を上げる。また例えば、プレイヤ100がジャンプの動作をした場合、ゲームキャラクタ51もジャンプをする。
次に、ゲーム装置20がプレイヤ100の動作を検出する際の検出方法について詳細に説明する。
図8は、位置検出装置1の前方でゲームプレイをする2人のプレイヤ100を示す図である。図8は、体の大きな大人のプレイヤ100a(身長が高い)と、体の小さな子どものプレイヤ100b(身長が低い)と、がゲームをプレイする様子を示している。なお、以降では、プレイヤ100aとプレイヤ100bの両者を、まとめてプレイヤ100ともいう。ここでは、プレイヤ100aとプレイヤ100bとの両者が両手を上げる動作をした場合の検出方法について説明する。
先述したように、プレイヤ100a及びプレイヤ100bのそれぞれについて、図5に示すような3次元位置情報が生成される。プレイヤ100aとプレイヤ100bとの両者が、両手を上げる動作をした場合、この3次元位置情報の変化の仕方が所定の条件を満たすか否かによって、プレイヤ100aとプレイヤ100bとが両手を上げる動作をしたか否かが判定される。
図9は、プレイヤ100の3次元位置情報の変化を示す図である。図9に示すように、プレイヤ100aとプレイヤ100bとが両手を上げる動作をした場合、3次元位置情報に含まれる各部位の3次元座標が変化する。ここでは、説明の簡略化のため、プレイヤ100の複数の部位(頭P1〜左つま先P16)に対応する3次元座標のうちの4つの部位(右ひじP5、左ひじP6、右手P7、及び左手P8)の3次元座標の変化に基づいて、プレイヤ100が両手を上げる動作を検出する例を説明する。
なお、以降では、プレイヤ100aの各部位を頭P1a〜左つま先P16aとする。プレイヤ100bの各部位を頭P1b〜左つま先P16bとする。つまり、プレイヤ100aの各部位とプレイヤ100bの各部位との両者を、上記のように符号を付して区別する。
例えば、右ひじP5a、左ひじP6a、右手P7a、及び左手P8aの3次元座標の変化に基づいて、プレイヤ100aが両手を上げたか否かが判定される。つまり、右ひじP5a、左ひじP6a、右手P7a、及び左手P8aの3次元座標が、どの程度の速さでどの程度上方に変化したか、によって判定される。
同様に、例えば、右ひじP5b、左ひじP6b、右手P7b、及び左手P8bの3次元座標の変化に基づいて、プレイヤ100bが両手を上げたか否かが判定される。つまり、右ひじP5b、左ひじP6b、右手P7b、及び左手P8bの3次元座標が、どの程度の速さでどの程度上方に変化したか、によって判定される。
図8に示すように、プレイヤ100aの体はプレイヤ100bの体よりも大きいので(身長が高いので)、両手を上げた場合、プレイヤ100aの3次元座標の変化量は、プレイヤ100bの3次元座標の変化量よりも大きくなると考えられる。
また例えば、体の大きなプレイヤ100aは、体の小さなプレイヤ100bよりも腕が長いので、両手を上げる動作をする際、体の小さなプレイヤ100bよりも腕を大きく動かすことになる。腕を大きく動かさなければならないので、プレイヤ100aは、比較的ゆっくりと大きく腕を上げると考えられる。つまり、プレイヤ100aの3次元座標の変化の速度は、プレイヤ100bの3次元座標の変化の速度よりも遅くなる。
詳細は後述するが、ゲーム装置20は、例えば、3次元位置情報に基づいてプレイヤ100の体の大きさ(身長や腕の長さ等)を判定して、プレイヤ100の動作を検出する際の動作判定基準を変更する。即ち、本実施形態におけるゲーム装置20によれば、プレイヤ100の動作を検出する際の動作判定基準がプレイヤ100の体の大きさに応じて最適な値に変更されるので、プレイヤ100の動作を正確に検出することができる。
なお、プレイヤ100aとプレイヤ100bの体の大きさは、3次元位置情報に基づいて判定される。例えば、プレイヤ100aの身長は、頭P1aと、右かかとP13a及び左かかとP14aの中点Paと、の距離Laに基づいて判定される。同様に、例えば、プレイヤ100bの身長は、頭P1bと、右かかとP13b及び左かかとP14bの中点Pbと、の距離Lbに基づいて判定される。
ゲーム装置20において検出されるプレイヤ100の動作は、上記のような両手を上げる動作に限られない。ゲーム装置20において検出されるプレイヤ100の動作は、3次元位置情報の変化に基づいて判定することができる動作であればよい。
図10は、位置検出装置1の前方でゲームプレイをするプレイヤ100を示す図である。図10では、プレイヤ100がジャンプをしている。本実施形態においては、プレイヤ100がジャンプする動作を、プレイヤ100の頭P1の3次元座標と腰P10の3次元座標との変化に基づいて検出する。
例えば、上記のようにプレイヤ100の頭P1の3次元座標と腰P10の3次元座標を用いることによって、ゲーム装置20は、プレイヤ100によるジャンプの動作を検出することができるようになっている。即ち、ゲーム装置20によれば、プレイヤ100が実際にジャンプをしなくても、ジャンプをするジェスチャー(例えば、しゃがみ込んで伸びあがるような動き)をするだけで、このジェスチャーに対応する動作を検出することができるようになっている。
例えば、右つま先P15や左つま先P16の3次元座標の変化をジャンプの判定に使用した場合、プレイヤ100は、ゲームキャラクタ51にジャンプの動作をさせるために、実際にリビングルームでジャンプをしなければならない。しかしながら、上記のように頭P1と腰P10の3次元座標を用いてジャンプの判定を行うことによって、プレイヤ100が実際にジャンプをしなくても(かかとが床から離れなくても)、プレイヤ100がジャンプをする真似をすれば(つまり、ジェスチャーだけをして)ジャンプの動作を検出することが可能となる。
図11は、プレイヤ100がジャンプの動作をした場合の3次元位置情報の変化を示す図である。図11に示すように、プレイヤ100がジャンプする動作をした場合、頭P1の3次元座標と、腰P10の3次元座標と、はそれぞれ上方(Zw軸正方向)に変化する。
ゲーム装置20においては、これらの変化の程度が動作判定基準(条件)を満たすか否かに基づいて、プレイヤ100がジャンプの動作をしたか否かが判定される。プレイヤ100が両手を上げた場合(図8、図9)とジャンプした場合(図10、図11)とでは、プレイヤ100の各部の移動量は異なるため、ジャンプの判定に使用される動作判定基準は、両手を上げる際の判定に用いられる動作判定基準とは異なる。
このようにしてプレイヤ100のジャンプの動作を検出する場合においても、例えば、プレイヤ100の体の大きさによって頭P1と腰P10の3次元座標の変化量や変化速度は異なるので、両手を上げる動作(図8、図9)を検出する場合と同様に、後述する処理によって動作判定基準が変更される。
例えば、体の大きなプレイヤ100aがジャンプの動作をする場合、比較的長い脚を大きくゆっくりと屈伸させるので、頭P1及び腰P10の動きは、比較的大きくてゆっくりした変化となる。一方、体の小さなプレイヤ100bがジャンプの動作をする場合、比較的短い脚を小さく速く屈伸させるので、頭P1及び腰P10の動きは、比較的小さくて速い変化となる。
また例えば、本実施形態においては、3次元位置情報によってプレイヤ100の深度方向(赤外線の照射方向。例えば、図6のXw軸方向。)の移動量を検出することができるので、プレイヤ100が、上にジャンプする動作をしたか、斜め前にジャンプする動作をしたか、又は斜め後ろにジャンプしたか、を判別することもできる。つまり、プレイヤ100の横の動きだけでなく、プレイヤ100から見て前後の方向の動きを検出することもできる。
このように、ゲーム装置20においては、例えば、プレイヤ100の体の大きさに基づいて動作判定基準が変更されるので、プレイヤ100の動作を正確に検出することができる。以下、この技術についての詳細な処理を説明する。
まず、位置検出装置1とゲーム装置20との構成について説明する。
[1−4.位置検出装置の構成]
図12は、位置検出装置1のハードウェア構成を示す図である。図12に示すように、位置検出装置1は、マイクロプロセッサ10、記憶部11、撮影部12、深度測定部13、音声処理部14、通信インタフェース部15から構成される。位置検出装置1の各構成要素は、バス16によってデータ送受信可能に接続される。
マイクロプロセッサ10は、記憶部11に記憶されるオペレーティングシステム、各種プログラムに基づいて位置検出装置1の各部を制御する。
記憶部11は、オペレーティングシステムや撮影部12、深度測定部13を動作させるためのプログラム、各種パラメータを記憶する。また、記憶部11は、撮影画像及び深度画像に基づいて3次元位置情報を生成するためのプログラムを記憶する。
撮影部12は、CCDカメラ2等から構成される。撮影部12は、例えば、プレイヤ100の撮影画像を生成する。
深度測定部13は、赤外線センサ3等から構成される。深度測定部13は、例えば、赤外線センサ3により得られる飛行時間に基づいて深度画像を生成する。
マイクロプロセッサ10は、先述のように、撮影部12により生成される撮影画像と、深度測定部13により生成される深度画像と、に基づいて、3次元位置情報を生成する。具体的には、まず、マイクロプロセッサ10は、撮影画像に基づいてプレイヤ100の各部(例えば、頭P1〜左つま先P16)に対応する画素の位置を特定する。
次いで、マイクロプロセッサ10は、この特定された画素のRGBD値に基づいて座標変換処理を実行して3次元座標を算出する。この座標変換処理は、先述のように、行列演算に基づいた処理である。これらの一連の処理によって、3次元位置情報(図5)が、所定時間毎(例えば、1/60秒毎)に生成される。
音声処理部14は、マイク4等から構成される。例えば、音声処理部14は、複数のマイクロフォン(例えば、3つ)に基づいて検出した音声のずれ時間に基づいて、プレイヤ100が音声を発した位置を特定することができる。また、音声処理部14のマイク4としては、CCDカメラ2の視線方向と同じ方向にある発音源からの音を検知する単一指向性のマイクを適用可能である。
通信インタフェース部15は、ゲーム装置20に対して3次元位置情報等の各種データを送信するためのインタフェースである。
[1−5.ゲーム装置の構成]
図13は、ゲーム装置20のハードウェア構成を示す図である。図13に示すように、本実施形態に係るゲーム装置20は、家庭用ゲーム機21、表示部40、音声出力部41、光ディスク42、及びメモリカード43を含む。表示部40及び音声出力部41は、家庭用ゲーム機21に接続される。例えば、家庭用テレビ受像機が表示部40として用いられる。また例えば、家庭用テレビ受像機に内蔵されたスピーカが、音声出力部41として用いられる。
光ディスク42及びメモリカード43は情報記憶媒体であり、家庭用ゲーム機21に装着される。
家庭用ゲーム機21は、公知のコンピュータゲームシステムである。図13に示すように、家庭用ゲーム機21は、バス22、マイクロプロセッサ23、主記憶24、画像処理部25、音声処理部26、光ディスク再生部27、メモリカードスロット28、通信インタフェース(I/F)29、コントローラインタフェース(I/F)30、及びコントローラ31を含む。コントローラ31以外の構成要素は家庭用ゲーム機21の筐体内に収容される。
バス22は、アドレス及びデータを家庭用ゲーム機21を構成する各部でやり取りするためのものである。即ち、マイクロプロセッサ23、主記憶24、画像処理部25、音声処理部26、光ディスク再生部27、メモリカードスロット28、通信インタフェース29、及びコントローラインタフェース30は、バス22によって相互データ通信可能に接続される。
マイクロプロセッサ23は、図示しないROMに格納されるオペレーティングシステムや、光ディスク42又はメモリカード43から読み出されるプログラムに基づいて、各種情報処理を実行する。
主記憶24は、例えばRAMを含む。主記憶24には、光ディスク42又はメモリカード43から読み出されたプログラム及びデータが必要に応じて書き込まれる。主記憶24は、マイクロプロセッサ23の作業用としても用いられる。
また、主記憶24には、例えば、所定時間毎に位置検出装置1から受信する3次元位置情報が、受信時間と対応付けられて記憶される。マイクロプロセッサ23は、主記憶24に記憶された3次元位置情報に基づいてゲームの制御を行う。
画像処理部25は、VRAMを含む。画像処理部25は、マイクロプロセッサ23から送信される画像データに基づいてVRAM上にゲーム画面50を描画する。画像処理部25は、このゲーム画面50をビデオ信号に変換し、所定のタイミングで表示部40に出力する。
音声処理部26は、サウンドバッファを含む。音声処理部26は、光ディスク42からサウンドバッファに読み出された各種音声データ(ゲーム音楽、ゲーム効果音、メッセージ等)を、音声出力部41から出力する。
光ディスク再生部27は、光ディスク42に記録されたプログラムやデータを読み取る。本実施形態では、家庭用ゲーム機21にプログラムやデータを供給するために光ディスク42を用いる例を挙げて説明するが、他にも例えば、他の情報記憶媒体(例えば、メモリカード43等)を用いるようにしてもよい。また、インターネットなどのデータ通信網を介してプログラムやデータが、家庭用ゲーム機21に供給されるようにしてもよい。
メモリカードスロット28は、メモリカード43を装着するためのインタフェースである。メモリカード43は、不揮発性メモリ(例えばEEPROMなど)を含む。メモリカード43は、例えば、セーブデータなどの各種ゲームデータを記憶する。
通信インタフェース29は、インターネットなどの通信ネットワークに通信接続するためのインタフェースである。
コントローラインタフェース30は、コントローラ31と無線接続又は有線接続するためのインタフェースである。コントローラインタフェース30としては、例えばBluetooth(登録商標)インタフェース規格に則ったインタフェースが適用される。なお、コントローラインタフェース30は、コントローラ31を有線接続するためのインタフェースとしてもよい。
[1−6.ゲーム装置で実現される機能]
図14は、ゲーム装置20において実現される機能群を示す機能ブロック図である。図14に示すように、ゲーム装置20では、ゲームデータ記憶部80、位置取得部82、判定部84、ゲーム処理実行部86が実現される。これらの機能は、マイクロプロセッサ23が、光ディスク42から読み出されたプログラムに従って動作することにより、実現される。
[1−6−1.ゲームデータ記憶部]
ゲームデータ記憶部80は、主記憶24及びメモリカード43を主として実現される。ゲームデータ記憶部80は、ゲームを実行するために必要な情報を記憶する。例えば、ゲームデータ記憶部80は、ゲーム画面50を構成する各要素(ゲームキャラクタ51等)の画像データや、実行中のゲームの状況を示すデータ等を記憶する。
また例えば、ゲームデータ記憶部80は、位置取得部82によって取得される3次元位置情報を記憶する。3次元位置情報は、例えば、ゲーム装置20による取得時間(受信時間)に対応付けられて記憶される。なお、ゲーム装置20においては、3次元位置情報が時系列的に判別されるようにすればよい。例えば、ゲーム装置20は、3次元位置情報を取得時間と対応付けるのではなく、3次元位置情報の生成時間を位置検出装置1から取得して、3次元位置情報と対応付けるようにしてもよい。
ゲームデータ記憶部80は、3次元位置情報の変化に基づいてプレイヤ100の動作が判定される際の基準となる動作判定基準を示す情報(動作判定基準情報)を記憶する。
図15は、動作判定基準情報の一例を示す図である。図15に示すように、動作判定基準情報には、例えば、プレイヤ100の体の動き(動作)を識別する情報と、3次元位置情報が満たすべき動作判定基準と、が対応付けられて格納される。つまり、動作判定基準は、プレイヤが所定の動作をした場合、3次元空間におけるプレイヤの部位の位置変化が満たすべき条件である。図15に示すように、動作判定基準は、例えば、プレイヤ100の各部位の3次元座標の変化速度、変化方向、変化量等である。
動作判定基準情報に格納された体の動きが「上にジャンプ」である場合、例えば、頭P1と腰P10の3次元座標の変化速度、変化方向、変化量に対応する条件が、検出される動作を識別する情報に対応付けられている。この場合、プレイヤ100の頭P1と腰P10の3次元座標の変化速度、変化方向、変化量が、動作判定基準情報に格納された動作判定基準を満たせば、プレイヤ100がジャンプをしたと判定される。
プレイヤ100の他の動作(例えば、斜め前にジャンプをする、斜め後ろにジャンプをする、両手を上げる等)についても同様に、3次元位置情報が示す3次元座標が、動作判定基準情報に格納された動作判定基準を満たすか否かに基づいてプレイヤ100の動作が判別される。
また例えば、ゲームデータ記憶部80は、3次元位置情報に関する条件に対応付けて動作判定基準を記憶する。3次元位置情報に関する条件とは、3次元空間におけるプレイヤ100の位置が満たす条件であり、例えば、3次元空間におけるプレイヤ100の身長や姿勢等である。ここでは、3次元位置情報に関する条件が、プレイヤ100の体の大きさである場合を説明する。即ち例えば、プレイヤ100の身長と、動作判定基準情報と、が対応付けられている場合を説明する。
図16は、3次元位置情報に関する条件に対応付けられた動作判定基準情報を示す図である。図16に示すように、例えば、プレイヤ100の身長を示す情報と、動作判定基準情報と、が対応付けられている。なお、図16においては、説明の簡略化のために、プレイヤ100の身長を示す情報をセンチメートル表記で記載してあるが、プレイヤ100の身長を示す情報は、例えば、3次元空間における3次元座標間の距離を示す値であってよい。
例えば、プレイヤ100の身長が155センチメートルである場合、このプレイヤ100の動作を判定する際には動作判定基準情報Dが用いられる。また例えば、プレイヤ100の身長が185センチメートルである場合、このプレイヤ100の動作を判定する際には動作判定基準情報Gが用いられる。
なお、図16に示す動作判定基準情報A〜Hは、データ形式は同様(図15)であるが、格納される値がそれぞれ次のように異なる。
図17及び図18は、動作判定基準情報の一例を示す図である。例えば、図17は、図16に示す場合に比べてプレイヤ100の身長が比較的大きい場合の動作判定基準の一例である。一方、図18は、図16に示す場合に比べてプレイヤ100の身長が比較的小さい場合の動作判定基準の一例である。
即ち例えば、図16は、身長が155センチメートルのプレイヤ100の動作判定に使用される動作判定基準情報Dである。例えば、図17は、身長が185センチメートルのプレイヤ100の動作判定に使用される動作判定基準情報Gである。例えば、図18は、身長が135センチメートルのプレイヤ100の動作判定に使用される動作判定基準情報Bである。
図17に示すように、プレイヤ100の身長が比較的大きい場合、身長が比較的小さいプレイヤ100の動作判定に用いられる動作判定基準情報よりも、動作判定基準が、プレイヤ100の各部の変化量(移動量)が大きくなり、かつ、移動速度が遅くなるように値が変更されている。
一方、図18に示すように、プレイヤ100の身長が比較的小さい場合、身長が比較的大きいプレイヤ100の動作判定に用いられる動作判定基準情報よりも、動作判定基準が、プレイヤ100の各部の変化量(移動量)が小さくなり、かつ、移動速度が速くなるように値が変更されている。
つまり、本実施形態においては、ゲーム装置20は、プレイヤ100の体の大きさに応じた最適な動作判定基準情報を使用してプレイヤ100の動作を判定する。即ち、本実施形態のゲーム装置20によれば、プレイヤ100の体の動きの判定の精度を向上することができる。
なお、上記説明した動作判定基準情報は、ゲーム装置20の図示しないROM等に記憶されていてもよい。
また、ゲームデータ記憶部80は、例えば、検知可能空間60を特定するための判定対象空間情報を記憶する。例えば、検知可能空間60の形状が図6に示すような四角錘台である場合、検知可能空間60の各辺の長さ、及び配置位置を示す情報が記憶される。つまり、これらの情報に基づいて、検知可能空間60の位置が特定される。また、検知可能空間60の各辺の長さは、予め定められた値であってよい。
なお、所定時間毎に、3次元空間におけるプレイヤ100の部位の位置変化が算出されて、3次元位置情報とは別個に位置変化を示す情報が、ゲームデータ記憶部80に記憶されるようにしてもよい。
具体的には、例えば、ゲームデータ記憶部80に記憶された3次元位置情報が参照されることによって、3次元空間におけるプレイヤ100の各部の3次元座標の変化(ベクトル)の速度、方向、大きさを識別するベクトル変化情報が算出されてゲームデータ記憶部80に記憶されるようにしてもよい。この場合、判定部84は、上記のように算出されたベクトル変化情報と、図15に示す動作判定基準情報と、を比較することになる。
[1−6−2.位置取得部]
位置取得部82は、マイクロプロセッサ23を主として実現される。位置取得部82は、プレイヤ100を撮影する撮影手段(撮影部12)から得られる撮影画像と、深度測定手段(深度測定部13)の測定基準位置とプレイヤ100との間隔に関する深度情報と、に基づいて、3次元空間におけるプレイヤ100の位置に関する3次元位置情報を生成する位置情報生成手段(マイクロプロセッサ10)から3次元位置情報(図5)を取得する。
本実施形態の場合、位置取得部82は、3次元空間におけるプレイヤ100の部位の位置を示す3次元位置情報を取得する。3次元位置情報は、例えば、位置検出装置1のマイクロプロセッサ10(位置情報生成手段)によって生成され、ゲーム装置20に送信される。この3次元位置情報は、例えば、取得時間と対応付けられてゲームデータ記憶部80に格納される。ゲーム装置20のマイクロプロセッサ23は、位置取得部82が取得した3次元位置情報を時系列的に参照することによって、3次元位置情報の変化を検出することができる。
なお、複数のプレイヤ100がゲームをプレイする場合、位置取得部82は、複数のプレイヤ100のそれぞれに対応する3次元位置情報を取得する。この場合、例えば、プレイヤ100を識別する情報と対応付けられて3次元位置情報がゲームデータ記憶部80に記憶される。プレイヤ100は、例えば、3次元位置情報が示すプレイヤ100の体の大きさ(例えば、身長)や、プレイヤ100の輪郭、プレイヤ100の立ち位置等に基づいて識別される。
例えば、プレイヤ100の頭P1の3次元座標と、右かかとP13と左かかとP14の中点と、の距離Lに基づいてプレイヤ100の身長が検出される。位置取得部82は、例えば、身長を示す距離Lによってプレイヤ100を識別することによって、3次元位置情報が、どのプレイヤ100に対応するものであるか、を判別することができる。プレイヤ100を識別するのは、位置検出装置1であってもよいし、ゲーム装置20であってもよい。
[1−6−3.判定部]
判定部84は、マイクロプロセッサ23を主として実現される。判定部84は、3次元空間におけるプレイヤ100の位置の変化が、プレイヤ100の動作に関する動作判定基準を満たすか否かを判定する。例えば、判定部84は、3次元空間におけるプレイヤ100の部位の位置変化を、主記憶24に記憶された3次元位置情報の時系列的な変化に基づいて判定する。また例えば、判定部84は、3次元位置情報の変化と、動作判定基準と、の比較結果に基づいてプレイヤ100の動作を判定する。
図15に示す動作判定基準の場合、判定部84は、例えば、3次元位置情報の変化と、動作判定基準が示す変化の程度と、の類似具合を示す類似度に基づいて、プレイヤ100の動作を判定する。例えば、パターンマッチングによる類似演算を用いて、3次元位置情報の変化に対応する速度、方向、及び変化量と、動作判定基準が示すベクトルの速度、方向、及び変化量と、の類似度が算出される。この類似度が所定範囲(例えば、閾値以上)である場合、プレイヤ100が、この動作判定基準に対応付けられた動作をした、と判定される。
本実施形態においては、判定部84が、3次元空間におけるプレイヤ100の複数の部位(例えば、16個)のうちの一又は複数(例えば、2個)の位置変化が、動作判定基準を満たすか否かを判断する場合を説明する。つまり、3次元位置情報に含まれるプレイヤ100の部位の全て(例えば、頭P1〜左つま先P16)の変化ではなく、このうちの一又は複数のみ(例えば、頭P1と腰P10のみ)が動作の判定に使用される。
また、判定部84は、3次元位置情報に基づいて動作判定基準を変更する手段を含み、3次元空間におけるプレイヤ100の位置の変化が、変更された動作判定基準を満たすか否かを判定する。例えば、判定部84は、3次元位置情報に関する条件に対応する動作判定基準に変更する。
本実施形態においては、判定部84が、3次元空間におけるプレイヤ100の複数の部位の位置間隔(距離間隔)に基づいて動作判定基準を変更する場合を説明する(図19のS103の処理)。即ち例えば、判定部84は、プレイヤ100の複数の部位の位置間隔に基づいて判別される、3次元空間におけるプレイヤ100の体の大きさ(例えば、身長や腕の長さ等)に基づいて動作判定基準を変更する。
なお、判定部84がプレイヤ100の動作を判定するための動作判定基準としては、3次元位置情報の変化に基づいて動作を判定できる条件であればよく、図15に示すような動作判定基準情報を用いた例に限られない。例えば、3次元位置情報の変化を示す値を所定の数式に代入して得られる値に基づいて、動作判定基準を満たすか否かが判定されるようにしてもよい。他にも例えば、3次元位置情報の変化を示す値を引数とする関数(予めゲーム作成者によって作成されている)の戻り値に基づいてプレイヤ100の動作が判定されるようにしてもよい。
[1−6−4.ゲーム処理実行部]
ゲーム処理実行部86は、マイクロプロセッサ23を主として実現される。ゲーム処理実行部86は、判定部84の判定結果に基づいてゲーム処理を実行する。ゲーム処理実行部86は、例えば、判定部84により判定されたプレイヤ100の動作に基づいて、ゲームキャラクタ51を動作させるゲーム処理を実行する。即ち、例えば、プレイヤ100がジャンプの動作を行った場合に、所定のゲーム処理が実行され、ゲームキャラクタ51がジャンプする。
[1−7.ゲーム装置において実行される処理]
図19は、ゲーム装置20において実行される処理の一例を示すフロー図である。図19の処理は、マイクロプロセッサ23が、光ディスク42から読み出されたプログラムに従って動作することにより実行される。図19の処理は、例えば、所定時間毎(例えば、1/60秒毎)に実行される。
図19に示すように、まず、マイクロプロセッサ23(位置取得部82)は、プレイヤ100の3次元位置情報を取得する(S101)。例えば、この3次元位置情報は、取得時間と対応付けられてゲームデータ記憶部80に記憶される。
マイクロプロセッサ23は、3次元位置情報に基づいてプレイヤ100の体の大きさを算出する(S102)。例えば、3次元位置情報に含まれるプレイヤ100の頭P1の3次元座標と、右かかとP13と左かかとP14の中点と、の距離Lを算出する。この距離Lは、例えば、プレイヤ100の身長に対応する値として使用される。
なお、S102においては、プレイヤ100の体の大きさが算出されればよく、上記のように、身長に対応する値でなくてもよい。つまり、S102において算出されるプレイヤ100の体の大きさは、プレイヤ100の体格に関するものであればよく、身長以外に関する体の大きさが算出されるようにしてもよい。
例えば、右肩P3の3次元座標と、右手P7の3次元座標と、に基づいてプレイヤ100の腕の長さが算出されるようにしてもよい。他にも例えば、腰P10の3次元座標と、右かかとP13と左かかとP14の中点と、に基づいてプレイヤ100の足の長さが算出されるようにしてもよい。即ち、3次元位置情報が示すプレイヤ100の各部の位置に基づいて判別可能な体の大きさであればよい。
次いで、マイクロプロセッサ23は、S102において算出されたプレイヤ100の体の大きさに基づいて動作判定基準を変更する(S103)。例えば、S102において算出されたプレイヤ100の体の大きさに対応付けられた動作判定基準情報(図16)が参照されることによって、動作判定基準が変更される。
なお、上記ではプレイヤ100の身長に基づいて動作判定基準が変更される場合を説明したが、例えば、先述のように、S102においてプレイヤ100の腕の長さや脚の長さが算出された場合、これらに基づいて動作判定基準が変更されるようにしてもよい。
マイクロプロセッサ23(判定部84)は、3次元空間におけるプレイヤ100の部位の位置変化が動作判定基準情報を満たすか否かを判定する(S104)。S104においては、3次元位置情報の変化と、S103において変更された動作判定基準情報と、を比較することによってプレイヤ100の動作が検出されることになる。例えば、判定部84は、3次元空間におけるプレイヤ100の頭P1の位置及び腰P10の位置の変化が、動作判定基準を満たすか否かを判定し、プレイヤ100のジャンプの動作を検出する。
マイクロプロセッサ23(ゲーム処理実行部86)は、S104において検出されたプレイヤ100の動作に基づいてゲーム処理を実行する(S105)。例えば、ゲーム処理実行部86は、3次元空間におけるプレイヤ100の頭の位置及び腰の位置の変化が動作判定基準を満たす場合、プレイヤ100がジャンプの動作を行ったものと判断して、所定のゲーム処理(例えば、ゲームキャラクタ51にジャンプの動作をさせる処理)を実行する。
[1−8.実施形態のまとめ]
以上に説明したゲーム装置20では、プレイヤ100の動作を判定する際に使用する動作判定基準情報を、位置検出装置1から得られる3次元位置情報に基づいて変更する。ゲーム装置20によれば、プレイヤ100の状態に応じた最適な動作判定基準情報を用いてプレイヤ100の動作の判定の精度を向上することができる。
例えば、身長が高いプレイヤ100と身長が低いプレイヤ100が、それぞれ同じ動作をした場合、この2人のプレイヤ100の各部位の動き方(速度、変化量等)は異なるので、プレイヤ100の動作が正確に検出されない可能性がある。ゲーム装置20は、3次元空間におけるプレイヤ100の位置や体の大きさ等を検出し、この検出した情報に基づいて動作判定基準情報を変更する。このようにすると、このプレイヤ100にとって最適な動作判定基準情報を用いることができるので、プレイヤ100の動作の判定の精度を向上することができる。
例えば、従来のようにプレイヤ100を撮影した画像に基づいてプレイヤ100の身長や腕の長さを把握してプレイヤ100の動作を解析する方法に比べて、本実施形態のゲーム装置20によれば、上記のように、プレイヤ100の体の大きさを極めて正確に判定することが可能になるので、プレイヤ100の動作の判定の精度を格段に向上させることができる。
即ち例えば、画像によってプレイヤ100の体の大きさを把握する場合、プレイヤ100の立ち位置によって撮影される体の大きさが異なるので、プレイヤ100の体の大きさを正確に把握することができない。例えば、子どもがカメラに近い位置にいる場合と、大人がカメラから離れた位置にいる場合と、で同じ身長として認識されてしまう可能性があり、プレイヤ100の動作を正確に検出することができない。
本実施形態のゲーム装置20では、特に、この問題を解決し、プレイヤ100の深度に基づいて3次元空間におけるプレイヤ100の位置を正確に判定することができる。つまり、3次元位置情報に関する条件(体の大きさ等)に基づいて動作判定基準情報を変更することによって、プレイヤ100の動作を正確に検出することができる。
なお、本実施形態においては、図19に示す処理が所定時間毎に実行される場合を説明したが、動作判定基準情報の変更処理については、ゲーム開始後に一度だけ(または、所定時間が経過する毎に)実行されるようにしてもよい。即ち、S102とS103の処理は、一度実行されたらスキップされるようにしてもよい。
また、3次元位置情報により判別されるプレイヤ100の体の大きさに基づいて動作判定基準情報が変更される場合を説明したが、動作判定基準は、3次元位置情報に基づいて判別される情報によって変更されればよく、動作判定基準の変更方法は、本実施形態の例に限られない。
[プレイヤの姿勢]
例えば、3次元位置情報が示すプレイヤ100の姿勢に基づいて動作判定基準が変更されるようにしてもよい。即ち、例えば、プレイヤ100が、前かがみになっている場合のように体を動かしづらい姿勢(体勢)の時は、体を少し動かすだけで動作が検出されるようにしてもよい。
この場合、例えば、判定部84は、3次元空間におけるプレイヤ100の複数の部位の位置関係が所定の条件を満たすか否かに基づいて動作判定基準を変更する。この所定の条件は、プレイヤ100の姿勢に関する条件(3次元位置情報に関する条件)である。例えば、プレイヤ100の各部位の3次元座標の位置関係(互いの距離や方向)を示す条件である。
プレイヤ100の姿勢は、例えば、3次元位置情報に含まれる各部位(頭P1〜左つま先P16)の位置関係と、予め定められた条件と、が比較されることによって、プレイヤ100が直立しているか、プレイヤ100が前にかがんでいるか等が判別される。
例えば、プレイヤ100が直立している場合、胸P9と腰P10とを結ぶベクトルは、略Zw軸方向と一致するが、プレイヤ100が前にかがんでいる場合、胸P9と腰P10とを結ぶベクトルは、Zw軸に交差する方向となる。プレイヤ100の姿勢に関する上記の条件は、予めゲーム作成者によって定められていてよい。
他にも例えば、ルックアップテーブルを用いてプレイヤ100の姿勢が判別されるようにしてもよい。この場合例えば、3次元空間における基準点と、プレイヤ100の各部位と、の位置関係を示す情報と、プレイヤ100の姿勢と、がテーブルに対応付けられており、この対応付けが参照されることによってプレイヤ100の姿勢が判別される。
上記のように動作判定基準が変更される場合、例えば、プレイヤ100が前にかがんだ姿勢の場合、プレイヤ100が直立している場合に比べてプレイヤ100は動きづらいので、3次元空間におけるプレイヤの部位の位置変化が遅く、かつ/又は、小さくなるように動作判定基準が変更される。動作判定基準の変更方法は、実施形態と同様であってよい。この場合、プレイヤ100が体を動かしづらい姿勢であっても、プレイヤ100の動作を正確に検出することができる。
[プレイヤの立ち位置]
また例えば、3次元位置情報が示すプレイヤ100の立ち位置(例えば、プレイヤ100と検知可能空間60との位置関係)に基づいて動作判定基準が変更されるようにしてもよい。例えば、プレイヤ100が検知可能空間60の端の方に立っていた場合、プレイヤ100が大きく体を動かすと検知可能空間60からはみ出てしまう可能性があるので、プレイヤ100が少し体を動かすだけで動作が検出されるようにしてもよい。
この場合、例えば、判定部84は、3次元空間におけるプレイヤ100の位置が3次元空間の所定領域(所定空間)にあるか否かに基づいて動作判定基準を変更する。この所定領域は、例えば、検知可能空間60内に含まれる領域である。つまり、この場合、プレイヤ100の位置が所定領域に含まれるか否か、が3次元位置情報に関する条件となる。
図20は、検知可能空間60に含まれる領域を示す図である。図20は、検知可能空間60が、領域60aと、領域60bと、に分けられた場合を示す。例えば、プレイヤ100が領域60aにいる場合と、プレイヤ100が領域60bにいる場合と、で使用される動作判定基準情報が変更されるようにしてもよい。
例えば、この所定領域(例えば、領域60aと領域60b)毎に、動作判定基準が対応付けられており、プレイヤ100の位置(例えば、腰P10の3次元座標)を含む領域に対応付けられた動作判定基準が使用されることによって、動作判定基準が変更される。動作判定基準の変更方法については、実施形態と同様の方法であってよい。
例えば、プレイヤ100の腰P10の3次元座標が領域60bに含まれた場合、プレイヤ100の領域60aの場合よりも、3次元空間におけるプレイヤの部位の位置変化が遅く、かつ/又は、小さくなるように、動作判定基準が変更されるようにしてもよい。即ち、この場合、プレイヤ100が検知可能空間60の端部付近にいるので、プレイヤ100が検知可能空間60からはみ出ないように比較的小さな動きをしても、ゲーム装置20は、プレイヤ100の動作を検出することができるようになる。
なお、図20に示す例では、領域を2つとして説明したが、領域の数は任意であってよい。また例えば、3次元空間における基準点と、プレイヤ100の立ち位置と、の位置関係に基づいて動作判定基準が変更されるようにしてもよい。例えば、この両者の間隔に基づいて変更の程度が決定される。
[複数のプレイヤの位置関係]
また例えば、ゲーム装置20によって実行されるゲームが、複数のプレイヤ100によってプレイされるものである場合、3次元位置情報が示す複数のプレイヤ100の互いの位置関係に基づいて動作判定基準が変更されるようにしてもよい。
例えば、複数のプレイヤ100同士が互いに近い位置でゲームをプレイしていた場合、これらのプレイヤ100が大きく体を動かすと、お互いにぶつかる可能性があるので、このような場合には、プレイヤ100が少し体を動かすだけで動作が検出されるようにしてもよい。
この場合、例えば、判定部84は、3次元空間における複数のプレイヤ100の互いの位置関係(例えば、距離や方向)に基づいて動作判定基準を変更する。例えば、判定部84は、複数のプレイヤ100の腰P10の3次元座標同士の距離に基づいて動作判定基準を変更する。例えば、プレイヤ100の互いの位置関係と、動作判定基準と、が対応付けられて記憶される。変更方法については、実施形態と同様の方法であってよい。
例えば、複数のプレイヤ100同士の距離が所定範囲(例えば、基準値以内)である場合、3次元空間におけるプレイヤの部位の位置変化が遅く、かつ/又は、小さくなるように動作判定基準が変更される。この場合、プレイヤ100が体をゆっくり、又は、小さく動かした場合でもプレイヤ100の動作を正確に検出することができるので、プレイヤ100同士が接近した場合でも、お互いにぶつからずにプレイすることができる。
また例えば、複数のプレイヤ100の互いの位置関係によって動作判定基準が変更されるようにすればよく、上記の複数のプレイヤ100の互いの距離に基づいて動作判定基準が変更される例に限られない。例えば、2人のプレイヤ100が前後に並んでいる場合、前にいるプレイヤ100が斜め後ろにジャンプする動作の動作判定基準が示す変化量が小さくなるようにし、後ろにいるプレイヤ100が斜め前にジャンプする動作の動作判定基準が示す変化量が小さくなるようにしてもよい。
つまり、複数のプレイヤ100の前後関係に基づいて動作判定基準が変更されるようにしてもよい。複数のプレイヤ100の前後関係は、例えば、それぞれの腰P10の3次元座標を結んだベクトルの方向に基づいて判別される。このように動作判定基準が変更されることによって、互いにぶつからないように動作判定基準を変更することができる。
また例えば、上記説明した動作判定基準の変更方法をそれぞれ組み合わせてもよい。即ち例えば、プレイヤ100の身長と立ち位置との両者に基づいて動作判定基準が変更されるようにしてもよい。
[2.第1変形例]
上記実施形態においては、ゲームデータ記憶部80に、3次元位置情報に関する条件に対応付けて動作判定基準情報を記憶し、プレイヤ100の体の大きさに対応付けられている動作判定基準情報が参照されることによって、動作判定基準が変更される場合を説明したが、動作判定基準の変更方法は、実施形態の例に限られない。例えば、ゲームデータ記憶部80は、初期値としての動作判定基準情報を一つだけ記憶し、3次元位置情報に関する条件に基づいて動作判定基準情報を補正することによって、動作判定基準情報が変更されるようにしてもよい。
例えば、S103においては、S102において算出されたプレイヤ100の身長と、ゲームデータ記憶部80に記憶された初期値としての動作判定基準情報と、に基づいて、この動作判定基準情報の値が変更される。
この変更の程度(例えば、速度の変化量)は、例えば、プレイヤ100の身長(例えば、180センチメートル)と、初期値としての動作判定基準情報に対応付けられた基準身長(例えば、160センチメートル)と、の比率に基づいて予め定められた方法によって決定される。例えば、3次元位置情報に関する条件と、動作判定基準情報の変更方法(及び、変更の程度)と、が対応付けられてゲームデータ記憶部80に記憶されている。即ち、3次元位置情報に関する条件に基づいて動作判定基準情報の変更方法(及び、変更の程度)が決定されて、初期値としての動作判定基準情報が変更される。
この場合、例えば、プレイヤ100の体の大きさが所定範囲(例えば、基準値以上)であった場合、初期値としての動作判定基準(例えば、図15)よりも、3次元空間におけるプレイヤの部位の位置変化が遅く、かつ/又は、大きくなるように動作判定基準が変更(補正)される(例えば、図17)。
一方、例えば、プレイヤ100の体の大きさが上記の所定範囲でない(例えば、基準値未満)であった場合、初期値としての動作判定基準(例えば、図15)よりも、3次元空間におけるプレイヤの部位の位置変化が速く、かつ/又は、小さくなるように動作判定基準が変更(補正)される(例えば、図18)。
プレイヤ100の身長が基準身長よりも大きい場合、例えば、動作判定基準に含まれる各部位の変化の速度が遅くなるとともに変化量が大きくなるように、初期値としての動作判定基準が変更される。また例えば、プレイヤ100の身長が基準身長よりも小さい場合、例えば、動作判定基準に含まれる各部位の変化の速度が速くなるとともに変化量が小さくなるように、初期値としての動作判定基準が変更される。
また、第1変形例のようにしてプレイヤ100の体の大きさに基づいて動作判定基準情報が変更される場合、動作判定基準情報に格納される動作に応じて、変更の際に参照される3次元位置情報に関する条件(例えば、身長、腕の長さ、足の長さ等)が異なるようにしてもよい。即ち例えば、初期値としての動作判定基準のうちプレイヤ100が両手を上げる動作に関しては、プレイヤ100の腕の長さに基づいて決定される変更方法で変更されるようにする。一方、例えば、初期値としての動作判定基準のうちプレイヤ100がジャンプをする動作に関しては、プレイヤ100の足の長さに基づいて動作判定基準が変更される。
本変形例において変更された動作判定基準情報は、例えば、主記憶24に一時的に記憶される。他にも、プレイヤ100を識別する情報と対応付けられてメモリカード43に登録データとして記憶されるようにしてもよい。
このように動作判定基準情報を変更することによって、プレイヤ100毎に最適な動作判定基準情報を算出して作成することができる。
[3.第2変形例]
上記実施形態においては、3次元位置情報に基づいて動作判定基準が変更されるようにしたが、位置検出装置1によって検出可能な他の情報に基づいて動作判定基準が変更されるようにしてもよい。例えば、プレイヤ100の深度に基づいて動作判定基準が変更されるようにしてもよい。つまり、この場合、プレイヤ100の3次元位置情報に関する条件は、プレイヤ100の深度となる。
例えば、図1に示すように位置検出装置1は、プレイヤ100の注視物(例えば、表示部40)の上部又は下部に配置されることがある。複数のプレイヤ100がゲームをプレイする場合、位置検出装置1から離れた場所にいるプレイヤ100は、このプレイヤ100の前方にいる他のプレイヤ100が邪魔になってゲーム画面50が見えづらくなることが考えられる。他にも例えば、位置検出装置1から離れた場所にいるプレイヤ100は、表示部40の大きさによっては、ゲーム画面50が見えづらくなることが考えられる。
これらの場合、例えば、プレイヤ100は、ゲームキャラクタ51が障害物54に近づいていることに気付きにくくなるので、この障害物54をよける動作が小さくなってしまうことが考えられる。つまり、プレイヤ100の立ち位置によってゲームの公平さが失われてしまう可能性がある。
そこで、本変形例のゲーム装置20は、プレイヤ100の深度に基づいて動作判定基準を変更する。例えば、位置検出装置1の測定基準位置とプレイヤ100の位置との間隔が所定範囲(例えば、基準値以上)であった場合、予め定められた動作判定基準よりも3次元空間におけるプレイヤの部位の位置変化が遅く、かつ/又は、小さくなるように動作判定基準が変更される。即ち例えば、位置検出装置1から離れた場所にいるプレイヤ100は、動作判定基準が甘くなるように変更される。
一方、例えば、測定基準位置とプレイヤ100の位置との間隔が上記所定範囲でない(例えば、基準値未満)であった場合、予め定められた動作判定基準よりも3次元空間におけるプレイヤの部位の位置変化が速く、かつ/又は、大きくなるように動作判定基準を変更する。即ち例えば、位置検出装置1の近くにいるプレイヤ100は、動作判定基準が厳しくなるように変更される。
本変形例では、ゲーム装置20は、測定基準位置とプレイヤ100の位置との間隔を取得する手段を含む。例えば、測定基準位置とプレイヤ100の位置との間隔は、ゲームデータ記憶部80に記憶された3次元位置情報が示すプレイヤ100の位置(例えば、頭P1〜左つま先P16の何れかの3次元座標)に基づいて取得される。
他にも例えば、ゲーム装置20が、位置検出装置1から深度情報(例えば、深度画像)を取得する手段を含んでいてもよい。この場合、取得された深度画像は、例えば、ゲームデータ記憶部80に記憶される。つまり、位置検出装置1から深度画像を取得することによって、測定基準位置とプレイヤ100の位置との間隔が判定されるようにしてもよい。
また、判定部84は、3次元空間における測定基準位置とプレイヤ100の位置との間隔(深度)に基づいて動作判定基準を変更する。
図21は、本変形例のゲーム装置20において実行される処理の一例を示すフロー図である。図21は、図19に示す処理に対応する。つまり、図21の処理は、マイクロプロセッサ23が、光ディスク42から読み出されたプログラムに従って動作することにより実行される。図21の処理は、例えば、所定時間毎(例えば、1/60秒毎)に実行される。
S201は、S101と同様であるので説明を省略する。
マイクロプロセッサ23は、プレイヤ100の深度を取得する(S202)。例えば、マイクロプロセッサ23は、3次元位置情報に基づいてプレイヤ100の深度を取得する。例えば、3次元位置情報に含まれるプレイヤ100の腰P10の3次元座標と、原点Owと、の距離に基づいて深度が取得される。他にも例えば、ゲーム装置20が深度画像(図4)を取得する場合、この深度画像の画素のうちでプレイヤ100の領域に対応する画素の画素値の平均値が算出されることによってプレイヤ100の深度が取得される。
マイクロプロセッサ23は、S202で取得した深度に基づいて動作判定基準情報を変更する(S203)。S203においては、例えば、プレイヤ100の深度を示す値と、予め定められた基準値と、の比率に基づいて動作判定基準情報の変更の程度(例えば、速度を20%減少させる等)が決定されて、動作判定基準情報が変更される。
例えば、プレイヤ100の深度が小さい場合、動作判定基準情報に含まれる動作判定基準のうちで3次元空間におけるプレイヤ100の部位の位置変化量が大きくなるように変更される。また例えば、プレイヤ100の深度が大きい場合、動作判定基準情報に含まれる動作判定基準のうちで3次元空間におけるプレイヤ100の部位の位置変化量が小さくなるように変更される。
S204とS205は、それぞれS104とS105と同様であるので、説明を省略する。
上記のように、本変形例によれば、プレイヤ100に対応する深度に基づいて動作判定基準情報を変更することができる。例えば、プレイヤ100が位置検出装置1から離れて立っていた場合、動作判定基準情報に含まれる動作判定基準を甘くするように変更したりすることができる。
即ち、プレイヤ100の深度に応じて最適な動作判定基準情報を用いてプレイヤ100の動作を判定することによって、プレイヤ100の動作を正確に判定することができる。更に、本変形例によれば、プレイヤ100の立ち位置によってゲームの公平性が失われてしまう可能性を軽減することができる。
なお、上記実施形態と変形例とを組み合わせてもよい。例えば、ゲーム装置20は、プレイヤ100の体の大きさと、プレイヤ100の深度と、の両者に基づいて動作判定基準情報を変更するようにしてもよい。この場合、プレイヤ100の体の大きさや立ち位置に応じて変更された動作判定基準情報に基づいてプレイヤ100の動作をより正確に判定することができるようになる。
[4.その他変形例]
なお、本発明は、以上説明した実施形態及び変形例に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更可能である。
(1)例えば、プレイヤ100の位置を示す3次元位置情報を図5に示すデータ格納例を挙げて説明したが、位置検出装置1から送信される3次元位置情報は、プレイヤ100の位置(例えば、立ち位置)を識別できる情報であればよく、このデータ格納例は、図5の例に限られない。例えば、プレイヤ100の基準点(例えば、頭に対応する点)から体の各部までの距離と方向を示す情報等であってもよい。他にも例えば、プレイヤ100の部位に関する情報でなくてもよく、3次元空間におけるプレイヤ100の輪郭を示す情報であってもよい。
(2)また例えば、上記では、撮影画像と深度情報(深度画像)とに基づいて3次元位置情報を生成する位置情報生成手段が位置検出装置1に含まれる例を挙げて説明したが、位置情報生成手段は、ゲーム装置20であってもよい。つまり、ゲーム装置20は、位置検出装置1から撮影画像と深度画像とを受信し、これらに基づいて3次元位置情報を生成するようにしてもよい。
(3)また、本実施形態においては、プレイヤ100の深度を測定する方法を、赤外線光の飛行時間に基づいて算出する例を挙げて説明したが、この測定方法は、本実施形態の例に限られない。他にも例えば、三角測量を行なう方法や、3次元レーザースキャニングを行なう方法等を適用可能である。また、深度情報を深度画像として取得する例を挙げて説明したが、深度情報はこれに限られない。深度情報は、プレイヤ100の深度を識別する情報であればよく、例えば、深度情報は、飛行時間を示す値であってもよい。
(4)また例えば、本実施形態においては、ゲーム装置20が、3次元位置情報に基づいてプレイヤ100の動作を判定するようにしたが、位置検出装置1が、プレイヤ100の動作を判定するようにしてもよい。この場合、位置検出装置1に動作判定基準情報(図15)が記憶される。つまり、プレイヤ100の動作が位置検出装置1によって判定され、この判定結果を示す情報のみがゲーム装置20に対して送信される。この場合、本実施形態と同様に、位置検出装置1が、動作判定基準情報の変更処理(図19、図21)が実行される。
(5)また、本実施形態においては、ゲーム装置20が実行するゲームとしてスノーボードゲームを例に挙げて説明した。ゲーム装置20が実行するゲームは、プレイヤ100の動作を検出してゲーム処理が実行されるものであればよく、実行されるゲームの種類は、これに限られない。他にも例えば、サッカーゲーム等のスポーツゲームであってもよいし、ダンスゲームや格闘ゲーム等であってもよい。