(57)【要約】【課題】仮想空間のオブジェクトに対する操作性を向上させる。【解決手段】この情報処理装置は、表示デバイスに、仮想空間に定義される第１の仮想オブジェクトと、第１の仮想オブジェクトとは異なる第２の仮想オブジェクトと、を表示させるための表示情報を生成する表示制御部と、ユーザの操作入力に基づく基準位置に基づいて仮想空間内で第１の仮想オブジェクトを移動させ、第１の仮想オブジェクトの基準位置が第２の仮想オブジェクト内にあると判定されるとき、第２の仮想オブジェクトに外接する位置に第１の仮想オブジェクトを表示させ、第２の仮想オブジェクトから第１の仮想オブジェクトを離す操作が判定されたとき、当該操作に伴って、基準位置と第１の仮想オブジェクトの表示位置とが次第に一致するように第１の仮想オブジェクトの表示位置を制御するコントローラーとを具備する。【選択図】図７
2017182532.tif 000002
【特許請求の範囲】
【請求項１】
表示デバイスに、仮想空間に定義される第１の仮想オブジェクトと、前記第１の仮想オブジェクトとは異なる第２の仮想オブジェクトと、を表示させるための表示情報を生成する表示制御部と、
ユーザの操作入力に基づく基準位置に基づいて前記仮想空間内で前記第１の仮想オブジェクトを移動させ、前記第１の仮想オブジェクトの前記基準位置が前記第２の仮想オブジェクト内にあると判定されるとき、前記第２の仮想オブジェクトに外接する位置に前記第１の仮想オブジェクトを表示させ、前記第２の仮想オブジェクトから前記第１の仮想オブジェクトを離す操作が判定されたとき、当該操作に伴って、前記基準位置と前記第１の仮想オブジェクトの表示位置とが次第に一致するように前記第１の仮想オブジェクトの表示位置を制御するように構成されたコントローラーと
を具備する情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記コントローラーは、
前記第１の仮想オブジェクトの前記基準位置の移動ベクトルおよび前記第１の仮想オブジェクトの前記基準位置と前記第１の仮想オブジェクトの表示位置との差分ベクトルをもとに、前記第２の仮想オブジェクトから前記第１の仮想オブジェクトを離す操作に伴う前記第１の仮想オブジェクトの表示位置を更新するための制御量を算出するように構成された
情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、
前記コントローラーは、
前記ユーザの操作入力に基づく基準位置をもとに、複数の前記第１の仮想オブジェクトを前記仮想空間内に表示する場合、前記複数の第１の仮想オブジェクトの少なくとも一部の第１の仮想オブジェクトの前記仮想空間内の前記基準位置が前記第２の仮想オブジェクト内にあるとき、前記複数の第１の仮想オブジェクトの間に決められた相対的な位置関係の拘束条件下で、前記第２の仮想オブジェクトに外接する位置に前記一部の第１の仮想オブジェクトを表示させるように構成された
情報処理装置。
【請求項４】
請求項３に記載の情報処理装置であって、
前記コントローラーは、
前記第２の仮想オブジェクトから前記複数の第１の仮想オブジェクトを離す操作に伴って、前記拘束条件を守りながら、前記第１の仮想オブジェクトの前記基準位置と前記第１の仮想オブジェクトの表示位置とが次第に一致するように前記複数の第１の仮想オブジェクトの表示位置を制御するように構成された
情報処理装置。
【請求項５】
請求項１に記載の情報処理装置であって、
前記コントローラーは、
前記第１の仮想オブジェクトを前記第２の仮想オブジェクト内の位置に移動させる操作が判定されたとき、前記第１の仮想オブジェクトの移動過程で前記第２の仮想オブジェクトと外接する位置に前記第１の仮想オブジェクトを表示させるように構成された
情報処理装置。
【請求項６】
請求項１に記載の情報処理装置であって、
前記コントローラーは、
前記第１の仮想オブジェクトを前記第２の仮想オブジェクトの外から前記第２の仮想オブジェクト内の第１の位置に移動させる操作が判定されたとき、
前記第１の仮想オブジェクトを前記第２の仮想オブジェクト内の第１の位置に移動させる過程で前記第２の仮想オブジェクトと外接する第２の位置に前記第１の仮想オブジェクトを表示させ、
前記第２の位置に表示された前記第１の仮想オブジェクトが外接する前記第２の仮想オブジェクトの輪郭線に対する第１の法線方向を求め、
前記第１の位置から前記第１の法線方向にある前記第２の仮想オブジェクトの前記輪郭線に対する第２の法線方向を求め、
前記第１の位置から前記第２の法線方向にある前記第２の仮想オブジェクトの輪郭線に外接する第３の位置に前記第１の仮想オブジェクトの表示位置を更新し、
前記第１の仮想オブジェクトの表示位置を更新するための処理を収束まで繰り返すように構成された
情報処理装置。
【請求項７】
表示制御部が、表示デバイスに、仮想空間に定義される第１の仮想オブジェクトと、前記第１の仮想オブジェクトとは異なる第２の仮想オブジェクトと、を表示させるための表示情報を生成し、
コントローラーが、ユーザの操作入力に基づく基準位置に基づいて前記仮想空間内で前記第１の仮想オブジェクトを移動させ、前記第１の仮想オブジェクトの前記基準位置が前記第２の仮想オブジェクト内にあると判定されるとき、前記第２の仮想オブジェクトに外接する位置に前記第１の仮想オブジェクトを表示させ、前記第２の仮想オブジェクトから前記第１の仮想オブジェクトを離す操作が判定されたとき、当該操作に伴って、前記基準位置と前記第１の仮想オブジェクトの表示位置とが次第に一致するように前記第１の仮想オブジェクトの表示位置を制御する
情報処理方法。
【請求項８】
表示デバイスに、仮想空間に定義される第１の仮想オブジェクトと、前記第１の仮想オブジェクトとは異なる第２の仮想オブジェクトと、を表示させるための表示情報を生成する表示制御部と、
ユーザの操作入力に基づく基準位置に基づいて前記仮想空間内で前記第１の仮想オブジェクトを移動させ、前記第１の仮想オブジェクトの前記基準位置が前記第２の仮想オブジェクト内にあると判定されるとき、前記第２の仮想オブジェクトに外接する位置に前記第１の仮想オブジェクトを表示させ、前記第２の仮想オブジェクトから前記第１の仮想オブジェクトを離す操作が判定されたとき、当該操作に伴って、前記基準位置と前記第１の仮想オブジェクトの表示位置とが次第に一致するように前記第１の仮想オブジェクトの表示位置を制御するように構成されたコントローラーとして
コンピュータを動作させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、情報処理装置、表示制御方法及びプログラムに関する。
【背景技術】
【０００２】
表示画面に表示される仮想空間内で、仮想的な物体（以下、「オブジェクト」と呼ぶ。）に対して"持つ"、"触れる"などの基本的な物理現象を伴う操作を与える方法には、例えば、次のようなものが知られる。
【０００３】
仮想空間にオブジェクトに対して上記操作を与えるポインティングオブジェクトが表示される。このポインティングオブジェクトは、センサーによって検出されたユーザの手の前後左右の動きに従って、仮想空間内で移動される。ユーザが仮想空間内のオブジェクトを持つように手を握ると、センサーによってこの手を握った動きが検出され、この検出情報を受けた制御部は、ポインティングオブジェクトにオブジェクトを保持させるように制御を行う（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−０１８５５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、仮想空間のオブジェクトに対するユーザの操作性に関しては、様々な点で改善すべき課題がある。
【０００６】
以上のような事情に鑑み、本技術の目的は、仮想空間のオブジェクトに対する操作性を向上させることが可能な、新規かつ改良された情報処理装置、情報処理方法およびプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、本技術に係る一形態の情報処理装置は、
表示デバイスに、仮想空間に定義される第１の仮想オブジェクトと、前記第１の仮想オブジェクトとは異なる第２の仮想オブジェクトと、を表示させるための表示情報を生成する表示制御部と、
ユーザの操作入力に基づく基準位置に基づいて前記仮想空間内で前記第１の仮想オブジェクトを移動させ、前記第１の仮想オブジェクトの前記基準位置が前記第２の仮想オブジェクト内にあると判定されるとき、前記第２の仮想オブジェクトに外接する位置に前記第１の仮想オブジェクトを表示させ、前記第２の仮想オブジェクトから前記第１の仮想オブジェクトを離す操作が判定されたとき、当該操作に伴って、前記基準位置と前記第１の仮想オブジェクトの表示位置とが次第に一致するように前記第１の仮想オブジェクトの表示位置を制御するように構成されたコントローラーとを具備する。
【０００８】
前記コントローラーは、
前記第１の仮想オブジェクトの前記基準位置の移動ベクトルおよび前記第１の仮想オブジェクトの前記基準位置と前記第１の仮想オブジェクトの表示位置との差分ベクトルをもとに、前記第２の仮想オブジェクトから前記第１の仮想オブジェクトを離す操作に伴う前記第１の仮想オブジェクトの表示位置を更新するための制御量を算出するように構成されたものであってよい。
【０００９】
前記コントローラーは、
前記ユーザの操作入力に基づく基準位置をもとに、複数の前記第１の仮想オブジェクトを前記仮想空間内に表示する場合、前記複数の第１の仮想オブジェクトの少なくとも一部の第１の仮想オブジェクトの前記仮想空間内の前記基準位置が前記第２の仮想オブジェクト内にあるとき、前記複数の第１の仮想オブジェクトの間に決められた相対的な位置関係の拘束条件下で、前記第２の仮想オブジェクトに外接する位置に前記一部の第１の仮想オブジェクトを表示させるように構成されたものであってよい。
【００１０】
前記コントローラーは、
前記第２の仮想オブジェクトから前記複数の第１の仮想オブジェクトを離す操作に伴って、前記拘束条件を守りながら、前記第１の仮想オブジェクトの前記基準位置と前記第１の仮想オブジェクトの表示位置とが次第に一致するように前記複数の第１の仮想オブジェクトの表示位置を制御するように構成されてもよい。
【００１１】
前記コントローラーは、
前記第１の仮想オブジェクトを前記第２の仮想オブジェクト内の位置に移動させる操作が判定されたとき、前記第１の仮想オブジェクトの移動過程で前記第２の仮想オブジェクトと外接する位置に前記第１の仮想オブジェクトを表示させるように構成されてもよい。
【００１２】
前記コントローラーは、
前記第１の仮想オブジェクトを前記第２の仮想オブジェクトの外から前記第２の仮想オブジェクト内の第１の位置に移動させる操作が判定されたとき、
前記第１の仮想オブジェクトを前記第２の仮想オブジェクト内の第１の位置に移動させる過程で前記第２の仮想オブジェクトと外接する第２の位置に前記第１の仮想オブジェクトを表示させ、
前記第２の位置に表示された前記第１の仮想オブジェクトが外接する前記第２の仮想オブジェクトの輪郭線に対する第１の法線方向を求め、
前記第１の位置から前記第１の法線方向にある前記第２の仮想オブジェクトの前記輪郭線に対する第２の法線方向を求め、
前記第１の位置から前記第２の法線方向にある前記第２の仮想オブジェクトの輪郭線に外接する第３の位置に前記第１の仮想オブジェクトの表示位置を更新し、
前記第１の仮想オブジェクトの表示位置を更新するための処理を収束まで繰り返すように構成されてもよい。
【００１３】
本技術に係る一形態の情報処理方法は、
表示制御部が、表示デバイスに、仮想空間に定義される第１の仮想オブジェクトと、前記第１の仮想オブジェクトとは異なる第２の仮想オブジェクトと、を表示させるための表示情報を生成し、
コントローラーが、ユーザの操作入力に基づく基準位置に基づいて前記仮想空間内で前記第１の仮想オブジェクトを移動させ、前記第１の仮想オブジェクトの前記基準位置が前記第２の仮想オブジェクト内にあると判定されるとき、前記第２の仮想オブジェクトに外接する位置に前記第１の仮想オブジェクトを表示させ、前記第２の仮想オブジェクトから前記第１の仮想オブジェクトを離す操作が判定されたとき、当該操作に伴って、前記基準位置と前記第１の仮想オブジェクトの表示位置とが次第に一致するように前記第１の仮想オブジェクトの表示位置を制御する。
【００１４】
本技術に係る一形態のプログラムは、
表示デバイスに、仮想空間に定義される第１の仮想オブジェクトと、前記第１の仮想オブジェクトとは異なる第２の仮想オブジェクトと、を表示させるための表示情報を生成する表示制御部と、
ユーザの操作入力に基づく基準位置に基づいて前記仮想空間内で前記第１の仮想オブジェクトを移動させ、前記第１の仮想オブジェクトの前記基準位置が前記第２の仮想オブジェクト内にあると判定されるとき、前記第２の仮想オブジェクトに外接する位置に前記第１の仮想オブジェクトを表示させ、前記第２の仮想オブジェクトから前記第１の仮想オブジェクトを離す操作が判定されたとき、当該操作に伴って、前記基準位置と前記第１の仮想オブジェクトの表示位置とが次第に一致するように前記第１の仮想オブジェクトの表示位置を制御するように構成されたコントローラーとして
コンピュータを動作させる。
【発明の効果】
【００１５】
以上のように、本技術によれば、仮想空間のオブジェクトに対する操作性を向上させることが可能な、新規かつ改良された情報処理装置を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】仮想空間のオブジェクト内への操作子のめり込みを説明すするための図である。
【図２】本技術にかかる第１の実施形態の情報処理システム１の構成の一例を示すブロック図である。
【図３】図２の情報処理システム１に属する情報処理装置１０のハードウェア構成を示すブロック図である。
【図４】図３の情報処理装置１０での操作子３の表示制御に関するフローチャートである。
【図５】図３の情報処理装置１０での操作子３のめり込み防止のための表示制御を説明するための図である。
【図６】オブジェクト２から操作子３を離す操作に伴う表示制御その１を説明するための図である。
【図７】オブジェクト２から操作子３を離す操作に伴う表示制御その２を説明するための図である。
【図８】オブジェクト２から操作子３を離す操作の判定方法の一例を説明するための図である。
【図９】グローブタイプの動作検出デバイスによって検出可能なユーザの指の関節の曲がりについて説明するための図である。
【図１０】グローブタイプの動作検出デバイスによって検出可能なユーザの指の左右の振りについて説明するための図である。
【図１１】グローブタイプの動作検出デバイスによって検出される動作情報をもとに仮想空間に表示可能な複数の操作子について説明するための図である。
【図１２】複数の操作子に対するめり込み防止のための表示制御の課題を説明する図である。
【図１３】操作子間の長さを拘束した操作子のめり込み防止のための表示制御を説明するための図である。
【図１４】操作子間の長さを拘束した操作子のめり込み防止のための表示制御の課題を説明するための図である。である。
【図１５】操作子間の長さおよび関節間の曲がり方を拘束した複数の操作子のめり込み防止のための表示制御その１を説明するための図である。
【図１６】操作子間の長さおよび関節間の曲がり方を拘束した複数の操作子のめり込み防止のための表示制御その２を説明するための図である。
【図１７】オブジェクト２から操作子３を離す操作に伴う操作子３の制御量を算出する方法を説明するための図である。
【発明を実施するための形態】
【００１７】
以下、本技術に係る実施の形態を説明する。
本実施の形態の説明は、以下の順に行われる。
１．概要
２．システム構成
３．情報処理装置１０の構成
４．操作子めり込み防止のための表示制御
５．オブジェクト２から操作子３を離す操作に伴う表示制御その１
６．オブジェクト２から操作子３を離す操作に伴う表示制御その２
７．オブジェクト２から操作子３を離す操作の判定方法
８．操作子３の制御量の算出方法の一例
９．拘束条件下での複数の操作子のめり込み防止のための表示制御その１
１０．拘束条件下での複数の操作子のめり込み防止のための表示制御その２
【００１８】
＜第１の実施形態＞
［１．概要］
本開示の技術は、表示デバイスの画面に構築された仮想空間における仮想的な物体であるオブジェクト（第２の仮想オブジェクト）に対して、"持つ"、"触れる"などの基本的な物理現象を伴う操作をユーザの手指などの動きを検出した情報をもとに与える情報処理システムに関する。この情報処理システムにおいて、ユーザの手や指などの動きの情報は、仮想空間に操作用のオブジェクトとして表示される操作子（第１の仮想オブジェクト）の動きに反映される。
【００１９】
この情報処理システムは、表示デバイス、動作検出デバイス、そしてＶＲ（Virtual Reality：仮想現実）、ＡＲ（Augmented Reality：拡張現実）などの仮想空間の表示に関する様々な情報処理を行う情報処理装置を基本的な構成として有する。情報処理装置は、ＰＣ（Personal Computer）、ゲーム機、サーバ装置、スマートホンなど、ＣＰＵ（Central Processing Unit）およびメモリを備え、プログラムを実行して演算処理を行うことが可能なコントローラーを有するものであればよい。
【００２０】
動作検出デバイスは、表示デバイスの画面の仮想空間に配置された仮想物体であるオブジェクトに対して、例えば"持つ"、"触れる"などの操作を目的としたユーザの手や指などの動きを検出し、検出情報を情報処理装置に供給する。
【００２１】
（１）動作検出デバイスより入力されたユーザの動きの検出情報をもとに仮想空間内の操作子の位置を計算し、その計算上の位置に操作子を表示させる方法によると、例えば、図１に示すように、オブジェクト２の空間内に操作子３の計算上の位置があるとき、操作子３がオブジェクト２内にめり込んだ見た目となる。柔軟な物性を想定しないオブジェクト２内に操作子３が表示されると、"持つ"、"触れる"などの操作の見た目としては不自然である。そこで本明細書においては、オブジェクト２内に操作子３の計算上の位置が存在しても、操作子３がオブジェクト２内にめり込まないように操作子３の表示位置を変更する操作子のめり込み防止のための表示制御について開示する。
【００２２】
なお、動作検出デバイスより入力されたユーザの動きの検出情報をもとに計算された仮想空間内の操作子の位置を以後「操作子の計算位置」と呼び、仮想空間に表示された操作子の位置を以後「操作子の表示位置」と呼ぶ。操作子の計算位置は、特許請求の範囲でいうところの「ユーザの操作入力に基づく基準位置」に対応し、操作子の表示位置は、特許請求の範囲でいうところの「第１の仮想オブジェクトの表示位置」に対応する。
【００２３】
（２）さらに、操作子のめり込み防止のための表示制御を採用した場合、操作子３をオブジェクト２の内から外に移動させる操作を行っても、その直後暫くの時間は操作子３の計算位置はオブジェクト２内にある。このため、操作子３が見た目上移動しはじめるまでには遅延時間が生じ、見掛け上の応答性が劣化する。そこで、本明細書においては、操作子３をオブジェクト２から離す操作が行われたときの操作子３の自然な応答感をユーザに与えることができる表示制御について開示する。
【００２４】
［２．システム構成］
図２は、本技術にかかる第１の実施形態の情報処理システム１の構成の一例を示すブロック図である。
この情報処理システム１は、情報処理装置１０と、表示デバイス２０と、動作検出デバイス３０とを有する。情報処理装置１０は、表示デバイス２０と無線あるいは有線により通信することが可能である。情報処理装置１０と動作検出デバイス３０とは無線あるいは有線による通信することが可能である。各々の通信には、望ましくは無線通信が用いられる。無線通信には、例えば、無線ＬＡＮ（Local Area Network）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉ−Ｆｉ（登録商標）、Ｚｉｇｂｅｅ（登録商標）などの任意の無線通信方式を適用し得る。
【００２５】
表示デバイス２０は、例えば、情報処理装置１０から独立した据え置き型のディスプレイ、テレビジョンモニター、立体視ディスプレイ、あるいは、ヘッドマウントディスプレイ（ＨＭＤ）、ブレスレット型ディスプレイなどのウェアラブル型ディスプレイであってよい。また、ノート型ＰＣ、タブレット端末、スマートホンのように、情報処理装置１０と表示デバイス２０とは一体化されたものであってもよい。あるいは、ヘッドマウントディスプレイ（ＨＭＤ）、ブレスレット型ディスプレイなどのウェアラブル型ディスプレイ内に情報処理装置１０が組み込まれていてもよい。
【００２６】
動作検出デバイス３０は、ユーザＵの例えば手や指などの動きを検出することのできるものであればよい。動作検出デバイス３０としては、例えば、モーションセンサーを搭載したステッィク型のデバイスや、ユーザの手の甲、各指の関節の位置などを検出することのできるグローブ型のデバイスなどが挙げられる。あるいは、１以上のカメラでユーザの手や指を撮像して画像認識によってユーザの手や指などの動きを検出してもよい。
【００２７】
［３．情報処理装置１０の構成］
図３は、上記の情報処理システム１に属する情報処理装置１０のハードウェア構成を示すブロック図である。
【００２８】
同図に示すように、情報処理装置１０は、制御部１０１、操作部１０２、記憶部１０３、表示デバイス２０との表示インタフェース１０４、動作検出デバイス３０との入力インタフェース１０５およびバス１０６を備える。
【００２９】
制御部１０１は、本技術にかかる請求項の「コントローラー」に相当するものであり、ＣＰＵ（Central Processing Unit）又はＤＳＰ（Digital Signal Processor）などのプロセッサと、ＲＡＭ（Random Access Memory）などにより構成されるメインメモリとを含む。制御部１０１はメインメモリを作業領域として用いてプログラムを実行し、ＶＲなどの仮想空間の表示に関する情報処理を行う。また、制御部１０１は、バス１０６を通じて操作部１０２、記憶部１０３、表示インタフェース１０４、入力インタフェース１０５との間で情報をやりとりする。
【００３０】
操作部１０２は、情報処理装置１０に対するユーザからの各種入力を受け付けるためのユーザインタフェースである。操作部１０２は、例えば、キーボード、マウス、ボタン、スイッチ、キーパッド、ゲーム機用コントローラー、マイク（音声入力）など、ユーザからの入力を受け付けることができるものであればよい。
【００３１】
記憶部１０３は、例えば、半導体メモリ、ハードディスクなどの記憶媒体により構成される。記憶部１０３には、ＶＲなどの仮想空間の表示に関する処理に必要なプログラムおよびデータが格納される。なお、プログラムおよびデータの少なくとも一部は、記憶部１０３により記憶されることなく、例えば、データサーバ、ネットワークストレージ、外付け記録装置など、情報処理装置１０の外部のストレージから取得されてもよい。
【００３２】
表示インタフェース１０４は、制御部１０１により生成された仮想空間の表示のための表示データを表示デバイス２０に無線通信方式または有線通信方式で送信するためのインタフェースである。
【００３３】
入力インタフェース１０５は、動作検出デバイス３０よりユーザの動作情報を無線通信方式または有線通信方式で受信するためのインタフェースである。入力インタフェース１０５は、特許請求の範囲の「表示制御部」に対応する。
【００３４】
バス１０６は、制御部１０１、操作部１０２、記憶部１０３、表示インタフェース１０４、入力インタフェース１０５との間での情報の伝送に用いられる伝送路である。
【００３５】
［４．操作子めり込み防止のための表示制御］
情報処理装置１０の制御部１０１は、プログラムに基づいて、操作対象である仮想的な物体であるオブジェクト２およびこれを操作する操作子３を含む仮想空間の表示データを生成する。制御部１０１は、インタフェース１０５を用いて動作検出デバイス３０より入力したユーザの動作情報をもとに、仮想空間における操作子３の位置を計算し、その位置に操作子３を表示させる。
【００３６】
図１に示したように、オブジェクト２の空間内に操作子３の計算位置があり、その位置に操作子３をそのまま表示させると、操作子３がオブジェクト２内にめり込んだ見た目となってしまい、不自然である。そこで、本実施形態の情報処理装置１０では、オブジェクト２の空間内に操作子３の計算位置がある場合には、操作子３がオブジェクト２内にめり込まないように操作子３の表示位置を変更するめり込み防止のための表示制御が行われる。
【００３７】
図４は、操作子３のめり込み防止のための表示制御、および後述するオブジェクト２から操作子３を離す操作時の表示制御の手順を示すフローチャートである。
【００３８】
情報処理装置１０の制御部１０１は、動作検出デバイス３０から取得した動作情報をもとに操作子３の仮想空間内の位置を計算する（ステップＳ１０１）。制御部１０１は、動作検出デバイス３０から時間的に連続して取得した動作情報をもとに２つの位置Ｐ０、Ｐ１を算出し、操作子３が計算上、オブジェクト２の空間内にめり込んだかどうかを判定する（ステップＳ１０２）。
【００３９】
ここで、少なくとも操作子３の計算位置Ｐ１（以下、「第１の位置Ｐ１」と呼ぶ。）がオブジェクト２内である場合には、制御部１０１は、操作子３が計算上、オブジェクト２の空間内にめり込んだことを判定し（ステップＳ１０２のＹＥＳ）、操作子３の表示位置のめり込み防止のための制御を発動する（ステップＳ１０３）。
【００４０】
図５は、操作子３のめり込み防止のための表示制御を説明するための図である。
なお、この説明では、動作検出デバイス３０としてステッィク型のデバイスが用いられる場合を想定する。この場合、操作子３の数は"１"である。仮想空間におけるオブジェクト２の形状は特に規定されない。但し、この説明では、ｘ軸方向に沿った互いに平行な２つの辺を有し、各々の辺の両端が曲線により接続された形状のオブジェクト２を想定する。
操作子３のめり込み防止のための制御として、まず、制御部１０１は、操作子３の計算位置がオブジェクト２の外の位置Ｐ０からオブジェクト２内の第１の位置Ｐ１に移動する過程でオブジェクト２と外接する第２の位置Ｐａ１に操作子３を表示する。
【００４１】
次に、制御部１０１は、第１の位置Ｐ１から第２の位置Ｐａ１の方向にあるオブジェクト２の輪郭線２ａに対する第１の法線方向Ｌａ１を求める。
【００４２】
次に、制御部１０１は、第１の位置Ｐ１から第１の法線方向Ｌａ１にあるオブジェクト２の輪郭線２ａに対する第２の法線方向Ｌｂ１を求める。
【００４３】
続いて、制御部１０１は、第１の位置Ｐ１から第２の法線方向Ｌｂ１にあるオブジェクト２の輪郭線２ａに外接する第３の位置Ｐａ２に操作子３の表示位置を更新する。
【００４４】
この後も制御部１０１は、同様の処理を繰り返すことによって、操作子３の表示位置をオブジェクト２の輪郭線２ａに沿って第４の位置Ｐａ３、第５の位置Ｐａ４の順に移動させる。本例では、第１の位置Ｐ１から第５の位置Ｐａ４の方向にあるオブジェクト２の輪郭線２ａに対する法線方向Ｌｂ３はｙ軸方向と平行であるため、この第５の位置Ｐａ４で操作子３の表示位置を更新する処理が収束する。
なお、このタイミングで操作子３の表示位置の更新処理が収束するのは、この例では、第１の位置Ｐ１から第５の位置Ｐａ４の方向にあるオブジェクト２の輪郭線２ａに対する法線方向Ｌｂ３がｙ軸方向と平行であるためであり、法線方向Ｌｂ３がｙ軸方向と平行でない場合には更新処理が継続される。
【００４５】
動作検出デバイス３０から取得した動作情報をもとに操作子３の仮想空間内の計算位置が変化すると、制御部１０１は、操作子３のめり込み防止のための表示制御を再度発動し、操作子３の表示位置が再び更新される。
【００４６】
このように、本開示の技術にかかる操作子３のめり込み防止のための表示制御では、操作子３の計算位置がオブジェクト２内の任意の第１の位置Ｐ１に移動するとき、その移動過程で操作子３の表示位置が、オブジェクト２に最初に外接する第２の位置Ｐａ１から、オブジェクト２内の第１の位置Ｐ１の真上にあたる位置に次第に近付くようにオブジェクト２の輪郭線２ａに沿って連続的に移動する。これにより、例えば、操作子３の計算位置がオブジェクト２内の任意の第１の位置Ｐ１に移動する過程で操作子３がオブジェクト２に最初に外接する第２の位置Ｐａ１に操作子３を止めて表示させるだけの制御に比べ、ユーザに与える違和感を軽減することができる。
【００４７】
本開示の技術にかかる操作子のめり込み防止のための表示制御などに代表されるように、操作子３をオブジェクト２の外から内に移動させる操作が発生した場合に、オブジェクト２に外接する位置に操作子３を表示させる制御が行われる場合、次のような課題がある。
【００４８】
オブジェクト２から操作子３を離す操作が発生した場合、操作子３の計算位置がオブジェクト２の外に出るまでは、操作子３はオブジェクト２（の輪郭線２ａ）に外接した位置に表示されたままとなる。このため、オブジェクト２から操作子３を離す操作に対する応答速度が遅いようにユーザに感じさせてしまう可能性がある。
【００４９】
この課題を解決するために、制御部１０１は、図４のフローチャートにも示したように、オブジェクト２から操作子３を離す操作が発生した場合（ステップＳ１０４のＹＥＳ）、その操作に伴って、操作子３の計算位置と操作子３の表示位置とが次第に一致するように操作子３の表示位置を制御する（ステップＳ１０５、Ｓ１０６）。
【００５０】
以下に、このオブジェクト２から操作子３を離す操作に伴う表示制御の詳細を説明する。
【００５１】
［５．オブジェクト２から操作子３を離す操作に伴う表示制御その１］
図６は、このオブジェクト２から操作子３を離す操作に伴う表示制御その１を説明するための図である。
【００５２】
まず、操作子３の計算位置Ｐ１がオブジェクト２内にあるものの、例えば、上記の操作子のめり込み防止のための表示制御によって操作子３はオブジェクト２と外接する位置Ｐｈ１に表示されている状態を想定する。なお、本例では、この操作子３の表示位置Ｐｈ１は、上記のめり込み防止のための表示制御によって最終的に収束した表示位置であり、図５の第５の位置Ｐａ４に相当する。
【００５３】
この後、オブジェクト２から操作子３を離す操作が発生し、制御部１０１がその操作の発生を判定したこととする。なお、このオブジェクト２から操作子３を離す操作の判定方法については後で説明する。
【００５４】
制御部１０１は、オブジェクト２から操作子３を離す操作が発生したことを判定すると、操作子３の計算位置と操作子３の表示位置とが次第に一致するように、オブジェクト２の外の空間内での操作子３の表示位置を算出する。つまり、図６において、制御部１０１は、操作子３の計算位置がＰ１からＰ２に更新すると、操作子３の表示位置を、オブジェクト２に外接する位置であるＰｈ１から、オブジェクト２から離間した位置Ｐｈ２に更新する。
【００５５】
次に、制御部１０１は、操作子３の計算位置がＰ２からＰ３に更新すると、操作子３の表示位置をＰｈ２からＰｈ３へ更新する。この例では、さらに、操作子３の計算位置がＰ３からＰ４に更新すると、操作子３の表示位置がＰｈ３から、操作子３の計算位置Ｐ４と同じ位置あるいは略同じ位置であるＰｈ４へと更新した場合を示している。
【００５６】
ここで、Ｐ２とＰｈ２との距離をＬ１、Ｐ３とＰｈ３との距離をＬ２、Ｐ４とＰｈ４との距離をＬ３、そしてＰ４とＰｈ４との距離をＬ４とするとＬ１＞Ｌ２＞Ｌ３＞Ｌ４が成立する。
【００５７】
操作子３の表示位置を更新するための制御量は、例えば、操作子３の移動前後の計算位置間の移動ベクトルと、操作子３の表示上の位置と計算位置との差分ベクトルをもとに算出することが可能である。
【００５８】
［６．オブジェクト２から操作子３を離す操作に伴う表示制御その２］
上記の表示制御その１では、オブジェクト２から操作子３を離す操作が行われる直前の操作子３の表示位置Ｐｈ１と操作子３の計算位置Ｐ１とのｘ軸上の位置が互いに一致し、ｙ軸上の位置が一致しないことを前提したが、本開示の技術にかかる操作子３の表示制御は、オブジェクト２から操作子３を離す操作が行われる直前の操作子３の表示位置Ｐｈ１と操作子３の計算位置Ｐ１とがｘｙ軸方向において異なる場合においても有効である。次に、この場合の表示制御を、オブジェクト２から操作子３を離す操作に伴う表示制御その２として説明する。
【００５９】
図７は、オブジェクト２から操作子３を離す操作に伴う表示制御その２を説明するための図である。
ここでは、めり込み防止のための表示制御として、操作子３の計算位置がオブジェクト２内の任意の位置Ｐ１に移動する過程で、操作子３がオブジェクト２に最初に外接するときの位置Ｐｈ１に止めて表示する方式を採用した場合を想定する。
【００６０】
この表示制御その２においても、上記の表示制御その１と同様に、制御部１０１は、オブジェクト２から操作子３を離す操作が発生したことを判定すると、操作子３の計算位置と操作子３の表示位置とが次第に一致するように、オブジェクト２の外の空間内での操作子３の表示位置を算出する。つまり、図７において、制御部１０１は、操作子３の計算位置がＰ１からＰ２に更新すると、操作子３の表示位置をオブジェクト２に外接する位置であるＰｈ１から、オブジェクト２から離間した位置Ｐｈ２に更新する。
【００６１】
次に、制御部１０１は、操作子３の計算位置がＰ２からＰ３に更新すると、操作子３の表示位置をＰｈ２からＰｈ３へ更新する。
【００６２】
この例では、さらに、操作子３の計算位置がＰ３からＰ４に更新すると、操作子３の表示位置がＰｈ３から、Ｐ４と同じ位置または略同じ位置であるＰｈ４へと更新した場合を示している。
【００６３】
ここで、Ｐ２とＰｈ２との距離をＬ１、Ｐ３とＰｈ３との距離をＬ２、そしてＰ４とＰｈ４との距離をＬ３、そしてＰ４とＰｈ４との距離をＬ４とするとＬ１＞Ｌ２＞Ｌ３＞Ｌ４が成立する。
【００６４】
この表示制御その２の場合も、操作子３の表示位置を更新するための制御量は、表示制御その１の場合と同様に、例えば、操作子３の移動前後の計算位置間の移動ベクトルと、操作子３の表示上の位置と計算位置との差分ベクトルをもとに算出することが可能である。
【００６５】
このように、本開示の技術にかかるオブジェクト２から操作子３を離す操作に伴う表示制御によれば、オブジェクト２から操作子３を離す操作に伴って操作子３の計算位置と操作子３の表示位置とが次第に一致するように操作子３の表示位置が更新されるので、オブジェクト２から操作子３を離す操作に対する見掛け上の応答性が向上する。
【００６６】
［７．オブジェクト２から操作子３を離す操作の判定方法］
図８は、上記の表示制御その２の場合を例として、オブジェクト２から操作子３を離す操作の判定方法の一例を説明するための図である。
【００６７】
同図において、操作子３の計算位置がオブジェクト２内の任意の位置Ｐ１に移動する過程で、操作子３がオブジェクト２に最初に外接するときの表示位置Ｐｈ１と操作子３の計算位置Ｐ１の各中心とを結んだ直線Ｈを「操作子めり込み軸Ｈ」と呼ぶこととする。ｖはオブジェクト２から操作子３を離す操作による操作子３の計算位置の移動ベクトルである。この移動ベクトルｖの操作子めり込み軸Ｈに対する角度をθｖ、移動ベクトルｖの操作子めり込み軸Ｈ方向の大きさをｖｈとする。
【００６８】
以下の式（１）は、オブジェクト２から操作子３が離れる操作の判定条件である。
｜θｖ｜＜ＴθｖかつＴｖｈ＜｜ｖｈ｜      ・・・（１）
ここで、Ｔθｖ、Ｔｖｈはそれぞれ閾値である。
【００６９】
このように、オブジェクト２から操作子３が離れる操作の判定条件が規定されることによって、手振れなどによる操作子３の微量の動きをキャンセルできるとともに、操作子３の計算位置がオブジェクト２内にめり込んできた方向を基準にオブジェクト２から離れる操作を判定することができる。これにより、オブジェクト２から離れる操作をより適切に判定することができる。
【００７０】
なお、オブジェクト２から操作子３を離す操作の判定方法は上記のものに限定されない。その他、様々な方法や、変形が考えられる。
【００７１】
［８．操作子３の制御量の算出方法の一例］
次に、オブジェクト２から操作子３を離す操作に伴う操作子３の制御量を、操作子３の移動前後の計算位置間の移動ベクトルと、操作子３の表示位置と計算位置との差分ベクトルをもとに算出する方法の一例を図１７を用いて説明する。
【００７２】
制御部１０１は、操作子３の制御量である制御ベクトルｃを次式（２）により算出する。
ｃ＝（α×ｖ）＋（β×ｄ）      ・・・（２）
ここで、ｖは移動ベクトル、ｄは差分ベクトルである。αおよびβは制御パラメータであり、例えば、０以上かつ１以下の値をとり、移動ベクトルｖの大きさ｜ｖ｜あるいは角度の大きさ｜θｖ｜に依存する値である。
【００７３】
移動ベクトルｖの大きさ｜ｖ｜に依存して決まる制御パラメータβの例を以下に挙げる。
β＝ｅ−γ／｜ｖ｜（γは定数）
β＝１−ｅ−γ／｜ｖ｜（γは定数）
【００７４】
＜第２の実施形態＞
次に、本開示の技術にかかる操作子のめり込み防止のための表示制御の第２の実施形態として、ユーザの手および指の形態を模して互いに接続された複数の操作子を仮想空間に表示する場合のめり込み防止のための表示制御について説明する。
【００７５】
ユーザの手および指の動きを検出する動作検出デバイス３０としてグローブタイプのものがある。グローブタイプの動作検出デバイス３０は、図９に示すように、手の甲の３次元位置や、指の各関節（第１関節、第２関節、第３関節）の曲げ角度θ１，１、θ１，２、θ１，３、さらには図１０に示すように、指の左右の振り角度φ１，１などを、グローブ体に設けられたセンサーにより検出するように構成される。また、ユーザの手あるいは指をカメラで撮像し、画像処理して同様な検出を行ってもよい。
【００７６】
図１１は、上記のようなグローブタイプの動作検出デバイス３０を用いて検出される動作情報をもとに仮想空間に表示される複数の操作子の接続関係を示す図である。
ここで、Ａは手の甲に対応する操作子である。Ｂ１−Ｂ４は親指の第１関節、第２関節、第３関節および指先の位置に各々対応する操作子である。Ｃ１−Ｃ４は人差し指の第１関節、第２関節、第３関節および指先の位置に各々対応する操作子である。Ｄ１−Ｄ４は中指の第１関節、第２関節、第３関節および指先の位置に各々対応する操作子である。Ｅ１−Ｅ４は薬指の第１関節、第２関節、第３関節および指先の位置に各々対応する操作子である。Ｆ１−Ｆ４は小指の第１関節、第２関節、第３関節および指先の位置に各々対応する操作子である。
【００７７】
例えば、操作で使われる指が例えば人差し指である場合、仮想空間には、手の甲に対応する操作子Ａと、人差し指の第１関節、第２関節、第３関節および指先に各々対応する操作子Ｃ１−Ｃ４が表示される。このように操作で用いられて仮想空間に表示される複数の操作子Ａ、Ｃ１−Ｃ４のまとまりを「操作子セット」と呼ぶことにする。
【００７８】
このように操作子セットが仮想空間に表示される方式の場合、例えば、図１２に示すように、オブジェクト２内に計算位置が存在する１以上の操作子Ｃ２、Ｃ３、Ｃ４が、各々個別に上記の操作子のめり込み防止のための表示制御が行われることによって、各々点線で示される計算位置ＰＣ２、ＰＣ３、ＰＣ４から各々実線で示される表示位置に表示される。この場合、操作子Ｃ２、Ｃ３、Ｃ４が、指の操作子間の長さを無視した位置に表示されるため、指が短くみえるなど不自然である。
【００７９】
この課題を解決するために、制御部１０１は、操作子セットにおいて互いに隣り合う操作子間で決められた長さを保った上で操作子のめり込み防止のための表示制御を行う。例えば、制御部１０１は、操作で使われた指が人差し指である場合には、手の甲の操作子Ａと、人指し指の第１関節、第２関節、第３関節および指先の各操作子Ｃ１−Ｃ４について、隣り合うもの同士の間に決められた長さｌＡ−Ｃ１、ｌＣ１−Ｃ２、ｌＣ２−Ｃ３、ｌＣ３−Ｃ４を保った上で、各々の操作子Ｃ２、Ｃ３、Ｃ４のめり込み防止のための表示制御を行う。
【００８０】
なお、操作子セットにおいて、互いに隣り合う操作子間の決められた長さは、指の種類によっても異なる。
【００８１】
このように、操作子間の長さを拘束した操作子のめり込み防止のための表示制御によって、例えば、図１３に示すように、計算上、オブジェクト２内に位置する操作子Ｃ２、Ｃ３、Ｃ４がそれぞれ自然な位置関係で表示され、操作子セット全体の見た目の違和感が解消される。
【００８２】
但し、操作子間の長さの条件だけを拘束した操作子のめり込み防止のための表示制御では、オブジェクト２の形状によっては見た目の違和感が残る場合がある。例えば、図１４に示すように、操作子間の長さを拘束した操作子のめり込み防止のための表示制御の結果、オブジェクト２の輪郭線２ａにおける平らな線に沿って各操作子Ｃ２、Ｃ３、Ｃ４が表示される場合、第２関節に対応する操作子Ｃ２が本来曲がり得ない方向に曲がっており、不自然な見た目となっている。
【００８３】
そこで、操作子間の長さの条件に加え、関節の曲がりの向きと曲げ角度の範囲を拘束した条件下で、操作子のめり込み防止のための表示制御を行うことがより望ましい。関節の曲がりの向きと曲げ角度の範囲は関節の位置（第１関節、第２関節、第３関節）によって異なり、さらには指の種類によっても異なる。例えば、第１関節は掌の高さに対して上下に曲げられるが、第２関節および第３関節は、掌側に曲げることができるものの、手の甲側にはほとんど曲げられない。このような関節毎の性質を考慮して、各々の関節の曲がりの向きと曲げ角度の範囲が、操作子間の長さとともに、操作子のめり込み防止のための表示制御の拘束条件として予め設定される。
【００８４】
次に、上記の拘束条件下での複数の操作子のめり込み防止のための表示制御の動作を説明する。
【００８５】
［９．拘束条件下での複数の操作子のめり込み防止のための表示制御その１］
図１５は上記の拘束条件下での複数の操作子のめり込み防止のための表示制御その１を説明するための図である。
制御部１０１は、動作検出デバイス３０から取得した動作情報をもとに、まず、手の甲、人差し指の第１関節、指先に各々対応する複数の操作子Ａ、Ｃ１、Ｃ４の計算位置ＰＡ、ＰＣ１、ＰＣ４を算出する。
【００８６】
次に、制御部１０１は、算出した各々の計算位置ＰＡ、ＰＣ１、ＰＣ４に対して、上記の＜５．操作子のめり込み防止のための表示制御＞によって各々の操作子Ａ、Ｃ１、Ｃ４の表示位置を算出する。この際、手の甲、人差し指の第１関節の各操作子Ａ、Ｃ１の計算位置ＰＡ、ＰＣ１はオブジェクト２の外にあるため、それらの計算位置ＰＡ、ＰＣ１に手の甲の操作子Ａと人差し指の第１関節の操作子Ｃ１が表示される。一方、指先の操作子Ｃ４の計算位置ＰＣ４はオブジェクト２内にあるため、上記の＜５．操作子のめり込み防止のための表示制御＞によって指先に対応する操作子Ｃ４はオブジェクト２の輪郭線２ａと外接する位置に表示される。
【００８７】
続いて、制御部１０１は、操作子Ａ、Ｃ１、Ｃ４の表示位置を固定したまま、第２関節および第３関節の各操作子Ｃ２、Ｃ３の位置を、上記の＜５．操作子のめり込み防止のための表示制御＞に拠らず、上記の拘束条件の制約下で生成する。
【００８８】
もし、手の甲、第１関節および指先の各操作子Ａ、Ｃ１、Ｃ４の表示位置を固定したまま、拘束条件下で第２関節および第３関節の操作子Ｃ２、Ｃ３の表示位置を生成できない場合、制御部１０１は、手の甲、第１関節および指先の各操作子Ａ、Ｃ１、Ｃ４のうち１以上の操作子の表示位置を上記の拘束条件の制約下で調整するなどして、最終的に、すべての操作子Ａ、Ｃ１−Ｃ４の表示位置を上記の拘束条件の制約下で生成する。
以上により、ユーザの手および指の形態を模した複数の操作子で構成される操作子セットに対して、自然の形態を崩すことなく、めり込み防止処理を施すことができる。
【００８９】
［１０．拘束条件下での複数の操作子のめり込み防止のための表示制御その２］
図１６は、上記の拘束条件下での複数の操作子のめり込み防止のための表示制御その２を説明するための図である。
まず、制御部１０１は、動作検出デバイス３０から取得した動作情報をもとに、手の甲の操作子Ａ、第１関節の操作子Ｃ１、第２関節の操作子Ｃ２、第３関節の操作子Ｃ３、指先の操作子Ｃ４の順に、計算位置がオブジェクト２内にある操作子を探す。計算位置がオブジェクト２内にある操作子が見つかると、制御部１０１は、操作子間の長さの拘束条件下での操作子のめり込み防止のための表示制御によって、その操作子の変更先の表示位置を計算する。
【００９０】
次に、制御部１０１は、その操作子の変更先の表示位置が、対応する関節の曲がり方の拘束条件の違反を発生させるかどうかを判定する。もし、拘束条件の違反を発生させる場合、制御部１０１は、対応する関節の曲がり方に影響を与える１以上の操作子の表示位置を操作子間の長さの拘束条件を守りながら、拘束条件の違反を発生させない別の変更先の表示位置を探索し、その位置に操作子を表示させる。
【００９１】
図１６の例では、第３関節の操作子Ｃ３の表示位置が、第２関節の操作子Ｃ２の曲が方の拘束条件の違反を発生させることが制御部１０１によって判定される。そこで制御部１０１は、第２関節の操作子Ｃ２の曲が方に影響を与える操作子である第２関節の操作子Ｃ２および第３関節の操作子Ｃ３の表示位置をそれぞれ操作子間の長さの拘束条件を守りながら調整する。
【００９２】
図１６の例では、その後、指先の操作子Ｃ４の表示位置が、第３関節の操作子Ｃ３の曲がり方の拘束条件の違反を発生させることが制御部１０１によって判定される。制御部１０１は、前記同様に、第３関節の操作子Ｃ３の曲が方に影響を与える操作子である第３関節の操作子Ｃ３の表示位置と指先の操作子Ｃ４の表示位置を操作子間の長さの拘束条件を守りながら調整する。
【００９３】
また、第３関節の操作子Ｃ３の位置が再度調整されたことによって、第２関節の操作子Ｃ２の曲がり方の拘束条件の違反が再度発生する可能性がある。第２関節の操作子Ｃ２の曲がり方の拘束条件の違反が再度発生した場合、制御部１０１は、第２関節の操作子Ｃ２、第３関節の操作子Ｃ３、指先の操作子Ｃ４の各々の表示位置を各々の操作子間の長さの拘束条件を守りながら再度調整する。
【００９４】
さらに、この調整により、第１関節の操作子Ｃ１の曲がり方の拘束条件違反が再度発生した場合には、制御部１０１は、第１関節の操作子Ｃ１、第２関節の操作子Ｃ２、第３関節の操作子Ｃ３、指先の操作子Ｃ４の各々の表示位置を各々の操作子間の長さの拘束条件を守りながら再度調整する。
【００９５】
この調整により、手の甲の操作子Ａ１の曲がり方の拘束条件違反が発生した場合、制御部１０１は、手の甲の操作子Ａ、第１関節の操作子Ｃ１、第２関節の操作子Ｃ２、第３関節の操作子Ｃ３、指先の操作子Ｃ４の各々の表示位置を各々の操作子間の長さの拘束条件を守りながら再度調整する。
【００９６】
以上により、この操作子のめり込み防止のための表示制御その２によっても、ユーザの手および指の形態を模した複数の操作子で構成される操作子セットに対して、自然の形態を崩すことなく、めり込み防止処理を施すことができる。
【００９７】
オブジェクト２から操作子セットを離す操作が発生した場合、制御部１０１は、その操作子セットに属する各操作子について、各々個別に、操作子の計算位置と表示位置とが次第に一致するように、オブジェクト２の外の空間内での操作子３の表示位置を算出する。
【００９８】
あるいは、制御部１０１は、操作子間の長さ、関節の曲がり方向および曲がりの角度の範囲を拘束した条件下で、操作子セットを構成する複数の操作子の位置関係を調整しながら、操作子の計算位置と表示位置とが次第に一致するように、オブジェクト２の外の空間内での各操作子の表示位置を算出するようにしてもよい。
【００９９】
＜変形例１＞
以上、操作子の計算位置がオブジェクト内にあるとき、オブジェクトに外接する位置に操作子を表示させることによって、ユーザが仮想空間内で操作子でオブジェクトに触れたときの自然な見た目を提示する操作子のめり込み防止のための表示制御と、オブジェクトから操作子を離す操作の見た目上の応答性を改善する表示制御について説明したが、これらの処理及び制御に関連して以下のような変形も考えられる。
【０１００】
動作検出デバイスとして、圧電素子などの触覚提示素子を有するものを用いてもよい。制御部は、操作子のめり込み防止のための表示制御によって、仮想空間内の操作子がオブジェクトに外接しているときに触覚提示素子を駆動して、ユーザにオブジェクトに接触している感覚を提示する。この際、制御部は、操作子の仮想空間での計算位置と表示位置との距離をめり込み量として、このめり込み量に応じた刺激の強度で触覚提示素子が駆動されるように制御をする。これにより、めり込み量をパラメータとしてオブジェクトに対する何からの制御が行われることを想定した場合、めり込み量が触感の強さによりユーザにフィードバックされるので、ユーザの操作性か向上する。
【０１０１】
触覚提示においては、オブジェクトの種類（物品の種類）や属性（材質、硬さ、表面特性）などに応じて、触覚刺激の強度、パターンなどを切り替えるようにしてもよい。さらに、操作子に属性（材質、硬さ、表面特性）を与えることが可能である場合には、制御部は、操作子の属性とオブジェクトの属性との組み合わせに応じて異なる触覚をユーザに提示するように制御してもよい。あるいは、１つのオブジェクトが属性の異なる複数の部位で構成される場合、操作子が触れた部位の属性に対応した触覚提示が行われることによって、ユーザは触覚を通して操作子で触れた部位を知ることができる。
【０１０２】
ユーザにめり込み量を提示する方法としては、触覚の他、オブジェクトの表示そのものに反映させる方法がある。オブジェクトの表示に反映させる方法には、例えば、オブジェクトの形や大きさ、色、テスクチャ、透明度、輝度値を変える方法などがある。これらの方法においても、オブジェクトおよび操作子の各々の属性により、オブジェクトの表示への反映のさせ方を変えてもよい。
【０１０３】
また、オブジェクトあるいは操作子に対してめり込み量の閾値を設定しておき、めり込み量が閾値を超えた場合には、操作子の表示位置を、オブジェクト内のめり込み量に対応した位置に表示させるようにしてもよい。
【０１０４】
＜変形例２＞
オブジェクトから操作子を離す操作が行われた際の操作子の表示制御として、第１の実施形態では、操作子の計算位置がオブジェクト内にあるとき、オブジェクトから操作子を離す操作の開始とともに、操作子の表示位置もオブジェクトから離れ始めることとした。
【０１０５】
オブジェクトから操作子を離す操作の開始タイミングと操作子の表示位置がオブジェクトから離れ始めるタイミングに、例えば、オブジェクトに与えられた属性（材質、硬さ、表面特性）、操作子３に与えられた属性（材質、硬さ、表面特性）などに応じた時間差を設けてもよい。より具体的には、オブジェクトまたは操作子の表面の属性に粘着性が与えられている場合には、オブジェクトから操作子が離れる際に両接触面の間にあたかも粘着力が働いたかのように、オブジェクトから操作子を離す操作の開始から時間差（遅延時間）を置いて操作子の表示位置がオブジェクトから離れ始めるように制御してもよい。
【０１０６】
＜変形例３＞
第１の実施形態では、操作子の表示位置が、オブジェクトの輪郭線に外接した位置から、計算サイクルごとに操作子の計算位置に次第に近付いて行き、最終的に操作子の計算位置と一致するまで操作子の表示位置を移動されることとした。ここで、オブジェクトから操作子を離す操作を開始してから、操作子の表示位置が計算位置と一致するまでの動き方は、上記（２）式の制御パラメータα、βによって決まり、制御パラメータα、βは、移動ベクトルの大きさ｜ｖ｜、角度｜θｖ｜に依存する。
【０１０７】
そこで、ユーザより制御パラメータα、βと移動ベクトルの大きさ｜ｖ｜、角度｜θｖ｜との依存関係の詳細の選択あるいは設定を受け付けるためのユーザインタフェースを設けてもよい。これにより、ユーザは、オブジェクトから操作子を離す操作に対する操作子の表示位置の動き方として好みの動き方を選択することができる。
【０１０８】
＜変形例４＞
オブジェクトおよび操作子の少なくとも一方が滑りやすい表面特性を有するものである場合、互いの接触時の滑りによる操作子の移動量を推定し、操作子のめり込み防止のための表示制御によって得られた操作子の表示位置をその滑りによる移動分だけ移動させてもよい。
【０１０９】
＜変形例５＞
仮想空間に手の形態による複数の操作子を表示させる場合に、動作検出デバイスより与えられるユーザからの指令をもとに複数の操作子のスケールを変更するようにしてもよい。制御部は、変更された操作子のスケールに合せて、操作子のめり込み防止のための表示制御、オブジェクトから操作子を離す操作に対する操作子の表示制御を行う。
【０１１０】
＜変形例６＞
操作子のめり込み防止のための表示制御が発動されるとき、力覚提示デバイスを用いてユーザに力のフィードバックを与えるようにしてもよい。これにより、操作子の表示位置が計算位置から操作子が移動してきた方向とは逆方向に移動した感覚をユーザに提示することができる。
【０１１１】
＜変形例７＞
本開示の操作子のめり込み防止のための表示制御およびオブジェクトから操作子を離す操作に対する表示制御は、オブジェクトが別の物体の裏に隠れているなど、表示上ユーザの視界に入らない場合には、無効にとなるように制御されてよい。これにより制御部のＣＰＵの無駄な演算が実行されずにすみ、ＣＰＵの負担を軽減することができる。
【０１１２】
＜変形例８＞
操作子のめり込み防止の表示制御において、操作子はオブジェクトに外接する位置に表示されることとしたが、オブジェクトに近接する位置であってもよい。
また、本開示の技術に係るオブジェクトから操作子を離す操作に対する表示制御は、必ずしも、第１の実施形態で説明した操作子のめり込み防止のための表示制御、あるいは第２の実施形態で説明した複数の操作子のめり込み防止のための表示制御と組み合わせて用いられることに限定されない。
例えば、オブジェクトに操作子が入り込んできた位置に、操作子をオブジェクトと外接して、あるいは近接して表示させる方法と、本開示の技術に係るオブジェクトから操作子を離す操作に対する表示制御とを組み合わせてもよい。
あるいは、オブジェクト内の操作子の計算位置と最も近い位置に、操作子をオブジェクトと外接して、あるいは近接して表示させる方法と、本開示の技術に係るオブジェクトから操作子を離す操作に対する表示制御とを組み合わせてもよい。
【０１１３】
本開示の技術は、ＶＲ（Virtual Reality）に分野に限らず、ＡＲ（Augmented Reality）の分野においても有効である。
【０１１４】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０１１５】
なお、本技術は以下のような構成もとることができる。
（１）表示デバイスに、仮想空間に定義される第１の仮想オブジェクトと、前記第１の仮想オブジェクトとは異なる第２の仮想オブジェクトと、を表示させるための表示情報を生成する表示制御部と、
ユーザの操作入力に基づく基準位置に基づいて前記仮想空間内で前記第１の仮想オブジェクトを移動させ、前記第１の仮想オブジェクトの前記基準位置が前記第２の仮想オブジェクト内にあると判定されるとき、前記第２の仮想オブジェクトに外接する位置に前記第１の仮想オブジェクトを表示させ、前記第２の仮想オブジェクトから前記第１の仮想オブジェクトを離す操作が判定されたとき、当該操作に伴って、前記基準位置と前記第１の仮想オブジェクトの表示位置とが次第に一致するように前記第１の仮想オブジェクトの表示位置を制御するように構成されたコントローラーと
を具備する情報処理装置。
【０１１６】
（２）上記（１）に記載の情報処理装置であって、
前記コントローラーは、
前記第１の仮想オブジェクトの前記基準位置の移動ベクトルおよび前記第１の仮想オブジェクトの前記基準位置と前記第１の仮想オブジェクトの表示位置との差分ベクトルをもとに、前記第２の仮想オブジェクトから前記第１の仮想オブジェクトを離す操作に伴う前記第１の仮想オブジェクトの表示位置を更新するための制御量を算出するように構成された
情報処理装置。
【０１１７】
（３）上記（１）または（２）に記載の情報処理装置であって、
前記コントローラーは、
前記ユーザの操作入力に基づく基準位置をもとに、複数の前記第１の仮想オブジェクトを前記仮想空間内に表示する場合、前記複数の第１の仮想オブジェクトの少なくとも一部の第１の仮想オブジェクトの前記仮想空間内の前記基準位置が前記第２の仮想オブジェクト内にあるとき、前記複数の第１の仮想オブジェクトの間に決められた相対的な位置関係の拘束条件下で、前記第２の仮想オブジェクトに外接する位置に前記一部の第１の仮想オブジェクトを表示させるように構成された
情報処理装置。
【０１１８】
（４）上記（３）に記載の情報処理装置であって、
前記コントローラーは、
前記第２の仮想オブジェクトから前記複数の第１の仮想オブジェクトを離す操作に伴って、前記拘束条件を守りながら、前記第１の仮想オブジェクトの前記基準位置と前記第１の仮想オブジェクトの表示位置とが次第に一致するように前記複数の第１の仮想オブジェクトの表示位置を制御するように構成された
情報処理装置。
【０１１９】
（５）上記（１）または（２）に記載の情報処理装置であって、
前記コントローラーは、
前記第１の仮想オブジェクトを前記第２の仮想オブジェクト内の位置に移動させる操作が判定されたとき、前記第１の仮想オブジェクトの移動過程で前記第２の仮想オブジェクトと外接する位置に前記第１の仮想オブジェクトを表示させるように構成された
情報処理装置。
【０１２０】
（６）上記（１）または（２）に記載の情報処理装置であって、
前記コントローラーは、
前記第１の仮想オブジェクトを前記第２の仮想オブジェクトの外から前記第２の仮想オブジェクト内の第１の位置に移動させる操作が判定されたとき、
前記第１の仮想オブジェクトを前記第２の仮想オブジェクト内の第１の位置に移動させる過程で前記第２の仮想オブジェクトと外接する第２の位置に前記第１の仮想オブジェクトを表示させ、
前記第２の位置に表示された前記第１の仮想オブジェクトが外接する前記第２の仮想オブジェクトの輪郭線に対する第１の法線方向を求め、
前記第１の位置から前記第１の法線方向にある前記第２の仮想オブジェクトの前記輪郭線に対する第２の法線方向を求め、
前記第１の位置から前記第２の法線方向にある前記第２の仮想オブジェクトの輪郭線に外接する第３の位置に前記第１の仮想オブジェクトの表示位置を更新し、
前記第１の仮想オブジェクトの表示位置を更新するための処理を収束まで繰り返すように構成された
情報処理装置。
【０１２１】
（７）表示制御部が、表示デバイスに、仮想空間に定義される第１の仮想オブジェクトと、前記第１の仮想オブジェクトとは異なる第２の仮想オブジェクトと、を表示させるための表示情報を生成し、
コントローラーが、ユーザの操作入力に基づく基準位置に基づいて前記仮想空間内で前記第１の仮想オブジェクトを移動させ、前記第１の仮想オブジェクトの前記基準位置が前記第２の仮想オブジェクト内にあると判定されるとき、前記第２の仮想オブジェクトに外接する位置に前記第１の仮想オブジェクトを表示させ、前記第２の仮想オブジェクトから前記第１の仮想オブジェクトを離す操作が判定されたとき、当該操作に伴って、前記基準位置と前記第１の仮想オブジェクトの表示位置とが次第に一致するように前記第１の仮想オブジェクトの表示位置を制御する
情報処理方法。
【０１２２】
（８）上記（７）に記載の情報処理方法であって、
前記コントローラーは、
前記第１の仮想オブジェクトの前記基準位置の移動ベクトルおよび前記第１の仮想オブジェクトの前記基準位置と前記第１の仮想オブジェクトの表示位置との差分ベクトルをもとに、前記第２の仮想オブジェクトから前記第１の仮想オブジェクトを離す操作に伴う前記第１の仮想オブジェクトの表示位置を更新するための制御量を算出する
情報処理方法。
【０１２３】
（９）上記（７）または（８）に記載の情報処理方法であって、
前記コントローラーは、
前記ユーザの操作入力に基づく基準位置をもとに、複数の前記第１の仮想オブジェクトを前記仮想空間内に表示する場合、前記複数の第１の仮想オブジェクトの少なくとも一部の第１の仮想オブジェクトの前記仮想空間内の前記基準位置が前記第２の仮想オブジェクト内にあるとき、前記複数の第１の仮想オブジェクトの間に決められた相対的な位置関係の拘束条件下で、前記第２の仮想オブジェクトに外接する位置に前記一部の第１の仮想オブジェクトを表示させる
情報処理方法。
【０１２４】
（１０）上記（９）に記載の情報処理方法であって、
前記コントローラーは、
前記第２の仮想オブジェクトから前記複数の第１の仮想オブジェクトを離す操作に伴って、前記拘束条件を守りながら、前記第１の仮想オブジェクトの前記基準位置と前記第１の仮想オブジェクトの表示位置とが次第に一致するように前記複数の第１の仮想オブジェクトの表示位置を制御する
情報処理方法。
【０１２５】
（１１）上記（７）または（８）に記載の情報処理方法であって、
前記コントローラーは、
前記第１の仮想オブジェクトを前記第２の仮想オブジェクト内の位置に移動させる操作が判定されたとき、前記第１の仮想オブジェクトの移動過程で前記第２の仮想オブジェクトと外接する位置に前記第１の仮想オブジェクトを表示させる
情報処理方法。
【０１２６】
（１２）上記（７）または（８）に記載の情報処理方法であって、
前記コントローラーは、
前記第１の仮想オブジェクトを前記第２の仮想オブジェクトの外から前記第２の仮想オブジェクト内の第１の位置に移動させる操作が判定されたとき、
前記第１の仮想オブジェクトを前記第２の仮想オブジェクト内の第１の位置に移動させる過程で前記第２の仮想オブジェクトと外接する第２の位置に前記第１の仮想オブジェクトを表示させ、
前記第２の位置に表示された前記第１の仮想オブジェクトが外接する前記第２の仮想オブジェクトの輪郭線に対する第１の法線方向を求め、
前記第１の位置から前記第１の法線方向にある前記第２の仮想オブジェクトの前記輪郭線に対する第２の法線方向を求め、
前記第１の位置から前記第２の法線方向にある前記第２の仮想オブジェクトの輪郭線に外接する第３の位置に前記第１の仮想オブジェクトの表示位置を更新し、
前記第１の仮想オブジェクトの表示位置を更新するための処理を収束まで繰り返す
情報処理方法。
【０１２７】
（１３）表示デバイスに、仮想空間に定義される第１の仮想オブジェクトと、前記第１の仮想オブジェクトとは異なる第２の仮想オブジェクトと、を表示させるための表示情報を生成する表示制御部と、
ユーザの操作入力に基づく基準位置に基づいて前記仮想空間内で前記第１の仮想オブジェクトを移動させ、前記第１の仮想オブジェクトの前記基準位置が前記第２の仮想オブジェクト内にあると判定されるとき、前記第２の仮想オブジェクトに外接する位置に前記第１の仮想オブジェクトを表示させ、前記第２の仮想オブジェクトから前記第１の仮想オブジェクトを離す操作が判定されたとき、当該操作に伴って、前記基準位置と前記第１の仮想オブジェクトの表示位置とが次第に一致するように前記第１の仮想オブジェクトの表示位置を制御するように構成されたコントローラーとして
コンピュータを動作させるプログラム。
【０１２８】
（１４）上記（１３）に記載のプログラムであって、
前記コントローラーにて、
前記第１の仮想オブジェクトの前記基準位置の移動ベクトルおよび前記第１の仮想オブジェクトの前記基準位置と前記第１の仮想オブジェクトの表示位置との差分ベクトルをもとに、前記第２の仮想オブジェクトから前記第１の仮想オブジェクトを離す操作に伴う前記第１の仮想オブジェクトの表示位置を更新するための制御量を算出するように
コンピュータを動作させるプログラム。
【０１２９】
（１５）上記（１３）または（１４）に記載のプログラムであって、
前記コントローラーにて、
前記ユーザの操作入力に基づく基準位置をもとに、複数の前記第１の仮想オブジェクトを前記仮想空間内に表示する場合、前記複数の第１の仮想オブジェクトの少なくとも一部の第１の仮想オブジェクトの前記仮想空間内の前記基準位置が前記第２の仮想オブジェクト内にあるとき、前記複数の第１の仮想オブジェクトの間に決められた相対的な位置関係の拘束条件下で、前記第２の仮想オブジェクトに外接する位置に前記一部の第１の仮想オブジェクトを表示させるように
コンピュータを動作させるプログラム。
【０１３０】
（１６）上記（１５）に記載のプログラムであって、
前記コントローラーにて、
前記第２の仮想オブジェクトから前記複数の第１の仮想オブジェクトを離す操作に伴って、前記拘束条件を守りながら、前記第１の仮想オブジェクトの前記基準位置と前記第１の仮想オブジェクトの表示位置とが次第に一致するように前記複数の第１の仮想オブジェクトの表示位置を制御するように
コンピュータを動作させるプログラム。
【０１３１】
（１７）上記（１３）または（１４）に記載のプログラムであって、
前記コントローラーにて、
前記第１の仮想オブジェクトを前記第２の仮想オブジェクト内の位置に移動させる操作が判定されたとき、前記第１の仮想オブジェクトの移動過程で前記第２の仮想オブジェクトと外接する位置に前記第１の仮想オブジェクトを表示させるように
コンピュータを動作させるプログラム。
【０１３２】
（１８）上記（１３）または（１４）に記載のプログラムであって、
前記コントローラーて、
前記第１の仮想オブジェクトを前記第２の仮想オブジェクトの外から前記第２の仮想オブジェクト内の第１の位置に移動させる操作が判定されたとき、
前記第１の仮想オブジェクトを前記第２の仮想オブジェクト内の第１の位置に移動させる過程で前記第２の仮想オブジェクトと外接する第２の位置に前記第１の仮想オブジェクトを表示させ、
前記第２の位置に表示された前記第１の仮想オブジェクトが外接する前記第２の仮想オブジェクトの輪郭線に対する第１の法線方向を求め、
前記第１の位置から前記第１の法線方向にある前記第２の仮想オブジェクトの前記輪郭線に対する第２の法線方向を求め、
前記第１の位置から前記第２の法線方向にある前記第２の仮想オブジェクトの輪郭線に外接する第３の位置に前記第１の仮想オブジェクトの表示位置を更新し、
前記第１の仮想オブジェクトの表示位置を更新するための処理を収束まで繰り返すように
コンピュータを動作させるプログラム。
【符号の説明】
【０１３３】
１…情報処理システム
２…オブジェクト
３…操作子
１０…情報処理装置
２０…表示デバイス
３０…動作検出デバイス
１０１…制御部
１０２…操作部
１０３…記憶部
１０４…表示インタフェース
１０５…入力インタフェース
【図１】
2017182532.tif 000003
【図２】
2017182532.tif 000004
【図３】
2017182532.tif 000005
【図４】
2017182532.tif 000006
【図５】
2017182532.tif 000007
【図６】
2017182532.tif 000008
【図７】
2017182532.tif 000009
【図８】
2017182532.tif 000010
【図９】
2017182532.tif 000011
【図１０】
2017182532.tif 000012
【図１１】
2017182532.tif 000013
【図１２】
2017182532.tif 000014
【図１３】
2017182532.tif 000015
【図１４】
2017182532.tif 000016
【図１５】
2017182532.tif 000017
【図１６】
2017182532.tif 000018
【図１７】
2017182532.tif 000019