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

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

7073228情報処理方法、コンピュータ、及びプログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-13
(45)【発行日】2022-05-23
(54)【発明の名称】情報処理方法、コンピュータ、及びプログラム
(51)【国際特許分類】
   A63F 13/428 20140101AFI20220516BHJP
   A63F 13/213 20140101ALI20220516BHJP
   A63F 13/75 20140101ALI20220516BHJP
   A63F 13/812 20140101ALI20220516BHJP
   G06T 19/00 20110101ALI20220516BHJP
【FI】
A63F13/428
A63F13/213
A63F13/75
A63F13/812 D
G06T19/00 300B
【請求項の数】 10
(21)【出願番号】P 2018156738
(22)【出願日】2018-08-23
(62)【分割の表示】P 2017175650の分割
【原出願日】2017-09-13
(65)【公開番号】P2019051300
(43)【公開日】2019-04-04
【審査請求日】2020-08-28
【前置審査】
(73)【特許権者】
【識別番号】509070463
【氏名又は名称】株式会社コロプラ
(72)【発明者】
【氏名】加田 健志
(72)【発明者】
【氏名】中原 圭佑
(72)【発明者】
【氏名】宮田 航志
(72)【発明者】
【氏名】高野 友輝
【審査官】宮本 昭彦
(56)【参考文献】
【文献】特開2005-165848(JP,A)
【文献】特開2016-192027(JP,A)
【文献】国際公開第2008/099564(WO,A1)
【文献】特表2016-541035(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00 - 13/98
G06T 11/00 - 13/80
G06T 19/00 - 19/20
G06F 3/048 - 3/04895
(57)【特許請求の範囲】
【請求項1】
現実空間における第1エリアを特定するステップと、
前記第1エリアに対応する仮想空間内の第2エリアを特定するステップと、
前記第1エリア内において、ユーザの身体の少なくとも一部の位置を検知するステップと、
前記ユーザの身体の少なくとも一部の位置に応じて前記仮想空間内のオブジェクトを前記第2エリア内において動かすステップと、
前記ユーザの身体の少なくとも一部の位置が正しく検知されないことによって生じる、前記仮想空間内における前記オブジェクトの位置の異常を検知するステップと、
前記異常の検知に基づいて、前記オブジェクトが異常位置へ動かされる直前における前記第2エリア内の位置を示す画像を生成するステップと、
前記画像を含むように前記仮想空間の視野画像を生成するステップと、
を含み、
前記画像は、前記異常が複数回検知された履歴に基づいて、前記オブジェクトが前記複数回の異常の各々に対応する各異常位置へ動かされる直前における前記第2エリア内の複数の位置を、前記仮想空間にマッピングすることによって表現され、
前記異常を検知するステップは、前記仮想空間内における前記オブジェクトの位置の時間的変化が所定の閾値よりも大きい場合に前記異常が発生したと判定するステップを含む、情報処理方法。
【請求項2】
前記異常を検知するステップは、前記仮想空間内における前記オブジェクトの位置の時間的変化に基づいて、前記異常が発生したか否かを判定するステップを含む、請求項1に記載の情報処理方法。
【請求項3】
前記画像は、現在を含む所定の長さを有する時間期間内に取得された前記履歴に基づいて更新される、請求項1または請求項2に記載の情報処理方法。
【請求項4】
前記異常が検知されたことに関連する情報を、前記仮想空間を前記ユーザと共有している他のユーザの端末へ送信するステップを更に含む、請求項1から請求項3のいずれか1項に記載の情報処理方法。
【請求項5】
前記異常が検知される頻度が閾値頻度よりも高いか否かを判定するステップと、
前記頻度が前記閾値頻度よりも高い場合に前記ユーザに警告を発するステップと、
を更に含む、請求項1から請求項4のいずれか1項に記載の情報処理方法。
【請求項6】
前記ユーザの挙動を監視するステップと、
前記ユーザの挙動に基づいて前記閾値頻度を調整するステップと、
を更に含む、請求項5に記載の情報処理方法。
【請求項7】
前記ユーザの挙動は、前記異常が検知される回数、前記異常が検知されてから解消するまでの時間、又は現実空間における前記ユーザの身体の少なくとも一部の移動量のうちの少なくとも1つを含む、請求項6に記載の情報処理方法。
【請求項8】
前記異常が検知された場合に、前記仮想空間内で行われるゲームの進行を一時停止するステップを更に含む、請求項1から請求項7のいずれか1項に記載の情報処理方法。
【請求項9】
現実空間において前記ユーザの身体の少なくとも一部を単位距離だけ動かした時に前記仮想空間において前記オブジェクトが動かされる距離を規定するための比率を設定するステップと、
前記異常が検知される頻度に応じて前記比率を調整するステップと、
を更に含む、請求項1から請求項8のいずれか1項に記載の情報処理方法。
【請求項10】
前記比率を調整するステップは、
前記異常が検知される頻度を前記仮想空間内の各方向について特定するステップと、
前記仮想空間内の方向毎の前記頻度に応じて、前記比率を前記仮想空間内の方向毎に調整するステップと、
を含む、請求項9に記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理方法、コンピュータ、及びプログラムに関する。
【背景技術】
【0002】
近年、ユーザに仮想現実(VR)空間を体験させることが可能な様々なタイプのヘッドマウントディスプレイが開発されている。これらのうち「ルームスケール」に対応したヘッドマウントディスプレイでは、事前準備として、トラッキングセンサが設置された部屋の中にプレイエリアを設定する作業がユーザによって行われる(例えば、非特許文献1参照)。
【0003】
一方、特許文献1には、ユーザがセンサ計測領域20の内側周辺の領域である警告領域50に入った場合に警告を発するように構成された装置が開示されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2005-165848号公報
【非特許文献】
【0005】
【文献】「プレイエリアの選択」、[online]、[平成29年8月18日検索]、インターネット<https://www.vive.com/jp/support/category_howto/choosing-your-play-area.html>
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1において、センサ計測領域20は、センサ装置10による計測が可能な境界位置を示す境界計測点30を測定することによって特定され、また、警告領域50は、センサ計測領域20からセンサ計測領域20と相似な安全領域40を除いた領域として特定される。したがって、特許文献1のセンサ計測領域20、安全領域40、及び警告領域50は、いずれも、センサ装置10の配置や性能から物理的に自ずと定まる領域であって、ユーザが設定するものではない。そのため、特許文献1の技術は、ユーザが自由にプレイエリアを設定するように構成されている非特許文献1のようなシステムには適用することが不可能である。
【0007】
本開示は、上記の点に鑑みてなされたものであり、その目的の1つは、仮想体験を可能とする空間における位置の認識に関する改善された方法を提供することにある。
【課題を解決するための手段】
【0008】
上述した課題を解決するために、本開示の一態様は、現実空間における第1エリアを特定するステップと、前記第1エリアに対応する仮想空間内の第2エリアを特定するステップと、前記第1エリア内において、ユーザの身体の少なくとも一部の位置を検知するステップと、前記ユーザの身体の少なくとも一部の位置に応じて前記仮想空間内のオブジェクトを前記第2エリア内において動かすステップと、前記ユーザの身体の少なくとも一部の位置が正しく検知されないことによって生じる、前記仮想空間内における前記オブジェクトの位置の異常を検知するステップと、前記異常の検知に基づいて、前記オブジェクトが異常位置へ動かされる直前における前記第2エリア内の位置を示す画像を生成するステップと、前記画像を含むように前記仮想空間の視野画像を生成するステップと、を含む情報処理方法である。
【0009】
また、本開示の他の一態様は、プロセッサと、プログラムを格納するメモリであって、前記プログラムは、前記プロセッサによって実行されると、前記プロセッサに、前記方法を実行させる、メモリと、を備えるコンピュータである。
【0010】
また、本開示の他の一態様は、プロセッサによって実行されると、前記プロセッサに、前記方法を実行させる、プログラムである。
【発明の効果】
【0011】
本発明によれば、仮想体験を可能とする空間における位置の認識に関する改善された方法を提供することができる。
【図面の簡単な説明】
【0012】
図1】HMDシステム100の構成を概略的に示す。
図2】一実施形態による、コンピュータの基本的なハードウェア構成の例を表すブロック図である。
図3】一実施形態による、HMDに設定されるuvw視野座標系を概念的に表す図である。
図4】一実施形態による、仮想空間を表現する一態様を概念的に表す図である。
図5】一実施形態による、HMD110を装着するユーザの頭部を上から表した図である。
図6】仮想空間において視認領域をx方向から見たyz断面を表す図である。
図7】仮想空間において視認領域をy方向から見たxz断面を表す図である。
図8】一実施形態によるコントローラの概略構成を表す図である。
図9】一実施形態による、HMDシステムにおける仮想空間の表示処理等を実現するためのコンピュータの機能を示すブロック図である。
図10】ユーザが没入する仮想空間の画像を表示部に表示するための一般的な処理のフロー図である。
図11】本開示の一実施形態による方法のフローチャートである。
図12】本開示の一実施形態において想定されるゲームの態様を概略的に説明する図である。
図13】本開示の一実施形態において想定されるユーザの自宅の部屋の一例を示す図である。
図14】本開示の一実施形態における初期設定を実施するための方法のフローチャートである。
図15A】第1の例による異常位置提示画像を示す図である。
図15B】第2の例による異常位置提示画像を示す図である。
図16】第3の例による異常位置提示画像を示す図である。
図17】本開示の一実施形態による方法のフローチャートである。
図18】本開示の一実施形態による方法のフローチャートである。
図19】本開示の一実施形態による方法のフローチャートである。
図20】本開示の一実施形態による方法のフローチャートである。
【発明を実施するための形態】
【0013】
[本開示の実施形態の説明]
最初に、本開示の実施形態の内容を列記して説明する。本開示の一実施形態は、以下のような構成を備える。
【0014】
(項目1)現実空間における第1エリアを特定するステップと、前記第1エリアに対応する仮想空間内の第2エリアを特定するステップと、前記第1エリア内において、ユーザの身体の少なくとも一部の位置を検知するステップと、前記ユーザの身体の少なくとも一部の位置に応じて前記仮想空間内のオブジェクトを前記第2エリア内において動かすステップと、前記ユーザの身体の少なくとも一部の位置が正しく検知されないことによって生じる、前記仮想空間内における前記オブジェクトの位置の異常を検知するステップと、前記異常の検知に基づいて、前記オブジェクトが異常位置へ動かされる直前における前記第2エリア内の位置を示す画像を生成するステップと、前記画像を含むように前記仮想空間の視野画像を生成するステップと、を含む情報処理方法。
【0015】
(項目2)前記異常を検知する前記ステップは、前記仮想空間内における前記オブジェクトの位置の時間的変化に基づいて、前記異常が発生したか否かを判定するステップを含む、項目1に記載の情報処理方法。
【0016】
(項目3)前記異常を検知する前記ステップは、前記仮想空間内における前記オブジェクトの位置の時間的変化が所定の閾値よりも大きい場合に前記異常が発生したと判定するステップを含む、項目2に記載の情報処理方法。
【0017】
(項目4)前記画像は、前記異常が1又は複数回検知された履歴に基づいて、前記オブジェクトが各異常位置へ動かされる直前における前記第2エリア内の各位置を、前記仮想空間にマッピングすることによって表現される、項目1から項目3のいずれか1項に記載の情報処理方法。
【0018】
(項目5)前記画像は、濃淡、色、模様、若しくは図形の空間分布として表される画像、又は、前記オブジェクトと同一の若しくは前記オブジェクトを変化させた画像である、項目4に記載の情報処理方法。
【0019】
(項目6)前記画像は、現在を含む所定の長さを有する時間期間内に取得された前記履歴に基づいて更新される、項目4又は項目5に記載の情報処理方法。
【0020】
(項目7)前記異常が検知されたことに関連する情報を、前記仮想空間を前記ユーザと共有している他のユーザの端末へ送信するステップを更に含む、項目1から項目6のいずれか1項に記載の情報処理方法。
【0021】
(項目8)前記異常が検知される頻度が閾値頻度よりも高いか否かを判定するステップと、前記頻度が前記閾値頻度よりも高い場合に前記ユーザに警告を発するステップと、を更に含む、項目1から項目7のいずれか1項に記載の情報処理方法。
【0022】
(項目9)前記ユーザの挙動を監視するステップと、前記ユーザの挙動に基づいて前記閾値頻度を調整するステップと、を更に含む、項目8に記載の情報処理方法。
【0023】
(項目10)前記ユーザの挙動は、前記異常が検知される回数、前記異常が検知されてから解消するまでの時間、又は現実空間における前記ユーザの身体の少なくとも一部の移動量のうちの少なくとも1つを含む、項目9に記載の情報処理方法。
【0024】
(項目11)前記異常が検知された場合に、前記仮想空間内で行われるゲームの進行を一時停止するステップを更に含む、項目1から項目10のいずれか1項に記載の情報処理方法。
【0025】
(項目12)現実空間において前記ユーザの身体の少なくとも一部を単位距離だけ動かした時に前記仮想空間において前記オブジェクトが動かされる距離を規定するための比率を設定するステップと、前記異常が検知される頻度に応じて前記比率を調整するステップと、を更に含む、項目1から項目11のいずれか1項に記載の情報処理方法。
【0026】
(項目13)前記比率を調整する前記ステップは、前記異常が検知される頻度を前記仮想空間内の各方向について特定するステップと、前記仮想空間内の方向毎の前記頻度に応じて、前記比率を前記仮想空間内の方向毎に調整するステップと、を含む、項目12に記載の情報処理方法。
【0027】
(項目14)プロセッサと、プログラムを格納するメモリであって、前記プログラムは、前記プロセッサによって実行されると、前記プロセッサに、項目1から項目13のいずれか1項に記載の方法を実行させる、メモリと、を備えるコンピュータ。
【0028】
(項目15)プロセッサによって実行されると、前記プロセッサに、項目1から項目13のいずれか1項に記載の方法を実行させる、プログラム。
【0029】
[本開示の実施形態の詳細]
以下、図面を参照しながら本発明の実施形態について詳しく説明する。
【0030】
図1を参照して、ヘッドマウントデバイス(Head-Mounted Device、HMD)システム100の構成について説明する。図1は、HMDシステム100の構成を概略的に示す。一例では、HMDシステム100は、家庭用のシステム又は業務用のシステムとして提供される。HMDは、表示部を備える所謂ヘッドマウントディスプレイであってもよく、表示部を有するスマートフォン等の端末を装着可能なヘッドマウント機器であってもよい。
【0031】
HMDシステム100は、HMD110と、トラッキングセンサ120と、コントローラ160と、コンピュータ200とを備える。HMD110は、表示部112と、注視センサ140とを含む。コントローラ160は、モーションセンサ130を含んでもよい。
【0032】
一例では、コンピュータ200は、インターネット等のネットワーク192に接続可能であってもよく、ネットワーク192に接続されるサーバ150等のコンピュータと通信可能であってもよい。別の態様において、HMD110は、トラッキングセンサ120の代わりにセンサ114を含んでもよい。
【0033】
HMD110は、ユーザ190の頭部に装着され、動作中に仮想空間をユーザに提供し得る。より具体的には、HMD110は、右目用の画像及び左目用の画像を表示部112にそれぞれ表示する。ユーザの各目がそれぞれの画像を視認すると、ユーザは、両目の視差に基づき当該画像を3次元の画像として認識し得る。
【0034】
表示部112は、例えば、非透過型の表示装置として実現される。一例では、表示部112は、ユーザの両目の前方に位置するように、HMD110の本体に配置される。したがって、ユーザは、表示部112に表示される3次元画像を視認すると、仮想空間に没入することができる。ある実施形態において、仮想空間は、例えば、背景、ユーザが操作可能なオブジェクト、ユーザが選択可能なメニューの画像等を含む。ある実施形態において、表示部112は、スマートフォン等の情報表示端末が備える液晶表示部又は有機EL(Electro Luminescence)表示部として実現され得る。
【0035】
一例では、表示部112は、右目用の画像を表示するためのサブ表示部と、左目用の画像を表示するためのサブ表示部とを含み得る。別の態様において、表示部112は、右目用の画像と左目用の画像とを一体として表示する構成であってもよい。この場合、表示部112は、高速シャッタを含む。高速シャッタは、画像がいずれか一方の目にのみ認識されるように、右目用の画像と左目用の画像とを交互に表示可能に作動する。
【0036】
一例では、HMD110は、複数の光源(図示せず)を含む。各光源は、例えば、赤外線を発するLED(Light Emitting Diode)により実現される。トラッキングセンサ120は、HMD110の動きを検出するためのポジショントラッキング機能を有する。より具体的には、トラッキングセンサ120は、HMD110が発する複数の赤外線を読み取り、現実空間内におけるHMD110の位置及び傾きを検出してもよい。
【0037】
ある態様において、トラッキングセンサ120は、カメラにより実現されてもよい。この場合、トラッキングセンサ120は、カメラから出力されるHMD110の画像情報を用いて、画像解析処理を実行することにより、HMD110の位置及び傾きを検出することができる。また、トラッキングセンサ120は、カメラによって撮像されたユーザの画像を解析することにより、ユーザの身体の一部(例えば頭や手)の位置を検出するように構成されてもよい。
【0038】
別の態様において、HMD110は、位置検出器として、トラッキングセンサ120の代わりに、センサ114を備えてもよい。HMD110は、センサ114を用いて、HMD110自身の位置及び傾きを検出し得る。例えば、センサ114が角速度センサ、地磁気センサ、加速度センサ、ジャイロセンサ等である場合、HMD110は、トラッキングセンサ120の代わりに、これらの各センサのいずれかを用いて、自身の位置及び傾きを検出し得る。一例として、センサ114が角速度センサである場合、角速度センサは、現実空間におけるHMD110の3軸周りの角速度を経時的に検出する。HMD110は、各角速度に基づいて、HMD110の3軸周りの角度の時間的変化を算出し、さらに、角度の時間的変化に基づいて、HMD110の傾きを算出する。また、HMD110は、透過型表示装置を備えていても良い。この場合、当該透過型表示装置は、その透過率を調整することにより、一時的に非透過型の表示装置として構成可能であってもよい。また、視界画像は、仮想空間を構成する画像の一部に、現実空間を提示する構成を含んでいてもよい。例えば、HMD110に搭載されたカメラで撮影した画像を視界画像の一部に重畳して表示させてもよいし、当該透過型表示装置の一部の透過率を高く設定することにより、視界画像の一部から現実空間を視認可能にしてもよい。
【0039】
注視センサ140は、ユーザ190の右目及び左目の視線が向けられる方向(視線)を検出する。当該方向の検出は、例えば、公知のアイトラッキング機能によって実現される。注視センサ140は、当該アイトラッキング機能を有するセンサにより実現される。ある態様において、注視センサ140は、右目用のセンサ及び左目用のセンサを含むことが好ましい。注視センサ140は、例えば、ユーザ190の右目及び左目に赤外光を照射するとともに、照射光に対する角膜及び虹彩からの反射光を受けることにより各眼球の回転角を検出するセンサであってもよい。注視センサ140は、検出した各回転角に基づいて、ユーザ190の視線を検知することができる。
【0040】
サーバ150は、コンピュータ200にプログラムを送信し得る。別の態様において、サーバ150は、他のユーザによって使用されるHMDに仮想現実を提供するための他のコンピュータ200と通信し得る。例えば、アミューズメント施設において、複数のユーザが参加型のゲームを行う場合、各コンピュータ200は、各ユーザの動作に基づく信号を他のコンピュータ200と通信して、同じ仮想空間において複数のユーザが共通のゲームを楽しむことを可能にする。
【0041】
コントローラ160は、有線又は無線によりコンピュータ200に接続される。コントローラ160は、ユーザ190からコンピュータ200への命令の入力を受け付ける。ある態様において、コントローラ160は、ユーザ190によって把持可能に構成される。別の態様において、コントローラ160は、ユーザ190の身体又は衣類の一部に装着可能に構成される。別の態様において、コントローラ160は、コンピュータ200から送信される信号に基づいて、振動、音、光のうちの少なくともいずれかを出力するように構成されてもよい。別の態様において、コントローラ160は、ユーザ190から、仮想空間に配置されるオブジェクトの位置や動きを制御するための操作を受け付ける。
【0042】
ある態様において、モーションセンサ130は、ユーザの手に取り付けられて、ユーザの手の動きを検出する。例えば、モーションセンサ130は、手の回転速度、回転数等を検出する。検出された信号は、コンピュータ200に送られる。モーションセンサ130は、例えば、手袋型のコントローラ160に設けられる。ある実施形態において、現実空間における安全のため、コントローラ160は、手袋型のようにユーザ190の手に装着されることにより容易に飛んで行かないものに装着されるのが望ましい。別の態様において、ユーザ190に装着されないセンサがユーザ190の手の動きを検出してもよい。ユーザ190の身体の様々な部分の位置、向き、動きの方向、動きの距離などを検知する光学式センサが用いられてもよい。例えば、ユーザ190を撮影するカメラの信号が、ユーザ190の動作を表す信号として、コンピュータ200に入力されてもよい。モーションセンサ130とコンピュータ200とは、一例として、無線により互いに接続される。無線の場合、通信形態は特に限られず、例えば、Bluetooth(登録商標)その他の公知の通信手法が用いられる。
【0043】
図2を参照して、本開示の実施形態に係るコンピュータ200について説明する。図2は、本開示の一実施形態によるコンピュータ200の基本的なハードウェア構成の例を表すブロック図である。コンピュータ200は、主たる構成要素として、プロセッサ202と、メモリ204と、ストレージ206と、入出力インターフェース208と、通信インターフェース210とを備える。各構成要素は、それぞれ、バス212に接続される。
【0044】
プロセッサ202は、コンピュータ200に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ204又はストレージ206に格納されているプログラムに含まれる一連の命令を実行する。ある態様において、プロセッサ202は、CPU(Central Processing Unit)、MPU(Micro Processor Unit)、FPGA(Field-Programmable Gate Array)等のデバイスとして実現される。
【0045】
メモリ204は、プログラム及びデータを一時的に保存する。プログラムは、例えば、ストレージ206からロードされる。データは、コンピュータ200に入力されたデータと、プロセッサ202によって生成されたデータとを含む。ある態様において、メモリ204は、RAM(Random Access Memory)等の揮発性メモリとして実現される。
【0046】
ストレージ206は、プログラム及びデータを永続的に保持する。ストレージ206は、例えば、ROM(Read-Only Memory)、ハードディスク装置、フラッシュメモリ等の不揮発性記憶装置として実現される。ストレージ206に格納されるプログラムは、HMDシステム100において仮想空間を提供するためのプログラム、シミュレーションプログラム、ゲームプログラム、ユーザ認証プログラム、他のコンピュータ200との通信を実現するためのプログラム等を含む。ストレージ206に格納されるデータは、仮想空間を規定するためのデータ及びオブジェクト等を含む。
【0047】
別の態様において、ストレージ206は、メモリカードのように着脱可能な記憶装置として実現されてもよい。さらに別の態様において、コンピュータ200に内蔵されたストレージ206の代わりに、外部の記憶装置に保存されているプログラム及びデータを使用する構成が使用されてもよい。このような構成によれば、例えば、アミューズメント施設のように複数のHMDシステム100が使用される場面において、プログラムやデータの更新を一括して行なうことが可能になる。
【0048】
ある実施形態において、入出力インターフェース208は、HMD110、トラッキングセンサ120及びモーションセンサ130との間で信号を通信する。ある態様において、入出力インターフェース208は、USB(Universal Serial Bus、USB)、DVI(Digital Visual Interface)、HDMI(登録商標)(High-Definition Multimedia Interface)等の端子を用いて実現される。なお、入出力インターフェース208は上述のものに限られない。
【0049】
ある実施形態において、入出力インターフェース208は、さらに、コントローラ160と通信し得る。例えば、入出力インターフェース208は、コントローラ160及びモーションセンサ130から出力された信号の入力を受ける。別の態様において、入出力インターフェース208は、プロセッサ202から出力された命令を、コントローラ160に送る。当該命令は、振動、音声出力、発光等をコントローラ160に指示する。コントローラ160は、当該命令を受信すると、その命令に応じて、振動、音声出力、発光等を実行する。
【0050】
通信インターフェース210は、ネットワーク192に接続され、ネットワーク192に接続されている他のコンピュータ(例えば、サーバ150)と通信する。ある態様において、通信インターフェース210は、例えば、LAN(Local Area Network)等の有線通信インターフェース、あるいは、WiFi(Wireless Fidelity)、Bluetooth(登録商標)、NFC(Near Field Communication)等の無線通信インターフェースとして実現される。なお、通信インターフェース210は上述のものに限られない。
【0051】
ある態様において、プロセッサ202は、ストレージ206にアクセスし、ストレージ206に格納されている1つ以上のプログラムをメモリ204にロードし、当該プログラムに含まれる一連の命令を実行する。当該1つ以上のプログラムは、コンピュータ200のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、仮想空間で実行可能なゲームソフトウェア等を含み得る。プロセッサ202は、入出力インターフェース208を介して、仮想空間を提供するための信号をHMD110に送る。HMD110は、その信号に基づいて表示部112に映像を表示する。
【0052】
図2に示される例では、コンピュータ200は、HMD110の外部に設けられている。しかし、別の態様において、コンピュータ200は、HMD110に内蔵されてもよい。一例として、表示部112を含む携帯型の情報通信端末(例えば、スマートフォン)がコンピュータ200として機能してもよい。
【0053】
また、コンピュータ200は、複数のHMD110に共通して用いられる構成であってもよい。このような構成によれば、例えば、複数のユーザに同一の仮想空間を提供することもできるので、各ユーザは同一の仮想空間で他のユーザと同一のアプリケーションを楽しむことができる。
【0054】
ある実施形態において、HMDシステム100では、グローバル座標系が予め設定されている。グローバル座標系は、現実空間における鉛直方向、鉛直方向に直交する水平方向、ならびに、鉛直方向及び水平方向の双方に直交する前後方向にそれぞれ平行な、3つの基準方向(軸)を有する。本実施形態では、グローバル座標系は視点座標系の1つである。そこで、グローバル座標系における水平方向、鉛直方向(上下方向)、及び前後方向は、それぞれ、x軸、y軸、z軸として規定される。より具体的には、グローバル座標系において、x軸は現実空間の水平方向に平行である。y軸は、現実空間の鉛直方向に平行である。z軸は現実空間の前後方向に平行である。
【0055】
ある態様において、トラッキングセンサ120は、赤外線センサを含む。赤外線センサが、HMD110の各光源から発せられた赤外線をそれぞれ検出すると、HMD110の存在を検出する。トラッキングセンサ120は、さらに、各点の値(グローバル座標系における各座標値)に基づいて、HMD110を装着したユーザ190の動きに応じた、現実空間内におけるHMD110の位置及び傾きを検出する。より詳しくは、トラッキングセンサ120は、経時的に検出された各値を用いて、HMD110の位置及び傾きの時間的変化を検出できる。また、後述するように、トラッキングセンサ120は、コントローラ160から発せられる赤外線を検出することによって、現実空間におけるコントローラ160の位置及び傾きを検出するように構成されてもよい。
【0056】
グローバル座標系は現実空間の座標系と平行である。したがって、トラッキングセンサ120によって検出されたHMD110の各傾きは、グローバル座標系におけるHMD110の3軸周りの各傾きに相当する。トラッキングセンサ120は、グローバル座標系におけるHMD110の傾きに基づき、uvw視野座標系をHMD110に設定する。HMD110に設定されるuvw視野座標系は、HMD110を装着したユーザ190が仮想空間において物体を見る際の視点座標系に対応する。
【0057】
図3を参照して、uvw視野座標系について説明する。図3は、ある実施形態に従うHMD110に設定されるuvw視野座標系を概念的に表す図である。トラッキングセンサ120は、HMD110の起動時に、グローバル座標系におけるHMD110の位置及び傾きを検出する。プロセッサ202は、検出された値に基づいて、uvw視野座標系をHMD110に設定する。
【0058】
図3に示されるように、HMD110は、HMD110を装着したユーザの頭部を中心(原点)とした3次元のuvw視野座標系を設定する。より具体的には、HMD110は、グローバル座標系を規定する水平方向、鉛直方向、及び前後方向(x軸、y軸、z軸)を、グローバル座標系内においてHMD110の各軸周りの傾きだけ各軸周りにそれぞれ傾けることによって新たに得られる3つの方向を、HMD110におけるuvw視野座標系のピッチ方向(u軸)、ヨー方向(v軸)、及びロール方向(w軸)として設定する。
【0059】
ある態様において、HMD110を装着したユーザ190が直立し、かつ、正面を視認している場合、プロセッサ202は、グローバル座標系に平行なuvw視野座標系をHMD110に設定する。この場合、グローバル座標系における水平方向(x軸)、鉛直方向(y軸)、及び前後方向(z軸)は、HMD110におけるuvw視野座標系のピッチ方向(u軸)、ヨー方向(v軸)及びロール方向(w軸)に一致する。
【0060】
uvw視野座標系がHMD110に設定された後、トラッキングセンサ120は、HMD110の動きに基づいて、設定されたuvw視野座標系におけるHMD110の傾き(傾きの変化量)を検出できる。この場合、トラッキングセンサ120は、HMD110の傾きとして、uvw視野座標系におけるHMD110のピッチ角(θu)、ヨー角(θv)及びロール角(θw)をそれぞれ検出する。ピッチ角(θu)は、uvw視野座標系におけるピッチ方向周りのHMD110の傾き角度を表す。ヨー角(θv)は、uvw視野座標系におけるヨー方向周りのHMD110の傾き角度を表す。ロール角(θw)は、uvw視野座標系におけるロール方向周りのHMD110の傾き角度を表す。
【0061】
トラッキングセンサ120は、検出されたHMD110の傾き角度に基づいて、HMD110が動いた後のHMD110におけるuvw視野座標系を、HMD110に設定する。HMD110と、HMD110のuvw視野座標系との関係は、HMD110の位置及び傾きに関わらず、常に一定である。HMD110の位置及び傾きが変わると、当該位置及び傾きの変化に連動して、グローバル座標系におけるHMD110のuvw視野座標系の位置及び傾きが変化する。
【0062】
ある態様において、トラッキングセンサ120は、赤外線センサからの出力に基づいて取得される赤外線の光強度及び複数の点間の相対的な位置関係(例えば、各点間の距離等)に基づいて、HMD110の現実空間内における位置を、トラッキングセンサ120に対する相対位置として特定してもよい。また、プロセッサ202は、特定された相対位置に基づいて、現実空間内(グローバル座標系)におけるHMD110のuvw視野座標系の原点を決定してもよい。
【0063】
図4を参照して、仮想空間についてさらに説明する。図4は、ある実施形態に従う仮想空間400を表現する一態様を概念的に表す図である。仮想空間400は、中心406の360度方向の全体を覆う全天球状の構造を有する。図4では、説明を複雑にしないために、仮想空間400のうちの上半分の天球が例示されている。仮想空間400では各メッシュが規定される。各メッシュの位置は、仮想空間400に規定されるXYZ座標系における座標値として予め規定されている。コンピュータ200は、仮想空間400に展開可能なコンテンツ(静止画、動画等)を構成する各部分画像を、仮想空間400において対応する各メッシュにそれぞれ対応付けて、ユーザによって視認可能な仮想空間画像が展開される仮想空間400をユーザに提供する。
【0064】
ある態様において、仮想空間400では、中心406を原点とするxyz座標系が規定される。xyz座標系は、例えば、グローバル座標系に平行である。xyz座標系は視点座標系の一種であるため、xyz座標系における水平方向、鉛直方向(上下方向)及び前後方向は、それぞれx軸、y軸及びz軸として規定される。したがって、xyz座標系のx軸(水平方向)がグローバル座標系のx軸と平行であり、xyz座標系のy軸(鉛直方向)がグローバル座標系のy軸と平行であり、xyz座標系のz軸(前後方向)がグローバル座標系のz軸と平行である。
【0065】
HMD110の起動時、すなわちHMD110の初期状態において、仮想カメラ404が、仮想空間400の中心406に配置される。ある態様において、プロセッサ202は、仮想カメラ404が撮影する画像をHMD110の表示部112に表示する。仮想カメラ404は、現実空間におけるHMD110の動きに連動して、仮想空間400を同様に移動する。これにより、現実空間におけるHMD110の位置及び向きの変化が、仮想空間400において同様に再現され得る。
【0066】
HMD110の場合と同様に、仮想カメラ404には、uvw視野座標系が規定される。仮想空間400における仮想カメラ404のuvw視野座標系は、現実空間(グローバル座標系)におけるHMD110のuvw視野座標系に連動するように規定される。したがって、HMD110の傾きが変化すると、それに応じて、仮想カメラ404の傾きも変化する。また、仮想カメラ404は、HMD110を装着したユーザの現実空間における移動に連動して、仮想空間400において移動することもできる。
【0067】
コンピュータ200のプロセッサ202は、仮想カメラ404の配置位置と、基準視線408とに基づいて、仮想空間400における視認領域410を規定する。視認領域410は、仮想空間400のうち、HMD110を装着したユーザが視認する領域に対応する。
【0068】
注視センサ140によって検出されるユーザ190の視線は、ユーザ190が物体を視認する際の視点座標系における方向である。HMD110のuvw視野座標系は、ユーザ190が表示部112を視認する際の視点座標系に等しい。また、仮想カメラ404のuvw視野座標系は、HMD110のuvw視野座標系に連動している。したがって、ある態様に従うHMDシステム100は、注視センサ140によって検出されたユーザ190の視線を、仮想カメラ404のuvw視野座標系におけるユーザの視線とみなすことができる。
【0069】
図5を参照して、ユーザの視線の決定について説明する。図5は、ある実施形態に従うHMD110を装着するユーザ190の頭部を上から表した図である。
【0070】
ある態様において、注視センサ140は、ユーザ190の右目及び左目の各視線を検出する。ある態様において、ユーザ190が近くを見ている場合、注視センサ140は、視線R1及びL1を検出する。別の態様において、ユーザ190が遠くを見ている場合、注視センサ140は、視線R2及びL2を検出する。この場合、ロール方向wに対して視線R2及びL2がなす角度は、ロール方向wに対して視線R1及びL1がなす角度よりも小さい。注視センサ140は、検出結果をコンピュータ200に送信する。
【0071】
コンピュータ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が実際に視線を向けている方向に相当する。
【0072】
別の態様において、HMDシステム100は、HMDシステム100を構成するいずれかの部分に、マイク及びスピーカを備えてもよい。ユーザは、マイクに発話することにより、仮想空間400に対して、音声による指示を与えることができる。
【0073】
また、別の態様において、HMDシステム100は、テレビジョン放送受信チューナを備えてもよい。このような構成によれば、HMDシステム100は、仮想空間400においてテレビ番組を表示することができる。
【0074】
さらに別の態様において、HMDシステム100は、インターネットに接続するための通信回路、あるいは、電話回線に接続するための通話機能を備えていてもよい。
【0075】
図6及び図7を参照して、視認領域410について説明する。図6は、仮想空間400において視認領域410をx方向から見たyz断面を表す図である。図7は、仮想空間400において視認領域410をy方向から見たxz断面を表す図である。
【0076】
図6に示されるように、yz断面における視認領域410は、領域602を含む。領域602は、仮想カメラ404の配置位置と基準視線408と仮想空間400のyz断面とによって定義される。プロセッサ202は、仮想空間おける基準視線408を中心として極角αを含む範囲を、領域602として規定する。
【0077】
図7に示されるように、xz断面における視認領域410は、領域702を含む。領域702は、仮想カメラ404の配置位置と基準視線408と仮想空間400のxz断面とによって定義される。プロセッサ202は、仮想空間400における基準視線408を中心とした方位角βを含む範囲を、領域702として規定する。極角α及びβは、仮想カメラ404の配置位置と仮想カメラ404の向きとに応じて定まる。
【0078】
ある態様において、HMDシステム100は、コンピュータ200からの信号に基づいて、視界画像を表示部112に表示させることにより、仮想空間における視界をユーザ190に提供する。視界画像は、仮想空間画像402のうち視認領域410に重畳する部分に相当する。ユーザ190が、頭に装着したHMD110を動かすと、その動きに連動して仮想カメラ404も動く。その結果、仮想空間400における視認領域410の位置が変化する。これにより、表示部112に表示される視界画像は、仮想空間画像402のうち、仮想空間400においてユーザが向いた方向の視認領域410に重畳する画像に更新される。ユーザは、仮想空間400における所望の方向を視認することができる。
【0079】
このように、仮想カメラ404の向き(傾き)は仮想空間400におけるユーザの視線(基準視線408)に相当し、仮想カメラ404が配置される位置は、仮想空間400におけるユーザの視点に相当する。したがって、仮想カメラ404を移動(配置位置を変える動作、向きを変える動作を含む)させることにより、表示部112に表示される画像が更新され、ユーザ190の視界(視点、視線を含む)が移動される。
【0080】
ユーザ190は、HMD110を装着している間、現実世界を視認することなく、仮想空間400に展開される仮想空間画像402のみを視認できる。そのため、HMDシステム100は、仮想空間400への高い没入感覚をユーザに与えることができる。
【0081】
ある態様において、プロセッサ202は、HMD110を装着したユーザ190の現実空間における移動に連動して、仮想空間400において仮想カメラ404を移動し得る。この場合、プロセッサ202は、仮想空間400における仮想カメラ404の位置及び向きに基づいて、HMD110の表示部112に投影される画像領域(すなわち、仮想空間400における視認領域410)を特定する。
【0082】
ある実施形態に従うと、仮想カメラ404は、2つの仮想カメラ、すなわち、右目用の画像を提供するための仮想カメラと、左目用の画像を提供するための仮想カメラとを含んでもよい。また、ユーザ190が3次元の仮想空間400を認識できるように、適切な視差が、2つの仮想カメラに設定されてもよい。
【0083】
図8を参照して、コントローラ160の一例について説明する。図8は、ある実施形態に従うコントローラ160の概略構成を表す図である。
【0084】
ある態様において、コントローラ160は、右コントローラと左コントローラとを含み得る。説明を簡単にするために、図8には右コントローラ800のみが示される。右コントローラ800は、ユーザ190の右手で操作される。左コントローラは、ユーザ190の左手で操作される。ある態様において、右コントローラ800と左コントローラとは、別個の装置として対称に構成される。したがって、ユーザ190は、右コントローラ800を把持した右手と、左コントローラを把持した左手とをそれぞれ自由に動かすことができる。別の態様において、コントローラ160は両手の操作を受け付ける一体型のコントローラであってもよい。以下、右コントローラ800について説明する。
【0085】
右コントローラ800は、グリップ802と、フレーム804と、天面806とを備える。グリップ802は、ユーザ190の右手によって把持されるように構成されている。例えば、グリップ802は、ユーザ190の右手の掌と3本の指(中指、薬指、小指)とによって保持され得る。
【0086】
グリップ802は、ボタン808及び810と、モーションセンサ130とを含む。ボタン808は、グリップ802の側面に配置され、右手の中指による操作を受け付ける。ボタン810は、グリップ802の前面に配置され、右手の人差し指による操作を受け付ける。ある態様において、ボタン808、810は、トリガー式のボタンとして構成される。モーションセンサ130は、グリップ802の筐体に内蔵されている。なお、ユーザ190の動作がカメラその他の装置によってユーザ190の周りから検出可能である場合には、グリップ802は、モーションセンサ130を備えなくてもよい。
【0087】
フレーム804は、その円周方向に沿って配置された複数の赤外線LED812を含む。赤外線LED812は、コントローラ160を使用するプログラムの実行中に、当該プログラムの進行に合わせて赤外線を発光する。赤外線LED812から発せられた赤外線は、右コントローラ800と左コントローラ(図示しない)との各位置や姿勢(傾き、向き)を検出するためにトラッキングセンサ120によって使用され得る。図8に示される例では、2列に配置された赤外線LED812が示されているが、配列の数は図8に示されるものに限られない。1列あるいは3列以上の配列が使用されてもよい。
【0088】
天面806は、ボタン814及び816と、アナログスティック818とを備える。ボタン814及び816は、プッシュ式ボタンとして構成される。ボタン814及び816は、ユーザ190の右手の親指による操作を受け付ける。アナログスティック818は、ある態様において、初期位置(ニュートラルの位置)から360度任意の方向への操作を受け付ける。当該操作は、例えば、仮想空間400に配置されるオブジェクトを移動するための操作を含む。
【0089】
ある態様において、右コントローラ800及び左コントローラは、赤外線LED812等の部材を駆動するための電池を含む。電池は、1次電池及び2次電池のいずれであってもよく、その形状は、ボタン型、乾電池型等任意であり得る。別の態様において、右コントローラ800と左コントローラは、例えば、コンピュータ200のUSBインターフェースに接続され得る。この場合、右コントローラ800及び左コントローラは、USBインターフェースを介して電力を供給され得る。
【0090】
図9は、本開示の一実施形態による、HMDシステム100における仮想空間400の表示処理等を実現するための、コンピュータ200の機能を示すブロック図である。コンピュータ200は、主にトラッキングセンサ120、モーションセンサ130、注視センサ140、コントローラ160からの入力に基づいて、表示部112への画像出力を制御する。
【0091】
コンピュータ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に取り付け可能な別のデバイス(例えば、スマートフォン)のディスプレイであってもよい。
【0092】
図9においてプロセッサ202内に含まれるコンポーネントは、プロセッサ202が実行する機能を具体的なモジュールとして表現する1つの例にすぎない。複数のコンポーネントの機能が単一のコンポーネントによって実現されてもよい。プロセッサ202がすべてのコンポーネントの機能を実行するように構成されてもよい。
【0093】
図10は、ユーザが没入する仮想空間の画像を表示部112に表示するための一般的な処理のフロー図である。
【0094】
図9及び図10を参照して、仮想空間の画像を提供するためのHMDシステム100の一般的な処理を説明する。仮想空間400は、トラッキングセンサ120、注視センサ140及びコンピュータ200等の相互作用によって提供され得る。
【0095】
処理はステップ1002において開始する。一例として、アプリケーションデータに含まれるゲームアプリケーションがコンピュータ200によって実行されてもよい。ステップ1004において、プロセッサ202(仮想空間特定部902)は、仮想空間データ928を参照するなどして、ユーザが没入する仮想空間400を構成する天球状の仮想空間画像402を生成する。トラッキングセンサ120によってHMD110の位置や傾きが検知される。トラッキングセンサ120によって検知された情報はコンピュータ200に送信される。ステップ1006において、HMD動作検知部903は、HMD110の位置情報や傾き情報を取得する。ステップ1008において、取得された位置情報及び傾き情報に基づいて視界方向が決定される。
【0096】
注視センサ140がユーザの左右の目の眼球の動きを検出すると、当該情報がコンピュータ200に送信される。ステップ1010において、視線検知部904は、右目及び左目の視線が向けられる方向を特定し、視線方向N0を決定する。ステップ1012において、基準視線決定部906は、HMD110の傾きにより決定された視界方向又はユーザの視線方向N0を基準視線408として決定する。基準視線408はまた、HMD110の位置や傾きに追随する仮想カメラ404の位置及び傾きに基づいて決定されてもよい。
【0097】
ステップ1014において、視界領域決定部908は、仮想空間400における仮想カメラ404の視界領域410を決定する。図4に示すように、視界領域410は、仮想空間画像402のうちユーザの視界を構成する部分である。視界領域410は基準視線408に基づいて決定される。視界領域410をx方向から見たyz断面図及び視界領域410をy方向から見たxz断面図は、既に説明した図6及び図7にそれぞれ示されている。
【0098】
ステップ1016において、視界画像生成部912は、視界領域410に基づいて視界画像を生成する。視界画像は、右目用と左目用の2つの2次元画像を含む。これらの2次元画像が表示部112に重畳される(より具体的には、右目用画像が右目用表示部に出力され、左目用画像が左目用表示部に出力される)ことにより、3次元画像としての仮想空間400がユーザに提供される。ステップ1018において、視界画像出力部926は、視界画像に関する情報を表示部112に出力する。表示部112は、受信した視界画像の情報に基づいて、当該視界画像を表示する。処理はステップ1020において終了する。
【0099】
図11は、本開示の一実施形態による方法1100のフローチャートである。本開示の一実施形態において、コンピュータプログラムが、図11に示される各ステップをプロセッサ202(又はコンピュータ200)に実行させてもよい。また、本開示の別の実施形態は、方法1100を実行するプロセッサ202(又はコンピュータ200)として実施することができる。
【0100】
以下、本開示の実施形態について具体的に説明する。ここでは、本開示の実施形態を適用することができる具体例として、複数のユーザが、各ユーザのアバターが配置された仮想空間に没入して楽しむことができるゲームを想定する。しかし、本開示の実施形態は、必ずしもこのような態様に限定されない。本開示の実施形態が、特許請求の範囲において規定される範囲に含まれる様々な態様を取り得ることは、当業者にとって明らかであろう。
【0101】
図12は、本実施形態において想定されるゲームの一態様例を概略的に説明する図である。この例では、2人のユーザ1212A及び1212B(以下、まとめて「ユーザ1212」とも呼ぶ)が、仮想空間上のテニスゲームをプレイする。テニスゲームは本実施形態の説明のための単なる例示にすぎず、他の任意の種類のゲームが本実施形態に適用され得ることに留意すべきである。ユーザ1212A及び1212Bは、それぞれ、HMD110A及び110B(以下、まとめて「HMD110」とも呼ぶ)を頭部に装着し、さらにコントローラ160A及び160B(以下、まとめて「コントローラ160」とも呼ぶ)を把持して操作する。一例では、コントローラ160は、図8に関して上述した構成を有する。
【0102】
仮想空間1200内には、ユーザ1212A及び1212Bのそれぞれによって操作されるアバター1214A及び1214B(以下、まとめて「アバター1214」とも呼ぶ)、並びに、アバター1214A及び1214Bによるテニスの対戦が行われるゲームフィールドとしてのテニスコート1222が配置される。アバター1214A及び1214Bは、それぞれの手1220A、1220B(以下、まとめて「手1220」とも呼ぶ)にラケット1221A、1221B(以下、まとめて「ラケット1221」とも呼ぶ)を把持する。テニスコート1222は、例えばライン1222-1及びネット1222-2を含む。ゲームのプレイ中、ユーザ1212は、現実空間において様々な動作を行うことによって、仮想空間1200内のアバター1214として仮想空間上のテニスを楽しむことができる。
【0103】
図12に示されるように、アバター1214A及び1214Bの位置にそれぞれ仮想カメラ1204A1及び1204B1(以下、まとめて「仮想カメラ1204」とも呼ぶ)が配置される。仮想カメラ1204は、アバター1214の視点から仮想空間1200を捉える。例えば、仮想カメラ1204A1が捉えるアバター1214Aの視点からの視界画像には、テニスコート1222及びテニスコート1222上の相手プレーヤであるアバター1214Bが含まれ、仮想カメラ1204B1が捉えるアバター1214Bの視点からの視界画像には、テニスコート1222及びテニスコート1222上の相手プレーヤであるアバター1214Aが含まれる。更に、各仮想カメラ1204が捉える視界画像には、それぞれのアバター1214の手1220、及び手1220に把持されているラケット1221も含まれ得る。ユーザ1212は、仮想カメラ1204によってアバター1214の視点から得られた仮想空間1200の映像を見ることができる。
【0104】
仮想空間1200には、更に、アバター移動可能エリアが設定される。アバター移動可能エリアは、仮想空間1200内においてアバター1214が移動することができるエリアを示す。図12には、一方のアバター1214Aに対するアバター移動可能エリア1250のみが示されているが、もう一方のアバター1214Bについても同様にアバター移動可能エリアが設定され得る。図12に示される例において、アバター1214Aのアバター移動可能エリア1250は、テニスコート1222全体のうちのアバター1214A側の陣地及びその周辺を含むように設定されている。ユーザ1212Aは、アバター1214Aをアバター移動可能エリア1250内で動かし、仮想空間1200上でテニスをすることができる。
【0105】
仮想空間1200内のアバター移動可能エリア1250は、現実空間の位置と対応付けられている。典型的な例として、ユーザ1212は、自宅の部屋でテニスゲームをプレイする。図13は、ユーザ1212Aの自宅の部屋1300の一例を示す。ユーザ1212Aは、部屋1300の中にゲームのためのプレイエリア1320を設定することができる。プレイエリア1320は、ゲームのプレイ中にユーザ1212Aが動き回ることができるエリアである。前述したように、現実空間におけるユーザ1212の位置(例えばHMD110の位置又はコントローラ160の位置)は、トラッキングセンサ120によって検知される。図13は、2つのトラッキングセンサ120が部屋1300に設置された例を示す。ユーザ1212は、部屋1300の広さ及び形状、部屋1300の中に存在している障害物(例えば家具等)、トラッキングセンサ120の性能、設置位置、及び向きなどを考慮して、プレイエリア1320を適宜に決めることができる。ユーザ1212がプレイエリア1320の中を動き回ると、ユーザ1212の位置がトラッキングセンサ120によって検知され、ユーザ1212の動きに応じて、仮想空間1200内のアバター1214がアバター移動可能エリア1250内を移動する。
【0106】
プレイエリア1320の大きさとアバター移動可能エリア1250の大きさの関係は任意である。一例として、現実空間のプレイエリア1320におけるユーザ1212の1メートルの移動が、仮想空間1200のアバター移動可能エリア1250におけるアバター1214のRメートルの移動に対応し、比率Rが所定の値に設定されているのであってよい。これにより、ユーザ1212がプレイエリア1320を端から端まで動いたときに、アバター1214をアバター移動可能エリア1250のちょうど端から端まで移動させるようにすることができる。別の例として、プレイエリア1320はアバター移動可能エリア1250よりも小さくてよく、その場合、トラッキングセンサ120によって検知されるユーザ1212の位置の移動だけでなく、コントローラ160に対するユーザ入力(例えばアナログスティック818への操作入力)を組み合わせることによって、仮想空間1200のアバター1214がアバター移動可能エリア1250を端から端まで移動できるのであってもよい。
【0107】
トラッキングセンサ120は、ユーザ1212がプレイエリア1320内に存在している場合に、ユーザ1212の位置を検知することができる。これにより、アバター1214及びアバター1214の仮想カメラ1204は、ユーザ1212の現実空間の検知位置に対応したアバター移動可能エリア1250内の正しい位置に配置され、視界画像生成部912は、当該仮想カメラ1204の位置に基づき、ユーザ1212の検知位置に応じた正しい視界画像を生成することができる。しかしながら、ある状況において、トラッキングセンサ120は、ユーザ1212の位置を正しく検知できないことがあり、その結果、仮想空間1200におけるアバター1212及び仮想カメラ1204の位置に異常が生じ、視界画像生成部912がユーザ1212の実際の位置に応じた正しい視界画像を生成できないことがある。そのような、仮想カメラ1204の位置に異常を生じさせる状況は、例えば、ユーザ1212がプレイエリア1320の外に出てしまった場合、HMD110上のLED光源又はコントローラ160上の赤外線LED812からの信号が何らかの障害物(例えばユーザ1212自身の身体)によって遮られてしまった場合、及び、HMD110又はコントローラ160からの信号はトラッキングセンサ120で受信できたものの何らかの処理エラーによってユーザ1212の位置が算出不能や異常となる場合、等を含む。
【0108】
図11に戻り、処理はステップ1102において開始する。プロセッサ202は、メモリ204に格納されているアプリケーションデータ932に含まれるゲームプログラムを読み出して実行する。
【0109】
処理はステップ1104に進み、プロセッサ202は、ゲームのための初期設定を実施する。初期設定は、図13に示されるようなプレイエリア1320の設定、及び図12に示されるようなアバター移動可能エリア1250の設定を含む。
【0110】
図14は、上記のステップ1104における初期設定を実施するための方法1400のフローチャートである。ステップ1402において、プロセッサ202は、現実空間のプレイエリアを特定する。例えば、図13を参照すると、ユーザ1212Aは、コントローラ160Aを使用して、四角形の形状のプレイエリア1320を設定する作業を行うことができる。ユーザ1212Aは、まず、部屋1300内のA地点(四角形の1つの頂点)に立ち、コントローラ160Aの所定のボタンを押下する。コントローラ160Aは、当該ボタンの押下を受けてプレイエリア設定信号を送出し、トラッキングセンサ120は、コントローラ160Aからのプレイエリア設定信号を受信する。プロセッサ202は、トラッキングセンサ120によって受信されたプレイエリア設定信号に基づいて、ユーザ1212Aがコントローラ160Aのボタンを押下した位置であるA地点の位置座標を特定する。次にユーザ1212Aは、部屋1300内のB地点(四角形の別の頂点)へ移動し、同様にコントローラ160Aの所定のボタンを押下する。このユーザ操作に応答して、上述のA地点の場合と同様に、プロセッサ202はB地点の位置座標を特定する。以下同様の作業をユーザ1212AがC地点及びD地点について繰り返すことにより、プロセッサ202は、C地点及びD地点の位置座標も特定する。次いで、ユーザ1212Aは、コントローラ160Aの所定のボタンを押下することによってプレイエリア設定作業の終了を指示する。この指示を受けると、プロセッサ202は、それまでに位置座標が特定された複数の地点(A、B、C、及びD地点)を連結して、各地点を結ぶ線によって囲まれるエリアをプレイエリア1320と特定する。
【0111】
プレイエリアを設定するためにユーザ1212Aによって指定される地点の数は、任意の数であってよい。これにより、任意の形状を有したプレイエリアを設定することが可能である。また、ユーザ1212Aがプレイエリアを設定する方法は、上記のものに限られない。例えば、ユーザ1212Aは、コントローラ160Aの所定のボタンを押下し続けたまま、設定しようとするプレイエリアの外枠を描くように(例えばプレイエリア1320の線分AB、BC、CD、DAの上を順に辿るように)部屋1300の中を歩いてもよい。この場合、プロセッサ202は、コントローラ160Aからのプレイエリア設定信号を連続的に追跡し、それにより得られる軌跡が囲むエリアを、プレイエリアと特定するのであってよい。あるいはまた、ユーザ1212Aは、トラッキングセンサ120の信号検出可能エリア(トラッキングセンサ120がコントローラ160A又はHMD110Aからの信号を検出することが可能なエリア)内において1回だけコントローラ160Aの所定のボタンを押下するのであってもよい。この場合、プロセッサ202は、トラッキングセンサ120の設置位置、向き、及び性能等によって定まる当該信号検出可能エリアを、プレイエリアと特定してもよい。
【0112】
処理はステップ1404に進み、プロセッサ202は、上記のステップ1402において特定されたプレイエリアと対応するように、仮想空間のアバター移動可能エリアを特定する。例えば、図12及び図13をまとめて参照すると、プロセッサ202は、ユーザ1212Aにより設定されたプレイエリア1320内の各点を、仮想空間1200上のテニスコート1222のうちアバター1214A側の陣地とその周辺を含む領域内の各点に対応付ける(写像する)ことによって、アバター移動可能エリア1250を特定することができる。例えば、プレイエリア1320の4つのコーナー(A、B、C、及びD地点)と中心点は、それぞれアバター移動可能エリア1250の各コーナーと中心点に対応付けられる。プレイエリア1320内の他の地点も同様に、アバター移動可能エリア1250内の各点に対応付けられる。これにより、プレイエリア1320内のユーザ1212Aの任意の位置に対して、アバター移動可能エリア1250内のアバター1214Aの位置を一意に決定することができる。この場合、ユーザ1212Aは、プレイエリア1320内を移動することで、アバター1214Aにアバター移動可能エリア1250の全体を動き回らせることができる。なお、前述したようにプレイエリアとアバター移動可能エリアの大きさは異なっていてよく、ユーザがプレイエリア上を距離dだけ移動したとき、アバターはアバター移動可能エリア上を距離R×dだけ移動するであろう。但し、Rはユーザとアバターの移動距離を関連付ける所定の比率(例えばプレイエリアとアバター移動可能エリアの大きさの比)である。
【0113】
別の例として、プロセッサ202は、テニスコート1222のアバター1214A側の陣地とその周辺を含む領域をアバター移動可能エリア1250と特定すると共に、プレイエリア1320をアバター移動可能エリア1250の部分的な可動のエリアに対応付けてもよい。この場合、ユーザ1212Aがプレイエリア1320内を動き回ると、アバター1214Aは、アバター移動可能エリア1250全体ではなく、アバター移動可能エリア1250の一部分である当該部分的な可動のエリア内を移動する。しかしながら、ユーザ1212Aは、プレイエリア1320内を動き回ることに加えて更にコントローラ160Aの操作をすることによって、この部分的な可動エリアをアバター移動可能エリア1250内で移動させることができ、それにより、アバター1214Aがアバター移動可能エリア1250全体を動き回るようにすることができる。このように、プレイエリア1320内のユーザ1212Aの位置とコントローラ160Aへのユーザ入力との両方に従って、アバター移動可能エリア1250内のアバター1214Aの位置が決定されるのであってもよい。
【0114】
ゲームのための初期設定は以上で終了し、処理は図11のステップ1106に進む。ステップ1106において、プロセッサ202は、ユーザ1212のHMD110又はコントローラ160からのトラッキング信号がトラッキングセンサ120によって取得されたか否かを判定する。例えば、仮想空間1200においてアバター1214によるテニスの試合が開始されると、ユーザ1212のHMD110及びコントローラ160は、それぞれ、現実空間におけるユーザ1212の頭又は手の位置の追跡を可能にするためのトラッキング信号を送出する。トラッキング信号は、HMD110上のLED光源又はコントローラ160上の赤外線LED812が点灯若しくは点滅することによって定常的又は定期的に発せられる信号である。HMD110及びコントローラ160から発せられたトラッキング信号は、トラッキングセンサ120に対するユーザ1212の位置又は向きによってはトラッキングセンサ120に全く届かず、完全に受信不能となることがある。このようにトラッキングセンサ120がトラッキング信号を取得できなかった場合、処理はステップ1114に進む。トラッキング信号がトラッキングセンサ120によって取得された場合、処理はステップ1108に進む。
【0115】
トラッキング信号がトラッキングセンサ120によって取得されると、ステップ1108において、プロセッサ202は、取得されたトラッキング信号に基づいて、現実空間におけるユーザ1212の位置を検知する。ステップ1108は、トラッキング信号に基づいて、現実空間におけるユーザ1212の頭(HMD110)又は手(コントローラ160)の位置座標を計算することを含む。図13を参照して、例えば、ユーザ1212Aは、プレイエリア1320の中に存在しており、且つ、HMD110A上のLED光源及びコントローラ160A上の赤外線LED812がトラッキングセンサ120の方向を向くような姿勢をとっている。このような配置においては、トラッキング信号が良好な感度でトラッキングセンサ120に受信されるため、プロセッサ202は、HMD110A及びコントローラ160Aからのトラッキング信号に基づいて、実際のユーザ1212Aの頭及び手の位置座標を正しく計算することができる。あるいはユーザ1212Aは、プレイエリア1320の外に出てしまっているか、又は、プレイエリア1320の中に存在してはいるものの、HMD110A上のLED光源又はコントローラ160A上の赤外線LED812の向きが、トラッキングセンサ120の方向から所定角度以上ずれてしまっているかもしれない。そのような配置では、トラッキングセンサ120によるトラッキング信号の受信感度が十分でないということがあり得る。この場合、プロセッサ202は、良好なトラッキング信号を利用することができないため、実際のユーザ1212Aの頭及び手の位置座標を正しく計算することができず、算出されたユーザ1212Aの頭及び手の位置は、実際の位置とは異なる異常な位置を示すものとなり得る。
【0116】
処理はステップ1110に進み、プロセッサ202は、ステップ1108において検知された現実空間のユーザ1212の位置に応じて、仮想空間1200内の操作対象オブジェクトの位置を制御する。図12に示される仮想空間1200において、操作対象オブジェクトは、仮想カメラ1204及びアバター1214の手1220を含む。例えば、プロセッサ202は、ステップ1108において算出された現実空間のユーザ1212の頭(HMD110)の位置座標に対応する仮想空間1200内の位置に、仮想カメラ1204を配置する。またプロセッサ202は、ステップ1108において算出された現実空間のユーザ1212の手(コントローラ160)の位置座標に対応する仮想空間1200内の位置に、アバター1214の手1220を配置する。これにより、例えば、ユーザ1212Aがプレイエリア1320内を移動し、あるいはコントローラ160Aを持った手を動かすと、そのようなユーザ1212Aの動きに応じて、仮想空間1200のアバター1214A及びアバター1214Aの仮想カメラ1204A1をアバター移動可能エリア1250内で動かすことができる。ここで、ステップ1108において算出されたユーザ1212の頭及び手の位置座標が正しいものである場合には、アバター1214及び仮想カメラ1204の動きはユーザ1212の動きを反映し自然なものとなる。しかしながら、ステップ1108においてユーザ1212の異常な位置座標が算出された場合は、アバター1214及び仮想カメラ1204は不自然な動きを示す結果となる。一例として、ユーザ1212の頭(HMD110)の位置座標が異常になると、仮想カメラ1204が当該異常な位置座標に従って仮想空間1200内で本来とは異なる場所へ突然ジャンプし、その結果、視界画像生成部912から不連続で予期しない視界画像が生成されてしまう。同様に、ユーザ1212の手(コントローラ160)の位置座標が異常になると、アバター1214の手1220が、本来存在すべきでない場所へ移動し得る。
【0117】
処理はステップ1112に進み、プロセッサ202は、仮想空間1200内の操作対象オブジェクトの位置が正常であるか否かを判定する。例えば、プロセッサ202は、仮想空間1200における仮想カメラ1204及びアバター1214の手1220の位置を上記のステップ1110の実施前後で比較し、その差、即ち位置の時間的変化(移動スピード)に基づいて、仮想カメラ1204及びアバター1214の手1220の位置が正常であるか否かを判定する。より具体的に、プロセッサ202は、仮想カメラ1204の位置の移動スピードが所定の閾値よりも小さい場合、仮想カメラ1204の位置が正常であると判定し、当該移動スピードが所定の閾値よりも大きい場合、仮想カメラ1204の位置が異常であると判定する。アバター1214の手1220の位置についての判定も同様である。前述したように、トラッキングセンサ120によるトラッキング信号の受信状態が不調であると、HMD110及び/又はコントローラ160の正しい位置座標が検知できず、結果として仮想空間1200において仮想カメラ1204やアバター1214の手1220が異常な位置へ突然ジャンプし得る。したがって、仮想カメラ1204及びアバター1214の手1220の位置が異様に速く移動したかどうかを判断基準として、仮想カメラ1204及びアバター1214の手1220の位置の異常を識別することができる。ステップ1112の判定の結果、操作対象オブジェクトの位置が正常である場合、処理はステップ1118に進み、位置が異常である場合、処理はステップ1114に進む。
【0118】
操作対象オブジェクトの位置が異常と判定されると、ステップ1114において、プロセッサ202は、位置が異常となる直前の時点における操作対象オブジェクトの位置(即ち、最後に正常であった位置)を、メモリ204に記憶させる。以下、当該位置を「異常発生直前位置」と呼ぶこととする。異常発生直前位置は、上記のステップ1110が実施される前における操作対象オブジェクトの位置として得ることができる。例えば、プロセッサ202は、ステップ1110を実施する前に操作対象オブジェクトの位置を一時的に保持しておき、ステップ1110の実施による操作対象オブジェクトの移動先の位置がステップ1112において異常と判定されたら、当該一時的に保持しておいた位置を異常発生直前位置とすることができる。プロセッサ202は、異常発生直前位置と共に、操作対象オブジェクトが異常発生直前位置に存在していた時点を示す時刻情報をメモリ204に記憶させてもよい。
【0119】
ステップ1114は、ステップ1106の判定においてトラッキング信号が取得不能であった場合にも実施される。プロセッサ202は、トラッキング信号が取得不能となる直前における操作対象オブジェクトの位置を、上述の異常発生直前位置としてメモリ204に記憶させるのであってよい。
【0120】
ステップ1106からステップ1120のループが繰り返し実施されると、メモリ204には、操作対象オブジェクトの位置に異常が生じる度に、その異常に対応する異常発生直前位置が順次記憶されていく。例えば、図12を参照して、アバター1214Aがアバター移動可能エリア1250の右端に近づきすぎると、仮想カメラ1204A1の位置に異常が生じ得る(これは、例えばユーザ1212Aがプレイエリア1320の右端に近づきすぎ、トラッキング信号の受信状態が良好でなくなった結果として起こり得る)。この場合、アバター移動可能エリア1250の右端付近の位置を示す異常発生直前位置がメモリ204に記憶される。同様に、アバター1214Aがアバター移動可能エリア1250の左端あるいは右前方コーナー部に近づきすぎた場合、それぞれアバター移動可能エリア1250の左端付近又は右前方コーナー付近の位置を示す異常発生直前位置がメモリ204に記憶される。このようにして、メモリ204には、操作対象オブジェクトに生じた位置の異常の履歴(複数の異常発生直前位置)が蓄積される。
【0121】
処理はステップ1116に進み、プロセッサ202は、メモリ204に記憶されている異常発生直前位置に基づき、異常発生直前位置をユーザ1212に対して視覚的に提示するための画像(以下、「異常位置提示画像」と呼ぶ)を生成する。異常位置提示画像は、1又は複数の異常発生直前位置を視覚的に識別可能な態様で仮想空間にマッピングすることによって生成することができる。以下、異常位置提示画像のいくつかの具体例を図に示す。
【0122】
図15Aは、第1の例による異常位置提示画像1510を示す図である。図15Aは、仮想空間1200上のテニスコート1222とアバター移動可能エリア1250の上面図を表している。この第1の例による異常位置提示画像1510は、アバター移動可能エリア1250の周縁部分に配置された11個の星型図形1520から構成される。しかしながら、図15Aに示される異常位置提示画像1510における星型図形1520の数及び配置位置は、単なる例にすぎず、限定的であると解されてはならない。星型図形1520の各々は、ユーザ1212AのHMD110A又はコントローラ160Aに関して1又は複数回記録されたそれぞれの異常発生直前位置を示す。例えば、プロセッサ202は、メモリ204から記憶済みの全ての異常発生直前位置を読み出し、各異常発生直前位置に星型図形1520を配置することによって、異常位置提示画像1510を生成することができる。ユーザ1212Aは、星型図形1520の位置及び数から、アバター1214Aが仮想空間1200内のどこへ移動した時に、HMD110A及びコントローラ160Aのトラッキングに異常が生じやすいかを知ることができる。なお、図15Aは仮想空間1200を二次元平面で表しているが、異常発生直前位置は高さを含む三次元の位置座標によって特定され得る。したがって、プロセッサ202は、そのような異常発生直前位置に従って星型図形1520を三次元に配置し、それにより異常位置提示画像1510を三次元で表現するのであってもよい。
【0123】
図15Bは、第2の例による異常位置提示画像1515を示す図である。この第2の例による異常位置提示画像1515は、ユーザ1212Aの(HMD110Aではなく)コントローラ160Aに関する異常発生直前位置をユーザに提示することを想定したものであり、図15Aの第1の例による異常位置提示画像1510における星型図形1520に代えて、アバター1214Aの手1220Aの残像1525から構成される。手の残像1525は、アバター1214Aの手1220Aと同一の外見であってもよいし、アバター1214Aの手1220Aとは異なる外見(例えば、半透明に表現された手)であってもよい。前述したように、アバター1214Aの手1220Aの位置は、コントローラ160Aの検知位置に対応している。図15Bの例では、コントローラ160Aの正しい位置座標が得られなくなると、それに対応する異常発生直前位置に、アバター1214Aの手1220Aの残像1525が提示される。ユーザ1212Aは、この残像1525の位置及び数から、コントローラ160Aのトラッキングに異常が生じやすい場所を知ることができる。
【0124】
図16は、第3の例による異常位置提示画像1610を示す図である。この第3の例による異常位置提示画像1610は、複数の異常発生直前位置を色の濃淡の空間分布として表している。例えば、異常位置提示画像1610のうち色の濃い部分は、多くの異常発生直前位置が集まっている(即ち、その場所では操作対象オブジェクトの位置が異常となりやすい)ことを示し、色の薄い部分は、異常発生直前位置がまばらである(即ち、その場所では操作対象オブジェクトの位置はあまり異常とはならない)ことを示す。図16に示される異常位置提示画像1610は単なる例であり、空間分布を表すことが可能な任意の視覚的表現方法が用いられてよい。例えば、異常位置提示画像1610は、複数の異常発生直前位置を色、模様、図形等の空間分布として表したものであってもよい。例えば、プロセッサ202は、メモリ204から記憶済みの全ての異常発生直前位置を読み出し、異常発生直前位置の局所的な空間的密度を計算する。プロセッサ202は、場所毎に得られた空間的密度に応じた所定の異なる濃さ、異なる色、異なる模様、又は異なる図形等を仮想空間1200上に配置することによって、異常位置提示画像1610を生成することができる。ユーザ1212は、異常位置提示画像1610における濃淡、色、模様、又は図形等の空間分布から、HMD110及びコントローラ160のトラッキングに異常が生じやすい場所を知ることができる。
【0125】
プロセッサ202は、直近の所定長さの時間期間内にメモリ204に記憶された異常発生直前位置を用いて、異常位置提示画像を順次更新してもよい。例えば、プロセッサ202は、仮想空間1200内の同一の場所(又はある広さの領域)を示す異常発生直前位置が直近の所定時間の間に複数回記録されている場合、その数に応じて、異常位置提示画像の中の当該異常発生直前位置に対応する部分の表現を変化させてもよい。一例として、図15Aに例示された異常位置提示画像1510において、アバター移動可能エリア1250内のある特定の1つの場所に対して直近の所定時間内(例えば30分前から現在までの直近の30分間)に記録された異常発生直前位置の数が多いほど、その場所に配置される星型図形1520が明るく表されるのであってよい。また、その後当該場所に対して新しく異常発生直前位置が記録されなかった場合、当該場所に配置された星型図形1520の明るさを時間の経過につれて徐々に減少させてもよい。ユーザ1212は、星型図形1520の明るさから、最近その場所でトラッキングの異常がどのくらいの頻度で生じたかを知ることができる。異常位置提示画像1515及び1610についても同様の変化を適用可能である。
【0126】
処理はステップ1118に進み、プロセッサ202は、異常位置提示画像を含むように仮想空間1200の視界画像を生成する。視界画像の生成手法は、図10のステップ1006からステップ1016として上述したとおりである。視界画像は表示部112に表示され、これによりユーザ1212は、異常位置提示画像を含んだ視界画像を視認することで、操作対象オブジェクト(仮想カメラ1204及びアバター1214の手1220)の位置が異常となった、又は異常となりやすい場所を知ることができる。
【0127】
処理はステップ1120に進み、プロセッサ202は、ゲームを終了するか否かを判定する。例えば、プロセッサ202は、ユーザ1212からの所定の入力指示に従って、ゲームを終了するか否かを判定する。ゲームが続行される場合、処理はステップ1106へ戻り、再びステップ1106以降が繰り返される。
【0128】
図17は、本開示の別の実施形態による方法1150のフローチャートである。方法1150は、前述した方法1100の各ステップに加えて、ステップ1116とステップ1118の間に付加的なステップ1702を更に含むものである。ステップ1702において、プロセッサ202は、メモリ204に記憶されている異常発生直前位置の情報を、他のユーザのコンピュータ200へ送信する。図12を参照すると、ユーザ1212Aは仮想空間1200をユーザ1212Bと共有している。この例において、ユーザ1212Aに関する異常発生直前位置の情報が、ネットワーク192を介してユーザ1212Bのコンピュータ200へ送信される。同様に、ユーザ1212Bに関する異常発生直前位置の情報が、ユーザ1212Aのコンピュータ200へ送信されてもよい。ユーザ1212Aの異常発生直前位置の情報を受け取ったユーザ1212Bのコンピュータ200のプロセッサ202は、その異常発生直前位置に基づく前述したような異常位置提示画像を生成し、それをアバター1214Bの仮想カメラ1204B1からの視界画像に含めてユーザ1212BのHMD110Bに表示させてもよい。これにより、ユーザ1212Bは、ユーザ1212A側の異常発生直前位置を知ることができ、それをテニスゲームにおける戦術の決定に役立てることができる。
【0129】
図18は、本開示の別の実施形態による方法1160のフローチャートである。方法1160は、前述した方法1100の各ステップに加えて、ステップ1116とステップ1118の間に付加的なステップ1802及びステップ1804を更に含むものである。ステップ1802において、プロセッサ202は、メモリ204に記憶されている異常発生直前位置の頻度が所定の閾値よりも高いか否かを判定する。異常発生直前位置の頻度は、例えば、今までに仮想空間1200内の操作対象オブジェクトの位置が異常となった総回数、又は所定の単位時間内に仮想空間1200内の操作対象オブジェクトの位置が異常となった回数として定義することができる。メモリ204に記憶されている異常発生直前位置の頻度が所定の閾値よりも低い場合、処理はステップ1118に進み、当該頻度が所定の閾値よりも高い場合、処理はステップ1804に進む。
【0130】
処理がステップ1804に進むと、プロセッサ202は、ユーザ1212に対する警告をHMD110から出力させる。警告は、映像、音声、光、振動など任意の態様によるものであってよい。前述したように、仮想空間1200内においてアバター1214の仮想カメラ1204(操作対象オブジェクト)の位置が異常になる(例えば離れた場所へ突然ジャンプする)と、視界画像生成部912によって生成される視界画像がユーザ1212の予期し得ない不連続なものとなり、これがユーザ1212に「酔い」を感じさせる原因となり得る。そこで、仮想カメラ1204の位置が頻繁に異常になった場合に、ステップ1804において、例えばユーザ1212に休憩をとるよう促す警告を発することで、ユーザ1212の酔いを軽減し、又は未然に防ぐことが可能となる。また、このような操作対象オブジェクトの位置の異常は、トラッキングセンサ120の配置やプレイエリア1320の設定に何らかの問題があることが原因となっていることもあるので、ユーザ1212にそれらの再セットアップをするよう促す警告を発することとしてもよい。
【0131】
ステップ1802における判定に用いられる閾値は、ユーザ1212の仮想空間への慣れの度合いに応じて変化させてもよい。ユーザ1212の仮想空間への慣れの度合いは、ユーザ1212の挙動から知ることができる。例えば、方法1160は、オプションのステップ(不図示)として、ユーザ1212の挙動を監視するステップと、ユーザ1212の挙動に基づいて上記の閾値を調整するステップとを更に含んでもよい。ユーザ1212の挙動としては、例えば、操作対象オブジェクトの位置が異常となった回数、操作対象オブジェクトの位置が異常となってからその異常が解消されるまでの時間、又は現実空間におけるユーザ1212の移動量等を採用することができる。例えば、仮想空間における体験に慣れている熟練ユーザであれば、操作対象オブジェクトの位置がなるべく異常とならないように、上手く現実空間での動作をすることができるかもしれない。また熟練ユーザは、操作対象オブジェクトの位置が異常となってしまった場合でも、正常位置へ戻すための適切な動作を素早く行うことができるかもしれない。更に、仮想空間における体験にあまり慣れていない非熟練ユーザは、動作を慎重に行う結果として、現実空間における移動量が熟練ユーザよりも少ないかもしれない。仮想空間への慣れを反映したこれらのユーザ挙動に応じて、ステップ1802の閾値は適宜調整されてよい。例えば、熟練ユーザに対しては閾値を大きくし、非熟練ユーザに対しては閾値を小さくするのであってよい。
【0132】
図19は、本開示の別の実施形態による方法1170のフローチャートである。方法1170は、前述した方法1100の各ステップに加えて、更に、ステップ1116とステップ1118の間に付加的なステップ1902を含むと共に、ステップ1112とステップ1118の間に付加的なステップ1904を含むものである。前述したように、ステップ1112において操作対象オブジェクトの位置が異常と判定されると、ステップ1114及びステップ1116が実行される。ステップ1116の後、処理はステップ1902に進み、プロセッサ202は、ゲームの進行を一時停止する。ゲームの進行を一時停止するいくつかの例として、ゲーム内の時間の進行が停止されてもよいし、アバター1214のとった行動が無効化される(例えば、一時停止中にアバター1214がボールを打っても得点が入らない等)のであってもよい。操作対象オブジェクトの位置が異常となってしまったユーザはゲームを正常にプレイできない不利な状況に置かれることになるため、ゲームの進行を一時停止することで、ユーザ間にゲーム遂行上の好ましくないアンバランスが生じることを回避することができる。ゲームの進行が一時停止された後、ステップ1106からステップ1120のループが再び繰り返され、操作対象オブジェクトの位置が正常に戻ると、処理はステップ1112からステップ1904に進む。ステップ1904において、プロセッサ202は、ゲームの一時停止を解除し、通常どおりゲームを進行させる。
【0133】
図20は、本開示の別の実施形態による方法1180のフローチャートである。方法1180は、前述した方法1100の各ステップに加えて、ステップ1106とステップ1108の間に付加的なステップ2002を更に含むものである。ステップ2002において、プロセッサ202は、ユーザ1212とアバター1214の移動距離を関連付ける前述の比率Rを、メモリ204に記憶されている異常発生直前位置の頻度に応じて調整する。例えば、プロセッサ202は、操作対象オブジェクトの位置が異常となる回数が多いほど、比率Rを大きくする。これにより、ユーザ1212が現実空間内を少し動くだけで、仮想空間1200内のアバター1214を大きく動かすことができる。したがって、ユーザ1212はプレイエリア1320の周縁部分近くまで移動しなくてもアバター1214をアバター移動可能エリア1250の全範囲にわたって動かすことができるようになるので、それ以降、ユーザ1212がプレイエリア1320の端に近づくことによって再び操作対象オブジェクトの位置が異常となってしまう可能性を小さくすることができる。プロセッサ202は、メモリ204に記憶されている異常発生直前位置の頻度を仮想空間1200内の方向(アバター1214の現在位置から見た方向)毎に特定し、頻度の高い方向、即ち操作対象オブジェクトの位置が異常となる回数が多い方向に、より大きな比率Rを設定してもよい。これにより、ユーザ1212がプレイエリア1320の端に近づくことによって操作対象オブジェクトの位置が異常となってしまう可能性を、より効果的に小さくすることができる。
【0134】
本開示の実施形態は、主に、プロセッサ202(もしくはコンピュータ200)又は方法1100として実施されるものとして説明された。しかし、本開示の実施形態が、プロセッサ202に方法1100を実行させるコンピュータプログラムとして実施することができることは、当業者にとって明らかであろう。
【0135】
本開示の実施形態が説明されたが、これらが例示にすぎず、本開示の範囲を限定するものではないことが理解されるべきである。本開示の趣旨及び範囲から逸脱することなく、実施形態の変更、追加、改良等を適宜行うことができることが理解されるべきである。本開示の範囲は、上述した実施形態のいずれによっても限定されるべきではなく、特許請求の範囲及びその均等物によってのみ規定されるべきである。
【0136】
また、上述した様々な実施形態では、非透過型のHMD装置によってユーザが没入する仮想空間を提供する例について説明したが、HMD装置として、透過型のHMD装置を採用してもよい。そのような実施形態においては、透過型のHMD装置を介してユーザが視認する現実空間に仮想オブジェクトを含む画像を重ねて表示することにより、拡張現実(AR:Augmented Reality)空間または複合現実(MR:Mixed Reality)空間におけるユーザ体験を提供してもよい。具体的には、透過型のHMD装置は、上述した視界画像ではなく、異常位置提示画像を当該HMD装置の表示部に表示させるのであってよい。これにより、ユーザは、異常発生直前位置が表示されたARまたはMR空間を体験することが可能である。
【符号の説明】
【0137】
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…仮想空間、1204A1、B1…仮想カメラ、1212A、B…ユーザ、1214A、B…アバター、1220A、B…アバターの手、1221A、B…ラケット、1222…ゲームフィールド、1250…アバター移動可能エリア、1300…部屋、1320…プレイエリア、1510、1515、1610…異常位置提示画像、1520…星型図形、1525…手の残像
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15A
図15B
図16
図17
図18
図19
図20