(57)【特許請求の範囲】
【請求項１】
ユーザが操作する認識対象の撮像された画像から該認識対象の位置・動き・方向を抽出する第１のステップと、
前記認識対象の位置・動き・方向を仮想空間内の第１の制御対象の位置・動き・方向に変換する第２のステップと、
前記第１の制御対象の位置・動き・方向に基づき、前記第１の制御対象の角度に基づく算出基準から前記ユーザに対応する前記仮想空間内の第２の制御対象の位置・動き・方向を計算する第３のステップと、
前記第２のステップで得られた位置・動き・方向に基づき前記仮想空間内の第１の制御対象を制御する第４のステップと、
前記第３のステップで求めた位置・動き・方向に基づき、前記仮想空間内の前記第２の制御対象を制御する第５のステップと、
を有することを特徴とする仮想物体制御方法。
【請求項２】
前記画像は、物体からの反射光の空間的な強度分布を示した距離画像であることを特徴とする請求項１記載の仮想物体制御方法。
【請求項３】
ユーザが操作する認識対象の画像を取得する画像取得手段と、
この画像取得手段で取得した画像から該認識対象の位置・動き・方向を抽出するための画像処理を施す画像処理手段と、
この画像処理手段で抽出された前記認識対象の位置・動き・方向を、仮想空間内の第１の制御対象の位置・動き・方向に変換する変換手段と、
前記第１の制御対象の位置・動き・方向に基づき、前記第１の制御対象の角度に基づく算出基準から前記ユーザに対応する前記仮想空間内の第２の制御対象の位置・動き・方向を計算する計算手段と、
前記変換手段で得られた位置・動き・方向に基づき前記仮想空間内の第１の制御対象を制御するとともに、前記計算手段で求めた位置・動き・方向に基づき、前記仮想空間内の前記第２の制御対象を制御する制御手段と、
を具備したことを特徴とする仮想物体制御装置。
【請求項４】
前記画像は、物体からの反射光の空間的な強度分布を示した距離画像であることを特徴とする請求項３記載の仮想物体制御装置。
【請求項５】
コンピュータに、
ユーザが操作する認識対象の撮像された画像から該認識対象の位置・動き・方向を抽出する第１のステップと、
前記認識対象の位置・動き・方向を仮想空間内の第１の制御対象の位置・動き・方向に変換する第２のステップと、
前記第１の制御対象の位置・動き・方向に基づき、前記第１の制御対象の角度に基づく算出基準から前記ユーザに対応する前記仮想空間内の第２の制御対象の位置・動き・方向を計算する第３ステップと、
前記第２のステップで得られた位置・動き・方向に基づき前記仮想空間内の第１の制御対象を制御する第４のステップと、
前記第３のステップで求めた位置・動き・方向に基づき、前記仮想空間内の前記第２の制御対象を制御する第５のステップと、
を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、距離画像から抽出された認識対象の動きや位置等の情報を基に仮想空間内のＣＧモデル（仮想物体）の動き、形状等を制御する仮想物体制御方法に関する。
【０００２】
また、本発明は、距離画像から抽出された認識対象の動きや位置等の情報を基に仮想空間内のＣＧモデル（仮想物体）の動き、形状等を制御する仮想物体制御装置に関する。
【０００３】
【従来の技術】
従来、アーケードゲーム機などの遊具装置では、ボクシングゲームや、射撃ゲームなどの人間の動きを利用したゲームが多く開発されてきている。ボクシングゲームでは、ユーザが実際にサンドバッグを打撃したときの圧力を物理的に測定している。このとき、測定されているのは、ユーザのパンチがサンドバッグに当たった瞬間の圧力のみである。パンチがユーザからどのような経路でどのくらいの速さで繰り出されたのかという情報は用いられていない。このため、単純なパンチの強さだけを競う単調なゲームになっている。
【０００４】
射撃ゲームでは、おもちゃの銃の先に発光体をつけ、その発光体の光が、画面上のどこにあたるかを検知する。銃の引き金が弾かれたときに光が当たっている物体に銃弾があたったと判定するようになっている。このように単純なため、射撃の腕を競うと言うよりは、呈示された標的をいかに素早く見つけて撃つだけの反射神経を競うだけのゲームになってしまっている。
【０００５】
一方、ＣＣＤカメラなどを用いて撮像した画像を解析して、人間の身体の位置、動きなどを認識する方法もとられている。この方法では、進行方向をまず、ＣＣＤカメラなどの撮像装置を用いて撮影する。その画像から人間を抽出する場合では、例えば、顔や手の色が肌色なので、それ以外の背景などの余計な部分を取り除き、障害物となる物体など認識したい対象のみを切り出すという前処理を行う。そして、その処理後の画像から対象物の形状、動き等を認識する。
【０００６】
まず、この認識対象の切り出しという前処理部分について説明する。従来の手法では、カメラで撮影した画像から、取得したい対象物の部分のみを切り出す作業手段として、対象物と、それ以外の部分の何らかの相違点を手がかりとして対象物の切り出しが行われていた。
【０００７】
この手がかりとして、色相の変化を利用する方法、差分画像を利用する方法などが用いられている。色を使って切り出す場合、色相差の大きな部分を抜き出し、細線化などの処理を行い、エッジを抽出する。人間を対象にする場合には、顔や手の部分の肌色に注目し、その色相部分のみを抽出しようとするものである。が、色相差を用いる方法は、照明の色や角度などにより、肌色といっても変化し、また、背景の色相が肌色に近いと、人間の肌色と識別するのが難しいなどの問題があり、定常的に切り出すことは困難である。また、照明が全くない状態では、撮像画像は全部暗くなってしまうので、人間でも暗闇で撮影した写真から物体を判別することは難しい。
【０００８】
また、ビデオ画像のフレーム間の動きベクトルを算出し、動いている物体を解析する方式もあるが、この場合、動いている物体が少ないうちは問題ないが、動いている物体が多いと、動きベクトルの数が急に増え、フレーム間で動きベクトルを算出の負荷が増し、算出が追いつかなくなる。
【０００９】
家庭向けのゲームなどでは、臨場感を増すために、フォースフィードバックの機能を有したジョイスティックや、振動機能のついた振動パックと呼ばれる入力デバイスが使われだしている。
【００１０】
ジョイスティックの形状は、飛行機などの制御をおこなうレバーに類似している。このため、フライトシミュレータと呼ばれる飛行機の操縦を模擬するゲームでは、確かに感臨場がある。が、それ以外の操作では、現実の操作と異なる使い勝手となる問題点がある。
【００１１】
振動パックも同様に、慣れれば、ハンドルがなくても車の運転を模擬したカーレースゲームなどの操作ができる。が、現実の操作とは大きく操作感が隔たっているという問題がある。
【００１２】
たとえば、子供は、ロボットや飛行機などのおもちゃを使って、飛行機同士を戦わせたり、あるいは、ロボットが積み木の町を作ったり壊したりというように、現実にあるものを使いながら、いろいろなストーリを作って遊ぶ。その様な現実に存在するものと、コンピュータ内に作られた仮想の環境とを融合して遊ぶようなことは従来できなかった。
【００１３】
【発明が解決しようとする課題】
このように、従来は、特殊なウェアや器具を身につけたり、ジョイスティック等の特殊な装置を用いるしか、コンピュータ内に存在する仮想空間内の物体を制御することができなかった。すなわち、現実に存在するものと仮想空間とを違和感なく融合することができなかった。
【００１４】
そこで、本発明は、コンピュータ内に作られた仮想空間内の物体をより現実的な操作で制御できる仮想物体制御方法を提供することを目的とする。
また、本発明は、コンピュータ内に作られた仮想空間内の物体をより現実的な操作方法で制御できる仮想物体制御装置を提供することを目的とする。
【００１５】
【課題を解決するための手段】
本発明の仮想物体制御方法は、認識対象の撮像された画像から該認識対象の位置と動きと方向に関する情報を抽出して、その抽出した情報に基づき該認識対象に対応する仮想空間内の制御対象を制御することにより、コンピュータ内に作られた仮想空間内の物体をより現実的な操作で制御できる。
【００１６】
本発明の仮想物体制御装置は、認識対象の画像を取得する画像取得手段と、
この画像取得手段で取得した画像から認識対象の位置と動きと方向に関する情報を抽出するための画像処理を施す画像処理手段と、
この画像処理手段で抽出した情報に基づき前記認識対象に対応する仮想空間内の制御対象を制御する制御手段と、
を具備したことにより、コンピュータ内に作られた仮想空間内の物体をより現実的な操作で制御できる。
【００１７】
【発明の実施の形態】
以下、本発明の実施形態について図面を参照して説明する。
（第１の実施形態）
図１は第１の実施形態に係る仮想物体制御装置の構成を概略的に示したものである。
【００１８】
図１に示すように、本実施形態に係る仮想物体制御装置は、反射光を受光し、距離画像を取得する、例えば特願平９−２９９６４８号に記載されている距離画像取得部１と、取得した距離画像を解析し、認識対象の輪郭、重心の抽出や対象物までの距離の算出、認識対象の移動速度、移動ベクトルの算出等の当該認識対象に関する目的とする情報を抽出する画像処理部４と、ＣＧ（コンピュータグラフィックス）で作成された３次元あるいは２次元仮想空間と、その仮想空間内に呈示する３次元あるいは２次元仮想物体（例えば、人物、遊具等で以下、ＣＧモデルと呼ぶ）の形状や仮想空間の配置位置等を記憶する形状記憶部２と、画像処理部４の解析結果に基づき、形状記憶部２に記憶されたＣＧモデルの形状や動き等を制御する仮想空間制御部３と、例えば大型の液晶パネル等の表示装置から構成され、３次元あるいは２次元ＣＧ映像としての仮想空間を可視化し、仮想空間制御部３の制御のもと、形状記憶部２に記憶された制御対象としてのＣＧモデルの形状、動き等を可視化する呈示部５とから構成されている。
【００１９】
ここで、画像取得部１および、画像取得部１にて取得される距離画像について簡単に説明する。
画像取得部１の外観を図２に示す。中央部には円形レンズとその後部にあるエリアセンサ（図示せず）から構成される受光部１０３が配置され、円形レンズの周囲にはその輪郭に沿って、赤外線などの光を照射するＬＥＤから構成される発光部１０１が複数個（例えば６個）等間隔に配置されている。
【００２０】
発光部１０１から照射された光が物体に反射され、受光部１０３のレンズにより集光され、レンズの後部にあるエリアセンサで受光される。エリアセンサは、例えば２５６×２５６のマトリックス状に配列されたセンサで、マトリックス中の各センサにて受光された反射光の強度がそれぞれ画素値となる。このようにして取得された画像が、図４に示すような反射光の強度分布としての距離画像である。
【００２１】
図３は、画像取得部１の構成例を示したもので、主に、発光部１０２、受光部１０３、反射光抽出部１０２、タイミング信号生成部１０４から構成される。
発光部１０１は、タイミング信号生成部１０４にて生成されたタイミング信号に従って時間的に強度変動する光を発光する。この光は発光部前方にある対象物体に照射される。
【００２２】
受光部１０３は、発光部１０１が発した光の対象物体による反射光の量を検出する。
反射光抽出部１０２は、受光部１０３にて受光された反射光の空間的な強度分布を抽出する。この反射光の空間的な強度分布は画像として捉えることができるので、以下、これを距離画像と呼ぶ。
【００２３】
受光部１０３は一般的に発光部１０１から発せられる光の対象物による反射光だけでなく、照明光や太陽光などの外光も同時に受光する。そこで、反射光抽出部１０２は発光部１０１が発光しているときに受光した光の量と、発光部１０１が発光していないときに受光した光の量の差をとることによって、発光部１０１からの光の対象物体による反射光成分だけを取り出す。
【００２４】
反射光抽出部１０２では、受光部１０３にて受光された反射光から、その強度分布、すなわち、図４に示すような距離画像を抽出する。
図４では、簡単のため、２５６×２５６画素の距離画像の一部である８×８画素の距離画像の場合について示している。
【００２５】
物体からの反射光は、物体の距離が大きくなるにつれ大幅に減少する。物体の表面が一様に光を散乱する場合、距離画像１画素あたりの受光量は物体までの距離の２乗に反比例して小さくなる。
【００２６】
図４において、行列中のセルの値（画素値）は、取得した反射光の強さを２５６階調（８ビット）で示したものである。例えば、「２５５」の値があるセルは、距離画像取得部１に最も接近した状態、「０」の値があるセルは、距離画像取得部１から遠くにあり、反射光が距離画像取得部１にまで到達しないことを示している。
【００２７】
距離画像の各画素値は、その画素に対応する単位受光部で受光した反射光の量を表す。反射光は、物体の性質（光を鏡面反射する、散乱する、吸収する、など）、物体の方向、物体の距離などに影響されるが、物体全体が一様に光を散乱する物体である場合、その反射光量は物体までの距離と密接な関係を持つ。手などは、このような性質をもつため、画像取得部１の前方に手を差し出した場合の距離画像は、手までの距離、手の傾き（部分的に距離が異なる）などを反映する図５に示したような３次元的なイメージを得ることができる。
【００２８】
画像処理部４では、画像取得部１から送られてきた図４に示したような距離画像データからエッジ切り出し（撮像物体の輪郭抽出）、重心抽出、面積算出、撮像物体までの距離の算出、動きベクトルの算出など、撮像体の形状、動き、位置等の情報を抽出するための種々の画像処理を行う。
【００２９】
画像取得部１は、例えば、図７に示すように、ユーザが遊具としての刀２１をもって遊技をしている状態を撮像する。画像取得部１は、認識対象としての遊具、すなわち、刀の距離画像（図１１（ａ）参照）を取得し、その距離画像を画像処理部４が解析する。
【００３０】
画像処理部４では、距離画像から刀の輪郭、重心、重心の３次元的な位置、方向、速度などを抽出し、それらを仮想空間制御部３に渡す。仮想空間制御部３では、例えば、図８に示すような形状記憶部２に記憶された３次元あるいは２次元ＣＧ（コンピュータグラフィックス）により作成された仮想空間を表示し、そこに、画像処理部４で抽出された情報に基づき、形状記憶部２に記憶されたユーザのＣＧモデル２３と刀のＣＧモデル２２の形状や動き等を制御して、リアルタイムに、呈示部５に呈示する。これにより、ユーザは、あたかも自分が仮想空間に入り込んだような感覚で、遊技をすることができる。
【００３１】
画像処理部４では、撮像物体の反射係数の違いによる反射光の強度と、認識対象とそれ以外の撮像物体との位置関係とから、まず、例えば、図６に示すような、当該距離画像内にある認識対象の輪郭情報を抽出する。
【００３２】
例えば、画像取得部１は、刀を手にしたユーザを正面から撮像できる位置に配置すれば、画像取得部１で取得された図１１（ａ）に示すような距離画像において、認識対象としての遊具、すなわち、刀は、他の撮像体より画像取得部１との距離が最も近くに存在することになる。すなわち、画像取得部１との距離が短いほど、画像取得部１が取得する反射光が強くなるので、画素値が大きくなる（画素値が大きければより黒に近くなる）。一番近い部分の刀の先の部分３１が最も黒く、刀の柄に近い部分３２、刀をもつユーザの手３３と徐徐に画素値が小さくなり（白くなり）、背景は最も遠いので、画素値はほぼ「０」となる。
【００３３】
画像取得部１から撮像物体までの距離値は、このような４階調に限らず、２５６階調あるいはより高精度に測定できる。
輪郭の抽出された物体までの距離ｄの算定には、まず当該物体の重心位置近傍の画像の代表画素値を求める。代表画素値としては、平均値、最近傍値などいくつかあるが、ここでは、最近傍値を使うとする。当該物体からの反射光の強さは物体までの距離の２乗に反比例して小さくなる。すなわち、画素値をＰ（ｉ、ｊ）とすると、その画素値と距離値ｗとの関係は、
Ｐ（ｉ、ｊ）＝Ｋ／ｗ2       …（１）
と表すことができる。ここで、Ｋは、撮像物体毎に定められるもので、例えば、ｗ＝０．５ｍのときに、当該撮像物体の画素値Ｐ（ｉ、ｊ）の値が「２５５」になるように調整された係数であり、反射係数ともいう。式（１）をｗについて解くことで、距離値ｗを求めることができる。
【００３４】
認識対象の刀の反射係数は、他の撮像体のものよりも大きいとすると（例えば、刀を握る手よりも後方にある場合でも、その画素値は、手の画像の画素値よりも大きくなる程度の大きさ）。そして、距離画像に対し、距離値によりマスキングを行う。今、４階調のうち、最も値の大きい（つまり近い部分の）階調の画像領域のみを抽出するとすると、図１１（ａ）の場合、刀の先の部分３１だけが切り出せる。これは、画素値が、ある一定値以上の値の画素以外は、最も低い値（たとえば、「０」）にセットすることにあたる。
【００３５】
輪郭情報を抽出するには、隣合う画素の画素値を比較し、画素値が一定値α以上のところだけに定数値を入れて、同じ定数値が割り振られた連続した画像領域の画素を抽出すればよい。
【００３６】
すなわち、図４のマトリックス上の座標位置（ｉ、ｊ）にある画素値をＰ（ｉ、ｊ）とし、輪郭情報の画素値をＱ（ｉ、ｊ）とすると、
・｛Ｐ（ｉ、ｊ）−Ｐ（ｉ−１、ｊ）｝＞α、かつ
｛Ｐ（ｉ、ｊ）−Ｐ（ｉ、ｊ−１）｝＞α、かつ
｛Ｐ（ｉ、ｊ）−Ｐ（ｉ＋１、ｊ）｝＞α、かつ
｛Ｐ（ｉ、ｊ）−Ｐ（ｉ、ｊ＋１）｝＞α
のとき、Ｑ（ｉ、ｊ）＝２５５
・  上記以外のとき、Ｑ（ｉ、ｊ）＝０
とすることにより、図６のような撮像物体の輪郭情報を得ることができる。
【００３７】
このようにして、図１１（ａ）から図１１（ｂ）に示すような、刀の先の部分３１の輪郭情報が切り出せる。
画像処理部４は、刀の先の部分３１の輪郭情報から当該刀の先の部分３１の重心Ｒｇを計算する。
【００３８】
また、図１１（ｂ）に示すように、重心位置を含む面の法線ベクトルを求めることで、刀の方向Ｄｇが算出できる。法線ベクトルは、重心Ｒｇを通り、重心Ｒｇを含む面に対する接平面に対して垂直な直線である。
【００３９】
認識対象である刀の重心位置と直前のフレームから抽出され認識対象である刀の重心位置とを比較して物体が動いているかどうかが判断できる。動いていると判断したときは、重心の変化量と変化方向とを表す動きベクトルを算出する。
【００４０】
重心Ｒｇの動く速度Ｖｇは、１フレーム前の重心位置をＲｇ′とすると、重心位置の変化量は（Ｒｇ−Ｒｇ’）となり、１秒間に３０フレームの距離画像を取得するのであれば、
Ｖｇ＝（Ｒｇ−Ｒｇ′）×３０    …（２）
から求めることができる。
【００４１】
このようにして、画像取得部１で取得した距離画像から認識対象の形状、方向、認識対象の重心、重心までの距離、動き等の情報を抽出することができる。
次に、図９に示すフローチャートを参照して、図１の仮想物体制御装置の処理動作について説明する。
【００４２】
まず、電源の投入あるいは動作の開始指示にて起動されると、仮想空間制御部３は、形状記憶部２に記憶されている３次元あるいは２次元ＣＧの仮想空間を呈示部５に表示する。そして、形状記憶部２に記憶されている人物のＣＧモデル（ここでは、ユーザに対応する）をその重心位置ｒ、方向ｄ、速度ｖを初期値として、呈示部５に表示されている仮想空間内に呈示する。また、遊具のＣＧモデル（ここでは、ユーザが手にしている刀に対応する）を、その重心位置Ｒ、方向Ｄ、速度Ｖの値を初期値にして、呈示部５に表示されている仮想空間内に呈示する（ステップＳ１）。
【００４３】
その後、画像取得部１は、図２に示したような発光部１０１、受光部１０３を用いて、例えば、１秒間に３０枚程度の速度で距離画像を取得する（ステップＳ２）。一般的に、ユーザとの対話的な処理を行う、すなわち、ユーザが自分のアクションに対してコンピュータなどの相手側が反応してくれていると認識できる応答速度の上限は０．２秒であり、毎秒３０枚画像取得ができれば、十分リアルタイムで処理を行い、ユーザにとって、自然な応答を返すことが可能である。
【００４４】
次に、画像処理部４は画像取得部１で取得した距離画像、例えば、図４に示したような距離画像データから、前述したように、認識対象である遊具、すなわち刀の反射係数と距離値とに基づき、刀（より詳しくは刀の先の部分（図１１（ａ）参照）３１の輪郭情報を抽出する（ステップＳ３）。そして、この抽出された刀の輪郭情報から重心位置Ｒｇ、刀の方向Ｄｇ、重心位置の動きの速度Ｖｇを算出する（ステップＳ４）。
【００４５】
仮想空間制御部３では、この距離画像から抽出された刀の重心位置Ｒｇ、刀の方向Ｄｇ、重心位置の動きの速度Ｖｇを仮想空間内の当該刀に対応するＣＧモデルの重心位置Ｒ、方向Ｄ、重心位置の動きの速度Ｖに対応付ける。この対応付けは、距離画像から抽出された現実空間内の重心位置Ｒ、方向Ｄ、重心位置の動きの速度Ｖを仮想空間内に適合するように座標、単位、大きさを変換するものである（ステップＳ５）。
【００４６】
さらに、仮想空間制御部３は、刀のＣＧモデルの重心位置Ｒ、方向Ｄ、重心位置の動きの速度ＶからユーザのＣＧモデルの重心位置ｒ、方向ｄ、重心位置の動きの速度ｖを算出する（ステップＳ６）。
【００４７】
高速化のために、計算を簡略化し、以下のような手法により、ユーザのＣＧモデルの重心位置を算出する。
図１２は、遊具（刀）のＣＧモデルの重心位置Ｐと方向Ｄとから、人物（ユーザ）のＣＧモデルの重心位置ｐと方向ｄとを算出する方法を説明するための図で、仮想空間制御部３は、例えば、所定のメモリに記憶された図１３に示ような算出基準を記憶したテーブルを参照して、刀のＣＧモデルの重心位置Ｐと方向Ｄとから、ユーザのＣＧモデルの重心位置ｐと方向ｄとを算出するようになっている。
【００４８】
刀のＣＧモデルの方向Ｄが刀のＣＧモデルの重心Ｒを含むｘｚ平面となす角をθとし、刀の方向Ｄが刀のＣＧモデルの重心Ｒを含むｙｚ平面となす角をφとする。ここでは、φを、刀の法線ベクトルの方向Ｄがｙｚ平面を挟んで右側にあるときを正とし、左側にあるときを負と概念的に定義する。
【００４９】
図１３に示す算出基準では、θがある値αより小さいとき（すなわち、刀自身はほとんど垂直になっているとき）と、θがαより大きいとき（すなわち、刀自身は水平に近くなっているとき）とで、大きく推定方法が２つに分かれ、さらに、それぞれについて、刀がｙｚ平面を挟んで右側にあるとき（φが正）と、刀がｙｚ平面を挟んで左側にあるとき（φが負）とで場合分けして判断するようになっている。
【００５０】
刀が垂直に近いときとは、ユーザは手首を曲げて体に近づけて刀を持っている状態であり、刀が水平に近いときとは、ユーザは手首を伸ばして、体から離して刀を持っている状態である。
【００５１】
図１３に示す算出基準では、刀のＣＧモデルの方向ＤからユーザのＣＧモデルが当該刀を手にしたときの形態を推定することにより、刀のＣＧモデルの重心Ｒ、方向ＤからユーザのＣＧモデルの重心位置ｒ、方向（重心の方向）ｄを以下のように算出するものである。
【００５２】
刀がほぼ垂直で、右に向いているとき（φが正のとき）には、ユーザのＣＧモデルの重心位置ｒ（ｘ３、ｙ３、ｚ３）は、刀のＣＧモデルの重心位置Ｒ（ｘ１、ｙ１、ｚ１）に対し、
Ｘ３＝ｘ１−β、ｙ３＝ｙ１−γ、Ｚ３＝ｚ１＋δ
となる。β、γ、δは定数であり、βはユーザのＣＧモデルの手の大きさに比例した値であり、γはほぼ刀のＣＧモデルの長さに相当する大きさであり、δはユーザのＣＧモデルの腕の長さの１／２に相当する大きさである。
【００５３】
刀がほぼ垂直で、左に向いているとき（φが負のとき）には、ユーザのＣＧモデルの重心位置ｒは、ｘ成分において、βを引くかわりに加算することで、左右を逆転させている。つまり、
Ｘ３＝ｘ１＋β、ｙ３＝ｙ１−γ、Ｚ３＝ｚ１＋δ
となる。
【００５４】
ユーザのＣＧモデルの方向ｄは、刀がほぼ垂直なときは、体も刀とほぼ並行していると考えられるので、刀の方向Ｄ（ｘ２、ｙ２、ｚ２）をそのままユーザのＣＧモデルの方向ｄ（Ｘ４、Ｙ４、Ｚ４）として用いる。
【００５５】
Ｘ４＝ｘ２、ｙ４＝ｙ２、Ｚ４＝ｚ２
刀がほぼ水平で、右に向いているとき（φが正のとき）には、ユーザのＣＧモデルの重心位置ｒ（ｘ３、ｙ３、ｚ３）は、刀の重心位置Ｒ（ｘ１、ｙ１、ｚ１）に対し、
Ｘ３＝ｘ１−ε、Ｙ３＝ｙ１−ζ、Ｚ３＝ｚ１＋η
となる。ε、ζ、ηは定数であり、εはユーザのＣＧモデルの手の大きさに比例した値であり、しかもβより大きい値である。ζは刀の幅に相当する値でγに較べるとかなり小さな値である。ηはユーザのＣＧモデルの腕の長さの３／４に相当する大きさである。
【００５６】
刀がほぼ水平で、左に向いているとき（φが負のとき）には、ユーザのＣＧモデルの重心位置ｒは、ｘ成分においてεを引くかわりに加算している。すなわち、
Ｘ３＝ｘ１＋ε、ｙ３＝ｙ１−ζ、Ｚ３＝ｚ１＋η
となる。
【００５７】
ユーザのＣＧモデルの方向ｄは、刀がほぼ水平なときは、体は刀に対し、垂直面内でほぼ９０度回転した方向にあると考えられるので、刀の方向を９０度回転して、そのままユーザのＣＧモデルの方向ｄ（Ｘ４、Ｙ４、Ｚ４）として用いる。すなわち、
Ｘ４＝ｘ２、ｙ４＝ｙ２、Ｚ４＝ｙ２
ユーザのＣＧモデルの動きの速度ｖは、遊具のＣＧモデルの動きの速度Ｖに対応して予め定められたものであってもよい。
【００５８】
形状記憶部２には、図１４に示すように、人物のＣＧモデル、遊具のＣＧモデル、その他、仮想空間内のキャラクタの形状等が記憶されている。図１４において、例えば、人物のＣＧモデルというオブジェクトの実際の３次元ＣＧモデルの形状等のデータはポインタ「Ｐｏｉｎｔｅｒ１」で示されているメモリアドレス以降に存在する。また、バウンディングボックスは、３次元ＣＧモデルに外接する直方体の６つの頂点座標を示している。バウンディングボックスにより、仮想空間内の物体同士がぶつかっているかどうかのチェック（干渉チェック）を行う。このバウンディングボックスの６つの頂点のいずれかが、相手のバウンディングボックスの中に入っていれば、干渉しているとみなすのである。
【００５９】
ステップＳ６において、刀のＣＧモデルの重心位置Ｒと方向Ｄから、ユーザのＣＧモデルの重心位置ｒと方向ｄを求めた後、仮想空間制御部３は、形状記憶部２からユーザのＣＧモデルの形状データを読み出す。そして、この形状データの重心位置をｒ、その方向がｄ、動きの速度ｖとなるように呈示部５にすでに呈示されている仮想空間内に呈示する（ステップＳ７）。このときの呈示部５の表示画面の一例を図８に示す。
【００６０】
仮想空間制御部３は、ユーザのＣＧモデルを呈示すると同時に、図１４に示したような形状記憶部に記憶されたバウンディングボックスを比較することにより、ユーザのＣＧモデルと仮想空間中にある他の物体との干渉チェックをおこなう（ステップＳ８）。もし、干渉していれば、ユーザのＣＧモデルが他の物体にぶつかっていることになるので、呈示部５から衝撃音を発生する（図１０のステップＳ１５）。衝撃音は、特定の音を決めておくことも、あるいは物体毎に異なる音にすることも可能である。また、ぶつかったことにより、ユーザのＣＧモデルはぶつかった物体に跳ね返されたりする。仮想空間内に存在する各種キャラクタ毎にユーザのＣＧモデルと干渉したときの跳ね返り量と跳ね返り方向とを干渉した位置に応じて予め定めておき、その値と、現在のユーザのＣＧモデルの重心位置ｒとその方向ｄとからどの程度跳ね返されるかを算出して、ユーザのＣＧモデルの重心位置ｐと方向ｄを更新する（ステップＳ１６）。
【００６１】
ユーザのＣＧモデルの重心位置ｐと方向ｄとが更新されたので、再度、刀のＣＧモデルの重心位置Ｐと方向Ｄとを計算し直す（ステップＳ１７）。
ユーザのＣＧモデルが物体と干渉している場合には、ステップＳ１５〜ステップＳ１７の処理を実行した後、さらにステップＳ７に戻り、ステップＳ８で干渉チェックを行って、他の仮想空間内の物体と干渉していないと判断されたときに、図１０のステップＳ９に進む。
【００６２】
ステップＳ９では、仮想空間制御部３は、形状記憶部２から刀のＣＧモデルの形状データを読み出す。そして、この形状データの重心位置をＲ、その方向がＤ、動きの速度Ｖとなるように、呈示部５にすでに呈示されている仮想空間内に呈示する（ステップＳ９）。
【００６３】
仮想空間制御部３は、刀のＣＧモデルを呈示すると同時に、図１４に示したような形状記憶部に記憶されたバウンディングボックスを比較することにより、刀のＣＧモデルと仮想空間中にある他の物体との干渉チェックをおこなう（ステップＳ１０）。もし、干渉していれば、刀のＣＧモデルが他の物体にぶつかっていることになるので、呈示部５から、例えば、速度Ｖに応じた破裂音を発生する（ステップＳ１１）。そして、例えば、物体が堅く、刀が跳ねかえされたりしたときには、刀の重心位置や方向が変化するので、その算出を行い（ステップＳ１２）、その結果を基に再度刀のＣＧモデルを表示し直す（ステップＳ１３）。ここで、終了の指示があれば、処理を終了する（ステップＳ１４）。
【００６４】
以上説明したように、上記第１の実施形態によれば、画像取得部１で取得した認識対象（例えば、ユーザが手に持っている遊具としての刀）の撮像された距離画像から画像処理部４で該認識対象の形状および動きを抽出して、その抽出した形状および動きに基づき該認識対象に対応する仮想空間内の制御対象（ユーザや刀のＣＧモデル）の位置、動き、さらには、形状等を制御することにより、ユーザは特殊なウェアや器具を身につけたり、本体からのびるケーブルなどのじゃまなものなしに、コンピュータ内に作られた仮想空間内の物体をより現実的な操作で制御できる。すなわち、あたかも、自分が仮想空間中に存在するような感覚で、仮想空間内に存在する物体を操作して、現実味のあるシミュレーションを行ったり、遊技（ゲーム）として楽しむことができる。
【００６５】
また、上記実施形態に係る仮想物体制御装置をアーケードゲームに適用する場合、そのようなアーケードゲームを設置する業者からすれば、特殊なウェアや器具、ケーブル等が不要であることから、ユーザが特殊なウエアを着脱する際の無駄な時間への配慮、複数のユーザ間で着用されるウエア等の衛生的な配慮、ユーザの動きに伴う設備の摩耗に対する配慮等から解放されるので、ゲーム機の運用にかかるコストを大幅に削減できる。
【００６６】
なお、上記第１の実施形態では、画像取得部１の個数は１つであったが、必ずしもこれに限定されるものではない。距離画像を取得するための図３に示したような構成のカメラを複数個設置して、各々のカメラで取得された距離画像のそれぞれに対し、前述同様の画像処理を施して、その画像処理結果を統合して、距離画像中の認識対象の重心位置、重心の方向、動く速度等を算出するようにしてもよい。
【００６７】
また、複数個のＣＣＤカメラを用いることにより、上記実施形態と同様に画像中の認識対象の画像から３次元的な情報（認識対象の重心位置、重心の方向、動く速度等）を抽出する事も可能である。この場合の画像処理速度は、距離画像に対する画像処理速度に比較して遅くなることは否めない。
（第２の実施形態）
図１５は、本発明の第２の実施形態に係る仮想物体制御装置の構成を概略的に示したものである。なお、図１５において、図１と同一部分には同一符号を付し、異なる部分について説明する。第１の実施形態では、ユーザは、自分が手や体を動かすと、画面内に呈示されている当該ユーザのＣＧモデルや刀のＣＧモデルが追随して動くことで、臨場感を感じていた。仮想空間内の他の物体にぶつかったりしたときに発する衝撃音や破裂音で、ぶつかった感じも体感していた。
【００６８】
これに対し、第２の実施形態では、フィードバック生成部６とフィードバック呈示部７とをさらに具備することにより、ユーザのＣＧモデルや刀のＣＧモデルが仮想空間内の他の物体と干渉した時に、呈示部５で衝撃音や破裂音を発生するとともに、例えば、力（フォース）フィードバックを生成して呈示することにより、ユーザに対し、より現実味のある臨場感を体感できるようにするものである。
【００６９】
フィードバック生成部６は、ユーザのＣＧモデルや刀のＣＧモデルが仮想空間内の他の物体と干渉した時に、フォースフィードバックの力の大きさの算出するものである。
【００７０】
フィードバック呈示部７は、ユーザの手にしている遊具（ここでは、刀）の中に仕込まれ、例えば、フィードバック生成部６で算出されたフォースフィードックの大きさに応じて、モータに回転トルクを発生させることで、実際の力覚を呈示するようになっている。モータとしては、例えば、ＤＣモータが使われる。
【００７１】
フィードバック生成部６では、ユーザが手に持っている遊具としての刀の重さＭと画像から抽出された当該刀の重心の動く速度Ｖｇから、衝撃度Ｓを算出する。
【００７２】
衝撃度Ｓ＝ＫＭＶ2       （Ｋは比例定数）
この衝撃度Ｓをもとに、遊具に埋め込まれたフィードバック呈示部７を構成するＤＣモータの出力（電流値）の制御を行う。モータが急に回転することで、その反対方向のトルクが発生することで、フィードバック呈示部７でフォースフィードバックが呈示される。
【００７３】
なお、遊具に埋め込まれたフィードバック呈示部７（例えば、ＤＣモータ）に制御情報を送信するには、有線通信であってもよいし、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）等無線通信であってもよい。
【００７４】
以上説明したように、上記第２の実施形態によれば、コンピュータ内に作られた仮想空間内の物体をより現実的な操作で制御できるとともに、ユーザは場面に応じた衝撃力のフィードバックがあるので、よりリアルな体感をあじわうことが可能となる。
【００７５】
なお、図１、図１５の仮想物体制御装置の構成において画像取得部１を除く各構成部の処理動作はコンピュータに実行させることのできるプログラムとして、フロッピーディスク、ハードディスク、ＣＤ−ＲＯＭ、ＤＶＤ、半導体メモリなどの記録媒体に格納して頒布することもできる。
【００７６】
また、上記第１および第２の実施形態では、本発明の仮想物体制御装置をゲームに適用した場合を例にとり説明したが、本発明の適用範囲は、この場合に限らず、例えば、失敗が許されない危険な作業や医療シミュレーション等の教育・訓練など、幅広い産業分野への実用的なシステムに適用可能であることは言うまでもない。
【００７７】
さらに、上記第１および第２の実施形態では、画像中の認識対象がユーザが手に持っている遊具（刀）である場合を例にとり説明したが、この場合に限らず、認識対象がユーザ自身であってもよく、このユーザの画像から抽出された位置、動き、形状等の情報に基づき仮想空間内の仮想物体を制御することも、前述同様に行える。
【００７８】
【発明の効果】
以上説明したように、本発明によれば、コンピュータ内に作られた仮想空間内の物体をより現実的な操作で制御できる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る仮想物体制御装置の構成を概略的に示した図。
【図２】距離画像取得部の外観の一例を示した図。
【図３】距離画像取得部の構成例を示した図。
【図４】反射光の強度を画素値とする距離画像の一例を示した図。
【図５】図４に示した様なマトリックス形式の距離画像を３次元的な表した図。
【図６】距離画像から抽出された物体の輪郭画像の一例を示した図。
【図７】ユーザが遊具としての刀をもって遊技をしている状態を撮像する画像取得部の撮像状況の一例を示した図。
【図８】呈示部の表示画面に表示される仮想空間の一例を示した図。
【図９】図１の仮想物体制御装置の処理動作を説明するためのフローチャート。
【図１０】図１の仮想物体制御装置の処理動作を説明するためのフローチャート。
【図１１】画像取得部により取得された距離画像の一例を示した図で、（ａ）図は、認識対象の刀と手との位置関係に基づき刀の画像を抽出する方法を説明するための図で、（ｂ）図は、距離画像から抽出された刀の法線ベクトルについて説明するための図。
【図１２】遊具（刀）のＣＧモデルの重心位置Ｐと方向Ｄとから、人物（ユーザ）のＣＧモデルの重心位置ｐと方向ｄとを算出する方法を説明するための図。
【図１３】刀のＣＧモデルの重心位置Ｐと方向Ｄとから、ユーザのＣＧモデルの重心位置ｐと方向ｄとを算出するための算出基準を記憶したテーブルの一例を示した図。
【図１４】形状記憶部における仮想物体のデータの記憶例を示した図
【図１５】本発明の第２の実施形態に係る仮想物体制御装置の構成例を概略的に示した図。
【符号の説明】
１…画像取得部
２…形状記憶部
３…仮想空間制御部
４…画像処理部
５…呈示部
６…フィードバック生成部
７…フィードバック呈示部
【図１】
0004282112.tif 000002
【図２】
0004282112.tif 000003
【図３】
0004282112.tif 000004
【図４】
0004282112.tif 000005
【図５】
0004282112.tif 000006
【図６】
0004282112.tif 000007
【図７】
0004282112.tif 000008
【図８】
0004282112.tif 000009
【図９】
0004282112.tif 000010
【図１０】
0004282112.tif 000011
【図１１】
0004282112.tif 000012
【図１２】
0004282112.tif 000013
【図１３】
0004282112.tif 000014
【図１４】
0004282112.tif 000015
【図１５】
0004282112.tif 000016