特許第6290493号(P6290493)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社コロプラの特許一覧

特許6290493情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ
<>
  • 特許6290493-情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ 図000002
  • 特許6290493-情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ 図000003
  • 特許6290493-情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ 図000004
  • 特許6290493-情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ 図000005
  • 特許6290493-情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ 図000006
  • 特許6290493-情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ 図000007
  • 特許6290493-情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ 図000008
  • 特許6290493-情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ 図000009
  • 特許6290493-情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ 図000010
  • 特許6290493-情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ 図000011
  • 特許6290493-情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ 図000012
  • 特許6290493-情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ 図000013
  • 特許6290493-情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ 図000014
  • 特許6290493-情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ 図000015
  • 特許6290493-情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ 図000016
  • 特許6290493-情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ 図000017
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6290493
(24)【登録日】2018年2月16日
(45)【発行日】2018年3月7日
(54)【発明の名称】情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータ
(51)【国際特許分類】
   A63F 13/577 20140101AFI20180226BHJP
   A63F 13/25 20140101ALI20180226BHJP
   A63F 13/525 20140101ALI20180226BHJP
   A63F 13/212 20140101ALI20180226BHJP
   G06F 3/01 20060101ALI20180226BHJP
   G06F 3/0346 20130101ALI20180226BHJP
   G06T 19/00 20110101ALI20180226BHJP
   G09G 5/00 20060101ALI20180226BHJP
   G09G 5/38 20060101ALI20180226BHJP
   G02B 27/02 20060101ALI20180226BHJP
【FI】
   A63F13/577
   A63F13/25
   A63F13/525
   A63F13/212
   G06F3/01 570
   G06F3/0346 425
   G06F3/01 514
   G06T19/00 C
   G09G5/00 510A
   G09G5/00 550C
   G09G5/38 A
   G09G5/00 510H
   G02B27/02 Z
