(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-08
(45)【発行日】2022-09-16
(54)【発明の名称】コンピュータプログラム、情報処理装置および情報処理方法
(51)【国際特許分類】
G06T 19/00 20110101AFI20220909BHJP
G06F 3/01 20060101ALI20220909BHJP
A63F 13/428 20140101ALI20220909BHJP
A63F 13/55 20140101ALI20220909BHJP
A63F 13/5255 20140101ALI20220909BHJP
【FI】
G06T19/00 300B
G06F3/01 510
A63F13/428
A63F13/55
A63F13/5255
(21)【出願番号】P 2018105379
(22)【出願日】2018-05-31
【審査請求日】2021-05-18
(73)【特許権者】
【識別番号】509070463
【氏名又は名称】株式会社コロプラ
(74)【代理人】
【識別番号】100091982
【氏名又は名称】永井 浩之
(74)【代理人】
【識別番号】100091487
【氏名又は名称】中村 行孝
(74)【代理人】
【識別番号】100082991
【氏名又は名称】佐藤 泰和
(74)【代理人】
【識別番号】100105153
【氏名又は名称】朝倉 悟
(74)【代理人】
【識別番号】100118876
【氏名又は名称】鈴木 順生
(72)【発明者】
【氏名】佐々木 尚人
(72)【発明者】
【氏名】猪俣 篤
【審査官】片岡 利延
(56)【参考文献】
【文献】特開2000-353248(JP,A)
【文献】特開2008-119176(JP,A)
【文献】特開2009-244936(JP,A)
【文献】特開2018-10665(JP,A)
【文献】特開2017-97696(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 19/00
G06F 3/01
A63F 13/428
A63F 13/55
A63F 13/5255
(57)【特許請求の範囲】
【請求項1】
第1ユーザの第1仮想視点を含む仮想空間を規定するステップと、
前記仮想空間に第1オブジェクトを発生させるステップと、
前記第1ユーザ
に装着されたデバイスの処理に応じて、前記第1仮想視点からの第1
視界領域を制御するステップと、
前記第1オブジェクトが前記第1
視界領域内に存在するか否かに応じて、前記第1オブジェクトの移動速度を決定するステップと、
決定された前記移動速度で前記第1オブジェクトを前記第1仮想視点に向けて移動させるステップと、
をコンピュータに実行させるためのコンピュータプログラム。
【請求項2】
前記移動速度を決定するステップにおいて、前記第1オブジェクトが前記第1
視界領域内に存在するときは、前記第1オブジェクトの移動速度を第1移動速度とし、前記第1オブジェクトが前記第1
視界領域内に存在しないときは、前記第1オブジェクトの移動速度を前記第1移動速度よりも遅い第2移動速度とする
請求項1に記載のコンピュータプログラム。
【請求項3】
前記移動速度を決定するステップにおいて、前記第1オブジェクトが前記第1
視界領域内に存在しないときは、前記第1オブジェクトと前記第1仮想視点との距離が近くなるほど、前記第1オブジェクトの移動速度を遅くする
請求項1または2に記載のコンピュータプログラム。
【請求項4】
前記仮想空間は、第2ユーザの第2仮想視点をさらに含み、
前記第2ユーザ
に装着されたデバイスの処理に応じて、前記第2仮想視点からの第2
視界領域を制御するステップを、前記コンピュータにさらに実行させ、
前記移動速度を決定するステップにおいて、前記第1オブジェクトが、前記第1
視界領域内に存在せず、かつ、前記第2
視界領域内に存在するときは、前記第1オブジェクトと前記第1仮想視点との距離が近くなっても前記第1オブジェクトの移動速度を遅くしない
請求項3に記載のコンピュータプログラム。
【請求項5】
前記仮想空間は、第2操作オブジェクトをさらに含み、
前記第2ユーザ
に装着されたデバイスの処理に応じて、前記第2操作オブジェクトの動きを制御するステップと、
前記第2操作オブジェクトが前記第1オブジェクトに作用を生じさせられる状態であるか否かを判定するステップと、を、前記コンピュータにさらに実行させ、
前記移動速度を決定するステップにおいて、前記第2操作オブジェクトが前記第1オブジェクトに作用を生じさせられる状態である場合には、前記第1オブジェクトと前記第1仮想視点との距離が近くなっても前記第1オブジェクトの移動速度を遅くしない
請求項4に記載のコンピュータプログラム。
【請求項6】
前記第1オブジェクトを発生させるステップにおいて、前記第1オブジェクトを前記第1
視界領域内で発生させる
請求項1ないし5のいずれか一項に記載のコンピュータプログラム。
【請求項7】
前記仮想空間は、第1操作オブジェクトをさらに含み、
前記第1ユーザの頭部以外の身体の部位の動きに応じて、前記第1操作オブジェクトの動きを制御するステップと、
前記第1操作オブジェクトの動きに基づいて、前記第1オブジェクトに作用を及ぼすステップと、
をさらに前記コンピュータに実行させる、
請求項1ないし6のいずれか一項に記載のコンピュータプログラム。
【請求項8】
プロセッサを備えた情報処理装置であって、
第1ユーザの第1仮想視点を含む仮想空間を規定するステップと、
前記仮想空間に第1オブジェクトを発生させるステップと、
前記第1ユーザ
に装着されたデバイスの処理に応じて、前記第1仮想視点からの第1
視界領域を制御するステップと、
前記第1オブジェクトが前記第1
視界領域内に存在するか否かに応じて、前記第1オブジェクトの移動速度を決定するステップと、
決定された前記移動速度で前記第1オブジェクトを前記第1仮想視点に向けて移動させるステップと、
が前記プロセッサの制御により実行される情報処理装置。
【請求項9】
第1ユーザの第1仮想視点を含む仮想空間を規定するステップと、
前記仮想空間に第1オブジェクトを発生させるステップと、
前記第1ユーザ
に装着されたデバイスの処理に応じて、前記第1仮想視点からの第1
視界領域を制御するステップと、
前記第1オブジェクトが前記第1
視界領域内に存在するか否かに応じて、前記第1オブジェクトの移動速度を決定するステップと、
決定された前記移動速度で前記第1オブジェクトを前記第1仮想視点に向けて移動させるステップと、
を備えた情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータプログラム、情報処理装置および情報処理方法に関する。
【背景技術】
【0002】
ユーザに装着させたヘッドマウントデバイス(HMD)を用いて、仮想空間におけるコンテンツをユーザに体験させる技術がある。ユーザが頭(HMD)を動かすと、仮想空間におけるユーザの視界を変えることができるため、仮想空間に対するユーザの没入感を高めることができる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述したような従来技術では、ユーザは、視界外で発生した事象については認識できないため、ユーザが視界を変えたときに、視界外で発生した事象を突然認識することが起こり得る。この場合、ユーザは、その事象に対する対処が慌ただしくなったり、理不尽に感じたりする。このことは、ユーザの仮想体験の質の低下につながる。
【0005】
本開示は、ユーザの仮想体験の質を向上させることが可能な、コンピュータプログラム、情報処理装置および情報処理方法を提供する。
【課題を解決するための手段】
【0006】
本発明の実施形態に係るコンピュータプログラムは、第1ユーザの第1仮想視点を含む仮想空間を規定するステップと、前記仮想空間に第1オブジェクトを発生させるステップと、前記第1ユーザの頭部の動きに応じて、前記第1仮想視点からの第1視界を制御するステップと、前記第1オブジェクトが前記第1視界内に存在するか否かに応じて、前記第1オブジェクトの移動速度を決定するステップと、決定された前記移動速度で前記第1オブジェクトを前記第1仮想視点に向けて移動させるステップと、をコンピュータに実行させる。
【図面の簡単な説明】
【0007】
【
図1】ある実施の形態に従うHMDシステムの構成の概略を表す図である。
【
図2】ある実施の形態に従うコンピュータのハードウェア構成の一例を表すブロック図である。
【
図3】ある実施の形態に従うHMDに設定されるuvw視野座標系を概念的に表す図である。
【
図4】ある実施の形態に従う仮想空間を表現する一態様を概念的に表す図である。
【
図5】ある実施の形態に従うHMDを装着するユーザの頭部を上から表した図である。
【
図6】仮想空間において視界領域をX方向から見たYZ断面を表す図である。
【
図7】仮想空間において視界領域をY方向から見たXZ断面を表す図である。
【
図8(A)】ある実施の形態に従うコントローラの概略構成を表す図である。
【
図8(B)】ある実施の形態に従うユーザの右手に対して規定されるヨー、ロール、ピッチの各方向の一例を示す図である。
【
図9】ある実施の形態に従うサーバのハードウェア構成の一例を表すブロック図である。
【
図10】ある実施の形態に従うコンピュータをモジュール構成として表わすブロック図である。
【
図11】ある実施の形態に従うHMDセットにおいて実行される処理の一部を表すシーケンスチャートである。
【
図12(A)】ネットワークにおいて、各HMDがユーザに仮想空間を提供する状況を表す模式図である。
【
図12(B)】
図12(A)におけるユーザ5Aの視界画像を示す図である。
【
図13】ある実施の形態に従うHMDシステムにおいて実行する処理を示すシーケンス図である。
【
図14】ある実施の形態に従うコンピュータのモジュールの詳細構成を表わすブロック図である。
【
図15A】HMDを装着するとともに、コントローラを保持したユーザの例を示す図。
【
図15B】ユーザに提供される仮想空間の一例を示す図である。
【
図15C】
図15Bの仮想空間においてユーザの仮想視点からの視界画像を示す図である。
【
図16】ユーザに提供される仮想空間の一例を示す図である。
【
図17】ユーザに提供される仮想空間の他の例を示す図である。
【
図18】敵オブジェクトの発生場所を制御する処理(第1の解決手段の処理)の一例のフローチャートである。
【
図19】ユーザに提供される仮想空間の例を示す図である。
【
図20】
図19の仮想空間においてユーザのアバターオブジェクトから見た視界画像を示す図である。
【
図21】ユーザの視界領域外に存在する敵オブジェクトの移動速度を遅くするよう制御する処理(第2の解決手段の処理)の一例のフローチャートである。
【
図22】移動速度を決定する処理の他の例のフローチャートである。
【
図23】ユーザに提供される仮想空間の例を示す図である。
【
図24】
図23の仮想空間においてユーザのアバターオブジェクトから見た視界画像を示す図である。
【
図25】移動速度を決定する処理の他の例のフローチャートである。
【
図26】敵オブジェクトおよびアバターオブジェクトの距離と、移動速度とを対応づけた対応情報の例を示す図である。
【
図27】ユーザに提供される仮想空間の例を示す図である。
【
図28】変形例1に係るマルチプレイにおける仮想空間の例を示す図である。
【
図29】
図28の仮想空間において二人のユーザから見た視界画像の例をそれぞれ示す図である。
【
図30】変形例1に係る移動速度を決定する処理の例のフローチャートである。
【
図31】変形例2に係る移動速度を決定する処理の例のフローチャートである。
【発明を実施するための形態】
【0008】
以下、この技術的思想の実施の形態について図面を参照しながら詳細に説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。本開示において示される1以上の実施形態において、各実施形態が含む要素を互いに組み合わせることができ、かつ、当該組み合わせられた結果物も本開示が示す実施形態の一部をなすものとする。
【0009】
[HMDシステムの構成]
図1を参照して、HMD(Head-Mounted Device)システム100の構成について説明する。
図1は、本実施の形態に従うHMDシステム100の構成の概略を表す図である。HMDシステム100は、家庭用のシステムとしてあるいは業務用のシステムとして提供される。
【0010】
HMDシステム100は、サーバ600と、HMDセット110A,110B,110C,110Dと、外部機器700と、ネットワーク2とを含む。HMDセット110A,110B,110C,110Dの各々は、ネットワーク2を介してサーバ600や外部機器700と通信可能に構成される。以下、HMDセット110A,110B,110C,110Dを総称して、HMDセット110とも言う。HMDシステム100を構成するHMDセット110の数は、4つに限られず、3つ以下でも、5つ以上でもよい。HMDセット110は、HMD120と、コンピュータ200と、HMDセンサ410と、ディスプレイ430と、コントローラ300とを備える。HMD120は、モニタ130と、注視センサ140と、第1カメラ150と、第2カメラ160と、マイク170と、スピーカ180とを含む。コントローラ300は、モーションセンサ420を含み得る。
【0011】
ある局面において、コンピュータ200は、インターネットその他のネットワーク2に接続可能であり、ネットワーク2に接続されているサーバ600その他のコンピュータと通信可能である。その他のコンピュータとしては、例えば、他のHMDセット110のコンピュータや外部機器700が挙げられる。別の局面において、HMD120は、HMDセンサ410の代わりに、センサ190を含み得る。
【0012】
HMD120は、ユーザ5の頭部に装着され、動作中に仮想空間をユーザ5に提供し得る。より具体的には、HMD120は、右目用の画像および左目用の画像をモニタ130にそれぞれ表示する。ユーザ5の各目がそれぞれの画像を視認すると、ユーザ5は、両目の視差に基づき当該画像を3次元画像として認識し得る。HMD120は、モニタを備える所謂ヘッドマウントディスプレイと、スマートフォンその他のモニタを有する端末を装着可能なヘッドマウント機器のいずれをも含み得る。
【0013】
モニタ130は、例えば、非透過型の表示装置として実現される。ある局面において、モニタ130は、ユーザ5の両目の前方に位置するようにHMD120の本体に配置されている。したがって、ユーザ5は、モニタ130に表示される3次元画像を視認すると、仮想空間に没入することができる。ある局面において、仮想空間は、例えば、背景、ユーザ5が操作可能なオブジェクト、ユーザ5が選択可能なメニューの画像を含む。ある局面において、モニタ130は、所謂スマートフォンその他の情報表示端末が備える液晶モニタまたは有機EL(Electro Luminescence)モニタとして実現され得る。
【0014】
別の局面において、モニタ130は、透過型の表示装置として実現され得る。この場合、HMD120は、
図1に示されるようにユーザ5の目を覆う密閉型ではなく、メガネ型のような開放型であり得る。透過型のモニタ130は、その透過率を調整することにより、一時的に非透過型の表示装置として構成可能であってもよい。モニタ130は、仮想空間を構成する画像の一部と、現実空間とを同時に表示する構成を含んでいてもよい。例えば、モニタ130は、HMD120に搭載されたカメラで撮影した現実空間の画像を表示してもよいし、一部の透過率を高く設定することにより現実空間を視認可能にしてもよい。
【0015】
ある局面において、モニタ130は、右目用の画像を表示するためのサブモニタと、左目用の画像を表示するためのサブモニタとを含み得る。別の局面において、モニタ130は、右目用の画像と左目用の画像とを一体として表示する構成であってもよい。この場合、モニタ130は、高速シャッタを含む。高速シャッタは、画像がいずれか一方の目にのみ認識されるように、右目用の画像と左目用の画像とを交互に表示可能に作動する。
【0016】
ある局面において、HMD120は、図示せぬ複数の光源を含む。各光源は例えば、赤外線を発するLED(Light Emitting Diode)により実現される。HMDセンサ410は、HMD120の動きを検出するためのポジショントラッキング機能を有する。より具体的には、HMDセンサ410は、HMD120が発する複数の赤外線を読み取り、現実空間内におけるHMD120の位置および傾きを検出する。
【0017】
別の局面において、HMDセンサ410は、カメラにより実現されてもよい。この場合、HMDセンサ410は、カメラから出力されるHMD120の画像情報を用いて、画像解析処理を実行することにより、HMD120の位置および傾きを検出することができる。
【0018】
別の局面において、HMD120は、位置検出器として、HMDセンサ410の代わりに、あるいはHMDセンサ410に加えてセンサ190を備えてもよい。HMD120は、センサ190を用いて、HMD120自身の位置および傾きを検出し得る。例えば、センサ190が角速度センサ、地磁気センサ、あるいは加速度センサである場合、HMD120は、HMDセンサ410の代わりに、これらの各センサのいずれかを用いて、自身の位置および傾きを検出し得る。一例として、センサ190が角速度センサである場合、角速度センサは、現実空間におけるHMD120の3軸周りの角速度を経時的に検出する。HMD120は、各角速度に基づいて、HMD120の3軸周りの角度の時間的変化を算出し、さらに、角度の時間的変化に基づいて、HMD120の傾きを算出する。
【0019】
注視センサ140は、ユーザ5の右目および左目の視線が向けられる方向を検出する。つまり、注視センサ140は、ユーザ5の視線を検出する。視線の方向の検出は、例えば、公知のアイトラッキング機能によって実現される。注視センサ140は、当該アイトラッキング機能を有するセンサにより実現される。ある局面において、注視センサ140は、右目用のセンサおよび左目用のセンサを含むことが好ましい。注視センサ140は、例えば、ユーザ5の右目および左目に赤外光を照射するとともに、照射光に対する角膜および虹彩からの反射光を受けることにより各眼球の回転角を検出するセンサであってもよい。注視センサ140は、検出した各回転角に基づいて、ユーザ5の視線を検知することができる。
【0020】
第1カメラ150は、ユーザ5の顔の下部を撮影する。より具体的には、第1カメラ150は、ユーザ5の鼻および口などを撮影する。第2カメラ160は、ユーザ5の目および眉などを撮影する。HMD120のユーザ5側の筐体をHMD120の内側、HMD120のユーザ5とは逆側の筐体をHMD120の外側と定義する。ある局面において、第1カメラ150は、HMD120の外側に配置され、第2カメラ160は、HMD120の内側に配置され得る。第1カメラ150および第2カメラ160が生成した画像は、コンピュータ200に入力される。別の局面において、第1カメラ150と第2カメラ160とを1台のカメラとして実現し、この1台のカメラでユーザ5の顔を撮影するようにしてもよい。
【0021】
マイク170は、ユーザ5の発話を音声信号(電気信号)に変換してコンピュータ200に出力する。スピーカ180は、音声信号を音声に変換してユーザ5に出力する。別の局面において、HMD120は、スピーカ180に替えてイヤホンを含み得る。
【0022】
コントローラ300は、有線または無線によりコンピュータ200に接続されている。コントローラ300は、ユーザ5からコンピュータ200への命令の入力を受け付ける。ある局面において、コントローラ300は、ユーザ5によって把持可能に構成される。別の局面において、コントローラ300は、ユーザ5の身体あるいは衣類の一部に装着可能に構成される。さらに別の局面において、コントローラ300は、コンピュータ200から送信される信号に基づいて、振動、音、光のうちの少なくともいずれかを出力するように構成されてもよい。さらに別の局面において、コントローラ300は、ユーザ5から、仮想空間に配置されるオブジェクトの位置や動きを制御するための操作を受け付ける。
【0023】
ある局面において、コントローラ300は、複数の光源を含む。各光源は例えば、赤外線を発するLEDにより実現される。HMDセンサ410は、ポジショントラッキング機能を有する。この場合、HMDセンサ410は、コントローラ300が発する複数の赤外線を読み取り、現実空間内におけるコントローラ300の位置および傾きを検出する。別の局面において、HMDセンサ410は、カメラにより実現されてもよい。この場合、HMDセンサ410は、カメラから出力されるコントローラ300の画像情報を用いて、画像解析処理を実行することにより、コントローラ300の位置および傾きを検出することができる。
【0024】
モーションセンサ420は、ある局面において、ユーザ5の手に取り付けられて、ユーザ5の手の動きを検出する。例えば、モーションセンサ420は、手の回転速度、回転数等を検出する。検出された信号は、コンピュータ200に送られる。モーションセンサ420は、例えば、コントローラ300に設けられている。ある局面において、モーションセンサ420は、例えば、ユーザ5に把持可能に構成されたコントローラ300に設けられている。別の局面において、現実空間における安全のため、コントローラ300は、手袋型のようにユーザ5の手に装着されることにより容易に飛んで行かないものに装着される。さらに別の局面において、ユーザ5に装着されないセンサがユーザ5の手の動きを検出してもよい。例えば、ユーザ5を撮影するカメラの信号が、ユーザ5の動作を表わす信号として、コンピュータ200に入力されてもよい。モーションセンサ420とコンピュータ200とは、一例として、無線により互いに接続される。無線の場合、通信形態は特に限られず、例えば、Bluetooth(登録商標)その他の公知の通信手法が用いられる。
【0025】
ディスプレイ430は、モニタ130に表示されている画像と同様の画像を表示する。これにより、HMD120を装着しているユーザ5以外のユーザにも当該ユーザ5と同様の画像を視聴させることができる。ディスプレイ430に表示される画像は、3次元画像である必要はなく、右目用の画像や左目用の画像であってもよい。ディスプレイ430としては、例えば、液晶ディスプレイや有機ELモニタなどが挙げられる。
【0026】
サーバ600は、コンピュータ200にプログラムを送信し得る。別の局面において、サーバ600は、他のユーザによって使用されるHMD120に仮想現実を提供するための他のコンピュータ200と通信し得る。例えば、アミューズメント施設において、複数のユーザが参加型のゲームを行なう場合、各コンピュータ200は、各ユーザの動作に基づく信号をサーバ600を介して他のコンピュータ200と通信して、同じ仮想空間において複数のユーザが共通のゲームを楽しむことを可能にする。各コンピュータ200は、各ユーザの動作に基づく信号をサーバ600を介さずに他のコンピュータ200と通信するようにしてもよい。
【0027】
外部機器700は、コンピュータ200と通信可能な機器であればどのような機器であってもよい。外部機器700は、例えば、ネットワーク2を介してコンピュータ200と通信可能な機器であってもよいし、近距離無線通信や有線接続によりコンピュータ200と直接通信可能な機器であってもよい。外部機器700としては、例えば、スマートデバイス、PC(Personal Computer)、及びコンピュータ200の周辺機器などが挙げられるが、これらに限定されるものではない。
【0028】
[コンピュータのハードウェア構成]
図2を参照して、本実施の形態に係るコンピュータ200について説明する。
図2は、本実施の形態に従うコンピュータ200のハードウェア構成の一例を表すブロック図である。コンピュータ200は、主たる構成要素として、プロセッサ210と、メモリ220と、ストレージ230と、入出力インターフェイス240と、通信インターフェイス250とを備える。各構成要素は、それぞれ、バス260に接続されている。
【0029】
プロセッサ210は、コンピュータ200に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ220またはストレージ230に格納されているプログラムに含まれる一連の命令を実行する。ある局面において、プロセッサ210は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、MPU(Micro Processor Unit)、FPGA(Field-Programmable Gate Array)その他のデバイスとして実現される。
【0030】
メモリ220は、プログラムおよびデータを一時的に保存する。プログラムは、例えば、ストレージ230からロードされる。データは、コンピュータ200に入力されたデータと、プロセッサ210によって生成されたデータとを含む。ある局面において、メモリ220は、RAM(Random Access Memory)その他の揮発メモリとして実現される。
【0031】
ストレージ230は、プログラムおよびデータを永続的に保持する。ストレージ230は、例えば、ROM(Read-Only Memory)、ハードディスク装置、フラッシュメモリ、その他の不揮発記憶装置として実現される。ストレージ230に格納されるプログラムは、HMDシステム100において仮想空間を提供するためのプログラム、シミュレーションプログラム、ゲームプログラム、ユーザ認証プログラム、他のコンピュータ200との通信を実現するためのプログラムを含む。ストレージ230に格納されるデータは、仮想空間を規定するためのデータおよびオブジェクト等を含む。
【0032】
別の局面において、ストレージ230は、メモリカードのように着脱可能な記憶装置として実現されてもよい。さらに別の局面において、コンピュータ200に内蔵されたストレージ230の代わりに、外部の記憶装置に保存されているプログラムおよびデータを使用する構成が使用されてもよい。このような構成によれば、例えば、アミューズメント施設のように複数のHMDシステム100が使用される場面において、プログラムやデータの更新を一括して行なうことが可能になる。
【0033】
入出力インターフェイス240は、HMD120、HMDセンサ410、モーションセンサ420およびディスプレイ430との間で信号を通信する。HMD120に含まれるモニタ130,注視センサ140,第1カメラ150,第2カメラ160,マイク170およびスピーカ180は、HMD120の入出力インターフェイス240を介してコンピュータ200との通信を行ない得る。ある局面において、入出力インターフェイス240は、USB(Universal Serial Bus)、DVI(Digital Visual Interface)、HDMI(登録商標)(High-Definition Multimedia Interface)その他の端子を用いて実現される。入出力インターフェイス240は上述のものに限られない。
【0034】
ある局面において、入出力インターフェイス240は、さらに、コントローラ300と通信し得る。例えば、入出力インターフェイス240は、コントローラ300およびモーションセンサ420から出力された信号の入力を受ける。別の局面において、入出力インターフェイス240は、プロセッサ210から出力された命令を、コントローラ300に送る。当該命令は、振動、音声出力、発光等をコントローラ300に指示する。コントローラ300は、当該命令を受信すると、その命令に応じて、振動、音声出力または発光のいずれかを実行する。
【0035】
通信インターフェイス250は、ネットワーク2に接続されて、ネットワーク2に接続されている他のコンピュータ(例えば、サーバ600)と通信する。ある局面において、通信インターフェイス250は、例えば、LAN(Local Area Network)その他の有線通信インターフェイス、あるいは、WiFi(Wireless Fidelity)、Bluetooth(登録商標)、NFC(Near Field Communication)その他の無線通信インターフェイスとして実現される。通信インターフェイス250は上述のものに限られない。
【0036】
ある局面において、プロセッサ210は、ストレージ230にアクセスし、ストレージ230に格納されている1つ以上のプログラムをメモリ220にロードし、当該プログラムに含まれる一連の命令を実行する。当該1つ以上のプログラムは、コンピュータ200のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、仮想空間で実行可能なゲームソフトウェア等を含み得る。プロセッサ210は、入出力インターフェイス240を介して、仮想空間を提供するための信号をHMD120に送る。HMD120は、その信号に基づいてモニタ130に映像を表示する。
【0037】
図2に示される例では、コンピュータ200は、HMD120の外部に設けられる構成が示されているが、別の局面において、コンピュータ200は、HMD120に内蔵されてもよい。一例として、モニタ130を含む携帯型の情報通信端末(例えば、スマートフォン)がコンピュータ200として機能してもよい。
【0038】
コンピュータ200は、複数のHMD120に共通して用いられる構成であってもよい。このような構成によれば、例えば、複数のユーザに同一の仮想空間を提供することもできるので、各ユーザは同一の仮想空間で他のユーザと同一のアプリケーションを楽しむことができる。
【0039】
ある実施の形態において、HMDシステム100では、現実空間における座標系である実座標系が予め設定されている。実座標系は、現実空間における鉛直方向、鉛直方向に直交する水平方向、並びに、鉛直方向および水平方向の双方に直交する前後方向にそれぞれ平行な、3つの基準方向(軸)を有する。実座標系における水平方向、鉛直方向(上下方向)、および前後方向は、それぞれ、x軸、y軸、z軸と規定される。より具体的には、実座標系において、x軸は現実空間の水平方向に平行である。y軸は、現実空間の鉛直方向に平行である。z軸は現実空間の前後方向に平行である。
【0040】
ある局面において、HMDセンサ410は、赤外線センサを含む。赤外線センサが、HMD120の各光源から発せられた赤外線をそれぞれ検出すると、HMD120の存在を検出する。HMDセンサ410は、さらに、各点の値(実座標系における各座標値)に基づいて、HMD120を装着したユーザ5の動きに応じた、現実空間内におけるHMD120の位置および傾き(向き)を検出する。より詳しくは、HMDセンサ410は、経時的に検出された各値を用いて、HMD120の位置および傾きの時間的変化を検出できる。
【0041】
HMDセンサ410によって検出されたHMD120の各傾きは、実座標系におけるHMD120の3軸周りの各傾きに相当する。HMDセンサ410は、実座標系におけるHMD120の傾きに基づき、uvw視野座標系をHMD120に設定する。HMD120に設定されるuvw視野座標系は、HMD120を装着したユーザ5が仮想空間において物体を見る際の視点座標系に対応する。
【0042】
[uvw視野座標系]
図3を参照して、uvw視野座標系について説明する。
図3は、ある実施の形態に従うHMD120に設定されるuvw視野座標系を概念的に表す図である。HMDセンサ410は、HMD120の起動時に、実座標系におけるHMD120の位置および傾きを検出する。プロセッサ210は、検出された値に基づいて、uvw視野座標系をHMD120に設定する。
【0043】
図3に示されるように、HMD120は、HMD120を装着したユーザ5の頭部を中心(原点)とした3次元のuvw視野座標系を設定する。より具体的には、HMD120は、実座標系を規定する水平方向、鉛直方向、および前後方向(x軸、y軸、z軸)を、実座標系内においてHMD120の各軸周りの傾きだけ各軸周りにそれぞれ傾けることによって新たに得られる3つの方向を、HMD120におけるuvw視野座標系のピッチ軸(u軸)、ヨー軸(v軸)、およびロール軸(w軸)として設定する。
【0044】
ある局面において、HMD120を装着したユーザ5が直立し、かつ、正面を視認している場合、プロセッサ210は、実座標系に平行なuvw視野座標系をHMD120に設定する。この場合、実座標系における水平方向(x軸)、鉛直方向(y軸)、および前後方向(z軸)は、HMD120におけるuvw視野座標系のピッチ軸(u軸)、ヨー軸(v軸)、およびロール軸(w軸)に一致する。
【0045】
uvw視野座標系がHMD120に設定された後、HMDセンサ410は、HMD120の動きに基づいて、設定されたuvw視野座標系におけるHMD120の傾きを検出できる。この場合、HMDセンサ410は、HMD120の傾きとして、uvw視野座標系におけるHMD120のピッチ角(θu)、ヨー角(θv)、およびロール角(θw)をそれぞれ検出する。ピッチ角(θu)は、uvw視野座標系におけるピッチ軸周りのHMD120の傾き角度を表す。ヨー角(θv)は、uvw視野座標系におけるヨー軸周りのHMD120の傾き角度を表す。ロール角(θw)は、uvw視野座標系におけるロール軸周りのHMD120の傾き角度を表す。
【0046】
HMDセンサ410は、検出されたHMD120の傾きに基づいて、HMD120が動いた後のHMD120におけるuvw視野座標系を、HMD120に設定する。HMD120と、HMD120のuvw視野座標系との関係は、HMD120の位置および傾きに関わらず、常に一定である。HMD120の位置および傾きが変わると、当該位置および傾きの変化に連動して、実座標系におけるHMD120のuvw視野座標系の位置および傾きが変化する。
【0047】
ある局面において、HMDセンサ410は、赤外線センサからの出力に基づいて取得される赤外線の光強度および複数の点間の相対的な位置関係(例えば、各点間の距離など)に基づいて、HMD120の現実空間内における位置を、HMDセンサ410に対する相対位置として特定してもよい。プロセッサ210は、特定された相対位置に基づいて、現実空間内(実座標系)におけるHMD120のuvw視野座標系の原点を決定してもよい。
【0048】
[仮想空間]
図4を参照して、仮想空間についてさらに説明する。
図4は、ある実施の形態に従う仮想空間11を表現する一態様を概念的に表す図である。仮想空間11は、中心12の360度方向の全体を覆う全天球状の構造を有する。
図4では、説明を複雑にしないために、仮想空間11のうちの上半分の天球が例示されている。仮想空間11では各メッシュが規定される。各メッシュの位置は、仮想空間11に規定されるグローバル座標系であるXYZ座標系における座標値として予め規定されている。コンピュータ200は、仮想空間11に展開可能なパノラマ画像13(静止画、動画等)を構成する各部分画像を、仮想空間11において対応する各メッシュにそれぞれ対応付ける。
【0049】
ある局面において、仮想空間11では、中心12を原点とするXYZ座標系が規定される。XYZ座標系は、例えば、実座標系に平行である。XYZ座標系における水平方向、鉛直方向(上下方向)、および前後方向は、それぞれX軸、Y軸、Z軸として規定される。したがって、XYZ座標系のX軸(水平方向)が実座標系のx軸と平行であり、XYZ座標系のY軸(鉛直方向)が実座標系のy軸と平行であり、XYZ座標系のZ軸(前後方向)が実座標系のz軸と平行である。
【0050】
HMD120の起動時、すなわちHMD120の初期状態において、仮想カメラ14が、仮想空間11の中心12に配置される。ある局面において、プロセッサ210は、仮想カメラ14が撮影する画像をHMD120のモニタ130に表示する。仮想カメラ14は、現実空間におけるHMD120の動きに連動して、仮想空間11を同様に移動する。これにより、現実空間におけるHMD120の位置および傾きの変化が、仮想空間11において同様に再現され得る。
【0051】
仮想カメラ14には、HMD120の場合と同様に、uvw視野座標系が規定される。仮想空間11における仮想カメラ14のuvw視野座標系は、現実空間(実座標系)におけるHMD120のuvw視野座標系に連動するように規定されている。したがって、HMD120の傾きが変化すると、それに応じて、仮想カメラ14の傾きも変化する。仮想カメラ14は、HMD120を装着したユーザ5の現実空間における移動に連動して、仮想空間11において移動することもできる。
【0052】
コンピュータ200のプロセッサ210は、仮想カメラ14の位置と傾き(基準視線16)とに基づいて、仮想空間11における視界領域15を規定する。視界領域15は、仮想空間11のうち、HMD120を装着したユーザ5が視認する領域に対応する。つまり、仮想カメラ14の位置は、仮想空間11におけるユーザ5の視点と言える。
【0053】
注視センサ140によって検出されるユーザ5の視線は、ユーザ5が物体を視認する際の視点座標系における方向である。HMD120のuvw視野座標系は、ユーザ5がモニタ130を視認する際の視点座標系に等しい。仮想カメラ14のuvw視野座標系は、HMD120のuvw視野座標系に連動している。したがって、ある局面に従うHMDシステム100は、注視センサ140によって検出されたユーザ5の視線を、仮想カメラ14のuvw視野座標系におけるユーザ5の視線とみなすことができる。
【0054】
[ユーザの視線]
図5を参照して、ユーザ5の視線の決定について説明する。
図5は、ある実施の形態に従うHMD120を装着するユーザ5の頭部を上から表した図である。
【0055】
ある局面において、注視センサ140は、ユーザ5の右目および左目の各視線を検出する。ある局面において、ユーザ5が近くを見ている場合、注視センサ140は、視線R1およびL1を検出する。別の局面において、ユーザ5が遠くを見ている場合、注視センサ140は、視線R2およびL2を検出する。この場合、ロール軸wに対して視線R2およびL2が成す角度は、ロール軸wに対して視線R1およびL1が成す角度よりも小さい。注視センサ140は、検出結果をコンピュータ200に送信する。
【0056】
コンピュータ200が、視線の検出結果として、視線R1およびL1の検出値を注視センサ140から受信した場合には、その検出値に基づいて、視線R1およびL1の交点である注視点N1を特定する。一方、コンピュータ200は、視線R2およびL2の検出値を注視センサ140から受信した場合には、視線R2およびL2の交点を注視点として特定する。コンピュータ200は、特定した注視点N1の位置に基づき、ユーザ5の視線N0を特定する。コンピュータ200は、例えば、ユーザ5の右目Rと左目Lとを結ぶ直線の中点と、注視点N1とを通る直線の延びる方向を、視線N0として検出する。視線N0は、ユーザ5が両目により実際に視線を向けている方向である。視線N0は、視界領域15に対してユーザ5が実際に視線を向けている方向に相当する。
【0057】
別の局面において、HMDシステム100は、テレビジョン放送受信チューナを備えてもよい。このような構成によれば、HMDシステム100は、仮想空間11においてテレビ番組を表示することができる。
【0058】
さらに別の局面において、HMDシステム100は、インターネットに接続するための通信回路、あるいは、電話回線に接続するための通話機能を備えていてもよい。
【0059】
[視界領域]
図6および
図7を参照して、視界領域15について説明する。
図6は、仮想空間11において視界領域15をX方向から見たYZ断面を表す図である。
図7は、仮想空間11において視界領域15をY方向から見たXZ断面を表す図である。
【0060】
図6に示されるように、YZ断面における視界領域15は、領域18を含む。領域18は、仮想カメラ14の位置と基準視線16と仮想空間11のYZ断面とによって定義される。プロセッサ210は、仮想空間における基準視線16を中心として極角αを含む範囲を、領域18として規定する。
【0061】
図7に示されるように、XZ断面における視界領域15は、領域19を含む。領域19は、仮想カメラ14の位置と基準視線16と仮想空間11のXZ断面とによって定義される。プロセッサ210は、仮想空間11における基準視線16を中心とした方位角βを含む範囲を、領域19として規定する。極角αおよびβは、仮想カメラ14の位置と仮想カメラ14の傾き(向き)とに応じて定まる。
【0062】
ある局面において、HMDシステム100は、コンピュータ200からの信号に基づいて、視界画像17をモニタ130に表示させることにより、ユーザ5に仮想空間11における視界を提供する。視界画像17は、パノラマ画像13のうち視界領域15に対応する部分に相当する画像である。ユーザ5が、頭に装着したHMD120を動かすと、その動きに連動して仮想カメラ14も動く。その結果、仮想空間11における視界領域15の位置が変化する。これにより、モニタ130に表示される視界画像17は、パノラマ画像13のうち、仮想空間11においてユーザ5が向いた方向の視界領域15に重畳する画像に更新される。ユーザ5は、仮想空間11における所望の方向を視認することができる。
【0063】
このように、仮想カメラ14の傾きは仮想空間11におけるユーザ5の視線(基準視線16)に相当し、仮想カメラ14が配置される位置は、仮想空間11におけるユーザ5の視点に相当する。したがって、仮想カメラ14の位置または傾きを変更することにより、モニタ130に表示される画像が更新され、ユーザ5の視界が移動される。
【0064】
ユーザ5は、HMD120を装着している間、現実世界を視認することなく、仮想空間11に展開されるパノラマ画像13のみを視認できる。そのため、HMDシステム100は、仮想空間11への高い没入感覚をユーザ5に与えることができる。
【0065】
ある局面において、プロセッサ210は、HMD120を装着したユーザ5の現実空間における移動に連動して、仮想空間11において仮想カメラ14を移動し得る。この場合、プロセッサ210は、仮想空間11における仮想カメラ14の位置および傾きに基づいて、HMD120のモニタ130に投影される画像領域(視界領域15)を特定する。
【0066】
ある局面において、仮想カメラ14は、2つの仮想カメラ、すなわち、右目用の画像を提供するための仮想カメラと、左目用の画像を提供するための仮想カメラとを含み得る。ユーザ5が3次元の仮想空間11を認識できるように、適切な視差が、2つの仮想カメラに設定される。別の局面において、仮想カメラ14を1つの仮想カメラにより実現してもよい。この場合、1つの仮想カメラにより得られた画像から、右目用の画像と左目用の画像とを生成するようにしてもよい。本実施の形態においては、仮想カメラ14が2つの仮想カメラを含み、2つの仮想カメラのロール軸が合成されることによって生成されるロール軸(w)がHMD120のロール軸(w)に適合されるように構成されているものとして、本開示に係る技術思想を例示する。
【0067】
[コントローラ]
図8を参照して、コントローラ300の一例について説明する。
図8は、ある実施の形態に従うコントローラ300の概略構成を表す図である。
【0068】
図8に示されるように、ある局面において、コントローラ300は、右コントローラ300Rと図示せぬ左コントローラとを含み得る。右コントローラ300Rは、ユーザ5の右手で操作される。左コントローラは、ユーザ5の左手で操作される。ある局面において、右コントローラ300Rと左コントローラとは、別個の装置として対称に構成される。したがって、ユーザ5は、右コントローラ300Rを把持した右手と、左コントローラを把持した左手とをそれぞれ自由に動かすことができる。別の局面において、コントローラ300は両手の操作を受け付ける一体型のコントローラであってもよい。以下、右コントローラ300Rについて説明する。
【0069】
右コントローラ300Rは、グリップ310と、フレーム320と、天面330とを備える。グリップ310は、ユーザ5の右手によって把持されるように構成されている。たとえば、グリップ310は、ユーザ5の右手の掌と3本の指(中指、薬指、小指)とによって保持され得る。
【0070】
グリップ310は、ボタン340,350と、モーションセンサ420とを含む。ボタン340は、グリップ310の側面に配置され、右手の中指による操作を受け付ける。ボタン350は、グリップ310の前面に配置され、右手の人差し指による操作を受け付ける。ある局面において、ボタン340,350は、トリガー式のボタンとして構成される。モーションセンサ420は、グリップ310の筐体に内蔵されている。ユーザ5の動作がカメラその他の装置によってユーザ5の周りから検出可能である場合には、グリップ310は、モーションセンサ420を備えなくてもよい。
【0071】
フレーム320は、その円周方向に沿って配置された複数の赤外線LED360を含む。赤外線LED360は、コントローラ300を使用するプログラムの実行中に、当該プログラムの進行に合わせて赤外線を発光する。赤外線LED360から発せられた赤外線は、右コントローラ300Rと左コントローラとの各位置や姿勢(傾き、向き)を検出するために使用され得る。
図8に示される例では、二列に配置された赤外線LED360が示されているが、配列の数は
図8に示されるものに限られない。一列あるいは3列以上の配列が使用されてもよい。
【0072】
天面330は、ボタン370,380と、アナログスティック390とを備える。ボタン370,380は、プッシュ式ボタンとして構成される。ボタン370,380は、ユーザ5の右手の親指による操作を受け付ける。アナログスティック390は、ある局面において、初期位置(ニュートラルの位置)から360度任意の方向への操作を受け付ける。当該操作は、たとえば、仮想空間11に配置されるオブジェクトを移動するための操作を含む。
【0073】
ある局面において、右コントローラ300Rおよび左コントローラは、赤外線LED360その他の部材を駆動するための電池を含む。電池は、充電式、ボタン型、乾電池型などを含むが、これらに限定されない。別の局面において、右コントローラ300Rと左コントローラは、たとえば、コンピュータ200のUSBインターフェースに接続され得る。この場合、右コントローラ300Rおよび左コントローラは、電池を必要としない。
【0074】
図8の状態(A)および状態(B)に示されるように、例えば、ユーザ5の右手に対して、ヨー、ロール、ピッチの各方向が規定される。ユーザ5が親指と人差し指とを伸ばした場合に、親指の伸びる方向がヨー方向、人差し指の伸びる方向がロール方向、ヨー方向の軸およびロール方向の軸によって規定される平面に垂直な方向がピッチ方向として規定される。
【0075】
[サーバのハードウェア構成]
図9を参照して、本実施の形態に係るサーバ600について説明する。
図9は、ある実施の形態に従うサーバ600のハードウェア構成の一例を表すブロック図である。サーバ600は、主たる構成要素として、プロセッサ610と、メモリ620と、ストレージ630と、入出力インターフェイス640と、通信インターフェイス650とを備える。各構成要素は、それぞれ、バス660に接続されている。
【0076】
プロセッサ610は、サーバ600に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ620またはストレージ630に格納されているプログラムに含まれる一連の命令を実行する。ある局面において、プロセッサ610は、CPU、GPU、MPU、FPGAその他のデバイスとして実現される。
【0077】
メモリ620は、プログラムおよびデータを一時的に保存する。プログラムは、例えば、ストレージ630からロードされる。データは、サーバ600に入力されたデータと、プロセッサ610によって生成されたデータとを含む。ある局面において、メモリ620は、RAMその他の揮発メモリとして実現される。
【0078】
ストレージ630は、プログラムおよびデータを永続的に保持する。ストレージ630は、例えば、ROM、ハードディスク装置、フラッシュメモリ、その他の不揮発記憶装置として実現される。ストレージ630に格納されるプログラムは、HMDシステム100において仮想空間を提供するためのプログラム、シミュレーションプログラム、ゲームプログラム、ユーザ認証プログラム、コンピュータ200との通信を実現するためのプログラムを含んでもよい。ストレージ630に格納されるデータは、仮想空間を規定するためのデータおよびオブジェクト等を含んでもよい。
【0079】
別の局面において、ストレージ630は、メモリカードのように着脱可能な記憶装置として実現されてもよい。さらに別の局面において、サーバ600に内蔵されたストレージ630の代わりに、外部の記憶装置に保存されているプログラムおよびデータを使用する構成が使用されてもよい。このような構成によれば、例えば、アミューズメント施設のように複数のHMDシステム100が使用される場面において、プログラムやデータの更新を一括して行なうことが可能になる。
【0080】
入出力インターフェイス640は、入出力機器との間で信号を通信する。ある局面において、入出力インターフェイス640は、USB、DVI、HDMIその他の端子を用いて実現される。入出力インターフェイス640は上述のものに限られない。
【0081】
通信インターフェイス650は、ネットワーク2に接続されて、ネットワーク2に接続されているコンピュータ200と通信する。ある局面において、通信インターフェイス650は、例えば、LANその他の有線通信インターフェイス、あるいは、WiFi、Bluetooth、NFCその他の無線通信インターフェイスとして実現される。通信インターフェイス650は上述のものに限られない。
【0082】
ある局面において、プロセッサ610は、ストレージ630にアクセスし、ストレージ630に格納されている1つ以上のプログラムをメモリ620にロードし、当該プログラムに含まれる一連の命令を実行する。当該1つ以上のプログラムは、サーバ600のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、仮想空間で実行可能なゲームソフトウェア等を含み得る。プロセッサ610は、入出力インターフェイス640を介して、仮想空間を提供するための信号をコンピュータ200に送ってもよい。
【0083】
[HMDの制御装置]
図10を参照して、HMD120の制御装置について説明する。ある実施の形態において、制御装置は周知の構成を有するコンピュータ200によって実現される。
図10は、ある実施の形態に従うコンピュータ200をモジュール構成として表わすブロック図である。
【0084】
図10に示されるように、コンピュータ200は、コントロールモジュール510と、レンダリングモジュール520と、メモリモジュール530と、通信制御モジュール540とを備える。ある局面において、コントロールモジュール510とレンダリングモジュール520とは、プロセッサ210によって実現される。別の局面において、複数のプロセッサ210がコントロールモジュール510とレンダリングモジュール520として作動してもよい。メモリモジュール530は、メモリ220またはストレージ230によって実現される。通信制御モジュール540は、通信インターフェイス250によって実現される。
【0085】
コントロールモジュール510は、ユーザ5に提供される仮想空間11を制御する。コントロールモジュール510は、仮想空間11を表す仮想空間データを用いて、HMDシステム100における仮想空間11を規定する。仮想空間データは、例えば、メモリモジュール530に記憶されている。コントロールモジュール510が、仮想空間データを生成したり、サーバ600などから仮想空間データを取得するようにしたりしてもよい。
【0086】
コントロールモジュール510は、オブジェクトを表すオブジェクトデータを用いて、仮想空間11にオブジェクトを配置する。オブジェクトデータは、例えば、メモリモジュール530に記憶されている。コントロールモジュール510が、オブジェクトデータを生成したり、サーバ600などからオブジェクトデータを取得するようにしたりしてもよい。オブジェクトは、例えば、ユーザ5の分身であるアバターオブジェクト、キャラクタオブジェクト、コントローラ300によって操作される仮想手などの操作オブジェクト、ゲームのストーリーの進行に従って配置される森、山その他を含む風景、街並み、動物等を含み得る。
【0087】
コントロールモジュール510は、ネットワーク2を介して接続される他のコンピュータ200のユーザ5のアバターオブジェクトを仮想空間11に配置する。ある局面において、コントロールモジュール510は、ユーザ5のアバターオブジェクトを仮想空間11に配置する。ある局面において、コントロールモジュール510は、ユーザ5を含む画像に基づいて、ユーザ5を模したアバターオブジェクトを仮想空間11に配置する。別の局面において、コントロールモジュール510は、複数種類のアバターオブジェクト(例えば、動物を模したオブジェクトや、デフォルメされた人のオブジェクト)の中からユーザ5による選択を受け付けたアバターオブジェクトを仮想空間11に配置する。
【0088】
コントロールモジュール510は、HMDセンサ410の出力に基づいてHMD120の傾きを特定する。別の局面において、コントロールモジュール510は、モーションセンサとして機能するセンサ190の出力に基づいてHMD120の傾きを特定する。コントロールモジュール510は、第1カメラ150および第2カメラ160が生成するユーザ5の顔の画像から、ユーザ5の顔を構成する器官(例えば、口,目,眉)を検出する。コントロールモジュール510は、検出した各器官の動き(形状)を検出する。
【0089】
コントロールモジュール510は、注視センサ140からの信号に基づいて、ユーザ5の仮想空間11における視線を検出する。コントロールモジュール510は、検出したユーザ5の視線と仮想空間11の天球とが交わる視点位置(XYZ座標系における座標値)を検出する。より具体的には、コントロールモジュール510は、uvw座標系で規定されるユーザ5の視線と、仮想カメラ14の位置および傾きとに基づいて、視点位置を検出する。コントロールモジュール510は、検出した視点位置をサーバ600に送信する。別の局面において、コントロールモジュール510は、ユーザ5の視線を表す視線情報をサーバ600に送信するように構成されてもよい。係る場合、サーバ600が受信した視線情報に基づいて視点位置を算出し得る。
【0090】
コントロールモジュール510は、HMDセンサ410が検出するHMD120の動きをアバターオブジェクトに反映する。例えば、コントロールモジュール510は、HMD120が傾いたことを検知して、アバターオブジェクトを傾けて配置する。コントロールモジュール510は、検出した顔器官の動作を、仮想空間11に配置されるアバターオブジェクトの顔に反映させる。コントロールモジュール510は、サーバ600から他のユーザ5の視線情報を受信し、当該他のユーザ5のアバターオブジェクトの視線に反映させる。ある局面において、コントロールモジュール510は、コントローラ300の動きをアバターオブジェクトや操作オブジェクトに反映する。この場合、コントローラ300は、コントローラ300の動きを検知するためのモーションセンサ、加速度センサ、または複数の発光素子(例えば、赤外線LED)などを備える。
【0091】
コントロールモジュール510は、仮想空間11においてユーザ5の操作を受け付けるための操作オブジェクトを仮想空間11に配置する。ユーザ5は、操作オブジェクトを操作することにより、例えば、仮想空間11に配置されるオブジェクトを操作する。ある局面において、操作オブジェクトは、例えば、ユーザ5の手に相当する仮想手である手オブジェクト等を含み得る。ある局面において、コントロールモジュール510は、モーションセンサ420の出力に基づいて現実空間におけるユーザ5の手の動きに連動するように仮想空間11において手オブジェクトを動かす。ある局面において、操作オブジェクトは、アバターオブジェクトの手の部分に相当し得る。
【0092】
コントロールモジュール510は、仮想空間11に配置されるオブジェクトのそれぞれが、他のオブジェクトと衝突した場合に、当該衝突を検出する。コントロールモジュール510は、例えば、あるオブジェクトのコリジョンエリアと、別のオブジェクトのコリジョンエリアとが触れたタイミングを検出することができ、当該検出がされたときに、予め定められた処理を行なう。コントロールモジュール510は、オブジェクトとオブジェクトとが触れている状態から離れたタイミングを検出することができ、当該検出がされたときに、予め定められた処理を行なう。コントロールモジュール510は、オブジェクトとオブジェクトとが触れている状態であることを検出することができる。例えば、コントロールモジュール510は、操作オブジェクトと、他のオブジェクトとが触れたときに、これら操作オブジェクトと他のオブジェクトとが触れたことを検出して、予め定められた処理を行なう。
【0093】
ある局面において、コントロールモジュール510は、HMD120のモニタ130における画像表示を制御する。例えば、コントロールモジュール510は、仮想空間11に仮想カメラ14を配置する。コントロールモジュール510は、仮想空間11における仮想カメラ14の位置と、仮想カメラ14の傾き(向き)を制御する。コントロールモジュール510は、HMD120を装着したユーザ5の頭の傾きと、仮想カメラ14の位置に応じて、視界領域15を規定する。レンダリングモジュール520は、決定された視界領域15に基づいて、モニタ130に表示される視界画像17を生成する。レンダリングモジュール520により生成された視界画像17は、通信制御モジュール540によってHMD120に出力される。
【0094】
コントロールモジュール510は、HMD120から、ユーザ5のマイク170を用いた発話を検出すると、当該発話に対応する音声データの送信対象のコンピュータ200を特定する。音声データは、コントロールモジュール510によって特定されたコンピュータ200に送信される。コントロールモジュール510は、ネットワーク2を介して他のユーザのコンピュータ200から音声データを受信すると、当該音声データに対応する音声(発話)をスピーカ180から出力する。
【0095】
メモリモジュール530は、コンピュータ200が仮想空間11をユーザ5に提供するために使用されるデータを保持している。ある局面において、メモリモジュール530は、空間情報と、オブジェクト情報と、ユーザ情報とを保持している。
【0096】
空間情報は、仮想空間11を提供するために規定された1つ以上のテンプレートを保持している。
【0097】
オブジェクト情報は、仮想空間11を構成する複数のパノラマ画像13、仮想空間11にオブジェクトを配置するためのオブジェクトデータを含む。パノラマ画像13は、静止画像および動画像を含み得る。パノラマ画像13は、非現実空間の画像と現実空間の画像とを含み得る。非現実空間の画像としては、例えば、コンピュータグラフィックスで生成された画像が挙げられる。
【0098】
ユーザ情報は、ユーザ5を識別するユーザIDを保持する。ユーザIDは、例えば、ユーザが使用するコンピュータ200に設定されるIP(Internet Protocol)アドレスまたはMAC(Media Access Control)アドレスであり得る。別の局面において、ユーザIDはユーザによって設定され得る。ユーザ情報は、HMDシステム100の制御装置としてコンピュータ200を機能させるためのプログラム等を含む。
【0099】
メモリモジュール530に格納されているデータおよびプログラムは、HMD120のユーザ5によって入力される。あるいは、プロセッサ210が、当該コンテンツを提供する事業者が運営するコンピュータ(例えば、サーバ600)からプログラムあるいはデータをダウンロードして、ダウンロードされたプログラムあるいはデータをメモリモジュール530に格納する。
【0100】
通信制御モジュール540は、ネットワーク2を介して、サーバ600その他の情報通信装置と通信し得る。
【0101】
ある局面において、コントロールモジュール510及びレンダリングモジュール520は、例えば、ユニティテクノロジーズ社によって提供されるUnity(登録商標)を用いて実現され得る。別の局面において、コントロールモジュール510及びレンダリングモジュール520は、各処理を実現する回路素子の組み合わせとしても実現され得る。
【0102】
コンピュータ200における処理は、ハードウェアと、プロセッサ210により実行されるソフトウェアとによって実現される。このようなソフトウェアは、ハードディスクその他のメモリモジュール530に予め格納されている場合がある。ソフトウェアは、CD-ROMその他のコンピュータ読み取り可能な不揮発性のデータ記録媒体に格納されて、プログラム製品として流通している場合もある。あるいは、当該ソフトウェアは、インターネットその他のネットワークに接続されている情報提供事業者によってダウンロード可能なプログラム製品として提供される場合もある。このようなソフトウェアは、光ディスク駆動装置その他のデータ読取装置によってデータ記録媒体から読み取られて、あるいは、通信制御モジュール540を介してサーバ600その他のコンピュータからダウンロードされた後、記憶モジュールに一旦格納される。そのソフトウェアは、プロセッサ210によって記憶モジュールから読み出され、実行可能なプログラムの形式でRAMに格納される。プロセッサ210は、そのプログラムを実行する。
【0103】
[HMDシステムの制御構造]
図11を参照して、HMDセット110の制御構造について説明する。
図11は、ある実施の形態に従うHMDセット110において実行される処理の一部を表すシーケンスチャートである。
【0104】
図11に示されるように、ステップS1110にて、コンピュータ200のプロセッサ210は、コントロールモジュール510として、仮想空間データを特定し、仮想空間11を定義する。
【0105】
ステップS1120にて、プロセッサ210は、仮想カメラ14を初期化する。たとえば、プロセッサ210は、メモリのワーク領域において、仮想カメラ14を仮想空間11において予め規定された中心12に配置し、仮想カメラ14の視線をユーザ5が向いている方向に向ける。
【0106】
ステップS1130にて、プロセッサ210は、レンダリングモジュール520として、初期の視界画像を表示するための視界画像データを生成する。生成された視界画像データは、通信制御モジュール540によってHMD120に出力される。
【0107】
ステップS1132にて、HMD120のモニタ130は、コンピュータ200から受信した視界画像データに基づいて、視界画像を表示する。HMD120を装着したユーザ5は、視界画像を視認すると仮想空間11を認識し得る。
【0108】
ステップS1134にて、HMDセンサ410は、HMD120から発信される複数の赤外線光に基づいて、HMD120の位置と傾きを検知する。検知結果は、動き検知データとして、コンピュータ200に出力される。
【0109】
ステップS1140にて、プロセッサ210は、HMD120の動き検知データに含まれる位置と傾きとに基づいて、HMD120を装着したユーザ5の視界方向を特定する。
【0110】
ステップS1150にて、プロセッサ210は、アプリケーションプログラムを実行し、アプリケーションプログラムに含まれる命令に基づいて、仮想空間11にオブジェクトを配置する。
【0111】
ステップS1160にて、コントローラ300は、モーションセンサ420から出力される信号に基づいて、ユーザ5の操作を検出し、その検出された操作を表す検出データをコンピュータ200に出力する。別の局面において、ユーザ5によるコントローラ300の操作は、ユーザ5の周囲に配置されたカメラからの画像に基づいて検出されてもよい。
【0112】
ステップS1170にて、プロセッサ210は、コントローラ300から取得した検出データに基づいて、ユーザ5によるコントローラ300の操作を検出する。
【0113】
ステップS1180にて、プロセッサ210は、ユーザ5によるコントローラ300の操作に基づく視界画像データを生成する。生成された視界画像データは、通信制御モジュール540によってHMD120に出力される。
【0114】
ステップS1190にて、HMD120は、受信した視界画像データに基づいて視界画像を更新し、更新後の視界画像をモニタ130に表示する。
【0115】
[アバターオブジェクト]
図12(A)、(B)を参照して、本実施の形態に従うアバターオブジェクトについて説明する。以下、HMDセット110A,110Bの各ユーザ5のアバターオブジェクトを説明する図である。以下、HMDセット110Aのユーザをユーザ5A、HMDセット110Bのユーザをユーザ5B、HMDセット110Cのユーザをユーザ5C、HMDセット110Dのユーザをユーザ5Dと表す。HMDセット110Aに関する各構成要素の参照符号にAが付され、HMDセット110Bに関する各構成要素の参照符号にBが付され、HMDセット110Cに関する各構成要素の参照符号にCが付され、HMDセット110Dに関する各構成要素の参照符号にDが付される。例えば、HMD120Aは、HMDセット110Aに含まれる。
【0116】
図12(A)は、ネットワーク2において、各HMD120がユーザ5に仮想空間11を提供する状況を表す模式図である。コンピュータ200A~200Dは、HMD120A~120Dを介して、ユーザ5A~5Dに、仮想空間11A~11Dをそれぞれ提供する。
図12(A)に示される例において、仮想空間11Aおよび仮想空間11Bは同じデータによって構成されている。換言すれば、コンピュータ200Aとコンピュータ200Bとは同じ仮想空間を共有していることになる。仮想空間11Aおよび仮想空間11Bには、ユーザ5Aのアバターオブジェクト6Aと、ユーザ5Bのアバターオブジェクト6Bとが存在する。仮想空間11Aにおけるアバターオブジェクト6Aおよび仮想空間11Bにおけるアバターオブジェクト6BがそれぞれHMD120を装着しているが、これは説明を分かりやすくするためのものであって、実際にはこれらのオブジェクトはHMD120を装着していない。
【0117】
ある局面において、プロセッサ210Aは、ユーザ5Aの視界画像17Aを撮影する仮想カメラ14Aを、アバターオブジェクト6Aの目の位置に配置し得る。
【0118】
図12(B)は、
図12(A)におけるユーザ5Aの視界画像17Aを示す図である。視界画像17Aは、HMD120Aのモニタ130Aに表示される画像である。この視界画像17Aは、仮想カメラ14Aにより生成された画像である。視界画像17Aには、ユーザ5Bのアバターオブジェクト6Bが表示されている。特に図示はしていないが、ユーザ5Bの視界画像にも同様に、ユーザ5Aのアバターオブジェクト6Aが表示されている。
【0119】
図12(B)の状態において、ユーザ5Aは仮想空間11Aを介してユーザ5Bと対話による通信(コミュニケーション)を図ることができる。より具体的には、マイク170Aにより取得されたユーザ5Aの音声は、サーバ600を介してユーザ5BのHMD120Bに送信され、HMD120Bに設けられたスピーカ180Bから出力される。ユーザ5Bの音声は、サーバ600を介してユーザ5AのHMD120Aに送信され、HMD120Aに設けられたスピーカ180Aから出力される。
【0120】
ユーザ5Bの動作(HMD120Bの動作およびコントローラ300Bの動作)は、プロセッサ210Aにより仮想空間11Aに配置されるアバターオブジェクト6Bに反映される。これにより、ユーザ5Aは、ユーザ5Bの動作を、アバターオブジェクト6Bを通じて認識できる。
【0121】
図13は、本実施の形態に従うHMDシステム100において実行される処理の一部を表すシーケンスチャートである。
図13においては、HMDセット110Dを図示していないが、HMDセット110Dについても、HMDセット110A、110B、110Cと同様に動作する。以下の説明でも、HMDセット110Aに関する各構成要素の参照符号にAが付され、HMDセット110Bに関する各構成要素の参照符号にBが付され、HMDセット110Cに関する各構成要素の参照符号にCが付され、HMDセット110Dに関する各構成要素の参照符号にDが付されるものとする。
【0122】
ステップS1310Aにおいて、HMDセット110Aにおけるプロセッサ210Aは、仮想空間11Aにおけるアバターオブジェクト6Aの動作を決定するためのアバター情報を取得する。このアバター情報は、例えば、動き情報、フェイストラッキングデータ、および音声データ等のアバターに関する情報を含む。動き情報は、HMD120Aの位置および傾きの時間的変化を示す情報や、モーションセンサ420A等により検出されたユーザ5Aの手の動きを示す情報などを含む。フェイストラッキングデータは、ユーザ5Aの顔の各パーツの位置および大きさを特定するデータが挙げられる。フェイストラッキングデータは、ユーザ5Aの顔を構成する各器官の動きを示すデータや視線データが挙げられる。音声データは、HMD120Aのマイク170Aによって取得されたユーザ5Aの音声を示すデータが挙げられる。アバター情報には、アバターオブジェクト6A、あるいはアバターオブジェクト6Aに関連付けられるユーザ5Aを特定する情報や、アバターオブジェクト6Aが存在する仮想空間11Aを特定する情報等が含まれてもよい。アバターオブジェクト6Aやユーザ5Aを特定する情報としては、ユーザIDが挙げられる。アバターオブジェクト6Aが存在する仮想空間11Aを特定する情報としては、ルームIDが挙げられる。プロセッサ210Aは、上述のように取得されたアバター情報を、ネットワーク2を介してサーバ600に送信する。
【0123】
ステップS1310Bにおいて、HMDセット110Bにおけるプロセッサ210Bは、ステップS1310Aにおける処理と同様に、仮想空間11Bにおけるアバターオブジェクト6Bの動作を決定するためのアバター情報を取得し、サーバ600に送信する。同様に、ステップS1310Cにおいて、HMDセット110Cにおけるプロセッサ210Cは、仮想空間11Cにおけるアバターオブジェクト6Cの動作を決定するためのアバター情報を取得し、サーバ600に送信する。
【0124】
ステップS1320において、サーバ600は、HMDセット110A、HMDセット110B、およびHMDセット110Cのそれぞれから受信したプレイヤ情報を一旦記憶する。サーバ600は、各アバター情報に含まれるユーザIDおよびルームID等に基づいて、共通の仮想空間11に関連付けられた全ユーザ(この例では、ユーザ5A~5C)のアバター情報を統合する。そして、サーバ600は、予め定められたタイミングで、統合したアバター情報を当該仮想空間11に関連付けられた全ユーザに送信する。これにより、同期処理が実行される。このような同期処理により、HMDセット110A、HMDセット110B、およびHMD110Cは、互いのアバター情報をほぼ同じタイミングで共有することができる。
【0125】
続いて、サーバ600から各HMDセット110A~110Cに送信されたアバター情報に基づいて、各HMDセット110A~110Cは、ステップS1330A~S1330Cの処理を実行する。ステップS1330Aの処理は、
図11におけるステップS1180の処理に相当する。
【0126】
ステップS1330Aにおいて、HMDセット110Aにおけるプロセッサ210Aは、仮想空間11Aにおける他のユーザ5B,5Cのアバターオブジェクト6B、アバターオブジェクト6Cの情報を更新する。具体的には、プロセッサ210Aは、HMDセット110Bから送信されたアバター情報に含まれる動き情報に基づいて、仮想空間11におけるアバターオブジェクト6Bの位置および向き等を更新する。例えば、プロセッサ210Aは、メモリモジュール530に格納されたオブジェクト情報に含まれるアバターオブジェクト6Bの情報(位置および向き等)を更新する。同様に、プロセッサ210Aは、HMDセット110Cから送信されたアバター情報に含まれる動き情報に基づいて、仮想空間11におけるアバターオブジェクト6Cの情報(位置および向き等)を更新する。
【0127】
ステップS1330Bにおいて、HMDセット110Bにおけるプロセッサ210Bは、ステップS1330Aにおける処理と同様に、仮想空間11Bにおけるユーザ5A,5Cのアバターオブジェクト6A,6Cの情報を更新する。同様に、ステップS1330Cにおいて、HMDセット110Cにおけるプロセッサ210Cは、仮想空間11Cにおけるユーザ5A,5Bのアバターオブジェクト6A,6Bの情報を更新する。
[モジュールの詳細構成]
図14を参照して、コンピュータ200のモジュール構成の詳細について説明する。
図14は、コンピュータ200のモジュールの詳細構成を表すブロック図である。コンピュータ200は、コントロールモジュール510と、レンダリングモジュール520と、メモリモジュール530とを含む。
【0128】
コントロールモジュール510は、仮想カメラ制御モジュール1421と、視界領域決定モジュール1422と、仮想空間定義モジュール1423と、仮想オブジェクト生成モジュール1424と、操作オブジェクト制御モジュール1425と、コリジョン検出モジュール1426と、を備えている。レンダリングモジュール520は、視界画像生成モジュール1438を備えている。コントロールモジュール510は、レンダリングモジュール520、およびメモリモジュール530に接続されている。レンダリングモジュール520は、メモリモジュール530に接続されている。
【0129】
仮想カメラ制御モジュール1421は、仮想空間11に、仮想カメラである仮想視点14を配置する。仮想カメラ制御モジュール1421は、ユーザの頭(HMD)の動きに応じて、仮想空間11における仮想視点14の配置位置と、仮想視点14の向き(傾き)を制御する。例えば、仮想カメラ制御モジュール1421は、現実空間におけるHMD120の向き(ユーザの頭の向き)に連動するように、仮想空間における仮想視点14の向き(視界)を制御する。
【0130】
視界領域決定モジュール1422は、仮想視点14の向きと、仮想視点14の配置位置に応じて、視界領域(単に視界とも呼ぶ)15を規定する。
【0131】
レンダリングモジュール520の視界画像生成モジュール1438は、決定された視界領域15に基づいて、モニタ130に表示される視界画像17を生成する。
【0132】
仮想空間定義モジュール1423は、仮想空間11を表わす仮想空間データを生成することにより、HMDシステム100における仮想空間11を規定する。
【0133】
仮想オブジェクト生成モジュール1424は、仮想空間11に配置されるオブジェクトを生成する。オブジェクトは、例えば、ゲームのストーリーの進行に従って配置される森、山その他を含む風景、動物、敵、人等を含み得る。
【0134】
また、オブジェクトは、他のユーザ5のアバターオブジェクトを含み得る(以下、アバターオブジェクトを「アバター」と表記する)。
【0135】
また、オブジェクトは、敵オブジェクトを攻撃するために使用する武器オブジェクト、敵オブジェクトからの攻撃を防ぐ防具オブジェクトを含み得る。敵オブジェクトは、ユーザ5のアバター(プレイヤキャラクタとも呼ぶ)との間で影響を及ぼし合うオブジェクトである。敵オブジェクトは、例えば、アバターを攻撃したり、アバターから攻撃されたりするようなオブジェクトが挙げられる。
【0136】
また、オブジェクトは、ユーザの操作を受け付けるための操作オブジェクトを含み得る。操作オブジェクトは、例えば、ユーザ5の手に相当する仮想手である手オブジェクト(アバターの手の部分)であるが、これに限定されない。操作オブジェクトは、ユーザ5の頭以外の身体(例えば手もしくは手に保持されたコントローラ300)によって操作される。ユーザ5のアバター全体が操作オブジェクトであってもよいし、アバターの身体の手以外の部分を構成するオブジェクトが操作オブジェクトであってもよい。あるいは、手オブジェクトに保持させた武器オブジェクトまたは防具オブジェクトが操作オブジェクトでもよい。
【0137】
操作オブジェクト制御モジュール1425は、仮想空間11に配置された、ユーザの操作を受け付けるための操作オブジェクトを制御する。操作オブジェクトは、例えば、HMD120を装着したユーザの手、コントローラ300、またはこれらの両方により操作可能である。
【0138】
コリジョン検出モジュール1426は、仮想空間11に配置されるオブジェクトが、他のオブジェクトと衝突した場合に、当該衝突を検出する。例えば、あるオブジェクトのコリジョンエリアと、別のオブジェクトのコリジョンエリアとが触れたタイミングを検出することができる。コリジョンエリアは、例えば、オブジェクトの外形領域に設定される任意の形状の領域である。また、コリジョン検出モジュール1426は、オブジェクトとオブジェクトとが触れている状態から離れたタイミングを検出することができる。また、コリジョン検出モジュール1426は、オブジェクトとオブジェクトとが触れている状態であることを検出することができる。例えば、あるオブジェクトと、他のオブジェクトとが触れたときに、あるオブジェクトと他のオブジェクトとが触れたことを検出する。コリジョン検出モジュールは、上記の衝突、分離、または接触を検出したときに、予め定められた処理を行う。もしくは、コリジョン検出モジュールは、他のモジュールに上記の衝突、分離、または接触の検出を通知し、他のモジュールが、予め定められた処理を行う。一例として、操作オブジェクト制御モジュール1425が、操作オブジェクトと他のオブジェクトとの接触が検出されたときにコリジョン検出モジュールが、この検出を操作オブジェクト制御モジュール1425に通知し、操作オブジェクト制御モジュール1425は、予め定められた処理を行う。
【0139】
メモリモジュール530は、コンピュータ200が仮想空間11をユーザ5に提供するために使用されるデータを保持している。ある局面において、メモリモジュール530は、空間情報1428と、オブジェクト情報1429と、ユーザ情報1430と、を保持している。
【0140】
空間情報1428は、仮想空間11を提供するために規定された1つ以上のテンプレートを保持している。
【0141】
オブジェクト情報1429は、仮想空間11において再生されるコンテンツ、当該コンテンツで使用されるオブジェクト、およびオブジェクトを仮想空間11に配置するための情報(たとえば、位置情報)を保持している。当該コンテンツは、例えば、ゲームコンテンツ、実社会と同様の風景を表したコンテンツ、または映像コンテンツ等を含み得る。
【0142】
ユーザ情報1430は、HMDシステム100の制御装置としてコンピュータ200を機能させるためのプログラム、およびオブジェクト情報1429に保持される各コンテンツを使用するアプリケーションプログラム(例えばアクションゲームプログラム)等を保持している。
【0143】
以下、本実施形態に係るゲームプログラムについて説明する。本ゲームプログラムでは、ユーザ5のアバターオブジェクト(アバター)が、次々と襲いかかってくる敵キャラクタ(敵オブジェクト)を打ち倒す格闘アクションゲーム(一人称体感型VRアクションゲーム)である場合を例にとり説明する。敵キャラクタは、NPC(Non Player Character)であり、本ゲームプログラムによりその動作が制御される。
【0144】
【0145】
図15Aは、HMD120を装着するとともに、コントローラ300L、300Rを保持したユーザ5の例を示す。コントローラ300Lは、左手に保持されるコントローラ、コントローラ300Rは、右手に保持されるコントローラである。これらのコントローラを総称してコントローラ300と記載する。
【0146】
図15Bは、HMD120によってユーザ5に提供される仮想空間1511の一例を示す。仮想空間1511では、ユーザ5の仮想視点1514からの視界領域1515内に敵オブジェクト1531が存在している。敵オブジェクト1531は、アバターオブジェクト(アバター)1506の方向(矢印の方向)に向かっている。
【0147】
図15Cには、仮想空間1511においてユーザ5のアバター1506から見た視界画像、すなわちユーザ5の仮想視点(仮想カメラ)1514からの視界領域1515内の視界画像が示されている。ユーザ5のアバターの手が操作オブジェクト(左手オブジェクト)1532L、および操作オブジェクト(右手オブジェクト)1532Rとして表示されている。右手オブジェクト1532Rには、銃オブジェクト1533が装備されている。銃オブジェクト1533は、武器オブジェクトの一例であり、武器オブジェクトは、弓矢オブジェクトまたは剣オブジェクトなど、他の種類でもよい。視界画像に、ユーザ5のアバターの手外の部位が含まれてもよい。また、アバターの全身が含まれてもよい。あるいは、逆に、ユーザ5のアバターの部位が一切含まれなくてもよい。操作オブジェクト(手オブジェクト)1532L、1532Rを、操作オブジェクト(手オブジェクト)1532と総称する。なお、ここでは、手オブジェクトを操作オブジェクトとしているが、手オブジェクトと、手オブジェクトに保持させたアイテム(例えば武器オブジェクト)とをまとめて、操作オブジェクトとしてもよい。
【0148】
現実空間におけるHMD120の位置や動きは、ポジショントラッキングにより検出されて、仮想空間1511における仮想視点1514の位置や動きに反映される。同様に、現実空間におけるコントローラ300の位置や動きは、それぞれ、ポジショントラッキングにより検出されて、仮想空間1511における操作オブジェクト1532の位置や動きに反映される。コントローラ300は現実空間のユーザ5の左手および右手にそれぞれ保持されている。このため本実施形態では、ユーザ5の頭(HMD120)に対する左手または右手(コントローラ300Lまたは300R)の位置関係が、仮想カメラ1514に対する操作オブジェクト1532L、1532Rの位置関係として仮想空間2に反映される。すなわち、HMD120を装着したユーザ5は、左手オブジェクト1532L及び右手オブジェクト1532Rをあたかもユーザ5自身の仮想手であるかのように仮想空間1511内で動かすことができる。HMD120を装着したユーザ5は、主観視点(1人称視点)で仮想空間1511を体験できるため、ユーザ5自身があたかもプレイヤキャラクタになったかのような仮想体験を享受できる。つまり、ユーザ5は、あたかもプレイヤキャラクタになって敵オブジェクト1531と対峙して対戦しているかのような仮想体験を享受できる。
【0149】
操作オブジェクト(手オブジェクト)1532へのアイテムの装着方法について説明する。アバター1506の身体を構成する部位のうちの特定の部位(例えば肩または腰など)に、第1領域が設定されている。第1領域は、例えば、コリジョンエリアにより構成される領域であり、操作オブジェクト(手オブジェクト)1532に使用させるためのアイテムを関連付け可能な領域となっている。アイテムとしては、敵オブジェクト1531を攻撃するための武器オブジェクトや、敵オブジェクト1531からの攻撃を防ぐための防具オブジェクトなどが挙げられるが、これらに限定されるものではない。ユーザ5は、自身の手(コントローラ300)を動かして、手オブジェクト1532に設定されたコリジョンエリアと、上記の特定の部位に設定された第1領域とを衝突させつつ、第1領域に関連付けられたアイテムを選択するための選択操作を行うことで、第1領域に関連付けられたアイテムを手オブジェクト1532に装備させることができる。例えば特定の部位が肩であるとき、右手オブジェクト1532Rを肩まで移動させ(このとき右手オブジェクト1532Rが視界画像から消える)、右手オブジェクト1532Rのコリジョンエリアを、肩に設定された第1領域に衝突させつつ、コントローラ300で選択操作を行うことで、右手オブジェクト1532Rに銃オブジェクトが装備される。右手オブジェクト1532Rを元の位置に戻すと、
図15Cのように、右手オブジェクト1532Rに銃オブジェクト1533が装備された画像が表示される。選択操作としては、例えば、ボタン340や350などのトリガー式のボタンを押下し続けることが挙げられるが、これに限定されるものではない。ユーザ5による選択操作が解除されると、右手オブジェクト1532Rによる銃オブジェクト1533の選択が解除される。この場合、プロセッサ210は、右手オブジェクト1532Rに銃オブジェクト1533を離させるとともに、銃オブジェクトの状態を、選択状態から非選択状態に更新する。ここで説明したアイテムの装着方法は一例であり、他の方式も可能である。例えば、アバター1506の眼前に配置されたアイテム(例えば壁に掛けられたアイテム、地面に落ちているアイテムなど)を直接、手オブジェクト1532で掴む操作を行うことにより、手オブジェクト1532にアイテムを装着させてもよい。
【0150】
ユーザ5は、敵オブジェクト1531を攻撃する場合には、選択した武器オブジェクトを手オブジェクト1531で操作して敵オブジェクト1531を攻撃する。同様に、ユーザ5は、敵オブジェクト1531からの攻撃を防ぐ場合には、選択した防具オブジェクトを手オブジェクト1532で操作して敵オブジェクト1531からの攻撃を防ぐ。
【0151】
図15Cの左手オブジェクト1532Lには何らアイテムが装備されていないが、左手オブジェクト1532Lに、防具オブジェクトまたは武器オブジェクトを装備させてもよい。
【0152】
ユーザ5は、アバター1506に、次々と発生し、襲いかかってくる敵オブジェクト1531(図には一体のみ表示されているが、複数体存在してもよい)を打ち倒すため、操作オブジェクト1532を操作して敵オブジェクト1531に攻撃することで、敵オブジェクト1531に所定の作用を及ぼす。例えば、操作オブジェクト1532Rに装着させた武器(剣、銃、弓など)オブジェクトを操作して敵オブジェクト1531を攻撃することにより、敵オブジェクト1531に所定の作用を及ぼすことができる。なお、銃や弓などの遠隔攻撃可能な武器オブジェクトは、銃弾などの攻撃オブジェクト(第2オブジェクト)を出力する(飛ばす)ことで、攻撃を行う。これらの武器オブジェクトには射程距離(射程範囲)が存在してもよい。この場合、射程距離に存在する敵オブジェクトを攻撃することができる。攻撃で与えるダメージの大きさは敵オブジェクトとアバター1506との距離に依存してもよいし、一定でもよい。
【0153】
敵オブジェクト1531の外形領域と、武器オブジェクトまたは攻撃オブジェクトの外形領域とにそれぞれ判定用のコリジョンエリアが設定されている。敵オブジェクト1531のコリジョンエリアと、武器オブジェクトまたは攻撃オブジェクトのコリジョンエリアとが接触した場合に、敵オブジェクト1531への攻撃が行われたと判断する。この場合、敵オブジェクト1531の体力パラメータの減少など攻撃内容に応じた所定の作用が及ぼされる。この結果、敵オブジェクト1531が倒れる、消える、よろめくなどの動作が行われる。
【0154】
操作オブジェクト(手オブジェクト)1532自体が武器オブジェクトとして機能してもよい。この場合、操作オブジェクトが素手の武器オブジェクトとして、敵オブジェクト1531へ直接当てるように移動することにより、攻撃が行われる。この結果、敵オブジェクト1531に所定の作用を及ぼすことができる。
【0155】
ここで、仮想空間1511では、ユーザ5の頭部(HMD)の動きに応じて、仮想視点1514が回転し、ユーザ5の視界(アバター1506の視界)が制御される。上記のようなアクションゲームにおいては、敵オブジェクト1531は例えばランダムに発生させられて、アバター1506に襲いかかるが、ユーザ5は視界外の事象を認識できないため、以下の問題が生じる。これについて、
図16を用いて説明する。
【0156】
図16は、ユーザ5に提供される仮想空間の一例を示す。
図16の左上図の仮想空間1511において、ユーザ5の仮想視点(仮想カメラ)1514からの視界領域1515内に、敵オブジェクト1531Aが発生する。例えば、敵オブジェクト1531Aは、アバター1506の正面方向に発生する。発生した敵オブジェクト1531Aは、アバター1506に向かって襲いかかってくる。すなわちアバター1506に向かって(すなわち、仮想視点1514に向かって)、敵オブジェクト1531Aが移動してくる。
図16の右上図において、ユーザ5が、襲ってきた敵オブジェクト1531Aに対処している(例えば銃オブジェクトから弾オブジェクトを飛ばすことで敵オブジェクト1531Aを攻撃している)。この間に、ユーザ5の視界外で敵オブジェクト1531Bが発生する。敵オブジェクト1531Bが、ユーザ5の視界外を移動し、ユーザ5(アバター1506)に襲いかかってくる。
図16の右下図において、ユーザ5が敵オブジェクト1531Aを倒し、その直後に、周囲の状況を確認するため、視界を右方向に変える。このときユーザ5の視界外を移動してきた敵オブジェクト1531Bが突然、ユーザ5の目の前に現れる。ユーザ5は敵オブジェクト1531Bに慌てて対処することになり、理不尽に感じる場合がある。
【0157】
目の前に突然敵オブジェクトが現れてユーザ5が理不尽に感じる問題は、ユーザ5が、視界外に敵オブジェクトが存在することが分かっている場合にも起こり得る。これについて
図17を用いて説明する。
図17は、ユーザ5に提供される仮想空間の他の例を示す。
【0158】
図17の左上図において、ユーザ5の視界領域1515において敵オブジェクト1531A、1531Bがランダムに発生し、アバター1506の方に向かってくる。ユーザ5が敵オブジェクト1531Aを先に対処することを決定する。このため、
図17の右上図に示すように、ユーザ5は、敵オブジェクト1531Aの正面方向を向くように頭を回転させる。すなわち、戦闘の際は、通常、アバター1506が敵オブジェクトと正対するように向きを変える。これにより視界領域1515が右に回転し、アバター1506の正面に敵オブジェクト1531Aが位置するが、敵オブジェクト1531Bは視界領域1515外になり、ユーザ5から見えなくなる。ユーザ5が敵オブジェクト1531Aに対処している間、敵オブジェクト1531Bは視界領域1515外を移動し、アバター1506に近づいてくる。ユーザ5が敵オブジェクト1531Aの対処を終えると(例えば敵オブジェクト1531Aを倒すと)、次に敵オブジェクト1531Bに対処することを決定する。
図17の右下図に示すように、ユーザ5は、敵オブジェクト1531Bの正面方向を向くように、左方向に頭を回転させる。ユーザ5が敵オブジェクト1531Aに対処している間に敵オブジェクト1531Bがユーザ5のアバターに近づいてきたため、ユーザ5が視界を変えた際に、突然目の前に敵オブジェクト1531Bが現れる。ユーザ5は敵オブジェクト1531Bの対処に慌ただしくなり、理不尽に感じる場合がある。また、敵オブジェクト1531Bが遠隔攻撃可能な武器オブジェクトを保持していれば、ユーザ5は視界外にいる敵オブジェクト1531Bから攻撃を受ける可能性もある。他の敵オブジェクト1531Aとの戦闘中に、視界外の敵オブジェクト1531Bから攻撃されるのも納得感がない。
【0159】
本実施形態は、
図16および
図17で説明したようなユーザ5の目の前に突然敵オブジェクトが現れてしまったり、視界外から攻撃されたりする状況を低減する。本実施形態の1の解決手段として、敵オブジェクトをユーザ5の視界外で発生させず、視界内でのみ発生させることがある。本実施形態の第2の解決手段として、ユーザ5の視界外ではユーザ5のアバターに向かってくる敵オブジェクトの移動速度を、視界内に当該敵オブジェクトが存在するときよりも遅くすることがある。その他、第1の解決手段または第2の解決手段をベースとするその他の解決手段がある。以下、これらの解決手段の動作について説明する。
【0160】
図18は、敵オブジェクト1531(第1オブジェクト)の発生場所を制御する処理(第1の解決手段の処理)の一例のフローチャートである。ユーザ5がアクションゲームをプレイしている。仮想空間には仮想視点(仮想カメラ)1514および各種オブジェクトが配置等されており、ユーザ5には、HMD120のモニタ130を介して、仮想視点1514からの視界領域の画像(視界画像)が表示されている。ユーザ5が左手および右手で把持しているコントローラ300を用いてアバター1506の操作オブジェクト(手オブジェクト)1532等を操作する。ゲームの進行中、仮想空間において、ランダムなタイミングおよび場所で、ユーザ5を襲う敵オブジェクト1531を発生させる。本処理では、敵オブジェクト1531の発生場所をユーザ5の視界領域1515内に制限する。これにより、視界領域1515外で敵オブジェクトが発生することは防止され、ユーザ5の目の前に突然敵オブジェクト1531が現れたり、ユーザ5の視界外からアバター1506が攻撃されたりする状況を低減できる。
【0161】
ステップS1811において、プロセッサ210は、HMDセンサ410等に基づきユーザ5の視界方向および視界領域1515を特定する。
【0162】
ステップS1812において、プロセッサ210は、特定した視界領域1515に基づき視界画像を生成し、HMD120に出力する。視界画像は、HMD120のモニタ130に表示され、ユーザ5に視認される。また、プロセッサ210は、特定した視界領域1515に各種オブジェクトを配置する。配置するオブジェクトには、森、山、建物などの風景のオブジェクト、発生させられた敵オブジェクト、ユーザの操作を受け付けるための操作オブジェクト等がある。配置したオブジェクトの画像は、HMD120に出力され、モニタ130に表示される。
【0163】
ステップS1813において、プロセッサ210が、敵オブジェクトの発生条件が成立したかを判断する。敵オブジェクトの発生条件の例として、例えば、最も直近に敵オブジェクトが発生してから一定時間経過したことがある。また、最も直近に敵オブジェクトを倒してから一定時間経過したことがある。また、乱数を生成し、生成した値が所定の範囲に入ることがある。また、視界領域内に存在する敵オブジェクトの数が所定値以下になったことがある。また、ゲームにおいて特定のイベントが発生したことがある。ここで記載した条件を組み合わせてもよいし、ここで記載した以外の条件を用いることも可能である。
【0164】
ステップS1813において、敵オブジェクトの発生条件が成立していない場合は(NO)、ステップS1817に進む。敵オブジェクトの発生条件が成立した場合は(YES)、ステップS1814に進む。
【0165】
ステップS1814において、プロセッサ210は、ユーザ5の視界領域1515内で敵オブジェクトの発生地点を決定する。ある局面では、仮想空間1511内に予め複数の発生地点候補(座標)が定められており、これらの発生地点候補のうち、視界領域15115内に含まれる発生地点候補をすべてまたは一定個数以上特定する。特定した発生地点候補から、1つまたは複数の発生地点をランダムに選択する。例えば、特定した発生地点候補のそれぞれについて0.1の確率で選択されるようにするのであれば、各発生地点候補について、0~9の範囲で乱数を生成し、生成した乱数の値が所定の範囲(例えば1以上2未満)であればその発生地点候補を選択し、所定の範囲外のときは選択しない。複数の発生地点が選択される場合もあり得る。選択する個数が予め決められているときは、当該個数の発生地点が選択された時点で処理を終了すればよい。選択する個数の例として、視界領域1515内に同時に存在可能な敵オブジェクト数の個数の上限値があるときは、上限値から現在の視界領域内に存在する敵オブジェクト数を減算し、減算された個数を、選択する発生地点の個数の上限とすることがある。ここに記載した以外の方法で発生地点を決めてもよい。
【0166】
ステップS1815において、プロセッサ210は、決定した発生地点に敵オブジェクト1531を発生させる。すなわち、当該発生地点に敵オブジェクト1531を配置する。発生した敵オブジェクトの画像がHMD120に出力され、HMD120のモニタ130に表示される。
【0167】
ステップS1816において、発生させた敵オブジェクト1531の移動速度を決定する。移動速度は予め決められた値でもよいし、複数の移動速度候補の中から、ランダムに決定した値でもよい。また、発生させた敵オブジェクト1531の種類または属性に応じて、決定してもよい。
【0168】
ステップS1817において、仮想空間1511内に存在する敵オブジェクト1531を、ステップS1816で決定した移動速度で、ユーザ5のアバター1506に向かって移動させる。すなわち、敵オブジェクト1531のオブジェクト情報(位置情報)を一定時間ごとに更新する。複数の敵オブジェクト1531が存在するときは、敵オブジェクト1531毎に本処理を行う。なお、敵オブジェクト1531がアバター1506へ向かって移動する経路は、アバター1506への最短経路(直線経路)でもよいし、予め複数の候補が定められており、それらの候補の中からランダムあるいは別の方法で移動経路を選択してもよい。
【0169】
ステップS1818において、プロセッサ210は、コントローラ300等から取得した検出データに基づき、ユーザ5によるコントローラ300の操作を検出する。
【0170】
ステップS1819にて、プロセッサ210は、ユーザ5によるコントローラ300の操作に基づく視界画像を生成する。例えば、操作オブジェクト1532を操作して銃オブジェクト1533を動作(発射)させた場合は、その動作に応じた画像を含む視界画像を生成する。発射させた弾オブジェクトが敵オブジェクト1531に当たる画像が視界画像に含まれてもよい。生成された視界画像は、HMD120に出力され、モニタ130に表示される。ステップS1818でユーザ5による操作が検出されなかった場合は、本ステップはスキップすればよい。
【0171】
ステップS1820において、プロセッサ210は、本フローチャートの処理を終了するかを判断する。終了しないと判断した場合は(NO)、ステップS1811に戻る。終了すると判断した場合は(YES)、プロセッサ210は、本フローチャートの処理を終了する。例えば、ユーザ5がコントローラ300でゲームの終了操作を行い、プロセッサ210が、本処理の終了を決定する。なお、本フローチャートの一連の処理を一定時間毎に繰り返すようにしてもよい。この場合、一定時間が経過したかを判断するステップを追加してもよい。
【0172】
図18のフローチャートの具体的な動作例を、
図19および
図20を用いて説明する。
図19は、ユーザ5に提供される仮想空間の例を示す。
図20には、
図19の仮想空間においてユーザ5のアバター1506から見た視界画像が示されている。
【0173】
図19の左上図のように、視界領域1515内でユーザ5のアバター1506の正面方向に1つの発生地点が決定され(ステップS1814)、決定した発生地点に敵オブジェクト1531Aが1体、発生させられる(ステップS1815)。このときのユーザ5の視界画像が、
図20の左上図に示される。敵オブジェクト1531Aは、ステップS1816で決定される移動速度でアバター1506に向かって(仮想視点1514に向かって)移動する(ステップS1817)。
【0174】
図19の右上図において、ユーザ5はコントローラ3を用いて操作オブジェクト1532を操作し、ユーザ5の近くまで移動してきた敵オブジェクト1531Aに対処する(S1818)。具体的には、敵オブジェクト1531Aを銃オブジェクト1533で攻撃する。銃オブジェクト1533は、銃弾オブジェクト(第2オブジェクト)を敵オブジェクト1531Aに向けて飛ばし(移動させ)、敵オブジェクト1531Aとの位置関係に応じた作用を及ぼす。例えば銃弾オブジェクトが敵オブジェクト1531Aに接触したときに、敵オブジェクト1531Aに所定の作用を及ぼす。ユーザ5が敵オブジェクト1531Aに対処(攻撃)している間、プロセッサ210は、視界領域1515内に1つの発生地点を決定し(ステップS1814)、続くステップS1815において、決定した発生地点に敵オブジェクト1531Bを1体、発生させる。このときのユーザ5の視界画像が
図20の右上図に示される。なお、敵オブジェクト1531A、1531Bの大きさは概ね同じであり、図に描かれている敵オブジェクトの大きさは、ユーザ5のアバターからの距離に依存している。ユーザ5のアバターから近くにいる敵オブジェクトほど、大きく描かれている。
【0175】
ユーザ5は、敵オブジェクト1531Aに対処することで、
図19の右下図のように、敵オブジェクト1531Aは消滅する(S1819)。この結果、ユーザ5の視界画像は、
図20の右下図のように更新される。
【0176】
ユーザ5は、敵オブジェクト1531Aへの対処が完了した直後、視界領域1515内で後方にいる敵オブジェクト1531Bを認識している。そこで、
図19の左下図に示すように、ユーザ5は敵オブジェクト1531Bの方向を向き、敵オブジェクト1531Bへの攻撃を準備する。このときユーザの視界画像は、
図20の左下図のように更新される。ユーザ5の正面方向に敵オブジェクト1531Aが位置している。
【0177】
このように、ユーザ5の視界領域1515内でのみ敵オブジェクトを発生させ、視界領域1515外では発生させないことにより、ユーザ5が視界を変えた直後に突然目の前に敵オブジェクトが現れたり、視界外から攻撃を受けたりする現象を低減できる。これにより、ユーザ5は、納得感のあるプレイをすることができ、ユーザ5の仮想体験の質を向上させることができる。後述する仮想空間を複数のユーザ5で共有するマルチプレイの場合、ユーザ5の視界領域1515外であっても、他のユーザ5の視界領域内であれば、他のユーザ5の視界領域内に敵オブジェクトを発生させてもよい。
【0178】
図21は、ユーザ5の視界領域外に存在する敵オブジェクト(第1オブジェクト)の移動速度を遅くするよう制御する処理(第2の解決手段の処理)の一例のフローチャートである。
【0179】
ステップS1811~S1812は、
図18と同じである。ステップS1813で敵オブジェクトの発生条件が成立した場合は、ステップS2114に進み、成立していない場合は、ステップS2116に進む。
【0180】
ステップS2114において、プロセッサ210は、仮想空間1511(視界領域内および視界領域外)内で敵オブジェクトの発生地点を決定する。
図18のフローチャートでは発生地点が視界領域内に限定されていたが、本ステップS2114では、そのような制約はない。すなわち、視界領域内および視界領域外のいずれかまたは両方に発生地点を決定できる。発生地点を決定する具体的な手法の例は、
図18のステップS1814と同様である。
【0181】
ステップS1815において、
図18のフローチャートと同様に、決定した発生地点に敵オブジェクト1531を発生させる。
【0182】
ステップS2116において、敵オブジェクト1531が視界領域内か視界領域外のいずれに存在するかに応じて、敵オブジェクト1531の移動速度を決定する。
図22に、ステップS2116の詳細な動作のフローチャートを示す。ステップS2221において、プロセッサ210は、敵オブジェクト1531が視界領域内および視界領域外のどちらにいるかを判断する。敵オブジェクト1531が視界領域内にいると判断したときは(S2222のNO)、ステップS2223において、敵オブジェクト1531の移動速度として第1の移動速度(例えば通常速度)を決定する。敵オブジェクト1531が視界領域外にいると判断したときは(S2222のYES)、ステップS2224において、プロセッサ210は、第1の移動速度より遅い第2の移動速度を決定する。
【0183】
ここで第1の移動速度の値は、敵オブジェクトの種類によって異なってもよいし、敵オブジェクトの種類に拘わらず共通でもよい。第2の移動速度の値も、敵オブジェクトの種類によって異なってもよいし、敵オブジェクトの種類に拘わらず共通でもよい。
【0184】
図21のステップS1817において、ステップS2116で決定した移動速度で、敵オブジェクト1531を、ユーザ5のアバターに向かって移動させる。これにより、視界領域外にいる敵オブジェクト1531は第2の移動速度でゆっくりと移動し、視界領域内にいる敵オブジェクト1531は通常速度で移動する。なお、ユーザ5が頭(HMD120)を回転させることで、同じ敵オブジェクトがユーザ5の視界領域内に入ったり、視界領域外になったりするが、上述のステップS2116で、その都度、敵オブジェクトが存在する領域が判定され、移動速度が決定される。
【0185】
上述のステップS2116およびステップS1817の処理は、複数の敵オブジェクトが存在するときは、敵オブジェクトごとに行う。
【0186】
ステップS1818~ステップS1820は、
図18と同じである。
【0187】
図21および
図22のフローチャートの具体的な動作例を、
図23および
図24を用いて説明する。
図23は、ユーザ5に提供される仮想空間の例を示す。
図24には、
図23の仮想空間においてユーザ5のアバター1506から見た視界画像が示されている。
【0188】
図23の左上図のように、視界領域1515内に2つの発生地点が決定され(ステップS2114)、2つの発生地点にそれぞれ敵オブジェクト1531Aと敵オブジェクト1531Bとが発生させられる(ステップS1815)。このときのユーザ5の視界画像は、
図24の左上図に示される。敵オブジェクト1531Aおよび敵オブジェクト1531Bのいずれも視界領域1515内に存在するため、それぞれ第1の移動速度(V1とする)が決定される(S2223)。図では、敵オブジェクトを示す符号の後に括弧書きで移動速度を表す記号が付されている。例えば1531A(V1)は、敵オブジェクト1531Aの移動速度がV1であることを意味する。敵オブジェクト1531Aおよび敵オブジェクト1531Bは移動速度V1でアバター1506に向かって(仮想視点1514に向かって)移動する(ステップS1817)。ユーザ5が敵オブジェクト1531Aを先に対処することを決定する。
【0189】
図23の右上図に示すように、ユーザ5は、敵オブジェクト1531Aの正面方向を向くように頭を回転させる。これに応じて視界領域1515も右に回転し、ユーザ5の視界が変わり、アバター1506の正面方向に敵オブジェクト1531Aが位置する(S1811、S1812)。敵オブジェクト1531Bは視界領域1515外になったため、敵オブジェクト1531Bの移動速度はV1から第2の移動速度(V2とする)に変更される(S2224)。敵オブジェクト1531Aは移動速度V1のままユーザ5のアバターの方向へ移動し(S1817)、ユーザ5は、近くまで移動してきた敵オブジェクト1531Aを、コントローラ3を用いて操作オブジェクト1532を操作して対処する(S1818)。このときのユーザ5の視界画像が
図24の右上図に示される。ユーザ5が敵オブジェクト1531Aに対処している間も、敵オブジェクト1531Bは視界領域1515外を移動速度V2で移動し(S1817)、アバター1506に近づいてくる。
【0190】
図23の右下図のように、ユーザ5が敵オブジェクト1531Aの対処を終えると(例えば敵オブジェクト1531Aを倒すと)、敵オブジェクト1531Aが消滅する(S1819)。このときユーザ5の視界画像は
図24の右下図のように更新される。ユーザ5は、次に、視界領域1515外にいる敵オブジェクト1531Bに対処することを決定する。
【0191】
図23の左下図に示すように、ユーザ5は、敵オブジェクト1531Bの正面方向を向くように、左方向に頭を回転させる。これに応じて視界領域1515も左に回転し、ユーザ5の視界が変わる(S1811、S1812)。このときユーザ5の視界画像は
図24の左下図のように更新される。ユーザ5が敵オブジェクト1531Aに対処していた間に敵オブジェクト1531Bがユーザ5のアバター1506の方向に移動してきたものの、移動速度V2が遅かったため、敵オブジェクト1531Bはまだアバター1506から離れたところにいる。敵オブジェクト1531Bは再度、ユーザ5の視界領域1515内に入ったため、移動速度がV2からV1に変更され、移動速度V1で、ユーザ5のアバターに近づいてくる(S1817)。ユーザ5は、落ち着いて敵オブジェクト1531Bに対処できる。
【0192】
このように、敵オブジェクトが視界領域外に存在するときは移動速度を遅くすることにより、敵オブジェクトがユーザ5のアバターに近づくまでの時間を延ばし、ユーザ5が視界を変えた直後に突然目の前に敵オブジェクトが現れる現象を低減できる。これにより、ユーザ5は、納得感のあるプレイをすることができ、ユーザ5の仮想体験の質を向上させることができる。また、複数のユーザによりプレイするマルチプレイの場合(後述する変形例1、または前述した
図12および
図13の実施形態など参照)の場合、他のユーザからは、敵オブジェクト1531Bが、ユーザ5のアバター1506に気付かれないようにアバター1506の死角からゆっくり近づいているように見え、自然な感じに見える。
【0193】
図22のフローチャートでは、敵オブジェクトが視界領域内および視界領域外のいずれに存在するかに応じて敵オブジェクトの移動速度を決定したが、視界領域外に存在する場合に、敵オブジェクトからユーザ5のアバター1506までの距離に応じて、移動速度を変動させてもよい。
【0194】
図25に、移動速度を決定する処理の他の例のフローチャートを示す。
【0195】
ステップS2221は、
図22のフローチャートと同じである。すなわち、プロセッサ210は、敵オブジェクト1531が視界領域内および視界領域外のどちらにいるかを判断する。敵オブジェクト1531が視界領域内にいると判断したときは(S2222のNO)、ステップS2223に進み、敵オブジェクト1531が視界領域外にいると判断したときは(S2222のYES)、ステップS2526に進む。
【0196】
ステップS2223において、プロセッサ210は、敵オブジェクト1531の移動速度を、第1の移動速度(例えば通常速度)に決定する。
【0197】
ステップS2526において、プロセッサ210は、敵オブジェクト1531とユーザ5のアバター1506との距離を計算する。計算する距離は、例えば、ユーザ5のアバターが存在する座標と、敵オブジェクト1531が存在する座標との間のユークリッド距離である。
【0198】
ステップS2527において、計算した距離が短い(小さい)ほど、すなわち、敵オブジェクト1531がユーザ5に近いほど、小さな移動速度を、第2の移動速度として決定する。一例として、移動速度をv、敵オブジェクト1531とアバター1506との距離をdとすると、関数v=f(d)により移動速度を計算する。fは、dが小さくなるほどvが小さくなる(すなわちdが大きくなるほどvが大きくなる)単調増加関数である。
【0199】
または、敵オブジェクト1531およびアバター1506の距離と、移動速度とを対応づけた対応情報を予め定義してもよい。そのような対応情報としてテーブルの例を
図26に示す。テーブルは、距離の範囲と、移動速度とを保持している。v1はv2より大きく、v2はv3より大きい(v1>v2>v3)。テーブルにおいて、計算した距離dが属する範囲に対応する移動速度を決定する。例えば計算した距離dがd2以下で、d3より大きい場合、移動速度v2を決定する。
【0200】
上述の関数およびテーブル等は、敵オブジェクトの種類ごとに定義されてもよい。また、関数およびテーブル等は、ゲームの難易度設定などに応じて変更可能であってもよい。
【0201】
視界領域外の移動速度(第2の移動速度)の最大値は、視界領域内の移動速度(第1の移動速度)以下であるとする。ただし、そのような制約がなくてもよい。
【0202】
図27を用いて、
図25のフローチャートに従って移動速度が決定される場合の動作の具体例を示す。
図27は、ユーザ5に提供される仮想空間の例を示す。
【0203】
敵オブジェクト1531Aはユーザ5の視界領域1515内に存在し、敵オブジェクト1531Bは視界領域1515外に存在する。図には敵オブジェクトの移動経路が破線の矢印で示されている。破線の矢印に沿って、該当する経路を移動する際の移動速度が併記されている。敵オブジェクト1531Aは視界領域1515内に存在するため第1の移動速度であるv0が決定される。よって、敵オブジェクト1531Aは移動速度v0でユーザ5のアバター1506まで近づく。一方、敵オブジェクト1531Bは視界領域1515外に存在し、最初、アバター1506との距離がd2より長いため、第2の移動速度であるv1(v0以下)が決定される。敵オブジェクト1531Bがアバター1506の方向にv1で移動し、距離dがd2以下になると、次に移動速度がv2に変更される。敵オブジェクト1531Bがさらに移動し、距離dがd3以下になると、今度は移動速度がv3に変更される。このように視界領域1515内の敵オブジェクト1531Aは同じ移動速度v0で移動するのに対し、視界領域1515外の敵オブジェクト1531Bはアバター1506に近づくにつれ、徐々に低い移動速度に変更される。このため、敵オブジェクト1531Aがアバター1506の近くに達したときも、敵オブジェクト1531Bはアバター1506からまだ離れた場所に位置する。これによって、ユーザ5が敵オブジェクト1531Aに対処した後、敵オブジェクト1531Bの方を向いても、突然目の前に敵オブジェクト1531Bが現れるといった現象を低減できる。
【0204】
(変形例1)
上述した実施形態では一人のユーザがゲームをプレイするシングルプレイの例が示されたが、本変形例では複数のユーザによりプレイするマルチプレイの例を示す。以下では、二人のユーザによるマルチプレイの例を示すが、三人以上のユーザによるマルチプレイの場合も可能である。
【0205】
図28に、本変形例1に係るユーザ5に提供される仮想空間の例を示す。仮想空間1511は、二人のユーザ(ユーザ5A、ユーザ5B)によって共有されている。仮想空間1511内には、ユーザ5Aのアバター1506Aおよび仮想視点1514Aと、ユーザ5Bのアバター1506Bおよび仮想視点1514Bとが示される。敵オブジェクト1531Aは、ユーザ5Aの仮想視点1514Aからの視界領域1515A内に存在するが、ユーザ5Bの仮想視点1514Bからの視界領域1515B内に存在しない。敵オブジェクト1531Bは、ユーザ5Bの仮想視点1514Bからの視界領域1515B内に存在するが、ユーザ5Aの仮想視点1514Aからの視界領域1515A内に存在しない。
【0206】
図29に、
図28の仮想空間においてユーザ5Aのアバター1506Aから見た視界画像の例(右側)と、ユーザ5Bのアバター1506Bから見た視界画像の例(左側)が示される。ユーザ5Bの視界画像には、ユーザ5Bに対する左手オブジェクト、右手オブジェクト1532L_B、1532R_Bと、右手オブジェクト1532R_Bに装備された銃オブジェクト1533Bが含まれている。ユーザ5Aは、正面にいる敵オブジェクト1531Aと戦っており、敵オブジェクト1531Bは見えていない。一方、ユーザ5Bは、ユーザ5Aに向かって移動している敵オブジェクト1531Bがその側方から見えている。ユーザ5Bの操作オブジェクトは、ユーザ5Bの左手・右手オブジェクト1532L_B、1532R_Bでもよいし、ユーザ5Bの左手・右手オブジェクト1532L_B、1532R_Bと武器オブジェクト(銃オブジェクト)1533Bとをまとめたものを、ユーザ5Bの操作オブジェクトと定義してもよい。これ以外の方法でユーザ5Bの操作オブジェクトを定義してもよい。
【0207】
前述した
図21および
図22のフローチャートの処理では、敵オブジェクト1531がユーザ5の視界領域1515外にいる場合には、敵オブジェクト1531の移動速度を遅くした(
図22のステップS2224参照)。本変形例では、敵オブジェクト1531がユーザ5の視界領域1515外にいる場合であっても、別のユーザ5の視界領域1515内にいる場合は、敵オブジェクト1531の移動速度を遅くしない。
図28および
図29の例では、敵オブジェクト1531Bはユーザ5Aの視界領域1515A外にいるが、ユーザ5Bの視界領域1515B内にいる。このため、ユーザ5Aに向かって移動する敵オブジェクト1531Bの移動速度を遅くしない。すなわち、敵オブジェクト1531Bの移動速度を、第1の移動速度(例えば通常速度)にする。これは、ユーザ5Bがユーザ5Aに代わって敵オブジェクト1531Bを対処してくれる(ユーザ5Bがユーザ5Aをサポートしてくれる)という考えに基づいている。つまり、ユーザ5Bが、ユーザ5Aに代わって敵オブジェクト1531Bを対処することが期待できるため、ユーザ5Aにとって敵オブジェクト1531Bの移動速度を遅くする必要性は低い。一方、ユーザ5Bにとっては、攻撃対象となる敵オブジェクト1531Bが第1の移動速度(例えば通常速度)で移動しているため、違和感なくゲームをプレイすることができる。
【0208】
図30は、変形例1に係る移動速度を決定する処理の例のフローチャートを示す。前提として
図13に示したように、ユーザ5Aに係るHMDセット110Aと、ユーザ5Bに係るHMDセット110間ではサーバ300を介して、仮想空間の同期が図れている。具体的には、HMDセット110AおよびHMDセット110Bはそれぞれユーザ5A、5Bに係るアバターのアバター情報および敵オブジェクトの情報等をサーバ600に送信する。サーバ600は受信した情報を記憶する。そして、サーバ600は、予め定められたタイミングで、ユーザ5Aから受信した情報をユーザ5Bに送信し、ユーザ5Bから受信した情報をユーザ5Aに送信する。これにより、ユーザ5Aおよびユーザ5B間の同期処理が実行される。なお、アバター情報は、アバターオブジェクトの情報や、アバターオブジェクトの仮想視点および視界領域の情報、アバターオブジェクトが存在する仮想空間の情報などを含んでいる。
【0209】
ステップS3010において、ユーザ5Aに係るHMDセット110Aにおけるプロセッサ210は、ユーザ5Bのアバター情報および敵オブジェクトの情報等を、サーバ600を介して受信する。ここではユーザ5Bに対する敵オブジェクトはまだ発生していないものとし、ユーザ5Bのアバター情報のみ受信した場合を想定する。
【0210】
ステップS3030において、プロセッサ210は、受信したアバター情報に基づき、仮想空間1511におけるユーザ5Bのアバター1506Bの情報を更新する。これにより、例えば仮想空間1511に、ユーザ5Bの操作オブジェクト1532L_B、1532R_B、武器オブジェクト1533B等も配置される。もしユーザ5Bから敵オブジェクトの情報も受信した場合は、仮想空間1511においてユーザ5Bの敵オブジェクトの情報も更新する。またプロセッサ201は、ユーザ5Bの頭部の動きに応じて、仮想視点1514Bからの視界領域1515Bを制御する動作を行ってもよい。この場合、ユーザ5Bの頭部の動きの情報を、サーバ600を介してユーザ5BのHMDセット110Bから取得してもよい。または、プロセッサ201は仮想視点1514Bからの視界領域1515Bの情報をユーザ5BのHMDセット110Bからサーバ600を介して受信してもよい。
【0211】
ステップS2221において、プロセッサ210は、ユーザ5Aの敵オブジェクト1531が視界領域1515A内に存在するかを判断する。敵オブジェクト1531が視界領域1515A内に存在すると判断したときは(S2222のNO)、ステップS2223に進む。敵オブジェクト1531が視界領域1515A外にいると判断したときは(S2222のYES)、ステップS3028に進む。敵オブジェクトが複数存在するときは、敵オブジェクトごとに、ステップS2221の判断を行う。ここでは、前述した
図28の例のように、敵オブジェクト1531Aはユーザ5Aの視界領域1515A内に存在するが、敵オブジェクト1531Bは視界領域1515A外に存在すると判断する。したがって、敵オブジェクト1531Aに関する処理についてはステップS2223に進み、敵オブジェクト1531Bに関する処理についてはステップS3028に進む。
【0212】
ステップS2223において、プロセッサ210は、敵オブジェクト1531Aの移動速度として第1の移動速度を決定する。
【0213】
ステップS3028において、プロセッサ210は、敵オブジェクト1531Bが、ユーザ5Bの視界領域1515B内に存在するかを判断する。
【0214】
敵オブジェクト1531Bが、ユーザ5Bの視界領域1515B内に存在するときは(YES)、ステップS2223に進む。ステップS2223において、プロセッサ210は、敵オブジェクト1531Bの移動速度として第1の移動速度(例えば通常速度)を決定する。
【0215】
一方、敵オブジェクト1531Bがユーザ5Bの視界領域1515B内に存在しないときは(NO)、ステップS2224に進む。ステップS2224において、プロセッサ210は、敵オブジェクト1531Bの移動速度として、第1の移動速度より遅い第2の移動速度を決定する。すなわち、敵オブジェクト1531Bの移動速度を遅くする。
【0216】
(変形例2)
図31に、変形例2に係る移動速度を決定する処理の例のフローチャートを示す。
図30のフローチャートに対して、ステップS2223の前にステップS3129が追加されている。
【0217】
ステップS3028において、ユーザ5Bの視界領域1515B内に敵オブジェクト1531Bが存在すると判断された場合(S3028のYES)、敵オブジェクト1531Bが、ユーザ5Bのアバター1506Bの操作オブジェクトによる攻撃の射程範囲内に存在するか、すなわち、アバター1506Bの操作オブジェクトが敵オブジェクト1531Bに作用を生じさせられる状態か、を判断する(S3129)。例えば、ユーザ5Bのアバター1506Bが遠隔攻撃用の武器オブジェクトを装備している場合、敵オブジェクト1531Bは、ユーザ5Bの攻撃の射程範囲内に存在する、すなわち、アバター1506Bの操作オブジェクトが敵オブジェクト1531Bに作用を生じさせられる状態であると判断する。
【0218】
ここで遠隔攻撃用の武器オブジェクトは、敵オブジェクトへ向けて攻撃オブジェクト(第2オブジェクト)を出力させる(例えば飛ばす)オブジェクトであり、出力させたオブジェクトと敵オブジェクトとの位置関係に応じた作用が敵オブジェクトに及ぼす。例えば、武器オブジェクトが銃オブジェクトであれば、出力させる攻撃オブジェクトは、銃弾オブジェクトである。武器オブジェクトが弓オブジェクトであれば、出力させる攻撃オブジェクトは矢オブジェクトである。またアバターがエネルギー波を放出可能なキャラクタであれば、エネルギー波を放出可能な武器またはエネルギー波を放出する身体部位(例えば両手)が、武器オブジェクトに相当し、放出されるエネルギー波が、出力させる攻撃オブジェクトに相当する。
【0219】
また武器オブジェクトとして剣をユーザ5Bのアバター1506Bが保持している場合は、剣の攻撃可能範囲内に敵オブジェクト1531Bが存在すれば、敵オブジェクト1531Bは、ユーザ5Bの攻撃の射程範囲内に存在すると判断する。すなわち、アバター1506Bの操作オブジェクトが敵オブジェクト1531Bに作用を生じさせられる状態であると判断する。
【0220】
ユーザ5Bのアバター1506Bの射程範囲内に敵オブジェクト1531Bがいると判断した場合(YES)、敵オブジェクト1531Bの移動速度を遅くしない。すなわち、敵オブジェクト1531Bの移動速度として、第1の移動速度(通常速度)を決定する。
【0221】
一方、ユーザ5Bのアバター1506Bの射程範囲内に敵オブジェクト1531Bがいない場合は(S3129のNO)、敵オブジェクト1531Bの移動速度を遅くする。すなわち、敵オブジェクト1531Bの移動速度として、第1の移動速度より遅い第2の移動速度を決定する(S2224)。これは、ユーザ5Bのアバター1506Bの射程範囲内に敵オブジェクト1531Bがいない場合は、ユーザ5Bは、ユーザ5Aをサポート(例えば援護射撃)できないという考えに基づいている。
【0222】
(変形例3)
上述した実施形態および各変形例では、敵オブジェクトは、敵キャラクタであったが、敵キャラクタが遠隔攻撃可能である場合には、敵キャラクタがユーザ5に向けて出力する攻撃オブジェクトが、敵オブジェクトであってもよい。この場合、例えば、敵オブジェクト1531を、攻撃オブジェクトと読み変えることで、前述した実施形態および他の変形例が実施可能である。遠隔攻撃の種類には、前述同様、銃弾、矢、エネルギー波などがある。このようにすることで、ユーザが視界を変えた直後に、攻撃オブジェクトによる攻撃を受けたり、死角から攻撃オブジェクトによる攻撃を受けたりする現象を低減できる。
【0223】
上記実施形態においては、HMDによってユーザが没入する仮想空間(VR空間)を例示して説明したが、HMDとして、透過型のHMDを採用してもよい。この場合、透過型のHMDを介してユーザが視認する現実空間に仮想空間を構成する画像の一部を合成した視界画像を出力することにより、拡張現実(AR:Augmented Reality)空間または複合現実(MR:Mixed Reality)空間における仮想体験をユーザに提供してもよい。この場合、操作オブジェクトに代えて、ユーザの手の動きに基づいて、仮想空間内における対象オブジェクトへの作用を生じさせてもよい。具体的には、プロセッサは、現実空間におけるユーザの手の位置の座標情報を特定するとともに、仮想空間内における対象オブジェクトの位置を現実空間における座標情報との関係で定義してもよい。これにより、プロセッサは、現実空間におけるユーザの手と仮想空間における対象オブジェクトとの位置関係を把握し、ユーザの手と対象オブジェクトとの間で上述したコリジョン制御等に対応する処理を実行可能となる。その結果、ユーザの手の動きに基づいて対象オブジェクトに作用を与えることが可能となる。
【0224】
本発明は、上述した実施形態に限定されるものではなく、本発明の構成要素を種々に具体化できる。また、上記実施形態における各構成要素を適宜、拡張し、変更し、削除し、または組み合わせて、本発明を形成することも可能である。また、別の構成要素を新たに追加して、本発明を形成することも可能である。例えば第1の解決手段の実施形態と、第2の解決手段との実施形態を組み合わせてもよい。また変形例1~3を任意に組み合わせてもよい。ここで述べた以外の組み合わせも可能である。
【0225】
以下に、本願明細書に開示された主題を付記する。
【0226】
[項目1]
第1ユーザの第1仮想視点を含む仮想空間を規定するステップと、
前記仮想空間に第1オブジェクトを発生させるステップと、
前記第1ユーザの頭部の動きに応じて、前記第1仮想視点からの第1視界を制御するステップと、
前記第1オブジェクトが前記第1視界内に存在するか否かに応じて、前記第1オブジェクトの移動速度を決定するステップと、決定された前記移動速度で前記第1オブジェクトを前記第1仮想視点に向けて移動させるステップと、
をコンピュータに実行させるためのコンピュータプログラム。
第1ユーザの視界内外のいずれに第1オブジェクト(敵オブジェクト)が存在するかに応じて、第1オブジェクトの移動速度を変動させることで、第1ユーザに納得感のある仮想体験をさせることができる。
【0227】
[項目2]
前記移動速度を決定するステップにおいて、前記第1オブジェクトが前記第1視界内に存在するときは、前記第1オブジェクトの移動速度を第1移動速度とし、前記第1オブジェクトが前記第1視界内に存在しないときは、前記第1オブジェクトの移動速度を前記第1移動速度よりも遅い第2移動速度とする
項目1に記載のコンピュータプログラム。
第1ユーザの視界外にいる第1オブジェクト(敵オブジェクト)の移動速度を遅くすることで、ユーザが視界を変えた直後に突然目の前に敵オブジェクトが現れたり、視界外から攻撃を受けたりする現象を低減できる。
【0228】
[項目3]
前記移動速度を決定するステップにおいて、前記第1オブジェクトが前記第1視界内に存在しないときは、前記第1オブジェクトと前記第1仮想視点との距離が近くなるほど、前記第1オブジェクトの移動速度を遅くする
項目1または2に記載のコンピュータプログラム。
第1ユーザの視界外にいる第1オブジェクト(敵オブジェクト)の移動速度を、第1仮想視点に近づくほど遅くすることで、ユーザが視界を変えた直後に突然目の前に敵オブジェクトが現れたり、視界外から攻撃を受けたりする現象を低減できる。
【0229】
[項目4]
前記仮想空間は、第2ユーザの第2仮想視点をさらに含み、
前記第2ユーザの頭部の動きに応じて、前記第2仮想視点からの第2視界を制御するステップを、前記コンピュータにさらに実行させ、
前記移動速度を決定するステップにおいて、前記第1オブジェクトが、前記第1視界内に存在せず、かつ、前記第2視界内に存在するときは、前記第1オブジェクトと前記第1仮想視点との距離が近くなっても前記第1オブジェクトの移動速度を遅くしない
項目3に記載のコンピュータプログラム。
第2ユーザが、第1ユーザに代わって第1オブジェクトを対処してくれることが期待できるため、第1ユーザにとって第1オブジェクトの移動速度を遅くする必要性は低く、また、第2ユーザにとってはより自然なプレイを行うことができる。
【0230】
[項目5]
前記仮想空間は、第2操作オブジェクトをさらに含み、
前記第2ユーザの頭部以外の身体の部位の動きに応じて、前記第2操作オブジェクトの動きを制御するステップと、
前記第2操作オブジェクトが前記第1オブジェクトに作用を生じさせられる状態であるか否かを判定するステップと、を、前記コンピュータにさらに実行させ、
前記移動速度を決定するステップにおいて、前記第2操作オブジェクトが前記第1オブジェクトに作用を生じさせられる状態である場合には、前記第1オブジェクトと前記第1仮想視点との距離が近くなっても前記第1オブジェクトの移動速度を遅くしない
項目4に記載のコンピュータプログラム。
第2ユーザが、第1ユーザに代わって第1オブジェクトを対処してくれることが期待できるため、第1ユーザにとって第1オブジェクトの移動速度を遅くする必要性は低く、また、第2ユーザにとっては違和感のないゲームをプレイすることができる。
【0231】
[項目6]
前記第1オブジェクトを発生させるステップにおいて、前記第1オブジェクトを前記第1視界内で発生させる
項目1ないし5に記載のコンピュータプログラム。
ユーザの視界内でのみ第1オブジェクト(敵オブジェクト)を発生させることで、ユーザが視界を変えた直後に突然目の前に敵オブジェクトが現れたり、視界外から攻撃を受けたりする現象を低減できる。
【0232】
[項目7]
前記仮想空間は、第1操作オブジェクトをさらに含み、
前記第1ユーザの頭部以外の身体の部位の動きに応じて、前記第1操作オブジェクトの動きを制御するステップと、
前記第1操作オブジェクトの動きに基づいて、前記第1オブジェクトに作用を及ぼすステップと、
をさらに前記コンピュータに実行させる、項目1ないし6に記載のコンピュータプログラム。
第1ユーザは、操作オブジェクトをあたかもユーザ自身の身体の一部であるかのように仮想空間内で動かすことができる。
【0233】
[項目8]
プロセッサを備えた情報処理装置であって、
第1ユーザの第1仮想視点を含む仮想空間を規定するステップと、
前記仮想空間に第1オブジェクトを発生させるステップと、
前記第1ユーザの頭部の動きに応じて、前記第1仮想視点からの第1視界を制御するステップと、
前記第1オブジェクトが前記第1視界内に存在するか否かに応じて、前記第1オブジェクトの移動速度を決定するステップと、決定された前記移動速度で前記第1オブジェクトを前記第1仮想視点に向けて移動させるステップと、
が前記プロセッサの制御により実行される情報処理装置。
【0234】
[項目9]
第1ユーザの第1仮想視点を含む仮想空間を規定するステップと、
前記仮想空間に第1オブジェクトを発生させるステップと、
前記第1ユーザの頭部の動きに応じて、前記第1仮想視点からの第1視界を制御するステップと、
前記第1オブジェクトが前記第1視界内に存在するか否かに応じて、前記第1オブジェクトの移動速度を決定するステップと、決定された前記移動速度で前記第1オブジェクトを前記第1仮想視点に向けて移動させるステップと、
を備えた情報処理方法。
【符号の説明】
【0235】
2:ネットワーク
11:仮想空間
13:パノラマ画像
14:仮想カメラ
15:視界領域
17:視界画像
100:HMDシステム
110:HMDセット
120:HMD
130:モニタ
140:注視センサ
150:第1カメラ
160:第2カメラ
170:マイク
180:スピーカ
200:コンピュータ
210:プロセッサ
220:メモリ
230:ストレージ
240:入出力インターフェイス
250:通信インターフェイス
300:コントローラ
310:グリップ
320:フレーム
330:天面
340、350、370、380:ボタン
360:赤外線LED
390:アナログスティック
410:HMDセンサ
420:モーションセンサ
430:ディスプレイ
510:コントロールモジュール
520:レンダリングモジュール
530:メモリモジュール
540:通信制御モジュール
600:サーバ
700:外部機器
1421:仮想カメラ制御モジュール
1422:視界領域決定モジュール
1423:仮想空間定義モジュール
1424:仮想オブジェクト生成モジュール
1425:操作オブジェクト制御モジュール
1426:コリジョン検出モジュール
1428:空間情報
1429:オブジェクト情報
1430:ユーザ情報
1506:アバターオブジェクト(アバター)
1514:仮想視点(仮想カメラ)
1511:仮想空間
1515:視界領域
1531:敵オブジェクト
1532:操作オブジェクト
1533:武器オブジェクト