(57)【要約】【課題】  本発明は、ユーザーに対して仮想物体の画像を表示させる情報処理装置において、仮想物体の選択手段が検出範囲外に出た場合でも、仮想物体に対して適切な処理を行うことを目的とする。【解決手段】  ユーザーに対して仮想物体の画像を表示させる情報処理装置であって、前記仮想物体を選択する選択手段の位置を検出する検出手段と、前記選択手段が前記仮想物体を選択しているか否かを判定する判定手段と、前記検出手段の検出結果と前記判定手段の判定の結果の変化とに基づき、前記仮想物体に対する処理を行う制御手段と、を有することを特徴とする。【選択図】  図１
2018173908.tif 000002
【特許請求の範囲】
【請求項１】
ユーザーに対して仮想物体の画像を表示させる情報処理装置であって、
前記仮想物体を選択する選択手段の位置を検出する検出手段と、
前記選択手段が前記仮想物体を選択しているか否かを判定する判定手段と、
前記検出手段の検出結果と前記判定手段の判定の結果の変化とに基づき、前記仮想物体に対する処理を行う制御手段と、を有することを特徴とする情報処理装置。
【請求項２】
前記ユーザーの視点の位置姿勢を取得する取得手段と、
前記ユーザーの視点の位置姿勢に基づき、前記仮想物体の画像を表示させる表示手段と、を有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御手段が前記仮想物体に対して行う処理は、前記仮想物体の位置姿勢、前記仮想物体の表示の方法、前記ユーザーとは異なる他のユーザーが前記仮想物体を選択可能であるかを示す選択可否、前記仮想物体に対応づけられた機能の起動状態の少なくともいずれか一つの変更処理であることを特徴とする請求項１もしくは２のいずれか１項に記載の情報処理装置。
【請求項４】
前記仮想物体の選択状態を示すフラグを設定するフラグ制御手段をさらに有し、
前記判定手段は、前記仮想物体に対するフラグの状態に応じて、前記選択手段が前記仮想物体を選択しているか否かを判定することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記フラグ制御手段は、前記仮想物体を選択していると判定されている状態から、前記検出手段による検出もしくは前記判定手段による判定の少なくともいずれか一方が不可になった場合に、前記フラグを設定することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記フラグ制御手段は、前記フラグが設定された状態で、前記検出手段による検出および前記判定手段の判定が可能になった場合、または前記判定手段により選択していないと判定された場合、前記フラグを解除することを特徴とする請求項４に記載の情報処理装置。
【請求項７】
前記制御手段は、前記検出手段による検出の可否、前記判定手段による判定の可否、前記判定手段により判定された選択状態、および前記検出手段により検出された位置の少なくとも一つと前記フラグの状態に応じて、前記仮想物体に対する処理を行うことを特徴とする請求項４に記載の情報処理装置。
【請求項８】
前記フラグが設定されたときの前記仮想物体の位置姿勢を記憶する記憶手段をさらに有し、
前記制御手段は、前記記憶された前記仮想物体の位置姿勢に応じて前記仮想物体に対する処理を行うことを特徴とする請求項４に記載の情報処理装置。
【請求項９】
前記フラグが設定されてからの経過時間である第１経過時間および前記フラグが解除されてからの経過時間である第２経過時間の少なくとも一方を記憶する時間記憶手段をさらに有し、
前記制御手段は、前記第１経過時間および前記第２経過時間の少なくともいずれか一方に応じて前記仮想物体に対する処理を行うことを特徴とする請求項４に記載の情報処理装置。
【請求項１０】
前記フラグ制御手段は、前記フラグが設定されてからの経過時間である第１経過時間に応じて前記フラグを解除することを特徴とする請求項４に記載の情報処理装置。
【請求項１１】
前記フラグが解除されてからの経過時間である第２経過時間を記憶する時間記憶手段をさらに有し、
前記制御手段は、前記第２経過時間が一定の時間になるまでの間に、前記ユーザーが所定の動作をした場合には、
前記記憶された位置姿勢に応じて、前記仮想物体に対する処理を行うことを特徴とする請求項８に記載の情報処理装置。
【請求項１２】
前記選択手段は、前記ユーザーの片手または両手であることを特徴とする請求項１乃至１１のいずれか１項に記載の情報処理装置。
【請求項１３】
前記選択手段の形状を推定する推定手段をさらに有し、
前記判定手段は、前記選択手段が複数存在する場合、前記推定手段による推定の可否、推定できている選択手段の形状、複数の前記選択手段の間の相対位置関係の少なくともいずれか１つに応じて選択状態を判定することを特徴とする請求項１乃至１１のいずれか１項に記載の情報処理装置。
【請求項１４】
前記制御手段は、前記選択手段が複数存在する場合、前記判定手段が複数の前記選択手段のいずれに関する情報に基づき判定したのかに応じて、前記仮想物体に対する処理を行うことを特徴とする請求項１乃至１１のいずれか１項に記載の情報処理装置。
【請求項１５】
前記選択手段が複数存在する場合、前記選択手段が前記仮想物体を選択する際に、当該選択に対する制約条件を設定する条件設定手段さらに有することを特徴とする請求項１乃至１４のいずれか１項に記載の情報処理装置。
【請求項１６】
ユーザーに対して仮想物体の画像を表示させる情報処理方法であって、
検出手段が、前記仮想物体を選択する選択手段の位置を検出する検出工程と、
判定手段が、前記選択手段が前記仮想物体を選択しているか否かを判定する判定工程と、
制御手段が、前記検出手段の検出結果と前記判定手段の判定の結果の変化とに基づき、前記仮想物体に対する処理を行う制御工程と、を有することを特徴とする情報処理方法。
【請求項１７】
コンピュータを、
ユーザーに対して仮想物体の画像を表示させる情報処理装置であって、
前記仮想物体を選択する選択手段の位置を検出する検出手段と、
前記選択手段が前記仮想物体を選択しているか否かを判定する判定手段と、
前記検出手段の検出結果と前記判定手段の判定の結果の変化とに基づき、前記仮想物体に対する処理を行う制御手段と、を有することを特徴とする情報処理装置として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザーに対して仮想物体の画像を表示させる情報処理装置、情報処理方法およびコンピュータプログラムに関する。
【背景技術】
【０００２】
ステレオカメラやＨｅａｄ  Ｍｏｕｎｔｅｄ  Ｄｉｓｐｌａｙ（ＨＭＤ）、深度センサなどを用いて手や指標の位置姿勢を検出する技術が存在する。Ｖｉｒｔｕａｌ  Ｒｅａｌｉｔｙ（ＶＲ）やＭｉｘｅｄ  Ｒｅａｌｉｔｙ（ＭＲ）、ゲームなどにおいて、検出された指標や手の位置姿勢を用いてＣｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ（ＣＧ）やＵｓｅｒ  Ｉｎｔｅｒｆａｃｅ（ＵＩ）を操作する場合が存在する。
【０００３】
例えば、指標を利用する場合には、指標を張り付けた指示器具の位置姿勢を検出し、その検出結果から指示器具の指し示す先の３次元座標を計算する。そして、計算された３次元座標に対応する位置に表示されたＣＧ（またはアイコンなど）を操作対象として扱うことができる。そして、指示器具を移動させた際には指示器具の位置姿勢の変化に応じてＣＧの表示位置を変えることもできる。さらに、この指示器具がゲームコントローラのように１つ以上のボタンを持つものであればＣＧの選択や選択解除、その他ＣＧに紐づけられた処理の実行などのＵＩとして利用することもできる。
【０００４】
また、手を利用する場合は、手の位置姿勢を検出して手が存在する３次元座標に対応するＣＧを操作対象として選択することができる。さらに、手の形状やジェスチャを検出することができればＣＧの把持や、手の動きとＣＧの内容に合わせた処理（例えばリモコンのＣＧを手で掴んでボタンを押したらテレビの電源がＯＮになるなど）を行うこともできる。
【０００５】
これらの例では、ＵＩを利用する領域内で手や指標の位置姿勢が常に推定できることが必要となる。しかし、実際には手がカメラやセンサの検出範囲外に出たり、障害物に隠れたりする場合などに、ＨＭＤやセンサの検出可能範囲がＵＩを利用する範囲と一致しなくなるということがある。
【０００６】
特許文献１には、手のジェスチャを認識して、ＵＩに利用するときに手が検出範囲外にでた場合、過去の手の位置情報や見えている他の体の部分（もう片方の手など）からジェスチャを推定することが開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１４−２２２３８１
【特許文献２】特開２０１１−１５９２７３
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、特許文献１に開示されている技術では、過去の手の位置の変化から手の位置を推定することはできても手の形状を推定することは難しい。また、手の動かし方が検出範囲外で急激に変化する場合に精度よく推定するのは困難である。これは手に限らず指標の位置姿勢を推定する場合にも同様に生じる。
【０００９】
もしＣＧを選択して操作している途中で、手または指標の位置姿勢や形状が検出できなくなると、選択していたＣＧに関して行われていた処理やＣＧの表示位置、方法などをどのようにすべきなのかわからない。
【００１０】
例えば、ＣＧを手で把持して移動させている途中で手が検出範囲外に出た場合には手がＣＧを把持したままなのか、手の位置はどこにあるのかがわからなくなるため、ＣＧをどこに表示すべきなのかわからなくなる。また、再度手が検出可能になった場合にＣＧを手に合わせた位置に移動させるべきなのかそれとも検出できなくなった時点のＣＧの位置に表示するべきなのかもわからなくなる。
【００１１】
これに対して特許文献２では、ユーザーの手が検出可能範囲から外に出た時点でＣＧの選択を解除することを行っている。
【００１２】
しかし、このような処理をするとＭＲやＶＲのＵＩとしては、操作性に支障をきたす可能性がある。例えば、ＨＭＤのカメラを用いて手の位置姿勢や形状を検出する状況を考える。この状況でＨＭＤを被ったユーザーがＣＧを手で把持して移動する動作を行っていた場合に、途中で手から視線を外して手が検出可能範囲外に出た状態で移動したとする。このとき、ユーザーが仮にＣＧを把持して移動してきたつもりでも、特許文献２のような処理をすると、再度手元を確認したらＣＧは手が視野外に出た時点の場所に置き去りになるという現象が発生する。
【００１３】
また、特許文献２とは逆に、手が検出範囲外に出ても把持状態を維持するとした場合には別の課題がある。例えば、手が検出範囲外になっている途中でユーザーが手の形状を変えて把持状態を解除したつもりでも、再度手が検出範囲内に戻ってきたら、把持状態を維持して手のいずれかの位置に合わせてＣＧがついてきてしまう。
【００１４】
以上のように選択手段（手や指標を張り付けた指示器具など）がＣＧ（またはアイコンなど）を選択した状態で検出範囲外に出た場合、選択していたＣＧの表示方法や位置姿勢、それに対応づけられた処理などをどうすると好適なのかが課題となる。本発明は、上記課題を鑑みてなされたものであり、ユーザーに対して仮想物体の画像を表示させる情報処理装置において、仮想物体の選択手段が検出範囲外に出た場合でも、仮想物体に対して適切な処理を行うことを目的とする。
【課題を解決するための手段】
【００１５】
本発明は、ユーザーに対して仮想物体の画像を表示させる情報処理装置であって、前記仮想物体を選択する選択手段の位置を検出する検出手段と、前記選択手段が前記仮想物体を選択しているか否かを判定する判定手段と、前記検出手段の検出結果と前記判定手段の判定の結果の変化とに基づき、前記仮想物体に対する処理を行う制御手段と、を有することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、ユーザーに対して仮想物体の画像を表示させる情報処理装置において、仮想物体の選択手段が検出範囲外に出た場合でも、仮想物体に対して適切な処理を行うことが出来る。
【図面の簡単な説明】
【００１７】
【図１】実施形態１に係る情報処理装置１００の構成の一例を示す図である。
【図２】実施形態１の処理の流れを示すフローチャートである。
【図３】実施形態１の選択手段３００が示す選択位置の一例を示す図である。
【図４】実施形態１のフラグ制御手段１６０のフラグ設定処理の一例を示すフローチャートである。
【図５】実施形態１のフラグ制御手段１６０のフラグ解除処理の一例を示すフローチャートである。
【図６】実施形態１の仮想物体制御手段１４０の処理の一例を示す表である。
【図７】実施形態１の効果を説明するための図である。
【図８】実施形態２に係る情報処理装置１００の構成の一例を示す図である。
【図９】実施形態２の処理の流れを示すフローチャートである。
【図１０】実施形態２の仮想物体制御手段１４０の処理の一例を示す表である。
【図１１】実施形態２の効果を説明するための図である。
【図１２】実施形態３に係る情報処理装置１００の構成の一例を示す図である。
【図１３】実施形態３の処理の流れを示すフローチャートである。
【図１４】実施形態３の仮想物体制御手段１４０の処理の一例を示すフローチャートである。
【図１５】実施形態３の効果を説明するための図である。
【図１６】実施形態４に係る情報処理装置１００の構成の一例を示す図である。
【図１７】実施形態４の処理の流れを示すフローチャートである。
【図１８】実施形態４の選択状態判定手段１３０の処理の一部の一例を示すフローチャートである。
【図１９】実施形態４の選択状態判定手段１３０の処理を説明するための図である。
【図２０】実施形態４の選択状態判定手段１３０の処理の一部の一例を示すフローチャートである。
【図２１】実施形態４の仮想物体制御手段１３０の処理の一部の一例を示すフローチャートである。
【図２２】実施形態４の仮想物体制御手段１４０の処理を説明するための図である。
【図２３】実施形態４の効果を説明するための図である。
【図２４】実施形態４の効果を説明するための図である。
【図２５】実施形態４の選択状態判定手段１３０の処理の一部の一例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、添付画像を参照して本発明の好適な実施形態について詳細に説明する。
【００１９】
（実施形態１）
＜構成＞
図１は、本実施形態に係る情報処理装置１００の構成の一例を示す図である。
【００２０】
情報処理装置１００は、位置姿勢取得手段１１０、選択位置検出手段１２０、選択状態判定手段１３０、フラグ制御手段１６０、仮想物体制御手段１４０、表示手段１５０から構成される。また、情報処理装置１００は、ＣＰＵ、ＲＡＭなどの一般的なコンピュータと同様の構成でもよい。その際、ＲＡＭに読み込まれたコンピュータプログラムをＣＰＵが実行することにより上記機能を実現するようにしてもよい。
【００２１】
位置姿勢取得手段１１０はユーザーが使用するＨＭＤやカメラなどの撮影像や磁気センサなどの位置姿勢センサの情報を利用してユーザーまたはＨＭＤの視点４００の位置姿勢を取得する。なお、これ以降簡単のため、ユーザーまたはＨＭＤの視点４００の位置姿勢をまとめて、ユーザーの視点４００の位置姿勢と表記する。
【００２２】
選択位置検出手段１２０はＨＭＤやカメラの撮影像または、深度センサや磁気センサの情報を用いて、後述する選択手段３００の選択位置を検出する。選択位置とは、選択手段３００の３次元位置姿勢に基づいて決まる３次元座標を指す。
【００２３】
選択手段３００にはユーザーの手やその他体の一部または全体、または指標や磁気センサの受信機を張り付けた指示器具などがなり得る。
【００２４】
選択状態判定手段１３０はＨＭＤやカメラの撮影像または、深度センサや磁気センサ、曲げセンサ、コントローラのボタンなどの情報を用いて、選択手段３００が仮想物体５００を選択しているかどうかという選択状態を判定する。
【００２５】
仮想物体５００はＣＧやアイコンなどを指し、１つまたは複数存在する。
【００２６】
フラグ制御手段１６０は、選択位置の検出可否、前記選択状態の判定可否のいずれか１つ以上と前記選択状態の変化に応じてフラグを制御する。具体的には、仮想物体５００を選択していると判定されていた状態から、選択手段３００の選択位置の検出と選択状態の判定の少なくともどちらか一方が不可になった場合に、不可になったことを示すフラグを設定する。
【００２７】
仮想物体制御手段１４０はフラグ制御手段１６０により設定されるフラグの状態に応じて仮想物体５００に関する仮想物体制御処理を行う。仮想物体５００に関する仮想物体制御処理とは、仮想物体５００の位置姿勢、表示方法、他のユーザーが仮想物体５００を選択できるかを示す選択可否、仮想物体５００に対応づけられた機能の起動状態などの変更処理を指す。
【００２８】
表示手段１５０は、位置姿勢取得手段１１０によって得られたユーザーの視点４００の位置姿勢および仮想物体制御手段１４０による仮想物体５００の制御結果をもとに、仮想物体５００の仮想画像をＨＭＤまたはディスプレイなどに表示する。
【００２９】
以上の構成により、選択手段３００が検出範囲外に出た場合でも好適なＵＩ操作を行うことができる。すなわち、選択手段３００が検出範囲外に出た場合、再度検出可能になったときや可能になるまでの間の仮想物体５００の表示方法や位置姿勢、選択可否などを変更する。これにより、選択して移動してきたつもりの仮想物体５００が置き去りになったり、選択をやめたつもりの仮想物体５００が追従してきたりするのを防ぐ。
【００３０】
＜処理の手順＞
図２は、本実施形態の情報処理装置１００におけるフローチャートである。
【００３１】
ステップＳ１１００では、位置姿勢取得手段１１０によって、ユーザーまたはＨＭＤの視点４００の位置姿勢を取得する。位置姿勢の取得方法としては、位置姿勢の基準となる指標を配置して、ＨＭＤやカメラなどの撮影像を用いて指標を検出することで位置姿勢を推定する手段が存在する。この他にも、撮影像から特徴点を抽出して、ＨＭＤやカメラの位置姿勢を推定するＳＬＡＭ（Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｌｏｃａｌｉｚａｔｉｏｎ  ａｎｄ  Ｍａｐｐｉｎｇ）という方法や磁気センサやジャイロセンサなどを用いる方法も存在する。
【００３２】
この他、ユーザーまたはＨＭＤの視点４００の位置姿勢を取得することができる任意の手法を用いることができる。
【００３３】
ステップＳ１２００では、選択位置検出手段１２０によって、選択手段３００の選択位置を検出する。選択位置の検出方法は、ＨＭＤやカメラの画像を用いる手法やセンサを用いる手法が考えられる。例えば、ＨＭＤやカメラの画像を用いる手法では、選択手段３００が指標を張り付けた指示器具であれば、ＨＭＤやカメラの画像から選択手段３００に対応する指標を認識することで選択手段３００の位置姿勢を検出することができる。また、選択手段３００がユーザーの手や体の一部であれば、画像から手または体の一部に相当する領域を検出し、ステレオマッチングを行ってＨＭＤからの相対位置を求めることができる。
【００３４】
センサを用いて選択位置を検出する場合であれば、手や指示器具などの選択手段３００に磁気センサやジャイロセンサを取りつけることで選択手段３００の位置姿勢を検出することができる。また、深度センサを用いる場合であれば、公知のモデルフィッティング技術によって、深度センサで得られる深度画像から、手または指示器具の位置姿勢を推定することができる。
【００３５】
また、指示器具や手の位置をそのまま選択位置に用いず、指示器具や手の位置から算出される位置を選択位置とすることもできる。
【００３６】
例えば、図３のように指標を張り付けた指示器具を選択手段３００として利用する場合、指示器具に対する相対位置姿勢が一定の位置になる場所を選択位置とすることもできる。この場合に、相対位置姿勢が一定になる位置を仮想像３０１のような仮想像を用いて示すこともできる。図３の例では選択位置を示す仮想像は、仮想物体５００を指し示すことになる。
【００３７】
この他、選択位置を検出できる任意の方法を用いることができる。
【００３８】
ステップＳ１３００では、選択状態判定手段１３０によって、選択手段３００が仮想物体５００を選択しているかどうかを示す選択状態を判定する。例えば選択手段３００がゲームコントローラなどのようにボタンを持つ指示器具であれば、ボタンが押されていれば選択していると判定することができる。また、ボタンが押されていても、選択位置検出手段１２０により得られる選択手段３００の選択位置と、仮想物体５００の位置が一定以上離れていれば選択していないと判定することもできる。
【００３９】
また、後述するステップＳ１６００によって設定されるフラグに応じて選択状態の判定を行うこともできる。例えば、フラグが設定されていない場合には、コントローラのボタンが押されていて、かつ選択位置と仮想物体５００が一定距離内にあるときのみ選択していると判定する。逆に、フラグが設定されているときには選択位置と仮想物体５００の距離に関係なくボタンが押されていれば選択されていると判定するというようにすることもできる。
【００４０】
また、手を選択手段３００として用いる場合には、指先に指標またはセンサを付けて、各指先の間の距離が一定以下のときは選択していると判定することもできる。
【００４１】
この他、選択状態を任意の手段で判定することができる。
【００４２】
ステップＳ１４００では、仮想物体制御手段１４０によって仮想物体５００の位置姿勢や、表示方法、選択可否、仮想物体５００に対応づけられた機能の起動状態などを変更する仮想物体制御処理を行う。表示方法とは、表示するかしないか、色や形やサイズを変えるか、半透明にするか、点滅表示させるか、アイコン表示にするか、背景を光らせるなどの強調表示にするかなどを指す。このステップでは、ステップＳ１６００によって設定されるフラグの状態に応じて仮想物体制御処理を行う。このステップの詳細は後述する。
【００４３】
ステップＳ１５００では、表示手段１５０によって仮想画像をＨＭＤまたはディスプレイに表示する。ここでは、位置姿勢取得手段１１０によって得られたユーザーの視点４００の位置姿勢および仮想物体制御手段１４０による仮想物体５００の制御結果をもとに、仮想物体５００の仮想画像を表示する。また、仮想物体５００が非表示になっている場合には、仮想画像上に仮想物体５００に相当するアイコンなどを表示することもできる。これにより、検出できていない選択手段３００が仮想物体５００を選択した状態になっていることを明示することができる。
【００４４】
ステップＳ１６００では、フラグ制御手段１６０によってフラグを設定するかまたは解除するかを判定する。例えば、フラグが設定されているときにはフラグの解除処理を、設定されていないときにはフラグの設定処理を行う。図４はフラグ制御手段１６０がフラグの設定を行う処理の一例である。ステップＳ１６０１では、選択位置検出手段１２０から得られる情報をもとに選択手段３００の選択位置が検出可能かを判定し、可能であればステップＳ１６０２に、不可能であればステップＳ１６０３に処理を移す。ステップＳ１６０２は選択状態判定手段１３０から得られる情報をもとに選択手段３００が仮想物体５００を選択しているか判定可能かを判定する。判定が可能であれば処理を終了し、不可能であればステップＳ１６０３に処理を移す。ステップＳ１６０３では、前回の処理で選択手段３００が仮想物体５００を選択している状態になっていたかを判定する。選択状態であれば、ステップＳ１６０４へ処理を移し、選択状態でない場合には処理を終了する。ステップＳ１６０４では、フラグの設定を行う。このような処理により、フラグ制御手段１６０は、選択手段３００が仮想物体５００を選択していた状態から、選択手段３００の選択位置、選択状態の少なくとも１つ以上が検出または判定できなくなった場合にフラグを設定する。なお、ステップＳ１６０１またはステップＳ１６０２の処理を省いて、選択位置の検出可否もしくは選択状態の判定可否のどちらかしか考慮しないようにしてもよい。
【００４５】
また、図５はフラグ制御手段１６０が行うフラグ解除の判定処理の一例である。ステップＳ１６０５では、ステップＳ１６０２と同様、選択状態が判定可能かを判定し、可能であればステップＳ１６０６へ処理を移し、不可能であれば処理を終了する。ステップＳ１６０６では、選択手段３００が仮想物体５００を選択しているかを判定する。選択していればステップＳ１６０７に処理を移し、選択していなければステップＳ１６０９に処理を移す。ステップＳ１６０７では、ステップＳ１６０２同様に、選択手段３００の選択位置が検出可能かを判定する。可能であればステップＳ１６０８へ処理を移し、不可能であれば処理を終了する。ステップＳ１６０８およびステップＳ１６０９ではフラグを解除する処理を行う。これにより、フラグ処理手段１６０は、選択手段３００の選択状態が判定可能で選択状態にないと判定された場合、および選択状態が判定可能で選択状態にあり、選択位置が検出可能な場合にフラグを解除する。なお、ステップＳ１６０５、Ｓ１６０６またはステップＳ１６０７の処理を省いて、選択位置もしくは選択状態のどちらかしか考慮しないようにしてもよい。
【００４６】
また、フラグの設定や解除の判定は、選択手段３００に付属のボタンの押下やキーボード操作などの任意の手段を用いて行ってもよい。フラグの解除も必ずしも行わなくてもよい。
【００４７】
ここからステップＳ１４００の詳細を示す。ここの処理では、仮想物体５００を選択した状態から、選択手段３００が検出範囲外に出たとき、選択手段３００が仮想物体５００を選択したままである、または選択したままの可能性がある場合には仮想物体５００が表示されないようにする。また、再度検出されたときには、選択手段３００の位置姿勢に合わせて仮想物体５００の位置姿勢を変更するようにする。
【００４８】
図６は以上のような処理を達成するために行われる、ステップＳ１４００の仮想物体制御処理決定の一例を示す表である。図６では、例えばフラグが設定されていて、選択位置が検出可能であり、選択状態になっているならば処理１４０１を行うことを示す。また、フラグが設定されていなくて、選択位置が検出可能であり、選択状態になっている場合は処理１４０１と処理１４０４を行う。処理１４０１では、選択位置に応じて仮想物体５００の位置姿勢を変更し、もし非表示になっているならば表示に変更する。選択位置に応じて位置姿勢を変更するとは、選択位置に仮想物体５００の位置を変更したり、選択位置や選択手段３００の姿勢に対して一定の相対位置姿勢になるように仮想物体５００の位置姿勢を変更したりすることなどを指す。この他、フラグ設定時の選択手段３００と仮想物体５００の相対位置姿勢になるように仮想物体５００の位置姿勢を変更するなど任意の方法を用いることができる。処理１４０４では、選択可否を変更し、選択されている仮想物体５００が他のユーザーから選択できないようにする。また、フラグが設定されていて、選択位置が検出できないまたは選択状態でないならば処理１４０２を行う。処理１４０２では、仮想物体５００を非表示に変更する。この他、半透明や強調表示など任意の表示方法を用いることができる。また、フラグが設定されておらず、かつ選択位置が検出できないまたは選択状態でないならば、処理１４０３と処理１４０５を行う。処理１４０３では処理１４０２で仮想物体５００が非表示になっている場合に表示に変更する。処理１４０５では仮想物体５００が他のユーザーから選択不可になっている場合に選択可能にする。
【００４９】
なお、図６において「選択状態になっているか」という項目が「×」になっている場合には選択状態が判定できない状態と、選択状態が判定できるが、選択状態でない場合が含まれる。また、選択状態が判定可能かという条件と選択状態になっているかという条件を分けて図６のようにしてもよい。この場合には、選択状態が判定可能でない場合には選択状態は不明なので「−」で示される。
【００５０】
図６、図６の制御方法決定の表において、処理内容は必ずしもこれらの表の通りにならなくてもよい。例えば、図６においてフラグが設定されていて、選択位置の検出と選択状態の判定が可能だが、選択状態でない場合の処理は、図６では処理１４０３となっているが、これを処理１４０２に変更してもよい。また、選択可否の変更処理である処理１４０４、処理１４０５を省いてもよい。また、選択された仮想物体５００に対応づけられた機能がある場合には、その機能の起動や停止を行う処理を入れてもよい。この場合には、例えば処理１４０４と同じタイミングで機能を起動し、処理１４０５と同じタイミングで機能を停止することが考えられる。
【００５１】
なお、位置姿勢の変更は、一度の処理で変更してもいいし、変更前と変更後の位置姿勢の間で少しずつ変更させてもいい。また、表示方法と組みわせて、変更前の位置姿勢では徐々に透明になっていき、変更後の位置姿勢では徐々に表示されるようにしてもいい。
【００５２】
以上の処理により、仮想物体５００を選択した状態から選択位置または選択状態が不明になった際にも好適なＵＩを実現することができる。
【００５３】
例えば、図７のような状況を考える。図７（ａ）は、ＨＭＤ４０１を被ったユーザー１が選択手段３００を用いて、７００の位置にある仮想物体５００を選択している状況を示す。このとき、選択手段３００には指標が付けられており、ＨＭＤ４０１により撮影される画像を用いて指標を検出することで選択手段３００の位置を検出する。この状態から図７（ｂ）のようにユーザー１が顔の向きを変えると選択手段３００の位置が検出できなくなってしまう。この状況からさらに図７（ｃ）のようにユーザー１が９００の位置から９０１の位置に移動し、かつ仮想物体５００があった７００の位置を見たとする。このような場合に、特許文献２のような処理を行うと、仮想物体５００を選択した状態でユーザー１が移動したつもりでも、７００の位置に仮想物体５００が置き去りにされた状態になってしまう。これに対して、本実施形態の手法を用いると、ユーザー１が７００の位置を見ても仮想物体５００が非表示になっているので、置き去りになってしまっているように見える状況を防ぐことができる。また、再度選択手段３００の選択位置が検出できたときには、図７（中央）のように仮想物体５００の表示する位置姿勢を変更することで選択手段３００に仮想物体５００を追従させることができる。これにより、仮想物体５００が置き去りになることを防ぐことができる。また、図７（下方）のように複数のユーザーがいた場合にも、選択していたはずの仮想物体５００が置き去りになると、他のユーザー（ここではユーザー２）から見て仮想物体５００を選択できる状態かどうかの判断ができない。これに対して本実施形態では、選択していた仮想物体５００は選択手段３００の位置が検出できなくなった時点で非表示になるので、ユーザー２が選択してしまうことはない。これは、非表示ではなく半透明にした場合なども同様で、他のユーザーに仮想物体５００が選択されている、または選択されている可能性があることを表示方法の違いで示すことができる。さらに、ユーザー２が仮想物体５００を選択しようとしても選択できないようにすることもできる。また、再度選択手段３００の選択位置が検出される前に、選択状態でないと判定されれば、仮想物体５００は７００の位置に再度表示されることになる。これにより、ユーザー１が選択手段３００の位置が検出されていない状態で選択を解除したつもりでも、仮想物体５００が追従してきてしまうという状況を防ぐことができる。
【００５４】
（実施形態２）
実施形態２では、実施形態１に、フラグが設定された時点での仮想物体５００の位置姿勢を記憶する手段を追加する。これにより、仮想物体５００を選択した状態から、選択手段３００の位置検出や選択状態判定ができなくなったときに、仮想物体５００の位置姿勢や表示方法の問題を解決するＵＩのパターンを増やすことができる。具体的には、仮想物体５００を選択している可能性がある間はユーザーに仮想物体５００を追従させ、可能性がなくなったら元の場所に戻すことができる。これにより、どのユーザーが仮想物体５００を選択している可能性があるのかを明示することができる。
【００５５】
＜構成＞
図８は、本実施形態に係る情報処理装置１０１の構成を示す図である。実施形態１の構成に加え、仮想物体位置記憶手段１７０が追加されている。仮想物体位置記憶手段１７０は、フラグ制御手段１６０によりフラグが設定されたときに選択されていた仮想物体５００の位置姿勢を記憶する。仮想物体制御手段１４０は、仮想物体位置記憶手段１７０により記憶された仮想物体５００の位置姿勢や、位置姿勢取得手段１１０により得られるユーザーの視点４００の位置姿勢にも応じて仮想物体制御処理を行う。
【００５６】
＜処理の手順＞
図９は、本実施形態の情報処理装置１０１の処理を示したフローチャートである。ステップＳ１１１０、Ｓ１２１０、Ｓ１３１０、Ｓ１５１０、Ｓ１６１０はそれぞれ実施形態１のステップＳ１１００、Ｓ１２００、Ｓ１３００、Ｓ１５００、Ｓ１６００と同様であるため説明を省略する。
【００５７】
ステップＳ１７１０では、仮想物体位置記憶手段１７０が、ステップＳ１６１０によりフラグが設定されたら、その時点での選択されていた仮想物体５００の位置姿勢を記憶する。これにより、仮想物体５００を選択していた状態から、選択位置の検出または選択状態の判定が行えなくなった時点で、選択していた仮想物体５００がどこにあったかを記憶しておくことができる。
【００５８】
ステップＳ１４１０では、仮想物体制御手段１４０が、実施形態１のステップＳ１４００の処理に加えて、ステップＳ１７１０で記憶された仮想物体５００の位置姿勢も利用して仮想物体５００に関する仮想物体制御処理を行う。ここでは、仮想物体５００を選択した状態から、選択手段３００が検出範囲外に出たとき、仮想物体５００を選択したままである、または選択したままの可能性がある場合には仮想物体５００がユーザー１や選択手段３００に追従するようにする。また、仮想物体５００がユーザーの視点４００や選択手段３００に追従している間は、仮想物体５００がもとあった位置にも仮想物体５００を複製した仮想物体が表示されるようにする。そして、選択手段３００が選択状態でないと判断されたら元の位置に仮想物体５００が戻るようにしたり、再度検出されたときに選択手段３００の位置姿勢に合わせて仮想物体５００の位置姿勢を変更したりするようにする。
【００５９】
図１０は以上のような処理を達成するために行われる、ステップＳ１４１０の仮想物体制御処理決定の一例を示す表である。例えばフラグが設定されていて、選択位置が検出でき、選択状態が判定不可能である場合、処理１４１６、処理１４１４が実行される。処理１４１６は実施形態１の処理１４０１と同様の処理であり、選択位置に応じて仮想物体５００の位置姿勢を変更する。ただし、表示方法に関しては、通常の表示方法以外にも、半透明表示や強調表示など任意の表示方法にすることができる。このとき、処理１４１４により、現在の仮想物体５００の位置姿勢に仮想物体５００を表示するのとは別に、もう一つ仮想物体５００を複製し、仮想物体位置姿勢記憶手段１７０により記憶された位置姿勢に半透明表示する。このときの表示方法は、半透明表示に限らず、強調表示や点滅表示など通常の表示方法とは異なる表示方法であれば任意の方法でよい。また、フラグが設定されていて、選択位置は検出できないが、選択状態である、または選択状態を判定できない場合には処理１４１２や処理１４１４が実行される。処理１４１２では、仮想物体５００の位置姿勢をユーザーの視点４００の位置姿勢に応じて変更し表示する。具体的には、ユーザーの視点４００の位置姿勢をもとに、ユーザーの頭上や背中側に仮想物体５００を移動させたり、ユーザーの視点４００の位置姿勢の変化量分だけ仮想物体５００の表示位置を変化させたりする。このとき、表示方法はステップＳ１４１６同様に、通常の表示方法以外でもよい。また、フラグが設定されていて、選択状態でないと判定された場合には、処理１４１３により仮想物体位置記憶手段１７０で記憶した位置姿勢に仮想物体５００の位置姿勢を戻し、表示を行う。この際、処理１４１４などにより、記憶されていた位置姿勢に既に複製した仮想物体がなんらかの表示方法で表示されていれば、そちらの表示は非表示にする。また、フラグが設定されていて、選択位置が検出でき、選択状態であると判定された場合には、処理１４１１、処理１４１５を行う。処理１４１１は実施形態１の処理１４０１と同じ処理であるので説明を省略する。処理１４１５では、処理１４１４などにより、仮想物体５００の現在の位置姿勢とは別に、記憶されていた位置姿勢に既に複製した仮想物体がなんらかの表示方法で表示されていれば、そちらの表示を非表示にする。
【００６０】
図１０の制御方法決定の表においても、実施形態１の図６、７同様に、処理内容は必ずしも表の通りにならなくてもよい。例えば、選択可否の変更処理である処理１４０４、処理１４０５を加えてもよい。また、選択された仮想物体５００に対応づけられた機能がある場合には、その機能の起動や停止を行う処理を入れてもよい。
【００６１】
また、処理１４１４によって表示されている半透明の仮想物体を、他のユーザーが選択しようとした場合には、どのユーザーが現在半透明になっている仮想物体の複製元の仮想物体５００を選択しているかという情報を表示してもよい。さらに、仮想物体５００を選択しているユーザーがどこにいるかを示すこともできる。
【００６２】
以上の処理により、仮想物体５００を選択した状態から選択位置または選択状態が不明になった際にも好適なＵＩのパターンを実施形態１より増やすことができる。具体的には、仮想物体５００を選択している可能性がある間はユーザーに仮想物体５００を追従させ、可能性がなくなったら元の場所に戻すことができる。これにより、どのユーザーが仮想物体５００を選択している可能性があるのかを明示することができる。
【００６３】
例えば、実施形態１と同様に図７のような状況を考える。図７（ａ）でユーザー１は７００の位置にある仮想物体５００を選択し、図７（ｂ）で選択手段３００の選択位置が検出できなくなる。この状況から図１１のようにユーザー１が９０１の位置に移動し、かつ仮想物体５００があった７００の位置を見て、さらにユーザー２は７００の位置とユーザー１の頭上を見ていたとする。このとき、ユーザー２のＨＭＤ４０２にはユーザー１の頭上に仮想物体５００が表示され、７００の位置には仮想物体５００の複製である仮想物体５０１が半透明表示や強調表示されることになる。これにより、ユーザー２には７００の位置にあった仮想物体５００がユーザー１に選択されているまたはされている可能性があることがわかる。さらに、ユーザー１の選択位置が検出される前に仮想物体５００を選択した状態でなくなっていた場合には、図１１のように仮想物体５００は７００の位置に戻ることになる。このことから、ユーザー２は仮想物体５０１によって仮想物体５００がどこに戻る可能性があるのかを知ることができる。また、ユーザー１は図１１のような状況で、仮想物体５０１を見ることによって、自身が仮想物体５００を選択した状態または選択している可能性がある状態になっていることを知ることができる。なお、選択位置が検出された状態で選択状態になっていた場合には図７のように仮想物体５００が選択手段３００に追従することになる。
【００６４】
（実施形態３）
実施形態３では、実施形態１または２に、特定の時点からの経過時点を記憶する手段を追加する。これにより、ユーザーが意図せず仮想物体５００を選択して持ってきてしまった場合や、選択した状態のままになっていることに気づいていない場合にも対処しつつ、好適なＵＩを提供することができる。下記では第実施形態２に経過時間を記憶する処理を追加した場合の例を示す。
【００６５】
＜構成＞
図１２は、本実施形態に係る情報処理装置１０２の構成を示す図である。実施形態２の構成に加え、経過時間記憶手段１８０が追加されている。経過時間記憶手段１８０は、フラグ制御手段１６０の処理結果をもとに時間の計測開始やリセットを行う。
【００６６】
フラグ制御手段１６０は経過時間記憶手段１８０により記憶された時間にも応じてフラグの制御を行う。
【００６７】
また、仮想物体制御手段１４０は、経過時間記憶手段１８０に記憶されている第１経過時間、第２経過時間のいずれか１つ以上にも応じて仮想物体制御処理を行う。
【００６８】
＜処理の手順＞
図１３は、本実施形態の情報処理装置１０２の処理を示したフローチャートである。ステップＳ１１２０、Ｓ１２２０、Ｓ１３２０、Ｓ１５２０はそれぞれ実施形態１のステップＳ１１００、Ｓ１２００、Ｓ１３００、Ｓ１５００と同様であるため説明を省略する。
【００６９】
ステップＳ１８２０では、経過時間記憶手段１８０が特定の時点からの経過時間を計測し記憶する処理を行う。ここで、特定の時点とはフラグ制御手段１６０によりフラグが設定されたとき、またはフラグが解除されたときを指す。ここでは、フラグが設定された時点からの経過時間を第１経過時間、フラグが解除された時点からの経過時間を第２経過時間とする。なお、第１経過時間はフラグが解除された時点、第２経過時間はフラグが設定された時点でリセットしてもよい。
【００７０】
ステップＳ１６２０では、フラグ設定手段１６０が、実施形態１のステップＳ１６００の処理に加えて、ステップＳ１８２０で計測される第１経過時間に応じて処理を変更する。具体的には、第１経過時間が一定以上になったらフラグの設定を解除するという処理を行う。この際、フラグ解除の基準とする時間は、６０秒や１０分、または図１３の処理を１０００回繰り返したときなど任意の時間を用いることができる。なお、この第１経過時間に応じたフラグの解除処理は、ステップＳ１６００のフラグの解除処理の前または後に行うことができる。
【００７１】
ステップＳ１７２０では、仮想物体位置記憶手段１７０が、ステップＳ１７１０の処理に加えて、第２経過時間が一定以上になるまで、第２経過時間計測開始時に解除されたフラグが設定されたときの仮想物体５００の位置姿勢の保持を行う。この際、フラグ設定時の位置姿勢を記憶しておく基準とする時間は、ステップＳ１６２０の場合と同様、任意の時間を用いることができる。
【００７２】
ステップＳ１４２０では、仮想物体制御手段１４０が、ステップＳ１４１０のような処理に加えて、第２経過時間にも応じて仮想物体制御処理を変更する。ここの処理では、仮想物体５００を選択した状態から、選択手段３００が検出範囲外に出たとき、仮想物体５００を選択したままである、または選択したままの可能性があるという状況が一定以上続いたら選択していない状態に戻す。また、再度検出されたときに、選択状態であるとシステムに判定されて選択手段３００の位置に合わせて仮想物体５００の位置姿勢が変更されても、一定時間内であれば元の位置に戻せるようにする。
【００７３】
図１４は以上のような処理を達成するために行われる、ステップＳ１４２０の仮想物体制御処理決定の一例を示すフローチャートである。
【００７４】
ステップＳ１４２１では、フラグが設定されているかを判定し、設定されていればステップＳ１４２２へ、されていなければステップＳ１４２５へ処理を移す。ステップＳ１４２２では、第１経過時間が一定以上になっているかを判定する。ここの処理で一定以上かの判断の基準に用いる時間は、ステップＳ１６２０でフラグを解除するかどうかの基準に用いる時間と同じになるようにする。一定以上であれば、ステップＳ１４２３へ、一定以上でない場合はステップＳ１４２４へ処理を移す。ステップＳ１４２３の処理は、実施形態２の処理１４１３と同じ処理になるので説明を省略する。ステップＳ１４２４では、図１０で示した処理決定に基づいて処理を行う。ステップＳ１４２５では、第２経過時間が一定以下であるかを確認する。ここの処理で一定以下かの判断の基準に用いる時間は、ステップＳ１７２０で仮想物体５００の位置姿勢を保持するかどうかの基準に用いる時間と同じになるようにする。第２経過時間が一定以下でない場合はステップＳ１４２８に処理を移す。一定以下であればステップＳ１４２６に処理を移す。ステップＳ１４２６では、ユーザーにより所定の動作が行われたかを判定する。ここで所定の動作とは、例えば選択手段３００の位置が検出可能な状況で、選択手段３００が一定周期で左右に揺らされたときや一定以上の速さで動かされた場合などが挙げられる。また、選択手段３００にボタンが付属しているのであれば、特定のボタンを押下した時でもよい。また、指先に指標またはセンサを付けて、手を選択手段３００として用いる場合にも、各指先の移動速度が一定以上になったり、各指の相対位置関係が特定条件を満たしたりしたら所定の動作をしたと判定してもよい。ステップＳ１４２６で所定の動作を行った場合にはステップＳ１４２７へ、行っていない場合にはステップＳ１４２８に処理を移す。ステップＳ１４２７の処理は、実施形態２の処理１４１３と同じ処理になるので説明を省略する。ステップＳ１４２８は、ステップＳ１４２４と同様に、図１０で示した処理決定に基づいて処理を決定する。
【００７５】
以上の処理により、ユーザーが意図せず仮想物体５００を選択して持ってきてしまった場合や、選択した状態のままになっていることに気づいていない場合にも対処しつつ、好適なＵＩのパターンを実施形態１より増やすことができる。
【００７６】
例えば、実施形態１と同様に図７のような状況を考える。図７（ａ）でユーザー１は７００の位置にある仮想物体５００を選択し、図７（ｂ）で選択手段３００の選択位置が検出できなくなる。この状況から図１５（上方）のようにしばらくの間、選択手段３００を検出できないような方向を向いて移動し続けたとする。このとき、ユーザー１が仮想物体５００を選択したまま、もしくは選択したままである可能性がある状態で移動していることに気づいていない場合、ユーザー２は仮想物体５００を選択したくてもできないままになってしまう。しかし、本実施形態では、仮想物体５００を選択したまま、もしくは選択したままである可能性がある状態が一定時間続いたら仮想物体５００は図１５（中央）のようにもとの位置７００に戻り、ユーザー２が選択できるようになる。
【００７７】
また、図７（ｂ）の状況から図７のように選択手段３００の位置姿勢を検出可能になり、選択手段３００に合わせて仮想物体５００の位置姿勢が変更された場合を考える。このとき、ユーザーは位置９０１に移動するまでの間に仮想物体５００の選択を解除したつもりだったが、誤判定で仮想物体５００が移動してきてしまう場合や、選択して移動して来たが、やめて元の場所に戻したい場合があり得る。このような場合には、実施形態１や２ではもとの場所に戻しに行くしかないが、本実施形態では図１５（下方）のように所定の動作（図１５（中央）では一定の周期で選択手段を振る）を行うことで、仮想物体５００を位置７００に戻すことができる。
【００７８】
（実施形態４）
実施形態４では、選択手段３００として複数の指示器具や複数の手を用いる場合について説明する。ここでは具体的に両手を選択手段３００として用いる場合に関して詳細に示す。この実装形態では実施形態１、２、３のいずれかに、選択手段３００の形状を推定する手段を追加する。これにより、仮想物体５００を選択した状態で、手が検出できなくなった後、再度検出できるようになった場合に仮想物体５００をどのように移動させるといいかという問題に対処できる好適なＵＩを提供することができる。ここで扱う問題とは具体的には、両手が検出された場合にどちらの手に仮想物体５００を追従させるか、片方の手が検出されて仮想物体５００を選択できない状態のときに仮想物体５００を追従させるべきかなどを指す。下記では実施形態３に形状を推定する処理を追加した場合の例を示す。
【００７９】
＜構成＞
図１６は、本実施形態に係る情報処理装置１０２の構成を示す図である。実施形態３の構成に加え、形状推定手段１９０が追加されている。形状推定手段１９０は、選択手段３００である手の形状推定を行う。
【００８０】
選択状態判定手段１３０は形状推定手段１９０によって得られた形状にも応じて選択状態であるかどうかの判定を行う。
【００８１】
また、仮想物体制御手段１４０は、形状推定手段１９０によって得られた形状にも応じて仮想物体制御処理を行う。
【００８２】
＜処理の手順＞
図１７は、本実施形態の情報処理装置１０３の処理を示したフローチャートである。ステップＳ１１３０、Ｓ１２３０、Ｓ１５３０、Ｓ１６３０、Ｓ１７３０、Ｓ１８３０はそれぞれ実施形態３のステップＳ１１２０、Ｓ１２２０、Ｓ１５２０、Ｓ１６２０、Ｓ１７２０、Ｓ１８２０と同様であるため説明を省略する。
【００８３】
ステップＳ１９３０では、形状推定手段１９０が選択手段３００の形状推定の処理を行う。手の形状やジェスチャを検出する手段としては、画像から手の形状をＤｅｅｐ  Ｌｅａｒｎｉｎｇなどの機械学習をもとに画像から判定する手法や、深度センサで得られる情報にモデルフィッティング技術を用いる方法が考えられる。これらの手法を用いる場合、画像やセンサの検出可能範囲外に選択手段３００が存在する場合には形状推定が不可となる。この他、手に姿勢センサや曲げセンサのついたグローブを付けたり、指毎に指標または位置姿勢センサをつけて各指の位置を求めたりすることで手の形状を推定することができる。この他モーションキャプチャなどに使われるような任意の技術を利用することができる。
【００８４】
ステップＳ１３３０では、選択状態判定手段１３０がステップＳ１３００のような判定に加えて、形状推定手段１９０で得られた形状情報にも応じて選択状態であるかの判定を変更する。ステップＳ１３３０の詳細は後述する。
【００８５】
ステップＳ１４３０では、仮想物体制御手段１４０が形状推定手段１９０によって得られた形状にも応じて仮想物体制御処理を行う。ここでは、処理の決定方法は実施形態３と同様の処理決定を行うが、図１０の処理１４１１のように選択位置に応じて仮想物体５００の位置姿勢を変更する際の変更方法が変化する。ステップＳ１４３０において、選択位置に応じて仮想物体５００の位置姿勢を変更する際の処理の変更点の詳細は後述する。
【００８６】
ここからステップＳ１３３０の詳細を説明する。図２５はステップＳ１３３０の処理の一例を示すフローチャートである。ステップＳ１３３０では実施形態１同様、フラグが設定されているかどうかによって選択状態の判定の処理を変更する。ステップＳ１３５１でフラグが設定されているかどうかを判定し、設定されていなければステップＳ１３５３へ、されている場合はステップＳ１３５２へ処理を移す。フラグが設定されていない場合の処理であるステップＳ１３５３では、仮想物体５００の位置姿勢を考慮した判定を行う。具体的には、仮想物体５００を手で選択しようとした時、手が仮想物体５００と一定以上接していれば選択していると判定することができる。また、仮想物体５００と手を剛体として扱って剛体同士の物理計算をもとに、把持したと判定される場合に選択していると判定する手段もある。なお、ここでいう把持とは物理計算によって仮想物体５００の位置姿勢を変更することができる状態を指す。また、手と仮想物体５００の距離が一定以下でかつ手が閉じ切っていなければ選択していると判定することもできる。これらの場合に手の形状や手の位置姿勢を利用して判定することになる。この他、選択手段３００である手の位置姿勢や形状が推定できている場合に使える任意の把持判定を用いて選択判定を行うことができる。また、仮想物体５００に対して、両手でないと選択できないという選択のための制約条件を設定することもできる。例えば、両手でないと選択できないとした仮想物体５００に関しては、両手が前述したような選択状態と判定される条件を満たした場合にのみ、選択手段３００は仮想物体５００を選択状態であるとすることもできる。一方、両手でないと選択できないという制約がない場合は、前述のような選択状態判定をそのまま用いることができる。なお、片手で選択できるか両手でないと選択できないかの条件の設定は、最初に手が仮想物体５００の選択状態の条件を満たしたときに、満たした手が両手であれば両手でないと選択できないというような設定方法でもよい。この場合、一度選択状態でないと判定されたら、再度選択状態になる際に制約条件を再設定してもよい。また、事前に各仮想物体に関して制約条件を設定しておくなど、任意の方法で制約条件を設定することができる。また、制約条件は両手でないと選択できないという条件以外に、右手でないと選択できないとか、左手でないと選択できないという条件でもよい。なお、制約条件の設定は、選択状態設定手段１３０が行ってもよいし、別に制約条件設定手段を設けて設定してもよい。
【００８７】
また、以上のような判定方法を用いる際に、仮想物体５００に両手でないと選択できないという制約条件が付いている場合には、片手が形状推定されなくなっただけでも選択状態は判定不可とする。また、制約条件が付いていない場合で、仮想物体５００を片手で選択していた場合には、仮想物体５００を選択していた手の形状が推定できなくならない限りは選択状態の判定が不可とは判定しないようにする。これにより、各手に関する情報を踏まえて、選択状態にあるかどうかが正確に判定できない場合にのみフラグが設定されるようにすることができる。
【００８８】
一方、フラグが設定されている場合の処理であるステップＳ１３５２では、仮想物体５００と選択位置の位置関係は考慮しない判定を行う。ここから仮想物体５００に対して両手でしか選択できないという制約条件がある場合と、ない場合について説明する。両手でしか選択できないという制約条件がある場合、両手の位置検出や形状推定ができない限り判定不可にし、かつ判定可能な場合には両手間の相対位置姿勢も判定の中で考慮するようにする。ただし、片手だけ形状が推定でき、その形状が選択状態の条件を満たさないのであれば選択状態でないとする。また、両手でしか選択できないという制約条件がない場合には、片手（例えば右手）だけが形状推定されて選択状態の条件を満たさなかった場合でも、もう一方（左手）が推定不可であれば判定不可であるとしておく。さらに、左手が再度推定可能になる前で、かつ一度も右手が推定可能範囲外にでなかった場合には、右手の形状が変わって選択状態の条件を満たしても、選択状態は判定不可としておく。フラグが設定されている時で、両手でしか選択できないという制約条件がある場合と、ない場合の詳細な処理は図１８、２７を用いて説明する。
【００８９】
図１８はフラグが設定されている時で、仮想物体５００が両手でしか選択できないという制約条件が設定されている場合の選択状態判定処理の一例を示したフローチャートである。この例では、ステップＳ１３３１で両手の形状推定が可能かを判定する。可能であればステップＳ１３３２に、片手しか推定できないまたは両手とも推定できないのであればステップＳ１３３７に処理を移す。ステップＳ１３３２では両手の選択位置が検出可能かを判定する。可能ならステップＳ１３３３へ、片手しかできないまたは両手とも検出できないならステップＳ１３３６に処理を移す。ステップＳ１３３６では選択状態は判定不可であるという判定を行う。ステップＳ１３３３では、各手の形状や位置関係が選択状態の条件を満たすかを判定する。例えば、選択状態の条件が、手と仮想物体５００の距離が一定以下であり、指が閉じ切っていない場合であるとする。この場合に、図１９（上方）（ａ）のように右手３０２、左手３０３を選択手段３００として利用し、両手で仮想物体５００を挟みこんで選択状態になった後、図１９（上方）（ｂ）のように左右の手が検出されなくなってフラグが設定されたとする。このような場合に、再度両手の位置検出や形状推定が可能になった時、図１９（下方）（ａ）のように両手の指が開いていて、左右の手の間の距離と仮想物体５００の大きさの差が一定以下であればステップＳ１３３４で選択状態であると判定する。逆に、図１９（下方）（ｂ）のように左右の手の距離と仮想物体５００の大きさの差が大きい時や、図１９（下方）（ｃ）のように片手または両手の指が閉じている時（この例では右手３０２が閉じている）はステップＳ１３３５で選択状態でないと判定する。また、ステップＳ１３３１で両手の形状推定が不可と判定されたとき、ステップＳ１３３７では片手だけなら推定可能かを判定する。片手だけでも推定できないのであればステップＳ１３４０で選択状態判定不可であると判定される。片手だけでも推定できるのであればステップＳ１３３９で、推定できている手が選択状態の条件を満たさない状態かを判定する。例えば、図１９と同じような条件で考えるならば、右手だけが形状推定できていて、右手の形状が指を閉じている形状であれば満たさないと判定される。選択状態の条件を満たさないと判定されればステップＳ１３３９で選択状態でないと判定する。条件を満たす場合にはステップＳ１３４０に処理を移す。
【００９０】
また、図２０はフラグが設定されている時で、仮想物体５００が片手でも持てる場合、つまり制約条件が設定されていない場合の選択状態判定処理の一例を示したフローチャートである。ステップＳ１３４１ではステップＳ１３３１と同様、両手の形状推定が可能かを判定する。両手の推定が可能であればステップＳ１３４２へ、片手のみ推定可能または両手とも推定不可能であればステップＳ１３４６へ処理を移す。ステップＳ１３４２では両手の内どちらか一方が選択状態の条件を満たすかを判定する。どちらかの手または両手が選択状態の条件を満たすならステップＳ１３４３へ、どちらも満たさないならステップＳ１３４５へ処理を移す。ステップＳ１３４５では選択状態でないと判定する。ステップＳ１３４３では、選択状態を満たした両手または片手が、選択状態を満たさない状態で形状推定され続けていた手ではないかを判定する。図１９、２６と同じような条件で考えるならば、例えば右手のみ形状が推定されたとき、右手の指は閉じていたが、その後形状推定可能な状態を維持しながら、右手の指を開いた場合にはステップＳ１３４５に処理を移す。逆に、前回判定時まではフラグ設定されてから一度も右手の形状が推定できていなかったり、一度推定された後にまた推定できなくなって今回の判定で再度推定できるようになったりしたのであればステップＳ１３４４に処理を移す。ステップＳ１３４４では選択状態であると判定する。ステップＳ１３４６ではステップＳ１３３７同様に、片手なら形状推定可能かを判定し、可能ならステップＳ１３４７へ、不可能ならステップＳ１３５０へ処理を移す。ステップＳ１３５０では選択状態は判定不可能であると判定する。ステップＳ１３４７では、ステップ１３４２と同じような判定を用いて、推定できている手が選択状態の条件を満たすかを判定する。満たすならステップＳ１３４８へ、満たさないならステップＳ１３５０へ処理を移す。ステップＳ１３４７により、片手のみが形状が推定でき、かつ選択状態の条件を満たさなくても選択状態でないと判定しないようにする。ステップＳ１３４８では、ステップＳ１３４３同様に、選択状態を満たす手が、選択状態を満たさない状態で形状推定され続けていた手ではないかを判定する。満たさない状態で推定され続けていた手であればステップＳ１３５０へ、そうでなければステップＳ１３４９へ処理を移す。ステップＳ１３４９では選択状態であると判定する。ステップＳ１３４３やステップＳ１３４８により、選択状態の条件を満たさなかった手が、途中で形状を変えて選択状態の条件を満たしても選択状態であると判定されることを避けることができる。
【００９１】
ここからステップＳ１４３０において、選択位置に応じて仮想物体５００の位置姿勢を変更する際の処理の変更点の詳細を説明する。図２１は選択位置に応じて仮想物体５００の位置姿勢を変更する際の一例を示すフローチャートである。ステップＳ１４３１では仮想物体５００が両手でしか選択できない制約条件が設定された仮想物体ではないかを判定する。制約条件が設定されていればステップＳ１４３２へ、されていなければステップＳ１４３３へ処理を移す。ステップＳ１４３２では両手の位置姿勢に応じて仮想物体５００の位置姿勢を変更する。例えば、両手の位置の中間地点に仮想物体５００の位置を変更するなど、両手の位置姿勢を考慮した任意の方法で変更することができる。ステップＳ１４３３では両手が選択状態であると判定するのに用いられたかを判定する。ここでは、例えばフラグ設定されていないときであれば、選択状態の条件を満たしたのが両手であるかを判定して、両手であればステップＳ１４３４へ、そうでなければステップＳ１４３５へ処理を移す。また、フラグ設定されているときで、仮想物体５００が両手でしか持てないという制約条件が設定されている場合、選択状態判定手段１３０でステップＳ１３３４を実行していれば仮想物体制御手段１４０はステップＳ１４３４へ処理を移す。
【００９２】
また、両手の制約条件のない仮想物体であれば、ステップＳ１３４３で両方の手が選択状態の条件を満たし、かつ過去に満たさなかった手ではないと判定された場合に、仮想物体制御手段１４０はステップＳ１４３４へ処理を移す。ステップＳ１４３５はステップＳ１４３４とは逆に、片手に関してのみ選択状態を満たし、選択状態であると判定されたような場合に実行されるので、この片手の位置姿勢に応じて仮想物体５００の位置姿勢を変更する。ステップＳ１４３４では各手の間の距離と仮想物体５００のサイズの差が一定以内であれば、ステップＳ１４３２同様に両手の位置姿勢に応じて仮想物体５００の位置姿勢を変更する。差が一定以上であれば、いずれかの手の位置姿勢に応じて仮想物体５００の位置姿勢を変更する。このとき、どちらの手の位置姿勢を用いるかは任意の方法を用いて判定することができる。例えば、あらかじめ右手を優先するという設定をしておいて右手の位置姿勢に応じて変更してもよい。また、フラグ設定時に仮想物体５００を選択していた手の形状を記憶し、その形状により近い形状の手に合わせて位置姿勢を変更してもよい。この他任意の方法を用いて、仮想物体５００の位置姿勢変更に用いる手を判定することができる。
【００９３】
なお、ステップＳ１４３４で両手の位置姿勢に応じて仮想物体５００の位置姿勢を変更するか、どちらかの手の位置姿勢に応じて変更するかは、仮想物体５００のサイズと両手の距離の差によって切り替える以外の方法で切り替えてもよい。例えば、両手の位置関係が物理計算して仮想物体５００を支持可能な位置関係であるか、または両手の間に仮想物体５００が収まるスペースがあるかなど任意の方法を切り替えの基準としてよい。
【００９４】
また、実施形態３のステップＳ１４２６で所定の動作を行ったかどうかを判定し、行った場合には記憶した位置姿勢に仮想物体５００の位置姿勢を変更するという処理を行っている。この際に、図２２のような動作を所定の動作とすることもできる。図２２（ａ）は両手を水平にして左右に振るような動作、図２２（ｂ）は両手の掌を重ね合わせるような動作であり、この他にも両手または片手を用いて行える任意の動作を用いることができる。
【００９５】
なお、本実施形態では選択手段３００が両手である場合を説明しているが、本実施形態で説明しているような処理は、両手に限らず適応できる。例えば選択手段３００として２個以上の指示器具や手などを用いる場合、そのうちのいずれかまたはその組み合わせが選択状態の条件を満たすとき選択状態であると判定されるなど、任意の制約条件を用いることができる。また、その制約条件を満たす手や指示器具の組み合わせが選択状態の条件を満たすかどうかを判定できる場合のみ、選択状態の判定が可能であると判定するように処理することができる。
【００９６】
同様に図２０の仮想物体制御処理も２個以上の任意の指示器具や手などに応じて切り替えることができる。なお、形状推定手段１９０やその処理であるステップＳ１９３０は、必ずしもなくてもよい。この場合、ステップＳ１３３０の選択状態判定の処理やステップＳ１４３０の仮想物体制御処理は形状推定の結果を用いずに、複数の指示器具や手の位置姿勢などに応じて処理を行うことになる。
【００９７】
以上の処理により、両手が検出された場合にどちらの手に仮想物体を追従させるか、片方の手が検出されて仮想物体を選択できない状態のときに仮想物体を追従させるべきかなどの問題に対して好適なＵＩを実現できる。例えば、選択状態の条件が、手と仮想物体の距離が一定以下であり、指が閉じ切っていない場合であるとする。この条件で、図１９（ａ）のように両手で仮想物体５００を選択した後、図１９（ｂ）でユーザー１が顔の向きを変更して選択手段３００である右手３０２、左手３０３の形状推定や位置姿勢検出ができなくなったとする。この後、９００の位置からユーザー１が図２３のように９０１の位置に移動して両手が検出可能な向きに顔を向けたとする。この場合に、実施形態３まででは選択手段３００の位置に応じて、例えば手の位置姿勢に合わせて仮想物体５００が移動してくることになる。しかし、今回の例のように選択手段３００が複数の手や指示器具などである場合にどの位置姿勢に合わせるべきかが問題となる。本実施形態では、このとき両手の位置関係が仮想物体５００を両手で選択するのに適した位置関係であると判定した場合には、図２３（上方）のように仮想物体５００は両手の位置姿勢に合わせて、両手の間に位置姿勢が変更される。また、図２３（上方）（ａ）のように両手の位置関係が仮想物体５００を両手で選択するのに適さないと判定した場合には所定の判定方法、例えば右手を優先するなどの判定方法により、片手の位置姿勢に合わせて仮想物体５００の位置姿勢が変更される。
【００９８】
また、図２３（上方）（ｂ）のように片方の手（この図では右手３０２）が選択状態の条件を満たさず、もう一方の手が満たす場合には、満たす側の手（左手３０３）の位置姿勢に合わせて仮想物体５００の位置姿勢は変更される。
【００９９】
また、複数の手や指示器具がある場合に、いずれかが選択状態の条件を満たすかを判定できない場合の好適なＵＩも本実施形態では実現できる。例えば、図２３（中央）のように片方の手（この図では右手３０２）しか選択状態の条件を満たすか判定できておらず、もう一方の手（左手３０３）は判定できない場合には、判定できている手に応じて制御方法を切り替えることができる。例えば、判定できている右手が選択状態の条件を満たすならば図２３（中央）のように仮想物体５００は右手３０２の位置姿勢に応じて位置姿勢を変更される。逆に、選択状態の条件を満たさないならば、もう一方の手（左手）で仮想物体５００を選択した状態である可能性があると判定され、図２３（下方）のようになる。さらに図２３（下方）のような状態から一度右手が選択状態の条件を満たすか判定できなくなった後、再度右手が選択状態の条件を満たすと判定された場合には右手の位置姿勢に合わせて仮想物体５００の位置姿勢を変更することができる。これにより、仮想物体５００をユーザー１が左手から右手に持ち替える行動に対応したＵＩを実現できる。また、一度も選択状態の条件を満たすか判定できなくなることなしで、図２３（下方）の状態から右手が選択状態を満たすようになった場合には、仮想物体５００を選択している可能性があるのは左手のみであると判定される。これにより、右手の位置姿勢に合わせて仮想物体の位置姿勢を変更する処理は行われず、フラグ設定をしたままの状態となる。
【０１００】
また、仮想物体５００に両手でしか選択できないなどの制約を設定する場合に関しても好適なＵＩを実現できる。例えば仮想物体５００が両手でしか選択できないという制約を設定している場合に、図１９（ｂ）のように仮想物体を選択後、両手とも仮想物体を選択する条件を満たしているか判定できなくなったとする。この後、ユーザー１が９０１の位置に移動してから両手の選択状態を判定可能になり、両手とも選択状態の条件を満たしていれば図２３のように両手の位置姿勢に応じて仮想物体５００の位置姿勢を変更することになる。しかし、図２４（上方）のように両手の相対位置関係が選択状態と判定するための条件を満たさなかった場合や、片手または両手の形状が選択状態の条件を満たさない場合には、選択していないと判定され、フラグは解除される。その結果、もとの位置姿勢に仮想物体５００は戻る。また、片方の手のみが選択状態の条件を満たすか判定可能で、選択状態の条件を満たさないと判定された場合も、両手で選択し続けている可能性はなくなるので、図２４（中央）のようにもとの位置姿勢に仮想物体５００は戻る。逆に選択状態の条件を満たしていれば、もう一方の手が選択状態の条件を満たすか判定できるようになるまで、選択状態である可能性があると判定して、図２４（下方）のようにフラグが設定された状態のままになる。
【０１０１】
なお、実施形態１から４において選択手段３００の位置姿勢の検出や形状推定、選択状態の判定は、ユーザー１が装着しているＨＭＤ４０１で検出できるかを中心に説明した。しかし、実際には他のユーザー（ユーザー４０２など）のＨＭＤや、据え置きの他のデバイスやセンサなど任意の手段で検出や推定できれば、位置姿勢検出や形状推定は可能であると判定される。また、ユーザー１が位置を移動した場合（９００の位置から９０１の位置へ移動するなど）を中心に効果を説明しているが、移動を伴わなくても選択手段３００の位置姿勢や選択状態などが判定できなくなる場合には同様の効果がある。
【０１０２】
また、実施形態１から４において選択手段３００の選択位置や選択状態などを検出可能な状態で仮想物体５００を動かすことなく、選択手段３００の選択位置や選択状態などが判定不可となる場合を説明しているが、動かしてからでもよい。仮想物体５００を動かしてから、選択手段３００の選択位置や選択状態などが判定不可となった場合には、その時点での仮想物体５００の位置に半透明表示で仮想物体５０１が表示されたり、仮想物体５００が戻ったりすることになる。
【０１０３】
［他の実施形態］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１０４】
１１０  位置姿勢取得手段
１２０  選択位置検出手段
１３０  選択状態判定手段
１６０  フラグ制御手段
１４０  仮想物体制御手段
【図１】
2018173908.tif 000003
【図２】
2018173908.tif 000004
【図３】
2018173908.tif 000005
【図４】
2018173908.tif 000006
【図５】
2018173908.tif 000007
【図６】
2018173908.tif 000008
【図７】
2018173908.tif 000009
【図８】
2018173908.tif 000010
【図９】
2018173908.tif 000011
【図１０】
2018173908.tif 000012
【図１１】
2018173908.tif 000013
【図１２】
2018173908.tif 000014
【図１３】
2018173908.tif 000015
【図１４】
2018173908.tif 000016
【図１５】
2018173908.tif 000017
【図１６】
2018173908.tif 000018
【図１７】
2018173908.tif 000019
【図１８】
2018173908.tif 000020
【図１９】
2018173908.tif 000021
【図２０】
2018173908.tif 000022
【図２１】
2018173908.tif 000023
【図２２】
2018173908.tif 000024
【図２３】
2018173908.tif 000025
【図２４】
2018173908.tif 000026
【図２５】
2018173908.tif 000027