(57)【要約】  移動可能な物体と固定された物体との接触により振動が生じることを抑えつつ、物体を自然に動かす。  画像処理装置は、仮想空間における第１の物体の少なくとも一点についての所与の方向への移動を取得し、第１の物体と接触しかつ第１の物体への反力の方向と所与の方向とがなす角が所定の範囲にある第２の物体が存在し、かつ第２の物体の移動が仮想空間内で制限される場合に、第１の物体の少なくとも一点の移動を抑制し、抑制された少なくとも一点の移動に基づいて、第１の物体の動きを算出し、算出された動きに基づいて、第１の物体を含む画像を描画する。
2019082854.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間における第１の物体の少なくとも一点についての所与の方向への移動を取得する取得手段と、
前記第１の物体と接触しかつ前記第１の物体への反力の方向と前記所与の方向とがなす角が所定の範囲にある第２の物体が存在し、かつ前記第２の物体の移動が仮想空間内で制限される場合に、前記第１の物体の少なくとも一点の移動を抑制する抑制手段と、
前記抑制された少なくとも一点の移動に基づいて、前記第１の物体の動きを算出する算出手段と、
前記算出された動きに基づいて、前記第１の物体を含む画像を描画する画像描画手段と、
を含む画像処理装置。
【請求項２】
請求項１に記載の画像処理装置において、
前記抑制手段は、前記第１の物体と接触しかつ前記第１の物体への反力の方向と前記所与の方向とがなす角が所定の範囲にある第２の物体が存在し、かつ前記第２の物体が仮想空間内で固定される場合に、前記第１の物体の少なくとも一点の移動を抑制する、
画像処理装置。
【請求項３】
請求項１または２に記載の画像処理装置において、
前記抑制手段は、前記第１の物体への反力の方向と前記所与の方向とがなす角が所定の範囲にある第２の物体が存在し、かつ前記第２の物体の移動が仮想空間内で制限されていない場合に、前記第２の物体と接触し、前記第２の物体への反力の方向と前記所与の方向とがなす角が所定の範囲にある新たな第２の物体を探し、前記新たな第２の物体が固定されている場合に前記第１の物体の少なくとも一点の移動を抑制する、
画像処理装置。
【請求項４】
請求項１から３のいずれかに記載の画像処理装置において、
前記第１の物体への反力の方向は、前記第２の物体の前記第１の物体に対する接触点における法線の向きである、
画像処理装置。
【請求項５】
請求項１から４のいずれかに記載の画像処理装置において、
前記取得手段は、前記第１の物体に前記少なくとも一点において接触する被指示物の移動の指示を取得し、前記被指示物の移動の向きを前記所与の方向として取得する、
画像処理装置。
【請求項６】
請求項５に記載の画像処理装置において、
前記抑制手段は、
前記被指示物と周囲の物体との近さを算出し、
前記近さが所与の条件を満たす場合に前記被指示物の移動を抑制する、
画像処理装置。
【請求項７】
請求項６に記載の画像処理装置において、
前記抑制手段は、前記第１の物体と接触しかつ前記第１の物体への反力の方向と前記所与の方向とがなす角が所定の範囲にある第２の物体が存在し、かつ前記第２の物体の移動が仮想空間内で制限される場合に、前記近さが所与の条件を満たす場合より強く手の動きを抑制する、
画像処理装置。
【請求項８】
仮想空間における第１の物体の少なくとも一点についての所与の方向への移動を取得するステップと、
前記第１の物体と接触しかつ前記第１の物体への反力の方向と前記所与の方向とがなす角が所定の範囲にある第２の物体が存在し、かつ前記第２の物体の移動が仮想空間内で制限される場合に、前記第１の物体の少なくとも一点の移動を抑制するステップと、
前記抑制された少なくとも一点の移動に基づいて、前記第１の物体の動きを算出するステップと、
前記算出された動きに基づいて、前記第１の物体を含む画像を描画するステップと、
を含む画像処理方法。
【請求項９】
仮想空間における第１の物体の少なくとも一点についての所与の方向への移動を取得する取得手段、
前記第１の物体と接触しかつ前記第１の物体への反力の方向と前記所与の方向とがなす角が所定の範囲にある第２の物体が存在し、かつ前記第２の物体の移動が仮想空間内で制限される場合に、前記第１の物体の少なくとも一点の移動を抑制する抑制手段、
前記抑制された少なくとも一点の移動に基づいて、前記第１の物体の動きを算出する算出手段、および、
前記算出された動きに基づいて、前記第１の物体を含む画像を描画する画像描画手段、
としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置、画像処理方法およびプログラムに関する。
【背景技術】
【０００２】
近年、例えば仮想現実技術など、３次元の仮想空間内に物体を配置し、物体間にかかる物理的作用をシミュレートした画像を表示することが行われている。例えば手の指の動きによって仮想空間内の物体を動かし、その物体の画像を表示することも行われている。【０００３】
非特許文献１には、手で物体を持つ場合に、有限要素法を用いて指の変形および接触面の摩擦をシミュレートし、手による物体の移動を表現することが開示されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Anthony Talvas, Maud Marchal, Christian Duriez and Miguel A. Otaduy, “Aggregate Constraints for Virtual Manipulation with Soft Fingers”, March 27th, 2015
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、仮想空間内に配置された手によりある物体（作用物体）を移動させ、その物体が、固定された他の物体に継続的に押し付けられる状態になると、衝突を解消するための反復計算の精度などに起因して、作用物体が振動することがある（以下ではこの現象を「ジッタリング」とも記載する）。一方で、単に固定された物体に接触した作用物体の移動を止めると、その作用物体の動きが不自然になる場合がある。【０００６】
本発明は上記課題を鑑みてなされたものであり、その目的は、仮想空間内の物理シミュレーションにおいて、移動可能な物体と移動を制限された物体との接触により振動が生じることを抑えつつ、物体の動きを自然にする技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明にかかる画像処理装置は、仮想空間における第１の物体の少なくとも一点についての所与の方向への移動を取得する取得手段と、前記第１の物体と接触しかつ前記第１の物体への反力の方向と前記所与の方向とがなす角が所定の範囲にある第２の物体が存在し、かつ前記第２の物体の移動が仮想空間内で制限される場合に、前記第１の物体の少なくとも一点の移動を抑制する抑制手段と、前記抑制された少なくとも一点の移動に基づいて、前記第１の物体の動きを算出する算出手段と、前記算出された動きに基づいて、前記第１の物体を含む画像を描画する画像描画手段と、を含む。【０００８】
また、本発明にかかる画像処理方法は、仮想空間における第１の物体の少なくとも一点についての所与の方向への移動を取得するステップと、前記第１の物体と接触しかつ前記第１の物体への反力の方向と前記所与の方向とがなす角が所定の範囲にある第２の物体が存在し、かつ前記第２の物体の移動が仮想空間内で制限される場合に、前記第１の物体の少なくとも一点の移動を抑制するステップと、前記抑制された少なくとも一点の移動に基づいて、前記第１の物体の動きを算出するステップと、前記算出された動きに基づいて、前記第１の物体を含む画像を描画するステップと、を含む。【０００９】
また、本発明にかかるプログラムは、仮想空間における第１の物体の少なくとも一点についての所与の方向への移動を取得する取得手段、前記第１の物体と接触しかつ前記第１の物体への反力の方向と前記所与の方向とがなす角が所定の範囲にある第２の物体が存在し、かつ前記第２の物体の移動が仮想空間内で制限される場合に、前記第１の物体の少なくとも一点の移動を抑制する抑制手段、前記抑制された少なくとも一点の移動に基づいて、前記第１の物体の動きを算出する算出手段、および、前記算出された動きに基づいて、前記第１の物体を含む画像を描画する画像描画手段、としてコンピュータを機能させる。【００１０】
本発明によれば、仮想空間内の物理シミュレーションにおいて、移動可能な物体と移動を制限された物体との接触により振動が生じることを抑えつつ、物体を自然に動かすことができる。【００１１】
本発明の一形態では、前記抑制手段は、前記第１の物体と接触しかつ前記第１の物体への反力の方向と前記所与の方向とがなす角が所定の範囲にある第２の物体が存在し、かつ前記第２の物体が仮想空間内で固定される場合に、前記第１の物体の少なくとも一点の移動を抑制してもよい。【００１２】
本発明の一形態では、前記抑制手段は、前記第１の物体への反力の方向と前記所与の方向とがなす角が所定の範囲にある第２の物体が存在し、かつ前記第２の物体の移動が仮想空間内で制限されていない場合に、前記第２の物体と接触し、前記第２の物体への反力の方向と前記所与の方向とがなす角が所定の範囲にある新たな第２の物体を探し、前記新たな第２の物体が固定されている場合に前記第１の物体の少なくとも一点の移動を抑制してもよい。【００１３】
本発明の一形態では、前記第１の物体への反力の方向は、前記第２の物体の前記第１の物体に対する接触点における法線の向きであってよい。してもよい。【００１４】
本発明の一形態では、前記取得手段は、前記第１の物体に前記少なくとも一点において接触する被指示物の移動の指示を取得し、前記被指示物の移動の向きを前記所与の方向として取得してもよい。【００１５】
本発明の一形態では、前記抑制手段は、前記被指示物と周囲の物体との近さを算出し、前記近さが所与の条件を満たす場合に前記被指示物の移動を抑制してもよい。【００１６】
本発明の一形態では、前記抑制手段は、前記第１の物体と接触しかつ前記第１の物体への反力の方向と前記所与の方向とがなす角が所定の範囲にある第２の物体が存在し、かつ前記第２の物体の移動が仮想空間内で制限される場合に、前記近さが所与の条件を満たす場合より強く手の動きを抑制してもよい。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態にかかる画像処理装置のハードウェア構成の一例を示す図である。
【図２】画像処理装置が実現する機能を示すブロック図である。
【図３】手と互いに接触する複数の物体との一例を示す図である。
【図４】画像処理装置が実行する処理の一例を示すフロー図である。
【図５】接触情報リストの一例を示す図である。
【図６】第１の処理の一例を示すフロー図である。
【図７】第３の処理の一例を示すフロー図である。
【図８】手を一方向に動かす場合における移動の抑制の一例を示す図である。
【図９】ジッタリングが生じる比較例を説明する図である。
【図１０】手と互いに接触する複数の物体との他の一例を示す図である。
【図１１】手と互いに接触する複数の物体との他の一例を示す図である。
【発明を実施するための形態】
【００１８】
以下では、本発明の実施形態について図面に基づいて説明する。出現する構成要素のうち同一機能を有するものには同じ符号を付し、その説明を省略する。
【００１９】
本実施形態では、実際のユーザの操作に応じて仮想空間内の被指示物を動かし、さらにその仮想空間内の被指示物によって仮想空間内の物体を動かすことが可能な画像処理装置１について説明する。
【００２０】
図１は、本発明の実施形態にかかる画像処理装置１のハードウェア構成の一例を示す図である。画像処理装置１は、パーソナルコンピュータや家庭用ゲーム機、またはモバイル端末である。画像処理装置１は、プロセッサ１１、記憶部１２、通信部１３、入力部１４、表示制御部１５を含む。
【００２１】
プロセッサ１１は、記憶部１２に格納されているプログラムに従って動作し、通信部１３や入力部１４、表示制御部１５等を制御する。なお、上記プログラムは、フラッシュメモリ等のコンピュータで読み取り可能な記憶媒体に格納されて提供されるものであってもよいし、インターネット等のネットワークを介して提供されるものであってもよい。
【００２２】
記憶部１２は、ＤＲＡＭやフラッシュメモリ等のメモリ素子によって構成されている。記憶部１２は、上記プログラムを格納する。また、記憶部１２は、プロセッサ１１や通信部１３等から入力される情報や演算結果を格納する。なお、記憶部１２は、さらにハードディスクといった記憶装置によっても構成されてよい。
【００２３】
通信部１３は有線ＬＡＮや無線ＬＡＮを構成する集積回路やコネクタ、アンテナなどにより構成されている。通信部１３は、ネットワークを介して他の装置と通信する機能を有する。通信部１３は、プロセッサ１１の制御に基づいて、他の装置から受信した情報をプロセッサ１１や記憶部１２に入力し、他の装置に情報を送信する。
【００２４】
入力部１４は、ユーザの操作を検出するハードウェアからの入力を取得する回路である。入力部１４は、入力部１４は、モーションキャプチャやコントローラ等の入力デバイスから入力信号を取得し、その入力信号が変換された情報をプロセッサ１１や記憶部１２に入力する。
【００２５】
表示制御部１５は外部ディスプレイやヘッドマウントディスプレイ等の表示出力デバイスを制御する回路を含んでいる。表示制御部１５は、プロセッサ１１の制御に基づいて、表示出力デバイスに画像を表示させる。
【００２６】
画像処理装置１が実現する機能および処理を説明する。図２は、画像処理装置１が実現する機能を示すブロック図である。画像処理装置１は機能的に、動作取得部５１、動作抑制部５３、物理計算部５５、画像描画部５７を含む。動作取得部５１は、主に、プロセッサ１１が記憶部１２に記憶されるプログラムを実行し、入力部１４を介してコントローラやモーションキャプチャからの情報を取得し、その情報を処理し、処理結果を記憶部１２に格納することにより実現される。動作抑制部５３、物理計算部５５は、主に、プロセッサ１１が記憶部１２に記憶されるプログラムを実行し、記憶部１２等に格納された情報を処理し、処理結果を記憶部１２に格納することにより実現される。画像描画部５７は、主に、プロセッサ１１が記憶部１２に記憶されるプログラムを実行し、記憶部１２等に格納された情報を処理し、表示出力デバイスが画像を表示するよう表示制御部１５を制御することにより実現される。
【００２７】
動作取得部５１は、仮想空間内の被指示物の移動の指示を取得する。図３は、手２１と、互いに接触する複数の物体の一例を示す図である。被指示物は、例えば手２１である。被指示物は例えばコントローラによって動く、手２１と異なる他の物体であってもよい。また、動作取得部５１は手２１の移動の向き（以下では「指示方向７１」と記載する）を取得する。また、動作取得部５１は、手２１により把持された物体や、手２１と接触点において接触する物体（以下では、この物体を「直接作用物体３１」と記載する）について、手２１の移動に応じた物理パラメータ（速度または力）を設定する。通常は、指示方向７１と、直接作用物体３１の接触点にかかる速度または力の方向とは同じ向きとなる。本実施形態では、動作取得部５１は、直接作用物体３１が手により把持されている場合には重心に手２１の移動に応じた速度を設定し、動作取得部５１は、手２１により把持されていない場合には、接触点に手２１の移動に応じた速度を設定する。なお、動作取得部５１は、手２１と直接作用物体３１との接触による速度の設定の代わりに、何らかの指示や演算に基づいて、直接作用物体３１の少なくとも一部に速度を設定してもよい。
【００２８】
動作抑制部５３は、直接作用物体３１と接触しかつ直接作用物体３１との接触点における法線の向きと指示方向７１とがなす角が所定の範囲にある物体３２が存在し、かつ物体３２が仮想空間内で固定される場合に、直接作用物体３１の少なくとも一点の移動を抑制する。本実施形態では、動作抑制部５３は、手２１の移動の抑制により、直接作用物体３１の少なくとも一点の移動を抑制する。接触点における法線の向きは、物体３２から直接作用物体３１への反力の向きとして扱っており、反力の向きは他の手法により取得されてもよい。所定の範囲は、正反対である１８０度を含み、直交する角を含まない。また必ずしも物体３２が仮想空間内で固定された場合に限って直接作用物体３１の少なくとも一点の移動を抑制しなくてもよい。例えば、物体３２の移動速度の上限が他の物体の移動速度より大幅に小さくなるよう制限されている場合も固定されている場合と同じ扱いとしてもよい。ここで、動作抑制部５３は、直接作用物体３１との接触点の法線が指示方向７１と反対である物体３２が存在し、かつ物体３２が仮想空間において固定されていない場合に、その物体３２と接触しかつ物体３２との接触点の法線が指示方向７１と反対である新たな物体３３を探し、新たな物体３３が固定されている場合に直接作用物体３１の少なくとも一点の移動を抑制する。なお、動作抑制部５３は接触点の法線が指示方向７１と反対向きでない物体３４を新たな物体として探しだすことはしない。また、図３において物体の間に記載されている丸はそれらの物体の間の接触点を示し、矢印は、その接触点における衝突法線７２の向きを示す。
【００２９】
動作抑制部５３は、新たな物体が固定されていない場合には、その新たな物体を処理対象とし、その処理対象の物体と接触しかつその処理対象の物体との接触点の法線の向きと指示方向７１とがなす角が所定の範囲にある新たな物体を探し、その新たな物体が固定されている場合に直接作用物体３１の少なくとも一点の移動を抑制することを、固定された物体３５を見つけるか（例えば図３の場合）、接触する新たな物体がなくなるまで繰り返す。
【００３０】
物理計算部５５は、動作取得部５１や動作抑制部５３の処理によって設定された直接作用物体３１を含む複数の物体の移動に基づいて、仮想空間内の直接作用物体３１を含む複数の物体の動きを計算する。物理計算部５５は、複数の物体の動きを、物理法則をシミュレートする手順に従って計算する。
【００３１】
画像描画部５７は、計算された直接作用物体３１を含む複数の物体の動きに基づいて、直接作用物体３１を含む物体の３次元画像を描画する。
【００３２】
図４は、画像処理装置１が実行する処理の一例を示すフロー図である。図４に示す処理は、フレーム（そのフレームの期間が経過する）ごとに繰り返し実行される。以下では処理のフローとともに各機能の処理について説明する。
【００３３】
はじめに、動作取得部５１は、プロセッサ１１の動作により、入力部１４を介して仮想空間における手２１の移動の指示を取得し、その指示から、手２１の指示方向７１や指示された移動量などの情報を算出し、記憶部１２に格納する（ステップＳ１０１）。
【００３４】
次に、動作抑制部５３は、プロセッサ１１の動作により、接触情報リストを生成する（ステップＳ１０２）。接触情報リストは、仮想空間にある物体のそれぞれについて生成される。接触情報リストは、１または複数の接触情報を含む。接触情報は、対象となる物体と他の物体との組み合わせごとに生成され、接触情報は、対象となる物体と他の物体とが接触していることを示す。ここで、動作抑制部５３は、手２１と直接接触する直接作用物体３１が、手２１に把持されているか、単に手２１と接触しているかを判定してよい。動作抑制部５３は、例えば、直接作用物体３１に接触する指の本数が３本以上の場合に手２１に把持されていると判定してもよい。
【００３５】
図５は、接触情報リストの一例を示す図であり、図３の例について生成される接触情報リストを示している。図５の例では、動作抑制部５３は物体３１から３４のそれぞれについて接触情報リストを作成している。動作抑制部５３は、接触情報リストに対応する物体に接触する他の物体ごとに接触情報を生成し、その接触情報リストにその生成された接触情報を追加する。例えば、直接作用物体３１についての接触情報リストは、その直接作用物体３１と他の物体３２との衝突についての接触情報を含み、物体３３についての接触情報リストは、その物体３３と物体３５との衝突についての接触情報と、その物体３３と物体３２についての接触情報とを含んでいる。また、それぞれの接触情報は、互いに衝突する物体の接触点およびその接触点における衝突法線７２の情報も含む。
【００３６】
接触情報リストが生成されると、動作抑制部５３は、手２１に持っている物体と固定物との関係に基づいて、手２１の移動を抑制する第１の処理を実行する（ステップＳ１０３）。
【００３７】
図６は、第１の処理の一例を示すフロー図である。第１の処理は、直接作用物体３１が手２１に把持されている場合に実行される処理である。はじめに、動作抑制部５３は、手２１に把持された物体（厳密にはその物体の識別情報）を、探索キューに格納する（ステップＳ２０１）。次に、動作抑制部５３は探索キューから物体（物体の識別情報）を取り出す（ステップＳ２０２）。取り出された物体は、これ以降の処理対象の物体となる。
【００３８】
次に、処理対象の物体についての接触情報リストから、１つの接触情報を取得する（ステップＳ２０３）。そして、取得された接触情報に含まれる接触相手の物体が手２１を構成する物体であるか否かを判定する（ステップＳ２０４）。接触相手の物体が手２１を構成する場合には（ステップＳ２０４のＹ）、この接触情報について他の処理は行わず、後述のステップＳ２０９の処理へ遷移する。
【００３９】
接触相手の物体が手２１を構成しない場合には（ステップＳ２０４のＮ）、動作抑制部５３は接触相手の物体の接触点における衝突法線７２の向きが指示方向７１と反対であるかを判定する（ステップＳ２０５）。ここで、衝突法線７２の向きが指示方向７１と反対であるかの判定は、衝突法線７２の向きと指示方向７１とがなす角が１８０度を中心とする所定の範囲（最大でも９０度を超え２７０度より小さい）に収まっているかによって行われる。本実施形態では、動作抑制部５３は、例えばなす角が１７０度から１９０度の場合に反対であると判定してもよいし、なす角が９０度より大きく２７０度より小さい場合に反対であると判定してもよい。
【００４０】
衝突法線７２の向きが指示方向７１と反対でない場合には（ステップＳ２０５のＮ）、動作抑制部５３はこの接触情報について他の処理は行わず、後述のステップＳ２０９の処理へ遷移する。一方、衝突法線７２の向きが指示方向７１と反対である場合には（ステップＳ２０５のＹ）、動作抑制部５３は接触相手の物体が仮想空間内に固定されているか判定する（ステップＳ２０６）。
【００４１】
接触相手の物体が仮想空間内に固定されている場合には（ステップＳ２０６のＹ）、動作抑制部５３は手２１の移動を抑制し（ステップＳ２０７）、第１の処理を終了する。この場合、直接作用物体３１が移動する中で物体間の衝突を解消することに起因して物体の振動が生じやすくなっているため、手２１の移動の抑制により振動の発生が抑制される。ここで、動作抑制部５３は、手２１の速度に１より小さい第１の係数をかけることで手２１の移動の抑制を実現する。
【００４２】
一方、接触相手の物体が仮想空間内に固定されていない場合には（ステップＳ２０６のＮ）、動作抑制部５３は、接触相手の物体が探索キューに格納されたことがあるかを確認し、探索キューに格納されたことがない場合には、その接触相手の物体を探索キューに追加する（ステップＳ２０８）。ステップＳ２０８において探索キューに格納された物体は、ステップＳ２０２において新たな処理対象の物体となる。
【００４３】
そして、動作抑制部５３は接触情報リストに未取得の接触情報が存在するかを判定し（ステップＳ２０９）、未取得の接触情報が存在する場合には（ステップＳ２０９のＹ）、ステップＳ２０３からの処理を繰り返す。一方、未取得の接触情報が存在しない場合には（ステップＳ２０９のＮ）、動作抑制部５３は探索キューが空か否か判定する（ステップＳ２１０）。そして、探索キューが空でない場合には（ステップＳ２１０のＮ）、ステップＳ２０２からの処理を繰り返す。探索キューが空である場合には（ステップＳ２１０のＹ）、第１の処理を終了する。
【００４４】
例えば、図３に記載された例では、はじめに探索キューに格納される物体は、直接作用物体３１であり、直接作用物体３１についてステップＳ２０２からステップＳ２０９の処理が実行され、探索キューには物体３２が格納される。また物体３２についてもステップＳ２０２からステップＳ２０９の処理が実行されるが、探索キューには指示方向７１と法線の向きが反対である物体３３のみが格納され、物体３４は格納されない。物体３３についてステップＳ２０２以降の処理が実行されると、物体３５によりステップＳ２０７の処理が実行され、手２１の移動が抑制される。
【００４５】
図６には記載されていないが、動作抑制部５３は、前回のフレームにおいて手２１の移動が抑制され、かつ今回のフレームにおいてステップＳ２０７の手２１の移動を抑制する処理が実行されなかった場合には、前回のフレームより弱く手２１の移動を抑制する。これにより、手２１の移動の抑制が突然解除されることに起因する不自然な挙動を抑制することができる。
【００４６】
これまでに説明した第１の処理により、手２１が直接作用物体３１を把持している場合に、手２１の移動により、手２１と固定された物体との間にある物体が振動する現象を抑制することができる。
【００４７】
ステップＳ１０３に記載の第１の処理が終了し、第１の処理により手２１の移動が抑制された場合には（ステップＳ１０４のＹ）、動作抑制部５３はステップＳ１０５からＳ１０７に記載される第２の処理および第３の処理をスキップし、後述のステップＳ１０８以降の処理を実行する。
【００４８】
一方、第１の処理により手２１の移動が抑制されていない場合には（ステップＳ１０４のＮ）、動作抑制部５３は手２１に接触している物体と固定物との関係に基づいて、手２１の移動を抑制する第２の処理を実行する（ステップＳ１０５）。ステップＳ１０５における、手２１に接触している物体は、手２１と接触しており、かつ手２１に把持されていない直接作用物体３１である。第２の処理は、直接作用物体３１が手２１に接触している物体である場合に実行される処理である。
【００４９】
第２の処理は、第１の処理に対し、ステップＳ２０１において探索キューに格納される物体が、手２１に接触している物体（厳密にはその物体の識別情報）である点と、ステップＳ２０７において、動作抑制部５３は、手２１の速度に１より小さい第２の係数をかけることで手２１の移動の抑制を実現する点が異なる。第２の係数は、第１の係数より大きく、第２の処理における手２１の移動の抑制の強さは、第１の処理に比べて小さくなる。他の点は第１の処理と同じであるので説明を省略する。
【００５０】
そして、第２の処理が終了し、第２の処理により手２１の移動が抑制された場合には（ステップＳ１０６のＹ）、動作抑制部５３はステップＳ１０７に記載される第３の処理をスキップし、後述のステップＳ１０８以降の処理を実行する。
【００５１】
一方、第２の処理により手２１の移動が抑制されていない場合には（ステップＳ１０６のＮ）、動作抑制部５３は手２１の周囲に物体が存在するか判定し、物体が存在する場合には手２１の移動を抑制する第３の処理を実行する（ステップＳ１０７）。
【００５２】
図７は、第３の処理の一例を示すフロー図である。第３の処理では、はじめに、動作抑制部５３は手２１と、他の物体のそれぞれとの距離を算出する（ステップＳ５０１）。そして、算出された距離のいずれかが閾値より小さい場合には（ステップＳ５０２）、手２１の移動を抑制する（ステップＳ５０３）。ここで、動作抑制部５３は、手２１の速度に１より小さい第３の係数をかけることで手２１の移動の抑制を実現する。第３の係数は定数ではなく、距離の減少に応じて単調減少する関数であってよい。第３の係数の最小値は、第１の係数および第２の係数より大きく（例えば０．５）、手２１の移動の抑制は第１の処理および第２の処理に比べて弱い。
【００５３】
ステップＳ１０８では、物理計算部５５が、物理計算により、仮想空間内の直接作用物体３１を含む複数の物体のそれぞれの位置および姿勢を算出する。そして、画像描画部５７は、計算された複数の物体のそれぞれの位置および姿勢に基づいて、それらの物体の３次元画像を描画する（ステップＳ１０９）。
【００５４】
図８は、手２１を一方向に動かす場合における移動の抑制の一例を示す図である。図８に示されるグラフは、手２１に対してある方向に一定の速度で移動する指示がされた場合についての図であり、その手２１が途中である物体を把持し、さらにその物体を壁などに衝突させた場合に仮想空間内の手２１が単位時間の移動距離（Ｌ／ｄｔ）を示す図である。
【００５５】
図８の例では、はじめには手２１のそばに物体がなかったため、手２１の単位時間の移動距離（Ｌ０）は、動作取得部５１により取得された移動の指示における移動距離と同じである。一方、時間ｔ１には、手２１の近くに物体が存在するため、第３の処理により、単位時間の移動距離が徐々に小さくなる。また時間ｔ２には手２１が物体を把持し、単位時間の移動距離はＬ３になる。そして、時間ｔ３に手２１に把持された物体が壁に衝突すると、第１の処理により、手２１の移動がさらに抑制され、単位時間の移動距離はＬ１になる。
【００５６】
時刻ｔ４からｔ５は、手２１が壁の方向に押し付けられなくなり、かつ手２１がある物体を把持している状態を示している。手２１の移動の抑制は弱くなっていき、単位時間の移動距離はＬ１からＬ３に増加する。時刻ｔ６では手２１がある物体の把持をやめており、それ以降、手２１の移動の抑制はさらに弱くなり、単位時間の移動距離はＬ０に向けて増加している。
【００５７】
図９は、振動が生じる場合の比較例を示す図である。図９の例では、手２１により、物体３０１が固定された物体３０４に向けて動かされている。物体３０１と物体３０４の間にある物体であり、特に固定される物体３０４と直接接触する物体３０３は、反復解法により衝突を解決する際の精度の問題に起因して振動を起こしてしまう。一方、本実施形態では、このような場合に物体３０３に相当する物体が固定された物体に押し付けられる強さを弱めることができる。これにより、反復解法を用いて衝突条件を解く精度を上げなくても、振動を抑えることができる。また振動を抑えるのに必要な計算量の増加も抑えることができる。
【００５８】
また、本実施形態にかかる画像処理装置１は、衝突法線７２と指示方向７１との関係に応じた処理をすることで、手２１の移動の抑制に起因して動きが不自然になる現象も抑えることができる。図１０は、手２１と互いに接触する複数の物体との他の一例を示す図である。図１０の例では、直接作用物体３１に接触し、さらに固定されている物体３１３について、直接作用物体３１に対する物体３１３の衝突法線７１３の向きと、指示方向７１とは反対ではない。本実施形態では画像処理装置１は手２１の移動を抑制しない。図１０からわかるように、仮に実空間であれば直接作用物体３１は横に滑ることが可能である。したがって、動作抑制部５３が手２１の移動を抑制しないことでこの滑りを自然に表現することができる。
【００５９】
さらに、動作抑制部５３が手２１の移動の抑制する際に、手２１の移動を完全には止めないことにより、特殊な状況において物体の動きが著しく不自然になる現象を抑えることができる。図１１は、手２１と互いに接触する複数の物体との他の一例を示す図である。図１１の例では、直接作用物体３１に接触し衝突法線７２２が指示方向７１と反対である物体３２２、さらに物体３２２と接触し衝突法線７２３が指示方向７１と反対であり、かつ固定されている物体３２３が存在する。この場合、本実施形態では手２１の移動が抑制される。ここで、動作抑制部５３が手２１の移動を完全には止めなければ、物体３２２が回転するため直接作用物体３１は移動できる。これにより、実空間では移動できる直接作用物体３１および物体３２２が、遅いながらも移動することができ、動きが著しく不自然になることを抑えることができる。
【図１】
2019082854.tif 000003
【図２】
2019082854.tif 000004
【図３】
2019082854.tif 000005
【図４】
2019082854.tif 000006
【図５】
2019082854.tif 000007
【図６】
2019082854.tif 000008
【図７】
2019082854.tif 000009
【図８】
2019082854.tif 000010
【図９】
2019082854.tif 000011
【図１０】
2019082854.tif 000012
【図１１】
2019082854.tif 000013
【国際調査報告】
2019082854.tif 000014
2019082854.tif 000015
2019082854.tif 000016