[本開示の実施形態の説明]
はじめに、本開示の例示的な実施形態の構成を列記して説明する。本開示の実施形態による方法、プログラム及びコンピュータは、以下のような構成を備えてもよい。
(項目1)
第1ユーザの頭部に関連付けられた画像表示装置を介して、前記第1ユーザを含む複数のユーザが参加する仮想空間での仮想体験を前記第1ユーザに提供するためのコンピュータに、
前記仮想空間を定義するステップと、
前記画像表示装置を介して前記仮想空間を前記第1ユーザに提供するステップと、
前記画像表示装置を前記第1ユーザが取り外す取り外し動作を検出するステップと、
前記取り外し動作が検出された場合に、前記仮想体験を終了するか否かの入力を促すUI(User Interface)を前記画像表示装置に出力させるステップと、
を実行させるプログラム。
(項目2)
前記取り外し動作を検出するステップは、
前記第1ユーザの頭部に含まれる第1部位を検出するステップと、
前記第1部位を検出できないとき、前記取り外し動作が行われたと判定するステップと
を含む、項目1に記載のプログラム。
(項目3)
前記取り外し動作を検出するステップは、
前記画像表示装置を追跡するステップと、
前記画像表示装置が静止したとき、又は前記画像表示装置が所定の軌道を動いたとき、前記取り外し動作が行われたと判定するステップと
を含む、項目1に記載のプログラム。
(項目4)
前記取り外し動作を検出するステップは、
前記第1ユーザにより使用される操作デバイスを追跡するステップと、
前記操作デバイスが静止したとき、又は前記操作デバイスと前記画像表示装置との間の位置関係が所定の条件を満たしたとき、前記取り外し動作が行われたと判定するステップと
を含む、項目1に記載のプログラム。
(項目5)
前記コンピュータに、
前記仮想体験を終了する入力を受け付けるステップと、
前記仮想体験を終了する入力が受け付けられたことに応じて、前記第1ユーザを前記仮想体験から正常に離脱させるステップと、
を実行させる、項目1から4のいずれか1項に記載のプログラム。
(項目6)
前記コンピュータに、
前記仮想体験を終了しない入力を受け付けるステップと、
前記仮想体験を終了しない入力が受け付けられたことに応じて、前記第1ユーザを前記仮想体験に復帰させるステップと、
を実行させる、項目1から5のいずれか1項に記載のプログラム。
(項目7)
前記コンピュータに、
前記仮想体験を終了する入力及び前記仮想体験を終了しない入力のいずれも受け付けられなかったことに応じて、前記第1ユーザが前記仮想体験から不正離脱したと判定するステップ
を実行させる、項目1から6のいずれか1項に記載のプログラム。
(項目8)
前記UIは、前記第1ユーザが前記仮想体験への復帰及び正常離脱のいずれも行わない場合に前記第1ユーザが前記仮想体験から不正離脱したとみなされる旨の警告を含む、項目1から7のいずれか1項に記載のプログラム。
(項目9)
前記取り外し動作が検出された場合に、前記画像表示装置に関連付けられる音声出力装置及び画像出力装置のうちの少なくとも1つに、前記仮想体験からの正常離脱を促す出力を行わせるステップ
を含む、項目1から8のいずれか1項に記載のプログラム。
(項目10)
第1ユーザの頭部に関連付けられた画像表示装置を介して、前記第1ユーザを含む複数のユーザが参加する仮想空間での仮想体験を前記第1ユーザに提供するためのコンピュータであって、
前記コンピュータが備えるプロセッサによる制御により、
前記仮想空間を定義するステップと、
前記画像表示装置を介して前記仮想空間を前記第1ユーザに提供するステップと、
前記画像表示装置を前記第1ユーザが取り外す取り外し動作を検出するステップと、
前記取り外し動作が検出された場合に、前記仮想体験を終了するか否かの入力を促すUI(User Interface)を前記画像表示装置に出力させるステップと
が実行される、コンピュータ。
(項目11)
第1ユーザの頭部に関連付けられた画像表示装置を介して、前記第1ユーザを含む複数のユーザが参加する仮想空間での仮想体験を前記第1ユーザに提供するための、コンピュータにより実行される方法であって、
前記仮想空間を定義するステップと、
前記画像表示装置を介して前記仮想空間を前記第1ユーザに提供するステップと、
前記画像表示装置を前記第1ユーザが取り外す取り外し動作を検出するステップと、
前記取り外し動作が検出された場合に、前記仮想体験を終了するか否かの入力を促すUI(User Interface)を前記画像表示装置に出力させるステップと
を含む、方法。
[本開示の実施形態の詳細]
以下、図面を参照しつつ、本開示の実施形態について説明する。以下の説明では、同様の要素には同様の符号を付してある。それらの名称及び機能も同様である。このような要素については重複する説明が省略される。
図1を参照して、画像表示装置システム100の構成について説明する。以下では、画像表示装置の一例としてヘッドマウントデバイス(Head−Mounted Device:HMD)が用いられるシステムについて具体的に説明する。しかし、HMDだけでなく、ユーザに仮想体験を提供するための様々な装置を本開示の実施形態に適用することができることが当業者に理解されよう。
図1は、システム100の構成を概略的に示す。一例では、システム100は、家庭用のシステム又は業務用のシステムとして提供される。HMDは、表示部を備える所謂ヘッドマウントディスプレイであってもよく、表示部を有するスマートフォン等の端末を装着可能なヘッドマウント機器であってもよい。
システム100は、HMD110と、HMDセンサ120と、コントローラ160と、コンピュータ200とを備える。HMD110は、表示部112と、注視センサ140とを含む。コントローラ160は、モーションセンサ130を含んでもよい。
一例では、コンピュータ200は、インターネット等のネットワーク192に接続可能であってもよく、ネットワーク192に接続されるサーバ150等のコンピュータと通信可能であってもよい。別の態様において、HMD110は、HMDセンサ120の代わりにセンサ114を含んでもよい。
HMD110は、ユーザ190の頭部に装着され、動作中に仮想空間をユーザに提供し得る。より具体的には、HMD110は、右目用の画像及び左目用の画像を表示部112にそれぞれ表示する。ユーザの各目がそれぞれの画像を視認すると、ユーザは、両目の視差に基づき当該画像を3次元の画像として認識し得る。
表示部112は、例えば、非透過型の表示装置として実現される。一例では、表示部112は、ユーザの両目の前方に位置するように、HMD110の本体に配置される。したがって、ユーザは、表示部112に表示される3次元画像を視認すると、仮想空間に没入することができる。ある実施形態において、仮想空間は、例えば、背景、ユーザが操作可能なオブジェクト、ユーザが選択可能なメニューの画像等を含む。ある実施形態において、表示部112は、スマートフォン等の情報表示端末が備える液晶表示部又は有機EL(Electro Luminescence)表示部として実現され得る。
一例では、表示部112は、右目用の画像を表示するためのサブ表示部と、左目用の画像を表示するためのサブ表示部とを含み得る。別の態様において、表示部112は、右目用の画像と左目用の画像とを一体として表示する構成であってもよい。この場合、表示部112は、高速シャッタを含む。高速シャッタは、画像がいずれか一方の目にのみ認識されるように、右目用の画像と左目用の画像とを交互に表示可能に作動する。
一例では、HMD110は、複数の光源(図示せず)を含む。各光源は、例えば、赤外線を発するLED(Light Emitting Diode)により実現される。HMDセンサ120は、HMD110の動きを検出するためのポジショントラッキング機能を有する。より具体的には、HMDセンサ120は、HMD110が発する複数の赤外線を読み取り、現実空間内におけるHMD110の位置及び傾きを検出してもよい。
ある態様において、HMDセンサ120は、カメラにより実現されてもよい。この場合、HMDセンサ120は、カメラから出力されるHMD110の画像情報を用いて、画像解析処理を実行することにより、HMD110の位置及び傾きを検出することができる。
別の態様において、HMD110は、位置検出器として、HMDセンサ120の代わりに、センサ114を備えてもよい。HMD110は、センサ114を用いて、HMD110自身の位置及び傾きを検出し得る。例えば、センサ114が角速度センサ、地磁気センサ、加速度センサ、ジャイロセンサ等である場合、HMD110は、HMDセンサ120の代わりに、これらの各センサのいずれかを用いて、自身の位置及び傾きを検出し得る。一例として、センサ114が角速度センサである場合、角速度センサは、現実空間におけるHMD110の3軸周りの角速度を経時的に検出する。HMD110は、各角速度に基づいて、HMD110の3軸周りの角度の時間的変化を算出し、さらに、角度の時間的変化に基づいて、HMD110の傾きを算出する。また、HMD110は、透過型表示装置を備えていても良い。この場合、当該透過型表示装置は、その透過率を調整することにより、一時的に非透過型の表示装置として構成可能であってもよい。また、視界画像は、仮想空間を構成する画像の一部に、現実空間を提示する構成を含んでいてもよい。例えば、HMD110に搭載されたカメラで撮影した画像を視界画像の一部に重畳して表示させてもよいし、当該透過型表示装置の一部の透過率を高く設定することにより、視界画像の一部から現実空間を視認可能にしてもよい。
注視センサ140は、ユーザ190の右目及び左目の視線が向けられる方向(視線)を検出する。当該方向の検出は、例えば、公知のアイトラッキング機能によって実現される。注視センサ140は、当該アイトラッキング機能を有するセンサにより実現される。ある態様において、注視センサ140は、右目用のセンサ及び左目用のセンサを含むことが好ましい。注視センサ140は、例えば、ユーザ190の右目及び左目に赤外光を照射するとともに、照射光に対する角膜及び虹彩からの反射光を受けることにより各眼球の回転角を検出するセンサであってもよい。注視センサ140は、検出した各回転角に基づいて、ユーザ190の視線を検知することができる。
サーバ150は、コンピュータ200にプログラムを送信し得る。別の態様において、サーバ150は、他のユーザによって使用されるHMDに仮想現実を提供するための他のコンピュータ200と通信し得る。例えば、アミューズメント施設において、複数のユーザが参加型のゲームを行う場合、各コンピュータ200は、各ユーザの動作に基づく信号を他のコンピュータ200と通信して、同じ仮想空間において複数のユーザが共通のゲームを楽しむことを可能にする。
コントローラ160は、有線又は無線によりコンピュータ200に接続される。コントローラ160は、ユーザ190からコンピュータ200への命令の入力を受け付ける。ある態様において、コントローラ160は、ユーザ190によって把持可能に構成される。別の態様において、コントローラ160は、ユーザ190の身体又は衣類の一部に装着可能に構成される。別の態様において、コントローラ160は、コンピュータ200から送信される信号に基づいて、振動、音、光のうちの少なくともいずれかを出力するように構成されてもよい。別の態様において、コントローラ160は、ユーザ190から、仮想空間に配置されるオブジェクトの位置や動きを制御するための操作を受け付ける。
ある態様において、モーションセンサ130は、ユーザの手に取り付けられて、ユーザの手の動きを検出する。例えば、モーションセンサ130は、手の回転速度、回転数等を検出する。検出された信号は、コンピュータ200に送られる。モーションセンサ130は、例えば、手袋型のコントローラ160Aに設けられる。ある実施形態において、現実空間における安全のため、コントローラ160Aは、手袋型のようにユーザ190の手に装着されることにより容易に飛んで行かないものに装着されるのが望ましい。別の態様において、複数の操作ボタンを有する一般的な構造のコントローラ160Bが用いられてもよい。別の態様において、ユーザ190に装着されないセンサがユーザ190の手の動きを検出してもよい。ユーザ190の身体の様々な部分の位置、向き、動きの方向、動きの距離などを検知する光学式センサが用いられてもよい。例えば、ユーザ190を撮影するカメラの信号が、ユーザ190の動作を表す信号として、コンピュータ200に入力されてもよい。モーションセンサ130とコンピュータ200とは、一例として、無線により互いに接続される。無線の場合、通信形態は特に限られず、例えば、Bluetooth(登録商標)その他の公知の通信手法が用いられる。
図2を参照して、本開示の実施形態に係るコンピュータ200について説明する。図2は、本開示の一実施形態によるコンピュータ200の基本的なハードウェア構成の例を表すブロック図である。コンピュータ200は、主たる構成要素として、プロセッサ202と、メモリ204と、ストレージ206と、入出力インターフェース208と、通信インターフェース210とを備える。各構成要素は、それぞれ、バス212に接続される。
プロセッサ202は、コンピュータ200に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ204又はストレージ206に格納されているプログラムに含まれる一連の命令を実行する。ある態様において、プロセッサ202は、CPU(Central Processing Unit)、MPU(Micro Processor Unit)、FPGA(Field−Programmable Gate Array)等のデバイスとして実現される。
メモリ204は、プログラム及びデータを一時的に保存する。プログラムは、例えば、ストレージ206からロードされる。データは、コンピュータ200に入力されたデータと、プロセッサ202によって生成されたデータとを含む。ある態様において、メモリ204は、RAM(Random Access Memory)等の揮発性メモリとして実現される。
ストレージ206は、プログラム及びデータを永続的に保持する。ストレージ206は、例えば、ROM(Read−Only Memory)、ハードディスク装置、フラッシュメモリ等の不揮発性記憶装置として実現される。ストレージ206に格納されるプログラムは、システム100において仮想空間を提供するためのプログラム、シミュレーションプログラム、ゲームプログラム、ユーザ認証プログラム、他のコンピュータ200との通信を実現するためのプログラム等を含む。ストレージ206に格納されるデータは、仮想空間を規定するためのデータ及びオブジェクト等を含む。
別の態様において、ストレージ206は、メモリカードのように着脱可能な記憶装置として実現されてもよい。さらに別の態様において、コンピュータ200に内蔵されたストレージ206の代わりに、外部の記憶装置に保存されているプログラム及びデータを使用する構成が使用されてもよい。このような構成によれば、例えば、アミューズメント施設のように複数のシステム100が使用される場面において、プログラムやデータの更新を一括して行なうことが可能になる。
ある実施形態において、入出力インターフェース208は、HMD110、HMDセンサ120及びモーションセンサ130との間で信号を通信する。ある態様において、入出力インターフェース208は、USB(Universal Serial Bus、USB)、DVI(Digital Visual Interface)、HDMI(登録商標)(High−Definition Multimedia Interface)等の端子を用いて実現される。なお、入出力インターフェース208は上述のものに限られない。
ある実施形態において、入出力インターフェース208は、さらに、コントローラ160と通信し得る。例えば、入出力インターフェース208は、コントローラ160及びモーションセンサ130から出力された信号の入力を受ける。別の態様において、入出力インターフェース208は、プロセッサ202から出力された命令を、コントローラ160に送る。当該命令は、振動、音声出力、発光等をコントローラ160に指示する。コントローラ160は、当該命令を受信すると、その命令に応じて、振動、音声出力、発光等を実行する。
通信インターフェース210は、ネットワーク192に接続され、ネットワーク192に接続されている他のコンピュータ(例えば、サーバ150)と通信する。ある態様において、通信インターフェース210は、例えば、LAN(Local Area Network)等の有線通信インターフェース、あるいは、WiFi(Wireless Fidelity)、Bluetooth(登録商標)、NFC(Near Field Communication)等の無線通信インターフェースとして実現される。なお、通信インターフェース210は上述のものに限られない。
ある態様において、プロセッサ202は、ストレージ206にアクセスし、ストレージ206に格納されている1つ以上のプログラムをメモリ204にロードし、当該プログラムに含まれる一連の命令を実行する。当該1つ以上のプログラムは、コンピュータ200のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、仮想空間で実行可能なゲームソフトウェア等を含み得る。プロセッサ202は、入出力インターフェース208を介して、仮想空間を提供するための信号をHMD110に送る。HMD110は、その信号に基づいて表示部112に映像を表示する。
図2に示される例では、コンピュータ200は、HMD110の外部に設けられている。しかし、別の態様において、コンピュータ200は、HMD110に内蔵されてもよい。一例として、表示部112を含む携帯型の情報通信端末(例えば、スマートフォン)がコンピュータ200として機能してもよい。
また、コンピュータ200は、複数のHMD110に共通して用いられる構成であってもよい。このような構成によれば、例えば、複数のユーザに同一の仮想空間を提供することもできるので、各ユーザは同一の仮想空間で他のユーザと同一のアプリケーションを楽しむことができる。
ある実施形態において、システム100では、グローバル座標系が予め設定されている。グローバル座標系は、現実空間における鉛直方向、鉛直方向に直交する水平方向、ならびに、鉛直方向及び水平方向の双方に直交する前後方向にそれぞれ平行な、3つの基準方向(軸)を有する。本実施形態では、グローバル座標系は視点座標系の1つである。そこで、グローバル座標系における水平方向、鉛直方向(上下方向)、及び前後方向は、それぞれ、x軸、y軸、z軸として規定される。より具体的には、グローバル座標系において、x軸は現実空間の水平方向に平行である。y軸は、現実空間の鉛直方向に平行である。z軸は現実空間の前後方向に平行である。
ある態様において、HMDセンサ120は、赤外線センサを含む。赤外線センサが、HMD110の各光源から発せられた赤外線をそれぞれ検出すると、HMD110の存在を検出する。HMDセンサ120は、さらに、各点の値(グローバル座標系における各座標値)に基づいて、HMD110を装着したユーザ190の動きに応じた、現実空間内におけるHMD110の位置及び傾きを検出する。より詳しくは、HMDセンサ120は、経時的に検出された各値を用いて、HMD110の位置及び傾きの時間的変化を検出できる。
グローバル座標系は現実空間の座標系と平行である。したがって、HMDセンサ120によって検出されたHMD110の各傾きは、グローバル座標系におけるHMD110の3軸周りの各傾きに相当する。HMDセンサ120は、グローバル座標系におけるHMD110の傾きに基づき、uvw視野座標系をHMD110に設定する。HMD110に設定されるuvw視野座標系は、HMD110を装着したユーザ190が仮想空間において物体を見る際の視点座標系に対応する。
図3を参照して、uvw視野座標系について説明する。図3は、ある実施形態に従うHMD110に設定されるuvw視野座標系を概念的に表す図である。HMDセンサ120は、HMD110の起動時に、グローバル座標系におけるHMD110の位置及び傾きを検出する。プロセッサ202は、検出された値に基づいて、uvw視野座標系をHMD110に設定する。
図3に示されるように、HMD110は、HMD110を装着したユーザの頭部を中心(原点)とした3次元のuvw視野座標系を設定する。より具体的には、HMD110は、グローバル座標系を規定する水平方向、鉛直方向、及び前後方向(x軸、y軸、z軸)を、グローバル座標系内においてHMD110の各軸周りの傾きだけ各軸周りにそれぞれ傾けることによって新たに得られる3つの方向を、HMD110におけるuvw視野座標系のピッチ方向(u軸)、ヨー方向(v軸)、及びロール方向(w軸)として設定する。
ある態様において、HMD110を装着したユーザ190が直立し、かつ、正面を視認している場合、プロセッサ202は、グローバル座標系に平行なuvw視野座標系をHMD110に設定する。この場合、グローバル座標系における水平方向(x軸)、鉛直方向(y軸)、及び前後方向(z軸)は、HMD110におけるuvw視野座標系のピッチ方向(u軸)、ヨー方向(v軸)及びロール方向(w軸)に一致する。
uvw視野座標系がHMD110に設定された後、HMDセンサ120は、HMD110の動きに基づいて、設定されたuvw視野座標系におけるHMD110の傾き(傾きの変化量)を検出できる。この場合、HMDセンサ120は、HMD110の傾きとして、uvw視野座標系におけるHMD110のピッチ角(θu)、ヨー角(θv)及びロール角(θw)をそれぞれ検出する。ピッチ角(θu)は、uvw視野座標系におけるピッチ方向周りのHMD110の傾き角度を表す。ヨー角(θv)は、uvw視野座標系におけるヨー方向周りのHMD110の傾き角度を表す。ロール角(θw)は、uvw視野座標系におけるロール方向周りのHMD110の傾き角度を表す。
HMDセンサ120は、検出されたHMD110の傾き角度に基づいて、HMD110が動いた後のHMD110におけるuvw視野座標系を、HMD110に設定する。HMD110と、HMD110のuvw視野座標系との関係は、HMD110の位置及び傾きに関わらず、常に一定である。HMD110の位置及び傾きが変わると、当該位置及び傾きの変化に連動して、グローバル座標系におけるHMD110のuvw視野座標系の位置及び傾きが変化する。
ある態様において、HMDセンサ120は、赤外線センサからの出力に基づいて取得される赤外線の光強度及び複数の点間の相対的な位置関係(例えば、各点間の距離等)に基づいて、HMD110の現実空間内における位置を、HMDセンサ120に対する相対位置として特定してもよい。また、プロセッサ202は、特定された相対位置に基づいて、現実空間内(グローバル座標系)におけるHMD110のuvw視野座標系の原点を決定してもよい。
図4を参照して、仮想空間についてさらに説明する。図4は、ある実施形態に従う仮想空間400を表現する一態様を概念的に表す図である。仮想空間400は、中心406の360度方向の全体を覆う全天球状の構造を有する。図4では、説明を複雑にしないために、仮想空間400のうちの上半分の天球が例示されている。仮想空間400では各メッシュが規定される。各メッシュの位置は、仮想空間400に規定されるXYZ座標系における座標値として予め規定されている。コンピュータ200は、仮想空間400に展開可能なコンテンツ(静止画、動画等)を構成する各部分画像を、仮想空間400において対応する各メッシュにそれぞれ対応付けて、ユーザによって視認可能な仮想空間画像が展開される仮想空間400をユーザに提供する。
ある態様において、仮想空間400では、中心406を原点とするxyz座標系が規定される。xyz座標系は、例えば、グローバル座標系に平行である。xyz座標系は視点座標系の一種であるため、xyz座標系における水平方向、鉛直方向(上下方向)及び前後方向は、それぞれx軸、y軸及びz軸として規定される。したがって、xyz座標系のx軸(水平方向)がグローバル座標系のx軸と平行であり、xyz座標系のy軸(鉛直方向)がグローバル座標系のy軸と平行であり、xyz座標系のz軸(前後方向)がグローバル座標系のz軸と平行である。
HMD110の起動時、すなわちHMD110の初期状態において、仮想カメラ404が、仮想空間400の中心406に配置される。ある態様において、プロセッサ202は、仮想カメラ404が撮影する画像をHMD110の表示部112に表示する。仮想カメラ404は、現実空間におけるHMD110の動きに連動して、仮想空間400を同様に移動する。これにより、現実空間におけるHMD110の位置及び向きの変化が、仮想空間400において同様に再現され得る。
HMD110の場合と同様に、仮想カメラ404には、uvw視野座標系が規定される。仮想空間400における仮想カメラ404のuvw視野座標系は、現実空間(グローバル座標系)におけるHMD110のuvw視野座標系に連動するように規定される。したがって、HMD110の傾きが変化すると、それに応じて、仮想カメラ404の傾きも変化する。また、仮想カメラ404は、HMD110を装着したユーザの現実空間における移動に連動して、仮想空間400において移動することもできる。
コンピュータ200のプロセッサ202は、仮想カメラ404の配置位置と、基準視線408とに基づいて、仮想空間400における視界領域410を規定する。視界領域410は、仮想空間400のうち、HMD110を装着したユーザが視認する領域に対応する。
注視センサ140によって検出されるユーザ190の視線は、ユーザ190が物体を視認する際の視点座標系における方向である。HMD110のuvw視野座標系は、ユーザ190が表示部112を視認する際の視点座標系に等しい。また、仮想カメラ404のuvw視野座標系は、HMD110のuvw視野座標系に連動している。したがって、ある態様に従うシステム100は、注視センサ140によって検出されたユーザ190の視線を、仮想カメラ404のuvw視野座標系におけるユーザの視線とみなすことができる。
図5を参照して、ユーザの視線の決定について説明する。図5は、ある実施形態に従うHMD110を装着するユーザ190の頭部を上から表した図である。
ある態様において、注視センサ140は、ユーザ190の右目及び左目の各視線を検出する。ある態様において、ユーザ190が近くを見ている場合、注視センサ140は、視線R1及びL1を検出する。別の態様において、ユーザ190が遠くを見ている場合、注視センサ140は、視線R2及びL2を検出する。この場合、ロール方向wに対して視線R2及びL2がなす角度は、ロール方向wに対して視線R1及びL1がなす角度よりも小さい。注視センサ140は、検出結果をコンピュータ200に送信する。
コンピュータ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が実際に視線を向けている方向に相当する。
別の態様において、システム100は、システム100を構成するいずれかの部分に、マイク及びスピーカを備えてもよい。ユーザは、マイクに発話することにより、仮想空間400に対して、音声による指示を与えることができる。
また、別の態様において、システム100は、テレビジョン放送受信チューナを備えてもよい。このような構成によれば、システム100は、仮想空間400においてテレビ番組を表示することができる。
さらに別の態様において、システム100は、インターネットに接続するための通信回路、あるいは、電話回線に接続するための通話機能を備えていてもよい。
図6及び図7を参照して、視界領域410について説明する。図6は、仮想空間400において視界領域410をx方向から見たyz断面を表す図である。図7は、仮想空間400において視界領域410をy方向から見たxz断面を表す図である。
図6に示されるように、yz断面における視界領域410は、領域602を含む。領域602は、仮想カメラ404の配置位置と基準視線408と仮想空間400のyz断面とによって定義される。プロセッサ202は、仮想空間おける基準視線408を中心として極角αを含む範囲を、領域602として規定する。
図7に示されるように、xz断面における視界領域410は、領域702を含む。領域702は、仮想カメラ404の配置位置と基準視線408と仮想空間400のxz断面とによって定義される。プロセッサ202は、仮想空間400における基準視線408を中心とした方位角βを含む範囲を、領域702として規定する。極角α及びβは、仮想カメラ404の配置位置と仮想カメラ404の向きとに応じて定まる。
ある態様において、システム100は、コンピュータ200からの信号に基づいて、視界画像を表示部112に表示させることにより、仮想空間における視界をユーザ190に提供する。視界画像は、仮想空間画像402のうち視界領域410に重畳する部分に相当する。ユーザ190が、頭に装着したHMD110を動かすと、その動きに連動して仮想カメラ404も動く。その結果、仮想空間400における視界領域410の位置が変化する。これにより、表示部112に表示される視界画像は、仮想空間画像402のうち、仮想空間400においてユーザが向いた方向の視界領域410に重畳する画像に更新される。ユーザは、仮想空間400における所望の方向を視認することができる。
このように、仮想カメラ404の向き(傾き)は仮想空間400におけるユーザの視線(基準視線408)に相当し、仮想カメラ404が配置される位置は、仮想空間400におけるユーザの視点に相当する。したがって、仮想カメラ404を移動(配置位置を変える動作、向きを変える動作を含む)させることにより、表示部112に表示される画像が更新され、ユーザ190の視界(視点、視線を含む)が移動される。
ユーザ190は、HMD110を装着している間、現実世界を視認することなく、仮想空間400に展開される仮想空間画像402のみを視認できる。そのため、システム100は、仮想空間400への高い没入感覚をユーザに与えることができる。
ある態様において、プロセッサ202は、HMD110を装着したユーザ190の現実空間における移動に連動して、仮想空間400において仮想カメラ404を移動し得る。この場合、プロセッサ202は、仮想空間400における仮想カメラ404の位置及び向きに基づいて、HMD110の表示部112に投影される画像領域(すなわち、仮想空間400における視界領域410)を特定する。
ある実施形態に従うと、仮想カメラ404は、2つの仮想カメラ、すなわち、右目用の画像を提供するための仮想カメラと、左目用の画像を提供するための仮想カメラとを含んでもよい。また、ユーザ190が3次元の仮想空間400を認識できるように、適切な視差が、2つの仮想カメラに設定されてもよい。
図8Aを参照して、コントローラ160の一例であるコントローラ160Aについて説明する。図8Aは、ある実施形態に従うコントローラ160Aの概略構成を表す図である。
ある態様において、コントローラ160Aは、右コントローラと左コントローラとを含み得る。説明を簡単にするために、図8Aにおけるコントローラ160Aは右コントローラを示す。右コントローラは、ユーザ190の右手で操作される。左コントローラは、ユーザ190の左手で操作される。ある態様において、右コントローラと左コントローラとは、別個の装置として対称に構成される。したがって、ユーザ190は、右コントローラを把持した右手と、左コントローラを把持した左手とをそれぞれ自由に動かすことができる。別の態様において、コントローラ160は両手の操作を受け付ける一体型のコントローラであってもよい。以下、右コントローラ160Aについて説明する。
右コントローラ160Aは、グリップ802と、フレーム804と、天面806とを備える。グリップ802は、ユーザ190の右手によって把持されるように構成されている。例えば、グリップ802は、ユーザ190の右手の掌と3本の指(中指、薬指、小指)とによって保持され得る。
グリップ802は、ボタン808及び810と、モーションセンサ130とを含む。ボタン808は、グリップ802の側面に配置され、右手の中指による操作を受け付ける。ボタン810は、グリップ802の前面に配置され、右手の人差し指による操作を受け付ける。ある態様において、ボタン808、810は、トリガー式のボタンとして構成される。モーションセンサ130は、グリップ802の筐体に内蔵されている。なお、ユーザ190の動作がカメラその他の装置によってユーザ190の周りから検出可能である場合には、グリップ802は、モーションセンサ130を備えなくてもよい。
フレーム804は、その円周方向に沿って配置された複数の赤外線LED812を含む。赤外線LED812は、コントローラ160Aを使用するプログラムの実行中に、当該プログラムの進行に合わせて赤外線を発光する。赤外線LED812から発せられた赤外線は、右コントローラ160Aと左コントローラ(図示しない)との各位置や姿勢(傾き、向き)を検出するために使用され得る。図8に示される例では、2列に配置された赤外線LED812が示されているが、配列の数は図8に示されるものに限られない。1列あるいは3列以上の配列が使用されてもよい。
天面806は、ボタン814及び816と、アナログスティック818とを備える。ボタン814及び816は、プッシュ式ボタンとして構成される。ボタン814及び816は、ユーザ190の右手の親指による操作を受け付ける。アナログスティック818は、ある態様において、初期位置(ニュートラルの位置)から360度任意の方向への操作を受け付ける。当該操作は、例えば、仮想空間400に配置されるオブジェクトを移動するための操作を含む。
ある態様において、右コントローラ160A及び左コントローラは、赤外線LED812等の部材を駆動するための電池を含む。電池は、1次電池及び2次電池のいずれであってもよく、その形状は、ボタン型、乾電池型等任意であり得る。別の態様において、右コントローラ160Aと左コントローラは、例えば、コンピュータ200のUSBインターフェースに接続され得る。この場合、右コントローラ800及び左コントローラは、USBインターフェースを介して電力を供給され得る。
図8Bを参照して、コントローラ160の一例であるコントローラ160Bについて説明する。図8Bは、ある実施形態に従うコントローラ160Bの概略構成を表す図である。
コントローラ160Bは、複数のボタン820(820a、820b、820c、820d)及び822(822a、822b、822c、822d)と、左右のアナログスティック824L及び824Rとを備える。各ボタン820及び822は、プッシュ式ボタンとして構成される。ボタン820及び822は、ユーザ190の手の親指による操作を受け付ける。ユーザ190の手の人差し指又は中指による操作を受け付けることが可能な不図示のトリガー式のボタンが、更にコントローラ160Bに設けられてもよい。アナログスティック824L及び824Rは、ある態様において、それぞれ初期位置(ニュートラルの位置)から360度任意の方向への操作を受け付ける。当該操作は、例えば、仮想空間400に配置されるオブジェクトを移動するための操作を含む。ボタン820(820a、820b、820c、820d)及び822(822a、822b、822c、822d)並びにアナログスティック824L及び824R(更に、含まれる場合には不図示のトリガー式ボタン)には、それぞれ別個の操作コマンドが割り当てられる。操作コマンドは、例えば、仮想空間400内のオブジェクトに指令を与えるためのコマンド、ゲームのメニュー画面等において各種の設定を行うためのコマンド、及びユーザ190が仮想空間400を体験している際にコンピュータ200に入力し得る任意の他のコマンドを含む。各ボタン又はアナログスティックに割り当てられた操作コマンドは、例えばゲームの進行や場面の変化に応じて、動的に変更されてもよい。
ある態様において、コントローラ160Bは、その外表面に配置された不図示の複数の赤外線LEDを含んでもよい。赤外線LEDは、コントローラ160Bを使用するプログラムの実行中に、当該プログラムの進行に合わせて赤外線を発光する。赤外線LEDから発せられた赤外線は、コントローラ160Bの位置や姿勢(傾き、向き)を検出するために使用され得る。またコントローラ160Bは、内部の電子部品を駆動するための電池を含む。電池は、1次電池及び2次電池のいずれであってもよく、その形状は、ボタン型、乾電池型等任意であり得る。別の態様において、コントローラ160Bは、例えば、コンピュータ200のUSBインターフェースに接続され得る。この場合、コントローラ160Bは、USBインターフェースを介して電力を供給され得る
。
図9は、本開示の一実施形態による、システム100を介してユーザに仮想体験を提供するための、コンピュータ200の機能を示すブロック図である。既に述べたように、本開示の実施形態において、仮想体験をユーザに提供するための様々な画像表示装置を用いることができる。以下に説明する実施形態では、画像表示装置の一例としてHMDが用いられる。
コンピュータ200は、主にHMDセンサ120、モーションセンサ130、注視センサ140、コントローラ160からの入力に基づいて、様々な処理を実行する。
コンピュータ200は、プロセッサ202と、メモリ204と、通信制御部205とを備える。プロセッサ202は、仮想空間特定部902と、HMD動作検知部904と、視線検知部906と、基準視線決定部908と、視界領域決定部910と、仮想視点特定部912と、視界画像生成部914と、仮想カメラ制御部916と、ゲーム離脱制御部918と、視界画像出力部924と、を含み得る。メモリ204は様々な情報を格納するように構成され得る。一例では、メモリ204は、仮想空間データ926、オブジェクトデータ928、アプリケーションデータ930、取り外し判定データ932、アラートデータ934、その他のデータ938等を含んでもよい。メモリ204はまた、HMDセンサ120、モーションセンサ130、注視センサ140、コントローラ160等からの入力に対応した出力情報をHMD110に関連付けられる表示部112へ提供するための演算に必要な、各種データを含んでもよい。オブジェクトデータ928は、仮想空間内に配置される様々なオブジェクトに関するデータを含んでもよい。取り外し判定データ932は、ユーザによる画像表示装置(HMD等)の取り外し動作を判定するのに使用される様々なデータを含んでもよい。表示部112は、HMD110に内蔵されてもよいし、HMD110に取り付け可能な別のデバイス(例えば、スマートフォン)のディスプレイであってもよい。
図9においてプロセッサ202内に含まれるコンポーネントは、プロセッサ202が実行する機能を具体的なモジュールとして表現する1つの例にすぎない。複数のコンポーネントの機能が単一のコンポーネントによって実現されてもよい。プロセッサ202がすべてのコンポーネントの機能を実行するように構成されてもよい。
図10は、ユーザが没入する仮想空間の画像を表示部112に表示するための一般的な処理のフロー図である。
図9及び図10を参照して、仮想空間の画像を提供するためのシステム100の一般的な処理を説明する。仮想空間400は、HMDセンサ120、注視センサ140及びコンピュータ200等の相互作用によって提供され得る。
処理はステップ1002において開始する。一例として、アプリケーションデータ930に含まれるゲームアプリケーションがコンピュータ200によって実行されてもよい。ステップ1004において、プロセッサ202(又は、仮想空間特定部902)は、仮想空間データ926を参照するなどして、ユーザが没入する仮想空間400を構成する天球状の仮想空間画像402を生成する。HMDセンサ120によってHMD110の位置や傾きが検知される。HMDセンサ120によって検知された情報はコンピュータ200に送信される。ステップ1006において、HMD動作検知部904は、HMD110の位置情報、傾き情報等を取得する。ステップ1008において、取得された位置情報及び傾き情報に基づいて視界方向が決定される。
注視センサ140がユーザの左右の目の眼球の動きを検出すると、当該情報がコンピュータ200に送信される。ステップ1010において、視線検知部906は、右目及び左目の視線が向けられる方向を特定し、視線方向N0を決定する。ステップ1012において、基準視線決定部908は、HMD110の傾きにより決定された視界方向又はユーザの視線方向N0を基準視線408として決定する。基準視線408はまた、HMD110の位置や傾きに追随する仮想カメラ404の位置及び傾きに基づいて決定されてもよい。
ステップ1014において、視界領域決定部910は、仮想空間400における仮想カメラ404の視界領域410を決定する。図4に示すように、視界領域410は、仮想空間画像402のうちユーザの視界を構成する部分である。視界領域410は基準視線408に基づいて決定される。視界領域410をx方向から見たyz断面図及び視界領域410をy方向から見たxz断面図は、既に説明した図6及び図7にそれぞれ示されている。
ステップ1016において、視界画像生成部914は、視界領域410に基づいて視界画像を生成する。視界画像は、右目用と左目用の2つの2次元画像を含む。これらの2次元画像が表示部112に重畳される(より具体的には、右目用画像が右目用表示部に出力され、左目用画像が左目用表示部に出力される)ことにより、3次元画像としての仮想空間400がユーザに提供される。ステップ1018において、視界画像出力部924は、視界画像に関する情報を表示部112に出力する。表示部112は、受信した視界画像の情報に基づいて、当該視界画像を表示する。処理はステップ1020において終了する。
図11は、本開示の一実施形態による、ゲーム離脱制御方法1100のフローチャートである。本開示の一実施形態において、コンピュータプログラムが、図11に示される各ステップをプロセッサ202(又はコンピュータ200)に実行させてもよい。また、本開示の別の実施形態は、少なくともプロセッサを備え、当該プロセッサの制御により方法1100を実行するコンピュータとして実施することもできる。
以下、本開示の実施形態について具体的に説明する。ここでは、本開示の実施形態を適用することができる具体例として、ユーザが、当該ユーザに関連付けられるアバター、他のオブジェクト等が配置された仮想空間に没入して楽しむことができるゲームを想定する。しかし、本開示の実施形態は、必ずしもこのような態様に限定されない。本開示の実施形態が、特許請求の範囲において規定される範囲に含まれる様々な態様を取り得ることは、当業者にとって明らかであろう。
図12は、複数のユーザ、例えば2人のユーザであるユーザA及びユーザBがオンラインゲームのマッチプレイをしているときの状況を示す概略図である。尚、ゲームに参加するユーザの人数は2人に制限されない。本開示の実施形態は、より多くの数のユーザが参加できるゲームにも適用することができる。ユーザA及びユーザBのそれぞれの場所には、図9に示すシステム100が設置されており、これらシステムが互いにネットワーク192及びサーバ150を介して接続されている。説明を簡略にするために、図12では、ユーザAが装着した上述のHMD110のようなHMD1202と、右手に持った上述のコントローラ(ゲームに関連した可動デバイス)のようなコントローラ1204と、これらHMD1202及びコントローラ1204が接続された、机1206上のパーソナルコンピュータ(PC)1208のみが示されている。しかし、図1又は図9に示した他の要素が備えられていてもよいことは明らかであろう。ユーザBも同様のデバイスを有しているが、簡略化のために当該デバイスは省略されている。以下では、図12に示したユーザA及びユーザBがオンラインマッチプレイをしている状況を想定して、本開示の実施形態について説明する。
図11に戻り、処理は最初にステップ1104に進む。ステップ104において、ゲーム離脱制御部918は、アプリケーションデータ930などから得られる現在プレイされているゲームに関する情報に基づき、ユーザAが、他のユーザも参加しているオンラインマッチをプレイしているかどうかを判定する。ステップ1104においてユーザAがプレイ中でないと判定された場合(ステップ1104の「N」)、処理はステップ1122に進み、終了する。例えば、ユーザAがオンラインマッチプレイ中でない場合、又はユーザAもしくは対戦相手のユーザBがプレイ中のゲームを正常に終了させたときには、この処理が実行される。
一方、ユーザAが現在プレイ中である場合(ステップ1104の「Y」)、処理はステップ1106に進む。ステップ1106において、ゲーム離脱制御部918は、ユーザAによるHMD1202等の取り外し動作が検知されたかどうかを判定する。HMD1202等の取り外し動作の検知の詳細については図12〜図19Bを参照して後述する。取り外し動作が検知されなかった場合(ステップ1106の「N」)、処理はステップ1104の前に戻る。他方、取り外し動作が検知された場合(ステップ1106の「Y」)、処理はステップ1108に進む。ステップ1108において、ゲーム離脱制御部918は、アラートデータ934を参照することなどによって、ゲームへの復帰に関する入力を促すための出力として、ユーザAに対するアラートを生成する。このアラートの生成は、ユーザ・インターフェースの生成を含んでもよい。アラートデータ934には、生成されるアラートの内容、形態、生成する場所等のデータが格納されていてもよい。アラートは、表示、音、振動、光などの形態で生成したり、複数の形態で生成したり、重複して生成したりすることができる。アラートの具体例については図20及び図21を参照して後述する。
処理はステップ1110に進み、ゲーム離脱制御部918は、ゲームへの復帰に関する入力を促す出力に応答してユーザAがプレイに復帰することを選択したかどうかを判定する。プレイへの復帰が選択されたと判定された場合(ステップ1110の「Y」)、処理はステップ1104に戻る。プレイへの復帰が選択されなかった場合(ステップ1110の「N」)、処理はステップ1112に進む。
ステップ1112において、ゲーム離脱制御部918は、プレイに復帰しないこと、即ち正常終了することが選択されたかどうかを判定する。正常終了が選択された場合(ステップ1112の「Y」)、処理はステップ1114に進む。ステップ1114において、正常終了処理が行われる。一例において、ユーザAがマッチプレイから離脱することを選択した結果として、ユーザAの負け、相手のユーザBの勝ちを決定してゲームを終了させてもよい。複数のユーザが参加するゲームにおいて、一部のユーザが離脱したときにゲームの勝敗をどのように決定するかについては任意に定めてもよい。例えば、ユーザAがユーザBよりも高い得点を有していた場合でも、ユーザAが離脱するときには、ユーザAを負けと決定してもよい。
プレイへ復帰しないこと(正常終了)が選択されなかった場合(ステップ1112の「N」)、処理はステップ1116に進む。ステップ1116において、ゲーム離脱制御部918は、ゲームのプレイに必要な通信接続が切断されたかどうかを判定する。例えば、ネットワークとの接続のための通信ケーブルが抜かれたとき、通信接続が切断されたと判定される。通信接続が切断されたと判定された場合(ステップ1116の「Y」)、処理はステップ1118に進む。ステップ1118において、ゲーム離脱制御部918は不正離脱処理を行った後に処理を終了する。不正離脱処理の一例において、マッチプレイを正常に終了しなかったと判定されたユーザAに対して、上述の正常終了処理においてユーザAに課される不利益に加えて、今後のゲーム参加に対する制限、ペナルティなどの不利益が課されてもよい。不正離脱処理においてどのような不利益をユーザAに課すかは、ゲームの種類、対戦相手が受ける影響等に応じて、任意に定めることができる。
他方、通信接続が切断されていないと判定された場合(ステップ1116の「N」)、処理はステップ1120に進む。ステップ1120において、ゲーム離脱制御部918は、所定時間が経過したかどうかを判定する。当該所定時間は、例えば、ステップ1106において取り外し動作が検知されたときから経過した時間について設定されてもよい。あるいは、所定時間は、ステップ1108においてアラートが生成されたときから経過した時間について設定されてもよい。あるいは、所定時間は、ステップ1110、1112又は1116に関連する時点から経過した時間について設定されてもよい。これらの所定時間は、対戦相手であるユーザBがユーザAからの何らかの応答を待っている時間に相当し得る。したがって、所定時間をあまり長い時間とすることは好ましくない。一例として、所定時間は30秒に設定されてもよい。尚、ゲームの種類によっては、所定時間は、より長い時間又はより短い時間であってもよい。このような時間制限を設けることにより、相手プレーヤが無制限に待たされることによって迷惑を被るのを防ぐことができる。
所定時間が経過していない場合(ステップ1120の「N」)、処理はステップ1110の前に戻り、プレイへの復帰が選択されたか否か、プレイへ復帰しないことが選択されたか否か、通信接続が切断されたか否か、所定時間が経過したか否かについての判定が繰り返し実行される。それぞれの判定に関する処理は上述の通りである。ステップ1120において所定時間が経過したと判定されると(ステップ1120の「Y」)、処理はステップ1118に進み、上述の不正離脱処理が実行され、本フローは終了する。
次に、図13〜図19を参照して、図11のステップ1106におけるHMD等の取り外し動作の検知の具体例について説明する。
先ず図13を用いて、HMDの取り外し又はコントローラを手放すことに基づくHMD取り外し動作の検知の一例について説明する。図示されるように、ユーザAが、装着しているHMD1202を頭から外して近くの机の上に置いた状況を考える。ここで、机の上に置かれたHMDをHMD1302として示す。この場合、HMD1302の動きはほぼ又は完全に静止する。したがって、HMDが動く距離が最小距離以下になったか否かを判定することにより、HMDが完全静止状態又はそれに近い状態にあるか否かが分かる。これにより、ユーザAがHMD1202を取り外したか否かを検知することができる。上記の最小距離は、HMD及びコントローラに関して取り外し判定データ932に予め格納されていても良い。ユーザがHMD1202を装着してゲームをプレイしている間は、多少なりともHMDの動きが発生する。したがって、上記の最小距離を閾値として用いることにより、HMDが完全静止状態又はそれに近い状態になったか否かを判定することができる。HMD1202の位置や動きは、前述のHMDセンサ120のポジショントラッキング機能又はセンサ114によるHMDの位置及び傾き検出機能を用いて検出することができる。尚、このような機能のないHMDの場合には、ジャイロセンサなどのセンサが追加されても良い。また、図13ではHMDが置かれる場所として机が示されたが、HMDが床や椅子などのその他の任意の場所に置かれる場合にも本開示の実施形態を同様に適用することができる。
図13には、ユーザAが手に持っていたコントローラ1204を机の上に置いた状況も示されており、置かれたコントローラはコントローラ1304として図示されている。この場合もまた、コントローラ1304は完全静止状態又はこれに近い状態となる。ユーザがコントローラを手に持ってゲームをプレイしている間は多少なりとも動きが発生する。したがって、コントローラが完全静止状態又はこれに近い状態になったと判定される場合、ユーザがコントローラを手放してどこかに置いたことになる(即ち、取り外し動作が行われたことになる)。コントローラの位置、動き等は、例えば前述のモーションセンサ130によって検出することができる。ユーザによっては、HMDを外す前にコントローラを先に置く場合がある。そのような場合には、コントローラの静止状態に基づいて処理を行うことにより、HMDの動きに基づく処理よりも早く、ユーザによる取り外し動作を検出することができる。
次に、図14を参照して、HMDの動きに基づく処理の別の例として、取り外し動作時のHMDの動きの軌跡を利用したHMD取り外し動作検知について説明する。図示されるように、ユーザAが頭1402に装着されたHMD1404を外そうとするとき、ユーザAは、先ずHMD1404を上方向に軌跡1406に沿って持ち上げ、そして持ち上げた位置からどこか別の場所(例えば、机の上)に置くために、HMD1404を下方向に軌跡1408に沿って下げる。このような場合、軌跡1406及び軌跡1408は放物線状の曲線となる。したがって、このような放物線状の軌道に沿ったHMDの動きが検出されたときに、HMDの取り外し動作が行われていると判定することができる。このような場合との比較のために、ユーザAが単に上を向く状況を考えると、HMDは例えば軌跡1410を辿る。軌跡1410の動きの距離は短く、上下方向の移動量が少ないので、軌跡1406又は軌跡1408などの放物線状の動きとはかなり異なることが分かる。したがって、ユーザによるHMDの取り外し動作と、ユーザが単に上を向く動作とは、区別することが可能である。この検知手法によれば、HMDがどこかに置かれて完全に静止状態になるときより前の段階において、取り外し動作を検知することができる。
別の例として、ゲームプレイ中に発生する可能性が低い、ゲームプレイとして不自然なHMDの動きを用いて、HMDの取り外し動作を検知しても良い。例えば、そのような不自然な動きが予めデータとして取り外し判定データ932に格納されていてもよい。検出されたHMDの動きが予め格納された動きと比較して同じであるか又は類似するかを判定することにより、取り外し動作を検知することができる。
次に、図15を参照して、着脱センサを用いたHMD取り外し動作検知について説明する。この例では、ユーザAの頭1502に装着されたHMD1504に、点線で概略的に示された着脱センサ1506が設けられている。着脱センサ1506を用いて、ユーザAの額が検出されなくなったときにHMD1504が頭から外されたと判定することによって、取り外し動作を検知することができる。着脱センサ1506は、例えば、赤外線を使用するタイプのセンサであってもよいし、機械式スイッチのタイプのセンサ、その他の任意のタイプのセンサであってもよい。
次に、図16を参照して、HMD等の位置に基づいてHMD取り外し動作を検知する例について説明する。ここで、位置には、HMD等の向きも含むものとする。図示されるように、HMD1602は下向きに置かれた状態であると仮定する。この場合、HMD1602の下向きの状態がある一定時間以上続いたときにHMD1602が取り外された状態にあると判定することによって、取り外し動作の発生を検知することができる。HMD1602が上向きになった状態又はその他の向きになった状態が一定時間以上継続したときも、同様の処理が可能である。HMDの向きが一定時間以上同じままであることは、ゲームプレイ上ほぼあり得ない。したがって、そのような状況が生じた場合、HMDが机、床等に置かれていると判定することができる。同様に、コントローラ1604が特定の向き(例えば、横向き)の状態になったまま、ある一定時間以上が経過したときに、コントローラ1604がユーザの手から放れて机等の上に置かれたと判定されても良い。
以上、HMD等の動き及び位置の一方に基づいてHMD取り外し動作の検知を行う例について説明した。しかし、本開示の実施形態はこのような態様に限定されない。HMD等の動きと位置の双方に基づいて、取り外し動作の検知が行われても良い。例えば、所定の位置からの所定の動きによる移動が生じたこと、所定の動きによる所定の位置への移動が生じたこと、所定の動きが所定の位置において生じたことなどに基づいて、取り外し動作の検知が行われても良い。
図17A及び図17Bを参照して、HMD等の動き及び位置の双方に基づいてHMD取り外し動作検知を行う例について説明する。図17A及び図17Bにおいては、簡単化のために、HMDの向きが白抜きの太い矢印で示されている。図示されるように、図17AのHMD1702は、前向きの状態で上方向にある距離以上動かされる。この動きは、HMD1702を頭上へ外す動きとして解釈することができる。他方、図17BのHMD1704は、下向きの状態下方向へある距離以上動かされる。この動きは、HMD1704を床等に置く動きとして解釈することができる。このようにHMDの動きを解釈することに基づいて、HMDの取り外し動作を検知しても良い。
以上においては、HMD等を頭から外すとき、机に置くとき等を予め想定してHMD等の取り外し動作検知を行う例について説明した。別の例として、HMDのポジショントラッキングを行うことによってHMDの動きの追跡を続けていると、HMDの動きに関するデータが蓄積される。そして、ユーザがどのような動きをしているときに取り外し動作を行っているかを示す教師データを取得して、人工知能(AI)を用いた機械学習に利用することができる。その場合、予め想定されていなかった動き及び位置に基づいて取り外し動作を検知することも可能となり得る。
次に、図18A及び図18Bを参照して、ユーザの頭部及び目の少なくとも一方の位置及び動きの少なくとも一方に基づいてHMD取り外し動作の検知を行う例について説明する。尚、ユーザの頭部の動き及び位置は、HMDを装着しているときにはHMDの位置及び動きとして特定することができるので、ここでは特に、目の位置及び動きに基づく処理について説明する。図18A及び図18Bに示すように、HMD1802は、前述の注視センサ140のような注視センサ1804(概略的に示す)を備え、ユーザの目のアイトラッキングを行う。図18Aでは、ユーザがHMD1802を頭に装着した状態を想定している。このときには、注視センサ1804によってユーザの目をトラッキングすることが可能である。他方、図18Bにおいて、HMDを頭から外すためにユーザがHMDを頭上に持ち上げたときには、注視センサ1804はユーザの目をトラッキングすることができなくなる。このように、目の位置及び/又は動きを検出することができないとき、取り外し動作が行われたと判定されてもよい。さらに、ゲームプレイにおいて通常起きえないような不自然な目の動きを検出したときにも、取り外し動作が行われたと判定されても良い。このような判定に用いるデータは、取り外し判定データ932に格納されていても良い。
次に、図19A及び図19Bを参照して、HMDとコントローラとの間の相対的な位置関係に基づいてHMD取り外し動作の検知を行う例について説明する。図19Aは、HMD1902を装着したユーザAが手にコントローラ1904を持っている状態を示している。このときのHMD1902とコントローラ1904との間の距離D1の最大距離は、ユーザAの手の長さによってほぼ決まる。このような状況で、ユーザAがHMD1902を取り外すための準備としてコントローラ1904を少し離れた机上に置くと、机上に置かれたコントローラ1906とHMD1902との間の距離D2は、D1の最大距離よりも大きくなる。したがって、コントローラとHMDとの間の位置関係が所定の条件を満たす(この例では、距離D2が距離D1の最大値よりも大きい)場合に、HMDの取り外し動作が行われた(又は、行われようとしている)と判定することができる。机上ではなく、参照番号1908で示す位置にコントローラが置かれて、コントローラ1908とHMD1902との間の距離D3がD1の最大距離以上になったときも同様の処理を行うことができる。
他方、図19Bに示すように、ユーザAがコントローラ1904を参照番号1910で示す位置に移動させてHMD1902に近付けると、コントローラ1910とHMD1902との間の距離はある一定距離以下となる。この状態は、ユーザAがHMD1902を取り外そうとして、コントローラを持っている手をHMD1902に近付けた状態であると解釈することができる。したがって、コントローラとHMDとの間の距離が所定の距離以下になるなどの所定の条件が満たされる場合に、HMDの取り外し動作が行われたと判定しても良い。あるいは、ゲームの性質上、コントローラをHMDに近付ける必要がない場合において、コントローラが一定時間以上HMDに近付けられたときに、HMDの取り外し動作が発生したと判定されても良い。
図19A及び図19Bでは、コントローラとHMDとの間の位置関係が所定の条件を満たすか否かに基づく判定について説明された。別の例として、コントローラとユーザの頭部との間の位置関係が所定の条件を満たすか否かに基づいて、同様の判定を行うことができる。
次に、図20及び図21を参照して、図11のステップ1108におけるアラート生成の詳細について説明する。
図20は、HMD110の表示部112(図9参照)に表示されるアラートの例を示している。アラート2002は、HMD等の取り外し動作の検知をトリガーとして表示され、ユーザからの入力を受け付けるためのユーザ・インターフェース(UI)を提供する。この例では、アラート2002は、「プレイに復帰しますか?」というテキスト表示2004とともに、復帰選択のための「はい」ボタン2006を含んでいる。図11のステップ1110においてプレイへの復帰を選択するとき、ユーザは「はい」ボタン2006を操作すれば良い。また、アラート2002は、「プレイに復帰しない(正常終了)を選択しますか?」というテキスト表示2008とともに、正常終了即ち正常離脱を選択するための「はい」ボタン2010を含んでいる。図11のステップ1112において正常終了を選択するときには、ユーザは「はい」ボタン2010を操作すれば良い。また、アラート2002は、「正常終了しないときには、不正離脱となり、今後のゲームプレイに不利益を受けますので、ご注意下さい。」という、ユーザに対する警告文2012を含んでもよい。当該警告文により、ユーザに対してゲームへの復帰あるいはゲームの正常終了を促すことができる。別の例として、アラート2002は、「30秒以内に復帰して下さい。復帰しない場合にはリタイヤとみなします。」のような警告文を含んでも良い。
図13〜図19で説明した取り外し動作の検知手法は、HMDを取り外す前やHMDの取り外し中に、取り外し動作を検出できる手法(タイミング的には、HMD110の表示部112に表示されるアラート2002をユーザが視認できるケース)と、HMDの取り外しが完了しなければ取り外し動作を検出できない手法(タイミング的には、HMD110の表示部112に表示されるアラート2002をユーザが視認できないケース)の両方を含み得る。
図21は、図13〜図19で説明した手法に適用することができる、本開示の実施形態による、重複アラートについて説明する。図20に示したアラート2002はHMD110の表示部112に表示されるので、HMDを外した後、ユーザはアラート2002を見ることができない。従って、HMD等の取り外し動作中、取り外し動作が完了する前にアラートを生成してユーザの注意をより確実に惹き付けるために、上記アラート2002に加えて、追加のアラートを生成しても良い。例えば、図示されるように、ユーザAの机2102上に置かれたVRゲームを実行しているPC2104のディスプレイに、テキストその他のタイプのアラート2106を表示しても良い。この追加のアラート2106は、図20に示される警告文2012のような警告文を含んでもよい。別の例において、追加のアラートは、机2102に置かれたコントローラ2108を振動させることであってもよい。あるいは、追加のアラートは、取り外されたHMD2110に設けられたランプ2112を点灯又は点滅させることであってもよい。また、追加のアラートは、アラーム音を生成し、ユーザが使っているヘッドホン2114を介して当該アラーム音を発することであってもよい。ヘッドホンの代わりにスピーカが使用されている場合には、当該スピーカを介してアラーム音を発してもよい。
図21の重複アラートを行うことにより、HMDの取り外しが完了しなければ取り外し動作を検出できない場合であっても、ユーザはアラートに気づくので、再度、HMDを装着して正常に終了させることをユーザに促せる。また、HMDを取り外す前やHMDの取り外し中に取り外し動作を検出できる場合であっても、ユーザが必ずしもアラートに気づくとは限らないので、図21の重複アラートを行うことが有用である。
以上、本開示の実施形態を説明したが、これらは例示にすぎず、本開示の範囲を限定するものではないことは理解されるべきである。本開示の趣旨及び範囲から逸脱することなく、実施形態の変更、追加、改良等を適宜行うことができることは理解されるべきである。本開示の範囲は、上述した実施形態のいずれによっても限定されるべきではなく、特許請求の範囲及びその均等物によって規定されるべきである。