(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0003】
インタラクションのリアリティを向上させるために、インタラクションに関する処理の精度を高くすることが考えられる。例えば、操作量と仮想空間内の動きの比や、接触判定に用いる閾値となる距離などを変更することにより、インタラクションのリアリティを向上させるとともに細かい操作を可能にすることができる。一方、単に精度を高くすると、ユーザに細かい操作を強いることになるなどの理由により、ユーザの期待に応じた操作ができないことが懸念される。
【0004】
本発明は上記課題を鑑みてなされたものであって、その目的は、処理の精度の向上とユーザの操作性とを両立させる技術を提供することである。
【課題を解決するための手段】
【0005】
上記課題を解決するために、本発明にかかる画像処理装置は、ユーザを代表する代表位置と物体の位置との近さを算出する近さ算出手段と、算出された近さに応じた精度で前記物体の仮想空間における動きを決定する動き決定手段と、決定された動きに基づいて画像を描画する描画手段と、を含む。
【0006】
また、本発明にかかる画像処理方法は、ユーザを代表する代表位置と物体の位置との近さを算出するステップと、算出された近さに応じた精度で前記物体の仮想空間における動きを決定するステップと、決定された動きに基づいて画像を描画するステップと、を含む。
【0007】
また、本発明にかかるプログラムは、ユーザを代表する代表位置と物体の位置との近さを算出する近さ算出手段、算出された近さに応じた精度で前記物体の仮想空間における動きを決定する動き決定手段、および、決定された動きに基づいて画像を描画する描画手段、としてコンピュータを機能させる。
【0008】
本発明によれば、処理の精度の向上とユーザの操作性とを両立させることができる。
【0009】
本発明の一形態では、画像処理装置は実空間において前記ユーザにより指示された実指示位置を前記物体の位置として取得する実指示位置取得手段をさらに含み、前記代表位置は実空間における前記ユーザの位置であり、前記動き決定手段は、前記近さに応じた精度で仮想空間における指示位置である仮想指示位置の動きを決定することにより前記物体の動きを決定してもよい。
【0010】
本発明の一形態では、前記動き決定手段は、前記代表位置と前記実指示位置とが近いほど、前記代表位置と実指示位置との距離に対する、仮想空間におけるユーザを代表する仮想代表位置と仮想指示位置との距離の比が大きくなるように仮想指示位置の動きを決定してもよい。
【0011】
本発明の一形態では、前記代表位置は仮想空間における前記ユーザを代表する位置であり、前記物体の位置は仮想空間において前記ユーザが指し示す位置であり、前記動き決定手段は、前記近さに応じて判定閾値を決定し、前記決定された判定閾値より距離が小さい仮想空間内の物体を検出し、前記検出された前記物体の動きを決定してもよい。
【発明を実施するための形態】
【0013】
以下では、本発明の実施形態について図面に基づいて説明する。出現する構成要素のうち同一機能を有するものには同じ符号を付し、その説明を省略する。
【0014】
図1は、本発明の実施形態にかかる画像処理装置1のハードウェア構成の一例を示す図である。画像処理装置1は、パーソナルコンピュータや家庭用ゲーム機、または携帯情報端末である。画像処理装置1は、プロセッサ11、記憶部12、通信部13、操作入力部14、表示制御部15を含む。
【0015】
プロセッサ11は、記憶部12に格納されているプログラムに従って動作し、通信部13や操作入力部14、表示制御部15等を制御する。なお、上記プログラムは、フラッシュメモリ等のコンピュータで読み取り可能な記憶媒体に格納されて提供されるものであってもよいし、インターネット等のネットワークを介して提供されるものであってもよい。
【0016】
記憶部12は、DRAMやフラッシュメモリ等のメモリ素子によって構成されている。記憶部12は、上記プログラムを格納する。また、記憶部12は、プロセッサ11や通信部13等から入力される情報や演算結果を格納する。
【0017】
通信部13は有線LANや無線LANを構成する集積回路やコネクタ、アンテナなどにより構成されている。通信部13は、ネットワークを介して他の装置と通信する機能を有する。通信部13は、プロセッサ11の制御に基づいて、他の装置から受信した情報をプロセッサ11や記憶部12に入力し、他の装置に情報を送信する。
【0018】
操作入力部14は、ユーザの操作を検出するハードウェアからの入力を取得する回路である。操作入力部14は、例えばユーザが位置を入力する位置入力デバイスやキーボード等の入力デバイスから入力を取得し、検出された情報をプロセッサ11や記憶部12に入力する。
【0019】
表示制御部15はディスプレイ等の表示出力デバイスを制御する回路を含んでいる。表示制御部15は、プロセッサ11の制御に基づいて、表示出力デバイスに画像を表示させる。
【0020】
図2は、ユーザ61が画像処理装置1を使用する際の入力デバイス等の使用方法の一例を説明する図である。
図2の例は、ユーザ61を上からみた図である。本実施形態の例では、入力デバイスとしてモーションコントローラ62,63、カメラ64を用い、表示出力デバイスとしてヘッドマウントディスプレイ65を用いる。
【0021】
モーションコントローラ62,63のそれぞれは、カメラ64に位置を認識させるためのボール部と、ユーザ61に握らせるための把持部とを有する。把持部には、ボタンが設けられており、ユーザ61がボタンを操作すると、モーションコントローラ62,63は無線を介して操作入力部14へそのボタンの操作の情報を送信し、操作入力部14はその情報を取得する。カメラ64は、モーションコントローラ62,63のボール部を含む画像を撮影し、その撮影された画像内でのボール部の位置および大きさに基づいて、モーションコントローラ62,63が実空間において指示する位置である実指示位置を検出する。操作入力部14は、その検出されたモーションコントローラ62,63の実指示位置を取得する。
【0022】
ヘッドマウントディスプレイ65は、ユーザ61の頭部に装着するディスプレイであり、ユーザ61の目前に画像を表示する。その表示された画像が視差を考慮したものである場合は、ユーザ61は画像に含まれる物体を立体的に認識することができる。ヘッドマウントディスプレイ65は、ユーザ61にとって臨場感が高い画像を表示することができる。また、視差があると、ユーザ61は仮想空間内の物体の3次元的な位置を正確に認識できるようになり、ユーザ61は仮想空間内の物体とのよりよいインタラクションを体験できる。
【0023】
図3は、表示される画像の一例を示す図である。本実施形態で表示される画像は、仮想空間内のユーザ61の位置(以下では「仮想代表位置」と記載する)における視点の向きに対する3次元画像である、この画像において、モーションコントローラ62,63が指示する実指示位置に相当する仮想空間内の位置(以下では「仮想指示位置」とも呼ぶ)に指示オブジェクト72,73が表示されている。また、指示オブジェクト73により操作される被操作オブジェクト74も表示されている。なお、モーションコントローラ62,63の操作により仮想代表位置が移動したり、仮想空間におけるユーザ61の視点の向きが変化したり、仮想空間内で画像が描画される範囲内にあるオブジェクトの位置や向きが変化すると、画像処理装置1はそれらの変化が反映された画像を描画し、その画像をヘッドマウントディスプレイ65等の表示出力デバイスに表示させる。
【0024】
図4は、本実施形態にかかる画像処理装置1が実現する機能を示すブロック図である。画像処理装置1は機能的に、実位置取得部51、距離算出部52、動作決定部53、画像描画部54を含む。また、動作決定部53は、仮想指示位置決定部56、モード決定部57、操作判定閾値決定部58、被操作オブジェクト決定部59、物理計算部60を含む。
【0025】
実位置取得部51は、主に、プロセッサ11が記憶部12に記憶されるプログラムを実行し、モーションコントローラ62または63やカメラ64からの情報を取得する操作入力部14からの情報を処理し、処理結果を記憶部12に格納することにより実現される。距離算出部52、動作決定部53は、主に、プロセッサ11が記憶部12に記憶されるプログラムを実行し、記憶部12等に格納された情報を処理し、処理結果を記憶部12に格納することにより実現される。画像描画部54は、主に、プロセッサ11が記憶部12に記憶されるプログラムを実行し、記憶部12等に格納された情報を処理し、表示出力デバイスが画像を表示するよう表示制御部15を制御することにより実現される。
【0026】
実位置取得部51は、実空間においてユーザ61により指示された実指示位置を取得する。また、実位置取得部51は、実空間におけるユーザ61の位置(「実代表位置」と呼ぶ)を取得する。実位置取得部51が取得する実指示位置および実代表位置は、3次元空間における位置である。本実施形態では実指示位置はモーションコントローラ62,63のボール部の位置であるが、ユーザ61の手の位置そのものであってもよい。実代表位置はヘッドマウントディスプレイ65の位置(ユーザ61の視点に相当する位置)であってもよいし、ユーザ61の胸部に対して少し前の位置のようなユーザ61の近傍の位置であってもよい。
【0027】
距離算出部52は、ユーザ61を代表する代表位置と物体の位置との近さを算出する。より具体的には、距離算出部52は、ユーザ61の実代表位置と実指示位置との近さや、仮想代表位置と仮想空間内のオブジェクトの位置との近さを算出する。前者の場合、近さの算出に用いられる物体はユーザ61が位置を指示する物体であり、例えばモーションコントローラ62,63やユーザ61の手である。
【0028】
動作決定部53は、算出された近さに応じた精度で仮想空間における物体の動きを決定する。動作決定部53により上記精度で決定される仮想空間における物体の動きには、仮想空間内に配置されるユーザ61以外のオブジェクトの動きや、仮想指示位置により示される指示オブジェクト72,73の動きが含まれる。
【0029】
図5は、ユーザ61からの距離と精度との関係を模式的に示す図である。例えば、
図5において、動作決定部53は、所定の値より距離が小さい領域(一点鎖線よりユーザ61に近い領域)である高精度領域68では、その所定の値より距離が大きい領域である低精度領域69より物体の動きの精度が高くなるように物体の動きを決定する。また、例えば、高精度領域68にモーションコントローラ63がある場合には、低精度領域69にモーションコントローラ63がある場合に比べて、動作決定部53は高精度に仮想指示位置を求める。
【0030】
画像描画部54は、決定された物体の動きに基づいて、仮想空間における物体の3次元画像を描画する。画像描画部54は、仮想空間において、仮想代表位置からユーザ61の視点の向きをみた場合の画像を描画する。
【0031】
仮想指示位置決定部56は、実代表位置と実指示位置の近さと、実指示位置と、に基づいて、仮想指示位置の動きを決定する。
【0032】
モード決定部57は、ユーザ61の操作に基づいて、現在のモードが、インタラクションモードであるか否かを決定する。インタラクションモードは、ユーザ61が実指示位置を移動させることで仮想空間内にある被操作オブジェクト74を操作できるモードである。
【0033】
操作判定閾値決定部58は、代表位置と物体の位置との近さに基づいて、判定閾値を決定する。この判定閾値は、仮想空間内にあるオブジェクトが、操作の対象となる被操作オブジェクト74であるか否かを判定するためのものである。操作判定閾値決定部58が用いる代表位置と物体の位置との近さは、仮想代表位置と仮想指示位置との近さであってもよいし、仮想代表位置と指示オブジェクト72,73と異なる仮想空間内のオブジェクトの位置との近さであってもよい。
【0034】
被操作オブジェクト決定部59は、決定された判定閾値に基づいて被操作オブジェクト74を検出する。より具体的には、被操作オブジェクト決定部59は、指示オブジェクト72,73やユーザ61と異なる仮想空間内の複数のオブジェクトのうち、仮想指示位置との距離が判定閾値より小さいオブジェクトを被操作オブジェクト74として検出する。
【0035】
物理計算部60は、仮想空間において、被操作オブジェクト74を含む複数のオブジェクトの動きが物理法則に従うように複数のオブジェクトの動きを算出する。なお、物理計算部60は、複数のオブジェクトのそれぞれと仮想代表位置との近さに応じた精度で、そのオブジェクトの動きを算出してもよい。
【0036】
図6は、画像処理装置1の処理フローの一例を示す図である。はじめに、実位置取得部51は、実指示位置やボタン操作を取得する(ステップS101)。実位置取得部51は、そのボタン操作として、例えば、現時点でボタンが押されているか、ボタンが新たに押下されたか、ボタンが離されたか、のそれぞれを検出する。また、実位置取得部51は現在の実指示位置およびユーザ61を代表する位置である実代表位置も取得する。
【0037】
次に、距離算出部52は、ユーザ61の実代表位置と、実指示位置との距離を算出する(ステップS102)。距離算出部52は、ユーザ61の実代表位置と実指示位置との近さとして、実代表位置と実指示位置との3次元的な距離を求めてもよいし、実代表位置および実指示位置の水平成分のみを用いて2次元的な距離を求めてもよい。
【0038】
仮想指示位置決定部56は、算出された実代表位置と実指示位置との距離に基づいて、実指示位置を仮想指示位置に対応する仮想空間内の位置に変換する(ステップS103)。また、仮想指示位置決定部56は、現時点の仮想指示位置と、変換された仮想空間内の位置とに基づいて、仮想指示位置の移動速度と回転速度とを決定する。仮想空間内のオブジェクトと指示オブジェクト72,73との衝突等が無い場合は、決定された移動速度により移動された仮想指示位置と変換された仮想空間内の位置とは同じとなる。より具体的には、仮想指示位置決定部56は、仮に衝突等が発生しない場合に、実代表位置と実指示位置とが近いほど、実代表位置と実指示位置との距離に対する仮想代表位置と仮想指示位置との距離の比が大きくなるように仮想指示位置の動きを決定する。見方を変えると、仮想指示位置決定部56は、実代表位置と実指示位置とが近いほど、実指示位置の移動量に対する仮想指示位置の移動量の比が大きくなるように仮想指示位置の動きを決定する。
【0039】
図7は、実空間におけるユーザ61からの距離と仮想空間における距離との関係を示す図である。
図7に示されるグラフは、横軸(x軸)が実代表位置と実指示位置との距離(実距離)を示し、縦軸(y軸)が仮想空間における仮想代表位置と仮想指示位置との距離(仮想距離)を示す。グラフ中の実線は実距離と仮想距離との関係を示し、その関係は例えば1.5次関数といった多項式関数で示される。グラフ中の破線は実線と比較するために、実距離と仮想距離とが等しい場合の実距離と仮想距離との従来の関係を示すものである。仮想指示位置決定部56は
図7により示される関係に応じて実距離を仮想距離に変換し、実空間における方向と、仮想距離と、仮想空間におけるユーザ61の代表位置および視点の向きに基づいて仮想指示位置を算出する。例えば、領域91ではユーザ61が示す実距離より仮想空間内の仮想距離が小さいため、指示オブジェクト72,73等の物体の動きが従来より高精度に決定される。一方、領域92ではユーザが示す実距離より仮想空間内の仮想距離が大きいため、指示オブジェクト72,73等の物体の動きが従来より低精度に決定される。
【0040】
図8は、実空間における距離と位置との関係を示す図であり、
図9は、仮想空間における位置と実空間における距離との関係を示す図である。
図8には、代表位置Cからの距離が小さいものから順に、弧L1からL13が記載されている。弧L1からL13のそれぞれは、代表位置Cからの距離が同じ点を結ぶ曲線であり、実空間において、弧L1からL13のうち隣り合う2つの弧の間隔は一定である。一方、
図9に示す仮想空間においては、弧L1からL13は
図8が示す実空間上の弧L1からL13に対応する位置に記載されている。
図9では、弧L1からL13のうち隣り合う2つの弧について、代表位置Cに近いほど隣り合う2つの弧の間隔が小さくなり、代表位置Cから遠いほど隣り合う2つの弧の間隔が大きくなる。したがって、代表位置Cに近いほど実指示位置の動きに対する仮想指示位置の変化が小さく、より高精度に仮想指示位置が決定される。これにより、仮想指示位置に関連する仮想空間内のオブジェクト(例えば指示オブジェクト72,73や被操作オブジェクト74)の動きは、代表位置からの距離に応じて決定される。
【0041】
次に、モード決定部57は、ユーザ61のボタン操作や実指示位置に基づいて、現在のモードを決定し、またインタラクションモードに決定された場合には被操作オブジェクト決定部59は被操作オブジェクト74を決定する(ステップS104)。具体的には、モード決定部57は、操作判定閾値決定部58により決定される判定閾値に基づいて、現在の動作モードがインタラクションモードであるか否かを決定する。判定閾値は距離算出部52により求められた仮想代表位置と仮想指示位置との近さに基づいて決定される。また、被操作オブジェクト決定部59は、インタラクションモードに決定される場合に、仮想空間内にある複数のオブジェクトから被操作オブジェクト74を選択する。
【0042】
以下では、ステップS104の処理についてさらに説明する。
図10は、モード決定部57、操作判定閾値決定部58、被操作オブジェクト決定部59に関わる処理フローの一例を示す図である。モード決定部57は、はじめに、モーションコントローラ62,63からの入力に基づいて、ユーザ61がモーションコントローラ62,63のいずれかに含まれるボタンを新たに押下したか否かを検出する(ステップS201)。ボタンが新たに押下された場合には(ステップS201のY)、距離算出部52は仮想代表位置と仮想指示位置との3次元的または水平的な距離を算出する(ステップS202)。ここで、モーションコントローラ62,63のうちボタンが押下されたものを対象コントローラと記載する。そして操作判定閾値決定部58は算出された仮想指示位置と仮想代表位置との距離に基づいて、判定閾値を求める(ステップS203)。より具体的には、操作判定閾値決定部58は、算出された距離が大きいほど判定閾値が大きくなるように判定閾値を求める。例えば、操作判定閾値決定部58は、算出された距離がある定数値より小さい場合に第1の値を判定閾値として決定し、大きい場合に第1の値より大きい第2の値を判定閾値として決定してよい。また、操作判定閾値決定部58は、算出された距離に対して単調増加する関数によって判定閾値を計算してもよい。
【0043】
判定閾値が求められると、被操作オブジェクト決定部59は、ボタンが押下された対象コントローラにより示される仮想指示位置と複数のオブジェクトのそれぞれとの間の距離を算出し、その仮想指示位置に最も近いオブジェクトを検出する(ステップS204)。そして、被操作オブジェクト決定部59は検出されたオブジェクトと仮想指示位置との距離が判定閾値より小さいかを判定する(ステップS205)。検出されたオブジェクトと仮想指示位置との距離が判定閾値より小さい場合には(ステップS205のY)、モード決定部57は現在のモードをインタラクションモードに設定し、被操作オブジェクト決定部59は被操作オブジェクト74として検出されたオブジェクトを設定し(ステップS206)、またモード決定部57は対象コントローラ情報としてボタンが押下された対象コントローラを示す情報を記憶部12に記憶させる。一方、検出されたオブジェクトと仮想指示位置との距離が判定閾値より大きい場合には(ステップS205のN)、被操作オブジェクト74は存在しないため、ステップS206はスキップされる。
【0044】
ここで、ステップS201においてユーザ61がボタンを新たに押下しておらず(ステップS201のN)、かつ、ユーザ61が対象コントローラ情報が示す対象コントローラのボタンを離した場合には(ステップS207のY)、モード決定部57は現在のモードをインタラクションモードと異なるモードに設定し、インタラクションモードを解除する(ステップS208)。一方、ユーザ61がそのボタンを離していない場合には(ステップS207のN)、モード決定部57は動作モードを変更しない。
【0045】
ステップS104の処理が行われると、物理計算部60は、現在のモードがインタラクションモードの場合には(ステップS105)、仮想指示位置にある指示オブジェクト72または73の移動速度や、その指示オブジェクト72または73と被操作オブジェクト74との位置関係に基づいて、被操作オブジェクト74の動きを決定する(ステップS106)。例えば、物理計算部60は、被操作オブジェクト74が指示オブジェクト72または73に吸着し、被操作オブジェクト74のうち吸着する箇所が指示オブジェクト72または73と同じように移動するように被操作オブジェクト74の動きを決定してもよい。
【0046】
これまでの説明からわかるように、判定閾値が仮想指示位置と仮想代表位置との距離に基づいて設定され、その判定閾値によって操作対象となるオブジェクトが決定される。例えば仮想指示位置がユーザ61に近い場合、遠い場合に比べて、あるオブジェクトを操作する際に仮想指示位置をそのオブジェクトに近づける必要がある。見方を変えれば、仮想指示位置がユーザ61に近い場合、意図しないオブジェクトが被操作オブジェクト74になる可能性が低くなり、より高精度にオブジェクトの動きを決定することができる。一方、仮想指示位置がユーザ61から遠い場合、精度は低くなるものの、ユーザ61はよりルーズな操作で、被操作オブジェクト74を決定することが可能になる。例えば、ユーザ61は、指示オブジェクト72または73では届かない位置にある物体を掴むこともできる。なお、判定閾値に相当するオブジェクトと仮想指示位置との間隔は、仮想代表位置と仮想指示位置との距離に比べてかなり小さく、操作されるオブジェクトの位置と仮想指示位置とは十分に近い。したがって、操作されるオブジェクトと仮想代表位置との近さに基づいて、その操作されるオブジェクトの動作が決定されているともいえる。
【0047】
また、物理計算部60は、決定された指示オブジェクト72,73の動きや、決定された操作されるオブジェクトの動き、複数のオブジェクトについての所与の動きに基づいて、仮想空間内の複数のオブジェクトの動きを決定する(ステップS107)。複数のオブジェクトの決定される動きは、移動速度や回転速度であり、また物理計算部60は画像描画部54が次に描画するフレームにおける複数のオブジェクトの位置や角度も算出する。物理計算部60は、画像描画部54が描画する指示オブジェクト72,73の位置、つまり仮想指示位置も決定する。ここで、物理計算部60により算出される指示オブジェクト72,73の位置は、仮想指示位置決定部56により決定された移動速度および回転速度で動いた際に他のオブジェクト(障害物)と衝突する場合には、例えばその障害物との衝突が生じた位置のような、衝突が考慮された位置となる。したがって、画像描画部54が描画する際の仮想指示位置は、仮想指示位置決定部56において実指示位置を変換することにより取得された仮想空間内の位置に基づくが、一致しない場合がある。このように指示オブジェクト72,73の位置を決定することにより、指示オブジェクト72,73が障害物にめり込むことを防ぎ、違和感のない自然なインタラクションを実現できる。
【0048】
物理計算部60は、複数のオブジェクトの速度を取得し、その速度に基づいて、衝突判定を行う。また、2以上のオブジェクトにおいて互いの位置等に拘束条件が存在する場合には、物理計算部60は拘束ソルバの処理により、その2以上のオブジェクトについて、その拘束条件を満たす位置等を算出する。拘束ソルバは、インパルス法などの既知の反復解法によって拘束条件を満たすオブジェクトの位置等を算出する。
【0049】
複数のオブジェクトの動きが決定されると、画像描画部54は、その決定されたオブジェクトの位置や角度、仮想代表位置や視点の方向に基づいて、オブジェクトの三次元画像を描画する(ステップS107)。