IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

7064265仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法
<>
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図1
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図2
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図3
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図4
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図5
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図6
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図7
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図8
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図9
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図10
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図11
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図12
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図13
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図14
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図15
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図16
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図17
  • -仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-04-26
(45)【発行日】2022-05-10
(54)【発明の名称】仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法
(51)【国際特許分類】
   G06T 19/00 20110101AFI20220427BHJP
   A63F 13/25 20140101ALI20220427BHJP
   A63F 13/55 20140101ALI20220427BHJP
   A63F 13/52 20140101ALI20220427BHJP
   A63F 13/211 20140101ALI20220427BHJP
   A63F 13/212 20140101ALI20220427BHJP
   G06F 3/01 20060101ALI20220427BHJP
   G06F 3/04815 20220101ALI20220427BHJP
【FI】
G06T19/00 300B
A63F13/25
A63F13/55
A63F13/52
A63F13/211
A63F13/212
G06T19/00 C
G06F3/01 510
G06F3/0481 150
G06F3/01 570
【請求項の数】 13
(21)【出願番号】P 2017228020
(22)【出願日】2017-11-28
(65)【公開番号】P2019101468
(43)【公開日】2019-06-24
【審査請求日】2020-11-02
(73)【特許権者】
【識別番号】509070463
【氏名又は名称】株式会社コロプラ
(74)【代理人】
【識別番号】100140109
【弁理士】
【氏名又は名称】小野 新次郎
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【弁理士】
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100120112
【氏名又は名称】中西 基晴
(74)【代理人】
【識別番号】100138759
【弁理士】
【氏名又は名称】大房 直樹
(72)【発明者】
【氏名】加田 健志
【審査官】板垣 有紀
(56)【参考文献】
【文献】特開2002-292123(JP,A)
【文献】特開2017-021799(JP,A)
【文献】特許第6207691(JP,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 19/00
A63F 13/00 - 13/98
G06F 3/01
G06F 3/048 - 3/0489
(57)【特許請求の範囲】
【請求項1】
ユーザの頭部に関連付けられた画像表示装置を介して当該ユーザに仮想体験を提供するためのコンピュータに、
前記ユーザの身体に関連する幾何学的特徴を特定するステップと、
前記仮想体験を提供するための仮想空間を特定するステップと、
前記ユーザの頭部の動きに応じて、前記仮想空間における仮想視点からの視界を制御するステップと、
前記ユーザの動きに応じて、前記仮想空間内で第1オブジェクトを動かすステップと、
前記幾何学的特徴に基づいて、前記第1オブジェクトと前記幾何学的特徴とに応じて定まる第1領域、及び前記仮想空間内の第2オブジェクトに対して設定された第2領域の少なくとも一方を調整するステップであって、前記第1オブジェクトと前記第2オブジェクトが所定の位置関係にある時の前記第1領域と前記第2領域との重なり度合いが所定の範囲内に収まらない場合、前記重なり度合いが前記所定の範囲内に収まるように、前記第1領域の大きさ又は形状、前記仮想空間内における前記第2オブジェクトの位置、前記仮想空間内における前記第2領域の位置、及び前記第2領域の大きさ又は形状のうちの少なくとも1つを調整することを含む、ステップと、
前記仮想視点からの視界を表す視界画像を生成するステップと、
前記視界画像を前記画像表示装置に表示させるステップと、
を実行させるためのプログラム。
【請求項2】
前記幾何学的特徴は、前記ユーザの身体の特定の部位の長さを含み、
前記動かすステップは、前記特定の部位の少なくとも一部の動きに応じて、前記仮想空間内で前記第1オブジェクトを動かすことを含み、
前記第1オブジェクトは、前記特定の部位の前記少なくとも一部に対応するオブジェクトであり、
前記調整するステップは、前記特定の部位の長さが基準長よりも短い場合、前記第1領域の大きさを大きくする、前記第2オブジェクトの位置を前記第1オブジェクトに近づける、前記第2領域の位置を前記第1オブジェクトに近づける、前記第2領域の大きさを大きくする、及び前記第1領域と前記第2領域との重なり度合いが大きくなるように前記第1領域又は前記第2領域の形状を変化させる、のうちの少なくとも1つを行うことを含む、請求項1に記載のプログラム。
【請求項3】
前記幾何学的特徴は、前記ユーザの身体の特定の部位の長さを含み、
前記動かすステップは、前記特定の部位の少なくとも一部の動きに応じて、前記仮想空間内で前記第1オブジェクトを動かすことを含み、
前記第1オブジェクトは、前記特定の部位の前記少なくとも一部に対応するオブジェクトであり、
前記調整するステップは、前記特定の部位の長さが基準長よりも長い場合、前記第1領域の大きさを小さくする、前記第2オブジェクトの位置を前記第1オブジェクトから遠ざける、前記第2領域の位置を前記第1オブジェクトから遠ざける、前記第2領域の大きさを小さくする、及び前記第1領域と前記第2領域との重なり度合いが小さくなるように前記第1領域又は前記第2領域の形状を変化させる、のうちの少なくとも1つを行うことを含む、請求項1又は2に記載のプログラム。
【請求項4】
前記第1領域は、前記ユーザの動きに応じた前記第1オブジェクトの可動領域と、前記第1オブジェクトに接して配置される第3オブジェクトに対して設定されているコリジョン領域とに応じて決定される、請求項1から3のいずれか1項に記載のプログラム。
【請求項5】
前記幾何学的特徴は、前記ユーザの身長を含み、
前記動かすステップは、前記ユーザの頭部の動きに応じて、前記仮想空間内で前記第1オブジェクトを動かすことを含み、
前記第1オブジェクトは、前記仮想視点に対応して配置された仮想カメラ、又は前記頭部に対応するオブジェクトを少なくとも含むオブジェクトのいずれかであり、
前記調整するステップは、前記ユーザの身長が基準高よりも高い場合、前記第1領域の大きさを小さくする、前記第2オブジェクトの位置を高くする、前記第2領域の位置を高くする、前記第2領域の大きさを小さくする、及び前記第1領域と前記第2領域との重なり度合いが小さくなるように前記第1領域又は前記第2領域の形状を変化させる、のうちの少なくとも1つを行うことを含む、請求項1に記載のプログラム。
【請求項6】
前記幾何学的特徴は、前記ユーザの身長を含み、
前記動かすステップは、前記ユーザの頭部の動きに応じて、前記仮想空間内で前記第1オブジェクトを動かすことを含み、
前記第1オブジェクトは、前記仮想視点に対応して配置された仮想カメラ、又は前記頭部に対応するオブジェクトを少なくとも含むオブジェクトのいずれかであり、
前記調整するステップは、前記ユーザの身長が基準高よりも低い場合、前記第1領域の大きさを大きくする、前記第2オブジェクトの位置を低くする、前記第2領域の位置を低くする、前記第2領域の大きさを大きくする、及び前記第1領域と前記第2領域との重なり度合いが大きくなるように前記第1領域又は前記第2領域の形状を変化させる、のうちの少なくとも1つを行うことを含む、請求項1又は5に記載のプログラム。
【請求項7】
前記第1領域は、前記第1オブジェクトに対して設定されているコリジョン領域である、請求項1、5、又は6のいずれか1項に記載のプログラム。
【請求項8】
前記第2領域は、前記第2オブジェクトに対して設定されているコリジョン領域である、請求項1から7のいずれか1項に記載のプログラム。
【請求項9】
前記第2オブジェクトは、前記仮想視点からの視界内に含まれる、請求項1から8のいずれか1項に記載のプログラム。
【請求項10】
前記第1オブジェクトは、前記ユーザに対応する前記仮想空間内のアバターであり、
更に、前記ユーザの身長に基づいて前記アバターの身長を調整するステップを含む、請求項1から9のいずれか1項に記載のプログラム。
【請求項11】
前記幾何学的特徴を特定するステップは、
前記ユーザの身体の少なくとも一部分をトラッキングするステップと、
前記トラッキングの結果に基づいて前記ユーザの身体の幾何学的特徴を決定するステップと、
を含む、請求項1から10のいずれか1項に記載のプログラム。
【請求項12】
ユーザの頭部に関連付けられた画像表示装置を介して当該ユーザに仮想体験を提供するための情報処理装置であって、
プロセッサと、
プログラムを格納するメモリと、
を備え、
前記プログラムは、前記プロセッサによって実行されると、前記プロセッサに、
前記ユーザの身体に関連する幾何学的特徴を特定するステップと、
前記仮想体験を提供するための仮想空間を特定するステップと、
前記ユーザの頭部の動きに応じて、前記仮想空間における仮想視点からの視界を制御するステップと、
前記ユーザの動きに応じて、前記仮想空間内で第1オブジェクトを動かすステップと、
前記幾何学的特徴に基づいて、前記第1オブジェクトと前記幾何学的特徴とに応じて定まる第1領域、及び前記仮想空間内の第2オブジェクトに対して設定された第2領域の少なくとも一方を調整するステップであって、前記第1オブジェクトと前記第2オブジェクトが所定の位置関係にある時の前記第1領域と前記第2領域との重なり度合いが所定の範囲内に収まらない場合、前記重なり度合いが前記所定の範囲内に収まるように、前記第1領域の大きさ又は形状、前記仮想空間内における前記第2オブジェクトの位置、前記仮想空間内における前記第2領域の位置、及び前記第2領域の大きさ又は形状のうちの少なくとも1つを調整することを含む、ステップと、
前記仮想視点からの視界を表す視界画像を生成するステップと、
前記視界画像を前記画像表示装置に表示させるステップと、
を実行させるように構成される、情報処理装置。
【請求項13】
ユーザの頭部に関連付けられた画像表示装置を介して当該ユーザに仮想体験を提供するための情報処理方法であって、
前記ユーザの身体に関連する幾何学的特徴を特定するステップと、
前記仮想体験を提供するための仮想空間を特定するステップと、
前記ユーザの頭部の動きに応じて、前記仮想空間における仮想視点からの視界を制御するステップと、
前記ユーザの動きに応じて、前記仮想空間内で第1オブジェクトを動かすステップと、
前記幾何学的特徴に基づいて、前記第1オブジェクトと前記幾何学的特徴とに応じて定まる第1領域、及び前記仮想空間内の第2オブジェクトに対して設定された第2領域の少なくとも一方を調整するステップであって、前記第1オブジェクトと前記第2オブジェクトが所定の位置関係にある時の前記第1領域と前記第2領域との重なり度合いが所定の範囲内に収まらない場合、前記重なり度合いが前記所定の範囲内に収まるように、前記第1領域の大きさ又は形状、前記仮想空間内における前記第2オブジェクトの位置、前記仮想空間内における前記第2領域の位置、及び前記第2領域の大きさ又は形状のうちの少なくとも1つを調整することを含む、ステップと、
前記仮想視点からの視界を表す視界画像を生成するステップと、
前記視界画像を前記画像表示装置に表示させるステップと、
を含む情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、仮想体験を提供するためのプログラム、情報処理装置、及び情報処理方法に関する。
【背景技術】
【0002】
近年、ユーザに仮想現実空間(VR空間。以下、仮想空間ともいう)を体験させることが可能な様々なデバイスが開発されている。例えば、ユーザは、ヘッドマウントディスプレイを装着して仮想空間内のアバターを操作することで、仮想空間上のゲームをプレイすることができる。ユーザの現実空間における位置や動きは、トラッキングセンサによって追跡され、それらがアバターに反映される。特許文献1には、ユーザが、異なる身長の仮想ユーザ(アバター)になって仮想空間を体験することを可能にする技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特許第3408263号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
例えば仮想空間上のゲームでは、アバターの身体若しくは身体の一部、又はアバターが把持している物体(例えば剣などの近接攻撃用武器)が、仮想空間内の他の物体(例えば敵キャラクタや周囲の障害物)と接触したか否かのコリジョン判定が重要な意味を持つ。ユーザ毎に身体の大きさに差があることが原因でこのコリジョン判定が正しく行われないと、ゲームに対するユーザのプレイ感覚が異なったものとなってしまう。例えば、腕の短いユーザのアバターは、腕の長いユーザのアバターよりもリーチが短いので、アバターと敵キャラクタとの距離が同じであっても、腕の長いユーザのアバターは敵キャラクタに攻撃が届き、腕の短いユーザのアバターは敵キャラクタに攻撃が届かないということが起こり得る。特許文献1の技術は、単に仮想ユーザ(アバター)の身体の大きさを異ならせているだけであり、物体同士のコリジョンに関して考慮していない。
【0005】
本開示は、上記の点に鑑みてなされたものであり、その目的の1つは、仮想空間におけるユーザ体験を改善する方法を提供することにある。
【課題を解決するための手段】
【0006】
上述した課題を解決するために、本開示の一態様は、ユーザの頭部に関連付けられた画像表示装置を介して当該ユーザに仮想体験を提供するためのコンピュータに、前記ユーザの身体に関連する幾何学的特徴を特定するステップと、前記仮想体験を提供するための仮想空間を特定するステップと、前記ユーザの頭部の動きに応じて、前記仮想空間における仮想視点からの視界を制御するステップと、前記ユーザの動きに応じて、前記仮想空間内で第1オブジェクトを動かすステップと、前記幾何学的特徴に基づいて、前記第1オブジェクトと前記幾何学的特徴とに応じて定まる第1領域、及び前記仮想空間内の第2オブジェクトに対して設定された第2領域の少なくとも一方を調整するステップと、前記仮想視点からの視界を表す視界画像を生成するステップと、前記視界画像を前記画像表示装置に表示させるステップと、を実行させるためのプログラムである。
【0007】
また、本開示の他の一態様は、ユーザの頭部に関連付けられた画像表示装置を介して当該ユーザに仮想体験を提供するための情報処理装置であって、プロセッサと、プログラムを格納するメモリと、を備え、前記プログラムは、前記プロセッサによって実行されると、前記プロセッサに、前記ユーザの身体に関連する幾何学的特徴を特定するステップと、前記仮想体験を提供するための仮想空間を特定するステップと、前記ユーザの頭部の動きに応じて、前記仮想空間における仮想視点からの視界を制御するステップと、前記ユーザの動きに応じて、前記仮想空間内で第1オブジェクトを動かすステップと、前記幾何学的特徴に基づいて、前記第1オブジェクトと前記幾何学的特徴とに応じて定まる第1領域、及び前記仮想空間内の第2オブジェクトに対して設定された第2領域の少なくとも一方を調整するステップと、前記仮想視点からの視界を表す視界画像を生成するステップと、前記視界画像を前記画像表示装置に表示させるステップと、を実行させるように構成される、情報処理装置である。
【0008】
また、本開示の他の一態様は、ユーザの頭部に関連付けられた画像表示装置を介して当該ユーザに仮想体験を提供するための情報処理方法であって、前記ユーザの身体に関連する幾何学的特徴を特定するステップと、前記仮想体験を提供するための仮想空間を特定するステップと、前記ユーザの頭部の動きに応じて、前記仮想空間における仮想視点からの視界を制御するステップと、前記ユーザの動きに応じて、前記仮想空間内で第1オブジェクトを動かすステップと、前記幾何学的特徴に基づいて、前記第1オブジェクトと前記幾何学的特徴とに応じて定まる第1領域、及び前記仮想空間内の第2オブジェクトに対して設定された第2領域の少なくとも一方を調整するステップと、前記仮想視点からの視界を表す視界画像を生成するステップと、前記視界画像を前記画像表示装置に表示させるステップと、を含む情報処理方法である。
【発明の効果】
【0009】
本発明によれば、仮想空間におけるユーザ体験を改善する方法を提供することができる。
【図面の簡単な説明】
【0010】
図1】HMDシステム100の構成を概略的に示す。
図2】一実施形態による、コンピュータの基本的なハードウェア構成の例を表すブロック図である。
図3】一実施形態による、HMDに設定されるuvw視野座標系を概念的に表す図である。
図4】一実施形態による、仮想空間を表現する一態様を概念的に表す図である。
図5】一実施形態による、HMD110を装着するユーザの頭部を上から表した図である。
図6】仮想空間において視認領域をx方向から見たyz断面を表す図である。
図7】仮想空間において視認領域をy方向から見たxz断面を表す図である。
図8】一実施形態によるコントローラの概略構成を表す図である。
図9】一実施形態による、HMDシステムにおける仮想空間の表示処理等を実現するためのコンピュータの機能を示すブロック図である。
図10】ユーザが没入する仮想空間の画像を表示部に表示するための一般的な処理のフロー図である。
図11】本開示の一実施形態による方法1100のフローチャートである。
図12】本開示の一実施形態において想定されるゲームの一態様例を概略的に説明する図である。
図13】ステップ1104を実施するための具体的な手順を示す例示的な方法のフローチャートである。
図14】方法1100の実施形態における第1領域及び第2領域を示す図である。
図15】方法1100の実施形態における第1領域がどのように拡大されるかの一態様例を示す図である。
図16】本開示の別の実施形態による方法1150のフローチャートである。
図17】方法1150の実施形態における第1領域及び第2領域を示す図である。
図18】方法1150の実施形態における第1領域がどのように縮小されるかの一態様例を示す図である。
【発明を実施するための形態】
【0011】
[本開示の実施形態の説明]
最初に、本開示の実施形態の内容を列記して説明する。本開示の一実施形態は、以下のような構成を備える。
【0012】
(項目1)ユーザの頭部に関連付けられた画像表示装置を介して当該ユーザに仮想体験を提供するためのコンピュータに、前記ユーザの身体に関連する幾何学的特徴を特定するステップと、前記仮想体験を提供するための仮想空間を特定するステップと、前記ユーザの頭部の動きに応じて、前記仮想空間における仮想視点からの視界を制御するステップと、前記ユーザの動きに応じて、前記仮想空間内で第1オブジェクトを動かすステップと、前記幾何学的特徴に基づいて、前記第1オブジェクトと前記幾何学的特徴とに応じて定まる第1領域、及び前記仮想空間内の第2オブジェクトに対して設定された第2領域の少なくとも一方を調整するステップと、前記仮想視点からの視界を表す視界画像を生成するステップと、前記視界画像を前記画像表示装置に表示させるステップと、を実行させるためのプログラム。
【0013】
(項目2)前記調整するステップは、前記第1領域の大きさ又は形状、前記仮想空間内における前記第2オブジェクトの位置、前記仮想空間内における前記第2領域の位置、及び前記第2領域の大きさ又は形状のうちの少なくとも1つを調整することを含む、項目1に記載のプログラム。
【0014】
(項目3)前記調整するステップは、前記第1オブジェクトと前記第2オブジェクトが所定の位置関係にある時の前記第1領域と前記第2領域との重なり度合いが所定の範囲内に収まらない場合、前記重なり度合いが前記所定の範囲内に収まるように、前記第1領域の大きさ又は形状、前記仮想空間内における前記第2オブジェクトの位置、前記仮想空間内における前記第2領域の位置、及び前記第2領域の大きさ又は形状のうちの少なくとも1つを調整することを含む、項目2に記載のプログラム。
【0015】
(項目4)前記幾何学的特徴は、前記ユーザの身体の特定の部位の長さを含み、前記動かすステップは、前記特定の部位の少なくとも一部の動きに応じて、前記仮想空間内で前記第1オブジェクトを動かすことを含み、前記第1オブジェクトは、前記特定の部位の前記少なくとも一部に対応するオブジェクトであり、前記調整するステップは、前記特定の部位の長さが基準長よりも短い場合、前記第1領域の大きさを大きくする、前記第2オブジェクトの位置を前記第1オブジェクトに近づける、前記第2領域の位置を前記第1オブジェクトに近づける、前記第2領域の大きさを大きくする、及び前記第1領域と前記第2領域との重なり度合いが大きくなるように前記第1領域又は前記第2領域の形状を変化させる、のうちの少なくとも1つを行うことを含む、項目2又は3に記載のプログラム。
【0016】
(項目5)前記幾何学的特徴は、前記ユーザの身体の特定の部位の長さを含み、前記動かすステップは、前記特定の部位の少なくとも一部の動きに応じて、前記仮想空間内で前記第1オブジェクトを動かすことを含み、前記第1オブジェクトは、前記特定の部位の前記少なくとも一部に対応するオブジェクトであり、前記調整するステップは、前記特定の部位の長さが基準長よりも長い場合、前記第1領域の大きさを小さくする、前記第2オブジェクトの位置を前記第1オブジェクトから遠ざける、前記第2領域の位置を前記第1オブジェクトから遠ざける、前記第2領域の大きさを小さくする、及び前記第1領域と前記第2領域との重なり度合いが小さくなるように前記第1領域又は前記第2領域の形状を変化させる、のうちの少なくとも1つを行うことを含む、項目2から4のいずれか1項に記載のプログラム。
【0017】
(項目6)前記第1領域は、前記ユーザの動きに応じた前記第1オブジェクトの可動領域と、前記第1オブジェクトに接して配置される第3オブジェクトに対して設定されているコリジョン領域とに応じて決定される、項目1から5のいずれか1項に記載のプログラム。
【0018】
(項目7)前記幾何学的特徴は、前記ユーザの身長を含み、前記動かすステップは、前記ユーザの頭部の動きに応じて、前記仮想空間内で前記第1オブジェクトを動かすことを含み、前記第1オブジェクトは、前記仮想視点に対応して配置された仮想カメラ、又は前記頭部に対応するオブジェクトを少なくとも含むオブジェクトのいずれかであり、前記調整するステップは、前記ユーザの身長が基準高よりも高い場合、前記第1領域の大きさを小さくする、前記第2オブジェクトの位置を高くする、前記第2領域の位置を高くする、前記第2領域の大きさを小さくする、及び前記第1領域と前記第2領域との重なり度合いが小さくなるように前記第1領域又は前記第2領域の形状を変化させる、のうちの少なくとも1つを行うことを含む、項目2又は3に記載のプログラム。
【0019】
(項目8)前記幾何学的特徴は、前記ユーザの身長を含み、前記動かすステップは、前記ユーザの頭部の動きに応じて、前記仮想空間内で前記第1オブジェクトを動かすことを含み、前記第1オブジェクトは、前記仮想視点に対応して配置された仮想カメラ、又は前記頭部に対応するオブジェクトを少なくとも含むオブジェクトのいずれかであり、前記調整するステップは、前記ユーザの身長が基準高よりも低い場合、前記第1領域の大きさを大きくする、前記第2オブジェクトの位置を低くする、前記第2領域の位置を低くする、前記第2領域の大きさを大きくする、及び前記第1領域と前記第2領域との重なり度合いが大きくなるように前記第1領域又は前記第2領域の形状を変化させる、のうちの少なくとも1つを行うことを含む、項目2、3、又は7のいずれか1項に記載のプログラム。
【0020】
(項目9)前記第1領域は、前記第1オブジェクトに対して設定されているコリジョン領域である、項目1から3、7、又は8のいずれか1項に記載のプログラム。
【0021】
(項目10)前記第2領域は、前記第2オブジェクトに対して設定されているコリジョン領域である、項目1から9のいずれか1項に記載のプログラム。
【0022】
(項目11)前記第2オブジェクトは、前記仮想視点からの視界内に含まれる、項目1から10のいずれか1項に記載のプログラム。
【0023】
(項目12)前記第1オブジェクトは、前記ユーザに対応する前記仮想空間内のアバターであり、更に、前記ユーザの身長に基づいて前記アバターの身長を調整するステップを含む、項目1から11のいずれか1項に記載のプログラム。
【0024】
(項目13)前記幾何学的特徴を特定するステップは、前記ユーザの身体の少なくとも一部分をトラッキングするステップと、前記トラッキングの結果に基づいて前記ユーザの身体の幾何学的特徴を決定するステップと、を含む、項目1から12のいずれか1項に記載のプログラム。
【0025】
(項目14)ユーザの頭部に関連付けられた画像表示装置を介して当該ユーザに仮想体験を提供するための情報処理装置であって、プロセッサと、プログラムを格納するメモリと、を備え、前記プログラムは、前記プロセッサによって実行されると、前記プロセッサに、前記ユーザの身体に関連する幾何学的特徴を特定するステップと、前記仮想体験を提供するための仮想空間を特定するステップと、前記ユーザの頭部の動きに応じて、前記仮想空間における仮想視点からの視界を制御するステップと、前記ユーザの動きに応じて、前記仮想空間内で第1オブジェクトを動かすステップと、前記幾何学的特徴に基づいて、前記第1オブジェクトと前記幾何学的特徴とに応じて定まる第1領域、及び前記仮想空間内の第2オブジェクトに対して設定された第2領域の少なくとも一方を調整するステップと、前記仮想視点からの視界を表す視界画像を生成するステップと、前記視界画像を前記画像表示装置に表示させるステップと、を実行させるように構成される、情報処理装置。
【0026】
(項目15)ユーザの頭部に関連付けられた画像表示装置を介して当該ユーザに仮想体験を提供するための情報処理方法であって、前記ユーザの身体に関連する幾何学的特徴を特定するステップと、前記仮想体験を提供するための仮想空間を特定するステップと、前記ユーザの頭部の動きに応じて、前記仮想空間における仮想視点からの視界を制御するステップと、前記ユーザの動きに応じて、前記仮想空間内で第1オブジェクトを動かすステップと、前記幾何学的特徴に基づいて、前記第1オブジェクトと前記幾何学的特徴とに応じて定まる第1領域、及び前記仮想空間内の第2オブジェクトに対して設定された第2領域の少なくとも一方を調整するステップと、前記仮想視点からの視界を表す視界画像を生成するステップと、前記視界画像を前記画像表示装置に表示させるステップと、を含む情報処理方法。
【0027】
[本開示の実施形態の詳細]
以下、図面を参照しながら本発明の実施形態について詳しく説明する。
【0028】
図1を参照して、ヘッドマウントデバイス(Head-Mounted Device、HMD)システム100の構成について説明する。図1は、HMDシステム100の構成を概略的に示す。一例では、HMDシステム100は、家庭用のシステム又は業務用のシステムとして提供される。HMDは、表示部を備える所謂ヘッドマウントディスプレイであってもよく、表示部を有するスマートフォン等の端末を装着可能なヘッドマウント機器であってもよい。
【0029】
HMDシステム100は、HMD110(画像表示装置)と、トラッキングセンサ120と、コントローラ160と、コンピュータ200とを備える。HMD110は、表示部112と、注視センサ140とを含む。コントローラ160は、モーションセンサ130を含んでもよい。
【0030】
一例では、コンピュータ200は、インターネット等のネットワーク192に接続可能であってもよく、ネットワーク192に接続されるサーバ150等のコンピュータと通信可能であってもよい。別の態様において、HMD110は、トラッキングセンサ120の代わりにセンサ114を含んでもよい。
【0031】
HMD110は、ユーザ190の頭部に装着され、動作中に仮想空間をユーザに提供し得る。より具体的には、HMD110は、右目用の画像及び左目用の画像を表示部112にそれぞれ表示する。ユーザの各目がそれぞれの画像を視認すると、ユーザは、両目の視差に基づき当該画像を3次元の画像として認識し得る。
【0032】
表示部112は、例えば、非透過型の表示装置として実現される。一例では、表示部112は、ユーザの両目の前方に位置するように、HMD110の本体に配置される。したがって、ユーザは、表示部112に表示される3次元画像を視認すると、仮想空間に没入することができる。ある実施形態において、仮想空間は、例えば、背景、ユーザが操作可能なオブジェクト、ユーザが選択可能なメニューの画像等を含む。ある実施形態において、表示部112は、スマートフォン等の情報表示端末が備える液晶表示部又は有機EL(Electro Luminescence)表示部として実現され得る。
【0033】
一例では、表示部112は、右目用の画像を表示するためのサブ表示部と、左目用の画像を表示するためのサブ表示部とを含み得る。別の態様において、表示部112は、右目用の画像と左目用の画像とを一体として表示する構成であってもよい。この場合、表示部112は、高速シャッタを含む。高速シャッタは、画像がいずれか一方の目にのみ認識されるように、右目用の画像と左目用の画像とを交互に表示可能に作動する。
【0034】
一例では、HMD110は、複数の光源(図示せず)を含む。各光源は、例えば、赤外線を発するLED(Light Emitting Diode)により実現される。トラッキングセンサ120は、HMD110の動きを検出するためのポジショントラッキング機能を有する。より具体的には、トラッキングセンサ120は、HMD110が発する複数の赤外線を読み取り、現実空間内におけるHMD110の位置及び傾きを検出してもよい。
【0035】
ある態様において、トラッキングセンサ120は、カメラにより実現されてもよい。この場合、トラッキングセンサ120は、カメラから出力されるHMD110の画像情報を用いて、画像解析処理を実行することにより、HMD110の位置及び傾きを検出することができる。また、トラッキングセンサ120は、カメラによって撮像されたユーザの画像を解析することにより、ユーザの身体の一部(例えば頭や手)の位置を検出するように構成されてもよい。
【0036】
別の態様において、HMD110は、位置検出器として、トラッキングセンサ120の代わりに、センサ114を備えてもよい。HMD110は、センサ114を用いて、HMD110自身の位置及び傾きを検出し得る。例えば、センサ114が角速度センサ、地磁気センサ、加速度センサ、ジャイロセンサ等である場合、HMD110は、トラッキングセンサ120の代わりに、これらの各センサのいずれかを用いて、自身の位置及び傾きを検出し得る。一例として、センサ114が角速度センサである場合、角速度センサは、現実空間におけるHMD110の3軸周りの角速度を経時的に検出する。HMD110は、各角速度に基づいて、HMD110の3軸周りの角度の時間的変化を算出し、さらに、角度の時間的変化に基づいて、HMD110の傾きを算出する。また、HMD110は、透過型表示装置を備えていても良い。この場合、当該透過型表示装置は、その透過率を調整することにより、一時的に非透過型の表示装置として構成可能であってもよい。また、視界画像は、仮想空間を構成する画像の一部に、現実空間を提示する構成を含んでいてもよい。例えば、HMD110に搭載されたカメラで撮影した画像を視界画像の一部に重畳して表示させてもよいし、当該透過型表示装置の一部の透過率を高く設定することにより、視界画像の一部から現実空間を視認可能にしてもよい。
【0037】
注視センサ140は、ユーザ190の右目及び左目の視線が向けられる方向(視線)を検出する。当該方向の検出は、例えば、公知のアイトラッキング機能によって実現される。注視センサ140は、当該アイトラッキング機能を有するセンサにより実現される。ある態様において、注視センサ140は、右目用のセンサ及び左目用のセンサを含むことが好ましい。注視センサ140は、例えば、ユーザ190の右目及び左目に赤外光を照射するとともに、照射光に対する角膜及び虹彩からの反射光を受けることにより各眼球の回転角を検出するセンサであってもよい。注視センサ140は、検出した各回転角に基づいて、ユーザ190の視線を検知することができる。
【0038】
サーバ150は、コンピュータ200にプログラムを送信し得る。別の態様において、サーバ150は、他のユーザによって使用されるHMDに仮想現実を提供するための他のコンピュータ200と通信し得る。例えば、アミューズメント施設において、複数のユーザが参加型のゲームを行う場合、各コンピュータ200は、各ユーザの動作に基づく信号を他のコンピュータ200と通信して、同じ仮想空間において複数のユーザが共通のゲームを楽しむことを可能にする。
【0039】
コントローラ160は、有線又は無線によりコンピュータ200に接続される。コントローラ160は、ユーザ190からコンピュータ200への命令の入力を受け付ける。ある態様において、コントローラ160は、ユーザ190によって把持可能に構成される。別の態様において、コントローラ160は、ユーザ190の身体又は衣類の一部に装着可能に構成される。別の態様において、コントローラ160は、コンピュータ200から送信される信号に基づいて、振動、音、光のうちの少なくともいずれかを出力するように構成されてもよい。別の態様において、コントローラ160は、ユーザ190から、仮想空間に配置されるオブジェクトの位置や動きを制御するための操作を受け付ける。
【0040】
ある態様において、モーションセンサ130は、ユーザの手に取り付けられて、ユーザの手の動きを検出する。例えば、モーションセンサ130は、手の回転速度、回転数等を検出する。検出された信号は、コンピュータ200に送られる。モーションセンサ130は、例えば、手袋型のコントローラ160に設けられる。ある実施形態において、現実空間における安全のため、コントローラ160は、手袋型のようにユーザ190の手に装着されることにより容易に飛んで行かないものに装着されるのが望ましい。別の態様において、ユーザ190に装着されないセンサがユーザ190の手の動きを検出してもよい。ユーザ190の身体の様々な部分の位置、向き、動きの方向、動きの距離などを検知する光学式センサが用いられてもよい。例えば、ユーザ190を撮影するカメラの信号が、ユーザ190の動作を表す信号として、コンピュータ200に入力されてもよい。モーションセンサ130とコンピュータ200とは、一例として、無線により互いに接続される。無線の場合、通信形態は特に限られず、例えば、Bluetooth(登録商標)その他の公知の通信手法が用いられる。
【0041】
図2を参照して、本開示の実施形態に係るコンピュータ200について説明する。図2は、本開示の一実施形態によるコンピュータ200の基本的なハードウェア構成の例を表すブロック図である。コンピュータ200は、主たる構成要素として、プロセッサ202と、メモリ204と、ストレージ206と、入出力インターフェース208と、通信インターフェース210とを備える。各構成要素は、それぞれ、バス212に接続される。
【0042】
プロセッサ202は、コンピュータ200に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ204又はストレージ206に格納されているプログラムに含まれる一連の命令を実行する。ある態様において、プロセッサ202は、CPU(Central Processing Unit)、MPU(Micro Processor Unit)、FPGA(Field-Programmable Gate Array)等のデバイスとして実現される。
【0043】
メモリ204は、プログラム及びデータを一時的に保存する。プログラムは、例えば、ストレージ206からロードされる。データは、コンピュータ200に入力されたデータと、プロセッサ202によって生成されたデータとを含む。ある態様において、メモリ204は、RAM(Random Access Memory)等の揮発性メモリとして実現される。
【0044】
ストレージ206は、プログラム及びデータを永続的に保持する。ストレージ206は、例えば、ROM(Read-Only Memory)、ハードディスク装置、フラッシュメモリ等の不揮発性記憶装置として実現される。ストレージ206に格納されるプログラムは、HMDシステム100において仮想空間を提供するためのプログラム、シミュレーションプログラム、ゲームプログラム、ユーザ認証プログラム、他のコンピュータ200との通信を実現するためのプログラム等を含む。ストレージ206に格納されるデータは、仮想空間を規定するためのデータ及びオブジェクト等を含む。
【0045】
別の態様において、ストレージ206は、メモリカードのように着脱可能な記憶装置として実現されてもよい。さらに別の態様において、コンピュータ200に内蔵されたストレージ206の代わりに、外部の記憶装置に保存されているプログラム及びデータを使用する構成が使用されてもよい。このような構成によれば、例えば、アミューズメント施設のように複数のHMDシステム100が使用される場面において、プログラムやデータの更新を一括して行なうことが可能になる。
【0046】
ある実施形態において、入出力インターフェース208は、HMD110、トラッキングセンサ120及びモーションセンサ130との間で信号を通信する。ある態様において、入出力インターフェース208は、USB(Universal Serial Bus、USB)、DVI(Digital Visual Interface)、HDMI(登録商標)(High-Definition Multimedia Interface)等の端子を用いて実現される。なお、入出力インターフェース208は上述のものに限られない。
【0047】
ある実施形態において、入出力インターフェース208は、さらに、コントローラ160と通信し得る。例えば、入出力インターフェース208は、コントローラ160及びモーションセンサ130から出力された信号の入力を受ける。別の態様において、入出力インターフェース208は、プロセッサ202から出力された命令を、コントローラ160に送る。当該命令は、振動、音声出力、発光等をコントローラ160に指示する。コントローラ160は、当該命令を受信すると、その命令に応じて、振動、音声出力、発光等を実行する。
【0048】
通信インターフェース210は、ネットワーク192に接続され、ネットワーク192に接続されている他のコンピュータ(例えば、サーバ150)と通信する。ある態様において、通信インターフェース210は、例えば、LAN(Local Area Network)等の有線通信インターフェース、あるいは、WiFi(Wireless Fidelity)、Bluetooth(登録商標)、NFC(Near Field Communication)等の無線通信インターフェースとして実現される。なお、通信インターフェース210は上述のものに限られない。
【0049】
ある態様において、プロセッサ202は、ストレージ206にアクセスし、ストレージ206に格納されている1つ以上のプログラムをメモリ204にロードし、当該プログラムに含まれる一連の命令を実行する。当該1つ以上のプログラムは、コンピュータ200のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、仮想空間で実行可能なゲームソフトウェア等を含み得る。プロセッサ202は、入出力インターフェース208を介して、仮想空間を提供するための信号をHMD110に送る。HMD110は、その信号に基づいて表示部112に映像を表示する。
【0050】
図2に示される例では、コンピュータ200は、HMD110の外部に設けられている。しかし、別の態様において、コンピュータ200は、HMD110に内蔵されてもよい。一例として、表示部112を含む携帯型の情報通信端末(例えば、スマートフォン)がコンピュータ200として機能してもよい。
【0051】
また、コンピュータ200は、複数のHMD110に共通して用いられる構成であってもよい。このような構成によれば、例えば、複数のユーザに同一の仮想空間を提供することもできるので、各ユーザは同一の仮想空間で他のユーザと同一のアプリケーションを楽しむことができる。
【0052】
ある実施形態において、HMDシステム100では、グローバル座標系が予め設定されている。グローバル座標系は、現実空間における鉛直方向、鉛直方向に直交する水平方向、ならびに、鉛直方向及び水平方向の双方に直交する前後方向にそれぞれ平行な、3つの基準方向(軸)を有する。本実施形態では、グローバル座標系は視点座標系の1つである。そこで、グローバル座標系における水平方向、鉛直方向(上下方向)、及び前後方向は、それぞれ、x軸、y軸、z軸として規定される。より具体的には、グローバル座標系において、x軸は現実空間の水平方向に平行である。y軸は、現実空間の鉛直方向に平行である。z軸は現実空間の前後方向に平行である。
【0053】
ある態様において、トラッキングセンサ120は、赤外線センサを含む。赤外線センサが、HMD110の各光源から発せられた赤外線をそれぞれ検出すると、HMD110の存在を検出する。トラッキングセンサ120は、さらに、各点の値(グローバル座標系における各座標値)に基づいて、HMD110を装着したユーザ190の動きに応じた、現実空間内におけるHMD110の位置及び傾きを検出する。より詳しくは、トラッキングセンサ120は、経時的に検出された各値を用いて、HMD110の位置及び傾きの時間的変化を検出できる。また、後述するように、トラッキングセンサ120は、コントローラ160から発せられる赤外線を検出することによって、現実空間におけるコントローラ160の位置及び傾きを検出するように構成されてもよい。
【0054】
グローバル座標系は現実空間の座標系と平行である。したがって、トラッキングセンサ120によって検出されたHMD110の各傾きは、グローバル座標系におけるHMD110の3軸周りの各傾きに相当する。トラッキングセンサ120は、グローバル座標系におけるHMD110の傾きに基づき、uvw視野座標系をHMD110に設定する。HMD110に設定されるuvw視野座標系は、HMD110を装着したユーザ190が仮想空間において物体を見る際の視点座標系に対応する。
【0055】
図3を参照して、uvw視野座標系について説明する。図3は、ある実施形態に従うHMD110に設定されるuvw視野座標系を概念的に表す図である。トラッキングセンサ120は、HMD110の起動時に、グローバル座標系におけるHMD110の位置及び傾きを検出する。プロセッサ202は、検出された値に基づいて、uvw視野座標系をHMD110に設定する。
【0056】
図3に示されるように、HMD110は、HMD110を装着したユーザの頭部を中心(原点)とした3次元のuvw視野座標系を設定する。より具体的には、HMD110は、グローバル座標系を規定する水平方向、鉛直方向、及び前後方向(x軸、y軸、z軸)を、グローバル座標系内においてHMD110の各軸周りの傾きだけ各軸周りにそれぞれ傾けることによって新たに得られる3つの方向を、HMD110におけるuvw視野座標系のピッチ方向(u軸)、ヨー方向(v軸)、及びロール方向(w軸)として設定する。
【0057】
ある態様において、HMD110を装着したユーザ190が直立し、かつ、正面を視認している場合、プロセッサ202は、グローバル座標系に平行なuvw視野座標系をHMD110に設定する。この場合、グローバル座標系における水平方向(x軸)、鉛直方向(y軸)、及び前後方向(z軸)は、HMD110におけるuvw視野座標系のピッチ方向(u軸)、ヨー方向(v軸)及びロール方向(w軸)に一致する。
【0058】
uvw視野座標系がHMD110に設定された後、トラッキングセンサ120は、HMD110の動きに基づいて、設定されたuvw視野座標系におけるHMD110の傾き(傾きの変化量)を検出できる。この場合、トラッキングセンサ120は、HMD110の傾きとして、uvw視野座標系におけるHMD110のピッチ角(θu)、ヨー角(θv)及びロール角(θw)をそれぞれ検出する。ピッチ角(θu)は、uvw視野座標系におけるピッチ方向周りのHMD110の傾き角度を表す。ヨー角(θv)は、uvw視野座標系におけるヨー方向周りのHMD110の傾き角度を表す。ロール角(θw)は、uvw視野座標系におけるロール方向周りのHMD110の傾き角度を表す。
【0059】
トラッキングセンサ120は、検出されたHMD110の傾き角度に基づいて、HMD110が動いた後のHMD110におけるuvw視野座標系を、HMD110に設定する。HMD110と、HMD110のuvw視野座標系との関係は、HMD110の位置及び傾きに関わらず、常に一定である。HMD110の位置及び傾きが変わると、当該位置及び傾きの変化に連動して、グローバル座標系におけるHMD110のuvw視野座標系の位置及び傾きが変化する。
【0060】
ある態様において、トラッキングセンサ120は、赤外線センサからの出力に基づいて取得される赤外線の光強度及び複数の点間の相対的な位置関係(例えば、各点間の距離等)に基づいて、HMD110の現実空間内における位置を、トラッキングセンサ120に対する相対位置として特定してもよい。また、プロセッサ202は、特定された相対位置に基づいて、現実空間内(グローバル座標系)におけるHMD110のuvw視野座標系の原点を決定してもよい。
【0061】
図4を参照して、仮想空間についてさらに説明する。図4は、ある実施形態に従う仮想空間400を表現する一態様を概念的に表す図である。仮想空間400は、中心406の360度方向の全体を覆う全天球状の構造を有する。図4では、説明を複雑にしないために、仮想空間400のうちの上半分の天球が例示されている。仮想空間400では各メッシュが規定される。各メッシュの位置は、仮想空間400に規定されるXYZ座標系における座標値として予め規定されている。コンピュータ200は、仮想空間400に展開可能なコンテンツ(静止画、動画等)を構成する各部分画像を、仮想空間400において対応する各メッシュにそれぞれ対応付けて、ユーザによって視認可能な仮想空間画像が展開される仮想空間400をユーザに提供する。
【0062】
ある態様において、仮想空間400では、中心406を原点とするxyz座標系が規定される。xyz座標系は、例えば、グローバル座標系に平行である。xyz座標系は視点座標系の一種であるため、xyz座標系における水平方向、鉛直方向(上下方向)及び前後方向は、それぞれx軸、y軸及びz軸として規定される。したがって、xyz座標系のx軸(水平方向)がグローバル座標系のx軸と平行であり、xyz座標系のy軸(鉛直方向)がグローバル座標系のy軸と平行であり、xyz座標系のz軸(前後方向)がグローバル座標系のz軸と平行である。
【0063】
HMD110の起動時、すなわちHMD110の初期状態において、仮想カメラ404が、仮想空間400の中心406に配置される。ある態様において、プロセッサ202は、仮想カメラ404が撮影する画像をHMD110の表示部112に表示する。仮想カメラ404は、現実空間におけるHMD110の動きに連動して、仮想空間400を同様に移動する。これにより、現実空間におけるHMD110の位置及び向きの変化が、仮想空間400において同様に再現され得る。
【0064】
HMD110の場合と同様に、仮想カメラ404には、uvw視野座標系が規定される。仮想空間400における仮想カメラ404のuvw視野座標系は、現実空間(グローバル座標系)におけるHMD110のuvw視野座標系に連動するように規定される。したがって、HMD110の傾きが変化すると、それに応じて、仮想カメラ404の傾きも変化する。また、仮想カメラ404は、HMD110を装着したユーザの現実空間における移動に連動して、仮想空間400において移動することもできる。
【0065】
コンピュータ200のプロセッサ202は、仮想カメラ404の配置位置と、基準視線408とに基づいて、仮想空間400における視認領域410を規定する。視認領域410は、仮想空間400のうち、HMD110を装着したユーザが視認する領域に対応する。
【0066】
注視センサ140によって検出されるユーザ190の視線は、ユーザ190が物体を視認する際の視点座標系における方向である。HMD110のuvw視野座標系は、ユーザ190が表示部112を視認する際の視点座標系に等しい。また、仮想カメラ404のuvw視野座標系は、HMD110のuvw視野座標系に連動している。したがって、ある態様に従うHMDシステム100は、注視センサ140によって検出されたユーザ190の視線を、仮想カメラ404のuvw視野座標系におけるユーザの視線とみなすことができる。
【0067】
図5を参照して、ユーザの視線の決定について説明する。図5は、ある実施形態に従うHMD110を装着するユーザ190の頭部を上から表した図である。
【0068】
ある態様において、注視センサ140は、ユーザ190の右目及び左目の各視線を検出する。ある態様において、ユーザ190が近くを見ている場合、注視センサ140は、視線R1及びL1を検出する。別の態様において、ユーザ190が遠くを見ている場合、注視センサ140は、視線R2及びL2を検出する。この場合、ロール方向wに対して視線R2及びL2がなす角度は、ロール方向wに対して視線R1及びL1がなす角度よりも小さい。注視センサ140は、検出結果をコンピュータ200に送信する。
【0069】
コンピュータ200が、視線の検出結果として、視線R1及びL1の検出値を注視センサ140から受信した場合には、その検出値に基づいて、視線R1及びL1の交点である注視点N1を特定する。一方、コンピュータ200は、視線R2及びL2の検出値を注視センサ140から受信した場合には、視線R2及びL2の交点を注視点として特定する。コンピュータ200は、特定した注視点N1の位置に基づき、ユーザ190の視線N0を特定する。コンピュータ200は、例えば、ユーザ190の右目Rと左目Lとを結ぶ直線の中点と、注視点N1とを通る直線の延びる方向を、視線N0として検出する。視線N0は、ユーザ190が両目により実際に視線を向けている方向である。また、視線N0は、視認領域410に対してユーザ190が実際に視線を向けている方向に相当する。
【0070】
別の態様において、HMDシステム100は、HMDシステム100を構成するいずれかの部分に、マイク及びスピーカを備えてもよい。ユーザは、マイクに発話することにより、仮想空間400に対して、音声による指示を与えることができる。
【0071】
また、別の態様において、HMDシステム100は、テレビジョン放送受信チューナを備えてもよい。このような構成によれば、HMDシステム100は、仮想空間400においてテレビ番組を表示することができる。
【0072】
さらに別の態様において、HMDシステム100は、インターネットに接続するための通信回路、あるいは、電話回線に接続するための通話機能を備えていてもよい。
【0073】
図6及び図7を参照して、視認領域410について説明する。図6は、仮想空間400において視認領域410をx方向から見たyz断面を表す図である。図7は、仮想空間400において視認領域410をy方向から見たxz断面を表す図である。
【0074】
図6に示されるように、yz断面における視認領域410は、領域602を含む。領域602は、仮想カメラ404の配置位置と基準視線408と仮想空間400のyz断面とによって定義される。プロセッサ202は、仮想空間おける基準視線408を中心として極角αを含む範囲を、領域602として規定する。
【0075】
図7に示されるように、xz断面における視認領域410は、領域702を含む。領域702は、仮想カメラ404の配置位置と基準視線408と仮想空間400のxz断面とによって定義される。プロセッサ202は、仮想空間400における基準視線408を中心とした方位角βを含む範囲を、領域702として規定する。極角α及びβは、仮想カメラ404の配置位置と仮想カメラ404の向きとに応じて定まる。
【0076】
ある態様において、HMDシステム100は、コンピュータ200からの信号に基づいて、視界画像を表示部112に表示させることにより、仮想空間における視界をユーザ190に提供する。視界画像は、仮想空間画像402のうち視認領域410に重畳する部分に相当する。ユーザ190が、頭に装着したHMD110を動かすと、その動きに連動して仮想カメラ404も動く。その結果、仮想空間400における視認領域410の位置が変化する。これにより、表示部112に表示される視界画像は、仮想空間画像402のうち、仮想空間400においてユーザが向いた方向の視認領域410に重畳する画像に更新される。ユーザは、仮想空間400における所望の方向を視認することができる。
【0077】
このように、仮想カメラ404の向き(傾き)は仮想空間400におけるユーザの視線(基準視線408)に相当し、仮想カメラ404が配置される位置は、仮想空間400におけるユーザの視点に相当する。したがって、仮想カメラ404を移動(配置位置を変える動作、向きを変える動作を含む)させることにより、表示部112に表示される画像が更新され、ユーザ190の視界(視点、視線を含む)が移動される。
【0078】
ユーザ190は、HMD110を装着している間、現実世界を視認することなく、仮想空間400に展開される仮想空間画像402のみを視認できる。そのため、HMDシステム100は、仮想空間400への高い没入感覚をユーザに与えることができる。
【0079】
ある態様において、プロセッサ202は、HMD110を装着したユーザ190の現実空間における移動に連動して、仮想空間400において仮想カメラ404を移動し得る。この場合、プロセッサ202は、仮想空間400における仮想カメラ404の位置及び向きに基づいて、HMD110の表示部112に投影される画像領域(すなわち、仮想空間400における視認領域410)を特定する。
【0080】
ある実施形態に従うと、仮想カメラ404は、2つの仮想カメラ、すなわち、右目用の画像を提供するための仮想カメラと、左目用の画像を提供するための仮想カメラとを含んでもよい。また、ユーザ190が3次元の仮想空間400を認識できるように、適切な視差が、2つの仮想カメラに設定されてもよい。
【0081】
図8を参照して、コントローラ160の一例について説明する。図8は、ある実施形態に従うコントローラ160の概略構成を表す図である。
【0082】
ある態様において、コントローラ160は、右コントローラと左コントローラとを含み得る。説明を簡単にするために、図8には右コントローラ800のみが示される。右コントローラ800は、ユーザ190の右手で操作される。左コントローラは、ユーザ190の左手で操作される。ある態様において、右コントローラ800と左コントローラとは、別個の装置として対称に構成される。したがって、ユーザ190は、右コントローラ800を把持した右手と、左コントローラを把持した左手とをそれぞれ自由に動かすことができる。別の態様において、コントローラ160は両手の操作を受け付ける一体型のコントローラであってもよい。以下、右コントローラ800について説明する。
【0083】
右コントローラ800は、グリップ802と、フレーム804と、天面806とを備える。グリップ802は、ユーザ190の右手によって把持されるように構成されている。例えば、グリップ802は、ユーザ190の右手の掌と3本の指(中指、薬指、小指)とによって保持され得る。
【0084】
グリップ802は、ボタン808及び810と、モーションセンサ130とを含む。ボタン808は、グリップ802の側面に配置され、右手の中指による操作を受け付ける。ボタン810は、グリップ802の前面に配置され、右手の人差し指による操作を受け付ける。ある態様において、ボタン808、810は、トリガー式のボタンとして構成される。モーションセンサ130は、グリップ802の筐体に内蔵されている。なお、ユーザ190の動作がカメラその他の装置によってユーザ190の周りから検出可能である場合には、グリップ802は、モーションセンサ130を備えなくてもよい。
【0085】
フレーム804は、その円周方向に沿って配置された複数の赤外線LED812を含む。赤外線LED812は、コントローラ160を使用するプログラムの実行中に、当該プログラムの進行に合わせて赤外線を発光する。赤外線LED812から発せられた赤外線は、右コントローラ800と左コントローラ(図示しない)との各位置や姿勢(傾き、向き)を検出するためにトラッキングセンサ120によって使用され得る。図8に示される例では、2列に配置された赤外線LED812が示されているが、配列の数は図8に示されるものに限られない。1列あるいは3列以上の配列が使用されてもよい。
【0086】
天面806は、ボタン814及び816と、アナログスティック818とを備える。ボタン814及び816は、プッシュ式ボタンとして構成される。ボタン814及び816は、ユーザ190の右手の親指による操作を受け付ける。アナログスティック818は、ある態様において、初期位置(ニュートラルの位置)から360度任意の方向への操作を受け付ける。当該操作は、例えば、仮想空間400に配置されるオブジェクトを移動するための操作を含む。
【0087】
ある態様において、右コントローラ800及び左コントローラは、赤外線LED812等の部材を駆動するための電池を含む。電池は、1次電池及び2次電池のいずれであってもよく、その形状は、ボタン型、乾電池型等任意であり得る。別の態様において、右コントローラ800と左コントローラは、例えば、コンピュータ200のUSBインターフェースに接続され得る。この場合、右コントローラ800及び左コントローラは、USBインターフェースを介して電力を供給され得る。
【0088】
図9は、本開示の一実施形態による、HMDシステム100における仮想空間400の表示処理等を実現するための、コンピュータ200の機能を示すブロック図である。コンピュータ200は、主にトラッキングセンサ120、モーションセンサ130、注視センサ140、コントローラ160からの入力に基づいて、表示部112への画像出力を制御する。
【0089】
コンピュータ200は、プロセッサ202と、メモリ204と、通信制御部205とを備える。プロセッサ202は、仮想空間特定部902と、HMD動作検知部903と、視線検知部904と、基準視線決定部906と、視界領域決定部908と、コントローラ動作検知部910と、視界画像生成部912と、視界画像出力部926とを含み得る。メモリ204は様々な情報を格納するように構成され得る。一例では、メモリ204は、仮想空間データ928、オブジェクトデータ930、アプリケーションデータ932、その他のデータ934を含んでもよい。メモリ204はまた、トラッキングセンサ120、モーションセンサ130、注視センサ140、コントローラ160等からの入力に対応した出力情報を、HMD110に関連付けられる表示部112へ提供するための演算に必要な各種データを含んでもよい。オブジェクトデータ930は、仮想空間内に配置される操作オブジェクト、仮想オブジェクト等に関するデータを含んでもよい。表示部112は、HMD110に内蔵されてもよいし、HMD110に取り付け可能な別のデバイス(例えば、スマートフォン)のディスプレイであってもよい。
【0090】
図9においてプロセッサ202内に含まれるコンポーネントは、プロセッサ202が実行する機能を具体的なモジュールとして表現する1つの例にすぎない。複数のコンポーネントの機能が単一のコンポーネントによって実現されてもよい。プロセッサ202がすべてのコンポーネントの機能を実行するように構成されてもよい。
【0091】
図10は、ユーザが没入する仮想空間の画像を表示部112に表示するための一般的な処理のフロー図である。
【0092】
図9及び図10を参照して、仮想空間の画像を提供するためのHMDシステム100の一般的な処理を説明する。仮想空間400は、トラッキングセンサ120、注視センサ140及びコンピュータ200等の相互作用によって提供され得る。
【0093】
処理はステップ1002において開始する。一例として、アプリケーションデータに含まれるゲームアプリケーションがコンピュータ200によって実行されてもよい。ステップ1004において、プロセッサ202(仮想空間特定部902)は、仮想空間データ928を参照するなどして、ユーザが没入する仮想空間400を構成する天球状の仮想空間画像402を生成する。トラッキングセンサ120によってHMD110の位置や傾きが検知される。トラッキングセンサ120によって検知された情報はコンピュータ200に送信される。ステップ1006において、HMD動作検知部903は、HMD110の位置情報や傾き情報を取得する。ステップ1008において、取得された位置情報及び傾き情報に基づいて視界方向が決定される。
【0094】
注視センサ140がユーザの左右の目の眼球の動きを検出すると、当該情報がコンピュータ200に送信される。ステップ1010において、視線検知部904は、右目及び左目の視線が向けられる方向を特定し、視線方向N0を決定する。ステップ1012において、基準視線決定部906は、HMD110の傾きにより決定された視界方向又はユーザの視線方向N0を基準視線408として決定する。基準視線408はまた、HMD110の位置や傾きに追随する仮想カメラ404の位置及び傾きに基づいて決定されてもよい。
【0095】
ステップ1014において、視界領域決定部908は、仮想空間400における仮想カメラ404の視界領域410を決定する。図4に示すように、視界領域410は、仮想空間画像402のうちユーザの視界を構成する部分である。視界領域410は基準視線408に基づいて決定される。視界領域410をx方向から見たyz断面図及び視界領域410をy方向から見たxz断面図は、既に説明した図6及び図7にそれぞれ示されている。
【0096】
ステップ1016において、視界画像生成部912は、視界領域410に基づいて視界画像を生成する。視界画像は、右目用と左目用の2つの2次元画像を含む。これらの2次元画像が表示部112に重畳される(より具体的には、右目用画像が右目用表示部に出力され、左目用画像が左目用表示部に出力される)ことにより、3次元画像としての仮想空間400がユーザに提供される。ステップ1018において、視界画像出力部926は、視界画像に関する情報を表示部112に出力する。表示部112は、受信した視界画像の情報に基づいて、当該視界画像を表示する。処理はステップ1020において終了する。
【0097】
図11は、本開示の一実施形態による方法1100のフローチャートである。本開示の一実施形態において、コンピュータプログラムが、図11に示される各ステップをプロセッサ202(又はコンピュータ200)に実行させてもよい。また、本開示の別の実施形態は、方法1100を実行するプロセッサ202(又はコンピュータ200)として実施することができる。
【0098】
以下、本開示の実施形態について具体的に説明する。ここでは、本開示の実施形態を適用することができる具体例として、ユーザが、当該ユーザのアバターが配置された仮想空間に没入して楽しむことができるゲームを想定する。しかし、本開示の実施形態は、必ずしもこのような態様に限定されない。本開示の実施形態が、特許請求の範囲において規定される範囲に含まれる様々な態様を取り得ることは、当業者にとって明らかであろう。
【0099】
図12は、本実施形態において想定されるゲームの一態様例を概略的に説明する図である。この例では、ユーザ1212が、仮想空間上のアクションゲームをプレイする。図12に示されるアクションゲームは本実施形態の説明のための単なる例示にすぎず、他の任意の種類のゲーム又はゲーム以外のコンピュータアプリケーションが本実施形態に適用され得ることに留意すべきである。図12のアクションゲームにおいて、ユーザ1212は、HMD110を頭部に装着し、さらにコントローラ160を把持して操作する。一例では、コントローラ160は、図8に関して上述した構成を有する。
【0100】
仮想空間1200内には、ユーザ1212によって操作されるアバター1214、コンピュータ200によって操作される敵キャラクタ1215、及び、アバター1214と敵キャラクタ1215との戦いが行われるゲームフィールド1222が配置される。アバター1214及び敵キャラクタ1215は、それぞれの手1214A、1215Aに近接攻撃用武器(例えば剣)1214B、1215Bを把持して、互いに相手を攻撃する。アバター1214及び敵キャラクタ1215は、更に、それぞれの手1214A、1215Aに不図示の防御用装備(例えば盾)を把持してもよい。ゲームフィールド1222は、例えば、地面、建物、樹木、岩など様々なオブジェクトによって構成されてよい。ゲームのプレイ中、ユーザ1212は、現実空間において様々な動作を行うことによって、仮想空間1200内のアバター1214として仮想空間上のアクションゲームを楽しむことができる。
【0101】
図12に示されるように、アバター1214の位置に仮想カメラ1204が配置される。仮想カメラ1204は、アバター1214の視点から仮想空間1200を捉える。例えば、仮想カメラ1204が捉えるアバター1214の視点からの視界画像には、ゲームフィールド1222及びゲームフィールド1222上の対戦相手である敵キャラクタ1215が含まれる。更に、仮想カメラ1204が捉える視界画像には、アバター1214自身の手1214A、及び手1214Aに把持されている剣1214Bも含まれ得る。仮想カメラ1204によって得られた仮想空間1200の映像は、HMD110に表示される。ユーザ1212は、HMD110に表示された映像を見ることで、仮想空間1200をアバター1214の視点から視覚的に認識することができる。
【0102】
なお、ユーザ1212のアバター1214が、コンピュータ200によって操作される敵キャラクタ1215と対戦するのではなく、第2のユーザによって操作される第2のアバターと対戦するように、あるいは他の複数のユーザのそれぞれによって操作される複数のアバターと相互に対戦するように、アクションゲームが構成されていてもよい。また、ユーザ1212のアバター1214が、第2のユーザによって操作される第2のアバター、又は他の複数のユーザのそれぞれによって操作される複数のアバターと協力して、コンピュータ200によって操作される敵キャラクタ1215と対戦するように、アクションゲームが構成されるのであってもよい。
【0103】
図11に戻り、処理はステップ1102において開始する。プロセッサ202は、メモリ204に格納されているアプリケーションデータ932に含まれるゲームプログラムを読み出して実行する。
【0104】
処理はステップ1104に進み、プロセッサ202は、ゲーム開始前の準備として、ユーザ1212の身体に関連する幾何学的特徴を特定する。身体の幾何学的特徴とは、身体又は身体の一部分についての寸法若しくは形状を表す指標のことである。一例として、身体の幾何学的特徴は、ユーザ1212の腕の長さ又は身長のいずれかであってよい。しかしながら、これは限定的であると解されるべきではない。腕の長さ及び身長のほかに、例えば、ユーザ1212が両手を広げた長さ、ユーザ1212が伸ばした手を一回りさせることにより描かれる円の大きさ、ユーザ1212が椅子に座った時の頭の位置の高さ、ユーザ1212が立った状態としゃがんだ状態での頭の位置の高さの差など、任意のものを身体の幾何学的特徴として利用することができる。身体の幾何学的特徴は、具体的な数値として特定されてもよいし(例えば、腕の長さ70cm、身長170cm等)、あるいは特定の数値範囲に分類されるのであってもよい(例えば、腕の長さが「長い」、「中程度」、「短い」、身長が「高い」、「中程度」、「低い」等)。
【0105】
図13は、上記のステップ1104を実施するための具体的な手順を示す例示的な方法1300のフローチャートである。ステップ1302において、プロセッサ202は、ユーザ1212の身体又は身体の一部分をトラッキングする。ユーザ1212のトラッキングは、例えば、コントローラ160を使用して行うことができる。ユーザ1212は、まず、コントローラ160を把持した手を第1の姿勢に保持して、コントローラ160の所定のボタンを押下する。第1の姿勢は、例えば、手を縮めて胸の近くに位置させる姿勢、又は手を下に垂らした「気を付け」の姿勢などであってよい。コントローラ160は、ユーザ1212によるボタンの押下を受けてトラッキング信号を送出し、トラッキングセンサ120は、コントローラ160からのトラッキング信号を受信する。プロセッサ202は、トラッキングセンサ120によって受信されたトラッキング信号に基づいて、ユーザ1212がコントローラ160のボタンを押下した時点におけるコントローラ160の位置座標、即ち第1の姿勢におけるユーザ1212の手の位置座標を特定する。次にユーザ1212は、コントローラ160を把持した手を第2の姿勢に保持して、同様にコントローラ160の所定のボタンを押下する。第2の姿勢は、例えば、手を真直ぐ前、横、又は頭の上に伸ばした姿勢などであってよい。ユーザのボタン押下に応答して、上述の第1の姿勢の場合と同様に、プロセッサ202は、第2の姿勢におけるユーザ1212の手の位置座標を特定する。このようにして、ユーザ1212の手が第1及び第2の姿勢においてトラッキングされる。
【0106】
ユーザ1212のトラッキングは、他の方法によって行うこともできる。例えば、トラッキングセンサ120は、HMD110から発せられるトラッキング信号を受信するのであってもよく、この場合、プロセッサ202は、HMD110からのトラッキング信号に基づいてHMD110の位置座標を特定し、これによりユーザ1212の頭をトラッキングすることができる。また前述したように、トラッキングセンサ120はカメラとして実現されてもよく、この場合、プロセッサ202は、カメラによって撮像されたユーザ1212の画像に対して画像解析処理を行うことにより、ユーザ1212の身体又はその一部分(例えば手や頭)をトラッキングすることができる。また、上述したような第1及び第2の(即ち2つの)姿勢においてユーザ1212をトラッキングすることに代えて、ある特定の1つの姿勢においてユーザ1212の身体又はその一部分の位置を特定するだけであってもよいし、コントローラ160又はHMD110の位置座標を所定の短い時間間隔で繰り返し検出することによって、ユーザ1212の身体の動きに伴う手や頭の位置の変化を連続的にトラッキングしてもよい。
【0107】
処理はステップ1304に進み、プロセッサ202は、上記のステップ1302におけるトラッキングの結果に基づいて、ユーザ1212の身体の幾何学的特徴を決定する。例えば、プロセッサ202は、上述されたような第1の姿勢と第2の姿勢におけるユーザ1212の手の位置座標の差に基づいて、ユーザ1212の腕の長さを決定することができる。また別の例として、プロセッサ202は、ユーザ1212に装着されているHMD110の位置座標、即ちユーザ1212の頭の位置座標に基づいて、ユーザ1212の身長を決定することができる。更なる別の例として、プロセッサ202は、適宜の方法で行ったユーザ1212の身体又はその一部分のトラッキング結果を用いて、上で例示したような、ユーザ1212が両手を広げた長さ、ユーザ1212が伸ばした手を一回りさせることにより描かれる円の大きさ、ユーザ1212が椅子に座った時の頭の位置の高さ、ユーザ1212が立った状態としゃがんだ状態での頭の位置の高さの差などを、ユーザ1212の身体の幾何学的特徴として決定することもできる。
【0108】
再び図11を参照して、処理はステップ1106に進む。ステップ1106において、プロセッサ202は、仮想空間データ928及びオブジェクトデータ930等に基づいて、図12に示されるようなアクションゲームのための仮想空間1200を特定する。前述したように、仮想空間1200は、ユーザ1212のアバター1214、敵キャラクタ1215、ゲームフィールド1222、及び仮想カメラ1204を含む。仮想空間データ928は、アバター1214、敵キャラクタ1215、仮想カメラ1204、及びその他の様々なオブジェクト(例えば、ゲームフィールド1222上に存在し得る建物、樹木、岩など)の、仮想空間1200内の初期配置位置を規定する。オブジェクトデータ930は、これらの様々なオブジェクトのそれぞれに関する各種のプロパティ(例えば、アバター1214及び敵キャラクタ1215の容姿並びにゲーム内の各種能力値等、ゲームフィールド1222上の各オブジェクトの形状、大きさ、色彩、及び模様等)を規定する。プロセッサ202は、メモリ204から仮想空間データ928及びオブジェクトデータ930を読み出し、当該読み出したデータに従って各オブジェクトを配置することによって、仮想空間1200を特定する。
【0109】
処理はステップ1108に進み、プロセッサ202は、ユーザ1212の頭部の動きに応じて、仮想空間1200における仮想視点(仮想カメラ1204の位置)からの視界を制御する。例えば、ユーザ1212が頭部に装着したHMD110の位置及び傾きが、所定の時間間隔で連続的にトラッキングセンサ120によって検出される。プロセッサ202は、検出されたHMD110の位置に対応した仮想空間1200内の位置を仮想視点と定め、当該仮想視点に仮想カメラ1204を配置する。またプロセッサ202は、トラッキングセンサ120によって検出されたHMD110の傾きに対応した仮想空間1200内の方向を基準視線(例えば図4に示される基準視線408)と定め、当該基準視線の方向に仮想カメラ1204を配向させる。図4を参照して前述されたように、仮想カメラ1204の位置と基準視線(基準視線408)とによって、仮想空間1200においてユーザ1212が視認できる視界(例えば図4に示されるような視認領域410)が決定される。このように、ユーザ1212が頭部を動かすと、その動きに連動するように、仮想カメラ1204によって捉えられる視界が変化する。
【0110】
処理はステップ1110に進み、プロセッサ202は、ユーザ1212の手の動きに応じて、仮想空間1200内のアバター1214の手1214A(第1オブジェクト)を動かす。例えば、ユーザ1212が把持するコントローラ160の位置及び傾きが、所定の時間間隔で連続的にトラッキングセンサ120によって検出される。プロセッサ202は、検出されたコントローラ160の位置及び傾きと整合するように、仮想空間1200におけるアバター1214の手1214Aの動きを制御する。アバター1214の手1214Aには、敵キャラクタ1215(第2オブジェクト)に対する近接攻撃をするための剣1214B(第3オブジェクト)が把持されている。ユーザ1212は、手の動きとコントローラ160への入力操作を適宜に組み合わせて行うことによって、アバター1214の手1214A及び剣1214Bを操作し、敵キャラクタ1215に剣1214Bによる攻撃を加えることができる。
【0111】
またステップ1110において、プロセッサ202は、ユーザ1212の頭部の動きに応じて、仮想空間1200内のアバター1214(第1オブジェクト)を動かす。例えば、上述のステップ1108と同様に、ユーザ1212に装着されたHMD110の位置及び傾きが、所定の時間間隔で連続的にトラッキングセンサ120によって検出される。プロセッサ202は、検出されたHMD110の位置及び傾きと整合するように、仮想空間1200におけるアバター1214の頭部1214Cの位置及び傾きを決定する。そしてプロセッサ202は、アバター1214の全身の姿勢が、当該決定した頭部1214Cの位置及び傾きとの関係において自然な姿勢となるように、アバター1214の頭部1214C以外の部位を制御する。例えば、ユーザ1212は前後左右に動くことで、仮想空間1200内のアバター1214を前後左右に動かし、敵キャラクタ1215に対するアバター1214の相対位置を変えることができる。また例えば、ユーザ1212がしゃがんだ姿勢をとった場合、HMD110の検出位置を反映してアバター1214の頭部1214Cが比較的低い位置に配置されるとともに、アバター1214の頭部1214Cの位置が比較的低いことに応じてアバター1214にしゃがんだ姿勢をとらせるように、アバター1214の身体の各部位が自動的に制御される。このように、ユーザ1212は、アバター1214をしゃがませることによって、敵キャラクタ1215からの攻撃を回避することもできる。
【0112】
図12に示される仮想空間1200の例において、アバター1214は、胴体及び手1214Aを持たず頭部1214Cだけを備えるように表現されてもよい。この場合、プロセッサ202は、アバター1214の頭部1214C(第1オブジェクト)の位置及び傾きだけを、トラッキングセンサ120によって検出されたHMD110の位置及び傾きと整合するように制御する。更にまた、図12に示される仮想空間1200の例において、アバター1214を登場させることなく仮想カメラ1204及び剣1214Bが配置されるのであってもよい。この場合、プロセッサ202は、仮想カメラ1204(第1オブジェクト)の位置及び傾きを、トラッキングセンサ120によって検出されたHMD110の位置及び傾きと整合するように制御する。
【0113】
処理はステップ1112に進み、プロセッサ202は、前述のステップ1104において特定されたユーザ1212の腕の長さが、所定の基準長よりも長いか短いかを判定する。所定の基準長は、例えば、当該アクションゲームにおいて想定されるユーザの標準的な腕の長さとして予め任意に設定された値(例えば70cm)であってよい。ユーザ1212の腕の長さが所定の基準長よりも短い場合、処理はステップ1114に進み、所定の基準長よりも長い場合、処理はステップ1116に進む。
【0114】
ユーザ1212の腕の長さが所定の基準長よりも短い場合、ステップ1114において、プロセッサ202は、アバター1214の手1214A(第1オブジェクト)に関連付けられた仮想空間1200内の第1領域を、その大きさが大きくなるように調整する。方法1100の実施形態において、第1領域は、仮想空間1200内の任意の一地点においてアバター1214が手1214Aを動かすことのできる範囲(可動領域)と、アバター1214が手1214Aに把持した剣1214B(第3オブジェクト)に設定されているコリジョン領域とによって定義される領域である。
【0115】
図14は、方法1100の実施形態における第1領域1410を示す。図14において、アバター1214は仮想空間1200内のある地点Pに位置している。アバター1214は、地点Pにおいて、手1214Aを可動領域1420内でのみ動かすことができる。手1214Aの可動領域1420は、ユーザ1212がコントローラ160を持った手を動かせる範囲に対応している。即ち、ユーザ1212が手を最大限に伸ばして様々な方向に動かしたときにその手の軌跡として描かれる曲面が、可動領域1420の外縁を規定する。一方、剣1214Bにはコリジョン領域1430が予め定められている。コリジョン領域1430は、その内部に入った物体又は物体の一部分が、剣1214Bと接触したと判定される領域である。例えば、コリジョン領域1430内に敵キャラクタ1215の身体の一部分が入った時、敵キャラクタ1215は剣1214Bによる攻撃を受けたとの判定がなされる。図14に示されるように、コリジョン領域1430は、例えば、その内部に剣1214Bの全体を包含するような円柱状の形に設定される。アバター1214が剣1214Bを把持した手1214Aを可動領域1420内で様々に動かすと、剣1214Bに付随するコリジョン領域1430が通る軌跡は、コリジョン領域1430に相当する分だけ可動領域1420よりも広い領域1410を描く。この広い領域が、第1領域1410である。このように、第1領域1410は、アバター1214の剣1214Bによる攻撃が届く範囲を規定する。
【0116】
別の例において、アバター1214が手1214Aを様々な方向に動かした際に、その手1214Aに設定されたコリジョン領域の軌跡によって描かれる領域を、第1領域と定義してもよい。この場合の第1領域は、アバター1214の手1214Aによる攻撃が届く範囲を表す。
【0117】
図14は、第1領域1410に加えて、敵キャラクタ1215(第2オブジェクト)に関連付けられた第2領域1440も示す。方法1100の実施形態において、第2領域1440は、予め敵キャラクタ1215に対して設定されているコリジョン領域である。敵キャラクタ1215のコリジョン領域1440内に対戦相手の武器(例えばアバター1214の剣1214B)又はその一部分が入ると、敵キャラクタ1215が当該武器による攻撃を受けたとの判定がなされる。このように、第2領域1440は、敵キャラクタ1215に対する攻撃が有効と判定される範囲を規定する。
【0118】
上述の説明から理解されるように、第1領域1410の大きさは、ユーザ1212の腕の長さに依存する。したがって、ユーザ1212の体格によっては、たとえユーザ1212が最大限に手を伸ばしたとしてもアバター1214からの剣1214B又は手1214Aによる攻撃が敵キャラクタ1215に絶対に当たらない、あるいはその反対に、ユーザ1212が少し手を伸ばしただけでアバター1214からの剣1214B又は手1214Aによる攻撃が敵キャラクタ1215に簡単に当たってしまう、といったようなことが起こり得る。図14を参照すると、アバター1214の第1領域1410と敵キャラクタ1215の第2領域1440が重なっていれば、アバター1214は適切な方向に攻撃を出すことで、敵キャラクタ1215に剣1214B又は手1214Aによる攻撃を当てることができる。しかしながら、アバター1214の第1領域1410と敵キャラクタ1215の第2領域1440が重なりを有さず互いに離れている場合には、アバター1214は剣1214B又は手1214Aによる攻撃を決して敵キャラクタ1215に当てることができない。
【0119】
ステップ1114の実施によって、ユーザ1212の腕の長さが所定値よりも短い場合に、第1領域1410の大きさが大きくなるように第1領域1410が調整される。例えば、プロセッサ202は、アバター1214の剣1214Bに設定されているコリジョン領域1430を大きくすることによって、第1領域1410を拡大させる。一例として、プロセッサ202は、剣1214B自体の大きさは不変としたまま、剣1214Bの周りのコリジョン領域1430のみを大きくするのであってよい。この場合、剣1214Bの見た目は変わらないが、剣1214Bの攻撃の有効範囲1430だけが大きくなる。また別の例として、プロセッサ202は、コリジョン領域1430を大きくするのに合わせて剣1214Bを大きくするのであってもよい。この場合、剣1214Bの見た目と攻撃の有効範囲1430の両方が大きくなる。こうして、第1領域1410の拡大が達成されることにより、アバター1214の第1領域1410と敵キャラクタ1215の第2領域1440との重なりを生じさせることができ、それにより、腕の短いユーザ1212が操作するアバター1214からの剣1214Bによる攻撃が、敵キャラクタ1215に絶対に当たらないという不合理な事象の発現を回避することができる。
【0120】
ステップ1114において、第1領域1410は、第1領域1410と第2領域1440との重なり度合いが所定の範囲内に収まるように拡大されるのであってよい。図15は、第1領域1410がどのように拡大されるかの一態様例を示す。図15において、アバター1214及び敵キャラクタ1215は、それぞれ仮想空間1200内の地点P及び地点Qに位置している。地点P及び地点Qは、当該アクションゲームにおいて想定される標準的な体格のユーザがアバター1214を操作する場合に、地点Pのアバター1214からの剣1214Bによる攻撃が地点Qの敵キャラクタ1215へ届くような関係にある2地点である。即ち、当該標準的な体格のユーザの場合の第1領域(不図示)は、敵キャラクタ1215の第2領域1440と重なりを有している。しかしながら、例えば、ある特定のユーザ1212は腕の長さが基準長よりも短いため、図15に示されるように、ユーザ1212が操作するアバター1214の第1領域1410と敵キャラクタ1215の第2領域1440は重なりを有しておらず、互いに離れている。この第1領域1410は、ステップ1114の実施によって、第2領域1440と部分的に重なるようにより大きな第1領域1415へと拡大される。
【0121】
第1領域1410(又は拡大された第1領域1415)と第2領域1440との重なり度合いは、任意の方法で定義することができる。例えば、第1領域1410の内部の体積をV1、第2領域1440の内部の体積をV2、第1領域1410と第2領域1440が重なっている部分の体積をV12としたとき、重なり度合いDは、D=V12/(V1+V2)又はD=V12/V1のように定義されてよい。また例えば、第1領域1410の中心点をC1、第2領域1440の中心点をC2、点C1と点C2を結ぶ線分が第1領域1410と交わる点をX1、点C1と点C2を結ぶ線分が第2領域1440と交わる点をX2、点C1と点C2との距離をd12、点C1と点X1との距離をd1、点C2と点X2との距離をd2としたとき、重なり度合いDは、D=(d1+d2)/d12と定義されてもよい。プロセッサ202は、このようないずれかの方法で定義された重なり度合いDが所定の数値範囲内の値となるように、第1領域1410を第1領域1415へ拡大させる。なお、当該所定の数値範囲は、適宜の任意の2つの数値に挟まれた数値範囲(例えば5%から15%の範囲)であってよい。
【0122】
前述のステップ1112の判定においてユーザ1212の腕の長さが所定の基準長よりも長いと判定された場合、ステップ1116において、プロセッサ202は、アバター1214の第1領域1410を、その大きさが小さくなるように調整する。例えば、プロセッサ202は、アバター1214の剣1214Bに設定されているコリジョン領域1430を小さくすることによって、第1領域1410を縮小させる。上述したステップ1114の場合と同様に、プロセッサ202は、コリジョン領域1430のみを小さくしてもよいし、コリジョン領域1430と剣1214Bの両方を小さくするのであってもよい。第1領域1410の縮小は、ステップ1114の場合と同様、第1領域1410と第2領域1440との重なり度合いが所定の数値範囲内の値となるように行われる。第1領域1410が縮小されることにより、アバター1214の第1領域1410と敵キャラクタ1215の第2領域1440との重なりを減じさせることができ、それにより、腕の長いユーザ1212が少し手を動かしただけでアバター1214からの剣1214Bによる攻撃が敵キャラクタ1215に簡単に当たってしまうという不公平な事象の発現を回避することができる。
【0123】
ステップ1114及びステップ1116の後、処理はステップ1118に進む。プロセッサ202は、仮想空間1200を仮想カメラ1204で捉えた視界画像を生成する。視界画像は、仮想カメラ1204の位置即ち仮想視点からの視界を表す。視界画像は、図10のステップ1006からステップ1016として上述された手法に従って生成することができる。
【0124】
処理はステップ1120に進み、プロセッサ202は、視界画像をHMD110の表示部112に表示させる。これにより、ユーザ1212は、仮想空間1200に没入する体験を味わうことができる。
【0125】
以上説明した方法1100の実施形態では、ステップ1114及びステップ1116において、第1領域1410を拡大又は縮小する方法がとられた。しかしながら、第1領域1410を拡大又は縮小する以外の他の方法が採用されてもよい。図15を参照すると、例えば、ユーザ1212の腕の長さが所定の基準長よりも短い場合に、敵キャラクタ1215の位置をアバター1214に近づけることによって、腕の長さが短いユーザ1212でもアバター1214からの剣1214B又は手1214Aによる攻撃を敵キャラクタ1215に当てることが可能となり、またユーザ1212の腕の長さが所定の基準長よりも長い場合に、敵キャラクタ1215の位置をアバター1214から遠ざけることによって、腕の長さが長いユーザ1212が操作するアバター1214からの剣1214B又は手1214Aによる攻撃が、敵キャラクタ1215に簡単に当たりやすくなることを避けることができる。
【0126】
また、敵キャラクタ1215自体の位置は変更せずに、敵キャラクタ1215に対して設定されている第2領域1440の位置を、上記と同様にアバター1214に近づけたり、アバター1214から遠ざけたりしてもよい。更には、第2領域1440の大きさを調整することとしてもよい。例えば、ユーザ1212の腕の長さが所定の基準長よりも短い場合に、第2領域1440の大きさを大きくすることによって、腕の長さが短いユーザ1212でもアバター1214からの剣1214B又は手1214Aによる攻撃を敵キャラクタ1215に当てることが可能となり、またユーザ1212の腕の長さが所定の基準長よりも長い場合に、第2領域1440の大きさを小さくすることによって、腕の長さが長いユーザ1212が操作するアバター1214からの剣1214B又は手1214Aによる攻撃が、敵キャラクタ1215に簡単に当たりやすくなることを避けることができる。また、第1領域1410の形状及び第2領域1440の形状の一方又は両方を、第1領域1410と第2領域1440が適度に重なり合うように(即ち、ユーザ1212の腕の長さが所定の基準長よりも短い場合には第1領域1410と第2領域1440との重なり度合いがより大きくなるように、またユーザ1212の腕の長さが所定の基準長よりも長い場合には第1領域1410と第2領域1440との重なり度合いがより小さくなるように)、変形させることとしてもよい。
【0127】
図16は、本開示の別の実施形態による方法1150のフローチャートである。方法1150は、前述した方法1100におけるステップ1112の代わりにステップ1113を含み、方法1100におけるステップ1114の代わりにステップ1115を含み、方法1100におけるステップ1116の代わりにステップ1117を含むものである。以下では、方法1100と異なるステップ1113、ステップ1115、及びステップ1117についてのみ説明する。
【0128】
ステップ1113において、プロセッサ202は、前述されたステップ1104において特定されたユーザ1212の身長が、所定の基準長よりも高いか低いかを判定する。所定の基準長は、例えば、当該アクションゲームにおいて想定されるユーザの標準的な身長として予め任意に設定された値(例えば170cm)であってよい。ユーザ1212の身長が所定の基準長よりも高い場合、処理はステップ1115に進み、所定の基準長よりも低い場合、処理はステップ1117に進む。
【0129】
ユーザ1212の身長が所定の基準長よりも高い場合、ステップ1115において、プロセッサ202は、アバター1214(第1オブジェクト)に関連付けられた仮想空間1200内の第1領域を、その大きさが小さくなるように調整する。
【0130】
図17は、方法1150の実施形態における第1領域1710及び第2領域1740を示す。図17に示されるように、仮想空間1200内にアバター1214及び敵キャラクタ1215(第2オブジェクト)が存在する。アバター1214には第1領域1710が関連付けられ、敵キャラクタ1215には第2領域1740が関連付けられる。前述した方法1100の実施形態では、アバター1214が敵キャラクタ1215を攻撃する場面を想定したが、方法1150の実施形態では、アバター1214が敵キャラクタ1215から攻撃される場面を想定する。
【0131】
方法1150の実施形態において、第1領域1710は、アバター1214に対して設定されるコリジョン領域である。例えば、第1領域1710の高さ方向の大きさは、ユーザ1212が装着しているHMD110の高さ方向の位置座標に従って決定される。アバター1214のコリジョン領域である第1領域1710内に敵キャラクタ1215が持つ武器(例えば剣1215B)若しくはその一部分、又は敵キャラクタ1215から放たれる射出物(例えば銃などの遠隔攻撃用武器から発射された弾丸若しくはレーザビーム、又は敵キャラクタ1215の身体から放たれた魔法弾など)(以下、武器等と総称する)が入ると、アバター1214が当該武器等による攻撃を受けたとの判定がなされる。このように、第1領域1710は、アバター1214に対する攻撃が有効と判定される範囲を規定する。一方、方法1150の実施形態における第2領域1740は、方法1100の実施形態における第1領域1410と同様の方法で敵キャラクタ1215に対して定義される領域である。したがって、第2領域1740は、敵キャラクタ1215の攻撃が届く範囲を規定する。
【0132】
第1領域1710の高さ方向の大きさは、ユーザ1212の身長に依存する。したがって、ユーザ1212の体格によっては、たとえユーザ1212が最大限に身体を縮めるようにしゃがんだ姿勢をとったとしてもアバター1214が敵キャラクタ1215からの攻撃を回避することができない、あるいはその反対に、ユーザ1212が少し頭の位置を下げただけでアバター1214が敵キャラクタ1215からの攻撃を簡単に回避できてしまう、といったようなことが起こり得る。
【0133】
ステップ1115の実施によって、ユーザ1212の身長が所定値よりも高い場合に、第1領域1710の大きさが小さくなるように第1領域1710が調整される。例えば、プロセッサ202は、第1領域1710の高さ方向の大きさを小さくする。図18は、第1領域1710がどのように縮小されるかの一態様例を示す。図18において、敵キャラクタ1215の第2領域1740の一部分1742が、アバター1214に向かって突出している。この突出部分1742は、例えば、敵キャラクタ1215がアバター1214の方向に突き出した剣1215B(又は銃から発射された弾丸等)に付随するコリジョン領域を表す。また図18において、アバター1214の第1領域1710は、ある特定のユーザ1212が操作するアバター1214が敵キャラクタ1215からの攻撃をよけるためにしゃがんだ姿勢をとった時の第1領域を表している。ユーザ1212がしゃがむ動作をすることでアバター1214をしゃがませた時、当該ユーザ1212の身長が基準長よりも高いせいで、アバター1214の第1領域1710は、敵キャラクタ1215の第2領域1740のうちの突出部分1742と重なりを持つかもしれない。しかしながら、この第1領域1710は、ステップ1115の実施によって、第2領域1740の突出部分1742と重なりを有しないようにより小さな第1領域1715へと縮小される。これにより、背の高いユーザ1212が適切にしゃがむ動作を行ったにもかかわらず、敵キャラクタ1215からの攻撃がアバター1214に当たってしまうという事象が生じるのを防ぐことができる。
【0134】
上記のステップ1113の判定においてユーザ1212の身長が所定の基準長よりも低いと判定された場合、ステップ1117において、プロセッサ202は、アバター1214の第1領域1710を、その大きさが大きくなるように調整する。例えば、プロセッサ202は、第1領域1710の高さ方向の大きさを大きくする。これにより、背の低いユーザ1212がほんの少し頭(HMD110)を下げただけでアバター1214が敵キャラクタ1215からの攻撃を簡単に回避できてしまう不公平さをなくすことができる。
【0135】
以上説明した方法1150の実施形態では、ステップ1115及びステップ1117において、第1領域1710を縮小又は拡大する方法がとられた。しかしながら、第1領域1710を縮小又は拡大する以外の他の方法が採用されてもよい。図18を参照すると、例えば、ユーザ1212の身長が所定の基準長よりも高い場合に、敵キャラクタ1215の位置を高く配置し、ユーザ1212の身長が所定の基準長よりも低い場合に、敵キャラクタ1215の位置を低く配置してもよい。また例えば、敵キャラクタ1215の配置位置の高低を変更することに代えて、ユーザ1212の身長が所定の基準長よりも高い場合に、敵キャラクタ1215の第2領域1740(例えば突出部分1742)の位置を高くし、ユーザ1212の身長が所定の基準長よりも低い場合に、当該第2領域1740の位置を低くするのであってもよい。更には、ユーザ1212の身長が所定の基準長よりも高い場合に、敵キャラクタ1215の第2領域1740(例えば突出部分1742)の大きさを小さくし、ユーザ1212の身長が所定の基準長よりも低い場合に、当該第2領域1740の大きさを大きくすることとしてもよい。また、第1領域1710の形状及び第2領域1740の形状の一方又は両方を、第1領域1710と第2領域1740が適度に重なり合うように(即ち、ユーザ1212の身長が所定の基準長よりも高い場合には第1領域1410と第2領域1440との重なり度合いがより小さくなるように、またユーザ1212の身長が所定の基準長よりも低い場合には第1領域1410と第2領域1440との重なり度合いがより大きくなるように)、変形させることとしてもよい。これらのいずれの方法によっても、上記と同様に、背の高いユーザ1212が適切にしゃがむ動作を行った時に敵キャラクタ1215からの攻撃がアバター1214に当たってしまうのを防ぐことができるとともに、背の低いユーザ1212が頭の位置を少し下げただけで敵キャラクタ1215からの攻撃がアバター1214に当たらなくなるのを防ぐことができる。
【0136】
方法1100及び方法1150は、上述された各ステップに加えて更に付加的なステップを含んでもよい。例えば、方法1100及び方法1150は、ステップ1104において特定されたユーザ1212の身長に基づいてアバター1214の身長を調整するステップを含むのであってもよい。具体的に、ユーザ1212の身長が高い場合、アバター1214の身長も高く調整され、ユーザ1212の身長が低い場合、アバター1214の身長も低く調整される。一例として、身長の異なる複数のアバター1214のモデルが用意され、これら複数のアバター1214のモデルの中から、ユーザ1212の身長に対応する身長を有するモデルが、アバター1214を表すモデルとして選択され使用される。これにより、仮想空間1200においてアバター1214を適正な容姿で表現することができる。
【0137】
本開示の実施形態は、主に、プロセッサ202(もしくはコンピュータ200)又は方法1100若しくは1150として実施されるものとして説明された。しかし、本開示の実施形態が、プロセッサ202に方法1100若しくは1150を実行させるコンピュータプログラムとして実施することができることは、当業者にとって明らかであろう。
【0138】
本開示の実施形態が説明されたが、これらが例示にすぎず、本開示の範囲を限定するものではないことが理解されるべきである。本開示の趣旨及び範囲から逸脱することなく、実施形態の変更、追加、改良等を適宜行うことができることが理解されるべきである。本開示の範囲は、上述した実施形態のいずれによっても限定されるべきではなく、特許請求の範囲及びその均等物によってのみ規定されるべきである。
【0139】
また、上述した様々な実施形態では、非透過型のHMD装置によってユーザが没入する仮想空間を提供する例について説明したが、HMD装置として、透過型のHMD装置を採用してもよい。そのような実施形態においては、透過型のHMD装置を介してユーザが視認する現実空間に仮想オブジェクトを含む画像を重ねて表示することにより、拡張現実(AR:Augmented Reality)空間または複合現実(MR:Mixed Reality)空間におけるユーザ体験を提供してもよい。
【符号の説明】
【0140】
100…HMDシステム、110…HMD、112…表示部、114…センサ、120…トラッキングセンサ、130…モーションセンサ、140…注視センサ、150…サーバ、160…コントローラ、190…ユーザ、192…ネットワーク、200…コンピュータ、202…プロセッサ、204…メモリ、205…通信制御部、206…ストレージ、208…入出力インターフェース、210…通信インターフェース、212…バス、400…仮想空間、402…仮想空間画像、404…仮想カメラ、406…中心、408…基準視線、410…視認領域、602、702…領域、800…コントローラ、802…グリップ、804…フレーム、806…天面、808、810、814、816…ボタン、818…アナログスティック、902…仮想空間特定部、903…HMD動作検知部、904…視線検知部、906…基準視線決定部、908…視界領域決定部、910…コントローラ動作検知部、912…視界画像生成部、926…視界画像出力部、928…仮想空間データ、930…オブジェクトデータ、932…アプリケーションデータ、934…その他のデータ、1200…仮想空間、1204…仮想カメラ、1212…ユーザ、1214…アバター、1214A…アバターの手、1214B…剣、1214C…アバターの頭部、1215…敵キャラクタ、1215A…敵キャラクタの手、1215B…剣、1222…ゲームフィールド、1410…第1領域、1415…拡大された第1領域、1420…可動領域、1430…コリジョン領域、1440…第2領域、1710…第1領域、1715…縮小された第1領域、1740…第2領域
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18