(57)【要約】  ユーザが仮想現実空間の物体を直観的に操作することを可能にしつつ、その操作を実現するために必要な計算量を抑える。  画像処理装置は、手の指の動きを取得し、仮想空間における、前記指と物体との接触を検出し、仮想空間内において前記物体に接触する指の数を検出し、前記検出された指の数に基づいて、前記指と前記物体との間の相互作用を求めるための相互作用パラメータを決定し、前記決定された相互作用パラメータに基づいて、前記物体の動きを計算し、前記動きが計算された物体を描画する。
2017204120.tif 000002
【特許請求の範囲】
【請求項１】
手の指の動きを取得する取得手段と、
仮想空間における、前記指と物体との接触を検出する接触検出手段と、
仮想空間内において前記物体に接触する指の数を検出し、前記検出された指の数に基づいて、前記指と前記物体との間の相互作用を求めるための相互作用パラメータを決定するパラメータ決定手段と、
前記決定された相互作用パラメータに基づいて、前記物体の動きを計算する計算手段と、
前記動きが計算された物体を描画する描画手段と、
を含む画像処理装置。
【請求項２】
請求項１に記載の画像処理装置において、
前記パラメータ決定手段は、前記指と物体との重なりの大きさにさらに基づいて前記相互作用パラメータを決定する、
画像処理装置。
【請求項３】
請求項２に記載の画像処理装置において
前記指と前記物体との間にかかる力を求めるための相互作用パラメータは摩擦にかかる摩擦パラメータを含み、
前記パラメータ決定手段は、前記指の数に応じて定まる摩擦係数と、前記指と物体との重なりの大きさと、に基づいて前記摩擦パラメータを算出し、
前記計算手段は、前記摩擦パラメータに基づいて、前記物体の動きを計算する、
画像処理装置。
【請求項４】
請求項１から３のいずれかに記載の画像処理装置において、
前記パラメータ決定手段は、前記指が属する手と前記物体との間を拘束する拘束条件であって前記相互作用パラメータに応じた拘束条件を決定し、
前記計算手段は、前記拘束条件を満たすように前記物体の動きを算出する、
画像処理装置。
【請求項５】
請求項１から４のいずれかに記載の画像処理装置において、
前記接触検出手段は、前記指と前記物体との接触が検出されてからの前記指の移動量が所定の閾値を超え、かつ、前記指と前記物体とが重なりを有する場合に、前記指と前記物体との接触を検出しない、
画像処理装置。
【請求項６】
請求項１から５のいずれかに記載の画像処理装置において、
前記接触検出手段は、前記指が前記物体との接触がはじめて検出されたときの実際の指の角度と、現在の実際の前記指の角度とに基づいて、接触の検出に用いる指の角度を決定し、前記決定された指の角度に基づいて前記指と前記物体との接触を検出する、
画像処理装置。
【請求項７】
請求項１から６のいずれかに記載の画像処理装置において、
前記パラメータ決定手段は、前記検出された指の数が３以上である場合に、前記物体と前記指が属する手との相対位置を固定する拘束条件を決定し、
前記計算手段は、前記拘束条件を満たすように前記物体の動きを計算する、
画像処理装置。
【請求項８】
請求項７に記載の画像処理装置において、
前記パラメータ決定手段は、直前のフレームにおいて前記物体と前記指が属する手との相対位置を固定する拘束条件を満たすように前記物体の動きが計算され、かつ、現在のフレームにおいて前記物体と前記指のいずれかが接触する場合に、前記物体と前記指が属する手との相対位置を固定する拘束条件を決定する、
画像処理装置。
【請求項９】
手の指の動きを取得するステップと、
仮想空間における、前記指と物体との接触を検出するステップと、
仮想空間内において前記物体に接触する指の数を検出し、前記検出された指の数に基づいて、前記指と前記物体との間の相互作用を求めるための相互作用パラメータを決定するステップと、
前記決定された相互作用パラメータに基づいて、前記物体の動きを計算するステップと、
前記動きが計算された物体を描画するステップと、
を含む画像処理方法。
【請求項１０】
手の指の動きを取得し、
仮想空間における、前記指と物体との接触を検出し、
仮想空間内において前記物体に接触する指の数を検出し、前記検出された指の数に基づいて、前記指と前記物体との間の相互作用を求めるための相互作用パラメータを決定し、
前記決定された相互作用パラメータに基づいて、前記物体の動きを計算し、
前記動きが計算された物体を描画する、
処理をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置、画像処理方法およびプログラムに関する。
【背景技術】
【０００２】
近年、モーションキャプチャ（例えばデータグローブ）やヘッドマウントディスプレイなどを用いて仮想現実を体験させる技術の開発が盛んにおこなわれている。さらに、モーションキャプチャにより手の指の動きを取得し、その取得された指の動きに応じて、仮想現実空間内の物体を操作する技術がある。【０００３】
非特許文献１には、有限要素法を用いて指の変形をシミュレートし、変形した指と物体との大量の衝突点を単一の代表拘束に集約することで、接触面の摩擦をシミュレートすることが開示されている。非特許文献２には、手のいわゆるGod-objectの位置を求めることが開示されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Anthony Talvas, Maud Marchal, Christian Duriez and Miguel A. Otaduy, “Aggregate Constraints for Virtual Manipulation with Soft Fingers”, March 27th, 2015
【非特許文献２】C. B. Zilles and J. K. Salisbury, ”A constraint-based god-object method for haptic display”, Intelligent Robots and Systems 95. 'Human Robot Interaction and Cooperative Robots', Proceedings. 1995 IEEE/RSJ International Conference on, August 1995
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば非特許文献１に記載されるように、指から物体にかかる力を正確にシミュレートしようとすると、計算量が非常に大きくなってしまう。そこで、シミュレーションの計算をより簡略化することが望ましいが、ユーザが物体を直観的に操作することを害しないようにする必要があった。【０００６】
本発明は上記課題を鑑みてなされたものであり、その目的は、ユーザが仮想現実空間の物体を直観的に操作することを可能にしつつ、その操作を実現するために必要な計算量を抑えることができる技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明にかかる画像処理装置は、手の指の動きを取得する取得手段と、仮想空間における、前記指と物体との接触を検出する接触検出手段と、仮想空間内において前記物体に接触する指の数を検出し、前記検出された指の数に基づいて、前記指と前記物体との間の相互作用を求めるための相互作用パラメータを決定するパラメータ決定手段と、前記決定された相互作用パラメータに基づいて、前記物体の動きを計算する計算手段と、前記動きが計算された物体を描画する描画手段と、を含む。【０００８】
また、本発明にかかる画像処理方法は、手の指の動きを取得するステップと、仮想空間における、前記指と物体との接触を検出するステップと、仮想空間内において前記物体に接触する指の数を検出し、前記検出された指の数に基づいて、前記指と前記物体との間の相互作用を求めるための相互作用パラメータを決定するステップと、前記決定された相互作用パラメータに基づいて、前記物体の動きを計算するステップと、前記動きが計算された物体を描画するステップと、を含む。【０００９】
また、本発明にかかるプログラムは、手の指の動きを取得し、仮想空間における、前記指と物体との接触を検出し、仮想空間内において前記物体に接触する指の数を検出し、前記検出された指の数に基づいて、前記指と前記物体との間の相互作用を求めるための相互作用パラメータを決定し、前記決定された相互作用パラメータに基づいて、前記物体の動きを計算し、前記動きが計算された物体を描画する、処理をコンピュータに実行させる。【００１０】
本発明によれば、ユーザが仮想現実空間の物体を直観的に操作することを可能にしつつ、その操作を実現するために必要な計算量を抑えることができる。【００１１】
本発明の一形態では、前記パラメータ決定手段は、前記指と物体との重なりの大きさにさらに基づいて前記相互作用パラメータを決定してもよい。【００１２】
本発明の一形態では、前記指と前記物体との間にかかる力を求めるための相互作用パラメータは摩擦にかかる摩擦パラメータを含み、前記パラメータ決定手段は、前記指の数に応じて定まる摩擦係数と、前記指と物体との重なりの大きさと、に基づいて前記摩擦パラメータを算出し、前記計算手段は、前記摩擦パラメータに基づいて、前記物体の動きを計算してもよい。【００１３】
本発明の一形態では、前記パラメータ決定手段は、前記指が属する手と前記物体との間を拘束する拘束条件であって前記相互作用パラメータに応じた拘束条件を決定し、前記計算手段は、前記拘束条件を満たすように前記物体の動きを算出してもよい。【００１４】
本発明の一形態では、前記接触検出手段は、前記指と前記物体との接触が検出されてからの前記指の移動量が所定の閾値を超え、かつ、前記指と前記物体とが重なりを有する場合に、前記指と前記物体との接触を検出しなくてもよい。【００１５】
本発明の一形態では、前記接触検出手段は、前記指が前記物体との接触がはじめて検出されたときの実際の指の角度と、現在の実際の前記指の角度とに基づいて、接触の検出に用いる指の角度を決定し、前記決定された指の角度に基づいて前記指と前記物体との接触を検出してもよい。【００１６】
本発明の一形態では、前記パラメータ決定手段は、前記検出された指の数が３以上である場合に、前記物体と前記指が属する手との相対位置を固定する拘束条件を決定し、前記計算手段は、前記拘束条件を満たすように前記物体の動きを計算してもよい。【００１７】
本発明の一形態では、前記パラメータ決定手段は、直前のフレームにおいて前記物体と前記指が属する手との相対位置を固定する拘束条件を満たすように前記物体の動きが計算され、かつ、現在のフレームにおいて前記物体と前記指のいずれかが接触する場合に、前記物体と前記指が属する手との相対位置を固定する拘束条件を決定してもよい。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態にかかる画像処理装置のハードウェア構成の一例を示す図である。
【図２】実空間において動作が取得される手の一例を示す図である。
【図３】仮想空間における手の一例を示す図である。
【図４】物体と手との接触モードを説明する図である。
【図５】仮想空間における第１の指の位置と接触指の位置との関係の一例を示す図である。
【図６】画像処理装置が実現する機能を示すブロック図である。
【図７】画像処理装置が実行する処理の一例を示すフロー図である。
【図８】実空間に相当する指の角度と、触判定に用いる指の角度との関係の一例を示す図である。
【図９】接触検出部の処理を示すフロー図である。
【図１０】接触判定領域の一例を示す図である。
【図１１】第１接触点と第２接触点との距離を説明する図である。
【図１２】接触点の算出方法を説明する図である。
【図１３】パラメータ決定部の処理を示すフロー図である。
【図１４】掴みトリガの一例を示す図である。
【図１５】パラメータ決定部の処理を示すフロー図である。
【図１６】オブジェクトの拘束の要素を説明する図である。
【図１７】オブジェクトの拘束の要素に応じた拘束の手法を示す図である。
【図１８】オブジェクトと手との関係を説明する図である。
【図１９】オブジェクトと手との関係を説明する図である。
【発明を実施するための形態】
【００１９】
以下では、本発明の実施形態について図面に基づいて説明する。出現する構成要素のうち同一機能を有するものには同じ符号を付し、その説明を省略する。
【００２０】
本実施形態では、実際のユーザの手および指の位置や角度に応じて仮想空間内の手や指を動かし、さらにその仮想空間内の手や指によって仮想空間内の物体を触れる、動かすなどが可能な画像処理装置１について説明する。
【００２１】
図１は、本発明の実施形態にかかる画像処理装置１のハードウェア構成の一例を示す図である。画像処理装置１は、パーソナルコンピュータや家庭用ゲーム機、またはモバイル端末である。画像処理装置１は、プロセッサ１１、記憶部１２、通信部１３、入力部１４、表示制御部１５を含む。また画像処理装置１はモーションキャプチャ１６に接続されている。
【００２２】
プロセッサ１１は、記憶部１２に格納されているプログラムに従って動作し、通信部１３や入力部１４、表示制御部１５等を制御する。なお、上記プログラムは、フラッシュメモリ等のコンピュータで読み取り可能な記憶媒体に格納されて提供されるものであってもよいし、インターネット等のネットワークを介して提供されるものであってもよい。
【００２３】
記憶部１２は、ＤＲＡＭやフラッシュメモリ等のメモリ素子によって構成されている。記憶部１２は、上記プログラムを格納する。また、記憶部１２は、プロセッサ１１や通信部１３等から入力される情報や演算結果を格納する。なお、記憶部１２は、さらにハードディスクといった記憶装置によっても構成されてよい。
【００２４】
通信部１３は有線ＬＡＮや無線ＬＡＮを構成する集積回路やコネクタ、アンテナなどにより構成されている。通信部１３は、ネットワークを介して他の装置と通信する機能を有する。通信部１３は、プロセッサ１１の制御に基づいて、他の装置から受信した情報をプロセッサ１１や記憶部１２に入力し、他の装置に情報を送信する。
【００２５】
入力部１４は、ユーザの操作を検出するハードウェアからの入力を取得する回路である。入力部１４は、モーションキャプチャ１６と、キーボードやコントローラ等の入力デバイスとから入力信号を取得し、その入力信号が変換された情報をプロセッサ１１や記憶部１２に入力する。
【００２６】
表示制御部１５はヘッドマウントディスプレイ等の表示出力デバイスを制御する回路を含んでいる。表示制御部１５は、プロセッサ１１の制御に基づいて、表示出力デバイスに画像を表示させる。
【００２７】
モーションキャプチャ１６は手の位置、手の向き、および指の角度を測定する機器である。モーションキャプチャ１６は、例えば、いわゆるデータグローブや３次元位置を測定することが可能なカメラである。本実施形態では画像処理装置１に接続されているが、画像処理装置１に内蔵されていてもよい。
【００２８】
次に、本実施形態による操作の概要について説明する。図２は、実空間において動作が取得される手２１の一例を示す図である。また、図３は、仮想空間における手３１の一例を示す図である。本実施形態にかかる画像処理装置１は、ユーザの手２１の位置および向きや、その手２１に含まれる人差し指２２、中指２３、親指２４の３本の指の向きや曲がる角度を取得する。画像処理装置１は、さらにその手２１の位置及び向き、３本の指の向きや曲がる角度に基づいて仮想空間内の手３１や第１の指３２、第２の指３３、第３の指３４を動かす。ここで、指が曲がる角度は、指の関節のそれぞれに接続される２つの部分がなす角度であってもよいし、指の第２関節と指先とを結ぶ線に対して、指の第２関節と第３関節とを結ぶ線がなす角のように、指の一部の関節で接続される２つの部分が一体的に動くとみなして測定された角度であってもよい。
【００２９】
第１の指３２は人差し指２２に対応し、第２の指３３は中指２３に対応し、第３の指３４は親指２４に対応する。第１の指３２の関節が曲がる角度は、人差し指２２の各関節が曲がる角度に応じて定まっている。第２の指３３および第３の指３４も同様である。図３の例では仮想空間内にあるオブジェクト３６は直方体であり、第１の指３２、第２の指３３、第３の指３４により掴まれている。
【００３０】
図４は、オブジェクト３６と手３１との接触モードを説明する図である。本実施形態にかかる画像処理装置１は、接触モードに応じて手３１および指とオブジェクト３６との間の相互作用にかかるパラメータを変更することにより、ユーザの意図にあわせた直観的な操作を可能にしている。接触モードは３種類あり、オブジェクト３６に接する指の数が１本のみであるＴｏｕｃｈモードと、その指の数が２本であるＦｒｉｃモードと、その指の数が３本以上であるＦｉｘモードとからなる。Ｔｏｕｃｈモードはユーザがオブジェクト３６に触ろうとしている状態に相当し、Ｆｒｉｃモードはユーザがオブジェクト３６を挟む状態に相当する。そして、Ｆｉｘモードは、ユーザがオブジェクト３６をつかむ状態に相当する。ＴｏｕｃｈモードとＦｒｉｃモードとでは、オブジェクト３６には、オブジェクト３６と指との接触点Ｐから力がかけられる。またＴｏｕｃｈモードとＦｒｉｃモードとで互いに異なる相互作用パラメータが設定される。相互作用パラメータの詳細は後述する。一方、Ｆｉｘモードではオブジェクト３６はユーザの手３１に固定される。より具体的には、Ｆｉｘモードでは画像処理装置１は、オブジェクト３６の固定点Ｊとユーザの手３１との相対速度が０になるように仮想空間内のオブジェクト３６および手３１を動かす。
【００３１】
図５は、仮想空間における第１の指３２の位置と、接触指４２の位置との関係の一例を示す図である。本実施形態にかかる画像処理装置１では、第１の指３２が仮想空間内でオブジェクト３６に重なることを許容している。ここでいう第１の指３２の位置や向きは、モーションキャプチャ１６により取得される実空間の指の位置や向きが仮想空間に変換されたものである。また接触指４２は、第１の指３２の位置をオブジェクト３６の表面に接するように移動させたものであり、接触指４２とオブジェクト３６との接触点Ｐが第１の指３２とオブジェクト３６との相互作用の計算に用いられる。なお、本実施形態の説明に用いられる図では、説明の容易のために接触指４２を第１の指３２等と記載する場合がある。
【００３２】
また、第１の指３２とオブジェクト３６との重なりの大きさが相互作用の算出（例えば第１の指３２とオブジェクト３６との間の摩擦力の算出）に用いられる。重なりの度合いは、例えば、第１の指３２における接触点ＰＲのオブジェクト３６の表面からの深さＤであってもよい。ここで、接触点ＰＲは第１の指３２の表面にあり、かつ、接触指４２を基準とした接触点Ｐの相対位置と、第１の指３２を基準とした接触点ＰＲの相対位置は同じである。この処理の詳細については後述する。なお、第２の指３３や第３の指３４についても第１の指３２と同様である。
【００３３】
以下では画像処理装置１が実現する機能および処理をより詳細に説明する。図６は、画像処理装置１が実現する機能を示すブロック図である。画像処理装置１は機能的に、実動作取得部５１、接触検出部５２、パラメータ決定部５３、物理計算部５４、画像描画部５５を含む。実動作取得部５１は、主に、プロセッサ１１が記憶部１２に記憶されるプログラムを実行し、入力部１４を介してモーションキャプチャ１６からの情報を取得し、その情報を処理し、処理結果を記憶部１２に格納することにより実現される。接触検出部５２、パラメータ決定部５３、物理計算部５４は、主に、プロセッサ１１が記憶部１２に記憶されるプログラムを実行し、記憶部１２等に格納された情報を処理し、処理結果を記憶部１２に格納することにより実現される。画像描画部５５は、主に、プロセッサ１１が記憶部１２に記憶されるプログラムを実行し、記憶部１２等に格納された情報を処理し、表示出力デバイスが画像を表示するよう表示制御部１５を制御することにより実現される。
【００３４】
実動作取得部５１は、モーションキャプチャ１６からの信号に基づいて、手２１の動きを取得し、手２１の動きの情報を記憶部１２に格納する。手２１の動きには、その手２１の指の動きも含まれる。なお、実動作取得部５１は、手２１の動きとして、実在する手２１の指そのものと異なるものの動きを取得してもよく、例えばコントローラによる手の位置や指の曲げ伸ばしの指示を取得してもよい。
【００３５】
接触検出部５２は、実動作取得部５１により取得された手２１の動きに基づいて、仮想空間における、指とオブジェクト３６との接触を検出する。なお、接触検出部５２は、指とオブジェクト３６との接触が検出されてからの指の移動量が所定の閾値を超えた場合には、指とオブジェクト３６とが重なっても指とオブジェクト３６とが接触していないものとして扱い、接触を検出しない。
【００３６】
パラメータ決定部５３は、検出された接触に基づいて仮想空間内においてオブジェクト３６に接触する指の数を検出し、その検出された指の数に基づいて指とオブジェクト３６との間の相互作用を求めるための相互作用パラメータを決定する。また、パラメータ決定部５３は、指とオブジェクト３６との重なりの大きさにさらに基づいて相互作用パラメータを決定する。また、相互作用パラメータは摩擦にかかる摩擦パラメータを含み、摩擦パラメータは、指の数に応じて定まる摩擦係数と、指とオブジェクト３６との重なりの大きさとに基づいて算出される。また、パラメータ決定部５３は、指が属する手３１とオブジェクト３６との間を拘束する拘束条件であって相互作用パラメータに応じた拘束条件を決定する。
【００３７】
物理計算部５４は、決定された相互作用パラメータや拘束条件に基づいて、オブジェクト３６の動きを計算する。物理計算部５４は、オブジェクト３６の動きを、物理法則をシミュレートする手順に従って計算する。
【００３８】
画像描画部５５は、計算されたオブジェクト３６の動きに基づいて、オブジェクト３６の３次元画像を描画する。
【００３９】
図７は、画像処理装置１が実行する処理の一例を示すフロー図である。図７に示す処理は、フレーム（そのフレームの期間が経過する）ごとに繰り返し実行される。以下では処理のフローとともに各機能の処理の詳細について説明する。はじめに、実動作取得部５１は、プロセッサ１１の動作により、モーションキャプチャ１６がキャプチャした実空間の手２１の位置、手２１の向き、指の角度などを入力部１４を介して取得し、手２１の位置、手２１の向き、指の角度などの情報を記憶部１２に格納する（ステップＳ１０１）。
【００４０】
次に、接触検出部５２は、仮想空間内において接触判定に用いる（判定用の）複数の指の位置を決定する（ステップＳ１０２）。判定用の複数の指の位置は、例えば実空間における手２１の指の位置が座標変換されることにより生成される、仮想空間の座標系における指の位置である。図８は、実空間に相当する指の角度と、接触判定に用いる指の角度との関係の一例を示す図である。接触検出部５２は、前回のフレームにおいて指（例えば第１の指３２）とオブジェクト３６との接触が検出されている場合には、指の角度がその接触がはじめて検出されたフレームにおける角度（以下では「ロック角度」という）より大きくならないように指の角度を設定する。図８の例では、取得された第１の指３２２の角度が、その接触がはじめて検出されたフレームにおける第１の指３２１のロック角度以上であれば、接触の判定に用いる指の角度はロック角度となる。また、取得された第１の指３２３の角度がロック角度以下であれば、接触の判定に用いる指の角度は取得された指の角度になる。なお、このロック角度を用いた処理は行われなくてもよいが、この処理により、ユーザがより快適にオブジェクト３６を操作することが可能になる。
【００４１】
また、接触検出部５２は、接触判定に用いる複数の指の位置に基づいて、仮想空間内の複数の指とオブジェクト３６との接触を検出する（ステップＳ１０３）。図９は、接触検出部５２の処理を示すフロー図である。図９は、特にステップＳ１０３の処理の詳細を示すフローである。
【００４２】
ステップＳ１０３の処理において、接触検出部５２は、はじめに、新たな１つの指を接触判定の対象の指とする（ステップＳ３０１）。そして、接触検出部５２は、判定用の手の位置、向き、指の角度に基づいて、仮想空間内の接触判定領域３７を生成する（ステップＳ３０２）。
【００４３】
図１０は接触判定領域３７の一例を示す図である。図１０には、第１の指３２について生成される接触判定領域３７が示されている。接触判定領域３７は、第１の指３２などの指のうち指先に近い部分の外側に生成されるものであり、図１０の例では、接触判定領域３７は指先に相当するカプセルの表面よりオブジェクト３６の側にあり、指先に相当するカプセルに対して一定の間隔を有する。以下では、接触判定領域３７とオブジェクト３６との接触が検出されることを、第１の指３２、第２の指３３、第３の指３４といった指とオブジェクト３６とが重なるとも表現する。
【００４４】
次に、接触検出部５２は、生成された接触判定領域３７と複数のオブジェクト３６のいずれかとの接触を検出する（ステップＳ３０３）。接触判定領域３７といずれかのオブジェクト３６との接触が検出された場合には（ステップＳ３０３のＹ）、ステップＳ３０４以降の処理を行い、接触が検出されなかった場合には（ステップＳ３０３のＮ）、ステップＳ３０４以降の処理をスキップし、ステップＳ３０９の処理に遷移する。
【００４５】
ステップＳ３０４からステップＳ３０８にかかる処理では、接触判定の対象の指とそのオブジェクト３６との過去の接触の状況に基づいて、今回の接触を有効とするか否かを判定している。ステップＳ３０４では、接触検出部５２は前回のフレームにおけるその指と、接触が検出されたオブジェクト３６との接触判定の結果（後述の前回の接触データと同じであってよい）を取得する。
【００４６】
そして、前回のフレームにおいてその指とそのオブジェクト３６との接触が検出されている場合には（ステップＳ３０５のＹ）、指の表面にある第１接触点Ｐ１と、はじめに接触した際の第２接触点Ｐ２との距離Ｌ１が閾値以下であるかを判定する（ステップＳ３０６）。指を基準とした第１接触点Ｐ１の相対位置は、指とそのオブジェクト３６との接触がはじめて検出されたタイミングにおける接触指４２とオブジェクト３６との第２接触点Ｐ２の相対位置と同じである。ここで、この距離Ｌ１は指とオブジェクト３６との接触が検出されてからの指の移動量に相当する。なお、第２接触点Ｐ２として、オブジェクト３６側の接触点を用いてもよい。この場合、オブジェクト３６を基準とした第２接触点Ｐ２の相対位置は、指とそのオブジェクト３６との接触がはじめて検出されたタイミングにおける接触指４２とオブジェクト３６との接触点Ｐの相対位置と同じである。
【００４７】
図１１は、第１接触点Ｐ１と第２接触点Ｐ２との距離Ｌ１の計算を説明する図である。例えば第１の指３２がオブジェクト３６とはじめて接した際には、第１接触点Ｐ１と第２接触点Ｐ２とはほぼ同じ位置にある。一方、いくつかのフレームの処理が経過した後には、第１の指３２の位置等の変化により、第１接触点Ｐ１と第２接触点Ｐ２とが離れる場合がある。接触検出部５２は、この第１接触点Ｐ１と第２接触点Ｐ２との距離Ｌ１を算出する。なお、図１１の例では、第１の指３２がオブジェクト３６から離れているが、この例では接触判定領域３７とオブジェクト３６との接触が検出されている。また、第１の指３２とオブジェクト３６とが重なっていても、距離Ｌ１の検出は同じ方法で行われてよい。
【００４８】
図１２は、接触点Ｐの算出方法を説明する図である。図１１の例では、判定用の指３２６からオブジェクト３６の表面を構成する面ＳＡに接触する接触指４２を求め、その接触指４２とオブジェクト３６の表面との接触点Ｐを求める例を示している。接触検出部５２は、接触点Ｐの算出において、オブジェクト３６を構成する面のうち、接触指４２を求めるために用いる１または複数の面ＳＡを決定する。この面ＳＡは、オブジェクト３６と接触判定領域３７との接触を検出する際に用いられる面と同じであるので決定の詳細については省略する。次に、接触検出部５２は、接触指４２がその決定された面の上に存在し、さらに接触指４２と判定用の指３２６との距離Ｌ２が最小になる条件を満たすように、接触指４２の位置を算出する。この算出方法は、いわゆるGod Objectを実空間の指の位置が変換された指の位置から求める方法と同様のものである。
【００４９】
そして、第１接触点Ｐ１と第２接触点Ｐ２との距離Ｌ１が判定閾値以下の場合には（ステップＳ３０６のＹ）、接触検出部５２は接触が有効であると決定し、今回のフレームにおける接触データとして、前回の接触データを設定する（ステップＳ３０７）。一方、第１接触点Ｐ１と第２接触点Ｐ２との距離Ｌ１が判定閾値より大きい場合には（ステップＳ３０６のＮ）、接触が無効であると判定し、ステップＳ３０９の処理へ遷移する。
【００５０】
また、ステップＳ３０５において、前回のフレームにおいてその指とそのオブジェクト３６との接触が検出されていない場合には、接触検出部５２は接触を有効と判断し、ステップＳ３０６、Ｓ３０７の処理をスキップし、ステップＳ３０８の処理へ遷移する。
【００５１】
ステップＳ３０８においては、接触検出部５２は対象の指といずれかのオブジェクト３６との接触が有効であることを示す接触データであって今回のフレームにおける接触データをメモリに保存する。接触データは指ごとに存在し、１つの接触データは、指を識別する指ＩＤ、接触の有無、接触するオブジェクト３６の物体ＩＤ、接触点Ｐの座標、接触点Ｐにおけるオブジェクト３６の表面の法線を含む。なおステップＳ３０６，Ｓ３０７の処理により、指が同じオブジェクト３６に接触し続けている場合には、接触データには、その指とオブジェクト３６とがはじめに接触した時点の情報が格納される。
【００５２】
ステップＳ３０８等の処理により、ユーザの指の動きにぶれがあることに起因して接触点Ｐが変化するためにオブジェクト３６の動きが不安定になる現象を防ぐことができる。また、ステップＳ３０６により指のぶれでない移動の場合に接触点Ｐが変化せずにオブジェクト３６の動きが不自然になることを防ぐこともできる。
【００５３】
そして、ステップＳ３０９においては、すべての指を接触判定の処理の対象としたかを判定し（ステップＳ３０９）、すべての指を接触判定の対象として処理をしていない場合には（ステップＳ３０９のＮ）、ステップＳ３０１の処理へ戻り、すべての指を接触判定の対象として処理をした場合には（ステップＳ３０９のＹ）、ステップＳ１０３の処理を終了する。
【００５４】
仮想空間内の複数の指とオブジェクト３６との接触が判定されると、パラメータ決定部５３は、過去の接触と現在の接触との少なくとも一方に基づいて、指と物体との間の相互作用に関するパラメータを決定する（ステップＳ１０４）。この相互作用に関するパラメータは、指とオブジェクト３６との間の摩擦力や、指とオブジェクト３６との間の拘束条件の種類を含む。以下ではステップＳ１０４の処理についてさらに詳細に説明する。
【００５５】
図１３は、パラメータ決定部５３の処理を示すフロー図である。図１３に示される処理は、前回のフレームにおいて手３１の指とオブジェクト３６との関係がＦｉｘモードであり、かつ、接触検出部５２が３本以上の指とオブジェクト３６との接触を検出していない場合にも、予め定められた条件を満たすことを条件にＦｉｘモードを維持させる処理である。この予め定められた条件は、ユーザがオブジェクト３６を掴み続ける意思を持っていると推定される条件であり、詳細は後述する。
【００５６】
はじめに、パラメータ決定部５３は、前回のフレームにおける手または指とオブジェクト３６との接触モードを取得し、指と接触しかつその接触モードがＦｉｘモードであるオブジェクト３６が存在するかを判定する（ステップＳ４０１）。接触モードがＦｉｘモードではない場合は（ステップＳ４０１のＮ）、図１３に示される以降の処理はスキップされる。
【００５７】
接触モードがＦｉｘモードではない場合には（ステップＳ４０１のＹ）、パラメータ決定部５３は前回のフレームにおいてそのオブジェクト３６に接触している指を取得する（ステップＳ４０２）。その取得された指のうち、今回のフレームの接触検出部５２の処理の結果において、そのオブジェクト３６と有効に接触している指があり（ステップＳ４０３のＹ）、かつ取得された指のうちそのオブジェクト３６と有効に接触しない指がある（ステップＳ４０４のＹ）場合には、パラメータ決定部５３はその有効に接触していない指とオブジェクト３６との接触が有効であると判定する。有効であると判定されると、パラメータ決定部５３は前回のフレームにおけるその指の接触データを、今回のフレームにおけるその指の接触データとして設定する（ステップＳ４０５）。なお、取得された指のうちそのオブジェクト３６と有効に接触しない指がない場合（ステップＳ４０４のＮ）は、もともとＦｉｘモードと判定される状態であるため、図１３の以降の処理をスキップする。
【００５８】
一方、そのオブジェクト３６と有効に接触している指がない（ステップＳ４０３のＮ）場合には、ステップＳ４０６以降に示される別の手法でＦｉｘモードを維持するか否かを判定する。ステップＳ４０６では、パラメータ決定部５３は、前回のフレームにおいてオブジェクト３６に有効に接触する複数の指の側の接触点Ｐの現在の位置に基づいて、オブジェクト３６と手３１との接触を判定するための領域である掴みトリガ３８を生成する（ステップＳ４０６）。
【００５９】
図１４は、掴みトリガ３８の一例を示す図である。掴みトリガ３８は、例えば、第１の指３２から第３の指３４の表面の接触点の現在の位置（第１接触点Ｐ１の位置）に基づいて生成されてよく、掴みトリガ３８は第１接触点Ｐ１の位置の重心を中心とした球であってよい。
【００６０】
そして、掴みトリガ３８とオブジェクト３６との接触が検出された場合には（ステップＳ４０７のＹ）、パラメータ決定部５３は、Ｆｉｘモードを維持することを決定し、ステップＳ４０９の処理へ遷移させる。一方、掴みトリガ３８とオブジェクト３６との接触が検出されない場合には（ステップＳ４０７のＮ）、Ｆｉｘモードを維持すべき維持条件を満たすか否かを判定する（ステップＳ４０８）。この維持条件は、オブジェクト３６に接触していた指のいずれかの現在の角度が、（角度がロックされている角度−０．１（ｒａｄ））より大きいことである。現在の指の角度が、オブジェクト３６に初めて接触したときの角度より大きい場合には、ユーザが物体を掴む意思を有する蓋然性が高いからである。なお、ロックされている角度から減算される０．１ｒａｄの値は、指の動きのブレを考慮して適宜変更されてよい。
【００６１】
いずれかの指が維持条件を満たす場合には（ステップＳ４０８のＹ）、Ｆｉｘモードを維持すると決定しステップＳ４０９の処理へ遷移する。ステップＳ４０９では、前回のフレームでオブジェクト３６と有効に接触していた指と、そのオブジェクト３６との接触を有効にし、それらの指の前回のフレームにおける接触データを今回の接触データに設定する。
【００６２】
図１５は、パラメータ決定部５３の処理を示すフロー図である。図１５に示す処理は、図１３に示される処理の後に実行される。図１５に示される処理は、オブジェクト３６との接触が有効とされた指の数に基づいて指とオブジェクト３６との接触モードを決定し、その接触モードおよび接触モードの変化に応じて相互作用パラメータを決定する処理である。この処理は、オブジェクト３６ごとに実行されてよい。
【００６３】
図１３に示される処理が実行されると、パラメータ決定部５３は、オブジェクト３６に接触する指の数をカウントする（ステップＳ４５１）。オブジェクト３６に接触する指の数は、図１５の例では、接触検出部５２によりそのオブジェクト３６との接触が有効であると判定された指の数である。より具体的には、パラメータ決定部５３は、現在の接触データから、オブジェクト３６ごとに、そのオブジェクト３６の物体ＩＤを有する接触データの数をカウントする。そして、パラメータ決定部５３は、その接触データの数に基づいて、そのオブジェクト３６ごとに現在の物体接触データをオブジェクト３６に関連付けて記憶させる（ステップＳ４５２）。物体接触データは、オブジェクト３６を識別する物体ＩＤとそのオブジェクト３６に接触する指の数と、その接触している指の指ＩＤとを含む。
【００６４】
次にパラメータ決定部５３は、オブジェクト３６に接触する現在の指の数に基づいて、現在の接触モードを決定する（ステップＳ４５３）。より具体的には、パラメータ決定部５３は、指の数が１，２，３の場合にそれぞれＴｏｕｃｈモード、Ｆｒｉｃモード、Ｆｉｘモードを接触モードとして選択する。また、パラメータ決定部５３は、前回のフレームの物体接触データに基づいて、前回のフレームにおけるオブジェクト３６の接触モードを決定する（ステップＳ４５４）。より具体的には、パラメータ決定部５３は前回の物体接触データに保存される指の数が１，２，３の場合にそれぞれＴｏｕｃｈモード、Ｆｒｉｃモード、Ｆｉｘモードを接触モードとして選択する。なお、指の数が０の場合はステップＳ４５１〜Ｓ４５４の処理はスキップしてもよいし、指の数が３を超える場合にも接触モードとしてＦｉｘモードを選択してもよい。
【００６５】
そして、オブジェクト３６に接触する指の数が１未満の場合には（ステップＳ４５５のＮ）、パラメータ決定部５３は接触がなくなったものとして、指とオブジェクト３６との拘束をリセットする（ステップＳ４５６）。より具体的には、パラメータ決定部５３は指とオブジェクト３６との拘束条件を削除する。またパラメータ決定部５３は、指に接触する他のオブジェクト３６がない場合には、さらに接触検出部５２のステップＳ１０２の処理で用いるロック角度の設定も削除する。ロック角度の削除により、次に指とオブジェクト３６とが接触するまで接触判定に用いる指の角度が自由に変化する。
【００６６】
一方、オブジェクト３６に接触する指の数が１以上の場合には（ステップＳ４５５のＹ）、パラメータ決定部５３そのオブジェクト３６と指との現在の接触モードが前回のフレームにおける接触モードと異なるか否かを判定する（ステップＳ４５７）。現在の接触モードが前回の接触モードと異なる場合には（ステップＳ４５７のＹ）、パラメータ決定部５３現在の接触モードに応じて手３１とオブジェクト３６との拘束条件を新たに設定し、オブジェクト３６に接触する指の現在の角度をロック角度として保存することで指の角度をロックする（ステップＳ４５８）。
【００６７】
接触モードがＴｏｕｃｈモードまたはＦｒｉｃモードの場合には、拘束条件はオブジェクト３６の表面の接触点Ｐを介してかかる摩擦力等を表現する条件である。図１６は、オブジェクト３６の拘束の要素を説明する図であり、特に接触モードがＴｏｕｃｈモードまたはＦｒｉｃモードの場合に指とオブジェクト３６との間で拘束する要素を示す図である。図１６に示される摩擦視錐台４６は、接触点Ｐにおいて、第１の指３２とオブジェクト３６との間に摩擦が生じていることを示している。また、図１６におけるＹ軸はオブジェクト３６の表面の法線と同じ向きである。Ｘ軸およびＺ軸はその法線と直交する向きであり、Ｘ軸およびＺ軸は互いに直交する。図１６のＴｗｉｓｔは、その法線を軸としてねじれるように回転する成分を示し、Ｓｗｉｎｇは接触点Ｐを通りその法線と直交する線を軸として回転する成分を示す。
【００６８】
図１７は、オブジェクト３６の拘束の要素に応じた拘束の手法を示す図である。Ｘ軸およびＺ軸方向の位置の移動については、例えば、第１の指３２の側の第１接触点Ｐ１と、オブジェクト３６側の第２接触点Ｐ２との相対速度が最小になるようにオブジェクト３６および第１の指３２に力をかけるいわゆる固定ジョイントを設定する。ここで、摩擦を表現するために、この固定ジョイントによりオブジェクト３６および第１の指３２にかかる力は静止最大摩擦力または動最大摩擦力を上限としている。一方、Ｚ軸方向の位置の移動については、第１の指３２とオブジェクト３６とが反発しめり込まないように制限する拘束条件となっている。ＴｗｉｓｔおよびＳｗｉｎｇの成分については、回転する角度を実際の数分の一にするなどの調整をしている。パラメータ決定部５３は、接触モードがＴｏｕｃｈモードまたはＦｒｉｃモードの場合には、接触する各指についてこれらの要素について拘束条件を決定する。
【００６９】
ここで、パラメータ決定部５３は、接触モードがＴｏｕｃｈモードであるかＦｒｉｃモードであるかに応じて静止摩擦係数（または動摩擦係数）を設定する。より具体的には、Ｔｏｕｃｈモードにおける静止摩擦係数（または動摩擦係数）が、Ｆｒｉｃモードにおけるものより小さくなるように設定される。また、パラメータ決定部５３は、指とオブジェクト３６との重なりの大きさと、その静止摩擦係数（または動摩擦係数）とに基づいて最大静止摩擦力（または最大動摩擦力）を算出する。指とオブジェクト３６との重なりの大きさは、例えば、指の第１接触点Ｐ１のオブジェクト３６の表面からの深さＤ（図５参照）である。これにより、ユーザがオブジェクト３６を触ることを意図していると推定されるＴｏｕｃｈモードで物体が必要以上に動くことを抑止し、ユーザがオブジェクト３６を挟もうとしていると推定されるＦｒｉｃモードでオブジェクト３６が滑ってしまう現象を防ぐことができる。これにより、直観的な操作を可能にする。
【００７０】
ここまでの説明では、Ｘ軸およびＺ軸方向の位置の移動について、指とオブジェクト３６とを拘束する固定ジョイントを設定しているが、代わりに、パラメータ決定部５３は手３１を代表する代表点ＰＨと、オブジェクト３６上の第２接触点Ｐ２との間で固定ジョイントを設定してもよい。この場合、パラメータ決定部５３は代表点ＰＨと、オブジェクト３６側の第２接触点Ｐ２との相対速度が最小になるようにオブジェクト３６および代表点ＰＨに力をかける。したがって代表点ＰＨと第２接触点Ｐ２との相対位置が保存される。代表点ＰＨは、例えば指の付け根や掌の中央に相当し、手３１の位置を代表する位置である。
【００７１】
図１８および１９は、オブジェクト３６と仮想の手３１との関係を説明する図である。第１の指３２や第２の指３３などの指は、その位置がぶれやすい。例えば、図１８に示すようにオブジェクト３６と接触していても、手３１の移動などにより位置がぶれてしまい（図１９参照）、固定ジョイントを介してオブジェクト３６の動きをぶれさせてしまう。そこで、仮想の手３１とオブジェクト３６とを固定ジョイントを介して拘束することにより、そのぶれによる影響を軽減することが可能になる。なお、拘束によりに生じる力はオブジェクト３６の表面にある第２接触点Ｐ２にかかる。
【００７２】
接触モードがＦｉｘモードの場合には、パラメータ決定部５３は、拘束条件として、オブジェクト３６と指との接触点Ｐであってオブジェクト３６の表面にある複数の接触点Ｐの重心と、代表点ＰＨの位置との相対速度を０とする条件を決定する。こちらについてはユーザが掴む操作をしていると推定されるので、接触点Ｐを介した摩擦力をかける必要性が低く、より単純な計算で直観的な操作を実現することができる。
【００７３】
ここで、ステップＳ４５７において現在の接触モードが前回の接触モードと同じ場合には（ステップＳ４５７のＮ）、パラメータ決定部５３は接触モードに応じて拘束条件の多くとも一部を更新する（ステップＳ４５９）。より具体的には、接触モードがＴｏｕｃｈモードまたはＦｒｉｃモードの場合には、指とオブジェクト３６との重なりの大きさに基づいて、最大静止摩擦力または最大動摩擦力を更新する。接触モードが遷移したか否かに応じて処理を異ならせることで、処理量を削減したり、不安定な動きを防止することが可能になる。
【００７４】
このように、オブジェクト３６に接触する指の本数といった状況に応じてオブジェクト３６と手３１や指との相互作用を示すパラメータ（拘束条件や摩擦係数など）を変化させることで、ユーザがオブジェクト３６を直観的に操作することが可能になる。
【図１】
2017204120.tif 000003
【図２】
2017204120.tif 000004
【図３】
2017204120.tif 000005
【図４】
2017204120.tif 000006
【図５】
2017204120.tif 000007
【図６】
2017204120.tif 000008
【図７】
2017204120.tif 000009
【図８】
2017204120.tif 000010
【図９】
2017204120.tif 000011
【図１０】
2017204120.tif 000012
【図１１】
2017204120.tif 000013
【図１２】
2017204120.tif 000014
【図１３】
2017204120.tif 000015
【図１４】
2017204120.tif 000016
【図１５】
2017204120.tif 000017
【図１６】
2017204120.tif 000018
【図１７】
2017204120.tif 000019
【図１８】
2017204120.tif 000020
【図１９】
2017204120.tif 000021
【国際調査報告】
2017204120.tif 000022
2017204120.tif 000023
2017204120.tif 000024