以下に、本開示の実施形態について図面に基づいて詳細に説明する。なお、この実施形態により本願にかかる情報処理装置、情報処理方法及び情報処理プログラムが限定されるものではない。また、以下の各実施形態において、同一の部位には同一の符号を付することにより重複する説明を省略する。
以下に示す項目順序に従って本開示を説明する。
1.実施形態
1-1.本開示の実施形態に係る情報処理の概要
1-2.実施形態に係る情報処理システムの構成
1-3.実施形態に係る情報処理装置の構成
1-4.実施形態に係る情報処理の手順
1-5.交点表示
1-5-1.交点表示に関する手順
1-5-2.交点表示モード
1-5-3.交点表示態様
1-6.主従関係
1-6-1.コントローラと視線
1-6-2.指さしと視線
1-6-3.交点表示例
1-7.仮想オブジェクト
1-7-1.仮想オブジェクトの配置
1-7-2.仮想オブジェクトの配置範囲
1-7-3.交点との配置位置
1-7-4.仮想オブジェクトの移動
1-7-5.仮想オブジェクトの移動の手順
1-7-6.コントローラと視線
1-8.線の表現
1-9.その他
1-10.他の幾何学的対象(面)
2.その他の構成例
3.本開示に係る効果
4.ハードウェア構成
[1.実施形態]
[1-1.本開示の実施形態に係る情報処理の概要]
図1は、本開示の実施形態に係る情報処理の一例を示す図である。本開示の実施形態に係る情報処理は、図1に示す情報処理装置100によって実現される。情報処理システム1の情報処理装置100は、実施形態に係る情報処理を実行する情報処理装置である。
情報処理システム1(図3参照)は、表示装置10や、表示装置10の表示を制御する情報処理装置100(図3参照)や、第1コントローラ20Aや、第2コントローラ20Bが含まれる。図1は、表示装置10がヘッドマウントディスプレイ(HMD:Head Mounted Display)である場合を示す。図1では、実空間RSに示すように、ヘッドマウントディスプレイである表示装置10がユーザ50の頭部に装着され、情報処理装置100により表示制御に応じた像が、ユーザ50の眼前に位置する表示装置10のディスプレイ(例えば表示部15(図3参照))に表示される。
なお、表示装置10は、後述する処理が実現可能であれば、非透過型のHMDや透過型のHMD等どのようなヘッドマウントディスプレイであってもよい。また、表示装置10は、ヘッドマウントディスプレイに限らず、後述する情報処理が実現可能であればどのような装置であってもよく、例えば空中投影ディスプレイ等の種々の装置であってもよい。表示装置10の構成の詳細については後述する。
また、図1では、ユーザ50が右手に第1コントローラ20Aを所持し、左手に第2コントローラ20Bを所持する場合を示す。以下では、第1コントローラ20Aや第2コントローラ20Bを区別しない場合、コントローラ20と記載する場合がある。コントローラ20は、ユーザが方向を示すために用いるデバイスである。ユーザは、コントローラ20を所持する手を所望の位置や向きに配置することにより、所望の方向を指し示す。例えば、コントローラ20は、表示装置10により表示されるAR(Augmented Reality)やVR(Virtual Reality)やMR(Mixed Reality)等の空間の位置を指示したり、空間内のオブジェクト(「仮想オブジェクト」ともいう)を指示したりするために用いられる。
図1では、ユーザが示した方向をユーザに視覚的に認識させるための要素(対象)として線を用いる場合を示す。例えば、ユーザが示した方向に沿う線により、ユーザが示した方向をユーザに視覚的に認識させる。図1では、ユーザがコントローラ20により指示した方向に延びる線を表示装置10に表示させることにより、ユーザがコントローラ20により指示した方向をユーザに視覚的に認識させる。図1では、コントローラ20から放射される線は、表示装置10により表示される仮想的なビームである場合を示す。例えば、表示装置10は、コントローラ20からコントローラ20の所定の位置(例えば図28中の原点21Aや原点21B等)を通る軸に沿って放射される線を表示する。
なお、コントローラ20から放射される線は、表示装置10により表示される仮想的なビームに限らず、コントローラ20が実際に放射するビーム(レーザー光)であってもよい。コントローラ20が実際にレーザー光(線)を放射する場合、コントローラ20は所定の光軸に沿ってレーザー光を放射する。また、ユーザが示した方向をユーザに視覚的に認識させるための要素は、線に限らず、面などであってもよい。以下では、ユーザが示した方向をユーザに視覚的に認識させるために用いられる線や面等を総称して幾何学的対象と記載する場合がある。また、ユーザによる方向の指示は、コントローラ20等のデバイスに限らず、ユーザの身体等であってもよいがこの点についての詳細は上述する。以下では、ユーザが方向を示すために用いるデバイスやユーザの身体等を総称して指示構成要素と記載する場合がある。指示構成要素は、ユーザが方向を示すために用いるものであればどのようなものであってもよい。
図1中の像IMは、ユーザ50が装着した表示装置10のディスプレイによりユーザ50の眼前に表示される像である。図1中の像IMには、第1コントローラ20Aが指し示す方向に対応する線LN1や第2コントローラ20Bが指し示す方向に対応する線LN2が表示される。
ユーザ50は、線LN1の位置及び向きや線LN2の位置及び向きを確認しながら、コントローラ20を所持する手を所望の位置や向きを変えることにより、線LN1と線LN2とに基づき定まる位置(以下「指示位置」ともいう)を指定する。図1の例では、ユーザ50は、像IM1の中央部付近(自身の眼前の中央部付近)が指示位置となるように、コントローラ20の向きや位置を調整する。以下、コントローラ20の向きや位置を調整することを、単に「コントローラ20の調整」と記載する場合がある。
図1の例では、情報処理装置100は、ユーザ50がコントローラ20により示した2つの方向に基づき定まる指示位置に、仮想オブジェクト用のマークをMK1表示するように表示装置10を制御する。ここで、情報処理装置100は、2つの線LN1、LN2の位置関係に基づいて、マークMK1を表示するかどうかを判定する。この点について、図2を用いて説明する。図2は、本開示の実施形態に係る情報処理の一例を説明するための図である。図2に示す状態ST1~ST4の各々は、ユーザ50によるコントローラ20の調整に基づく、方向の変化に対応する線LN1や線LN2の変化を示す。例えば、図2に示す状態ST3は、マークMK1が表示された像IM1に対応する状態を示す。
情報処理装置100は、ユーザ50の動作に応じたコントローラ20の位置や向きを示す情報(以下「コントローラ情報」ともいう)取得し、取得したコントローラ情報に基づいて、線LN1、LN2を表示するように、表示装置10を制御する。また、情報処理装置100は、2つの線LN1、LN2の位置関係に基づいて、仮想オブジェクト用のマークを表示するかどうかを判定する。情報処理装置100は、2つの線LN1、LN2との間の距離を算出する。また、情報処理装置100は、2つの線LN1、LN2に基づき定まる指示位置を演算により算出する。
図2に示す状態ST1は、例えば、ユーザ50が第1コントローラ20A及び第2コントローラ20Bを所持し、操作を開始した時点に対応する。情報処理装置100は、状態ST1に対応するコントローラ20の位置や向きを示すコントローラ情報をコントローラ20から取得し、取得したコントローラ情報に基づいて、線LN1、LN2を表示するように、表示装置10を制御する。
また、情報処理装置100は、2本の線LN1、LN2の距離Dが閾値D0未満かどうかを判定する。例えば、閾値D0は、2本の線LN1、LN2の交点を表示するかどうかの判定に用いられる閾値である。閾値D0は、0以上の値である。例えば、情報処理装置100は、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D0未満かどうかを判定する。情報処理装置100は、距離Dが閾値D0未満である場合、交点を表示すると判定する。図2に示す状態ST1では、情報処理装置100は、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D0以上であるため、交点を表示しないと判定する。
ユーザ50は、所望の位置を指定するために、第1コントローラ20A及び第2コントローラ20Bの調整を行う(ステップS1)。ユーザ50は、2本の線LN1、LN2が近づくように、第1コントローラ20A及び第2コントローラ20Bの調整を行う。図2に示す状態ST2は、ユーザ50による第1コントローラ20A及び第2コントローラ20Bの調整後の状態に対応する。情報処理装置100は、状態ST2に対応するコントローラ20の位置や向きを示すコントローラ情報をコントローラ20から取得し、取得したコントローラ情報に基づいて、線LN1、LN2を表示するように、表示装置10を制御する。
そして、情報処理装置100は、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D0未満かどうかを判定する。図2に示す状態ST2では、情報処理装置100は、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D0未満であるため、交点を表示すると判定する(ステップS2)。情報処理装置100は、第1コントローラ20Aの線LN1の最近点である点PT1と、第2コントローラ20Bの線LN2の最近点である点PT2との間の距離Dが閾値D0未満であるため、交点を表示すると判定する。
そして、情報処理装置100は、交点を表示させる(ステップS3)。情報処理装置100は、交点を表示するように表示装置10を制御する。まず、情報処理装置100は、交点の位置を演算により算出する。図2に示す状態ST3では、情報処理装置100は、線LN1の点PT1と、線LN2の点PT2との中点を交点IS1として算出する。なお、情報処理装置100は、最近点の中点に限らず、種々の位置を交点として算出してもよい。例えば、情報処理装置100は、線LN1の点PT1と、線LN2の点PT2とが重なる場合、その点PT1、PT2の位置を交点IS1として算出する。例えば、情報処理装置100は、線LN1の点PT1の位置と、線LN2の点PT2の位置とが一致する場合、その点PT1、PT2の位置を交点IS1として算出する。情報処理装置100は、交点IS1の位置に図1に示すようなマークMK1を表示するように表示装置10を制御する。すなわち、情報処理装置100は、マークMK1を交点IS1として表示するように表示装置10を制御する。
そして、交点IS1を表示させ所望の操作が完了したユーザ50は、交点IS1の表示を終了するために、第1コントローラ20A及び第2コントローラ20Bの調整を行う(ステップS4)。ユーザ50は、2本の線LN1、LN2が離れるように、第1コントローラ20A及び第2コントローラ20Bの調整を行う。
また、情報処理装置100は、2本の線LN1、LN2の距離Dが閾値D1よりも大きいかどうかを判定する。例えば、閾値D1は、2本の線LN1、LN2の交点の表示をやめるかどうかの判定に用いられる閾値である。閾値D1は、閾値D0よりも大きい値である。このように、交点の表示を開始する閾値D0よりも大きい値を交点の表示を終了する閾値D1とすることにより、誤差やユーザの手振れなどにより交点の表示と非表示が連続することを抑制することができる。
図2に示す状態ST4では、情報処理装置100は、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D1よりも大きいため、交点を非表示にすると判定する(ステップS5)。具体的には、情報処理装置100は、第1コントローラ20Aの線LN1の最近点である点PT1と、第2コントローラ20Bの線LN2の最近点である点PT2との間の距離Dが閾値D1よりも大きいため、交点を非表示にすると判定する。このように、閾値D0と閾値D1と間は交点表示モードがONの時(交点表示モード時)は遊びの領域になる。閾値D0と閾値D1と間は交点表示モードがOFFの時(交点非表示モード時)は不感帯になる。2本の線が近づいて交点表示モードになり、その後に交点位置を調整可能な遊びの領域を設けることで、ユーザ50は、交点位置の調整に集中することができる。
上述したように、情報処理装置100は、2本の線により位置を指示することにより、容易に所望の位置を指示することができる。情報処理装置100は、ユーザ50が示した2方向の各々に対応する線LN1、LN2に基づき定まる交点IS1にマークMK1を表示するように表示装置10を制御することにより、ユーザ50の指示に応じた柔軟な表示を可能にすることができる。また、情報処理装置100は、2本の線の間の距離に応じて交点の表示を切る変えることにより、ユーザの指示に応じた柔軟な表示を可能にすることができる。情報処理システム1により、ユーザ50は、3次元空間上で、制約なく自由に3次元位置を指定することが可能となる。
動的に軸を変化させながら位置を決めることができるので、ユーザは、3次元空間のどこでも素早く位置を指定できる。また、ユーザは、位置を指定したい場合には2本の線を近づけて交点を作り、やめたい場合には線を離すか線の向きを変えることで交点表示を終了できるので、ユーザの意図が直感的に反映される。
[1-2.実施形態に係る情報処理システムの構成]
図3に示す情報処理システム1について説明する。図3に示すように、情報処理システム1は、情報処理装置100と、表示装置10と、第1コントローラ20Aと、第2コントローラ20Bとが含まれる。なお、図3では、第1コントローラ20A及び第2コントローラ20Bの2個のコントローラ20を方向指示構成要素の一例として図示するが、情報処理システム1には、3個より多い数の方向指示構成要素が含まれてもよい。
情報処理システム1は、AR(拡張現実)やVR(仮想現実)やMR(複合現実)に関する情報処理が実行されるシステムである。例えば、情報処理システム1は、ARやVRのコンテンツを表示したり、編集したりするためのシステムである。
情報処理装置100と、表示装置10と、コントローラ20とは所定のネットワーク(図示省略)を介して、有線または無線により通信可能に接続される。図3は、本開示の実施形態に係る情報処理システムの構成例を示す図である。なお、図3に示した情報処理システム1には、複数の表示装置10や、複数の情報処理装置100が含まれてもよい。
情報処理装置100は、ユーザが示した複数の方向に基づき定まる位置である指示位置に、仮想オブジェクト用のマークを表示するように表示装置10を制御する情報処理装置である。情報処理装置100は、コントローラ20から取得したコントローラ情報を用いて表示装置10の表示を制御する。情報処理装置100は、表示装置10から取得した表示装置10の位置や姿勢に関する情報(表示装置情報)を用いて表示装置10の表示を制御する。
表示装置10は、情報を表示するためのコンピュータ(情報処理装置)である。例えば、表示装置10は、ヘッドマウントディスプレイであり、ユーザに対する情報の表示に用いられる。
表示装置10は、位置・姿勢検出部11と、赤外線受光部12と、加速度センサー13と、ジャイロセンサー14と、表示部15とを有する。位置・姿勢検出部11は、外線受光部12や加速度センサー13やジャイロセンサー14などの表示装置10が備えるセンサーから取得した各種センサー情報に基づいて、表示装置10の位置や姿勢を検出する。位置・姿勢検出部11は、外線受光部12や加速度センサー13やジャイロセンサー14などの表示装置10が備えるセンサーを制御することにより、表示装置10の位置や向き、傾き等、表示装置10の位置や姿勢に関する各種情報を検知する。姿勢検出部11は、表示装置10の位置や姿勢に関する情報(表示装置情報)を、表示制御部134に出力する。例えば、表示装置10は、表示装置10の位置や姿勢に関する各種情報を情報処理装置100に送信する。例えば、位置・姿勢検出部11は、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)やFPGA(Field Programmable Gate Array)等、種々のプロセッサにより実現されてもよい。
表示部15は、表示制御部134による制御により各種情報を表示するディスプレイである。例えば、表示装置10は、情報処理装置100から各種情報を取得し、取得した情報を表示部15により表示する。表示部15は、表示制御部134による制御に応じて、ユーザが示した複数の方向に基づき定まる指示位置に、仮想オブジェクト用のマークを表示する。表示部15は、表示制御部134により生成されたコンテンツを表示する。
なお、ユーザの視線が方向の指定に用いられる場合、表示装置10は、ユーザの視線位置を検出する視線検出部を有してもよい。視線検出部は、視線検出に関する種々の技術を適宜用いて、ユーザの視線を検出する。視線検出の技術としては、例えば、目の基準点(例えば、目頭や角膜反射などの目における動かない部分に対応する点)に対する、目の動点(例えば、虹彩や瞳孔などの目における動く部分に対応する点)の位置に基づいて、視線を検出する方法が用いられてもよい。なお、視線の検出は、上記に限らず任意の視線検出技術を用いて、ユーザの視線を検出してもよい。
第1コントローラ20Aや第2コントローラ20Bであるコントローラ20は、ユーザが方向を示すために用いられるデバイスである。コントローラ20は、ARやVRの分野で用いられるコントローラである。コントローラ20は、ARやVRの空間に対するユーザの操作を実行するために用いられる。コントローラ20は、表示装置10により表示されるARやVR等の空間の位置を指示したり、空間内の仮想オブジェクトを指示したりするために用いられる。
コントローラ20は、位置・姿勢検出部21と、赤外線受光部22と、加速度センサー23と、ジャイロセンサー24とを有する。位置・姿勢検出部21は、外線受光部22や加速度センサー23やジャイロセンサー24などのコントローラ20が備えるセンサーから取得した各種センサー情報に基づいて、コントローラ20の位置や姿勢を検出する。位置・姿勢検出部21は、外線受光部22や加速度センサー23やジャイロセンサー24などのコントローラ20が備えるセンサーを制御することにより、コントローラ20の位置や向き、傾き等、コントローラ20の位置や姿勢に関する各種情報を検知する。姿勢検出部11は、コントローラ20の位置や姿勢に関する情報(コントローラ情報)を、交点演算部132に出力する。例えば、コントローラ20は、コントローラ20の位置や姿勢に関する各種情報を情報処理装置100に送信する。例えば、位置・姿勢検出部21は、CPUやGPUやFPGA等、種々のプロセッサにより実現されてもよい。
なお、コントローラ20が実際のビームを放射する場合、コントローラ20は、レーザー光を放射する構成(光出力部等)を有する。
[1-3.実施形態に係る情報処理装置の構成]
次に、実施形態に係る情報処理を実行する情報処理装置の一例である情報処理装置100の構成について説明する。図4は、本開示の実施形態に係る情報処理装置100の構成例を示す図である。
図4に示すように、情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、情報処理装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
通信部110は、例えば、NICや通信回路等によって実現される。そして、通信部110は、所定のネットワーク(図示省略)と有線または無線で接続され、コントローラ20や表示装置10等の他の情報処理装置との間で情報の送受信を行う。
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、図4に示すように、交点関連閾値情報記憶部121と、オブジェクト関連閾値情報記憶部122と、方向指示情報記憶部123と、交点表示用情報記憶部124と、オブジェクト情報記憶部125とを有する。
実施形態に係る交点関連閾値情報記憶部121は、交点に関連する閾値に関する各種情報を記憶する。例えば、交点関連閾値情報記憶部121は、交点を表示するか否かの判定に用いる閾値に関する各種情報を記憶する。図5は、本開示の実施形態に係る交点関連閾値情報記憶部の一例を示す図である。図5に示す交点関連閾値情報記憶部121には、「閾値ID」、「用途」、「閾値」といった項目が含まれる。
「閾値ID」は、閾値を識別するための識別情報を示す。「用途」は、閾値の用途を示す。「閾値」は、対応する閾値IDにより識別される閾値の具体的な値を示す。なお、図5に示す例では、「閾値」は、「D0」、「Lmax」といった抽象的な符号を図示するが、「閾値」には、「0.8」や「5」といった具体的な値(数)を示す情報が記憶される。
図5の例では、閾値ID「TH11」により識別される閾値(第1閾値)の用途は、用途「交点表示モードON」であり、交点表示モードをONにするかどうかの判定に用いられる閾値であることを示す。例えば、閾値ID「TH11」により識別される閾値(第1閾値)は、交点を示すマークを表示するかどうかの判定に用いられる閾値である。閾値ID「TH11」により識別される閾値(第1閾値)の値は、閾値D0であることを示す。
また、閾値ID「TH12」により識別される閾値(第2閾値)の用途は、用途「交点表示モードOFF」であり、交点表示モードをOFFにするかどうかの判定に用いられる閾値であることを示す。例えば、閾値ID「TH12」により識別される閾値(第2閾値)は、交点を示すマークを非表示にするかどうかの判定に用いられる閾値である。閾値ID「TH12」により識別される閾値(第2閾値)の値は、閾値D1であることを示す。
また、閾値ID「TH13」により識別される閾値(第3閾値)の用途は、用途「交点最大距離」であり、交点を表示するかどうかの判定に用いられる閾値であることを示す。例えば、閾値ID「TH13」により識別される閾値(第3閾値)は、交点を示すマークを表示する範囲内の距離かどうかの判定に用いられる閾値である。閾値ID「TH13」により識別される閾値(第3閾値)の値は、閾値Lmaxであることを示す。
なお、交点関連閾値情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
ここで、閾値D0や閾値D1は適宜設定されてもよい。閾値D0や閾値D1は、閾値D0と閾値D1との間の大小関係を満たせば、種々の情報を適宜用いて設定されてもよい。例えば、情報処理装置100は、操作者(例えばユーザ50)のコントローラ20や手などから交点までの距離に応じて閾値D0や閾値D1の値を設定してもよい。例えば、操作者から近ければ閾値D0や閾値D1の値は小さく、遠くなると閾値D0や閾値D1の値が大きくなるように、情報処理装置100は、閾値D0や閾値D1の値を設定してもよい。例えば、閾値D1は、「交点までの距離×tan(5deg.)」により算出される値を目安として用いてもよい。例えば、下記の文献に開示されるように、手ぶれの最大角度が5度程度のため、上記のように算出される値を用いてもよい。
・安定化レーザポインタに関する基礎検討 <https://www.cst.nihon-u.ac.jp/research/gakujutu/54/pdf/E-7.pdf>
また、例えば、閾値D0は、2mと想定した場合、閾値D1は17cm程度なので、閾値DOはその10分の1程度(2cm程度)に設定されてもよい。なお、閾値D0は2本の線が瞬間的にでも交差すればよいため、小さい値でよい。
実施形態に係るオブジェクト関連閾値情報記憶部122は、オブジェクトに関連する閾値に関する各種情報を記憶する。例えば、オブジェクト関連閾値情報記憶部122は、オブジェクトの表示の判定に用いる閾値に関する各種情報を記憶する。図6は、本開示の実施形態に係るオブジェクト関連閾値情報記憶部の一例を示す図である。図6に示すオブジェクト関連閾値情報記憶部122には、「閾値ID」、「用途」、「閾値」といった項目が含まれる。
「閾値ID」は、閾値を識別するための識別情報を示す。「用途」は、閾値の用途を示す。「閾値」は、対応する閾値IDにより識別される閾値の具体的な値を示す。なお、図6に示す例では、「閾値」は、「Rmax」、「Dthreshold」といった抽象的な符号を図示するが、「閾値」には、「0.8」や「5」といった具体的な値(数)を示す情報が記憶される。
図6の例では、閾値ID「TH21」により識別される閾値(第4閾値)の用途は、用途「オブジェクト配置最小距離」であり、オブジェクトを配置する最小距離の判定に用いられる閾値であることを示す。例えば、閾値ID「TH21」により識別される閾値(第4閾値)は、仮想オブジェクトの配置位置が最小距離の範囲内かどうかの判定に用いられる閾値である。閾値ID「TH21」により識別される閾値(第4閾値)の値は、閾値Rminであることを示す。
また、閾値ID「TH22」により識別される閾値(第5閾値)の用途は、「オブジェクト配置最大距離」であり、オブジェクトを配置する最大距離の判定に用いられる閾値であることを示す。例えば、閾値ID「TH22」により識別される閾値(第5閾値)は、仮想オブジェクトの配置位置が最大距離の範囲内かどうかの判定に用いられる閾値である。閾値ID「TH22」により識別される閾値(第5閾値)の値は、閾値Rmaxであることを示す。
また、閾値ID「TH23」により識別される閾値(第6閾値)の用途は、用途「オブジェクト移動」であり、オブジェクトを移動させるかどうかの判定に用いられる閾値であることを示す。例えば、閾値ID「TH23」により識別される閾値(第6閾値)は、交点の位置の変更に応じて、オブジェクトを移動させるかどうかの判定に用いられる閾値である。閾値ID「TH23」により識別される閾値(第6閾値)の値は、閾値Lmaxであることを示す。
なお、オブジェクト関連閾値情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
実施形態に係る方向指示情報記憶部123は、方向の指示に関する各種情報を記憶する。図7は、本開示の実施形態に係る方向指示情報記憶部の一例を示す図である。例えば、方向指示情報記憶部123は、各方向に対応する各種情報を記憶する。図7に示す方向指示情報記憶部123には、「方向指示ID」、「指示構成要素」、「種別」といった項目が含まれる。
「方向指示ID」は、各方向を識別するための識別情報を示す。例えば、「方向指示ID」は、ユーザにより示された各方向を識別するための識別情報を示す。「指示構成要素」は、ユーザが方向を示す(指示する)ために用いた構成要素を識別する情報を示す。「指示構成要素」は、ユーザが方向を指示するために用いたコントローラ等のデバイス(装置)やユーザの身体に関する要素を識別する情報が記憶される。例えば、ユーザの視線により方向が指示される場合、「指示構成要素」には、「視線」が格納されてもよい。また、例えば、ユーザの指により方向が指示される場合、「指示構成要素」には、「指」が格納されてもよい。
「種別」は、指示構成要素のタイプ(種別)を示す。例えば、「種別」は、ユーザが方向を示す(指示する)ために用いた構成要素が、コントローラ等のデバイス(装置)やユーザの身体に関する要素などのタイプを示す。例えば、コントローラにより方向が指示される場合、「種別」には、「コントローラ」や「デバイス」等が格納される。例えば、ユーザの視線により方向が指示される場合、「種別」には、「視線」や「身体」等が格納される。また、例えば、ユーザの指により方向が指示される場合、「種別」には、「指」や「身体」等が格納される。
図7の例では、方向指示ID「DG1」により識別される方向(方向DG1)は、「20A」により識別される指示構成要素である第1コントローラ20Aであることを示す。方向DG1を示す第1コントローラ20Aの種別はコントローラであることを示す。
また、方向指示ID「DG2」により識別される方向(方向DG2)は、「20B」により識別される指示構成要素である第2コントローラ20Bであることを示す。方向DG2を示す第2コントローラ20Bの種別はコントローラであることを示す。
なお、方向指示情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
実施形態に係る交点表示用情報記憶部124は、交点表示に関する各種情報を記憶する。交点表示用情報記憶部124は、交点表示に用いる各種情報を記憶する。図8は、本開示の実施形態に係る交点表示用情報記憶部の一例を示す図である。図8に示す交点表示用情報記憶部124には、「交点表示モード」、「交点(指示位置)」、「マーク」、「対象情報」、「主従情報」といった項目が含まれる。
「交点表示モード」は、交点表示モードがONかOFFかを示す。「交点(指示位置)」は、交点の位置を示す。「マーク」は、指示位置に対応する位置に表示されるマークを示す。
「対象情報」は、方向に対応する幾何学的対象を示す情報が記憶される。「対象情報」には、「距離」、「対象#1」、「対象#2」といった項目が含まれる。「距離」は、各対象間の距離(対象距離)を示す。「対象#1」や「対象#2」は、方向に対応する幾何学的対象を示す。なお、「対象情報」には、「対象#1」、「対象#2」に限らず、「対象#3」等、対象の数に応じた項目が含まれてもよい。
「主従情報」には、「主従関係」、「主指示構成要素」、「従指示構成要素」といった項目が含まれる。「主従関係」は、各方向を指示する構成要素間の主従関係の有無を示す。
「主指示構成要素」は、主となる指示構成要素を示す。例えば、「主指示構成要素」は、その指示構成要素が示す方向(幾何学的対象)が主となることを示す。図1の例で第1コントローラ20Aが主たる指示構成要素である場合、「主指示構成要素」には、「20A」が記憶される。
「従指示構成要素」は、従となる指示構成要素を示す。例えば、「従指示構成要素」は、その指示構成要素が示す方向(幾何学的対象)が従となることを示す。図1の例で第2コントローラ20Bが主たる指示構成要素である場合、「従指示構成要素」には、「20B」が記憶される。
図8の例では、交点表示モードが「ON」であり、交点を示すマークを表示するモードであることを示す。また、交点(指示位置)が、「IS1」であり、交点が交点IS1であることを示す。また、マークが、「MK1」であり、交点IS1に対応する位置に表示されるマークがマークMK1であることを示す。
また、1つ目の対象が線LN1の点PT1であり、2つ目の対象が線LN2の点PT2であり、それらの対象間の距離が距離Dであることを示す。主従関係が無いことを示し、主指示構成要素及び従指示構成要素が設定されていないことを示す。
なお、交点表示用情報記憶部124は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
実施形態に係るオブジェクト情報記憶部125は、オブジェクトに関する各種情報を記憶する。例えば、オブジェクト情報記憶部125は、仮想オブジェクトに関する各種情報を記憶する。図9は、本開示の実施形態に係るオブジェクト情報記憶部の一例を示す図である。図9に示すオブジェクト情報記憶部125には、「オブジェクトID」、「オブジェクト情報」、「フラグ」といった項目が含まれる。「フラグ」には、「重力フラグ」といった項目が含まれる。なお、「フラグ」には、「重力フラグ」に限らず、オブジェクトに割り当てられるフラグであれば、例えば「透明フラグ」などどのようなフラグが含まれてもよい。
「オブジェクトID」は、オブジェクトを識別するための識別情報を示す。「オブジェクトID」は、仮想オブジェクトを識別するための識別情報を示す。また、「オブジェクト情報」は、オブジェクトIDにより識別されるオブジェクトに対応するオブジェクト情報を示す。なお、図9に示す例では、「オブジェクト情報」は、「OINF1」といった抽象的な符号を図示するが、「オブジェクト情報」には、オブジェクトのサイズや形状等に関連する各種情報が記憶される。「フラグ」には、オブジェクトIDにより識別されるオブジェクトに対応するフラグを示す。「重力フラグ」は、オブジェクトIDにより識別されるオブジェクトに重力フラグが付与されているか否かを示す。
図9の例では、オブジェクトID「VO1」により識別されるオブジェクト(仮想オブジェクトVO1)は、オブジェクト情報が「OINF1」であることを示す。仮想オブジェクトVO1は、重力フラグが「1」であることを示す。すなわち、仮想オブジェクトVO1は、配置位置の決定に重力の影響を受けることを示す。この場合、例えば、仮想オブジェクトVO1は、中空に配置された場合、その位置から重力方向に落下した位置に配置されることを示す。
また、オブジェクトID「VO41」により識別されるオブジェクト(仮想オブジェクトVO41)は、オブジェクト情報が「OINF41」であることを示す。仮想オブジェクトVO41は、重力フラグが「0」であることを示す。すなわち、仮想オブジェクトVO41は、配置位置の決定に重力の影響を受けないことを示す。この場合、例えば、仮想オブジェクトVO41は、中空に配置された場合、その位置に留まることを示す。
なお、オブジェクト情報記憶部125は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
図4に戻り、説明を続ける。制御部130は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、情報処理装置100内部に記憶されたプログラム(例えば、本開示に係る決定プログラム等の情報処理プログラム)がRAM等を作業領域として実行されることにより実現される。また、制御部130は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA等の集積回路により実現される。
図4に示すように、制御部130は、取得部131と、交点演算部132と、判定部133と、表示制御部134と、送信部135とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図4に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。また、制御部130が有する各処理部の接続関係は、図4に示した接続関係に限られず、他の接続関係であってもよい。
取得部131は、各種情報を取得する。取得部131は、外部の情報処理装置から各種情報を取得する。取得部131は、コントローラ20から各種情報を取得する。取得部131は、表示装置10等の他の情報処理装置から各種情報を取得する。
取得部131は、記憶部120から各種情報を取得する。取得部131は、交点関連閾値情報記憶部121やオブジェクト関連閾値情報記憶部122や方向指示情報記憶部123や交点表示用情報記憶部124やオブジェクト情報記憶部125から各種情報を取得する。
取得部131は、交点演算部132が算出した各種情報を取得する。取得部131は、判定部133が決定した各種情報を取得する。取得部131は、表示制御部134が受信した各種情報を取得する。
図2の例では、取得部131は、ユーザ50の動作に応じたコントローラ20の位置や向き等の姿勢を示すコントローラ情報取得する。取得部131は、状態ST1に対応するコントローラ20の位置や向き等の姿勢を示すコントローラ情報をコントローラ20から取得する。取得部131は、状態ST2に対応するコントローラ20の位置や向き等の姿勢を示すコントローラ情報をコントローラ20から取得する。
交点演算部132は、各種演算処理を行う。交点演算部132は、交点に関する演算処理を行う。交点演算部132は、各種情報を算出する。交点演算部132は、外部の情報処理装置からの情報や記憶部120に記憶された情報に基づいて、各種情報を算出する。交点演算部132は、記憶部120から、各種情報を算出する。交点演算部132は、交点関連閾値情報記憶部121やオブジェクト関連閾値情報記憶部122や方向指示情報記憶部123や交点表示用情報記憶部124やオブジェクト情報記憶部125から、各種情報を算出する。交点演算部132は、各種情報を特定する。交点演算部132は、シミュレーション結果をオブジェクト関連閾値情報記憶部122に格納する。交点演算部132は、各種情報を生成する。交点演算部132は、算出した情報に基づいて、各種情報を生成する。
図2の例では、交点演算部132は、2つの線LN1、LN2との間の距離を算出する。交点演算部132は、2つの線LN1、LN2に基づき定まる指示位置を演算により算出する。交点演算部132は、交点の位置を演算により算出する。交点演算部132は、線LN1の点PT1と、線LN2の点PT2との中点を交点IS1として算出する。
判定部133は、各種情報を判定する。判定部133は、各種情報を決定する。判定部133は、各種情報を特定する。例えば、判定部133は、外部の情報処理装置からの情報や記憶部120に記憶された情報に基づいて、各種情報を判定する。判定部133は、コントローラ20や表示装置10等の他の情報処理装置からの情報に基づいて、各種情報を判定する。判定部133は、交点関連閾値情報記憶部121やオブジェクト関連閾値情報記憶部122や方向指示情報記憶部123や交点表示用情報記憶部124やオブジェクト情報記憶部125に記憶された情報に基づいて、各種情報を判定する。
判定部133は、取得部131により取得された各種情報に基づいて、各種情報を判定する。判定部133は、交点演算部132により算出された各種情報に基づいて、各種情報を判定する。判定部133は、表示制御部134により受信された各種情報に基づいて、各種情報を判定する。判定部133は、取得部131により取得された各種情報に基づいて、各種情報を決定する。判定部133は、交点演算部132により算出された各種情報に基づいて、各種情報を判定する。判定部133は、表示制御部134により受信された各種情報に基づいて、各種情報を決定する。
判定部133は、各種情報を抽出する。判定部133は、各種情報を選択する。判定部133は、外部の情報処理装置からの情報や記憶部120に記憶された情報に基づいて、各種情報を抽出する。判定部133は、記憶部120から、各種情報を抽出する。判定部133は、交点関連閾値情報記憶部121やオブジェクト関連閾値情報記憶部122や方向指示情報記憶部123や交点表示用情報記憶部124やオブジェクト情報記憶部125から、各種情報を抽出する。
判定部133は、取得部131により取得された各種情報に基づいて、各種情報を抽出する。また、判定部133は、判定部133により決定された各種情報に基づいて、各種情報を抽出する。判定部133は、表示制御部134により受信された各種情報に基づいて、各種情報を抽出する。判定部133は、決定に基づいて、各種情報を変更する。取得部131により取得された情報に基づいて、各種情報を更新する。
判定部133は、2つの幾何学的対象の位置関係に基づいて、マークを表示するかどうかを判定する。判定部133は、2つの幾何学的対象間の距離である対象距離が第1閾値未満である場合、マークを表示すると判定する。判定部133は、マークの表示時に、対象距離が第1閾値よりも大きい第2閾値以下である場合、マークの表示を継続すると判定し、対象距離が第2閾値を超える場合、マークを表示しないと判定する。判定部133は、2方向のいずれかを指示する指示構成要素と、指示位置との間の距離である表示距離に基づいて、マークを表示するかどうかを判定する。判定部133は、表示距離が第3閾値を超える場合、マークを表示しないと判定する。
図2の例では、判定部133は、2つの線LN1、LN2の位置関係に基づいて、マークMK1を表示するかどうかを判定する。判定部133は、2本の線LN1、LN2の距離Dが閾値D0未満かどうかを判定する。判定部133は、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D0未満かどうかを判定する。判定部133は、距離Dが閾値D0未満である場合、交点を表示すると判定する。図2に示す状態ST1では、判定部133は、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D0以上であるため、交点を表示しないと判定する。
判定部133は、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D0未満かどうかを判定する。図2に示す状態ST2では、判定部133は、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D0未満であるため、交点を表示すると判定する。判定部133は、第1コントローラ20Aの線LN1の最近点である点PT1と、第2コントローラ20Bの線LN2の最近点である点PT2との間の距離Dが閾値D0未満であるため、交点を表示すると判定する。
判定部133は、2本の線LN1、LN2の距離Dが閾値D1よりも大きいかどうかを判定する。図2に示す状態ST4では、判定部133は、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D1よりも大きいため、交点を表示すると判定する。判定部133は、第1コントローラ20Aの線LN1の最近点である点PT1と、第2コントローラ20Bの線LN2の最近点である点PT2との間の距離Dが閾値D1よりも大きいため、交点を非表示にすると判定する。
表示制御部134は、各種情報の表示を制御する。表示制御部134は、表示装置10における各種情報の表示を制御する。表示制御部134は、情報を表示するデバイスの表示に関する種々の技術を用いて、表示装置10における各種情報の表示を制御する。表示制御部134は、ヘッドマウントディスプレイの表示に関する種々の技術を用いて、表示装置10における各種情報の表示を制御する。表示制御部134は、VR(Virtual Reality:仮想現実)やAR(Augmented Reality:拡張現実)に関する種々の技術を用いて、表示装置10における各種情報の表示を制御する。表示制御部134は、表示態様を制御する制御情報を含む画像等を生成する。表示制御部134は、図1中の像IM1を生成する。
表示制御部134は、指示構成要素の位置や向き等の姿勢を示す情報(指示構成要素情報)や表示装置10の位置や向き等の姿勢に関する情報(表示装置情報)を用いて、表示装置10における各種情報の表示を制御する。表示制御部134は、コントローラ20の位置や向き等の姿勢を示す情報(コントローラ情報)や表示装置10の位置や向き等の姿勢に関する情報(表示装置情報)を用いて、表示装置10における各種情報の表示を制御する。表示制御部134は、コントローラ情報や表示装置情報を用いて、コントローラ20の線の表示を制御する。表示制御部134は、コントローラ情報や表示装置情報を用いて、表示装置10の表示部15での仮想オブジェクトの表示を制御する。
表示制御部134は、コントローラ情報や表示装置情報を用いて、コントローラ20の線や仮想オブジェクトの描画を制御する。表示制御部134は、描画として表示装置10の表示部15に表示させる、左眼用画像と右眼用画像とからなる立体視オブジェクト(立体視画像)を生成する処理を行ってもよい。そして、表示制御部134は、生成された立体視オブジェクトを、表示装置10の表示部15に表示させる。表示制御部134は、指示構成要素が指し示す方向により定まる位置に対応する部分へのマークの描画を制御する。表示制御部134は、ユーザ50の視線の情報に基づいて、表示装置10の表示部15でのコントローラ20の線の表示を制御する。
表示制御部134は、外部の情報処理装置から取得した各種情報に基づいて表示を制御する。表示制御部134は、コントローラ20から取得した各種情報に基づいて表示を制御する。表示制御部134は、記憶部120に記憶される各種情報に基づいて表示を制御する。表示制御部134は、交点関連閾値情報記憶部121やオブジェクト関連閾値情報記憶部122や方向指示情報記憶部123や交点表示用情報記憶部124やオブジェクト情報記憶部125に記憶される各種情報に基づいて表示を制御する。
表示制御部134は、取得部131により取得された各種情報に基づいて、各種情報を受信する。表示制御部134は、交点演算部132により算出された各種情報に基づいて、各種情報を受信する。表示制御部134は、判定部133により決定された各種情報に基づいて、各種情報を受信する。
表示制御部134は、ユーザが示した複数の方向に基づき定まる位置である指示位置に、仮想オブジェクト用のマークを表示するように表示装置10を制御する。表示制御部134は、複数の方向の各々に対応する複数の幾何学的対象に基づき定まる指示位置に、マークを表示するように表示装置10を制御する。表示制御部134は、複数の幾何学的対象の位置関係に基づき定まる指示位置に、マークを表示するように表示装置10を制御する。
表示制御部134は、2方向である複数の方向の各々に対応する2つの幾何学的対象に基づき定まる指示位置に、マークを表示するように表示装置10を制御する。表示制御部134は、2方向である複数の方向のうち、第1の方向に沿う第1の幾何学的対象と、第2の方向に沿う第2の幾何学的対象とに基づき定まる指示位置に、マークを表示するように表示装置10を制御する。表示制御部134は、判定部133によりマークを表示すると判定された場合に、マークを表示するように表示装置10を制御する。
表示制御部134は、2つの幾何学的対象の関係に基づく指示位置に、仮想オブジェクトを表示するように表示装置10を制御する。表示制御部134は、2つの幾何学的対象の各々から決定される2つの点に基づき定まる指示位置に、マークを表示するように表示装置10を制御する。表示制御部134は、2つの幾何学的対象の距離が最も近い2つの点に基づき定まる指示位置に、マークを表示するように表示装置10を制御する。表示制御部134は、2つの点の位置が一致する場合、2つの点の位置を指示位置として、マークを表示するように表示装置10を制御する。表示制御部134は、2つの点の位置が異なる場合、2つの点を結ぶ線分上の位置を指示位置として、マークを表示するように表示装置10を制御する。
表示制御部134は、指示位置に基づく位置である配置位置に、仮想オブジェクトを表示するように表示装置10を制御する。表示制御部134は、指示位置が、複数の方向のいずれかを指示する指示構成要素から第1位置までの距離である第1距離と、指示構成要素から第1位置よりも遠い第2位置までの距離である第2距離との間に位置する場合、指示位置を配置位置として、仮想オブジェクトを表示するように表示装置10を制御する。表示制御部134は、指示位置が、第1距離以下である場合、第1位置を配置位置として、仮想オブジェクトを表示するように表示装置10を制御する。表示制御部134は、指示位置が、第2距離以上である場合、第2位置を配置位置として、仮想オブジェクトを表示するように表示装置10を制御する。
表示制御部134は、複数の方向の各々に対応する複数の線に基づき定まる指示位置に、マークを表示するように表示装置10を制御する。表示制御部134は、複数の方向のうち、少なくとも1方向に対応する面を含む複数の幾何学的対象に基づき定まる指示位置に、マークを表示するように表示装置10を制御する。表示制御部134は、ユーザが所持するコントローラにより指示される少なくとも1方向を含む複数の方向に基づき定まる指示位置に、マークを表示するように表示装置10を制御する。表示制御部134は、ユーザの身体により指示される少なくとも1方向を含む複数の方向に基づき定まる指示位置に、マークを表示するように表示装置10を制御する。表示制御部134は、ユーザの視線により指示される少なくとも1方向を含む複数の方向に基づき定まる指示位置に、マークを表示するように表示装置10を制御する。表示制御部134は、ユーザの指により指示される少なくとも1方向を含む複数の方向に基づき定まる指示位置に、マークを表示するように表示装置10を制御する。
図1の例では、表示制御部134は、ユーザ50がコントローラ20により示した2つの方向に基づき定まる指示位置に、仮想オブジェクト用のマークをMK1表示するように表示装置10を制御する。表示制御部134は、取得部131により取得されたコントローラ情報に基づいて、線LN1、LN2を表示するように、表示装置10を制御する。
図2の例では、表示制御部134は、取得部131により取得された状態ST1に対応するコントローラ情報に基づいて、線LN1、LN2を表示するように、表示装置10を制御する。表示制御部134は、取得部131により取得された状態ST2に対応するコントローラ情報に基づいて、線LN1、LN2を表示するように、表示装置10を制御する。表示制御部134は、交点を表示するように表示装置10を制御する。表示制御部134は、交点IS1に図1に示すようなマークMK1を交点IS1として表示するように表示装置10を制御する。
送信部135は、外部の情報処理装置へ各種情報を提供する。送信部135は、外部の情報処理装置へ各種情報を送信する。例えば、送信部135は、コントローラ20や表示装置10等の他の情報処理装置へ各種情報を送信する。送信部135は、記憶部120に記憶された情報を提供する。送信部135は、記憶部120に記憶された情報を送信する。
送信部135は、コントローラ20や表示装置10等の他の情報処理装置からの情報に基づいて、各種情報を提供する。送信部135は、記憶部120に記憶された情報に基づいて、各種情報を提供する。送信部135は、交点関連閾値情報記憶部121やオブジェクト関連閾値情報記憶部122や方向指示情報記憶部123や交点表示用情報記憶部124やオブジェクト情報記憶部125に記憶された情報に基づいて、各種情報を提供する。
送信部135は、取得部131により取得された各種情報に基づいて、各種情報を送信する。送信部135は、交点演算部132により算出された各種情報に基づいて、各種情報を送信する。送信部135は、判定部133により決定された各種情報に基づいて、各種情報を送信する。
送信部135は、表示制御部134により表示装置10を制御するための情報を表示装置10に送信する。送信部135は、表示制御部134により表示装置10を制御するために生成された制御情報を表示装置10に送信する。
[1-4.実施形態に係る情報処理の手順]
次に、図10を用いて、実施形態に係る情報処理の手順について説明する。図10は、本開示の実施形態に係る情報処理の手順を示すフローチャートである。具体的には、図10は、情報処理装置100による決定処理の手順を示すフローチャートである。
図10に示すように、情報処理装置100は、ユーザが示した複数の方向が所定の条件を満たすかどうかを判定する(ステップS101)。例えば、ユーザが示した2方向が所定の条件を満たすかどうかを判定する。
情報処理装置100は、ユーザが示した複数の方向が所定の条件を満たす場合(ステップS101:Yes)、複数の方向に基づき定まる位置に仮想オブジェクト用のマークを表示するように表示装置を制御する(ステップS102)。例えば、情報処理装置100は、ユーザが示した2方向が所定の条件を満たす場合、2方向に基づき定まる位置に仮想オブジェクト用のマークを表示するように表示装置10を制御する。
情報処理装置100は、ユーザが示した複数の方向が所定の条件を満たさない場合(ステップS101:No)、マークを表示するように表示装置を制御することなく、処理を終了する。
[1-5.交点表示]
次に、図11~図13Cを用いて交点表示についての詳細を説明する。
[1-5-1.交点表示に関する手順]
まず、図11を用いて、交点表示に関する手順について説明する。図11は、本開示の交点表示に関する手順を示すフローチャートである。なお、以下の説明では、情報処理システム1を処理の主体として説明するが、図11に示す各処理は、情報処理システム1の装置構成に応じて、情報処理装置100や表示装置10等、情報処理システム1に含まれるいずれの装置が行ってもよい。図11では、指示構成要素が2つのコントローラである場合を一例として説明する。
情報処理システム1は、2つのコントローラの位置・向きを取得する(ステップS201)。例えば、情報処理装置100は、第1コントローラ20A及び第2コントローラ20Bの位置及び向きを示す情報を取得する。
情報処理システム1は、各コントローラから線を表示する(ステップS202)。例えば、情報処理装置100は、第1コントローラ20A及び第2コントローラ20Bから線が表示されるように表示装置10の表示を制御する。
情報処理システム1は、2本の線の距離Dが閾値D0未満かどうかを判定する(ステップS203)。例えば、情報処理装置100は、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D0未満かどうかを判定する。
2本の線の距離Dが閾値D0未満ではない場合(ステップS203:No)、情報処理システム1は、2本の線の距離Dが閾値D1よりも大きいかどうかを判定する(ステップS204)。例えば、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D0以上である場合、情報処理装置100は、距離Dが閾値D1よりも大きいかどうかを判定する。
2本の線の距離Dが閾値D1よりも大きくない場合(ステップS204:No)、情報処理システム1は、ステップS209の処理を実行する。すなわち、2本の線の距離Dが閾値D1以下である場合、情報処理システム1は、交点表示モードがONであればONを維持し、交点表示モードがOFFであればOFFを維持し、ステップS209の処理を実行する。例えば、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D1以下である場合、情報処理装置100は、ステップS209の処理を実行する。
2本の線の距離Dが閾値D1よりも大きい場合(ステップS204:Yes)、情報処理システム1は、交点表示モードをOFFにした後(ステップS205)、ステップS209の処理を実行する。例えば、2本の線の距離Dが閾値D1よりも大きい場合、情報処理装置100は、交点表示モードがONであればOFFに変更し、交点表示モードがOFFであればOFFを維持し、ステップS209の処理を実行する。
2本の線の距離Dが閾値D0未満である場合(ステップS203:Yes)、情報処理システム1は、交点は前方にあるかどうかを判定する(ステップS206)。例えば、2本の線の距離Dが閾値D0未満である場合、情報処理装置100は、交点IS1が第1コントローラ20Aの前方にあるかどうかを判定する。例えば、2本の線の距離Dが閾値D0未満である場合、情報処理装置100は、交点IS1が第2コントローラ20Bの前方にあるかどうかを判定してもよい。
交点が前方にない場合(ステップS206:No)、情報処理システム1は、交点表示モードをOFFにした後(ステップS205)、ステップS209の処理を実行する。例えば、交点IS1が第1コントローラ20Aの前方にない場合、情報処理装置100は、交点表示モードがONであればOFFに変更し、交点表示モードがOFFであればOFFを維持し、ステップS209の処理を実行する。
交点が前方にある場合(ステップS206:Yes)、情報処理システム1は、交点はLmax以内かどうかを判定する(ステップS207)。例えば、交点IS1が第1コントローラ20Aの前方にある場合、情報処理装置100は、第1コントローラ20Aから交点IS1までの距離が閾値Lmax以内かどうかを判定する。
交点がLmax以内にない場合(ステップS207:No)、情報処理システム1は、交点表示モードをOFFにした後(ステップS205)、ステップS209の処理を実行する。例えば、第1コントローラ20Aから交点IS1までの距離が閾値Lmaxよりも大きい場合、情報処理装置100は、交点表示モードがONであればOFFに変更し、交点表示モードがOFFであればOFFを維持し、ステップS209の処理を実行する。
交点がLmax以内にある場合(ステップS207:Yes)、情報処理システム1は、交点表示モードをONにする(ステップS208)。例えば、第1コントローラ20Aから交点IS1までの距離が閾値Lmax以内である場合、情報処理装置100は、交点表示モードをONにする。
また、情報処理システム1は、交点表示モードはONかどうかを判定する(ステップS209)。例えば、情報処理装置100は、交点表示用情報記憶部124(図8参照)中の交点表示モードがONかどうかを判定する。
交点表示モードがONである場合(ステップS209:Yes)、情報処理システム1は、交点の表示位置をアップデートする(ステップS210)。例えば、交点表示モードがONである場合、情報処理装置100は、交点が非表示である場合、交点を表示し、交点が表示中である場合、交点の表示位置をアップデートする。
交点表示モードがONではない場合(ステップS209:No)、情報処理システム1は、交点の表示を消す(ステップS211)。例えば、交点表示モードがOFFである場合、情報処理装置100は、交点が非表示である場合、交点の非表示を維持し、交点が表示中である場合、交点の表示を消す。
また、情報処理システム1は、コントローラを置いたかどうかを判定する(ステップS212)。例えば、情報処理装置100は、ユーザが第1コントローラ20Aまたは第2コントローラ20Bを置いたかどうかを判定する。
コントローラを置いたと判定した場合(ステップS212:Yes)、情報処理システム1は、処理を終了する。例えば、ユーザが第1コントローラ20Aまたは第2コントローラ20Bを置いたと判定した場合、情報処理装置100は、処理を終了する。
コントローラを置いたと判定していない場合(ステップS212:No)、情報処理システム1は、ステップS201に戻って処理を繰り返す。例えば、ユーザが第1コントローラ20Aまたは第2コントローラ20Bを置いていないと判定した場合、情報処理装置100は、ステップS201に戻って処理を繰り返す。
[1-5-2.交点表示モード]
次に、図12A~図12Cを用いて、交点表示モードについて説明する。図12A~図12Cは、本開示の交点表示モードの一例を示す図である。図12A~図12Cの各々は、交点表示モードがONやOFFである場合の例を示す。具体的には、図12Aは、交点表示モードがONである場合の例を示す。また、図12B及び図12Cの各々は、交点表示モードがOFFである場合の例を示す。
まず、図12Aを用いて、交点表示モードがONである場合について説明する。図12Aでは、情報処理装置100は、2つの線LN1、LN2の距離Dが閾値D0未満であるため、2つの線LN1、LN2の交点IS11を算出する。情報処理装置100は、第1コントローラ20Aから交点IS11までの距離が閾値Lmax以内かどうかを判定する。閾値Lmaxは、交点を表示する範囲内の距離かどうかの判定に用いられる。
ここで、情報処理装置100は、2本の線の距離Dが閾値D0未満である第1条件、コントローラ20の前方に交点がある第2条件、及びコントローラ20から交点までの距離が閾値Lmax以内である第3条件を満たす場合、交点表示モードをONにする。図12Aでは、情報処理装置100は、2本の線LN1、LN2の距離Dが閾値D0未満であり、第1コントローラ20Aの前方に交点IS11があり、第1コントローラ20Aから交点IS11までの距離が閾値Lmax以内であるため、交点表示モードをONにする。なお、上記では第1コントローラ20Aが条件を満たす場合を示したが、情報処理装置100は、第1コントローラ20A及び第2コントローラ20Bの両方が条件を満たす場合に、交点表示モードをONにしてもよい。また、ここでいうコントローラ20の前方とは、コントローラ20の所定の位置(例えば図28中の原点21Aや原点21B等)を通る軸(方向)の向きのうち、一方側に臨む向きに対応する。
例えば、コントローラ20がレーザー光を放射する場合、そのレーザー光が放射される側が前方に対応する。また、コントローラ20のいずれの側を前方とするかは、コントローラ20の形状やユーザに利用態様等により適宜設定されてもよい。例えば、ユーザが所持した際にユーザが対象を指し示す際に対象の方に臨む側をコントローラ20の前方としてもよい。例えば、第1コントローラ20Aの前方は、図12C中の前面FF1が臨む側に対応する。また、第1コントローラ20Aの場合、前面FF1とは反対側の裏面BF1が臨む側が後方に対応する。例えば、第2コントローラ20Bの前方は、図12C中の前面FF2が臨む側に対応する。また、第2コントローラ20Bの場合、前面FF1とは反対側の裏面BF2が臨む側が後方に対応する。
例えば、情報処理装置100は、コントローラ20の位置や向きを示すコントローラ情報により、どの向きがコントローラ20の前方であるかを特定してもよい。また、情報処理装置100は、コントローラ20の前方のみに線が延びるように設定されてもよい。線の表現等については、下記の文献等に記載される種々の技術が用いられてもよい。
・OutlinAR: an assisted interactive model building system with reduced computational effort <http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.212.9258&rep=rep1&type=pdf>
次に、図12Bを用いて、2本の線の距離Dにより、交点表示モードがOFFである場合について説明する。図12Bは、交点表示モードがONであった図12Aの後の状態を示し、2本の線LN1、LN2が離れるように、第1コントローラ20A及び第2コントローラ20Bの調整された状態を示す。情報処理装置100は、本の線LN1、LN2の距離Dが閾値D1よりも大きいかどうかを判定する。図12Bでは、情報処理装置100は、2本の線LN1、LN2の距離Dが閾値D1よりも大きいと判定し、交点表示モードをOFFにする。すなわち、情報処理装置100は、交点表示モードをONからOFFに変更する。
次に、図12Cを用いて、2本の線の距離Dにより、交点表示モードがOFFである場合について説明する。図12Cでは、情報処理装置100は、2つの線LN1、LN2の距離Dが閾値D0未満であるため、2つの線LN1、LN2の交点IS12を算出する。ここで、図12Cでは、第1コントローラ20Aの前面FF1と第2コントローラ20Bの前面FF2とが互いに離れる向きに臨む。すなわち、第1コントローラ20Aの裏面BF1と第2コントローラ20Bの裏面BF2とが互いに近づく向きに臨む。このため、図12Cでは、コントローラ20の後方側に交点IS12が位置する。
そのため、情報処理装置100は、コントローラ20の前方に交点IS2があるという第2条件を満たさないと判定する。図12Cでは、情報処理装置100は、第1コントローラ20Aの前方に交点IS12がないため、交点表示モードをOFFにする。なお、上記では第1コントローラ20Aが条件を満たす場合を示したが、情報処理装置100は、第1コントローラ20A及び第2コントローラ20Bの少なくとも一方が条件を満たさない場合に、交点表示モードをOFFにしてもよい。例えば、交点表示モードがONで図12Bや図12Cの状態になった場合、情報処理装置100は、交点表示モードを抜け、交点表示モードをONからOFFに変更する。
上記のように、情報処理装置100は、ユーザが持つ2本のコントローラ20の位置から、コントローラ20の方向を示す線を表示させる。また、情報処理装置100は、指定したい位置を、2本のコントローラで指し示し交点を作る。情報処理装置100は、2本の線がコントローラ20の前方で一定距離(閾値D0)よりも近づいたら交点表示モードになる。また、情報処理装置100は、お互いの線の最近点の中点に交点を表示させる。また、情報処理装置100は、コントローラが平行になると、交点が無限遠になるのでコントローラから交点位置までの最大距離(閾値Lmax)を事前に設定する。情報処理装置100は、2本の線の距離が閾値D1を超えるか、コントローラ20の後方で閾値D0よりも近づき交点を作った場合には、交点表示モードから抜ける。
[1-5-3.交点表示態様]
次に、図13A~図13Cを用いて、交点表示の態様について説明する。図13A~図13Cは、本開示の交点表示の態様の一例を示す図である。図13A~図13Cの各々は、各種のマークによる交点の表示態様の例を示す。なお、図13A~図13Cは、交点表示モードがONである状態を示す。
まず、図13Aを用いて、点マークによる交点の表示態様について説明する。図13Aでは、点状のマークMK11を交点IS11に重なる位置に表示することにより、交点IS11が表示される。情報処理装置100は、マークMK11を交点IS11として表示するように表示装置10を制御する。このように、情報処理システム1は、球や明かりで点(交点)を示してもよい。
次に、図13Bを用いて、リングマークによる交点の表示態様について説明する。図13Bでは、円環状のマークMK12の中心が交点IS11に重なるように表示することにより、交点IS11の位置が見やすいように、マークMK12が表示される。情報処理装置100は、中央が空いたリング(円環)のマークMK12を交点IS11の位置を中心として表示するように表示装置10を制御する。
次に、図13Cを用いて、線のうち、交点から所定の範囲内の部分(以下「近傍部分」ともいう)を他の部分とは異なる表示態様にすることによる交点の表示態様について説明する。図13Cでは、線LN1、LN2のうち、交点IS11の近傍の部分にマークMK13、MK14を表示することにより、交点IS11の部分が認識されやすいように、マークMK13、MK14が表示される。情報処理装置100は、線LN1の近傍部分にマークMK13を重ねて表示し、線LN2の近傍部分にマークMK14を重ねて表示するように表示装置10を制御する。マークMK13、MK14は、図形に限らず、他の部分との表示態様が異なることを示すものである。例えば、マークMK13、MK14は、光らせるような表示態様であってもよいし、線LN1やLN2の他の部分と異なる色に変えるような表示態様であってもよい。また、マークMK13、MK14は、近づいたら濃い色になり、遠くなったら薄い色になるような表示態様であってもよい。
[1-6.主従関係]
なお、指示構成要素間には主従関係があってもよい。このように、複数の指示構成要素には、主となるもの(主指示構成要素)と従(従指示構成要素)となるものがあってもよい。この点について、図14及び図15を用いて説明する。
[1-6-1.コントローラと視線]
まず、図14を用いて、コントローラと視線である指示構成要素間に主従関係がある場合の交点表示に関する手順について説明する。このように、方向を示す指示構成要素は、コントローラと他の種別の指示構成要素との組合せであってもよい。
図14は、本開示の視線を用いた交点表示の一例を示す図である。具体的には、図14は、ユーザ50が所持するコントローラ20が主たる指示構成要素であり、ユーザ50の目51の視線が従たる指示構成要素である場合を示す。なお、以下の説明では、情報処理システム1を処理の主体として説明するが、図14に示す各処理は、情報処理システム1の装置構成に応じて、情報処理装置100や表示装置10等、情報処理システム1に含まれるいずれの装置が行ってもよい。
図14に示す状態ST21~ST24の各々は、ユーザ50によるコントローラ20や目51(視線)の調整に基づく、方向の変化に対応する線LN21や視線LN22(以下単に「線LN22」とする)の変化を示す。図14では、ユーザ50が指し示したい位置を対象TGで示すが、対象TGは説明のための図示であり、表示装置10に表示される情報ではないものとする。図14は、空中での座標位置(対象TG)を指定する場合を示す。
図14に示す状態ST21は、例えば、ユーザ50が1つのコントローラ20を持ち、コントローラ20から線LN21が表示された状態を示す。情報処理装置100は、ユーザ50が所持したコントローラ20から線LN21を表示するように、表示装置10を制御する。
ユーザ50は、所望の位置を指定するために、コントローラ20の調整を行う(ステップS21)。これにより、ユーザ50は、コントローラ20の線LN21により指定したい位置を指そうとする。図14に示す状態ST22は、ユーザ50によるコントローラ20の調整により、線LN21が対象TGの位置を通る状態に対応する。情報処理装置100は、状態ST22に対応するコントローラ20の位置や向きを示すコントローラ情報をコントローラ20から取得し、取得したコントローラ情報に基づいて、線LN21を表示するように、表示装置10を制御する。
また、ユーザ50は、目51(視線)を対象TGの方に向ける(ステップS22)。これにより、ユーザ50は、目51(視線)が対象TGの方を向くようにする。図14に示す状態ST23は、ユーザ50による目51(視線)の調整により、目51(視線)に対応する線LN22が対象TGの位置を通る状態に対応する。なお、図14中に点線で示す線LN22は非表示でもよい。すなわち、情報処理装置100は、線LN22を表示装置10に表示させてもよいし、表示させなくてもよい。
そして、情報処理装置100は、コントローラ20の線LN21と、目51(視線)の線LN22との間の距離Dが閾値D0未満かどうかを判定する。図14に示す状態ST2では、情報処理装置100は、コントローラ20の線LN21と、目51(視線)の線LN22との間の距離Dが閾値D0未満であるため、交点を表示すると判定する(ステップS23)。
このように、情報処理装置100は、コントローラ20の線LN21と目51(視線)の線LN22との距離Dが一定距離(閾値D0)以内の場合に、交点表示モードにする。また、コントローラ20(の線等)が平行になると、交点が無限遠になるので交点位置の最大距離(閾値Lmax)を事前に設定する。また、視線は常に微小な動きをしているため、情報処理装置100は、コントローラ20の線LN21上の最近点に交点を表示するように、表示装置10を制御する。また、人間の視覚調整の仕組み上、何も無いところで焦点を合わせることは出来ないため、情報処理システム1は、先にコントローラ20の線を表示して、ユーザ50が視線で位置を指定できるようにする。上記により、ユーザ50は、交点を作るためにコントローラ20の向きが平行になっても、交点が遠距離に行かないので交点を見失うことなく操作することができる。
そして、ユーザ50は、コントローラ20や目51(視線)の調整を行う(ステップS24)。ユーザ50は、対象TGから2本の線LN21、LN22が離れるように、コントローラ20や目51(視線)の調整を行う。
また、情報処理装置100は、2本の線LN21、LN22の距離Dが閾値D1よりも大きいかどうかを判定する。図14に示す状態ST24では、情報処理装置100は、コントローラ20の線LN21と、目51(視線)の線LN22との間の距離Dが閾値D1よりも大きいため、交点を非表示にすると判定する(ステップS25)。そして、情報処理装置100は、交点表示モードをOFFにする。このように、情報処理装置100は、コントローラ20と目51(視線)の2本の線LN21、LN22の距離Dが閾値D1を超えた場合、交点表示モードから抜ける。また、情報処理装置100は、図12Cと同様に、コントローラ20の後方に交点が位置する場合には、交点表示モードから抜ける。また、コントローラ20の後方で距離Dが閾値D0よりも近づき交点を作った場合には、交点表示モードから抜ける。コントローラ20の後方に交点が位置する場合には、情報処理装置100は、交点表示モードをOFFにする。また、情報処理システム1は、ユーザ50がコントローラ20を置いたら処理を終了する。
なお、閾値D0や閾値D1の値は、方向を示す指示構成要素の種別(コントローラ、視線など)の組み合わせに応じて変更してもよい。
[1-6-2.指さしと視線]
上記のように、指示構成要素は種々の種別であってもよい。例えば、指示構成要素にコントローラ20が含まれてなくてもよい。例えば、指示構成要素として、指52(図26参照)による指さしや目51(視線)が用いられてもよい。この点について説明する。なお、図14とは、指示構成要素がコントローラ20からユーザ50の指52に変更された点以外は同様であるため、適宜説明を省略する。
このように、方向の指示に手(指)を用いる場合、情報処理システム1は、ユーザの手の形状などを検知する所定のセンサーにより、ユーザの指さしの態様(位置や向きなど)を検知してもよい。例えば、情報処理システム1は、画像センサーにより、ユーザの指さしの態様(位置や向きなど)を検知してもよい。
まず、ユーザ50は、手を方向を指し示す形状にする。これにより、ユーザ50の手(指52)から線が表示される。そして、ユーザ50は、手で指定したい位置を指し示す。情報処理システム1は、手の線と視線の直線との距離が一定距離(閾値D0)以内の場合に、交点表示モードにする。情報処理システム1は、手と視線の2本の線の距離が閾値D1を超えるか、手の後方で距離が閾値D0よりも近づき交点を作った場合には、交点表示モードから抜ける。また、情報処理システム1は、手の方向を指し示す形状をやめたら、処理を終了する。
[1-6-3.交点表示例]
次に、図15を用いて、指示構成要素間に主従関係がある場合の交点表示について説明する。図15は、本開示の主従関係が有る場合の交点表示の一例を示す図である。具体的には、図15は、情報処理装置100がコントローラ20の線LN21上の最近点に交点を表示するように、表示装置10を制御する場合の一例を示す。
図15では、情報処理装置100は、線LN21の最近点を交点IS31として算出する。例えば、情報処理装置100は、線LN21と線LN22との間の距離Dの算出対象となる線LN21側の端点(最近点)を交点IS31として算出する。そして、情報処理装置100は、線LN21上の交点IS31の位置にマークMK31を表示するように表示装置10を制御する。このように、情報処理装置100は、指示構成要素間に主従関係が有る場合、主たる指示構成要素の線に対応する位置を交点としてもよい。
[1-7.仮想オブジェクト]
ここで、仮想オブジェクトの配置について、図16~図19を用いて説明する。
[1-7-1.仮想オブジェクトの配置]
まず、図16を用いて、仮想オブジェクトの配置に関する手順について説明する。図16は、本開示の仮想オブジェクトの配置の一例を示す図である。具体的には、図16は、仮想オブジェクトVO1を所望の位置に配置するための処理を示す図である。また、図17では、ユーザ50が仮想オブジェクトVO1を配置したい位置を対象TGで示すが、対象TGは説明のための図示であり、表示装置10に表示される情報ではないものとする。
図16に示す状態ST31~ST34の各々は、ユーザ50によるコントローラ20の調整に基づく、方向の変化に対応する線LN1や線LN2や仮想オブジェクトVO1の変化を示す。図16の例では、第1コントローラ20Aがボタン25を有する場合を示す。なお、図2と同様の点については適宜説明を省略する。
図16の状態ST31に示すように、ユーザ50は、第1コントローラ20Aの線LN1により、仮想オブジェクトVO1を指し示す(ステップS31)。図16に示す状態ST31では、1つ目のコントローラ20(第1コントローラ20A)で選択したい仮想オブジェクトVO1を指し示す。情報処理装置100は、状態ST31に対応するコントローラ20の位置や向きを示すコントローラ情報をコントローラ20から取得し、取得したコントローラ情報に基づいて、線LN1、LN2を表示するように、表示装置10を制御する。
図16に示す状態ST32では、ユーザ50は、第1コントローラ20Aのボタン25を押して、仮想オブジェクトVO1を選択する。これにより、情報処理装置100は、第1コントローラ20Aが仮想オブジェクトVO1を掴んだと判定する。例えば、情報処理装置100は、第1コントローラ20Aに仮想オブジェクトVO1を対応付けたり、第1コントローラ20Aの把持フラグを変更したりする。これにより、情報処理装置100は、仮想オブジェクトVO1が第1コントローラ20Aの線LN1上に配置(固定)され、線LN1の移動に連動して応じて移動するように、表示装置10を制御する。
ユーザ50は、所望の位置を指定するために、第1コントローラ20Aの調整を行う(ステップS32)。ユーザ50は、第1コントローラ20Aで指定したい位置の方向を指し示す。図16の状態ST33に示すように、ユーザ50は、対象TGを線LN1が通るように、第1コントローラ20Aの調整を行う。図16の状態ST33では、仮想オブジェクトVO1が第1コントローラ20Aの線LN1上に固定されているため、線LN1の位置の変更に応じて、仮想オブジェクトVO1の位置も変更される。図16の状態ST33では、仮想オブジェクトVO1の位置は、線LN1の位置の変更に応じて、第2コントローラ20Bに近づく方向(右方向)に移動する。
なお、情報処理装置100は、仮想オブジェクトの位置が移動中は、仮想オブジェクトの表示態様を変更して表示するように、表示装置10を制御する。例えば、情報処理装置100は、仮想オブジェクトを移動し配置する際、移動中の仮想オブジェクトの表示を弱めてもよい。例えば、情報処理装置100は、移動中の仮想オブジェクトの透過度を上げることにより、移動中の仮想オブジェクトの表示を弱める。このように、仮想オブジェクトを移動し配置する際、移動中の仮想オブジェクトの表示を弱めることで、ユーザは、実世界のモノや周りに配置されている仮想オブジェクトとの配置や位置関係を確認しながら仮想オブジェクトを移動させることができる。
また、例えば、情報処理装置100は、仮想オブジェクトを移動し配置する際、移動中の仮想オブジェクトの表示を強めてもよい。このように、移動中の仮想オブジェクトの表示を強めることで、ユーザは、同じような仮想オブジェクトの中で目立たせたり(視認性を高めたり)、奥の方への配置をしやすくすることができる。
そして、ユーザ50は、所望の位置を指定するために、第2コントローラ20Bの調整を行う(ステップS33)。ユーザ50は、2つ目のコントローラ20(第2コントローラ20B)で1つ目のコントローラ20(第1コントローラ20A)上の移動させたい位置(対象TG)に近づけて交点表示モードを作る。図16の状態ST34に示すように、ユーザ50は、第1コントローラ20Aの線LN1上の所望の位置(対象TGに対応)を線LN2が通るように、第2コントローラ20Bの調整を行う。
そして、情報処理装置100は、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D0未満かどうかを判定する。図16に示す状態ST32では、情報処理装置100は、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D0未満であるため、交点表示モードをONにすると判定する。例えば、情報処理装置100は、図12と同様に、第1コントローラ20Aの前方で距離Lmaxの範囲内に交点が位置するため、交点表示モードをONにすると判定する。情報処理装置100は、線LN1の近傍部分にマークMK41を重ねて表示し、線LN2の近傍部分にマークMK42を重ねて表示するように表示装置10を制御する。このように、ユーザ50は、2つのコントローラ20で交点の位置を調整する。また、情報処理装置100は、交点が1つ目のコントローラ(第1コントローラ20A)の線LN1上を移動するように、交点を算出する。また、コントローラが平行になると、無限遠になるので最大距離が事前に設定されるが、この点については後述する。
そして、情報処理装置100は、線LN1と線LN2との交点の位置に仮想オブジェクトVO1を表示するように表示装置10を制御する。これにより、線LN1と線LN2との交点の位置に仮想オブジェクトVO1が移動する。
配置したい位置に仮想オブジェクトVO1を配置したユーザ50は、第1コントローラ20Aのボタン25から指を離して、仮想オブジェクトVO1を指定した位置に配置する(ステップS34)。これにより、情報処理装置100は、第1コントローラ20Aによる仮想オブジェクトVO1の把持が解除されたと判定する。なお、情報処理装置100は、仮想オブジェクトVO1が植物や椅子など重力に従う仮想オブジェクトである場合、机や床の上に配置する。また、情報処理装置100は、仮想オブジェクトVO1がゴーストや鳥など重力に従わない仮想オブジェクトである場合、空間上に配置する。例えば、情報処理装置100は、仮想オブジェクトVO1の重力フラグに応じて、上記のいずれかの処理を実行する。
また、遠くで交点を作られると、仮想オブジェクトの位置が急激に変化するため、情報処理装置100は、コントローラ20から一定範囲内で交点を作成してもよいが、この点の詳細については後述する。また、一定範囲については、仮想オブジェクトの手前と奥で距離を変えてもよい。また、情報処理装置100は、仮想オブジェクトを掴んでいるコントローラ20の線(以下「把持線」ともいう)と掴んでいないコントローラ20の線(以下「非把持線」ともいう)とを異なる表示態様で表示するように表示装置10を制御してもよい。例えば、情報処理装置100は、把持線と非把持線との色や太さなど見た目を変えて、どちらで掴んでいるのか分かりやすくしてもよい。例えば、情報処理装置100は、把持線の色を赤にし、非把持線の色を黒にしてもよい。例えば、情報処理装置100は、把持線を非把持線よりも太くしてもよい。
また、上述のように仮想オブジェクトの移動中は、種々の表示態様であってもよい。例えば、情報処理装置100は、移動中も仮想オブジェクトをそのまま表示させてもよい。情報処理装置100は、実世界のモノや周りに配置されている仮想オブジェクトとの配置や位置関係を確認しながら配置したい場合には、仮想オブジェクトをそのまま表示する。
また、例えば、情報処理装置100は、移動中の仮想オブジェクトの表示を弱めてもよい。例えば、情報処理装置100は、仮想オブジェクトの輪郭だけの表示や半透明にする。情報処理装置100は、実世界のモノや周りに配置されている仮想オブジェクトとの配置や位置関係を確認しつつ、移動中の軌跡や位置調整も行いたい場合に、仮想オブジェクトの輪郭表示や半透明にする。例えば、情報処理装置100は、仮想オブジェクトの表示を消してもよい。この場合、情報処理装置100は、交点のみを表示させてもよい。情報処理装置100は、移動中の軌跡や位置調整を重視し、見やすくしたい場合には、仮想オブジェクトの表示を消す。
また、例えば、情報処理装置100は、移動中の仮想オブジェクトの表示を強めてもよい。情報処理装置100は、色味を強めたり、輝度値を上げたりしてもよい。情報処理装置100は、アイコンなどの追加の表示と組み合わせてもよい。情報処理装置100は、同じようなオブジェクトが並んでいる場合に、選択している仮想オブジェクトが分かりやすくするために強調表示する。また、情報処理装置100は、仮想オブジェクトが並んでいる場所の奥に配置したい場合に、他の仮想オブジェクトの色味を抑えたり透過度を上げることで、仮想オブジェクトの奥でも配置しやすくする。
[1-7-2.仮想オブジェクトの配置範囲]
次に、図17を用いて、仮想オブジェクトの配置範囲について説明する。図17は、本開示の仮想オブジェクトの配置範囲の一例を示す図である。なお、図16と同様の点については適宜説明を省略する。
上述したように、コントローラ20から遠方に交点が位置した場合、仮想オブジェクトの位置が急激に変化するため、情報処理装置100は、コントローラ20から一定距離内である場合、交点を生成する。また、仮想オブジェクトの位置が手前過ぎ、すなわちコントローラ20に近すぎてもても見づらいため、情報処理装置100は、交点の位置がコントローラ20の近傍ではない場合、交点を生成する。
図17の例では、情報処理装置100は、算出した交点の位置が、第1コントローラ20Aからの距離が所定範囲(範囲R41)内である場合、交点を生成する。情報処理装置100は、第1コントローラ20Aの近傍NR41や第1コントローラ20Aの遠方を除く範囲R41に交点の位置がある場合、交点を生成する。すなわち、情報処理装置100は、交点の位置が、第1コントローラ20Aの近傍NR41や第1コントローラ20Aの遠方である場合、交点表示モードをONにしない。
このように、仮想オブジェクトを移動する際、コントローラの向きが平行になって仮想オブジェクトが遠くに飛んでいくのを防ぐことができ、コントローラが手元で交点を作って仮想オブジェクトを把握しづらいという状況がおこらない。情報処理装置100は、交点を表示する範囲を範囲R41に限ることにより、コントローラ20等の指示構成要素の線が平行になった場合であっても、仮想オブジェクトが遠くに飛んでいくのを抑制し、ユーザ50の手元に交点があり仮想オブジェクトを把握しづらくなることを抑制することができる。
例えば、2本の線が平行、もしくは、平行に近くなると、指し示す位置(交点)が無限遠もしくは無限遠近くになるので、意図しない位置になったり指し示す位置に気づけなくなったりしてしまうという課題が発生する。また、遠方で位置を指定する場合、少しの動きで位置がずれてしまうので、位置の指定が困難になるという課題がある。上記のように、情報処理装置100は、交点を表示する範囲を範囲R41に限ることにより、上記のような課題を解決することができる。
[1-7-3.交点との配置位置]
次に、図18を用いて、仮想オブジェクトの配置位置と交点との関係について説明する。図18は、本開示の仮想オブジェクトの配置位置と交点との関係を示す図である。なお、図16及び図17と同様の点については適宜説明を省略する。
情報処理装置100は、コントローラ20から交点までの距離(「距離R」ともいう)に応じて、仮想オブジェクトの表示位置を決定する。情報処理装置100は、距離Rが閾値Rminよりも大きく、閾値Rmaxよりも小さい場合、交点(距離R)の位置を仮想オブジェクトの表示位置を決定する。このように、情報処理装置100は、交点(例えば指示位置)が、コントローラ20から第1位置までの距離である第1距離(閾値Rmin)と、コントローラ20から第1位置よりも遠い第2位置までの距離である第2距離(閾値Rmax)との間に位置する場合、交点(距離R)の位置に仮想オブジェクトを配置する。
図18の例では、情報処理装置100は、交点が第1コントローラ20Aの線L41と第2コントローラ20Bの線L421との交点IS411である場合、交点IS411の位置に仮想オブジェクトVO41を配置する。例えば、情報処理装置100は、第1コントローラ20Aと交点IS411との間の距離R(図18中の符号DS1に対応)が閾値Rminよりも大きく、閾値Rmaxよりも小さいため、交点IS411の位置に仮想オブジェクトVO41を表示するように表示装置10を制御する。
また、図18の例では、情報処理装置100は、交点が第1コントローラ20Aの線L41と第2コントローラ20Bの線L422との交点IS412である場合、閾値Rminの位置に仮想オブジェクトVO42を配置する。例えば、情報処理装置100は、第1コントローラ20Aと交点IS412との間の距離Rが閾値Rmin以下であるため、線LN41上で第1コントローラ20Aからの距離が閾値Rminの位置に仮想オブジェクトVO42を表示するように表示装置10を制御する。情報処理装置100は、交点(例えば指示位置)が、第1距離(閾値Rmin)以下である場合、第1位置を配置位置として、仮想オブジェクトを表示するように表示装置10を制御する。
このように、情報処理装置100は、コントローラ20から交点までの距離が閾値Rmin以下の場合、仮想オブジェクトの表示位置を閾値Rminの位置とすることにより、ユーザ50の手元に交点があり仮想オブジェクトを把握しづらくなることを抑制することができる。
また、図18の例では、情報処理装置100は、交点が第1コントローラ20Aの線L41と第2コントローラ20Bの線L42との交点IS41である場合、閾値Rmaxの位置に仮想オブジェクトVO43を配置する。例えば、情報処理装置100は、第1コントローラ20Aと交点IS41との間の距離Rが閾値Rmax以上であるため、線LN41上で第1コントローラ20Aからの距離が閾値Rmaxの位置に仮想オブジェクトVO43を表示するように表示装置10を制御する。情報処理装置100は、交点(例えば指示位置)が、第2距離(閾値Rmax)以上である場合、第2位置を配置位置として、仮想オブジェクトを表示するように表示装置10を制御する。
このように、情報処理装置100は、コントローラ20から交点までの距離が閾値Rmax以上の場合、仮想オブジェクトの表示位置を閾値Rmaxの位置とすることにより、仮想オブジェクトが遠くに飛んでいくのを抑制することができる。
[1-7-4.仮想オブジェクトの移動]
次に、図19を用いて、仮想オブジェクトの移動について説明する。図19は、本開示の仮想オブジェクトの移動の一例を示す図である。具体的には、図19は、仮想オブジェクトを最終的に配置する一例を示す図である。なお、図16~図18と同様の点については適宜説明を省略する。
図19中の仮想オブジェクトVO50は、移動前の位置(変更前位置)に位置する仮想オブジェクトを示す。また、図19中の仮想オブジェクトVO51は、移動後の位置(変更後位置)に位置する仮想オブジェクトを示す。なお、仮想オブジェクトVO50及び仮想オブジェクトVO51は、仮想オブジェクトの位置の違いを示すためのものであり、同じ仮想オブジェクトである。以下、仮想オブジェクトVO50及び仮想オブジェクトVO51を区別しない場合、「仮想オブジェクトVO5」と記載する。
図19では、ユーザ50が第1コントローラ20Aのボタン25を押して、仮想オブジェクトVO50を選択し、情報処理装置100が第1コントローラ20Aにより仮想オブジェクトVO50が把持された判定した状態を示す。これにより、情報処理装置100は、仮想オブジェクトVO50が第1コントローラ20Aの線LN50上に配置(固定)され、線LN50の移動に連動して応じて移動するように、表示装置10を制御する。なお、図19では、変更前位置に対応する仮想オブジェクトVO50や線LN50を点線で示す。
ここで、情報処理装置100は、閾値Dthresholdを用いて、第1コントローラ20Aの線LN50の移動に応じて、仮想オブジェクトVO5の位置を移動させるかを判定する。閾値Dthresholdは、オブジェクトの移動の判定に用いられる式地位である。情報処理装置100は、仮想オブジェクトの移動距離(以下「移動距離MD」とする)が閾値Dthreshold以上である場合、仮想オブジェクトの位置を移動させる。図19の例では、情報処理装置100は、第1コントローラ20Aの線LN50の位置変更に応じて、仮想オブジェクトVO50の位置から閾値Dthreshold以上移動した場合、仮想オブジェクトVO5の位置を移動させる。
例えば、情報処理装置100は、仮想オブジェクトVO5の移動距離MDが閾値Dthreshold未満である場合、移動前の位置(図19の仮想オブジェクトVO50の位置)に戻るように、表示装置10を制御する。これにより、情報処理装置100は、微小な手ぶれやズレを吸収できるようにする。
例えば、情報処理装置100は、仮想オブジェクトVO50の移動距離MD(図19中の符号MD51に対応)が閾値Dthreshold以上である場合、移動後の位置(変更後位置)に仮想オブジェクトVO5(図19の仮想オブジェクトVO51)を配置する。図19の例では、情報処理装置100は、第1コントローラ20Aの線の位置が、線LN50から線LN51に変更したことに応じて、仮想オブジェクトVO51の位置に仮想オブジェクトVO5を配置する。
このように、情報処理装置100は、閾値Dthresholdのような閾値を用いて、仮想オブジェクトの移動を実行することにより、微小な手ブレやズレが吸収することができる。
なお、情報処理装置100は、仮想オブジェクトに「重力」フラグがある場合、移動後の仮想オブジェクトの位置(変更後位置)から重力方向に落ちるように、表示装置10を制御する。例えば、仮想オブジェクトが植物や椅子など重力によって床や机などの上に配置されるものである場合、情報処理装置100は、仮想オブジェクトの位置から重力方向に落ちるように、表示装置10を制御する。
また、情報処理装置100は、仮想オブジェクトに「重力」フラグが無い場合、移動後の仮想オブジェクトの位置(変更後位置)に配置されるように、表示装置10を制御する。例えば、ゴーストや鳥、蝶々など空中を自由に動くことが可能なものである場合、情報処理装置100は、仮想オブジェクトの位置に配置されるように、表示装置10を制御する。
[1-7-5.仮想オブジェクトの移動の手順]
次に、図20~図23を用いて、仮想オブジェクトの移動の手順について説明する。図20~図22は、本開示の仮想オブジェクト移動の手順を示すフローチャートである。また、図23は、本開示の交点モード処理の手順を示すフローチャートである。具体的には、図23は、図21に示す交点モード処理の詳細を示すフローチャートである。なお、以下の説明では、情報処理システム1を処理の主体として説明するが、図20~図23に示す各処理は、情報処理システム1の装置構成に応じて、情報処理装置100や表示装置10等、情報処理システム1に含まれるいずれの装置が行ってもよい。
情報処理システム1は、制御部130は、コントローラの数だけステップS302~S304の処理を繰り返す(ステップS301)。まず、情報処理システム1は、コントローラの向き・位置を取得する(ステップS302)。例えば、情報処理装置100は、第1コントローラ20Aの向き及び位置を示す情報を取得する。
情報処理システム1は、Objectを持っているかどうかを判定する(ステップS303)。例えば、情報処理装置100は、第1コントローラ20Aが仮想オブジェクトを持っているかどうかを判定する。
Objectを持っていない場合(ステップS303:No)、情報処理システム1は、次のコントローラについてステップS302~S304の処理を行う。
Objectを持っている場合(ステップS303:Yes)、情報処理システム1は、把持フラグをONにする(ステップS304)。そして、情報処理システム1は、次のコントローラについてステップS302~S304の処理を行う。例えば、第1コントローラ20Aが仮想オブジェクトを持っている場合、情報処理装置100は、第1コントローラ20Aの把持フラグをONにする。例えば、情報処理装置100は、方向指示情報記憶部123(図7参照)中の第1コントローラ20Aに把持フラグ「ON」を対応付けて記憶する。
コントローラの数だけステップS302~S304の処理を繰り返した後、情報処理システム1は、コントローラの数だけステップS306~S311の処理を繰り返す(ステップS305)。
情報処理システム1は、把持フラグはONかどうかを判定する(ステップS306)。例えば、情報処理装置100は、第1コントローラ20Aの把持フラグはONかどうかを判定する。
把持フラグはONである場合(ステップS306:Yes)、情報処理システム1は、次のコントローラについてステップS306~S311の処理を行う。例えば、第1コントローラ20Aの把持フラグがONである場合、情報処理装置100は、第2コントローラ20BについてステップS306~S311の処理を行う。
把持フラグはONでない場合(ステップS306:No)、情報処理システム1は、線がObjectを指しているかどうかを判定する(ステップS307)。例えば、第1コントローラ20Aの把持フラグがONでない場合、情報処理装置100は、第1コントローラ20Aの線LN1が仮想オブジェクトを指しているかどうかを判定する。
線がObjectを指していない場合(ステップS307:No)、情報処理システム1は、次のコントローラについてステップS306~S311の処理を行う。
線がObjectを指している場合(ステップS307:Yes)、情報処理システム1は、ボタンを押しているかどうかを判定する(ステップS308)。例えば、第1コントローラ20Aの線LN1が仮想オブジェクトを指している場合、情報処理装置100は、第1コントローラ20Aのボタン25が押されているかどうかを判定する。
ボタンを押していない場合(ステップS308:No)、情報処理システム1は、次のコントローラについてステップS306~S311の処理を行う。
ボタンを押している場合(ステップS308:Yes)、情報処理システム1は、コントローラがObjectを持つとする(ステップS309)。例えば、第1コントローラ20Aのボタン25が押されている場合、情報処理装置100は、第1コントローラ20Aが線LN1により指されている仮想オブジェクトを持つと判定する。
そして、情報処理システム1は、把持フラグをONにする(ステップS310)。例えば、第1コントローラ20Aが仮想オブジェクトを持っている場合、情報処理装置100は、第1コントローラ20Aの把持フラグをONにする。例えば、情報処理装置100は、方向指示情報記憶部123(図7参照)中の第1コントローラ20Aに把持フラグ「ON」を対応付けて記憶する。
そして、情報処理システム1は、コントローラからObjectまでの距離をRとする(ステップS311)。例えば、情報処理装置100は、第1コントローラ20Aから仮想オブジェクトまでの距離を距離Rとする。そして、情報処理システム1は、次のコントローラについてステップS306~S311の処理を行う。コントローラの数だけステップS306~S311の処理を繰り返した後、情報処理システム1は、図21に示すステップS401の処理を行う。
図21に示すように、情報処理システム1は、コントローラは2本かどうかを判定する(ステップS401)。例えば、情報処理装置100は、指示構成要素となるコントローラが2本であるかどうかを判定する。
コントローラが2本でない場合(ステップS401:No)、情報処理システム1は、コントローラは1本かどうかを判定する(ステップS402)。コントローラが1本でない場合(ステップS402:No)、情報処理システム1は、処理を終了する。コントローラが1本である場合(ステップS402:Yes)、情報処理システム1は、図22に示すステップS501の処理を行う。
コントローラが2本である場合(ステップS401:Yes)、情報処理システム1は、把持フラグが0かどうかを判定する(ステップS403)。例えば、コントローラが2本である場合、情報処理装置100は、2本のコントローラで把持フラグがONになっているコントローラの数が「0(ゼロ)」であるかどうかを判定する。
把持フラグが0である場合(ステップS403:Yes)、情報処理システム1は、交点モード処理を行う(ステップS404)。なお、交点モード処理は、図23に示すステップS601~S606の処理に対応するが、交点モード処理についての詳細は後述する。
そして、情報処理システム1は、交点表示モードはONかどうかを判定する(ステップS405)。例えば、情報処理装置100は、交点表示用情報記憶部124(図8参照)中の交点表示モードがONかどうかを判定する。
交点表示モードがONである場合(ステップS405:Yes)、情報処理システム1は、2本の線の最近点の中点を交点とする(ステップS406)。例えば、交点表示モードがONである場合、情報処理装置100は、第1コントローラ20Aの線LN1の最近点である点PT1と、第2コントローラ20Bの線LN2の最近点である点PT2との中点を交点IS1にする。そして、情報処理システム1は、図22に示すステップS501の処理を行う。
交点表示モードがONでない場合(ステップS405:No)、情報処理システム1は、交点の表示を消す(ステップS407)。例えば、交点表示モードがOFFである場合、情報処理装置100は、交点が非表示である場合、交点の非表示を維持し、交点が表示中である場合、交点の表示を消す。そして、情報処理システム1は、図22に示すステップS501の処理を行う。
把持フラグが0でない場合(ステップS403:No)、情報処理システム1は、把持フラグが1かどうかを判定する(ステップS408)。例えば、コントローラが2本である場合、情報処理装置100は、2本のコントローラで把持フラグがONになっているコントローラの数が「1」であるかどうかを判定する。
把持フラグが1でない場合(ステップS408:No)、情報処理システム1は、図22に示すステップS501の処理を行う。
把持フラグが1である場合(ステップS408:Yes)、情報処理システム1は、把持フラグが立っている方をメインコントローラにする(ステップS409)。すなわち、情報処理システム1は、把持フラグがONであるコントローラをメインコントローラにする。例えば、情報処理装置100は、第1コントローラ20Aと第2コントローラ20Bとのうち、把持フラグがONである第1コントローラ20Aをメインコントローラに決定する。この場合、情報処理装置100は、交点表示用情報記憶部124(図8参照)中の主従関係を「有」に変更し、主指示構成要素に「20A」を記憶し、従指示構成要素に「20B」を記憶する。
そして、情報処理システム1は、交点モード処理を行う(ステップS410)。情報処理システム1は、交点表示モードはONかどうかを判定する(ステップS411)。例えば、情報処理装置100は、交点表示用情報記憶部124(図8参照)中の交点表示モードがONかどうかを判定する。
交点表示モードがONでない場合(ステップS411:No)、情報処理システム1は、交点の表示を消す(ステップS412)。例えば、交点表示モードがOFFである場合、情報処理装置100は、交点が非表示である場合、交点の非表示を維持し、交点が表示中である場合、交点の表示を消す。そして、情報処理システム1は、図22に示すステップS501の処理を行う。
交点表示モードがONである場合(ステップS411:Yes)、情報処理システム1は、メインコントローラ上の最近点を交点とする(ステップS413)。例えば、メインコントローラが第1コントローラ20Aである場合、情報処理装置100は、第1コントローラ20Aの線LN1の最近点を交点にする。
情報処理システム1は、メインコントローラと交点の距離をRtempとする(ステップS414)。例えば、メインコントローラが第1コントローラ20Aである場合、情報処理装置100は、第1コントローラ20Aから仮想オブジェクトまでの距離を距離Rtempとする。
情報処理システム1は、距離Rtempが、閾値Rminより大きくかつ閾値Rmax未満かどうかを判定する(ステップS415)。例えば、情報処理装置100は、距離Rtempが、閾値Rminと閾値Rmaxとの範囲内かどうかを判定する。
距離Rtempが、閾値Rminより大きくかつ閾値Rmax未満である場合(ステップS415:Yes)、情報処理システム1は、メインコントローラからObjectまでの距離RをRtempとする(ステップS416)。例えば、メインコントローラが第1コントローラ20Aである場合、情報処理装置100は、第1コントローラ20Aから仮想オブジェクトまでの距離Rを距離Rtempに設定する。そして、情報処理システム1は、図22に示すステップS501の処理を行う。
距離Rtempが、閾値Rminより大きくかつ閾値Rmax未満でない場合(ステップS415:No)、情報処理システム1は、距離Rtempが閾値Rmax以上かどうかを判定する(ステップS417)。例えば、距離Rtempが、閾値Rmin以下であるかまたは閾値Rmax以上である場合、情報処理装置100は、距離Rtempが閾値Rmax以上かどうかを判定する。
距離Rtempが閾値Rmax以上でない場合(ステップS417:No)、情報処理システム1は、距離Rを閾値Rminとする(ステップS418)。例えば、距離Rtempが閾値Rmin以下である場合、情報処理装置100は、第1コントローラ20Aから仮想オブジェクトまでの距離Rを閾値Rminに設定する。そして、情報処理システム1は、図22に示すステップS501の処理を行う。
距離Rtempが閾値Rmax以上である場合(ステップS417:Yes)、情報処理システム1は、距離Rを閾値Rmaxとする(ステップS419)。例えば、距離Rtempが閾値Rmax以上である場合、情報処理装置100は、第1コントローラ20Aから仮想オブジェクトまでの距離Rを閾値Rmaxに設定する。そして、情報処理システム1は、図22に示すステップS501の処理を行う。
図22に示すように、制御部130は、コントローラの数だけステップS502~S305の処理を繰り返す(ステップS501)。まず、情報処理システム1は、コントローラから線を表示する(ステップS502)。例えば、情報処理装置100は、第1コントローラ20Aから線LN1を表示する。
情報処理システム1は、把持フラグはあるかを判定する(ステップS503)。例えば、情報処理装置100は、第1コントローラ20Aの把持フラグはONかどうかを判定する。
把持フラグがない場合(ステップS503:No)、情報処理システム1は、次のコントローラについてステップS502~S505の処理を行う。
把持フラグがある場合(ステップS503:Yes)、情報処理システム1は、ボタンは押されているかどうかを判定する(ステップS504)。例えば、第1コントローラ20Aの線LN1が仮想オブジェクトを指している場合、情報処理装置100は、第1コントローラ20Aのボタン25が押されているかどうかを判定する。
ボタンを押している場合(ステップS504:Yes)、情報処理システム1は、ObjectをRの位置に表示する(ステップS505)。例えば、第1コントローラ20Aのボタン25が押されている場合、情報処理装置100は、仮想オブジェクトを距離Rの位置に表示する。そして、情報処理システム1は、次のコントローラについてステップS502~S505の処理を行う。
ボタンを押していない場合(ステップS504:No)、情報処理システム1は、Objectの移動距離Dが閾値Dthresholdより小さいかどうかを判定する(ステップS506)。
Objectの移動距離Dが閾値Dthresholdより小さい場合(ステップS506:Yes)、情報処理システム1は、Objectを元の位置に戻す(ステップS507)。例えば、仮想オブジェクトの移動距離Dが閾値Dthresholdより小さい場合、情報処理装置100は、仮想オブジェクトを元の位置に表示する。そして、情報処理システム1は、開始に戻る。例えば、情報処理システム1は、ステップS301に戻って処理を繰り返す。
Objectの移動距離Dが閾値Dthresholdより小さくない場合(ステップS506:No)、情報処理システム1は、Objectに重力フラグがあるかどうかを判定する(ステップS508)。情報処理システム1は、仮想オブジェクトの重力フラグが付与されているかどうかを判定する。例えば、情報処理装置100は、オブジェクト情報記憶部125(図9参照)中の仮想オブジェクトに対応する重力フラグが「1」であるかどうかを判定する。
Objectに重力フラグがある場合(ステップS508:Yes)、情報処理システム1は、Objectをその場に落とす(ステップS509)。例えば、情報処理装置100は、オブジェクト情報記憶部125(図9参照)中の仮想オブジェクトに対応する重力フラグが「1」である場合、その仮想オブジェクトをその場に置き、重力の影響を受けた位置に配置する。そして、情報処理システム1は、開始に戻る。例えば、情報処理システム1は、ステップS301に戻って処理を繰り返す。
Objectに重力フラグがない場合(ステップS508:No)、情報処理システム1は、Objectをその場に配置する(ステップS510)。例えば、情報処理装置100は、オブジェクト情報記憶部125(図9参照)中の仮想オブジェクトに対応する重力フラグが「0」である場合、その仮想オブジェクトをその場に配置する。そして、情報処理システム1は、開始に戻る。例えば、情報処理システム1は、ステップS301に戻って処理を繰り返す。
コントローラの数だけステップS502~S505の処理を繰り返しが完了した後、情報処理システム1は、交点があるかどうかを判定する(ステップS511)。
交点がない場合(ステップS511:No)、情報処理システム1は、開始に戻る。例えば、情報処理システム1は、ステップS301に戻って処理を繰り返す。
交点がある場合(ステップS511:Yes)、情報処理システム1は、交点を表示する(ステップS512)。そして、情報処理システム1は、開始に戻る。例えば、情報処理システム1は、ステップS301に戻って処理を繰り返す。
ここで、図23を用いて、交点モード処理に関する手順について説明する。図23に示す交点モード処理は、ステップS404やステップS410の交点モード処理の詳細を示す。情報処理システム1は、ステップS404やステップS410の交点モード処理でステップS601~S606の処理を実行する。
情報処理システム1は、2本の線の距離Dが閾値D0未満かどうかを判定する(ステップS601)。例えば、情報処理装置100は、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D0未満かどうかを判定する。
2本の線の距離Dが閾値D0未満ではない場合(ステップS601:No)、情報処理システム1は、2本の線の距離Dが閾値D1よりも大きいかどうかを判定する(ステップS602)。例えば、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D0以上である場合、情報処理装置100は、距離Dが閾値D1よりも大きいかどうかを判定する。
2本の線の距離Dが閾値D1よりも大きくない場合(ステップS602:No)、情報処理システム1は、交点モード処理を終了する。すなわち、2本の線の距離Dが閾値D1以下である場合、情報処理システム1は、交点表示モードがONであればONを維持し、交点表示モードがOFFであればOFFを維持し、交点モード処理を終了する。例えば、第1コントローラ20Aの線LN1と、第2コントローラ20Bの線LN2との間の距離Dが閾値D1以下である場合、情報処理装置100は、交点モード処理を終了する。
2本の線の距離Dが閾値D1よりも大きい場合(ステップS602:Yes)、情報処理システム1は、交点表示モードをOFFにした後(ステップS603)、交点モード処理を終了する。例えば、2本の線の距離Dが閾値D1よりも大きい場合、情報処理装置100は、交点表示モードがONであればOFFに変更し、交点表示モードがOFFであればOFFを維持し、交点モード処理を終了する。
2本の線の距離Dが閾値D0未満である場合(ステップS601:Yes)、情報処理システム1は、交点は前方にあるかどうかを判定する(ステップS604)。例えば、2本の線の距離Dが閾値D0未満である場合、情報処理装置100は、交点IS1が第1コントローラ20Aの前方にあるかどうかを判定する。例えば、2本の線の距離Dが閾値D0未満である場合、情報処理装置100は、交点IS1が第2コントローラ20Bの前方にあるかどうかを判定してもよい。
交点が前方にない場合(ステップS604:No)、情報処理システム1は、交点表示モードをOFFにした後(ステップS603)、交点モード処理を終了する。例えば、交点IS1が第1コントローラ20Aの前方にない場合、情報処理装置100は、交点表示モードがONであればOFFに変更し、交点表示モードがOFFであればOFFを維持し、交点モード処理を終了する。
交点が前方にある場合(ステップS604:Yes)、情報処理システム1は、交点はLmax以内かどうかを判定する(ステップS605)。例えば、交点IS1が第1コントローラ20Aの前方にある場合、情報処理装置100は、第1コントローラ20Aから交点IS1までの距離が閾値Lmax以内かどうかを判定する。
交点がLmax以内にない場合(ステップS605:No)、情報処理システム1は、交点表示モードをOFFにした後(ステップS603)、交点モード処理を終了する。例えば、第1コントローラ20Aから交点IS1までの距離が閾値Lmaxよりも大きい場合、情報処理装置100は、交点表示モードがONであればOFFに変更し、交点表示モードがOFFであればOFFを維持し、交点モード処理を終了する。
交点がLmax以内にある場合(ステップS605:Yes)、情報処理システム1は、交点表示モードをONにする(ステップS606)。例えば、第1コントローラ20Aから交点IS1までの距離が閾値Lmax以内である場合、情報処理装置100は、交点表示モードをONにする。
[1-7-6.コントローラと視線]
なお、上述した仮想オブジェクトを対象とする処理については、指示構成要素はコントローラに限らず、他のデバイスやユーザの身体(手や目)等が用いられてもよい。例えば、コントローラ20とユーザ50の目51の視線が指示構成要素であってもよい。以下、この点の処理について説明する。1本の線で仮想オブジェクトを選択し、視線との交点に仮想オブジェクトを配置する場合を説明する。
なお、上述した仮想オブジェクトを対象とする処理とは、指示構成要素がコントローラ20とからユーザ50の目51(視線)に変更された点以外は同様であるため、適宜説明を省略する。また、以下の説明では、情報処理システム1を処理の主体として説明するが、各処理は、情報処理システム1の装置構成に応じて、情報処理装置100や表示装置10等、情報処理システム1に含まれるいずれの装置が行ってもよい。
ユーザ50は、コントローラ20で選択したい仮想オブジェクトを指し示す。そして、ユーザ50は、コントローラ20のボタン25を押して、仮想オブジェクトを選択する。これにより、情報処理装置100は、コントローラ20が仮想オブジェクトを掴んだと判定する。
そして、ユーザ50は、コントローラ20で指定したい位置の方向を指し示す。なお、仮想オブジェクトはコントローラ20(の線)の先に配置されている。
そして、ユーザ50は、コントローラ20(の線)上の移動させたい位置に視線を向けて、交点表示モードを作る。2本の線がコントローラ20の前方で一定距離(閾値D0)よりも近づいたら、その交点に仮想オブジェクトが移動する。例えば、情報処理装置100は、2本の線がコントローラ20の前方で一定距離(閾値D0)よりも近づいたと判定したら、その交点に仮想オブジェクトを表示するように、表示装置10を制御する。
遠くで交点を作られると、仮想オブジェクトの位置が急激に変化するため、情報処理装置100は、コントローラ20から一定範囲内で交点を作成する。一定範囲については、仮想オブジェクトの手前と奥で距離を変えてもよい。視線は常に微小な動きをしているので、情報処理装置100は、コントローラの線上の最近点に交点を表示する。また、人間の視覚調整の仕組み上、何も無いところで焦点を合わせることは出来ないので、情報処理装置100は、先にコントローラ20の線を表示して、ユーザが視線で位置を指定できるようにする。
そして、ユーザ50は、2本の線で交点の位置を調整する。この場合、交点はコントローラ20の線上を移動する。また、コントローラが平行になると、情報処理装置100は、無限遠になるので最大距離(閾値Lmax)を事前に設定する。
ユーザ50による交点の位置の調整に応じて、情報処理装置100は、交点の位置に仮想オブジェクトを表示するように表示装置10を制御する。配置したい位置に仮想オブジェクトを配置したユーザ50は、コントローラ20のボタン25から指を離して、仮想オブジェクトを指定した位置に配置する。これにより、情報処理装置100は、コントローラ20による仮想オブジェクトの把持が解除されたと判定する。
[1-8.線の表現]
なお、指示構成要素は、上記に限らず、掌、腕、顔や頭の正面など、種々の要素であってもよい。すなわち、線を出すものとしては、コントローラ、指、手、掌、腕、視線、顔や頭の正面など方向を示すことができる種々のものが含まれる。
また、2本の線に機能的な差異が無い場合でも、2本の線の主従関係を持ってもよい。情報処理装置100は、種々の情報を適宜用いて指示構成要素間の主従関係を判定してもよい。また、情報処理装置100は、主従関係を示すために、各線の色の濃さや形状などを変えてもよい。
情報処理装置100は、優先しても用いていると推定される指示構成要素を主たる指示構成要素(主指示構成要素)と判定してもよい。例えば、情報処理装置100は、ユーザの右手に対応する指示構成要素を主指示構成要素とする。また、例えば、情報処理装置100は、モノ(デバイス)を持っている方を主指示構成要素としてもよい。例えば、情報処理装置100は、片方の手のみにモノ(デバイス)を所持している場合、そのデバイスを主指示構成要素としてもよい。
情報処理装置100は、所定の順番に応じて主指示構成要素を判定してもよい。情報処理装置100は、ビーム状態にした順番に応じて、主指示構成要素を判定してもよい。例えば、情報処理装置100は、最初にビーム状態にした指示構成要素を、主指示構成要素と判定してもよい。
情報処理装置100は、動かし方に応じて主指示構成要素を判定してもよい。例えば、情報処理装置100は、大きく動かしたり、先に動かしたりした指示構成要素を、主指示構成要素と判定してもよい。
また、線の表現は、種々の対象であってもよい。例えば、操作に慣れてくると線の表示は必要なくなるので、交点だけの表示があってもよい。また、例えば、情報処理装置100は、2本の線が離れている時に交点を作りやすいように線を表現してもよい。例えば、情報処理装置100は、線の太さを太くしてもよい。
また、情報処理装置100は、交点近くが膨らんだり、最近点に向かって膨らんだりするように線を表現してもよい。この点について、図24A~図24Cを用いて説明する。図24A~図24Cは、本開示の線の表示の一例を示す図である。具体的には、図24A~図24Cは、幾何学的対象の一例である線の表現の例を示す図である。
図24A~図24Cの各々は、主従関係に応じた線の表現の例を示す。具体的には、図24Aは、主従関係がない場合の線の表現の例を示す。また、図24B及び図24Cの各々は、主従関係がある場合の線の表現の例を示す。
まず、図24Aを用いて、主従関係がない場合の線の表現について説明する。図24Aに示すように、主従関係がない場合、情報処理装置100は、線LN61及び線LN62の両方が、交点IS61の方に膨らむように表示させる。情報処理装置100は、膨張部EP61を含む線LN61と膨張部EP62を含む線LN62を表示するように表示装置10を制御する。
次に、図24Bを用いて、主従関係がある場合の線の表現について説明する。図24Bに示すように、主従関係がある場合、情報処理装置100は、主指示構成要素の線である主線ML1上の交点IS61に向かって、従指示構成要素の線である従線SL1が膨らむように表示させる。情報処理装置100は、主線ML1と膨張部EP63を含む従線SL1を表示するように表示装置10を制御する。
次に、図24Cを用いて、主従関係がある場合の線の表現について説明する。図24Cに示すように、主従関係がある場合、情報処理装置100は、従指示構成要素の線である従線SL1の最近点に向かって、主指示構成要素の線である主線ML1が膨らむように表示させる。情報処理装置100は、膨張部EP64を含む主線ML1と従線SL1を表示するように表示装置10を制御する。
また、方向は線だけではなく面や面内で表現されてもよい。面は主従のどちらか一方であってもよい。また、面の向きは、水平方向や垂直方向であってもよい。また、面の向きは、コントローラなどを動かしている方向であってもよい。
また、面の幅は、操作者のコントローラや手などから交点や仮想オブジェクトまでの距離に応じて面の幅を設定されてもよい。例えば、閾値D1程度の幅を持たせる。また、交点が近傍になった場合に備えて、数センチ程度の最小幅を決めてもよい。
また、面や面内の表現は、操作者から対象物の間の面内で、線がストローのような首折れやしなりを持ってもよい。また、対象物を選択しやすいように、対象物から操作者の方に向かって線が伸びてもよい。また、操作者のコントローラや指から線を出す際、少しだけ隙間を開けて線を表示してもよい。
上述した点について、図25及び図26を用いて具体的に説明する。図25及び図26は、本開示の線の表示の一例を示す図である。なお、上述した内容と同様の点については適宜説明を省略する。
まず、図25を用いて、線の首折れやしなりについて説明する。図25は、ユーザ50が、左でのコントローラ20と、右手の指52とを用いて、仮想オブジェクトVO71を指示している状態を示す。情報処理装置100は、コントローラ20の線LN71と右手の指52の線LN72とを表示するように表示装置10を制御する。情報処理装置100は、右手の指52の線LN72を含む面FC72を表示するように表示装置10を制御してもよい。また、図25の例では、指52の線LN72は、仮想オブジェクトVO71の付近で首折れした屈曲部TP72を含む。情報処理装置100は、面FC72内に位置し屈曲部TP72を含む線LN72を表示するように表示装置10を制御してもよい。
このように、情報処理装置100は、線LN72が仮想オブジェクトVO71に吸着するように、線LN72を表現することにより、ユーザ50により直感的に線LN72が仮想オブジェクトVO71を指示していると認識させることができる。
次に、図26を用いて、コントローラ20や指52等の指示構成要素と、線等の幾何学的対象との間に隙間をあけた表現について説明する。図26は、ユーザ50の右手の指52と、線LN72との間に隙間をあけた場合を示す。図26中の拡大部分AR72に示すように、情報処理装置100は、ユーザ50の右手の指52との間に隙間をあけて線LN72を表示するように表示装置10を制御する。これにより、操作者と対象物との方向に多少のズレが生じても許容できるようになる。
[1-9.その他]
なお、上記に限らず種々の表示態様であってもよい。上述した例では、ユーザが1人の場合の操作について説明したが、複数のユーザ(複数人)がAR機器やVR機器やMR機器等表示装置10を装着して同じ映像を見ながら複数人で操作してもよい。この場合、1人が仮想オブジェクトを操作しているときに、もう1人も位置を調整することができる。
また、交点については、情報処理装置100は、交点モードに入った時や交点モードで微調整をしている時などに振動や圧力、音などを加えて状態を伝えてもよい。例えば、情報処理装置100は、交点が出来そうなとき、交点が出来たとき、交点があるとき、線が離れそうなとき、線が離れたときなどの状態を伝えてもよい。情報処理装置100は、交点の位置が分かりやすいように、床や机の上、もしくは腰の高さなどに仮想平面を設けて交点を投影させた影や影と交点をつなぐ線を表示してもよい。この点について、図27を用いて説明する。図27は、本開示の交点表示の一例を示す図である。なお、上述した内容と同様の点については適宜説明を省略する。
図27は、仮想平面VPに線LN71や線LN72等の情報を投影した場合を示す。図27の仮想平面VP中の投影線PL71は、線LN71を仮想平面VPに投影した線を示す。また、図27の仮想平面VP中の投影線PL72は、線LN72を仮想平面VPに投影した線を示す。また、図27の仮想平面VP中の投影点PIは、線LN71の最近点PT71と線LN72の最近点PT72との交点を投影した点を示す。情報処理装置100は、図27に示すような投影線PL71、PL72や投影点PIを表示するように表示装置10を制御する。これにより、情報処理装置100は、交点の位置をユーザ50に認識させることができる。
また、情報処理装置100は、仮想オブジェクトについて種々の処理を行ってもよい。情報処理装置100は、仮想オブジェクトの移動可能なエリアやラインなどを設けて、その範囲内でのみ移動できるようにしてもよい。情報処理装置100は、仮想オブジェクトや交点を現実空間の物体で隠れる場所に配置しようとした場合、物体より奥にいかないようにしてもよいし、物体を突き抜けてもよい。情報処理装置100は、仮想オブジェクトの移動距離や角度、実物体からの距離や角度などの補足情報を表示してもよい。
また、情報処理装置100は、空間座標の表示について種々の処理を行ってもよい。情報処理装置100は、交点、仮想オブジェクトの座標位置が分かりやすいように、空間座標やグリッドを表示してもよい。情報処理装置100は、空間座標を表示する際は、操作者の位置からの座標系、特定の人やモノや位置からの座標系、操作者以外の人、実物体や仮想物体などの特定のモノ、特定の位置などの空間の絶対座標系等を表示させてもよい。
[1-10.他の幾何学的対象(面)]
なお、上述のように幾何学的対象は線に限らず、面であってもよい。例えば、情報処理装置100は、幾何学的対象である面の位置関係に基づいて、交点を表示させてもよい。この点について、図28~図31を用いて説明する。図28~図30は、本開示の他の表示の一例を示す図である。また、図31は、本開示の他の交点表示の一例を示す図である。なお、上述した内容と同様の点については適宜説明を省略する。
図28~図31では、ユーザ50が利き手である右手に主指示構成要素である第1コントローラ20Aを所持し、左手に従指示構成要素である第2コントローラ20Bを所持する場合を示す。なお、ユーザ50が左手に所持する第2コントローラ20Bが主指示構成要素であり、右手に所持する第1コントローラ20Aが従指示構成要素であってもよい。このように、ユーザ50の左手側が主指示構成要素であり、右手側が従指示構成要素であってもよい。すなわち、ユーザ50の右手側と左手側とのいずれが主指示構成要素であってもよい。また、指示構成要素は、コントローラ20に限らず、指52(図25参照)等、ユーザが方向を示すために用いるものであればどのようなものであってもよい。また、以下で説明する線LN81~LN83や面FC81、82等の幾何学的対象は、交点表示のためのものであり、その全てがユーザに視認可能に表示されなくてもよいが、この点については後述する。
図28に示すように、各コントローラ20からコントローラ20の所定の位置(原点)を通る軸に沿って線が伸びる。具体的には、第1コントローラ20Aから第1コントローラ20Aの原点21Aを通る軸に沿って線LN81が伸びる。また、第2コントローラ20Bから第2コントローラ20Bの原点21Bを通る軸に沿って線LN82が伸びる。例えば、情報処理装置100は、第1コントローラ20Aの位置や向きに基づいて線LN81を算出し、第2コントローラ20Bの位置や向きに基づいて線LN82を算出する。情報処理装置100は、第1コントローラ20Aの軸や原点21Aに基づいて線LN81を算出し、第2コントローラ20Bの軸や原点21Bに基づいて線LN82を算出する。以下では、主指示構成要素である第1コントローラ20Aの原点21Aから伸びる線LN81を主線ともいい、従指示構成要素である第2コントローラ20Bの原点21Bから伸びる線LN82を副線ともいう。
図29に示すように、主線である線LN81と、副線である線LN82の原点21Bから構成される平面を面FC81とする。以下では、面FC81を基準面ともいう。基準面である面FC81は、主線である線LN81と、副線である線LN82の原点21Bとを含む面である。言い換えると、線LN81は、面FC81内を通り、原点21Bは、面FC81内に位置する。このように、基準面である面FC81は、主線である線LN81と、副線である線LN82の原点21Bとにより定まる。例えば、情報処理装置100は、線LN81の位置や原点21Bの位置に基づいて面FC81を算出する。情報処理装置100は、主線である線LN81と、副線である線LN82の原点21Bとを含む面を面FC81として算出する。
図30に示すように、基準面である面FC81が副線である線LN82の原点21Bを中心に垂直となる平面を面FC82とする。以下では、面FC82を操作面ともいう。このように、操作面である面FC82は、原点21Bを通り、面FC81に直交する面である。また、副線である線LN82は面FC82上を移動する。面FC82は、線LN82が乗る。言い換えると、線LN82は、面FC82を通る。すなわち、面FC82は、線LN82の原点21Bを含み、面FC81に直交する面である。このように、操作面である面FC82は、基準面である面FC81と、副線である線LN82と原点21Bとにより定まる。例えば、情報処理装置100は、面FC81の位置や線LN82の位置や原点21Bの位置に基づいて面FC82を算出する。情報処理装置100は、基準面である面FC81に直交し、副線である線LN82や原点21Bを含む面を面FC82として算出する。
図31に示すように、主線である線LN81と、操作面である面FC82とが交わる点を交点IS81とする。情報処理装置100は、線LN81の位置や面FC82の位置に基づいて交点IS81を算出する。例えば、情報処理装置100は、線LN81と面FC82とが交わる点を交点IS81として算出する。
また、副線である線LN82の原点21Bと交点IS81とを結んだ線を線LN83とする。以下では、線LN83を操作線ともいう。操作線である線LN83は、離れるほど副線である線LN82の色に近くなってもよい。例えば、報処理装置100は、線LN83が線LN81から離れるほど、線LN83の色が副線である線LN82の色に近づいて表示されるように、表示装置10を制御してもよい。
なお、上述した線LN81~LN83や面FC81、82等の幾何学的対象のうち、ユーザから見える幾何学的対象は、主線である線LN81と操作線である線LN83だけであってもよい。すなわち、情報処理装置100は、主線である線LN81と操作線である線LN83とを表示するように、表示装置10を制御してもよい。この場合、表示装置10は、線LN81~LN83や面FC81、82等の幾何学的対象のうち、主線である線LN81及び操作線である線LN83のみを表示する。
また、情報処理装置100は、交点の出現条件を用いて、出現条件を満たす場合に、交点を出現(表示)させてもよい。例えば、情報処理装置100は、副線である線LN82と、操作線である線LN83との開き角である角度AG81が、所定の閾値以下である場合、交点を出現させてもよい。情報処理装置100は、線LN82と線LN83とがなす角の角度AG81が、所定の閾値(例えば10度や15度等)以下である場合、交点IS81を出現させてもよい。また、情報処理装置100は、交点の出現条件を満たす場合に、線が吸着するように表示を制御してもよい。情報処理装置100は、交点の出現条件を満たす場合に、操作線である線LN83が吸着するように表示を制御してもよい。例えば、情報処理装置100は、交点の出現条件を満たす場合に、操作線である線LN83が仮想オブジェクトの付近で首折れし、仮想オブジェクトに吸着するように、線LN83の表示を制御してもよい。また、情報処理装置100は、グラブ中は強制的に吸着させてもよい。情報処理装置100は、仮想オブジェクトを持っている場合、線LN83が仮想オブジェクトの付近で首折れし、仮想オブジェクトに吸着するように、線LN83の表示を制御してもよい。
[2.その他の構成例]
なお、上記のシステム構成は一例であり、上述した処理が実現可能であれば、情報処理システムはどのようなシステム構成であってもよい。例えば、情報処理装置100と表示装置10とが別体である場合を示したが、情報処理装置100と表示装置10とは一体であってもよい。
また、上記各実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上述してきた各実施形態及び変形例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
また、本明細書に記載された効果はあくまで例示であって限定されるものでは無く、他の効果があってもよい。
[3.本開示に係る効果]
上述のように、本開示に係る情報処理装置(実施形態では情報処理装置100)は、表示制御部(実施形態では表示制御部134)を備える。表示制御部は、ユーザが示した複数の方向に基づき定まる位置である指示位置に、仮想オブジェクト用のマークを表示するように表示装置(実施形態では表示装置10)を制御する。
これにより、本開示に係る情報処理装置は、ユーザが示した複数の方向に基づき定まる位置である指示位置に、仮想オブジェクト用のマークを表示するように表示装置を制御することができるため、ユーザの指示に応じた柔軟な表示を可能にすることができる。また、情報処理装置によれば、ユーザが示した複数の方向で位置を決定するため、ユーザの指示に応じた適切な位置を決定することができる。
また、表示制御部は、複数の方向の各々に対応する複数の幾何学的対象に基づき定まる指示位置に、マークを表示するように表示装置を制御する。これにより、情報処理装置は、各方向に対応する線や面等の複数の幾何学的対象に基づき定まる指示位置に、仮想オブジェクト用のマークを表示するように表示装置を制御することができるため、線や面等の複数の幾何学的対象によるユーザの指示に応じた柔軟な表示を可能にすることができる。
また、表示制御部は、複数の幾何学的対象の位置関係に基づき定まる指示位置に、マークを表示するように表示装置を制御する。これにより、情報処理装置は、複数の幾何学的対象の位置関係に基づき定まる指示位置に、仮想オブジェクト用のマークを表示するように表示装置を制御することができるため、幾何学的対象の位置関係によるユーザの指示に応じた柔軟な表示を可能にすることができる。
また、表示制御部は、2方向である複数の方向の各々に対応する2つの幾何学的対象に基づき定まる指示位置に、マークを表示するように表示装置を制御する。これにより、情報処理装置は、2方向である複数の方向の各々に対応する2つの幾何学的対象に基づき定まる指示位置に、仮想オブジェクト用のマークを表示するように表示装置を制御することができるため、2方向によるユーザの指示に応じた柔軟な表示を可能にすることができる。
また、表示制御部は、2方向である複数の方向のうち、第1の方向に沿う第1の幾何学的対象と、第2の方向に沿う第2の幾何学的対象とに基づき定まる指示位置に、マークを表示するように表示装置を制御する。これにより、情報処理装置は、第1の方向と第2の方向とに基づき定まる指示位置に、仮想オブジェクト用のマークを表示するように表示装置を制御することができるため、2方向によるユーザの指示に応じた柔軟な表示を可能にすることができる。
また、本開示に係る情報処理装置は、判定部(実施形態では判定部133)を備える。判定部は、2つの幾何学的対象の位置関係に基づいて、マークを表示するかどうかを判定する。表示制御部は、判定部によりマークを表示すると判定された場合に、マークを表示するように表示装置を制御する。これにより、情報処理装置は、2つの幾何学的対象の位置関係に基づく判定結果に応じてマークの表示を決定できるため、2つの幾何学的対象の位置関係に応じた適切な表示を可能にすることができる。
また、判定部は、2つの幾何学的対象間の距離である対象距離が第1閾値(実施形態では閾値D0)以上である場合、マークを表示しないと判定する。これにより、情報処理装置は、2つの幾何学的対象間の距離が離れている場合にマークを表示しないことにより、ユーザの指示に応じた柔軟な表示を可能にすることができる。
また、判定部は、マークの表示時に、対象距離が第1閾値よりも大きい第2閾値(実施形態では閾値D1)以下である場合、マークの表示を継続すると判定し、対象距離が第2閾値を超える場合、マークを表示しないと判定する。これにより、情報処理装置は、一度マークを表示した場合、マークを継続して表示することができ、ユーザの手振れや誤差などによりマークが非表示になったり、マークが点滅したりすることを抑制でき、ユーザの指示に応じた柔軟な表示を可能にすることができる。
また、判定部は、2方向のいずれかを指示する指示構成要素と、指示位置との間の距離である表示距離に基づいて、マークを表示するかどうかを判定する。これにより、情報処理装置は、ユーザと指示位置との間の距離に応じて、適切にマークを表示したり、非表示にしたりすることができ、ユーザの指示に応じた柔軟な表示を可能にすることができる。
また、判定部は、表示距離が第3閾値(実施形態では閾値Lmax)を超える場合、マークを表示しないと判定する。これにより、情報処理装置は、ユーザから指示位置が離れている場合にマークを表示しないことにより、ユーザの指示に応じた柔軟な表示を可能にすることができる。例えば、情報処理装置は、線などの幾何学的対象が平行や平行に近い状態になり、指示位置(交点)が例えば無限遠等の遠方になった場合に、マークを表示しないことで、ユーザが意図しない位置にマーkが表示されることを抑制することができる。
また、表示制御部は、2つの幾何学的対象の関係に基づく指示位置に、仮想オブジェクトを表示するように表示装置を制御する。これにより、情報処理装置は、2つの幾何学的対象の関係に基づく指示位置に、仮想オブジェクトを表示するように表示装置を制御することができるため、ユーザの指示に応じた仮想オブジェクトの適切な表示を可能にすることができる。
また、表示制御部は、2つの幾何学的対象の各々から決定される2つの点に基づき定まる指示位置に、マークを表示するように表示装置を制御する。これにより、情報処理装置は、2つの幾何学的対象の2つの点に基づく指示位置に、マークを表示するように表示装置を制御することができるため、ユーザの指示に応じて適切な位置にマークを表示可能にすることができる。
また、表示制御部は、2つの幾何学的対象の距離が最も近い2つの点に基づき定まる指示位置に、マークを表示するように表示装置を制御する。これにより、情報処理装置は、2つの幾何学的対象の距離が最も近い2つの点(最近点)に基づく指示位置に、マークを表示するように表示装置を制御することができるため、ユーザの指示に応じて適切な位置にマークを表示可能にすることができる。
また、表示制御部は、2つの点の位置が一致する場合、2つの点の位置を指示位置として、マークを表示するように表示装置を制御する。これにより、情報処理装置は、2つの幾何学的対象が重なる場合、その位置に、マークを表示するように表示装置を制御することができるため、ユーザの指示に応じて適切な位置にマークを表示可能にすることができる。
また、表示制御部は、2つの点の位置が異なる場合、2つの点を結ぶ線分上の位置を指示位置として、マークを表示するように表示装置を制御する。これにより、情報処理装置は、2つの幾何学的対象が重ならない場合であっても、2つの点を結ぶ線分上の位置に、マークを表示するように表示装置を制御することができるため、ユーザの指示に応じて適切な位置にマークを表示可能にすることができる。
また、表示制御部は、指示位置に基づく位置である配置位置に、仮想オブジェクトを表示するように表示装置を制御する。これにより、情報処理装置は、指示位置に基づく配置位置に、仮想オブジェクトを表示するように表示装置を制御することができるため、ユーザの指示に応じた仮想オブジェクトの適切な表示を可能にすることができる。
また、表示制御部は、指示位置が、複数の方向のいずれかを指示する指示構成要素から第1位置までの距離である第1距離(実施形態では閾値Rmin)と、指示構成要素から第1位置よりも遠い第2位置までの距離である第2距離(実施形態では閾値Rmax)との間に位置する場合、指示位置を配置位置として、仮想オブジェクトを表示するように表示装置を制御する。これにより、情報処理装置は、指示位置が所定の範囲内に位置する場合、その位置に仮想オブジェクトを表示するように表示装置を制御することができるため、ユーザの指示に応じた仮想オブジェクトの適切な表示を可能にすることができる。
また、表示制御部は、指示位置が、第1距離以下である場合、第1位置を配置位置として、仮想オブジェクトを表示するように表示装置を制御する。これにより、情報処理装置は、指示位置が近すぎる場合、ある程度離れた位置に仮想オブジェクトを表示するように表示装置を制御することができるため、ユーザの指示に応じた仮想オブジェクトの適切な表示を可能にすることができる。
また、表示制御部は、指示位置が、第2距離以上である場合、第2位置を配置位置として、仮想オブジェクトを表示するように表示装置を制御する。これにより、情報処理装置は、指示位置が遠すぎる場合、離れすぎていない位置に仮想オブジェクトを表示するように表示装置を制御することができるため、ユーザの指示に応じた仮想オブジェクトの適切な表示を可能にすることができる。
また、表示制御部は、複数の方向の各々に対応する複数の線に基づき定まる指示位置に、マークを表示するように表示装置を制御する。これにより、情報処理装置は、各方向に対応する複数の線に基づき定まる指示位置に、仮想オブジェクト用のマークを表示するように表示装置を制御することができるため、線によるユーザの指示に応じた柔軟な表示を可能にすることができる。
また、表示制御部は、複数の方向のうち、少なくとも1方向に対応する面を含む複数の幾何学的対象に基づき定まる指示位置に、マークを表示するように表示装置を制御する。これにより、情報処理装置は、面を含む幾何学的対象に基づき定まる指示位置に、仮想オブジェクト用のマークを表示するように表示装置を制御することができるため、面を含む幾何学的対象によるユーザの指示に応じた柔軟な表示を可能にすることができる。
また、表示制御部は、ユーザが所持するコントローラにより指示される少なくとも1方向を含む複数の方向に基づき定まる指示位置に、マークを表示するように表示装置を制御する。これにより、情報処理装置は、ユーザが所持するコントローラによる指示に応じて、仮想オブジェクト用のマークを表示するように表示装置を制御することができるため、ユーザの指示に応じた柔軟な表示を可能にすることができる。
また、表示制御部は、ユーザの身体により指示される少なくとも1方向を含む複数の方向に基づき定まる指示位置に、マークを表示するように表示装置を制御する。これにより、情報処理装置は、ユーザの身体による指示に応じて、仮想オブジェクト用のマークを表示するように表示装置を制御することができるため、ユーザの指示に応じた柔軟な表示を可能にすることができる。
また、表示制御部は、ユーザの視線により指示される少なくとも1方向を含む複数の方向に基づき定まる指示位置に、マークを表示するように表示装置を制御する。これにより、情報処理装置は、ユーザの視線による指示に応じて、仮想オブジェクト用のマークを表示するように表示装置を制御することができるため、ユーザの指示に応じた柔軟な表示を可能にすることができる。
また、表示制御部は、ユーザの指により指示される少なくとも1方向を含む複数の方向に基づき定まる指示位置に、マークを表示するように表示装置を制御する。これにより、情報処理装置は、ユーザの指による指示に応じて、仮想オブジェクト用のマークを表示するように表示装置を制御することができるため、ユーザの指示に応じた柔軟な表示を可能にすることができる。
[4.ハードウェア構成]
上述してきた各実施形態や変形例に係る情報処理装置100等の情報機器は、例えば図32に示すような構成のコンピュータ1000によって実現される。図32は、情報処理装置100等の情報処理装置の機能を実現するコンピュータ1000の一例を示すハードウェア構成図である。以下、実施形態に係る情報処理装置100を例に説明する。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス1500、及び入出力インターフェイス1600を有する。コンピュータ1000の各部は、バス1050によって接続される。
CPU1100は、ROM1300又はHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。例えば、CPU1100は、ROM1300又はHDD1400に格納されたプログラムをRAM1200に展開し、各種プログラムに対応した処理を実行する。
ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるBIOS(Basic Input Output System)等のブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を非一時的に記録する、コンピュータが読み取り可能な記録媒体である。具体的には、HDD1400は、プログラムデータ1450の一例である本開示に係る情報処理プログラムを記録する記録媒体である。
通信インターフェイス1500は、コンピュータ1000が外部ネットワーク1550(例えばインターネット)と接続するためのインターフェイスである。例えば、CPU1100は、通信インターフェイス1500を介して、他の機器からデータを受信したり、CPU1100が生成したデータを他の機器へ送信したりする。
入出力インターフェイス1600は、入出力デバイス1650とコンピュータ1000とを接続するためのインターフェイスである。例えば、CPU1100は、入出力インターフェイス1600を介して、キーボードやマウス等の入力デバイスからデータを受信する。また、CPU1100は、入出力インターフェイス1600を介して、ディスプレイやスピーカーやプリンタ等の出力デバイスにデータを送信する。また、入出力インターフェイス1600は、所定の記録媒体(メディア)に記録されたプログラム等を読み取るメディアインターフェイスとして機能してもよい。メディアとは、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
例えば、コンピュータ1000が実施形態に係る情報処理装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされた情報処理プログラムを実行することにより、制御部130等の機能を実現する。また、HDD1400には、本開示に係る情報処理プログラムや、記憶部120内のデータが格納される。なお、CPU1100は、プログラムデータ1450をHDD1400から読み取って実行するが、他の例として、外部ネットワーク1550を介して、他の装置からこれらのプログラムを取得してもよい。
なお、本技術は以下のような構成も取ることができる。
(1)
ユーザが示した複数の方向に基づき定まる位置である指示位置に、仮想オブジェクト用のマークを表示するように表示装置を制御する表示制御部、
を備える情報処理装置。
(2)
前記表示制御部は、
前記複数の方向の各々に対応する複数の幾何学的対象 に基づき定まる前記指示位置に、前記マークを表示するように前記表示装置を制御する、
(1)に記載の情報処理装置。
(3)
前記表示制御部は、
前記複数の幾何学的対象の位置関係に基づき定まる前記指示位置に、前記マークを表示するように前記表示装置を制御する、
(2)に記載の情報処理装置。
(4)
前記表示制御部は、
2方向である前記複数の方向の各々に対応する2つの幾何学的対象に基づき定まる前記指示位置に、前記マークを表示するように前記表示装置を制御する、
(2)または(3)に記載の情報処理装置。
(5)
前記表示制御部は、
2方向である前記複数の方向のうち、第1の方向に沿う第1の幾何学的対象と、第2の方向に沿う第2の幾何学的対象とに基づき定まる前記指示位置に、前記マークを表示するように前記表示装置を制御する、
(4)に記載の情報処理装置。
(6)
前記2つの幾何学的対象の位置関係に基づいて、前記マークを表示するかどうかを判定する判定部、
をさらに備え、
前記表示制御部は、
前記判定部により前記マークを表示すると判定された場合に、前記マークを表示するように前記表示装置を制御する、
(4)または(5)に記載の情報処理装置。
(7)
前記判定部は、
前記2つの幾何学的対象間の距離である対象距離が第1閾値未満である場合、前記マークを表示すると判定する、
(6)に記載の情報処理装置。
(8)
前記判定部は、
前記マークの表示時に、前記対象距離が前記第1閾値よりも大きい第2閾値以下である場合、前記マークの表示を継続すると判定し、前記対象距離が前記第2閾値を超える場合、前記マークを表示しないと判定する、
(7)に記載の情報処理装置。
(9)
前記判定部は、
前記2方向のいずれかを指示する指示構成要素と、前記指示位置との間の距離である表示距離に基づいて、前記マークを表示するかどうかを判定する、
(6)~(8)のいずれか1項に記載の情報処理装置。
(10)
前記判定部は、
前記表示距離が第3閾値を超える場合、前記マークを表示しないと判定する、
(9)に記載の情報処理装置。
(11)
前記表示制御部は、
前記2つの幾何学的対象の関係に基づく前記指示位置に、前記仮想オブジェクトを表示するように前記表示装置を制御する、
(4)~(10)のいずれか1項に記載の情報処理装置。
(12)
前記表示制御部は、
前記2つの幾何学的対象の各々から決定される2つの点に基づき定まる前記指示位置に、前記マークを表示するように前記表示装置を制御する、
(4)~(11)のいずれか1項に記載の情報処理装置。
(13)
前記表示制御部は、
前記2つの幾何学的対象の距離が最も近い前記2つの点に基づき定まる前記指示位置に、前記マークを表示するように前記表示装置を制御する、
(12)に記載の情報処理装置。
(14)
前記表示制御部は、
前記2つの点の位置が一致する場合、前記2つの点の位置を前記指示位置として、前記マークを表示するように前記表示装置を制御する、
(12)または(13)に記載の情報処理装置。
(15)
前記表示制御部は、
前記2つの点の位置が異なる場合、前記2つの点を結ぶ線分上の位置を前記指示位置として、前記マークを表示するように前記表示装置を制御する、
(12)または(13)に記載の情報処理装置。
(16)
前記表示制御部は、
前記指示位置に基づく位置である配置位置に、前記仮想オブジェクトを表示するように前記表示装置を制御する、
(1)~(15)のいずれか1項に記載の情報処理装置。
(17)
前記表示制御部は、
前記指示位置が、前記複数の方向のいずれかを指示する指示構成要素から第1位置までの距離である第1距離と、前記指示構成要素から前記第1位置よりも遠い第2位置までの距離である第2距離との間に位置する場合、前記指示位置を前記配置位置として、前記仮想オブジェクトを表示するように前記表示装置を制御する、
(16)に記載の情報処理装置。
(18)
前記表示制御部は、
前記指示位置が、前記第1距離以下である場合、前記第1位置を前記配置位置として、前記仮想オブジェクトを表示するように前記表示装置を制御する、
(17)に記載の情報処理装置。
(19)
前記表示制御部は、
前記指示位置が、前記第2距離以上である場合、前記第2位置を前記配置位置として、前記仮想オブジェクトを表示するように前記表示装置を制御する、
(17)または(18)に記載の情報処理装置。
(20)
前記表示制御部は、
前記複数の方向の各々に対応する複数の線に基づき定まる前記指示位置に、前記マークを表示するように前記表示装置を制御する、
(1)~(19)のいずれか1項に記載の情報処理装置。
(21)
前記表示制御部は、
前記複数の方向のうち、少なくとも1方向に対応する面を含む複数の幾何学的対象に基づき定まる前記指示位置に、前記マークを表示するように前記表示装置を制御する、
(1)~(19)のいずれか1項に記載の情報処理装置。
(22)
前記表示制御部は、
2方向のうち、第1の方向に沿う線と、第2の方向に沿う面とに基づき定まる前記指示位置に、前記マークを表示するように前記表示装置を制御する、
(20)に記載の情報処理装置。
(23)
前記表示制御部は、
前記ユーザが所持するコントローラにより指示される少なくとも1方向を含む前記複数の方向に基づき定まる前記指示位置に、前記マークを表示するように前記表示装置を制御する
(1)~(22)のいずれか1項に記載の情報処理装置。
(24)
前記表示制御部は、
前記ユーザの身体により指示される少なくとも1方向を含む前記複数の方向に基づき定まる前記指示位置に、前記マークを表示するように前記表示装置を制御する
(1)~(23)のいずれか1項に記載の情報処理装置。
(25)
前記表示制御部は、
前記ユーザの視線により指示される少なくとも1方向を含む前記複数の方向に基づき定まる前記指示位置に、前記マークを表示するように前記表示装置を制御する
(24)に記載の情報処理装置。
(26)
前記表示制御部は、
前記ユーザの指により指示される少なくとも1方向を含む前記複数の方向に基づき定まる前記指示位置に、前記マークを表示するように前記表示装置を制御する
(24)に記載の情報処理装置。
(27)
コンピュータが、
ユーザが示した複数の方向に基づき定まる位置である指示位置に、仮想オブジェクト用のマークを表示するように表示装置を制御する、
処理を実行する情報処理方法。
(28)
コンピュータに、
ユーザが示した複数の方向に基づき定まる位置である指示位置に、仮想オブジェクト用のマークを表示するように表示装置を制御する、
処理を実行させる情報処理プログラム。