【請求項の数】7
【全頁数】22
(21)【出願番号】特願2017-98570(P2017-98570)
(22)【出願日】2017年5月17日
(62)【分割の表示】特願2016-163926(P2016-163926)の分割
【原出願日】2016年8月24日
(65)【公開番号】特開2018-32375(P2018-32375A)
(43)【公開日】2018年3月1日
【審査請求日】2017年7月3日
【早期審査対象出願】
(73)【特許権者】
【識別番号】509070463
【氏名又は名称】株式会社コロプラ
(72)【発明者】
【氏名】高野 友輝
(72)【発明者】
【氏名】近藤 一平
【審査官】 金田 理香
(56)【参考文献】
【文献】 特許第6157703(JP,B1)
【文献】 特開2014−068689(JP,A)
【文献】 特開2015−232783(JP,A)
【文献】 尾原 秀登(外2名),バーチャルスタジオにおける演者の手を用いた仮想物体の直接操作の実現,ヒューマンインタフェース学会研究報告集,日本,特定非営利活動法人ヒューマンインタフェース学会,2006年 6月 6日,Vol.8 No.3,P.103-109
【文献】 北村 喜文(外3名),磁石のメタファを用いた仮想・実物体操作環境,日本バーチャルリアリティ学会論文誌,日本,日本バーチャルリアリティ学会,2001年12月,第6巻第4号,P.305-311
【文献】 舟橋 健司(外3名),3次元仮想空間における仮想手による物体操作モデルと一実現法,電子情報通信学会論文誌(J81−D−II)第5号,日本,社団法人電子情報通信学会,1998年 5月25日,VOL.J81-D-II,NO.5,P.822-831
【文献】 Oculus,Toybox Demo for Oculus Touch,[online],2015年10月13日,YouTube,[2017年3月13日検索],URL,https://www.youtube.com/watch?v=iFEMiyGMa58
(58)【調査した分野】(Int.Cl.,DB名)
A63F 9/24
A63F 13/00 − 13/98
G06F 3/01
G06F 3/0346
G06F 3/048 − 3/0489
G06T 19/00
G09G 5/00 − 5/36
G09G 5/377 − 5/42
H04N 5/64 − 5/655
G02B 27/02
(57)【特許請求の範囲】
【請求項1】
コンピュータがヘッドマウントデバイスを制御するための情報処理方法であって、
前記コンピュータのプロセッサにおいて、
(a)仮想カメラと、操作オブジェクトと、対象オブジェクトとを含む仮想空間を規定する仮想空間データを特定するステップと、
(b)前記ヘッドマウントデバイスの位置と、ユーザの頭部以外における身体の一部の位置を検出するように構成された検出ユニットの検出結果を取得するステップと、
(c)前記ヘッドマウントデバイスの動きに応じて、前記仮想カメラを動かすステップと、
(d)前記身体の一部の動きに応じて、前記操作オブジェクトを動かすステップと、
(e)前記操作オブジェクトの動きに応じて、前記対象オブジェクトを選択するステップと、
(f)前記対象オブジェクトが選択された状態で、前記操作オブジェクトの動きに応じて、前記対象オブジェクトを動かすステップと、
(g)前記仮想カメラの動きに基づいて前記仮想カメラの視野を定義し、前記視野と前記仮想空間データに基づいて、視野画像データを生成するステップと、
(h)前記視野画像データに基づいて、前記ヘッドマウントデバイスに視野画像を表示させるステップと、を含み、
前記操作オブジェクトにはコリジョンエリアが設定され、前記コリジョンエリアに基づいて前記操作オブジェクトと前記対象オブジェクトの接触を判定し、
前記身体の一部の速度及び前記操作オブジェクトの速度の少なくともいずれかに応じて前記コリジョンエリアの大きさを変化させる、方法。
【請求項2】
(e)において、前記操作オブジェクトと前記対象オブジェクトの位置関係に基づいて、前記対象オブジェクトの向きまたは位置を補正し、向きまたは位置が補正された前記対象オブジェクトを前記操作オブジェクトに関連付けることにより、前記対象オブジェクトを選択する、請求項1の方法。
【請求項3】
前記身体の一部は前記ユーザの手であり、前記操作オブジェクトは前記手の動きに応じて動く仮想手である、請求項1又は2の方法。
【請求項4】
前記仮想手の動きが、前記対象オブジェクトを選択するための動きを含む場合には、前記対象オブジェクトを前記仮想手に向けて近づけるように、前記対象オブジェクトの位置を補正する、請求項3の方法。
【請求項5】
コンピュータがヘッドマウントデバイスを制御するための情報処理方法であって、
前記コンピュータのプロセッサにおいて、
(a)仮想カメラと、操作オブジェクトと、対象オブジェクトとを含む仮想空間を規定する仮想空間データを特定するステップと、
(b)前記ヘッドマウントデバイスの位置と、ユーザの頭部以外における身体の一部の位置を検出するように構成された検出ユニットの検出結果を取得するステップと、
(c)前記ヘッドマウントデバイスの動きに応じて、前記仮想カメラを動かすステップと、
(d)前記身体の一部の動きに応じて、前記操作オブジェクトを動かすステップと、
(e)前記仮想カメラの動きに基づいて前記仮想カメラの視野を定義し、前記視野と前記仮想空間データに基づいて、視野画像データを生成するステップと、
(f)前記視野画像データに基づいて、前記ヘッドマウントデバイスに視野画像を表示させるステップと、を含み、
前記身体の一部の速度及び前記操作オブジェクトの速度の少なくともいずれかに応じて、前記身体の一部の動きに起因する対象オブジェクトとの衝突判定に用いられる判定領域の大きさを変化させる方法。
【請求項6】
請求項1〜5のいずれかの方法を、前記コンピュータに実行させるプログラム。
【請求項7】
請求項1〜5のいずれかの方法を、実行するコンピュータ。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理方法、当該情報処理方法をコンピュータに実行させるためのプログラム及びコンピュータに関する。
【背景技術】
【0002】
非特許文献1は、現実空間におけるユーザの手の状態(位置や傾き等)に応じて、仮想現実(Virtual Reality:VR)空間における手オブジェクトの状態を変化させると共に、当該手オブジェクトを操作することで仮想空間内の所定のオブジェクトに所定の作用を与えることを開示している。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】“Toybox Demo for Oculus Touch” 、[online]、平成27年10月13日、Oculus、[平成28年8月6 日検索]、インターネット<https://www.youtube.com/w atch?v=iFEMiyGMa58>
【発明の概要】
【発明が解決しようとする課題】
【0004】
非特許文献1では、手オブジェクトによって所定のオブジェクトを操作する上で、改善の余地がある。例えば、ユーザが現実空間における実際の物体を操作する上では体験できないような仮想体験をユーザに提供する上で改善の余地があり、ユーザが所望のタイミングで所望の仮想オブジェクトを操作可能とする必要がある。これにより、VR空間の他、拡張現実(Augmented Reality:AR)空間、複合現実(Mixed Reality:MR)空間といった、ユーザが様々な環境において仮想オブジェクトと相互作用する仮想体験を改善し得る。
【0005】
本開示は、仮想体験を改善し得る情報処理方法、当該情報処理方法をコンピュータに実現させるためのプログラム及びコンピュータを提供することを目的とする。
【課題を解決するための手段】
【0006】
本開示が示す一態様によれば、コンピュータがヘッドマウントデバイスを制御するための情報処理方法であって、
前記コンピュータのプロセッサにおいて、
(a)仮想カメラと、操作オブジェクトと、対象オブジェクトとを含む仮想空間を規定する仮想空間データを特定するステップと、
(b)前記ヘッドマウントデバイスの位置と、ユーザの頭部以外における身体の部分の位置を検出するように構成された検出ユニットの検出結果を取得するステップと、
(c)前記ヘッドマウントデバイスの動きに応じて、前記仮想カメラを動かすステップと、
(d)前記身体の部分の動きに応じて、前記操作オブジェクトを動かすステップと、
(e)前記操作オブジェクトの動きに応じて、前記対象オブジェクトを選択するステップと、
(f)前記対象オブジェクトが選択された状態で、前記操作オブジェクトの動きに応じて、前記対象オブジェクトを動かすステップと、
(g)前記仮想カメラの動きに基づいて前記仮想カメラの視野を定義し、前記視野と前記仮想空間データに基づいて、視野画像データを生成するステップと、
(h)前記視野画像データに基づいて、前記ヘッドマウントデバイスに視野画像を表示させるステップと、を含み、
前記操作オブジェクトにはコリジョンエリアが設定され、前記コリジョンエリアに基づいて前記操作オブジェクトと前記対象オブジェクトの接触を判定し、
前記身体の一部の速度及び前記操作オブジェクトの速度の少なくともいずれかに応じて前記コリジョンエリアの大きさを変化させる、方法、が提供される。
【発明の効果】
【0007】
本開示によれば、仮想体験を改善し得る情報処理方法、当該情報処理方法をコンピュータに実現させるためのプログラム及びコンピュータを提供することができる。
【図面の簡単な説明】
【0008】
図1】ヘッドマウントディスプレイ(Head Mounted Display :HMD)システムを示す概略図である。
図2】HMDを装着したユーザの頭部を示す図である。
図3】制御装置のハードウェア構成を示す図である。
図4】外部コントローラの具体的な構成の一例を示す図である。
図5】視野画像をHMDに表示する処理を示すフローチャートである。
図6】仮想空間の一例を示すxyz空間図である。
図7】状態(A)は、図6に示す仮想空間のyx平面図である。状態(B)は、図 6に示す仮想空間のzx平面図である。
図8】HMDに表示された視野画像の一例を示す図である。
図9】状態(A)は、HMDと外部コントローラを装着したユーザを示す図である 。状態(B)は、仮想カメラと、手オブジェクトと、対象オブジェクトを含む仮想空 間を示す図である。
図10】本実施形態に係る情報処理方法を説明するためのフローチャートである。
図11】本実施形態に係る情報処理方法を説明するためのフローチャートである。
図12】右手オブジェクト400Rによって対象オブジェクト500が選択される 様子を示す。
図13】右手オブジェクト400Rによって対象オブジェクト500が選択される 様子を示す。
図14】右手オブジェクト400Rによって対象オブジェクト500が選択される 様子を示す。
図15】本実施形態に係る情報処理方法を説明するためのフローチャートである。
図16】右手オブジェクト400Rによって対象オブジェクト500が選択される 様子を示す。
【発明を実施するための形態】
【0009】
[本開示が示す実施形態の説明]
本開示が示す実施形態の概要を説明する。
(項目1)
コンピュータがヘッドマウントデバイスを制御するための情報処理方法であって、
前記コンピュータのプロセッサにおいて、
(a)仮想カメラと、操作オブジェクトと、対象オブジェクトとを含む仮想空間を規定する仮想空間データを特定するステップと、
(b)前記ヘッドマウントデバイスの位置と、ユーザの頭部以外における身体の部分の位置を検出するように構成された検出ユニットの検出結果を取得するステップと、
(c)前記ヘッドマウントデバイスの動きに応じて、前記仮想カメラを動かすステップと、
(d)前記身体の部分の動きに応じて、前記操作オブジェクトを動かすステップと、
(e)前記操作オブジェクトの動きに応じて、前記対象オブジェクトを選択するステップと、
(f)前記対象オブジェクトが選択された状態で、前記操作オブジェクトの動きに応じて、前記対象オブジェクトを動かすステップと、
(g)前記仮想カメラの動きに基づいて前記仮想カメラの視野を定義し、前記視野と前記仮想空間データに基づいて、視野画像データを生成するステップと、
(h)前記視野画像データに基づいて、前記ヘッドマウントデバイスに視野画像を表示させるステップと、を含み、
(e)において、前記操作オブジェクトと前記対象オブジェクトの位置関係に基づいて、前記対象オブジェクトの向きを補正し、向きが補正された前記対象オブジェクトを前記操作オブジェクトに関連付けることにより、前記対象オブジェクトを選択する、方法。
本項目の方法によれば、操作オブジェクトが対象オブジェクトを選択する際に、対象オブジェクトの姿勢が自動的に調整される。これにより、ユーザが身体の一部を動かして対象オブジェクトを選択する際に、正確に位置関係を調整しなくても、違和感なく対象オブジェクトを選択できる。従って、ユーザと仮想オブジェクトのインタラクションが改善され、ユーザに提供される仮想体験が改善され得る。
(項目2)
前記操作オブジェクトに関連付けられ、前記操作オブジェクトにより前記対象オブジェクトを選択するための第1方向を特定し、
前記対象オブジェクトが前記操作オブジェクトにより選択されるための第2方向を特定し、
前記第2方向を前記第1方向に近づけるように、前記対象オブジェクトの向きを補正する、項目1の方法。
これにより、ユーザが身体の一部を動かして対象オブジェクトを選択する際に、正確に位置関係を調整しなくても、違和感なく対象オブジェクトを選択できる。
(項目3)
前記身体の一部は前記ユーザの手であり、前記操作オブジェクトは前記手の動きに応じて動く仮想手であり、
前記対象オブジェクトにおける、前記仮想手の複数の選択部分によって選択されるための複数の被選択部分を特定し、複数の前記被選択部分の位置関係に基づいて前記第2方向を特定する、項目2の方法。
これにより、ユーザが仮想手を動かして対象オブジェクトを選択する際に、正確に位置関係を調整しなくても、違和感なく対象オブジェクトを掴むようにして選択できる。
(項目4)
複数の前記被選択部分を複数の前記選択部分に近づけるように、前記対象オブジェクトを前記操作オブジェクトに向けて移動させながら、前記対象オブジェクトを前記操作オブジェクトに関連付ける、項目3の方法。
これにより、ユーザが仮想手を動かして対象オブジェクトを選択する際に、正確に位置関係を調整しなくても、違和感なく対象オブジェクトを掴むようにして選択できる。
(項目5)
前記操作オブジェクトの動きが、複数の前記選択部分を第1位置から第2位置へ向けて移動させる動きを含む場合に、前記対象オブジェクトの向きを補正する、項目3または4の方法。
これにより、ユーザが対象オブジェクトを選択するために仮想手に入力した操作に基づいて対象オブジェクトの向きを調整するので、より直感的に対象オブジェクトを選択できる。
(項目6)
前記身体の一部は前記ユーザの手であり、前記操作オブジェクトは前記手の動きに応じて動く仮想手であり、
前記仮想手の動きが、前記対象オブジェクトを選択するための動きを含む場合には、前記対象オブジェクトを前記仮想手に向けて近づけるように、前記対象オブジェクトの位置を補正する、項目1〜5のいずれかの方法。
これにより、ユーザが対象オブジェクトを選択するために仮想手に入力した操作に基づいて対象オブジェクトの位置を調整するので、ユーザはより直感的に対象オブジェクトを選択できる。
(項目7)
前記仮想手にはコリジョンエリアが設定され、前記コリジョンエリアに基づいて前記仮想手と前記対象オブジェクトの接触を判定し、
前記仮想手と前記対象オブジェクトが接触している状態で、前記仮想手の動きが前記対象オブジェクトを選択するための動きを含む場合には、前記対象オブジェクトを前記仮想手に向けて近づけるように、前記対象オブジェクトの位置を補正し、
前記ユーザの手の速度に応じて前記コリジョンエリアの大きさを変化させる、項目6の方法。
これにより、ユーザの手の速度に応じて対象オブジェクトを選択しやすくすることができるので、ユーザはより直感的に対象オブジェクトを選択できる。
(項目8)
前記対象オブジェクトが、前記操作オブジェクトの可動域外に配置されている場合に、
前記操作オブジェクトに関連付けられ、前記操作オブジェクトにより前記対象オブジェクトを選択するための第1方向を特定し、
前記位置関係は、前記第1方向に前記対象オブジェクトが配置されていることを含み、
前記ユーザによる所定の操作入力に基づいて、前記対象オブジェクトを前記第1方向に沿って前記操作オブジェクトに向けて移動させる、項目1〜7のいずれかの方法。
これにより、仮想手が届かないところに配置された対象オブジェクトを、容易かつ直感的に選択することができる。
(項目9)
項目1〜8のいずれかの方法を、前記コンピュータに実行させるプログラム。
【0010】
[本開示が示す実施形態の詳細]
以下、本開示が示す実施形態について図面を参照しながら説明する。尚、本実施形態の説明において既に説明された部材と同一の参照番号を有する部材については、説明の便宜上、その説明は繰り返さない。
【0011】
最初に、図1を参照してヘッドマウントディスプレイ(HMD)システム1の構成について説明する。図1は、HMDシステム1を示す概略図である。図1に示すように、HMDシステム1は、ユーザUの頭部に装着されたHMD110と、位置センサ130と、制御装置120と、外部コントローラ320とを備える。
【0012】
HMD110は、表示部112と、HMDセンサ114と、注視センサ140とを備える。表示部112は、HMD110を装着したユーザUの視界(視野)を覆うように構成された非透過型の表示装置を備えている。これにより、ユーザUは、表示部112に表示された視野画像を見ることで仮想空間に没入することができる。尚、表示部112は、ユーザUの左目に画像を提供するように構成された左目用の表示部とユーザUの右目に画像を提供するように構成された右目用の表示部から構成されてもよい。また、HMD110は、透過型表示装置を備えていても良い。この場合、当該透過型表示装置は、その透過率を調整することにより、一時的に非透過型の表示装置として構成可能であってもよい。また、視野画像は仮想空間を構成する画像の一部に、現実空間を提示する構成を含んでいてもよい。例えば、HMD110に搭載されたカメラで撮影した画像を視野画像の一部に重畳して表示させてもよいし、当該透過型表示装置の一部の透過率を高く設定することにより、視野画像の一部から現実空間を視認可能にしてもよい。
【0013】
HMDセンサ114は、HMD110の表示部112の近傍に搭載される。HMDセンサ114は、地磁気センサ、加速度センサ、傾きセンサ(角速度センサやジャイロセンサ等)のうちの少なくとも1つを含み、ユーザUの頭部に装着されたHMD110の各種動きを検出することができる。
【0014】
注視センサ140は、ユーザUの視線方向を検出するアイトラッキング機能を有する。注視センサ140は、例えば、右目用注視センサと、左目用注視センサを備えてもよい。右目用注視センサは、ユーザUの右目に例えば赤外光を照射して、右目(特に、角膜や虹彩)から反射された反射光を検出することで、右目の眼球の回転角に関する情報を取得してもよい。一方、左目用注視センサは、ユーザUの左目に例えば赤外光を照射して、左目(特に、角膜や虹彩)から反射された反射光を検出することで、左目の眼球の回転角に関する情報を取得してもよい。
【0015】
位置センサ130は、例えば、ポジション・トラッキング・カメラにより構成され、HMD110と外部コントローラ320の位置を検出するように構成されている。位置センサ130は、制御装置120に無線又は有線により通信可能に接続されており、HMD110に設けられた図示しない複数の検知点の位置、傾き又は発光強度に関する情報を検出するように構成されている。さらに、位置センサ130は、外部コントローラ320に設けられた複数の検知点304(図4参照)の位置、傾き及び/又は発光強度に関する情報を検出するように構成されている。検知点は、例えば、赤外線や可視光を放射する発光部である。また、位置センサ130は、赤外線センサや複数の光学カメラを含んでもよい。
【0016】
HMDセンサ114、注視センサ140、位置センサ130を総称して、検出ユニットと称することがある。検出ユニットは、ユーザの身体の一部の動きを検知し、検出結果を制御装置120に出力する。検出ユニットは、HMDセンサ114のようなユーザUの頭部の動きを検知する機能と、位置センサ130のようなユーザの頭部意外の部分の動きを検知する機能を備える。また、検出ユニットは、注視センサ140のようなユーザUの視線の動きを検知する機能を備えてもよい。
【0017】
制御装置120は、HMDセンサ114や位置センサ130から取得された情報に基づいて、HMD110の位置や向きといった動き情報を取得し、当該取得された動き情報に基づいて、仮想空間における仮想視点(仮想カメラ)の位置や向きと、現実空間におけるHMD110を装着したユーザUの位置や向きを正確に対応付けることができる。さらに、制御装置120は、位置センサ130から取得された情報に基づいて、外部コントローラ320の動き情報を取得し、当該取得された動き情報に基づいて、仮想空間内に表示される手指オブジェクト(後述する)の位置や向きと、現実空間における外部コントローラ320とHMD110との間の、位置や向きの相対関係を正確に対応付けることができる。なお、外部コントローラ320の動き情報は、HMDセンサ114と同様に、外部コントローラ320に搭載された地磁気センサ、加速度センサ、傾きセンサ等であってもよい。
【0018】
制御装置120は、注視センサ140から送信された情報に基づいて、ユーザUの右目の視線と左目の視線をそれぞれ特定し、当該右目の視線と当該左目の視線の交点である注視点を特定することができる。さらに、制御装置120は、特定された注視点に基づいて、ユーザUの視線方向を特定することができる。ここで、ユーザUの視線方向は、ユーザUの両目の視線方向であって、ユーザUの右目と左目を結ぶ線分の中点と注視点を通る直線の方向に一致する。
【0019】
図2を参照して、HMD110の位置や向きに関する情報を取得する方法について説明する。図2は、HMD110を装着したユーザUの頭部を示す図である。HMD110を装着したユーザUの頭部の動きに連動したHMD110の位置や向きに関する情報は、位置センサ130及び/又はHMD110に搭載されたHMDセンサ114により検出可能である。図2に示すように、HMD110を装着したユーザUの頭部を中心として、3次元座標(uvw座標)が規定される。ユーザUが直立する垂直方向をv軸として規定し、v軸と直交しHMD110の中心を通る方向をw軸として規定し、v軸およびw軸と直交する方向をu軸として規定する。位置センサ130及び/又はHMDセンサ114は、各uvw軸回りの角度(すなわち、v軸を中心とする回転を示すヨー角、u軸を中心とした回転を示すピッチ角、w軸を中心とした回転を示すロール角で決定される傾き)を検出する。制御装置120は、検出された各uvw軸回りの角度変化に基づいて、仮想視点からの視軸を定義するための角度情報を決定する。
【0020】
図3を参照して、制御装置120のハードウェア構成について説明する。図3は、制御装置120のハードウェア構成を示す図である。制御装置120は、制御部121と、記憶部123と、I/O(入出力)インターフェース124と、通信インターフェース125と、バス126とを備える。制御部121と、記憶部123と、I/Oインターフェース124と、通信インターフェース125は、バス126を介して互いに通信可能に接続されている。
【0021】
制御装置120は、HMD110とは別体に、パーソナルコンピュータ、タブレット又はウェアラブルデバイスとして構成されてもよいし、HMD110に内蔵されていてもよい。また、制御装置120の一部の機能がHMD110に搭載されると共に、制御装置120の残りの機能がHMD110とは別体の他の装置に搭載されてもよい。
【0022】
制御部121は、メモリとプロセッサを備えている。メモリは、例えば、各種プログラム等が格納されたROM(Read Only Memory)やプロセッサにより実行される各種プログラム等が格納される複数ワークエリアを有するRAM(Random Access Memory)等から構成される。プロセッサは、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)及び/又はGPU(Graphics Processing Unit)であって、ROMに組み込まれた各種プログラムから指定されたプログラムをRAM上に展開し、RAMとの協働で各種処理を実行するように構成されている。
【0023】
プロセッサが本実施形態に係る情報処理方法をコンピュータに実行させるためのプログラム(後述する)をRAM上に展開し、RAMとの協働で当該プログラムを実行することで、制御部121は、制御装置120の各種動作を制御してもよい。制御部121は、メモリや記憶部123に格納された所定のアプリケーションプログラム(ゲームプログラムやインターフェースプログラム等を含む。)を実行することで、HMD110の表示部112に仮想空間(視野画像)を表示する。これにより、ユーザUは、表示部112に表示された仮想空間に没入することができる。
【0024】
記憶部(ストレージ)123は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、USBフラッシュメモリ等の記憶装置であって、プログラムや各種データを格納するように構成されている。記憶部123は、本実施形態に係る情報処理方法をコンピュータに実行させるプログラムを格納してもよい。また、ユーザUの認証プログラムや各種画像やオブジェクトに関するデータを含むゲームプログラム等が格納されてもよい。さらに、記憶部123には、各種データを管理するためのテーブルを含むデータベースが構築されてもよい。
【0025】
I/Oインターフェース124は、位置センサ130と、HMD110と、外部コントローラ320とをそれぞれ制御装置120に通信可能に接続するように構成されており、例えば、USB(Universal Serial Bus)端子、DVI(Digital Visual Interface)端子、HDMI(登録商標)(High―Definition Multimedia Interface)端子等により構成されている。尚、制御装置120は、位置センサ130と、HMD110と、外部コントローラ320とのそれぞれと無線接続されていてもよい。
【0026】
通信インターフェース125は、制御装置120をLAN(Local Area Network)、WAN(Wide Area Network)又はインターネット等の通信ネットワーク3に接続させるように構成されている。通信インターフェース125は、通信ネットワーク3を介してネットワーク上の外部装置と通信するための各種有線接続端子や、無線接続のための各種処理回路を含んでおり、通信ネットワーク3を介して通信するための通信規格に適合するように構成されている。
【0027】
図4を参照して、コントローラ320の一例について説明する。図4は、ある実施の形態に従うコントローラ320の概略構成を表す図である。
【0028】
図8の状態(A)に示されるように、ある局面において、コントローラ320は、右コントローラ320Rと左コントローラ320Lとを含み得る。右コントローラ320Rは、ユーザUの右手で操作される。左コントローラ320Lは、ユーザUの左手で操作される。ある局面において、右コントローラ320Rと左コントローラ320Lとは、別個の装置として対称に構成される。したがって、ユーザUは、右コントローラ320Rを把持した右手と、左コントローラ320Lを把持した左手とをそれぞれ自由に動かすことができる。別の局面において、コントローラ320は両手の操作を受け付ける一体型のコントローラであってもよい。以下、右コントローラ320Rについて説明する。
【0029】
右コントローラ320Rは、グリップ30と、フレーム31と、天面32とを備える。グリップ30は、ユーザ190の右手によって把持されるように構成されている。例えば、グリップ30は、ユーザ190の右手の掌と3本の指(中指、薬指、小指)とによって保持され得る。
【0030】
フレーム31は、その円周方向に沿って配置された複数の赤外線LED35を含む。赤外線LED35は、コントローラ320を使用するプログラムの実行中に、当該プログラムの進行に合わせて赤外線を発光する。赤外線LED35から発せられた赤外線は、右コントローラ320Rと左コントローラ320Lとの各位置や姿勢(傾き、向き)を検出するために使用され得る。図4に示される例では、二列に配置された赤外線LED35が示されているが、一列あるいは3列以上の配列が使用されてもよい。
【0031】
図8の状態(A)に示されるように、コントローラ320の姿勢がヨー、ロール、ピッチの各方向に基づいて特定される。また、状態(B)に示されるように、仮想空間2における手オブジェクト400の姿勢がヨー、ロール、ピッチの各方向に基づいて特定される。従って、コントローラ320の姿勢を手オブジェクト400の姿勢に対応付けることによって、ユーザの現実空間における手の動きに応じて、仮想空間2における手オブジェクト400を動かすことができる。
【0032】
グリップ30は、ボタン33,34と、モーションセンサ130とを含む。ボタン33は、グリップ30の側面に配置され、右手の中指による操作を受け付ける。ボタン34は、グリップ30の前面に配置され、右手の人差し指による操作を受け付ける。ある局面において、ボタン33,34は、トリガー式のボタンとして構成される。モーションセンサ130は、グリップ30の筐体に内蔵されている。なお、ユーザ190の動作がカメラその他の装置によってユーザUの周りから検出可能である場合には、グリップ30は、モーションセンサ130を備えなくてもよい。
【0033】
天面32は、ボタン36,37と、アナログスティック38とを備える。ボタン36,37は、プッシュ式ボタンとして構成される。ボタン36,37は、ユーザUの右手の親指による操作を受け付ける。アナログスティック38は、ある局面において、初期位置(ニュートラルの位置)から360度任意の方向への操作を受け付ける。当該操作は、例えば、仮想空間2に配置されるオブジェクトを移動するための操作を含む。
【0034】
ある局面において、ボタン34が押下されることによって、手オブジェクト930における人差し指が伸ばした状態から曲げた状態に変化させてもよい。ボタン33が押下されることによって、手オブジェクト930における中指、薬指、小指が伸ばした状態から曲げた状態に変化させてもよい。天面32に親指が配置されること、または、ボタン36,37のいずれかが押下されることによって、手オブジェクト930における親指が伸ばした状態から曲げた状態に変化させてもよい。
【0035】
図5から図8を参照することで視野画像をHMD110に表示するための処理について説明する。図5は、視野画像をHMD110に表示する処理を示すフローチャートである。図6は、仮想空間200の一例を示すxyz空間図である。図7における状態(A)は、図6に示す仮想空間200のyx平面図である。図7における状態(B)は、図6に示す仮想空間200のzx平面図である。図8は、HMD110に表示された視野画像Mの一例を示す図である。
【0036】
図5に示すように、ステップS1において、制御部121(図3参照)は、仮想カメラ300と、各種オブジェクトとを含む仮想空間200を示す仮想空間データを生成する。図6に示すように、仮想空間200は、中心位置21を中心とした全天球として規定される(図6では、上半分の天球のみが図示されている)。また、仮想空間200では、中心位置21を原点とするxyz座標系が設定されている。仮想カメラ300は、HMD110に表示される視野画像M(図8参照)を特定するための視軸Lを規定している。仮想カメラ300の視野を定義するuvw座標系は、現実空間におけるユーザUの頭部を中心として規定されたuvw座標系に連動するように決定される。また、制御部121は、HMD110を装着したユーザUの現実空間における移動に応じて、仮想カメラ300を仮想空間200内で移動させてもよい。また、仮想空間200内における各種オブジェクトは、例えば、左手オブジェクト400L、右手オブジェクト400R、対象オブジェクト500を含む(図8図9参照)。
【0037】
ステップS2において、制御部121は、仮想カメラ300の視野CV(図7参照)を特定する。具体的には、制御部121は、位置センサ130及び/又はHMDセンサ114から送信されたHMD110の状態を示すデータに基づいて、HMD110の位置や傾きに関する情報を取得する。次に、制御部121は、HMD110の位置や傾きに関する情報に基づいて、仮想空間200内における仮想カメラ300の位置や向きを特定する。次に、制御部121は、仮想カメラ300の位置や向きから仮想カメラ300の視軸Lを決定し、決定された視軸Lから仮想カメラ300の視野CVを特定する。ここで、仮想カメラ300の視野CVは、HMD110を装着したユーザUが視認可能な仮想空間200の一部の領域に相当する。換言すれば、視野CVは、HMD110に表示される仮想空間200の一部の領域に相当する。また、視野CVは、状態(A)に示すxy平面において、視軸Lを中心とした極角αの角度範囲として設定される第1領域CVaと、状態(B)に示すxz平面において、視軸Lを中心とした方位角βの角度範囲として設定される第2領域CVbとを有する。尚、制御部121は、注視センサ140から送信されたユーザUの視線方向を示すデータに基づいて、ユーザUの視線方向を特定し、ユーザUの視線方向に基づいて仮想カメラ300の向きを決定してもよい。
【0038】
制御部121は、位置センサ130及び/又はHMDセンサ114からのデータに基づいて、仮想カメラ300の視野CVを特定することができる。ここで、HMD110を装着したユーザUが動くと、制御部121は、位置センサ130及び/又はHMDセンサ114から送信されたHMD110の動きを示すデータに基づいて、仮想カメラ300の視野CVを変化させることができる。つまり、制御部121は、HMD110の動きに応じて、視野CVを変化させることができる。同様に、ユーザUの視線方向が変化すると、制御部121は、注視センサ140から送信されたユーザUの視線方向を示すデータに基づいて、仮想カメラ300の視野CVを移動させることができる。つまり、制御部121は、ユーザUの視線方向の変化に応じて、視野CVを変化させることができる。
【0039】
ステップS3において、制御部121は、HMD110の表示部112に表示される視野画像Mを示す視野画像データを生成する。具体的には、制御部121は、仮想空間200を規定する仮想空間データと、仮想カメラ300の視野CVとに基づいて、視野画像データを生成する。
【0040】
ステップS4において、制御部121は、視野画像データに基づいて、HMD110の表示部112に視野画像Mを表示する(図8参照)。このように、HMD110を装着しているユーザUの動きに応じて、仮想カメラ300の視野CVが更新され、HMD110の表示部112に表示される視野画像Mが更新されるので、ユーザUは仮想空間200に没入することができる。
【0041】
仮想カメラ300は、左目用仮想カメラと右目用仮想カメラを含んでもよい。この場合、制御部121は、仮想空間データと左目用仮想カメラの視野に基づいて、左目用の視野画像を示す左目用視野画像データを生成する。さらに、制御部121は、仮想空間データと、右目用仮想カメラの視野に基づいて、右目用の視野画像を示す右目用視野画像データを生成する。その後、制御部121は、左目用視野画像データと右目用視野画像データに基づいて、HMD110の表示部112に左目用視野画像と右目用視野画像を表示する。このようにして、ユーザUは、左目用視野画像と右目用視野画像から、視野画像を3次元画像として視認することができる。本開示では、説明の便宜上、仮想カメラ300の数は一つとするが、本開示の実施形態は、仮想カメラの数が2つの場合でも適用可能である。
【0042】
仮想空間200に含まれる左手オブジェクト400L、右手オブジェクト400R及び対象オブジェクト500について図9を参照して説明する。状態(A)は、HMD110とコントローラ320L,320Rを装着したユーザUを示す。状態(B)は、仮想カメラ300と、右手オブジェクト400R(第1操作オブジェクトの一例)と、左手オブジェクト400L(第2操作オブジェクトの一例)と、対象オブジェクト500とを含む仮想空間200を示す。
【0043】
図9に示すように、仮想空間200は、仮想カメラ300と、左手オブジェクト400Lと、右手オブジェクト400Rと、対象オブジェクト500とを含む。制御部121は、これらのオブジェクトを含む仮想空間200を規定する仮想空間データを生成している。上述したように、仮想カメラ300は、ユーザUが装着しているHMD110の動きに連動する。つまり、仮想カメラ300の視野は、HMD110の動きに応じて更新される。右手オブジェクト400Rは、ユーザUの右手(身体の第1部分)に装着されるコントローラ320Rの動きに応じて移動する第1操作オブジェクトである。左手オブジェクト400Lは、ユーザUの左手(身体の第2部分)に装着されるコントローラ320Lの動きに応じて移動する第2操作オブジェクトである。以降では、説明の便宜上、左手オブジェクト400Lと右手オブジェクト400Rを単に手オブジェクト400と総称する場合がある。また、左手オブジェクト400Lと右手オブジェクト400Rは、それぞれコリジョンエリアCAを有する。対象オブジェクト500は、コリジョンエリアCBを有する。コリジョンエリアCA,CBは、手オブジェクト400と対象オブジェクト500とのコリジョン判定(当たり判定)に供される。例えば、手オブジェクト400のコリジョンエリアCAと対象オブジェクト500のコリジョンエリアCBとが接触することで、手オブジェクト400と対象オブジェクト500とが接触したことが判定される。図9に示すように、コリジョンエリアCAは、例えば、手オブジェクト400の中心位置を中心とした直径Rを有する球により規定されてもよい。以下の説明では、コリジョンエリアCAは、オブジェクトの中心位置を中心とした直径Rの球状に形成されているものとする。
【0044】
対象オブジェクト500は、左手オブジェクト400L,右手オブジェクト400Rによって移動させることができる。例えば、図8に示す仮想空間200において、キャラクタオブジェクトCOが通路RW上をSTART地点からGOAL地点に向けて自動的に移動されるゲームを例示する。通路RW上には窪み部分が設けられており、キャラクタオブジェクトCOはGOAL地点に向かう途中で当該窪みに落ちてしまい、GOAL地点にたどり着くことができず、ゲームオーバーとなる。ユーザは、手オブジェクト400を操作することによって対象オブジェクト500を操作することにより、上記窪みを対象オブジェクト500でカバーすることにより、キャラクタオブジェクトCOをGOAL地点に導くことができる。
【0045】
対象オブジェクト500には、後述するようにxyz空間における配置位置を定義する座標情報が設定されている。仮想空間200には、xyz空間座標系に対応するようにグリッドGRが設定されている。ユーザが手オブジェクト400を対象オブジェクト500に接触させる(掴む動作を行ってもよい)ことによって対象オブジェクト500を選択し、この状態で対象オブジェクト500に接触している手オブジェクト400を移動させることによって対象オブジェクト500を移動させ、対象オブジェクト500の座標情報を変更させることができる。ユーザが手オブジェクト400による対象オブジェクト500の選択を解除する(掴んだ手を放すような動作を行ってもよい)と、解除した時点における対象オブジェクト500の座標に最も近いグリッドに対象オブジェクト500が配置される。
【0046】
本実施形態に係る情報処理方法について図10から図16を参照して説明する。図10図11図15は、本実施形態に係る情報処理方法を説明するためのフローチャートである。図12図14図16は、右手オブジェクト400Rによって対象オブジェクト500を選択する様子を示す。
【0047】
図10に示すように、ステップS10において、HMD110に提示される視野画像Mを特定する。本実施形態においては、図9の状態(B)に示すように、仮想カメラ300の前方に対象オブジェクト500、および、手オブジェクト400L,400Rが存在している。従って、図8に示すように、視野画像M内には、対象オブジェクト500、および、手オブジェクト400が表示される。その他のキャラクタオブジェクトCOや通路RWといったオブジェクトは、以降の説明において図示を省略する。
【0048】
ステップS11において、制御部121は、コントローラ320によって検知されるユーザUの手の動きに応じて、前述のように手オブジェクト400を動かす。
【0049】
ステップS12において、制御部121は、対象オブジェクト500と手オブジェクト400が所定の条件を満たしたか否かを判定する。本実施形態においては、左手オブジェクト400L,右手オブジェクト400Rに設定されたコリジョンエリアCAに基づいて、各手オブジェクト400と対象オブジェクト500が接触したか否かを判定する。接触した場合には、ステップS13へ進む。接触していない場合には、再びユーザの手の動き情報を待ち受け、手オブジェクト400を動かす制御を継続する。
【0050】
ステップS13において、制御部121は、手オブジェクト400に対象オブジェクト500を選択するための動きが入力されたか否かを判定する。本実施形態においては、手オブジェクト400が対象オブジェクト500を選択するための複数の選択部分を備えている。特に、対象オブジェクト500を手オブジェクト400のような仮想手によって選択する場合には、仮想手による掴む動作によって対象オブジェクト500が選択されることが好ましい。従って、複数の選択部分は、例えば図12に示すように、右手オブジェクト400Rの親指410Rと、それ以外の指のうち少なくとも一つを含む対向指420Rである。ステップS13において、制御部121は、手オブジェクト400の親指と、それ以外の指のうち少なくとも一つが曲げられたか否かを判定する。具体的には、右手オブジェクト400の動きが、親指親410Rと対向指420Rを、伸ばされた状態である第1位置から、曲げられた状態である第2位置へ向けて移動させる動きを含むか否かを判定する。
【0051】
ステップ14において、制御部121は、対象オブジェクト500が右手オブジェクト400Rによって選択された状態とする。本実施形態においては、右手オブジェクト400Rと対象オブジェクト500の接触が判定されるとともに、前述のような操作によって右手オブジェクト400Rの各指が曲げられることにより、対象オブジェクト500が右手オブジェクト400Rによって掴まれることによって選択された状態とされる。
【0052】
ステップS15において、制御部121は、対象オブジェクト500が選択された状態で、手オブジェクト400の動きに応じて対象オブジェクト400を動かす。これにより、ユーザUは、仮想手400によって対象オブジェクト500を意のままに操作することができるという仮想体験を得ることができる。
【0053】
本実施形態においては、上記のような仮想手400による対象オブジェクト500の制御に加えて、ユーザの仮想体験を改善するために、制御部121によって以下のような方法が実行される。まず、ステップS16において、制御部121は、ステップS13と同様に、ユーザから手オブジェクト400に対して対象オブジェクト500を選択するための操作が入力されたか否かを判定する。入力されたと判定された場合にはステップS17に進み、判定されなかった場合には、上記選択操作の待ち受けを継続する。
【0054】
ステップS17において、制御部121は、手オブジェクト400と対象オブジェクト500の位置関係を特定する。本実施形態において、位置関係は、手オブジェクト400および対象オブジェクト500の位置、および/または、手オブジェクト400および対象オブジェクト500の向きに関する情報に基づいて特定される。
【0055】
図12の状態(A)に示すように、手オブジェクト400の位置は、手オブジェクト400に設定された仮想空間200における座標情報に基づいて特定される。手オブジェクト400の向きは、手オブジェクト400に設定された座標を原点とする三軸の座標系に基づいて定義される。手オブジェクト400の座標情報、および、座標系は、図4に示したように、ユーザUの手の動きに基づいて特定される。
【0056】
図12の状態(A)に示すように、対象オブジェクト500の位置は、対象オブジェクト500に設定された仮想空間200における座標情報に基づいて特定される。対象オブジェクト500の向きは、対象オブジェクト500に設定された座標を原点とする三軸の座標系に基づいて定義される。手オブジェクト500の座標情報、および、座標系は、仮想空間データに基づいて特定される。
【0057】
ステップS18において、制御部121は、手オブジェクト400の複数の選択部分の位置関係を特定し、対象オブジェクト500の被選択部分を特定する。図12の状態(A)に示すように、右手オブジェクト400Rの親指410Rおよび対向指420Rによって選択されるのに適した対象オブジェクト500の部分を、被選択部分として特定する。本実施形態において、右手オブジェクト400Rが対象オブジェクト500の手前側における右上に存在しているので、対象オブジェクト500の右側面510が親指410Rによって選択されるための被選択部分と特定され得る。また、対象オブジェクト500の上側面520が対向指420Rによって選択されるための被選択部分と特定され得る。
【0058】
対象オブジェクト500の被選択部分は、手オブジェクト400の複数の選択部分の位置関係に基づいて特定されることが好ましく、例えば、右手オブジェクト400Rが対象オブジェクト500の手前側の上方に存在している場合には、対象オブジェクト500の手前側面が親指410Rによって選択されるための被選択部分と特定され、対象オブジェクト500の上側面520が対向指420Rによって選択されるための被選択部分と特定され得る。
【0059】
ステップS19において、制御部121は、手オブジェクト400における、対象オブジェクト500を選択するための第1方向D1を特定する。第1方向は操作オブジェクトの態様に応じて適宜設定されることが好ましく、本実施形態においては、右手オブジェクト400Rに設定された三軸座標系における、親指410Rと対向指420Rの間へ向かう方向を第1方向D1として特定することが好ましい。これにより、ユーザに直感的な対象オブジェクトとのインタラクションを提供し得る。本実施形態においては、右手オブジェクト400Rに設定された三軸座標系におけるロール軸、ピッチ軸、ヨー軸を基準ベクトルとして、当該基準ベクトルを合成したものを、第1方向を定義するための基準ベクトルとして適用し得る。
【0060】
ステップS20において、制御部121は、対象オブジェクト500における、手オブジェクト400に選択されるための第2方向D2を特定する。第2方向は、上記のように特定された対象オブジェクト500の被選択部分510,520に基づいてされることが好ましい。具体的には、被選択部分510,520の法線ベクトルを合成したものを、第2方向D2を定義するための基準ベクトルとして適用し得る。
【0061】
ステップS21において、制御部121は、第2方向D2を第1方向D1へ近づけるように、対象オブジェクト500の向きを補正する。本実施形態において、当該補正を行わない場合には、図12の状態(B)に示すように、手オブジェクト400と対象オブジェクト500の位置関係が適切ではない状態で、対象オブジェクト500が手オブジェクト400によって選択され得る。具体的には、親指410Rが右側面510に接触する一方、対向指420Rと上側面520の間にスペースSがあけられた状態で、対象オブジェクト500が手オブジェクト400によって選択され得る。この場合には、対象オブジェクト500が手オブジェクト400によって移動されると、ユーザが違和感を覚えるおそれがある。
【0062】
これに対し、図13の状態(A)は、当該補正を行った場合の対象オブジェクト500が手オブジェクト400の位置関係を示す。図12の状態(A)と異なり、第2方向D2を第1方向D1へ近づけるように、対象オブジェクト500の向きが補正されている。具体的には、第1方向D1と第2方向D2のなす角度が、0°または180°のいずれかに近づくように、対象オブジェクト500の向きが補正されることが好ましく、補正前の第2方向の向きから0°または180°のいずれか近い方に近づけるように、対象オブジェクト500の向きが補正されることが好ましい。本実施形態においては、第1方向D1と第2方向D2のなす角度が180°に近づくように、対象オブジェクト500の向きが補正されている。これにより、図13の状態(B)に示すように、手オブジェクト400の選択部分410R,420Rと、対象オブジェクト500の被選択部分510,520の間に生じるスペースを抑制し得る。これにより、ユーザが身体の一部を動かして対象オブジェクトを選択する際に、正確に位置関係を調整しなくても、違和感なく対象オブジェクトを選択できる。従って、ユーザと仮想オブジェクトのインタラクションが改善され、ユーザに提供される仮想体験が改善され得る。
【0063】
ステップS22において、制御部121は、被選択部分510,520を選択部分410R,420Rに近づけるように、対象オブジェクト500を手オブジェクト400に向けて移動させてもよい。これにより、これにより、ユーザが身体の一部を動かして対象オブジェクトを選択する際に、正確に位置関係を調整しなくても、違和感なく対象オブジェクトを選択できる。従って、ユーザと仮想オブジェクトのインタラクションが改善され、ユーザに提供される仮想体験が改善され得る。この場合、対象オブジェクト500を、向きが補正された後の対象オブジェクト500における第2方向D2に沿って移動させることが好ましい。これにより、制御部121は、対象オブジェクト500を手オブジェクト400に向けて、ユーザに違和感を与えないように移動させ得る。
【0064】
ステップS23において、制御部121は、手オブジェクト400に対象オブジェクト500を関連付けて選択させる。これにより、図13の状態(B)に示すように、被選択部分510,520が選択部分410R,420Rによって接触された状態で、対象オブジェクト500が違和感なく手オブジェクト400に選択され得る。その後、ステップ15へ戻り、手オブジェクト400の動きに応じて対象オブジェクト500の動きが操作される。
【0065】
なお、対象オブジェクト500を手オブジェクト400に向けて移動させる場合には、図14の状態(A)および状態(B)に示すように、対象オブジェクト500および手オブジェクト400の仮想空間200における座標情報に基づいて、移動方向D3が特定されてもよい。この場合には、対象オブジェクト500を手オブジェクト400の接触が判定された後、手オブジェクト400に選択動作が入力されることにより、対象オブジェクト500と手オブジェクト400の座標情報に基づいて容易に移動方向D3が特定され得る。これにより、制御部121が対象オブジェクト500を制御する場合に、プロセッサにおける処理負荷を低減させることができる。
【0066】
また、図14の状態(A)に示すように、仮想手400に設定されるコリジョンエリアCAのサイズは、仮想手400の移動速度(または、検出ユニットにおいて検知されるユーザの手の移動速度)に応じて変化させてもよい。例えば、仮想手400の移動速度が大きいほど、仮想手400に設定されるコリジョンエリアCAのサイズを大きくすることが好ましい。これにより、ユーザにより直感的な仮想体験を提供し得る。ユーザは手を速く動かす場合には、対象オブジェクト500と手オブジェクト400との間の位置関係の調整がいっそう困難となることが予想される。その場合に、仮想手400の移動速度に応じて対象オブジェクト500の選択しやすさを調整することで、ユーザにより直感的な仮想体験が提供され得る。
【0067】
制御部121は、手オブジェクト400の可動域外に配置された対象オブジェクト500をも操作可能に構成してもよい。図15図16は、当該処理を説明するための図である。
【0068】
ステップ24において、制御部121は、対象オブジェクト500が手オブジェクト400の可動域Rの範囲外に配置されているかどうかを判定する。可動域Rの範囲外に対象オブジェクト500が配置されている場合にはステップ25へ進み、可動域Rの範囲外に対象オブジェクト500が配置されている場合にはステップ10へ戻る。可動域Rは、仮想カメラ300を中心とし、所定距離を半径とする球状に設定されることが好ましい。可動域RはHMD110とコントローラ320の間の距離が、一般的なユーザの頭部と手の間の距離以内となるように設定されていることが好ましい。また、所定時間内におけるHMD110とコントローラ320の間の距離測定し、当該時間内における当該距離の最大値を可動域Rと設定し、ユーザに応じた可動域Rを設定することとしてもよい。
【0069】
ステップ25において、制御部121は、対象オブジェクト500が手オブジェクト400の第1方向D1に配置されているかを判定する。制御部121は、第1方向D1の延長線が対象オブジェクト500のコリジョンエリアCBと衝突するか否かに基づいて判定してもよい。Yesの場合にはステップS26へ進み、Noの場合にはステップ10へ戻る。
【0070】
ステップ26において、制御部121は、ユーザによる所定の操作入力を検知したか否かを判定する。所定の操作入力は、前述のような手オブジェクト400による対象オブジェクト500を選択するための操作であってもよい。また、コントローラ320に設けられた所定のボタンに対する所定の操作(長押し操作など)であってもよい。Yesの場合にはステップS27へ進み、Noの場合にはステップ10へ戻る。
【0071】
ステップ27において、制御部121は、対象オブジェクト500を第1方向D1に沿って手オブジェクト400に向けて移動させる。これにより、図16の状態(B)に示すように、ユーザは可動域R外に配置された対象オブジェクト500を容易に選択して、手オブジェクトによって操作することができる。
【0072】
以上、本開示の実施形態について説明をしたが、本発明の技術的範囲が本実施形態の説明によって限定的に解釈されるべきではない。本実施形態は一例であって、特許請求の範囲に記載された発明の範囲内において、様々な実施形態の変更が可能であることが当業者によって理解されるところである。本発明の技術的範囲は特許請求の範囲に記載された発明の範囲及びその均等の範囲に基づいて定められるべきである。
【0073】
本実施形態では、ユーザUの手の動きを示す外部コントローラ320の動きに応じて、手オブジェクトの移動が制御されているが、ユーザUの手自体の移動量に応じて、仮想空間内における手オブジェクトの移動が制御されてもよい。例えば、外部コントローラを用いる代わりに、ユーザの手指に装着されるグローブ型デバイスや指輪型デバイスを用いることで、位置センサ130により、ユーザUの手の位置や移動量を検出することができると共に、ユーザUの手指の動きや状態を検出することができる。また、位置センサ130は、ユーザUの手(手指を含む)を撮像するように構成されたカメラであってもよい。この場合、カメラを用いてユーザの手を撮像することにより、ユーザの手指に直接何らかのデバイスを装着させることなく、ユーザの手が表示された画像データに基づいて、ユーザUの手の位置や移動量を検出することができると共に、ユーザUの手指の動きや状態を検出することができる。
【0074】
また、本実施形態では、ユーザUの頭部以外の身体の一部である手の位置及び/又は動きに応じて、手オブジェクトが対象オブジェクトに与える影響を規定するコリジョン効果が設定されているが、本実施形態はこれには限定されない。例えば、ユーザUの頭部以外の身体の一部である足の位置及び/又は動きに応じて、ユーザUの足の動きに連動する足オブジェクト(操作オブジェクトの一例)が対象オブジェクトに与える影響を規定するコリジョン効果が設定されてもよい。
【0075】
また、本実施形態においては、HMD110によってユーザが没入する仮想空間(VR空間)を例示して説明したが、HMD110として透過型HMDを採用してもよい。この場合、透過型HMD110を介してユーザUが視認する現実空間に対象オブジェクト500の画像を合成して出力し、AR空間やMR空間としての仮想体験を提供してもよい。そして、第1操作オブジェクト、および、第2操作オブジェクトにかえて、ユーザの身体の第1部分、および、第2部分(ユーザUの両手)の動きに基づいて、対象オブジェクト500の選択、および、操作を行ってもよい。この場合には、現実空間、および、ユーザの身体の第1部分、および、第2部分の座標情報を特定するとともに、対象オブジェクト500の座標情報を現実空間における座標情報との関係で定義することによって、ユーザUの身体の動きに基づいて対象オブジェクト500に作用を与えることができる。
【符号の説明】
【0076】
1:HMDシステム
3:通信ネットワーク
21:中心位置
112:表示部
114:HMDセンサ
120:制御装置
121:制御部
123:記憶部
124:I/Oインターフェース
125:通信インターフェース
126:バス
130:位置センサ
140:注視センサ
200:仮想空間
300:仮想カメラ
302:操作ボタン
302a,302b:プッシュ式ボタン
302e,302f:トリガー式ボタン
304:検知点
320:外部コントローラ
320i:アナログスティック
320L:左手用外部コントローラ(コントローラ)
320R:右手用外部コントローラ(コントローラ)
322:天面
324:グリップ
326:フレーム
400:手オブジェクト(仮想手)
400L:左手オブジェクト
400R:右手オブジェクト
500:対象オブジェクト
CA:コリジョンエリア
CV:視野
CVa:第1領域
CVb:第2領域

図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16