(57)【要約】【課題】ユーザが仮想オブジェクトと相互作用する仮想体験を改善し得る。【解決手段】コンピュータを用いてヘッドマウントディスプレイにユーザが没入する仮想空間を提供する方法であって、ユーザの身体の部分の動きに応じて操作オブジェクトを動かすステップと、前記身体の部分の動きに応じて対象オブジェクトを選択するステップと、を含み、操作オブジェクトと対象オブジェクトの位置関係に基づいて、対象オブジェクトの向きまたは位置を補正し、向きまたは位置が補正された対象オブジェクトを操作オブジェクトに関連付けることにより、対象オブジェクトを選択する。【選択図】図１３
2018110871.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータがヘッドマウントデバイスを制御するための情報処理方法であって、
前記コンピュータのプロセッサにおいて、
（a）仮想カメラと、操作オブジェクトと、対象オブジェクトとを含む仮想空間を規定する仮想空間データを特定するステップと、
（ｂ）前記ヘッドマウントデバイスの位置と、ユーザの頭部以外における身体の一部の位置を検出するように構成された検出ユニットの検出結果を取得するステップと、
（ｃ）前記ヘッドマウントデバイスの動きに応じて、前記仮想カメラを動かすステップと、
（ｄ）前記身体の一部の動きに応じて、前記操作オブジェクトを動かすステップと、
（ｅ）前記操作オブジェクトの動きに応じて、前記対象オブジェクトを選択するステップと、
（ｆ）前記対象オブジェクトが選択された状態で、前記操作オブジェクトの動きに応じて、前記対象オブジェクトを動かすステップと、
（ｇ）前記仮想カメラの動きに基づいて前記仮想カメラの視野を定義し、前記視野と前記仮想空間データに基づいて、視野画像データを生成するステップと、
（ｈ）前記視野画像データに基づいて、前記ヘッドマウントデバイスに視野画像を表示させるステップと、を含み、
前記操作オブジェクトにはコリジョンエリアが設定され、前記コリジョンエリアに基づいて前記操作オブジェクトと前記対象オブジェクトの接触を判定し、
前記身体の一部の速度及び前記操作オブジェクトの速度の少なくともいずれかに応じて前記コリジョンエリアの大きさを変化させる、方法。
【請求項２】
（ｅ）において、前記操作オブジェクトと前記対象オブジェクトの位置関係に基づいて、前記対象オブジェクトの向きまたは位置を補正し、向きまたは位置が補正された前記対象オブジェクトを前記操作オブジェクトに関連付けることにより、前記対象オブジェクトを選択する、請求項１の方法。
【請求項３】
前記身体の一部は前記ユーザの手であり、前記操作オブジェクトは前記手の動きに応じて動く仮想手である、請求項１又は２の方法。
【請求項４】
前記仮想手の動きが、前記対象オブジェクトを選択するための動きを含む場合には、前記対象オブジェクトを前記仮想手に向けて近づけるように、前記対象オブジェクトの位置を補正する、請求項３の方法。
【請求項５】
前記仮想手と前記対象オブジェクトが接触している状態で、前記仮想手の動きが前記対象オブジェクトを選択するための動きを含む場合には、前記対象オブジェクトを前記仮想手に向けて近づけるように、前記対象オブジェクトの位置を補正する、請求項４の方法。
【請求項６】
請求項１〜５のいずれかの方法を、前記コンピュータに実行させるプログラム。
【請求項７】
ヘッドマウントデバイスを制御するためのコンピュータであって、
前記コンピュータが備えるプロセッサの制御により、
（a）仮想カメラと、操作オブジェクトと、対象オブジェクトとを含む仮想空間を規定する仮想空間データを特定するステップと、
（ｂ）前記ヘッドマウントデバイスの位置と、ユーザの頭部以外における身体の一部の位置を検出するように構成された検出ユニットの検出結果を取得するステップと、
（ｃ）前記ヘッドマウントデバイスの動きに応じて、前記仮想カメラを動かすステップと、
（ｄ）前記身体の一部の動きに応じて、前記操作オブジェクトを動かすステップと、
（ｅ）前記操作オブジェクトの動きに応じて、前記対象オブジェクトを選択するステッ
プと、
（ｆ）前記対象オブジェクトが選択された状態で、前記操作オブジェクトの動きに応じて、前記対象オブジェクトを動かすステップと、
（ｇ）前記仮想カメラの動きに基づいて前記仮想カメラの視野を定義し、前記視野と前記仮想空間データに基づいて、視野画像データを生成するステップと、
（ｈ）前記視野画像データに基づいて、前記ヘッドマウントデバイスに視野画像を表示させるステップと、が実行され、
前記操作オブジェクトにはコリジョンエリアが設定され、前記コリジョンエリアに基づいて前記操作オブジェクトと前記対象オブジェクトの接触を判定し、
前記身体の一部の速度及び前記操作オブジェクトの速度の少なくともいずれかに応じて前記コリジョンエリアの大きさを変化させる、コンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータに関する。
【背景技術】
【０００２】
非特許文献１は、現実空間におけるユーザの手の状態（位置や傾き等）に応じて、仮想現実（Ｖｉｒｔｕａｌ  Ｒｅａｌｉｔｙ：ＶＲ）空間における手オブジェクトの状態を変化させると共に、当該手オブジェクトを操作することで仮想空間内の所定のオブジェクトに所定の作用を与えることを開示している。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】“Ｔｏｙｂｏｘ  Ｄｅｍｏ  ｆｏｒ  Ｏｃｕｌｕｓ  Ｔｏｕｃｈ”、［ｏｎｌｉｎｅ］、平成２７年１０月１３日、Ｏｃｕｌｕｓ、［平成２８年８月６日検索］、インターネット＜ｈｔｔｐｓ：／／ｗｗｗ．ｙｏｕｔｕｂｅ．ｃｏｍ／ｗａｔｃｈ？ｖ＝ｉＦＥＭｉｙＧＭａ５８＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
非特許文献１では、手オブジェクトによって所定のオブジェクトを操作する上で、改善の余地がある。例えば、ユーザが現実空間における実際の物体を操作する上では体験できないような仮想体験をユーザに提供する上で改善の余地があり、ユーザが所望のタイミングで所望の仮想オブジェクトを操作可能とする必要がある。これにより、ＶＲ空間の他、拡張現実（Ａｕｇｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ：ＡＲ）空間、複合現実（Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ：ＭＲ）空間といった、ユーザが様々な環境において仮想オブジェクトと相互作用する仮想体験を改善し得る。
【０００５】
本開示は、仮想体験を改善し得る情報処理方法、当該情報処理方法をコンピュータに実現させるためのプログラム及びコンピュータを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本開示が示す一態様によれば、コンピュータがヘッドマウントデバイスを制御するための情報処理方法であって、
前記コンピュータのプロセッサにおいて、
（ａ）仮想カメラと、操作オブジェクトと、対象オブジェクトとを含む仮想空間を規定する仮想空間データを特定するステップと、
（ｂ）前記ヘッドマウントデバイスの位置と、ユーザの頭部以外における身体の部分の位置を検出するように構成された検出ユニットの検出結果を取得するステップと、
（ｃ）前記ヘッドマウントデバイスの動きに応じて、前記仮想カメラを動かすステップと、
（ｄ）前記身体の部分の動きに応じて、前記操作オブジェクトを動かすステップと、
（ｅ）前記操作オブジェクトの動きに応じて、前記対象オブジェクトを選択するステップと、
（ｆ）前記対象オブジェクトが選択された状態で、前記操作オブジェクトの動きに応じて、前記対象オブジェクトを動かすステップと、
（ｇ）前記仮想カメラの動きに基づいて前記仮想カメラの視野を定義し、前記視野と前記仮想空間データに基づいて、視野画像データを生成するステップと、
（ｈ）前記視野画像データに基づいて、前記ヘッドマウントデバイスに視野画像を表示させるステップと、を含み、
前記操作オブジェクトにはコリジョンエリアが設定され、前記コリジョンエリアに基づいて前記操作オブジェクトと前記対象オブジェクトの接触を判定し、
前記身体の一部の速度及び前記操作オブジェクトの速度の少なくともいずれかに応じて前記コリジョンエリアの大きさを変化させる、方法、が提供される。
【発明の効果】
【０００７】
本開示によれば、仮想体験を改善し得る情報処理方法、当該情報処理方法をコンピュータに実現させるためのプログラム及びコンピュータを提供することができる。
【図面の簡単な説明】
【０００８】
【図１】ヘッドマウントディスプレイ（Ｈｅａｄ  Ｍｏｕｎｔｅｄ  Ｄｉｓｐｌａｙ：ＨＭＤ）システムを示す概略図である。
【図２】ＨＭＤを装着したユーザの頭部を示す図である。
【図３】制御装置のハードウェア構成を示す図である。
【図４】外部コントローラの具体的な構成の一例を示す図である。
【図５】視野画像をＨＭＤに表示する処理を示すフローチャートである。
【図６】仮想空間の一例を示すｘｙｚ空間図である。
【図７】状態（A）は、図６に示す仮想空間のｙｘ平面図である。状態（Ｂ）は、図６に示す仮想空間のｚｘ平面図である。
【図８】ＨＭＤに表示された視野画像の一例を示す図である。
【図９】状態（A）は、ＨＭＤと外部コントローラを装着したユーザを示す図である。状態（Ｂ）は、仮想カメラと、手オブジェクトと、対象オブジェクトを含む仮想空間を示す図である。
【図１０】本実施形態に係る情報処理方法を説明するためのフローチャートである。
【図１１】本実施形態に係る情報処理方法を説明するためのフローチャートである。
【図１２】右手オブジェクト４００Ｒによって対象オブジェクト５００が選択される様子を示す。
【図１３】右手オブジェクト４００Ｒによって対象オブジェクト５００が選択される様子を示す。
【図１４】右手オブジェクト４００Ｒによって対象オブジェクト５００が選択される様子を示す。
【図１５】本実施形態に係る情報処理方法を説明するためのフローチャートである。
【図１６】右手オブジェクト４００Ｒによって対象オブジェクト５００が選択される様子を示す。
【発明を実施するための形態】
【０００９】
［本開示が示す実施形態の説明］
本開示が示す実施形態の概要を説明する。
（項目１）
コンピュータがヘッドマウントデバイスを制御するための情報処理方法であって、
前記コンピュータのプロセッサにおいて、
（ａ）仮想カメラと、操作オブジェクトと、対象オブジェクトとを含む仮想空間を規定する仮想空間データを特定するステップと、
（ｂ）前記ヘッドマウントデバイスの位置と、ユーザの頭部以外における身体の部分の位置を検出するように構成された検出ユニットの検出結果を取得するステップと、
（ｃ）前記ヘッドマウントデバイスの動きに応じて、前記仮想カメラを動かすステップと、
（ｄ）前記身体の部分の動きに応じて、前記操作オブジェクトを動かすステップと、
（ｅ）前記操作オブジェクトの動きに応じて、前記対象オブジェクトを選択するステップと、
（ｆ）前記対象オブジェクトが選択された状態で、前記操作オブジェクトの動きに応じて、前記対象オブジェクトを動かすステップと、
（ｇ）前記仮想カメラの動きに基づいて前記仮想カメラの視野を定義し、前記視野と前記仮想空間データに基づいて、視野画像データを生成するステップと、
（ｈ）前記視野画像データに基づいて、前記ヘッドマウントデバイスに視野画像を表示させるステップと、を含み、
（ｅ）において、前記操作オブジェクトと前記対象オブジェクトの位置関係に基づいて、前記対象オブジェクトの向きを補正し、向きが補正された前記対象オブジェクトを前記操作オブジェクトに関連付けることにより、前記対象オブジェクトを選択する、方法。
本項目の方法によれば、操作オブジェクトが対象オブジェクトを選択する際に、対象オブジェクトの姿勢が自動的に調整される。これにより、ユーザが身体の一部を動かして対象オブジェクトを選択する際に、正確に位置関係を調整しなくても、違和感なく対象オブジェクトを選択できる。従って、ユーザと仮想オブジェクトのインタラクションが改善され、ユーザに提供される仮想体験が改善され得る。
（項目２）
前記操作オブジェクトに関連付けられ、前記操作オブジェクトにより前記対象オブジェクトを選択するための第１方向を特定し、
前記対象オブジェクトが前記操作オブジェクトにより選択されるための第２方向を特定し、
前記第２方向を前記第１方向に近づけるように、前記対象オブジェクトの向きを補正する、項目１の方法。
これにより、ユーザが身体の一部を動かして対象オブジェクトを選択する際に、正確に位置関係を調整しなくても、違和感なく対象オブジェクトを選択できる。
（項目３）
前記身体の一部は前記ユーザの手であり、前記操作オブジェクトは前記手の動きに応じて動く仮想手であり、
前記対象オブジェクトにおける、前記仮想手の複数の選択部分によって選択されるための複数の被選択部分を特定し、複数の前記被選択部分の位置関係に基づいて前記第２方向を特定する、項目２の方法。
これにより、ユーザが仮想手を動かして対象オブジェクトを選択する際に、正確に位置関係を調整しなくても、違和感なく対象オブジェクトを掴むようにして選択できる。
（項目４）
複数の前記被選択部分を複数の前記選択部分に近づけるように、前記対象オブジェクトを前記操作オブジェクトに向けて移動させながら、前記対象オブジェクトを前記操作オブジェクトに関連付ける、項目３の方法。
これにより、ユーザが仮想手を動かして対象オブジェクトを選択する際に、正確に位置関係を調整しなくても、違和感なく対象オブジェクトを掴むようにして選択できる。
（項目５）
前記操作オブジェクトの動きが、複数の前記選択部分を第１位置から第２位置へ向けて移動させる動きを含む場合に、前記対象オブジェクトの向きを補正する、項目３または４の方法。
これにより、ユーザが対象オブジェクトを選択するために仮想手に入力した操作に基づいて対象オブジェクトの向きを調整するので、より直感的に対象オブジェクトを選択できる。
（項目６）
前記身体の一部は前記ユーザの手であり、前記操作オブジェクトは前記手の動きに応じて動く仮想手であり、
前記仮想手の動きが、前記対象オブジェクトを選択するための動きを含む場合には、前記対象オブジェクトを前記仮想手に向けて近づけるように、前記対象オブジェクトの位置を補正する、項目１〜５のいずれかの方法。
これにより、ユーザが対象オブジェクトを選択するために仮想手に入力した操作に基づいて対象オブジェクトの位置を調整するので、ユーザはより直感的に対象オブジェクトを選択できる。
（項目７）
前記仮想手にはコリジョンエリアが設定され、前記コリジョンエリアに基づいて前記仮想手と前記対象オブジェクトの接触を判定し、
前記仮想手と前記対象オブジェクトが接触している状態で、前記仮想手の動きが前記対象オブジェクトを選択するための動きを含む場合には、前記対象オブジェクトを前記仮想手に向けて近づけるように、前記対象オブジェクトの位置を補正し、
前記ユーザの手の速度に応じて前記コリジョンエリアの大きさを変化させる、項目６の方法。
これにより、ユーザの手の速度に応じて対象オブジェクトを選択しやすくすることができるので、ユーザはより直感的に対象オブジェクトを選択できる。
（項目８）
前記対象オブジェクトが、前記操作オブジェクトの可動域外に配置されている場合に、
前記操作オブジェクトに関連付けられ、前記操作オブジェクトにより前記対象オブジェクトを選択するための第１方向を特定し、
前記位置関係は、前記第１方向に前記対象オブジェクトが配置されていることを含み、
前記ユーザによる所定の操作入力に基づいて、前記対象オブジェクトを前記第１方向に沿って前記操作オブジェクトに向けて移動させる、項目１〜７のいずれかの方法。
これにより、仮想手が届かないところに配置された対象オブジェクトを、容易かつ直感的に選択することができる。
（項目９）
項目１〜８のいずれかの方法を、前記コンピュータに実行させるプログラム。
【００１０】
［本開示が示す実施形態の詳細］
以下、本開示が示す実施形態について図面を参照しながら説明する。尚、本実施形態の説明において既に説明された部材と同一の参照番号を有する部材については、説明の便宜上、その説明は繰り返さない。
【００１１】
最初に、図１を参照してヘッドマウントディスプレイ（ＨＭＤ）システム１の構成について説明する。図１は、ＨＭＤシステム１を示す概略図である。図１に示すように、ＨＭＤシステム１は、ユーザＵの頭部に装着されたＨＭＤ１１０と、位置センサ１３０と、制御装置１２０と、外部コントローラ３２０とを備える。
【００１２】
ＨＭＤ１１０は、表示部１１２と、ＨＭＤセンサ１１４と、注視センサ１４０とを備える。表示部１１２は、ＨＭＤ１１０を装着したユーザＵの視界（視野）を覆うように構成された非透過型の表示装置を備えている。これにより、ユーザＵは、表示部１１２に表示された視野画像を見ることで仮想空間に没入することができる。尚、表示部１１２は、ユーザＵの左目に画像を提供するように構成された左目用の表示部とユーザＵの右目に画像を提供するように構成された右目用の表示部から構成されてもよい。また、ＨＭＤ１１０は、透過型表示装置を備えていても良い。この場合、当該透過型表示装置は、その透過率を調整することにより、一時的に非透過型の表示装置として構成可能であってもよい。また、視野画像は仮想空間を構成する画像の一部に、現実空間を提示する構成を含んでいてもよい。例えば、ＨＭＤ１１０に搭載されたカメラで撮影した画像を視野画像の一部に重畳して表示させてもよいし、当該透過型表示装置の一部の透過率を高く設定することにより、視野画像の一部から現実空間を視認可能にしてもよい。
【００１３】
ＨＭＤセンサ１１４は、ＨＭＤ１１０の表示部１１２の近傍に搭載される。ＨＭＤセンサ１１４は、地磁気センサ、加速度センサ、傾きセンサ（角速度センサやジャイロセンサ等）のうちの少なくとも１つを含み、ユーザＵの頭部に装着されたＨＭＤ１１０の各種動きを検出することができる。
【００１４】
注視センサ１４０は、ユーザＵの視線方向を検出するアイトラッキング機能を有する。注視センサ１４０は、例えば、右目用注視センサと、左目用注視センサを備えてもよい。右目用注視センサは、ユーザＵの右目に例えば赤外光を照射して、右目（特に、角膜や虹彩）から反射された反射光を検出することで、右目の眼球の回転角に関する情報を取得してもよい。一方、左目用注視センサは、ユーザＵの左目に例えば赤外光を照射して、左目（特に、角膜や虹彩）から反射された反射光を検出することで、左目の眼球の回転角に関する情報を取得してもよい。
【００１５】
位置センサ１３０は、例えば、ポジション・トラッキング・カメラにより構成され、ＨＭＤ１１０と外部コントローラ３２０の位置を検出するように構成されている。位置センサ１３０は、制御装置１２０に無線又は有線により通信可能に接続されており、ＨＭＤ１１０に設けられた図示しない複数の検知点の位置、傾き又は発光強度に関する情報を検出するように構成されている。さらに、位置センサ１３０は、外部コントローラ３２０に設けられた複数の検知点３０４（図４参照）の位置、傾き及び／又は発光強度に関する情報を検出するように構成されている。検知点は、例えば、赤外線や可視光を放射する発光部である。また、位置センサ１３０は、赤外線センサや複数の光学カメラを含んでもよい。
【００１６】
ＨＭＤセンサ１１４、注視センサ１４０、位置センサ１３０を総称して、検出ユニットと称することがある。検出ユニットは、ユーザの身体の一部の動きを検知し、検出結果を制御装置１２０に出力する。検出ユニットは、ＨＭＤセンサ１１４のようなユーザＵの頭部の動きを検知する機能と、位置センサ１３０のようなユーザの頭部意外の部分の動きを検知する機能を備える。また、検出ユニットは、注視センサ１４０のようなユーザＵの視線の動きを検知する機能を備えてもよい。
【００１７】
制御装置１２０は、ＨＭＤセンサ１１４や位置センサ１３０から取得された情報に基づいて、ＨＭＤ１１０の位置や向きといった動き情報を取得し、当該取得された動き情報に基づいて、仮想空間における仮想視点（仮想カメラ）の位置や向きと、現実空間におけるＨＭＤ１１０を装着したユーザＵの位置や向きを正確に対応付けることができる。さらに、制御装置１２０は、位置センサ１３０から取得された情報に基づいて、外部コントローラ３２０の動き情報を取得し、当該取得された動き情報に基づいて、仮想空間内に表示される手指オブジェクト（後述する）の位置や向きと、現実空間における外部コントローラ３２０とＨＭＤ１１０との間の、位置や向きの相対関係を正確に対応付けることができる。なお、外部コントローラ３２０の動き情報は、ＨＭＤセンサ１１４と同様に、外部コントローラ３２０に搭載された地磁気センサ、加速度センサ、傾きセンサ等であってもよい。
【００１８】
制御装置１２０は、注視センサ１４０から送信された情報に基づいて、ユーザＵの右目の視線と左目の視線をそれぞれ特定し、当該右目の視線と当該左目の視線の交点である注視点を特定することができる。さらに、制御装置１２０は、特定された注視点に基づいて、ユーザＵの視線方向を特定することができる。ここで、ユーザＵの視線方向は、ユーザＵの両目の視線方向であって、ユーザＵの右目と左目を結ぶ線分の中点と注視点を通る直線の方向に一致する。
【００１９】
図２を参照して、ＨＭＤ１１０の位置や向きに関する情報を取得する方法について説明する。図２は、ＨＭＤ１１０を装着したユーザＵの頭部を示す図である。ＨＭＤ１１０を装着したユーザＵの頭部の動きに連動したＨＭＤ１１０の位置や向きに関する情報は、位置センサ１３０及び／又はＨＭＤ１１０に搭載されたＨＭＤセンサ１１４により検出可能である。図２に示すように、ＨＭＤ１１０を装着したユーザＵの頭部を中心として、３次元座標（ｕｖｗ座標）が規定される。ユーザＵが直立する垂直方向をｖ軸として規定し、ｖ軸と直交しＨＭＤ１１０の中心を通る方向をｗ軸として規定し、ｖ軸およびｗ軸と直交する方向をｕ軸として規定する。位置センサ１３０及び／又はＨＭＤセンサ１１４は、各ｕｖｗ軸回りの角度（すなわち、ｖ軸を中心とする回転を示すヨー角、ｕ軸を中心とした回転を示すピッチ角、ｗ軸を中心とした回転を示すロール角で決定される傾き）を検出する。制御装置１２０は、検出された各ｕｖｗ軸回りの角度変化に基づいて、仮想視点からの視軸を定義するための角度情報を決定する。
【００２０】
図３を参照して、制御装置１２０のハードウェア構成について説明する。図３は、制御装置１２０のハードウェア構成を示す図である。制御装置１２０は、制御部１２１と、記憶部１２３と、Ｉ／Ｏ（入出力）インターフェース１２４と、通信インターフェース１２５と、バス１２６とを備える。制御部１２１と、記憶部１２３と、Ｉ／Ｏインターフェース１２４と、通信インターフェース１２５は、バス１２６を介して互いに通信可能に接続されている。
【００２１】
制御装置１２０は、ＨＭＤ１１０とは別体に、パーソナルコンピュータ、タブレット又はウェアラブルデバイスとして構成されてもよいし、ＨＭＤ１１０に内蔵されていてもよい。また、制御装置１２０の一部の機能がＨＭＤ１１０に搭載されると共に、制御装置１２０の残りの機能がＨＭＤ１１０とは別体の他の装置に搭載されてもよい。
【００２２】
制御部１２１は、メモリとプロセッサを備えている。メモリは、例えば、各種プログラム等が格納されたＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やプロセッサにより実行される各種プログラム等が格納される複数ワークエリアを有するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等から構成される。プロセッサは、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）及び／又はＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であって、ＲＯＭに組み込まれた各種プログラムから指定されたプログラムをＲＡＭ上に展開し、ＲＡＭとの協働で各種処理を実行するように構成されている。
【００２３】
プロセッサが本実施形態に係る情報処理方法をコンピュータに実行させるためのプログラム（後述する）をＲＡＭ上に展開し、ＲＡＭとの協働で当該プログラムを実行することで、制御部１２１は、制御装置１２０の各種動作を制御してもよい。制御部１２１は、メモリや記憶部１２３に格納された所定のアプリケーションプログラム（ゲームプログラムやインターフェースプログラム等を含む。）を実行することで、ＨＭＤ１１０の表示部１１２に仮想空間（視野画像）を表示する。これにより、ユーザＵは、表示部１１２に表示された仮想空間に没入することができる。
【００２４】
記憶部（ストレージ）１２３は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＵＳＢフラッシュメモリ等の記憶装置であって、プログラムや各種データを格納するように構成されている。記憶部１２３は、本実施形態に係る情報処理方法をコンピュータに実行させるプログラムを格納してもよい。また、ユーザＵの認証プログラムや各種画像やオブジェクトに関するデータを含むゲームプログラム等が格納されてもよい。さらに、記憶部１２３には、各種データを管理するためのテーブルを含むデータベースが構築されてもよい。
【００２５】
Ｉ／Ｏインターフェース１２４は、位置センサ１３０と、ＨＭＤ１１０と、外部コントローラ３２０とをそれぞれ制御装置１２０に通信可能に接続するように構成されており、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子、ＤＶＩ（Ｄｉｇｉｔａｌ  Ｖｉｓｕａｌ  Ｉｎｔｅｒｆａｃｅ）端子、ＨＤＭＩ（登録商標）（Ｈｉｇｈ―Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子等により構成されている。尚、制御装置１２０は、位置センサ１３０と、ＨＭＤ１１０と、外部コントローラ３２０とのそれぞれと無線接続されていてもよい。
【００２６】
通信インターフェース１２５は、制御装置１２０をＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）又はインターネット等の通信ネットワーク３に接続させるように構成されている。通信インターフェース１２５は、通信ネットワーク３を介してネットワーク上の外部装置と通信するための各種有線接続端子や、無線接続のための各種処理回路を含んでおり、通信ネットワーク３を介して通信するための通信規格に適合するように構成されている。
【００２７】
図４を参照して、コントローラ３２０の一例について説明する。図４は、ある実施の形態に従うコントローラ３２０の概略構成を表す図である。
【００２８】
図８の状態（A）に示されるように、ある局面において、コントローラ３２０は、右コントローラ３２０Rと左コントローラ３２０Lとを含み得る。右コントローラ３２０Rは、ユーザUの右手で操作される。左コントローラ３２０Lは、ユーザUの左手で操作される。ある局面において、右コントローラ３２０Rと左コントローラ３２０Lとは、別個の装置として対称に構成される。したがって、ユーザUは、右コントローラ３２０Rを把持した右手と、左コントローラ３２０Lを把持した左手とをそれぞれ自由に動かすことができる。別の局面において、コントローラ３２０は両手の操作を受け付ける一体型のコントローラであってもよい。以下、右コントローラ３２０Rについて説明する。
【００２９】
右コントローラ３２０Rは、グリップ３０と、フレーム３１と、天面３２とを備える。グリップ３０は、ユーザ１９０の右手によって把持されるように構成されている。例えば、グリップ３０は、ユーザ１９０の右手の掌と３本の指（中指、薬指、小指）とによって保持され得る。
【００３０】
フレーム３１は、その円周方向に沿って配置された複数の赤外線ＬＥＤ３５を含む。赤外線ＬＥＤ３５は、コントローラ３２０を使用するプログラムの実行中に、当該プログラムの進行に合わせて赤外線を発光する。赤外線ＬＥＤ３５から発せられた赤外線は、右コントローラ３２０Rと左コントローラ３２０Lとの各位置や姿勢（傾き、向き）を検出するために使用され得る。図４に示される例では、二列に配置された赤外線ＬＥＤ３５が示されているが、一列あるいは３列以上の配列が使用されてもよい。
【００３１】
図８の状態（A）に示されるように、コントローラ３２０の姿勢がヨー、ロール、ピッチの各方向に基づいて特定される。また、状態（Ｂ）に示されるように、仮想空間２における手オブジェクト４００の姿勢がヨー、ロール、ピッチの各方向に基づいて特定される。従って、コントローラ３２０の姿勢を手オブジェクト４００の姿勢に対応付けることによって、ユーザの現実空間における手の動きに応じて、仮想空間２における手オブジェクト４００を動かすことができる。
【００３２】
グリップ３０は、ボタン３３，３４と、モーションセンサ１３０とを含む。ボタン３３は、グリップ３０の側面に配置され、右手の中指による操作を受け付ける。ボタン３４は、グリップ３０の前面に配置され、右手の人差し指による操作を受け付ける。ある局面において、ボタン３３，３４は、トリガー式のボタンとして構成される。モーションセンサ１３０は、グリップ３０の筐体に内蔵されている。なお、ユーザ１９０の動作がカメラその他の装置によってユーザUの周りから検出可能である場合には、グリップ３０は、モーションセンサ１３０を備えなくてもよい。
【００３３】
天面３２は、ボタン３６，３７と、アナログスティック３８とを備える。ボタン３６，３７は、プッシュ式ボタンとして構成される。ボタン３６，３７は、ユーザUの右手の親指による操作を受け付ける。アナログスティック３８は、ある局面において、初期位置（ニュートラルの位置）から３６０度任意の方向への操作を受け付ける。当該操作は、例えば、仮想空間２に配置されるオブジェクトを移動するための操作を含む。
【００３４】
ある局面において、ボタン３４が押下されることによって、手オブジェクト９３０における人差し指が伸ばした状態から曲げた状態に変化させてもよい。ボタン３３が押下されることによって、手オブジェクト９３０における中指、薬指、小指が伸ばした状態から曲げた状態に変化させてもよい。天面３２に親指が配置されること、または、ボタン３６，３７のいずれかが押下されることによって、手オブジェクト９３０における親指が伸ばした状態から曲げた状態に変化させてもよい。
【００３５】
図５から図８を参照することで視野画像をＨＭＤ１１０に表示するための処理について説明する。図５は、視野画像をＨＭＤ１１０に表示する処理を示すフローチャートである。図６は、仮想空間２００の一例を示すｘｙｚ空間図である。図７における状態（A）は、図６に示す仮想空間２００のｙｘ平面図である。図７における状態（Ｂ）は、図６に示す仮想空間２００のｚｘ平面図である。図８は、ＨＭＤ１１０に表示された視野画像Ｍの一例を示す図である。
【００３６】
図５に示すように、ステップＳ１において、制御部１２１（図３参照）は、仮想カメラ３００と、各種オブジェクトとを含む仮想空間２００を示す仮想空間データを生成する。図６に示すように、仮想空間２００は、中心位置２１を中心とした全天球として規定される（図６では、上半分の天球のみが図示されている）。また、仮想空間２００では、中心位置２１を原点とするｘｙｚ座標系が設定されている。仮想カメラ３００は、ＨＭＤ１１０に表示される視野画像Ｍ（図８参照）を特定するための視軸Ｌを規定している。仮想カメラ３００の視野を定義するｕｖｗ座標系は、現実空間におけるユーザＵの頭部を中心として規定されたｕｖｗ座標系に連動するように決定される。また、制御部１２１は、ＨＭＤ１１０を装着したユーザＵの現実空間における移動に応じて、仮想カメラ３００を仮想空間２００内で移動させてもよい。また、仮想空間２００内における各種オブジェクトは、例えば、左手オブジェクト４００Ｌ、右手オブジェクト４００Ｒ、対象オブジェクト５００を含む（図８，図９参照）。
【００３７】
ステップＳ２において、制御部１２１は、仮想カメラ３００の視野ＣＶ（図７参照）を特定する。具体的には、制御部１２１は、位置センサ１３０及び／又はＨＭＤセンサ１１４から送信されたＨＭＤ１１０の状態を示すデータに基づいて、ＨＭＤ１１０の位置や傾きに関する情報を取得する。次に、制御部１２１は、ＨＭＤ１１０の位置や傾きに関する情報に基づいて、仮想空間２００内における仮想カメラ３００の位置や向きを特定する。次に、制御部１２１は、仮想カメラ３００の位置や向きから仮想カメラ３００の視軸Ｌを決定し、決定された視軸Ｌから仮想カメラ３００の視野ＣＶを特定する。ここで、仮想カメラ３００の視野ＣＶは、ＨＭＤ１１０を装着したユーザＵが視認可能な仮想空間２００の一部の領域に相当する。換言すれば、視野ＣＶは、ＨＭＤ１１０に表示される仮想空間２００の一部の領域に相当する。また、視野ＣＶは、状態（A）に示すｘｙ平面において、視軸Ｌを中心とした極角αの角度範囲として設定される第１領域ＣＶａと、状態（Ｂ）に示すｘｚ平面において、視軸Ｌを中心とした方位角βの角度範囲として設定される第２領域ＣＶｂとを有する。尚、制御部１２１は、注視センサ１４０から送信されたユーザＵの視線方向を示すデータに基づいて、ユーザＵの視線方向を特定し、ユーザＵの視線方向に基づいて仮想カメラ３００の向きを決定してもよい。
【００３８】
制御部１２１は、位置センサ１３０及び／又はＨＭＤセンサ１１４からのデータに基づいて、仮想カメラ３００の視野ＣＶを特定することができる。ここで、ＨＭＤ１１０を装着したユーザＵが動くと、制御部１２１は、位置センサ１３０及び／又はＨＭＤセンサ１１４から送信されたＨＭＤ１１０の動きを示すデータに基づいて、仮想カメラ３００の視野ＣＶを変化させることができる。つまり、制御部１２１は、ＨＭＤ１１０の動きに応じて、視野ＣＶを変化させることができる。同様に、ユーザＵの視線方向が変化すると、制御部１２１は、注視センサ１４０から送信されたユーザＵの視線方向を示すデータに基づいて、仮想カメラ３００の視野ＣＶを移動させることができる。つまり、制御部１２１は、ユーザＵの視線方向の変化に応じて、視野ＣＶを変化させることができる。
【００３９】
ステップＳ３において、制御部１２１は、ＨＭＤ１１０の表示部１１２に表示される視野画像Ｍを示す視野画像データを生成する。具体的には、制御部１２１は、仮想空間２００を規定する仮想空間データと、仮想カメラ３００の視野ＣＶとに基づいて、視野画像データを生成する。
【００４０】
ステップＳ４において、制御部１２１は、視野画像データに基づいて、ＨＭＤ１１０の表示部１１２に視野画像Ｍを表示する（図８参照）。このように、ＨＭＤ１１０を装着しているユーザＵの動きに応じて、仮想カメラ３００の視野ＣＶが更新され、ＨＭＤ１１０の表示部１１２に表示される視野画像Ｍが更新されるので、ユーザＵは仮想空間２００に没入することができる。
【００４１】
仮想カメラ３００は、左目用仮想カメラと右目用仮想カメラを含んでもよい。この場合、制御部１２１は、仮想空間データと左目用仮想カメラの視野に基づいて、左目用の視野画像を示す左目用視野画像データを生成する。さらに、制御部１２１は、仮想空間データと、右目用仮想カメラの視野に基づいて、右目用の視野画像を示す右目用視野画像データを生成する。その後、制御部１２１は、左目用視野画像データと右目用視野画像データに基づいて、ＨＭＤ１１０の表示部１１２に左目用視野画像と右目用視野画像を表示する。このようにして、ユーザＵは、左目用視野画像と右目用視野画像から、視野画像を３次元画像として視認することができる。本開示では、説明の便宜上、仮想カメラ３００の数は一つとするが、本開示の実施形態は、仮想カメラの数が２つの場合でも適用可能である。
【００４２】
仮想空間２００に含まれる左手オブジェクト４００Ｌ、右手オブジェクト４００Ｒ及び対象オブジェクト５００について図９を参照して説明する。状態（A）は、ＨＭＤ１１０とコントローラ３２０Ｌ，３２０Ｒを装着したユーザＵを示す。状態（Ｂ）は、仮想カメラ３００と、右手オブジェクト４００Ｒ（第１操作オブジェクトの一例）と、左手オブジェクト４００Ｌ（第２操作オブジェクトの一例）と、対象オブジェクト５００とを含む仮想空間２００を示す。
【００４３】
図９に示すように、仮想空間２００は、仮想カメラ３００と、左手オブジェクト４００Ｌと、右手オブジェクト４００Ｒと、対象オブジェクト５００とを含む。制御部１２１は、これらのオブジェクトを含む仮想空間２００を規定する仮想空間データを生成している。上述したように、仮想カメラ３００は、ユーザＵが装着しているＨＭＤ１１０の動きに連動する。つまり、仮想カメラ３００の視野は、ＨＭＤ１１０の動きに応じて更新される。右手オブジェクト４００Ｒは、ユーザＵの右手（身体の第１部分）に装着されるコントローラ３２０Ｒの動きに応じて移動する第１操作オブジェクトである。左手オブジェクト４００Ｌは、ユーザＵの左手（身体の第２部分）に装着されるコントローラ３２０Ｌの動きに応じて移動する第２操作オブジェクトである。以降では、説明の便宜上、左手オブジェクト４００Ｌと右手オブジェクト４００Ｒを単に手オブジェクト４００と総称する場合がある。また、左手オブジェクト４００Ｌと右手オブジェクト４００Ｒは、それぞれコリジョンエリアＣＡを有する。対象オブジェクト５００は、コリジョンエリアCBを有する。コリジョンエリアＣＡ，CBは、手オブジェクト４００と対象オブジェクト５００とのコリジョン判定（当たり判定）に供される。例えば、手オブジェクト４００のコリジョンエリアＣＡと対象オブジェクト５００のコリジョンエリアCBとが接触することで、手オブジェクト４００と対象オブジェクト５００とが接触したことが判定される。図９に示すように、コリジョンエリアＣＡは、例えば、手オブジェクト４００の中心位置を中心とした直径Ｒを有する球により規定されてもよい。以下の説明では、コリジョンエリアＣＡは、オブジェクトの中心位置を中心とした直径Ｒの球状に形成されているものとする。
【００４４】
対象オブジェクト５００は、左手オブジェクト４００Ｌ，右手オブジェクト４００Ｒによって移動させることができる。例えば、図８に示す仮想空間２００において、キャラクタオブジェクトＣＯが通路ＲＷ上をＳＴＡＲＴ地点からＧＯＡＬ地点に向けて自動的に移動されるゲームを例示する。通路ＲＷ上には窪み部分が設けられており、キャラクタオブジェクトＣＯはＧＯＡＬ地点に向かう途中で当該窪みに落ちてしまい、ＧＯＡＬ地点にたどり着くことができず、ゲームオーバーとなる。ユーザは、手オブジェクト４００を操作することによって対象オブジェクト５００を操作することにより、上記窪みを対象オブジェクト５００でカバーすることにより、キャラクタオブジェクトＣＯをＧＯＡＬ地点に導くことができる。
【００４５】
対象オブジェクト５００には、後述するようにｘｙｚ空間における配置位置を定義する座標情報が設定されている。仮想空間２００には、ｘｙｚ空間座標系に対応するようにグリッドＧＲが設定されている。ユーザが手オブジェクト４００を対象オブジェクト５００に接触させる（掴む動作を行ってもよい）ことによって対象オブジェクト５００を選択し、この状態で対象オブジェクト５００に接触している手オブジェクト４００を移動させることによって対象オブジェクト５００を移動させ、対象オブジェクト５００の座標情報を変更させることができる。ユーザが手オブジェクト４００による対象オブジェクト５００の選択を解除する（掴んだ手を放すような動作を行ってもよい）と、解除した時点における対象オブジェクト５００の座標に最も近いグリッドに対象オブジェクト５００が配置される。
【００４６】
本実施形態に係る情報処理方法について図１０から図１６を参照して説明する。図１０，図１１，図１５は、本実施形態に係る情報処理方法を説明するためのフローチャートである。図１２〜図１４，図１６は、右手オブジェクト４００Ｒによって対象オブジェクト５００を選択する様子を示す。
【００４７】
図１０に示すように、ステップＳ１０において、ＨＭＤ１１０に提示される視野画像Mを特定する。本実施形態においては、図９の状態（Ｂ）に示すように、仮想カメラ３００の前方に対象オブジェクト５００、および、手オブジェクト４００Ｌ，４００Ｒが存在している。従って、図８に示すように、視野画像Ｍ内には、対象オブジェクト５００、および、手オブジェクト４００が表示される。その他のキャラクタオブジェクトＣＯや通路ＲＷといったオブジェクトは、以降の説明において図示を省略する。
【００４８】
ステップＳ１１において、制御部１２１は、コントローラ３２０によって検知されるユーザＵの手の動きに応じて、前述のように手オブジェクト４００を動かす。
【００４９】
ステップＳ１２において、制御部１２１は、対象オブジェクト５００と手オブジェクト４００が所定の条件を満たしたか否かを判定する。本実施形態においては、左手オブジェクト４００Ｌ，右手オブジェクト４００Ｒに設定されたコリジョンエリアＣＡに基づいて、各手オブジェクト４００と対象オブジェクト５００が接触したか否かを判定する。接触した場合には、ステップＳ１３へ進む。接触していない場合には、再びユーザの手の動き情報を待ち受け、手オブジェクト４００を動かす制御を継続する。
【００５０】
ステップＳ１３において、制御部１２１は、手オブジェクト４００に対象オブジェクト５００を選択するための動きが入力されたか否かを判定する。本実施形態においては、手オブジェクト４００が対象オブジェクト５００を選択するための複数の選択部分を備えている。特に、対象オブジェクト５００を手オブジェクト４００のような仮想手によって選択する場合には、仮想手による掴む動作によって対象オブジェクト５００が選択されることが好ましい。従って、複数の選択部分は、例えば図１２に示すように、右手オブジェクト４００Rの親指４１０Rと、それ以外の指のうち少なくとも一つを含む対向指４２０Rである。ステップＳ１３において、制御部１２１は、手オブジェクト４００の親指と、それ以外の指のうち少なくとも一つが曲げられたか否かを判定する。具体的には、右手オブジェクト４００の動きが、親指親４１０Rと対向指４２０Rを、伸ばされた状態である第1位置から、曲げられた状態である第2位置へ向けて移動させる動きを含むか否かを判定する。
【００５１】
ステップ１４において、制御部１２１は、対象オブジェクト５００が右手オブジェクト４００Rによって選択された状態とする。本実施形態においては、右手オブジェクト４００Ｒと対象オブジェクト５００の接触が判定されるとともに、前述のような操作によって右手オブジェクト４００Ｒの各指が曲げられることにより、対象オブジェクト５００が右手オブジェクト４００Ｒによって掴まれることによって選択された状態とされる。
【００５２】
ステップＳ１５において、制御部１２１は、対象オブジェクト５００が選択された状態で、手オブジェクト４００の動きに応じて対象オブジェクト４００を動かす。これにより、ユーザUは、仮想手４００によって対象オブジェクト５００を意のままに操作することができるという仮想体験を得ることができる。
【００５３】
本実施形態においては、上記のような仮想手４００による対象オブジェクト５００の制御に加えて、ユーザの仮想体験を改善するために、制御部１２１によって以下のような方法が実行される。まず、ステップS1６において、制御部１２１は、ステップS13と同様に、ユーザから手オブジェクト４００に対して対象オブジェクト５００を選択するための操作が入力されたか否かを判定する。入力されたと判定された場合にはステップS17に進み、判定されなかった場合には、上記選択操作の待ち受けを継続する。
【００５４】
ステップＳ１７において、制御部１２１は、手オブジェクト４００と対象オブジェクト５００の位置関係を特定する。本実施形態において、位置関係は、手オブジェクト４００および対象オブジェクト５００の位置、および／または、手オブジェクト４００および対象オブジェクト５００の向きに関する情報に基づいて特定される。
【００５５】
図１２の状態（A）に示すように、手オブジェクト４００の位置は、手オブジェクト４００に設定された仮想空間２００における座標情報に基づいて特定される。手オブジェクト４００の向きは、手オブジェクト４００に設定された座標を原点とする三軸の座標系に基づいて定義される。手オブジェクト４００の座標情報、および、座標系は、図４に示したように、ユーザUの手の動きに基づいて特定される。
【００５６】
図１２の状態（A）に示すように、対象オブジェクト５００の位置は、対象オブジェクト５００に設定された仮想空間２００における座標情報に基づいて特定される。対象オブジェクト５００の向きは、対象オブジェクト５００に設定された座標を原点とする三軸の座標系に基づいて定義される。手オブジェクト５００の座標情報、および、座標系は、仮想空間データに基づいて特定される。
【００５７】
ステップＳ１８において、制御部１２１は、手オブジェクト４００の複数の選択部分の位置関係を特定し、対象オブジェクト５００の被選択部分を特定する。図１２の状態（A）に示すように、右手オブジェクト４００Rの親指４１０Rおよび対向指４２０Rによって選択されるのに適した対象オブジェクト５００の部分を、被選択部分として特定する。本実施形態において、右手オブジェクト４００Rが対象オブジェクト５００の手前側における右上に存在しているので、対象オブジェクト５００の右側面５１０が親指４１０Rによって選択されるための被選択部分と特定され得る。また、対象オブジェクト５００の上側面５２０が対向指４２０Rによって選択されるための被選択部分と特定され得る。
【００５８】
対象オブジェクト５００の被選択部分は、手オブジェクト４００の複数の選択部分の位置関係に基づいて特定されることが好ましく、例えば、右手オブジェクト４００Rが対象オブジェクト５００の手前側の上方に存在している場合には、対象オブジェクト５００の手前側面が親指４１０Rによって選択されるための被選択部分と特定され、対象オブジェクト５００の上側面５２０が対向指４２０Rによって選択されるための被選択部分と特定され得る。
【００５９】
ステップＳ１９において、制御部１２１は、手オブジェクト４００における、対象オブジェクト５００を選択するための第1方向D1を特定する。第1方向は操作オブジェクトの態様に応じて適宜設定されることが好ましく、本実施形態においては、右手オブジェクト４００Rに設定された三軸座標系における、親指４１０Rと対向指４２０Rの間へ向かう方向を第1方向D1として特定することが好ましい。これにより、ユーザに直感的な対象オブジェクトとのインタラクションを提供し得る。本実施形態においては、右手オブジェクト４００Rに設定された三軸座標系におけるロール軸、ピッチ軸、ヨー軸を基準ベクトルとして、当該基準ベクトルを合成したものを、第1方向を定義するための基準ベクトルとして適用し得る。
【００６０】
ステップＳ２０において、制御部１２１は、対象オブジェクト５００における、手オブジェクト４００に選択されるための第2方向D２を特定する。第2方向は、上記のように特定された対象オブジェクト５００の被選択部分５１０，５２０に基づいてされることが好ましい。具体的には、被選択部分５１０，５２０の法線ベクトルを合成したものを、第２方向D２を定義するための基準ベクトルとして適用し得る。
【００６１】
ステップＳ２１において、制御部１２１は、第2方向D２を第1方向D１へ近づけるように、対象オブジェクト５００の向きを補正する。本実施形態において、当該補正を行わない場合には、図１２の状態（B）に示すように、手オブジェクト４００と対象オブジェクト５００の位置関係が適切ではない状態で、対象オブジェクト５００が手オブジェクト４００によって選択され得る。具体的には、親指４１０Rが右側面５１０に接触する一方、対向指４２０Rと上側面５２０の間にスペースSがあけられた状態で、対象オブジェクト５００が手オブジェクト４００によって選択され得る。この場合には、対象オブジェクト５００が手オブジェクト４００によって移動されると、ユーザが違和感を覚えるおそれがある。
【００６２】
これに対し、図１３の状態（A）は、当該補正を行った場合の対象オブジェクト５００が手オブジェクト４００の位置関係を示す。図１２の状態（A）と異なり、第2方向D２を第1方向D１へ近づけるように、対象オブジェクト５００の向きが補正されている。具体的には、第1方向D１と第2方向D２のなす角度が、0°または180°のいずれかに近づくように、対象オブジェクト５００の向きが補正されることが好ましく、補正前の第2方向の向きから0°または180°のいずれか近い方に近づけるように、対象オブジェクト５００の向きが補正されることが好ましい。本実施形態においては、第1方向D１と第2方向D２のなす角度が180°に近づくように、対象オブジェクト５００の向きが補正されている。これにより、図１３の状態（B）に示すように、手オブジェクト４００の選択部分４１０R，４２０Rと、対象オブジェクト５００の被選択部分５１０，５２０の間に生じるスペースを抑制し得る。これにより、ユーザが身体の一部を動かして対象オブジェクトを選択する際に、正確に位置関係を調整しなくても、違和感なく対象オブジェクトを選択できる。従って、ユーザと仮想オブジェクトのインタラクションが改善され、ユーザに提供される仮想体験が改善され得る。
【００６３】
ステップS22において、制御部１２１は、被選択部分５１０，５２０を選択部分４１０R，４２０Rに近づけるように、対象オブジェクト５００を手オブジェクト４００に向けて移動させてもよい。これにより、これにより、ユーザが身体の一部を動かして対象オブジェクトを選択する際に、正確に位置関係を調整しなくても、違和感なく対象オブジェクトを選択できる。従って、ユーザと仮想オブジェクトのインタラクションが改善され、ユーザに提供される仮想体験が改善され得る。この場合、対象オブジェクト５００を、向きが補正された後の対象オブジェクト５００における第2方向D2に沿って移動させることが好ましい。これにより、制御部１２１は、対象オブジェクト５００を手オブジェクト４００に向けて、ユーザに違和感を与えないように移動させ得る。
【００６４】
ステップS2３において、制御部１２１は、手オブジェクト４００に対象オブジェクト５００を関連付けて選択させる。これにより、図１３の状態（B）に示すように、被選択部分５１０，５２０が選択部分４１０R，４２０Rによって接触された状態で、対象オブジェクト５００が違和感なく手オブジェクト４００に選択され得る。その後、ステップ１５へ戻り、手オブジェクト４００の動きに応じて対象オブジェクト５００の動きが操作される。
【００６５】
なお、対象オブジェクト５００を手オブジェクト４００に向けて移動させる場合には、図１４の状態（A）および状態（B）に示すように、対象オブジェクト５００および手オブジェクト４００の仮想空間２００における座標情報に基づいて、移動方向D3が特定されてもよい。この場合には、対象オブジェクト５００を手オブジェクト４００の接触が判定された後、手オブジェクト４００に選択動作が入力されることにより、対象オブジェクト５００と手オブジェクト４００の座標情報に基づいて容易に移動方向D3が特定され得る。これにより、制御部１２１が対象オブジェクト５００を制御する場合に、プロセッサにおける処理負荷を低減させることができる。
【００６６】
また、図１４の状態（A）に示すように、仮想手４００に設定されるコリジョンエリアCAのサイズは、仮想手４００の移動速度（または、検出ユニットにおいて検知されるユーザの手の移動速度）に応じて変化させてもよい。例えば、仮想手４００の移動速度が大きいほど、仮想手４００に設定されるコリジョンエリアCAのサイズを大きくすることが好ましい。これにより、ユーザにより直感的な仮想体験を提供し得る。ユーザは手を速く動かす場合には、対象オブジェクト５００と手オブジェクト４００との間の位置関係の調整がいっそう困難となることが予想される。その場合に、仮想手４００の移動速度に応じて対象オブジェクト５００の選択しやすさを調整することで、ユーザにより直感的な仮想体験が提供され得る。
【００６７】
制御部１２１は、手オブジェクト４００の可動域外に配置された対象オブジェクト５００をも操作可能に構成してもよい。図15，図１６は、当該処理を説明するための図である。
【００６８】
ステップ２４において、制御部１２１は、対象オブジェクト５００が手オブジェクト４００の可動域Rの範囲外に配置されているかどうかを判定する。可動域Rの範囲外に対象オブジェクト５００が配置されている場合にはステップ２５へ進み、可動域Rの範囲外に対象オブジェクト５００が配置されている場合にはステップ１０へ戻る。可動域Rは、仮想カメラ３００を中心とし、所定距離を半径とする球状に設定されることが好ましい。可動域RはHMD１１０とコントローラ３２０の間の距離が、一般的なユーザの頭部と手の間の距離以内となるように設定されていることが好ましい。また、所定時間内におけるHMD１１０とコントローラ３２０の間の距離測定し、当該時間内における当該距離の最大値を可動域Rと設定し、ユーザに応じた可動域Rを設定することとしてもよい。
【００６９】
ステップ２５において、制御部１２１は、対象オブジェクト５００が手オブジェクト４００の第1方向D1に配置されているかを判定する。制御部１２１は、第1方向D1の延長線が対象オブジェクト５００のコリジョンエリアCBと衝突するか否かに基づいて判定してもよい。Yesの場合にはステップS26へ進み、Noの場合にはステップ１０へ戻る。
【００７０】
ステップ２６において、制御部１２１は、ユーザによる所定の操作入力を検知したか否かを判定する。所定の操作入力は、前述のような手オブジェクト４００による対象オブジェクト５００を選択するための操作であってもよい。また、コントローラ３２０に設けられた所定のボタンに対する所定の操作（長押し操作など）であってもよい。Yesの場合にはステップS2７へ進み、Noの場合にはステップ１０へ戻る。
【００７１】
ステップ２７において、制御部１２１は、対象オブジェクト５００を第１方向D1に沿って手オブジェクト４００に向けて移動させる。これにより、図１６の状態（B）に示すように、ユーザは可動域R外に配置された対象オブジェクト５００を容易に選択して、手オブジェクトによって操作することができる。
【００７２】
以上、本開示の実施形態について説明をしたが、本発明の技術的範囲が本実施形態の説明によって限定的に解釈されるべきではない。本実施形態は一例であって、特許請求の範囲に記載された発明の範囲内において、様々な実施形態の変更が可能であることが当業者によって理解されるところである。本発明の技術的範囲は特許請求の範囲に記載された発明の範囲及びその均等の範囲に基づいて定められるべきである。
【００７３】
本実施形態では、ユーザＵの手の動きを示す外部コントローラ３２０の動きに応じて、手オブジェクトの移動が制御されているが、ユーザＵの手自体の移動量に応じて、仮想空間内における手オブジェクトの移動が制御されてもよい。例えば、外部コントローラを用いる代わりに、ユーザの手指に装着されるグローブ型デバイスや指輪型デバイスを用いることで、位置センサ１３０により、ユーザＵの手の位置や移動量を検出することができると共に、ユーザＵの手指の動きや状態を検出することができる。また、位置センサ１３０は、ユーザＵの手（手指を含む）を撮像するように構成されたカメラであってもよい。この場合、カメラを用いてユーザの手を撮像することにより、ユーザの手指に直接何らかのデバイスを装着させることなく、ユーザの手が表示された画像データに基づいて、ユーザＵの手の位置や移動量を検出することができると共に、ユーザＵの手指の動きや状態を検出することができる。
【００７４】
また、本実施形態では、ユーザＵの頭部以外の身体の一部である手の位置及び／又は動きに応じて、手オブジェクトが対象オブジェクトに与える影響を規定するコリジョン効果が設定されているが、本実施形態はこれには限定されない。例えば、ユーザＵの頭部以外の身体の一部である足の位置及び／又は動きに応じて、ユーザＵの足の動きに連動する足オブジェクト（操作オブジェクトの一例）が対象オブジェクトに与える影響を規定するコリジョン効果が設定されてもよい。
【００７５】
また、本実施形態においては、ＨＭＤ１１０によってユーザが没入する仮想空間（ＶＲ空間）を例示して説明したが、ＨＭＤ１１０として透過型ＨＭＤを採用してもよい。この場合、透過型ＨＭＤ１１０を介してユーザＵが視認する現実空間に対象オブジェクト５００の画像を合成して出力し、ＡＲ空間やＭＲ空間としての仮想体験を提供してもよい。そして、第１操作オブジェクト、および、第２操作オブジェクトにかえて、ユーザの身体の第１部分、および、第２部分（ユーザＵの両手）の動きに基づいて、対象オブジェクト５００の選択、および、操作を行ってもよい。この場合には、現実空間、および、ユーザの身体の第１部分、および、第２部分の座標情報を特定するとともに、対象オブジェクト５００の座標情報を現実空間における座標情報との関係で定義することによって、ユーザＵの身体の動きに基づいて対象オブジェクト５００に作用を与えることができる。
【符号の説明】
【００７６】
１：ＨＭＤシステム
３：通信ネットワーク
２１：中心位置
１１２：表示部
１１４：ＨＭＤセンサ
１２０：制御装置
１２１：制御部
１２３：記憶部
１２４：Ｉ／Ｏインターフェース
１２５：通信インターフェース
１２６：バス
１３０：位置センサ
１４０：注視センサ
２００：仮想空間
３００：仮想カメラ
３０２：操作ボタン
３０２ａ，３０２ｂ：プッシュ式ボタン
３０２ｅ，３０２ｆ：トリガー式ボタン
３０４：検知点
３２０：外部コントローラ
３２０ｉ：アナログスティック
３２０Ｌ：左手用外部コントローラ（コントローラ）
３２０Ｒ：右手用外部コントローラ（コントローラ）
３２２：天面
３２４：グリップ
３２６：フレーム
４００：手オブジェクト（仮想手）
４００Ｌ：左手オブジェクト
４００Ｒ：右手オブジェクト
５００：対象オブジェクト
ＣＡ：コリジョンエリア
ＣＶ：視野
ＣＶａ：第１領域
ＣＶｂ：第２領域
【図１】
2018110871.tif 000003
【図２】
2018110871.tif 000004
【図３】
2018110871.tif 000005
【図４】
2018110871.tif 000006
【図５】
2018110871.tif 000007
【図６】
2018110871.tif 000008
【図７】
2018110871.tif 000009
【図８】
2018110871.tif 000010
【図９】
2018110871.tif 000011
【図１０】
2018110871.tif 000012
【図１１】
2018110871.tif 000013
【図１２】
2018110871.tif 000014
【図１３】
2018110871.tif 000015
【図１４】
2018110871.tif 000016
【図１５】
2018110871.tif 000017
【図１６】
2018110871.tif 000018