(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-12-09
(45)【発行日】2024-12-17
(54)【発明の名称】プログラムおよび情報処理システム
(51)【国際特許分類】
G06T 19/00 20110101AFI20241210BHJP
A63F 13/55 20140101ALI20241210BHJP
【FI】
G06T19/00 300B
A63F13/55
(21)【出願番号】P 2023093032
(22)【出願日】2023-06-06
【審査請求日】2024-04-08
【早期審査対象出願】
(73)【特許権者】
【識別番号】509070463
【氏名又は名称】株式会社コロプラ
(74)【代理人】
【識別番号】100104547
【氏名又は名称】栗林 三男
(74)【代理人】
【識別番号】100206612
【氏名又は名称】新田 修博
(74)【代理人】
【識別番号】100209749
【氏名又は名称】栗林 和輝
(74)【代理人】
【識別番号】100217755
【氏名又は名称】三浦 淳史
(72)【発明者】
【氏名】梶山 万悠子
【審査官】橘 高志
(56)【参考文献】
【文献】特開2020-144901(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 19/00
A63F 13/55
(57)【特許請求の範囲】
【請求項1】
コンピュータを、
第1キャラクタを操作する第1ユーザに提供される
仮想空間において第2ユーザの操作に基づいて動く第2キャラクタについて、前記第2ユーザが前記第2キャラクタに実行させ
る動き
の、前記第1ユーザに提供される
仮想空間における前記第2キャラクタ
への反映を前記第1キャラクタと前記第2キャラクタとの距離に応じて制御する制御手段として機能させ
、
前記制御手段は、前記第1キャラクタから所定距離内における前記第2キャラクタの所定の動きが、前記第1ユーザに提供される仮想空間における前記第2キャラクタに反映されないように制御する
プログラム。
【請求項2】
前記制御手段は、前記第1ユーザに提供される
仮想空間において前記所定の動きを反映させないキャラクタを、前記第1ユーザの操作に基づいて決定する
請求項1に記載のプログラム。
【請求項3】
前記制御手段は、前記所定
距離をユーザ毎に異なる大きさに設定可能な
請求項
1に記載のプログラム。
【請求項4】
前記第2ユーザが前記第2キャラクタに実行させ得る動きには、第1の動きと第2の動きとが含まれ、
前記制御手段は、
前記第1キャラクタと前記第2キャラクタとの距離が第1の距離の場合には、前記第2キャラクタの前記第1の動きについては、前記第1ユーザに提供される
仮想空間における前記第2キャラクタに反映させつつ、前記第2キャラクタの前記第2の動きについては、前記第1ユーザに提供される
仮想空間における前記第2キャラクタに反映させないように制御し、
前記第1キャラクタと前記第2キャラクタとの距離が第2の距離の場合には、前記第2キャラクタの前記第1の動きについて、前記第1ユーザに提供される
仮想空間における前記第2キャラクタに反映させないように制御する
請求項1に記載のプログラム。
【請求項5】
前記制御手段は、他のユーザの操作する所定のキャラクタが特定の動きをしたことに基づいて、当該所定のキャラクタを、前記第1ユーザに提供される
仮想空間において前記所定の動きが反映されないキャラクタに設定
し、前記特定の動きをした後の前記所定の動きが前記第1ユーザに提供される仮想空間における当該所定のキャラクタに反映されないように制御する
請求項1に記載のプログラム。
【請求項6】
第1キャラクタを操作する第1ユーザに提供される
仮想空間において第2ユーザの操作に基づいて動く第2キャラクタについて、前記第2ユーザが前記第2キャラクタに実行させ
る動き
の、前記第1ユーザに提供される
仮想空間における前記第2キャラクタ
への反映を前記第1キャラクタと前記第2キャラクタとの距離に応じて制御する制御手段を備え
、
前記制御手段は、前記第1キャラクタから所定距離内における前記第2キャラクタの所定の動きが、前記第1ユーザに提供される仮想空間における前記第2キャラクタに反映されないように制御する
情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラムおよび情報処理システムに関する。
【背景技術】
【0002】
従来より、仮想空間内で他のユーザと交流が可能なサービス(例えば、ゲーム等)が知られている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、このようなサービスにおいては、快適に利用できる仮想空間をユーザに提供することが求められている。
【0005】
本発明は、快適に利用できる仮想空間を提供することを目的とする。
【課題を解決するための手段】
【0006】
本開示に示す一実施形態によれば、
コンピュータを、
第1キャラクタを操作する第1ユーザに提供される表示において第2ユーザの操作に基づいて動く第2キャラクタについて、前記第2ユーザが前記第2キャラクタに実行させる所定の動きが、前記第1ユーザに提供される表示における前記第2キャラクタに反映されないように制御する制御手段として機能させる
プログラムが提供される。
【発明の効果】
【0007】
本発明によれば、快適に利用できる仮想空間をユーザに提供することができる。
【図面の簡単な説明】
【0008】
【
図1】ある実施の形態に従うHMDシステムの構成の概略を表す図である。
【
図2】ある実施の形態に従うコンピュータのハードウェア構成の一例を表すブロック図である。
【
図3】ある実施の形態に従うHMDに設定されるuvw視野座標系を概念的に表す図である。
【
図4】ある実施の形態に従う仮想空間を表現する一態様を概念的に表す図である。
【
図5】ある実施の形態に従うHMDを装着するユーザの頭部を上から表した図である。
【
図6】仮想空間において視界領域をX方向から見たYZ断面を表す図である。
【
図7】仮想空間において視界領域をY方向から見たXZ断面を表す図である。
【
図8A】ある実施の形態に従うコントローラの概略構成を表す図である。
【
図8B】ある実施の形態に従うユーザの右手に対して規定されるヨー、ロール、ピッチの各方向の一例を示す図である。
【
図9】ある実施の形態に従うサーバのハードウェア構成の一例を表すブロック図である。
【
図10】ある実施の形態に従うコンピュータをモジュール構成として表すブロック図である。
【
図11】ある実施の形態に従うHMDセットにおいて実行される処理を示すシーケンスチャートである。
【
図12A】ネットワークにおいて、各HMDがユーザに仮想空間を提供する状況を表す模式図である。
【
図13】ある実施の形態に従うHMDシステムにおいて実行される処理を示すシーケンスチャートである。
【
図14】ある実施の形態に従うコンピュータのモジュールの詳細構成を表すブロック図である。
【
図15】ある実施の形態に従うサーバをモジュール構成として表すブロック図である。
【
図16】ある実施の形態に従う他のユーザに対して反映されないアバターオブジェクトの動きについて説明するための図である。
【
図17】ある実施の形態に従うHMDシステムにおいて実行されるアバターオブジェクトの動きの反映を制限する処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下、この技術的思想の実施の形態について図面を参照しながら詳細に説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。本開示において示される1以上の実施形態において、各実施形態が含む要素を互いに組み合わせることができ、かつ、当該組み合わせられた結果物も本開示が示す実施形態の一部をなすものとする。
【0010】
[HMDシステムの構成]
図1を参照して、HMD(Head-Mounted Device)システム100の構成について説明する。
図1は、本実施の形態に従うHMDシステム100の構成の概略を表す図である。HMDシステム100は、家庭用のシステムとしてあるいは業務用のシステムとして提供される。HMDシステム100は、ユーザに所定のサービスを提供する。
【0011】
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を含み得る。
【0012】
ある局面において、コンピュータ200は、インターネットその他のネットワーク2に接続可能であり、ネットワーク2に接続されているサーバ600その他のコンピュータと通信可能である。その他のコンピュータとしては、例えば、他のHMDセット110のコンピュータや外部機器700が挙げられる。別の局面において、HMD120は、HMDセンサ410の代わりに、センサ190を含み得る。
【0013】
HMD120は、ユーザ5の頭部に装着され、動作中に仮想空間をユーザ5に提供し得る。より具体的には、HMD120は、右目用の画像および左目用の画像をモニタ130にそれぞれ表示する。ユーザ5の各目がそれぞれの画像を視認すると、ユーザ5は、両目の視差に基づき当該画像を3次元画像として認識し得る。HMD120は、モニタを備える所謂ヘッドマウントディスプレイと、スマートフォンその他のモニタを有する端末を装着可能なヘッドマウント機器のいずれをも含み得る。
【0014】
モニタ130は、例えば、非透過型の表示装置として実現される。ある局面において、モニタ130は、ユーザ5の両目の前方に位置するようにHMD120の本体に配置されている。したがって、ユーザ5は、モニタ130に表示される3次元画像を視認すると、仮想空間に没入することができる。ある局面において、仮想空間は、例えば、背景、ユーザ5が操作可能なオブジェクト、ユーザ5が選択可能なメニューの画像を含む。ある局面において、モニタ130は、所謂スマートフォンその他の情報表示端末が備える液晶モニタまたは有機EL(Electro Luminescence)モニタとして実現され得る。
【0015】
別の局面において、モニタ130は、透過型の表示装置として実現され得る。透過型のモニタ130としては、例えば、メガネ型のものやコンタクトレンズ型のものがある。HMD120は、
図1に示されるようにユーザ5の目を覆う密閉型ではなく、ユーザ5の目を覆わない開放型のものであってもよい。透過型のモニタ130は、その透過率を調整することにより、一時的に非透過型の表示装置として構成可能であってもよい。モニタ130は、仮想空間を構成する画像の一部と、現実空間とを同時に表示する構成を含んでいてもよい。例えば、モニタ130は、HMD120に搭載されたカメラで撮影した現実空間の画像を表示してもよいし、一部の透過率を高く設定することにより現実空間を視認可能にしてもよい。
【0016】
ある局面において、モニタ130は、右目用の画像を表示するためのサブモニタと、左目用の画像を表示するためのサブモニタとを含み得る。別の局面において、モニタ130は、右目用の画像と左目用の画像とを一体として表示する構成であってもよい。この場合、モニタ130は、高速シャッタを含む。高速シャッタは、画像がいずれか一方の目にのみ認識されるように、右目用の画像と左目用の画像とを交互に表示可能に作動する。
【0017】
ある局面において、HMD120は、図示せぬ複数の光源を含む。各光源は例えば、赤外線を発するLED(Light Emitting Diode)により実現される。HMDセンサ410は、HMD120の動きを検出するためのポジショントラッキング機能を有する。より具体的には、HMDセンサ410は、HMD120が発する複数の赤外線を読み取り、現実空間内におけるHMD120の位置および傾きを検出する。
【0018】
別の局面において、HMDセンサ410は、カメラにより実現されてもよい。この場合、HMDセンサ410は、カメラから出力されるHMD120の画像情報を用いて、画像解析処理を実行することにより、HMD120の位置および傾きを検出することができる。
【0019】
別の局面において、HMD120は、位置検出器として、HMDセンサ410の代わりに、あるいはHMDセンサ410に加えてセンサ190を備えてもよい。HMD120は、センサ190を用いて、HMD120自身の位置および傾きを検出し得る。例えば、センサ190が角速度センサ、地磁気センサ、あるいは加速度センサである場合、HMD120は、HMDセンサ410の代わりに、これらの各センサのいずれかを用いて、自身の位置および傾きを検出し得る。一例として、センサ190が角速度センサである場合、角速度センサは、現実空間におけるHMD120の3軸周りの角速度を経時的に検出する。HMD120は、各角速度に基づいて、HMD120の3軸周りの角度の時間的変化を算出し、さらに、角度の時間的変化に基づいて、HMD120の傾きを算出する。
【0020】
注視センサ140は、ユーザ5の右目および左目の視線が向けられる方向を検出する。つまり、注視センサ140は、ユーザ5の視線を検出する。視線の方向の検出は、例えば、公知のアイトラッキング機能によって実現される。注視センサ140は、当該アイトラッキング機能を有するセンサにより実現される。ある局面において、注視センサ140は、右目用のセンサおよび左目用のセンサを含むことが好ましい。注視センサ140は、例えば、ユーザ5の右目および左目に赤外光を照射するとともに、照射光に対する角膜および虹彩からの反射光を受けることにより各眼球の回転角を検出するセンサであってもよい。注視センサ140は、検出した各回転角に基づいて、ユーザ5の視線を検知することができる。
【0021】
第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の顔を撮影するようにしてもよい。
【0022】
マイク170は、ユーザ5の発話を音声信号(電気信号)に変換してコンピュータ200に出力する。スピーカ180は、音声信号を音声に変換してユーザ5に出力する。別の局面において、HMD120は、スピーカ180に替えてイヤホンを含み得る。
【0023】
コントローラ300は、有線または無線によりコンピュータ200に接続されている。コントローラ300は、ユーザ5からコンピュータ200への命令の入力を受け付ける。ある局面において、コントローラ300は、ユーザ5によって把持可能に構成される。別の局面において、コントローラ300は、ユーザ5の身体あるいは衣類の一部に装着可能に構成される。さらに別の局面において、コントローラ300は、コンピュータ200から送信される信号に基づいて、振動、音、光のうちの少なくともいずれかを出力するように構成されてもよい。さらに別の局面において、コントローラ300は、ユーザ5から、仮想空間に配置されるオブジェクトの位置や動きを制御するための操作を受け付ける。
【0024】
ある局面において、コントローラ300は、複数の光源を含む。各光源は例えば、赤外線を発するLEDにより実現される。HMDセンサ410は、ポジショントラッキング機能を有する。この場合、HMDセンサ410は、コントローラ300が発する複数の赤外線を読み取り、現実空間内におけるコントローラ300の位置および傾きを検出する。別の局面において、HMDセンサ410は、カメラにより実現されてもよい。この場合、HMDセンサ410は、カメラから出力されるコントローラ300の画像情報を用いて、画像解析処理を実行することにより、コントローラ300の位置および傾きを検出することができる。
【0025】
モーションセンサ420は、ある局面において、ユーザ5の手に取り付けられて、ユーザ5の手の動きを検出する。ユーザ5の手に取り付けられるとは、例えば、モーションセンサ420が、ユーザ5に把持可能に構成されたコントローラ300に設けられる。把持型のコントローラ300の一例については、
図8を用いて後述する。また、モーションセンサ420は、ユーザ5が装着可能に構成された手袋型のデバイス(換言すると、手袋型のコントローラ300)に設けられてもよい。手袋型のコントローラ300の場合、把持型のコントローラ300に比べ、容易に飛んで行かないため、現実空間における安全を確保できる。モーションセンサ420は、例えば、手の回転速度、回転数、指の動き等を検出する。検出された信号は、コンピュータ200に送られる。なお、手袋型のコントローラ300は、把持型のコントローラ300に比べ、より多くの数の指(例えば全ての指)の動きを検出可能に構成されていてもよい。
別の局面において、ユーザ5に装着されないセンサがユーザ5の手の動きを検出してもよい。例えば、ユーザ5を撮影するカメラの信号が、ユーザ5の動作を表す信号として、コンピュータ200に入力されてもよい。モーションセンサ420とコンピュータ200とは、一例として、無線により互いに接続される。無線の場合、通信形態は特に限られず、例えば、Bluetooth(登録商標)その他の公知の通信手法が用いられる。
【0026】
ディスプレイ430は、モニタ130に表示されている画像と同様の画像を表示する。これにより、HMD120を装着しているユーザ5以外のユーザにも当該ユーザ5と同様の画像を視聴させることができる。ディスプレイ430に表示される画像は、3次元画像である必要はなく、右目用の画像や左目用の画像であってもよい。ディスプレイ430としては、例えば、液晶ディスプレイや有機ELモニタなどが挙げられる。
【0027】
サーバ600は、コンピュータ200にプログラムを送信し得る。別の局面において、サーバ600は、他のユーザによって使用されるHMD120に仮想現実を提供するための他のコンピュータ200と通信し得る。例えば、アミューズメント施設において、複数のユーザが参加型のゲームを行う場合、各コンピュータ200は、各ユーザの動作に基づく信号をサーバ600を介して他のコンピュータ200と通信して、同じ仮想空間において複数のユーザが共通のゲームを楽しむことを可能にする。各コンピュータ200は、各ユーザの動作に基づく信号をサーバ600を介さずに他のコンピュータ200と通信するようにしてもよい。
【0028】
外部機器700は、コンピュータ200と通信可能な機器であればどのような機器であってもよい。外部機器700は、例えば、ネットワーク2を介してコンピュータ200と通信可能な機器であってもよいし、近距離無線通信や有線接続によりコンピュータ200と直接通信可能な機器であってもよい。また、外部機器700は、例えば、ネットワーク2を介してサーバ600と通信可能な機器であってもよい。外部機器700としては、例えば、スマートデバイス、PC(Personal Computer)、およびコンピュータ200の周辺機器などが挙げられるが、これらに限定されるものではない。
【0029】
[コンピュータのハードウェア構成]
図2を参照して、本実施の形態に係るコンピュータ200について説明する。
図2は、本実施の形態に従うコンピュータ200のハードウェア構成の一例を表すブロック図である。コンピュータ200は、主たる構成要素として、プロセッサ210と、メモリ220と、ストレージ230と、入出力インターフェイス240と、通信インターフェイス250とを備える。各構成要素は、それぞれ、バス260に接続されている。
【0030】
プロセッサ210は、コンピュータ200に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ220またはストレージ230に格納されているプログラムに含まれる一連の命令を実行する。ある局面において、プロセッサ210は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、MPU(Micro Processor Unit)、FPGA(Field-Programmable Gate Array)その他のデバイスとして実現される。
【0031】
メモリ220は、プログラムおよびデータを一時的に保存する。プログラムは、例えば、ストレージ230からロードされる。データは、コンピュータ200に入力されたデータと、プロセッサ210によって生成されたデータとを含む。ある局面において、メモリ220は、RAM(Random Access Memory)その他の揮発メモリとして実現される。
【0032】
ストレージ230は、プログラムおよびデータを永続的に保持する。ストレージ230は、例えば、ROM(Read-Only Memory)、ハードディスク装置、フラッシュメモリ、その他の不揮発記憶装置として実現される。ストレージ230に格納されるプログラムは、HMDシステム100において仮想空間を提供するためのプログラム、シミュレーションプログラム、ゲームプログラム、ユーザ認証プログラム、他のコンピュータ200との通信を実現するためのプログラムを含む。ストレージ230に格納されるデータは、仮想空間を規定するためのデータおよびオブジェクト等を含む。
【0033】
別の局面において、ストレージ230は、メモリカードのように着脱可能な記憶装置として実現されてもよい。さらに別の局面において、コンピュータ200に内蔵されたストレージ230の代わりに、外部の記憶装置に保存されているプログラムおよびデータを使用する構成が使用されてもよい。このような構成によれば、例えば、アミューズメント施設のように複数のHMDシステム100が使用される場面において、プログラムやデータの更新を一括して行うことが可能になる。
【0034】
入出力インターフェイス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は上述のものに限られない。
【0035】
ある局面において、入出力インターフェイス240は、さらに、コントローラ300と通信し得る。例えば、入出力インターフェイス240は、コントローラ300およびモーションセンサ420から出力された信号の入力を受ける。別の局面において、入出力インターフェイス240は、プロセッサ210から出力された命令を、コントローラ300に送る。当該命令は、振動、音声出力、発光等をコントローラ300に指示する。コントローラ300は、当該命令を受信すると、その命令に応じて、振動、音声出力または発光のいずれかを実行する。
【0036】
通信インターフェイス250は、ネットワーク2に接続されて、ネットワーク2に接続されている他のコンピュータ(例えば、サーバ600)と通信する。ある局面において、通信インターフェイス250は、例えば、LAN(Local Area Network)その他の有線通信インターフェイス、あるいは、Wi-Fi(登録商標)、Bluetooth(登録商標)、NFC(Near Field Communication)その他の無線通信インターフェイスとして実現される。通信インターフェイス250は上述のものに限られない。
【0037】
ある局面において、プロセッサ210は、ストレージ230にアクセスし、ストレージ230に格納されている1つ以上のプログラムをメモリ220にロードし、当該プログラムに含まれる一連の命令を実行する。当該1つ以上のプログラムは、コンピュータ200のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、仮想空間で実行可能なゲームソフトウェア等を含み得る。プロセッサ210は、入出力インターフェイス240を介して、仮想空間を提供するための信号をHMD120に送る。HMD120は、その信号に基づいてモニタ130に映像を表示する。
【0038】
図2に示される例では、コンピュータ200は、HMD120の外部に設けられる構成が示されているが、別の局面において、コンピュータ200は、HMD120に内蔵されてもよい。一例として、モニタ130を含む携帯型の情報通信端末(例えば、スマートフォン)がコンピュータ200として機能してもよい。
【0039】
コンピュータ200は、複数のHMD120に共通して用いられる構成であってもよい。このような構成によれば、例えば、複数のユーザに同一の仮想空間を提供することもできるので、各ユーザは同一の仮想空間で他のユーザと同一のアプリケーションを楽しむことができる。
【0040】
ある実施の形態において、HMDシステム100では、現実空間における座標系である実座標系が予め設定されている。実座標系は、現実空間における鉛直方向、鉛直方向に直交する水平方向、並びに、鉛直方向および水平方向の双方に直交する前後方向にそれぞれ平行な、3つの基準方向(軸)を有する。実座標系における水平方向、鉛直方向(上下方向)、および前後方向は、それぞれ、x軸、y軸、z軸と規定される。より具体的には、実座標系において、x軸は現実空間の水平方向に平行である。y軸は、現実空間の鉛直方向に平行である。z軸は現実空間の前後方向に平行である。
【0041】
ある局面において、HMDセンサ410は、赤外線センサを含む。赤外線センサが、HMD120の各光源から発せられた赤外線をそれぞれ検出すると、HMD120の存在を検出する。HMDセンサ410は、さらに、各点の値(実座標系における各座標値)に基づいて、HMD120を装着したユーザ5の動きに応じた、現実空間内におけるHMD120の位置および傾き(向き)を検出する。より詳しくは、HMDセンサ410は、経時的に検出された各値を用いて、HMD120の位置および傾きの時間的変化を検出できる。
【0042】
HMDセンサ410によって検出されたHMD120の各傾きは、実座標系におけるHMD120の3軸周りの各傾きに相当する。HMDセンサ410は、実座標系におけるHMD120の傾きに基づき、uvw視野座標系をHMD120に設定する。HMD120に設定されるuvw視野座標系は、HMD120を装着したユーザ5が仮想空間において物体を見る際の視点座標系に対応する。
【0043】
[uvw視野座標系]
図3を参照して、uvw視野座標系について説明する。
図3は、ある実施の形態に従うHMD120に設定されるuvw視野座標系を概念的に表す図である。HMDセンサ410は、HMD120の起動時に、実座標系におけるHMD120の位置および傾きを検出する。プロセッサ210は、検出された値に基づいて、uvw視野座標系をHMD120に設定する。
【0044】
図3に示されるように、HMD120は、HMD120を装着したユーザ5の頭部を中心(原点)とした3次元のuvw視野座標系を設定する。より具体的には、HMD120は、実座標系を規定する水平方向、鉛直方向、および前後方向(x軸、y軸、z軸)を、実座標系内においてHMD120の各軸周りの傾きだけ各軸周りにそれぞれ傾けることによって新たに得られる3つの方向を、HMD120におけるuvw視野座標系のピッチ軸(u軸)、ヨー軸(v軸)、およびロール軸(w軸)として設定する。
【0045】
ある局面において、HMD120を装着したユーザ5が直立し、かつ、正面を視認している場合、プロセッサ210は、実座標系に平行なuvw視野座標系をHMD120に設定する。この場合、実座標系における水平方向(x軸)、鉛直方向(y軸)、および前後方向(z軸)は、HMD120におけるuvw視野座標系のピッチ軸(u軸)、ヨー軸(v軸)、およびロール軸(w軸)に一致する。
【0046】
uvw視野座標系がHMD120に設定された後、HMDセンサ410は、HMD120の動きに基づいて、設定されたuvw視野座標系におけるHMD120の傾きを検出できる。この場合、HMDセンサ410は、HMD120の傾きとして、uvw視野座標系におけるHMD120のピッチ角(θu)、ヨー角(θv)、およびロール角(θw)をそれぞれ検出する。ピッチ角(θu)は、uvw視野座標系におけるピッチ軸周りのHMD120の傾き角度を表す。ヨー角(θv)は、uvw視野座標系におけるヨー軸周りのHMD120の傾き角度を表す。ロール角(θw)は、uvw視野座標系におけるロール軸周りのHMD120の傾き角度を表す。
【0047】
HMDセンサ410は、検出されたHMD120の傾きに基づいて、HMD120が動いた後のHMD120におけるuvw視野座標系を、HMD120に設定する。HMD120と、HMD120のuvw視野座標系との関係は、HMD120の位置および傾きに関わらず、常に一定である。HMD120の位置および傾きが変わると、当該位置および傾きの変化に連動して、実座標系におけるHMD120のuvw視野座標系の位置および傾きが変化する。
【0048】
ある局面において、HMDセンサ410は、赤外線センサからの出力に基づいて取得される赤外線の光強度および複数の点間の相対的な位置関係(例えば、各点間の距離など)に基づいて、HMD120の現実空間内における位置を、HMDセンサ410に対する相対位置として特定してもよい。プロセッサ210は、特定された相対位置に基づいて、現実空間内(実座標系)におけるHMD120のuvw視野座標系の原点を決定してもよい。
【0049】
[仮想空間]
図4を参照して、仮想空間についてさらに説明する。
図4は、ある実施の形態に従う仮想空間11を表現する一態様を概念的に表す図である。仮想空間11は、中心12の360度方向の全体を覆う全天球状の構造を有する。
図4では、説明を複雑にしないために、仮想空間11のうちの上半分の天球が例示されている。仮想空間11では各メッシュが規定される。各メッシュの位置は、仮想空間11に規定されるグローバル座標系であるXYZ座標系における座標値として予め規定されている。コンピュータ200は、仮想空間11に展開可能なパノラマ画像13(静止画、動画等)を構成する各部分画像を、仮想空間11において対応する各メッシュにそれぞれ対応付ける。
【0050】
ある局面において、仮想空間11では、中心12を原点とするXYZ座標系が規定される。XYZ座標系は、例えば、実座標系に平行である。XYZ座標系における水平方向、鉛直方向(上下方向)、および前後方向は、それぞれX軸、Y軸、Z軸として規定される。したがって、XYZ座標系のX軸(水平方向)が実座標系のx軸と平行であり、XYZ座標系のY軸(鉛直方向)が実座標系のy軸と平行であり、XYZ座標系のZ軸(前後方向)が実座標系のz軸と平行である。
【0051】
HMD120の起動時、すなわちHMD120の初期状態において、仮想カメラ14が、仮想空間11の中心12に配置される。ある局面において、プロセッサ210は、仮想カメラ14が撮影する画像をHMD120のモニタ130に表示する。仮想カメラ14は、現実空間におけるHMD120の動きに連動して、仮想空間11を同様に移動する。これにより、現実空間におけるHMD120の位置および傾きの変化が、仮想空間11において同様に再現され得る。
【0052】
仮想カメラ14には、HMD120の場合と同様に、uvw視野座標系が規定される。仮想空間11における仮想カメラ14のuvw視野座標系は、現実空間(実座標系)におけるHMD120のuvw視野座標系に連動するように規定されている。したがって、HMD120の傾きが変化すると、それに応じて、仮想カメラ14の傾きも変化する。仮想カメラ14は、HMD120を装着したユーザ5の現実空間における移動に連動して、仮想空間11において移動することもできる。
【0053】
コンピュータ200のプロセッサ210は、仮想カメラ14の位置と傾き(基準視線16)とに基づいて、仮想空間11における視界領域15を規定する。視界領域15は、仮想空間11のうち、HMD120を装着したユーザ5が視認する領域に対応する。つまり、仮想カメラ14の位置は、仮想空間11におけるユーザ5の視点と言える。
【0054】
注視センサ140によって検出されるユーザ5の視線は、ユーザ5が物体を視認する際の視点座標系における方向である。HMD120のuvw視野座標系は、ユーザ5がモニタ130を視認する際の視点座標系に等しい。仮想カメラ14のuvw視野座標系は、HMD120のuvw視野座標系に連動している。したがって、ある局面に従うHMDシステム100は、注視センサ140によって検出されたユーザ5の視線を、仮想カメラ14のuvw視野座標系におけるユーザ5の視線とみなすことができる。
【0055】
[ユーザの視線]
図5を参照して、ユーザ5の視線の決定について説明する。
図5は、ある実施の形態に従うHMD120を装着するユーザ5の頭部を上から表した図である。
【0056】
ある局面において、注視センサ140は、ユーザ5の右目および左目の各視線を検出する。ある局面において、ユーザ5が近くを見ている場合、注視センサ140は、視線R1およびL1を検出する。別の局面において、ユーザ5が遠くを見ている場合、注視センサ140は、視線R2およびL2を検出する。この場合、ロール軸wに対して視線R2およびL2が成す角度は、ロール軸wに対して視線R1およびL1が成す角度よりも小さい。注視センサ140は、検出結果をコンピュータ200に送信する。
【0057】
コンピュータ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が実際に視線を向けている方向に相当する。
【0058】
別の局面において、HMDシステム100は、テレビジョン放送受信チューナを備えてもよい。このような構成によれば、HMDシステム100は、仮想空間11においてテレビ番組を表示することができる。
【0059】
さらに別の局面において、HMDシステム100は、インターネットに接続するための通信回路、あるいは、電話回線に接続するための通話機能を備えていてもよい。
【0060】
[視界領域]
図6および
図7を参照して、視界領域15について説明する。
図6は、仮想空間11において視界領域15をX方向から見たYZ断面を表す図である。
図7は、仮想空間11において視界領域15をY方向から見たXZ断面を表す図である。
【0061】
図6に示されるように、YZ断面における視界領域15は、領域18を含む。領域18は、仮想カメラ14の位置と基準視線16と仮想空間11のYZ断面とによって定義される。プロセッサ210は、仮想空間における基準視線16を中心として極角αを含む範囲を、領域18として規定する。
【0062】
図7に示されるように、XZ断面における視界領域15は、領域19を含む。領域19は、仮想カメラ14の位置と基準視線16と仮想空間11のXZ断面とによって定義される。プロセッサ210は、仮想空間11における基準視線16を中心とした方位角βを含む範囲を、領域19として規定する。極角αおよびβは、仮想カメラ14の位置と仮想カメラ14の傾き(向き)とに応じて定まる。
【0063】
ある局面において、HMDシステム100は、コンピュータ200からの信号に基づいて、視界画像17をモニタ130に表示させることにより、ユーザ5に仮想空間11における視界を提供する。視界画像17は、パノラマ画像13のうち視界領域15に対応する部分に相当する画像である。ユーザ5が、頭に装着したHMD120を動かすと、その動きに連動して仮想カメラ14も動く。その結果、仮想空間11における視界領域15の位置が変化する。これにより、モニタ130に表示される視界画像17は、パノラマ画像13のうち、仮想空間11においてユーザ5が向いた方向の視界領域15に重畳する画像に更新される。ユーザ5は、仮想空間11における所望の方向を視認することができる。
【0064】
このように、仮想カメラ14の傾きは仮想空間11におけるユーザ5の視線(基準視線16)に相当し、仮想カメラ14が配置される位置は、仮想空間11におけるユーザ5の視点に相当する。したがって、仮想カメラ14の位置または傾きを変更することにより、モニタ130に表示される画像が更新され、ユーザ5の視界が移動される。
【0065】
ユーザ5は、HMD120を装着している間、現実世界を視認することなく、仮想空間11に展開されるパノラマ画像13のみを視認できる。そのため、HMDシステム100は、仮想空間11への高い没入感覚をユーザ5に与えることができる。
【0066】
ある局面において、プロセッサ210は、HMD120を装着したユーザ5の現実空間における移動に連動して、仮想空間11において仮想カメラ14を移動し得る。この場合、プロセッサ210は、仮想空間11における仮想カメラ14の位置および傾きに基づいて、HMD120のモニタ130に投影される画像領域(視界領域15)を特定する。
【0067】
ある局面において、仮想カメラ14は、2つの仮想カメラ、すなわち、右目用の画像を提供するための仮想カメラと、左目用の画像を提供するための仮想カメラとを含み得る。ユーザ5が3次元の仮想空間11を認識できるように、適切な視差が、2つの仮想カメラに設定される。別の局面において、仮想カメラ14を1つの仮想カメラにより実現してもよい。この場合、1つの仮想カメラにより得られた画像から、右目用の画像と左目用の画像とを生成するようにしてもよい。本実施の形態においては、仮想カメラ14が2つの仮想カメラを含み、2つの仮想カメラのロール軸が合成されることによって生成されるロール軸(w)がHMD120のロール軸(w)に適合されるように構成されているものとして、本開示に係る技術思想を例示する。
【0068】
[コントローラ]
図8を参照して、コントローラ300の一例について説明する。
図8は、ある実施の形態に従うコントローラ300の概略構成を表す図である。
【0069】
図8に示されるように、ある局面において、コントローラ300は、右コントローラ300Rと図示せぬ左コントローラとを含み得る。右コントローラ300Rは、ユーザ5の右手で操作される。左コントローラは、ユーザ5の左手で操作される。ある局面において、右コントローラ300Rと左コントローラとは、別個の装置として対称に構成される。したがって、ユーザ5は、右コントローラ300Rを把持した右手と、左コントローラを把持した左手とをそれぞれ自由に動かすことができる。別の局面において、コントローラ300は両手の操作を受け付ける一体型のコントローラであってもよい。以下、右コントローラ300Rについて説明する。
【0070】
右コントローラ300Rは、グリップ310と、フレーム320と、天面330とを備える。グリップ310は、ユーザ5の右手によって把持されるように構成されている。たとえば、グリップ310は、ユーザ5の右手の掌と3本の指(中指、薬指、小指)とによって保持され得る。
【0071】
グリップ310は、ボタン340,350と、モーションセンサ420とを含む。ボタン340は、グリップ310の側面に配置され、右手の中指による操作を受け付ける。ボタン350は、グリップ310の前面に配置され、右手の人差し指による操作を受け付ける。ある局面において、ボタン340,350は、トリガー式のボタンとして構成される。モーションセンサ420は、グリップ310の筐体に内蔵されている。ユーザ5の動作がカメラその他の装置によってユーザ5の周りから検出可能である場合には、グリップ310は、モーションセンサ420を備えなくてもよい。
【0072】
フレーム320は、その円周方向に沿って配置された複数の赤外線LED360を含む。赤外線LED360は、コントローラ300を使用するプログラムの実行中に、当該プログラムの進行に合わせて赤外線を発光する。赤外線LED360から発せられた赤外線は、右コントローラ300Rと左コントローラとの各位置や姿勢(傾き、向き)を検出するために使用され得る。
図8に示される例では、二列に配置された赤外線LED360が示されているが、配列の数は
図8に示されるものに限られない。一列あるいは3列以上の配列が使用されてもよい。
【0073】
天面330は、ボタン370,380と、アナログスティック390とを備える。ボタン370,380は、プッシュ式ボタンとして構成される。ボタン370,380は、ユーザ5の右手の親指による操作を受け付ける。アナログスティック390は、ある局面において、初期位置(ニュートラルの位置)から360度任意の方向への操作を受け付ける。当該操作は、たとえば、仮想空間11に配置されるオブジェクトを移動するための操作を含む。
【0074】
ある局面において、右コントローラ300Rおよび左コントローラは、赤外線LED360その他の部材を駆動するための電池を含む。電池は、充電式、ボタン型、乾電池型などを含むが、これらに限定されない。別の局面において、右コントローラ300Rと左コントローラは、たとえば、コンピュータ200のUSBインターフェイスに接続され得る。この場合、右コントローラ300Rおよび左コントローラは、電池を必要としない。
【0075】
図8の状態(A)および状態(B)に示されるように、例えば、ユーザ5の右手に対して、ヨー、ロール、ピッチの各方向が規定される。ユーザ5が親指と人差し指とを伸ばした場合に、親指の伸びる方向がヨー方向、人差し指の伸びる方向がロール方向、ヨー方向の軸およびロール方向の軸によって規定される平面に垂直な方向がピッチ方向として規定される。
【0076】
[サーバのハードウェア構成]
図9を参照して、本実施の形態に係るサーバ600について説明する。
図9は、ある実施の形態に従うサーバ600のハードウェア構成の一例を表すブロック図である。サーバ600は、主たる構成要素として、プロセッサ610と、メモリ620と、ストレージ630と、入出力インターフェイス640と、通信インターフェイス650とを備える。各構成要素は、それぞれ、バス660に接続されている。
【0077】
プロセッサ610は、サーバ600に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ620またはストレージ630に格納されているプログラムに含まれる一連の命令を実行する。ある局面において、プロセッサ610は、CPU、GPU、MPU、FPGAその他のデバイスとして実現される。
【0078】
メモリ620は、プログラムおよびデータを一時的に保存する。プログラムは、例えば、ストレージ630からロードされる。データは、サーバ600に入力されたデータと、プロセッサ610によって生成されたデータとを含む。ある局面において、メモリ620は、RAMその他の揮発メモリとして実現される。
【0079】
ストレージ630は、プログラムおよびデータを永続的に保持する。ストレージ630は、例えば、ROM、ハードディスク装置、フラッシュメモリ、その他の不揮発記憶装置として実現される。ストレージ630に格納されるプログラムは、HMDシステム100において仮想空間を提供するためのプログラム、シミュレーションプログラム、ゲームプログラム、ユーザ認証プログラム、コンピュータ200との通信を実現するためのプログラムを含んでもよい。ストレージ630に格納されるデータは、仮想空間を規定するためのデータおよびオブジェクト等を含んでもよい。
【0080】
別の局面において、ストレージ630は、メモリカードのように着脱可能な記憶装置として実現されてもよい。さらに別の局面において、サーバ600に内蔵されたストレージ630の代わりに、外部の記憶装置に保存されているプログラムおよびデータを使用する構成が使用されてもよい。このような構成によれば、例えば、アミューズメント施設のように複数のHMDシステム100が使用される場面において、プログラムやデータの更新を一括して行うことが可能になる。
【0081】
入出力インターフェイス640は、入出力機器との間で信号を通信する。ある局面において、入出力インターフェイス640は、USB、DVI、HDMI(登録商標)その他の端子を用いて実現される。入出力インターフェイス640は上述のものに限られない。
【0082】
通信インターフェイス650は、ネットワーク2に接続されて、ネットワーク2に接続されているコンピュータ200と通信する。ある局面において、通信インターフェイス650は、例えば、LANその他の有線通信インターフェイス、あるいは、Wi-Fi、Bluetooth、NFCその他の無線通信インターフェイスとして実現される。通信インターフェイス650は上述のものに限られない。
【0083】
ある局面において、プロセッサ610は、ストレージ630にアクセスし、ストレージ630に格納されている1つ以上のプログラムをメモリ620にロードし、当該プログラムに含まれる一連の命令を実行する。当該1つ以上のプログラムは、サーバ600のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、仮想空間で実行可能なゲームソフトウェア等を含み得る。プロセッサ610は、入出力インターフェイス640を介して、仮想空間を提供するための信号をコンピュータ200に送ってもよい。
【0084】
[HMDの制御装置]
図10を参照して、HMD120の制御装置について説明する。ある実施の形態において、制御装置は周知の構成を有するコンピュータ200によって実現される。
図10は、ある実施の形態に従うコンピュータ200をモジュール構成として表すブロック図である。
【0085】
図10に示されるように、コンピュータ200は、コントロールモジュール510と、レンダリングモジュール520と、メモリモジュール530と、通信制御モジュール540とを備える。ある局面において、コントロールモジュール510とレンダリングモジュール520とは、プロセッサ210によって実現される。別の局面において、複数のプロセッサ210がコントロールモジュール510とレンダリングモジュール520として作動してもよい。メモリモジュール530は、メモリ220またはストレージ230によって実現される。通信制御モジュール540は、通信インターフェイス250によって実現される。
【0086】
コントロールモジュール510は、ユーザ5に提供される仮想空間11を制御する。コントロールモジュール510は、仮想空間11を表す仮想空間データを用いて、HMDシステム100における仮想空間11を規定する。仮想空間データは、例えば、メモリモジュール530に記憶されている。コントロールモジュール510が、仮想空間データを生成したり、サーバ600などから仮想空間データを取得するようにしたりしてもよい。
【0087】
コントロールモジュール510は、オブジェクトを表すオブジェクトデータを用いて、仮想空間11にオブジェクトを配置する。オブジェクトデータは、例えば、メモリモジュール530に記憶されている。コントロールモジュール510が、オブジェクトデータを生成したり、サーバ600などからオブジェクトデータを取得するようにしたりしてもよい。オブジェクトは、例えば、ユーザ5の分身であるアバターオブジェクト(換言すると、ユーザ5のキャラクタオブジェクト)、キャラクタオブジェクト、コントローラ300によって操作される仮想手などの操作オブジェクト、ゲームのストーリーの進行に従って配置される森、山その他を含む風景、街並み、動物等を含み得る。
【0088】
コントロールモジュール510は、ネットワーク2を介して接続される他のコンピュータ200のユーザ5のアバターオブジェクトを仮想空間11に配置する。ある局面において、コントロールモジュール510は、ユーザ5のアバターオブジェクトを仮想空間11に配置する。ある局面において、コントロールモジュール510は、ユーザ5を含む画像に基づいて、ユーザ5を模したアバターオブジェクトを仮想空間11に配置する。別の局面において、コントロールモジュール510は、複数種類のアバターオブジェクト(例えば、動物を模したオブジェクトや、デフォルメされた人のオブジェクト)の中からユーザ5による選択を受け付けたアバターオブジェクトを仮想空間11に配置する。
【0089】
コントロールモジュール510は、HMDセンサ410の出力に基づいてHMD120の傾きを特定する。別の局面において、コントロールモジュール510は、モーションセンサとして機能するセンサ190の出力に基づいてHMD120の傾きを特定する。コントロールモジュール510は、第1カメラ150および第2カメラ160が生成するユーザ5の顔の画像から、ユーザ5の顔を構成する器官(例えば、口,目,眉)を検出する。コントロールモジュール510は、検出した各器官の動き(形状)を検出する。
【0090】
コントロールモジュール510は、注視センサ140からの信号に基づいて、ユーザ5の仮想空間11における視線を検出する。コントロールモジュール510は、検出したユーザ5の視線と仮想空間11の天球とが交わる視点位置(XYZ座標系における座標値)を検出する。より具体的には、コントロールモジュール510は、uvw座標系で規定されるユーザ5の視線と、仮想カメラ14の位置および傾きとに基づいて、視点位置を検出する。コントロールモジュール510は、検出した視点位置をサーバ600に送信する。別の局面において、コントロールモジュール510は、ユーザ5の視線を表す視線情報をサーバ600に送信するように構成されてもよい。係る場合、サーバ600が受信した視線情報に基づいて視点位置を算出し得る。
【0091】
コントロールモジュール510は、HMDセンサ410が検出するHMD120の動きをアバターオブジェクトに反映する。例えば、コントロールモジュール510は、HMD120が傾いたことを検知して、アバターオブジェクトを傾けて配置する。コントロールモジュール510は、検出した顔器官の動作を、仮想空間11に配置されるアバターオブジェクトの顔に反映させる。コントロールモジュール510は、サーバ600から他のユーザ5の視線情報を受信し、当該他のユーザ5のアバターオブジェクトの視線に反映させる。ある局面において、コントロールモジュール510は、コントローラ300の動きをアバターオブジェクトや操作オブジェクトに反映する。この場合、コントローラ300は、コントローラ300の動きを検知するためのモーションセンサ、加速度センサ、または複数の発光素子(例えば、赤外線LED)などを備えてもよい。また、コントローラ300の動きとは、アナログスティック390の動きやボタン370,380の動き等であってもよい。そして、コントロールモジュール510は、例えば、アナログスティック390の動き(換言すると、アナログスティック390に対するユーザの操作)に基づいてアバターオブジェクトを仮想空間11内で移動させるなどしてもよい。
【0092】
コントロールモジュール510は、仮想空間11においてユーザ5の操作を受け付けるための操作オブジェクトを仮想空間11に配置する。ユーザ5は、操作オブジェクトを操作することにより、例えば、仮想空間11に配置されるオブジェクトを操作する。ある局面において、操作オブジェクトは、例えば、ユーザ5の手に相当する仮想手である手オブジェクト等を含み得る。ある局面において、コントロールモジュール510は、モーションセンサ420の出力に基づいて現実空間におけるユーザ5の手の動きに連動するように仮想空間11において手オブジェクトを動かす。ある局面において、操作オブジェクトは、アバターオブジェクトの手の部分に相当し得る。
【0093】
コントロールモジュール510は、仮想空間11に配置されるオブジェクトのそれぞれが、他のオブジェクトと衝突した場合に、当該衝突を検出する。コントロールモジュール510は、例えば、あるオブジェクトのコリジョンエリアと、別のオブジェクトのコリジョンエリアとが触れたタイミングを検出することができ、当該検出がされたときに、予め定められた処理を行う。コントロールモジュール510は、オブジェクトとオブジェクトとが触れている状態から離れたタイミングを検出することができ、当該検出がされたときに、予め定められた処理を行う。コントロールモジュール510は、オブジェクトとオブジェクトとが触れている状態であることを検出することができる。例えば、コントロールモジュール510は、操作オブジェクトと、他のオブジェクトとが触れたときに、これら操作オブジェクトと他のオブジェクトとが触れたことを検出して、予め定められた処理を行う。
【0094】
ある局面において、コントロールモジュール510は、HMD120のモニタ130における画像表示を制御する。例えば、コントロールモジュール510は、仮想空間11に仮想カメラ14を配置する。コントロールモジュール510は、仮想空間11における仮想カメラ14の位置と、仮想カメラ14の傾き(向き)を制御する。コントロールモジュール510は、HMD120を装着したユーザ5の頭の傾きと、仮想カメラ14の位置に応じて、視界領域15を規定する。レンダリングモジュール520は、決定された視界領域15に基づいて、モニタ130に表示される視界画像17を生成する。レンダリングモジュール520により生成された視界画像17は、通信制御モジュール540によってHMD120に出力される。
【0095】
コントロールモジュール510は、HMD120から、ユーザ5のマイク170を用いた発話を検出すると、当該発話に対応する音声データの送信対象のコンピュータ200を特定する。音声データは、コントロールモジュール510によって特定されたコンピュータ200に送信される。コントロールモジュール510は、ネットワーク2を介して他のユーザのコンピュータ200から音声データを受信すると、当該音声データに対応する音声(発話)をスピーカ180から出力する。
【0096】
メモリモジュール530は、コンピュータ200が仮想空間11をユーザ5に提供するために使用されるデータを保持している。ある局面において、メモリモジュール530は、空間情報と、オブジェクト情報と、ユーザ情報とを保持している。
【0097】
空間情報は、仮想空間11を提供するために規定された1つ以上のテンプレートを保持している。
【0098】
オブジェクト情報は、仮想空間11を構成する複数のパノラマ画像13、仮想空間11にオブジェクトを配置するためのオブジェクトデータを含む。パノラマ画像13は、静止画像および動画像を含み得る。パノラマ画像13は、非現実空間の画像と現実空間の画像とを含み得る。非現実空間の画像としては、例えば、コンピュータグラフィックスで生成された画像が挙げられる。
【0099】
ユーザ情報は、ユーザ5を識別するユーザIDを保持する。ユーザIDは、例えば、ユーザが使用するコンピュータ200に設定されるIP(Internet Protocol)アドレスまたはMAC(Media Access Control)アドレスであり得る。別の局面において、ユーザIDはユーザによって設定され得る。ユーザ情報は、HMDシステム100の制御装置としてコンピュータ200を機能させるためのプログラム等を含む。また、ユーザ情報は、サービスのアカウント毎(換言すると、ユーザID毎)に管理される情報を含む。
【0100】
メモリモジュール530に格納されているデータおよびプログラムは、HMD120のユーザ5によって入力される。あるいは、プロセッサ210が、当該コンテンツを提供する事業者が運営するコンピュータ(例えば、サーバ600)からプログラムあるいはデータをダウンロードして、ダウンロードされたプログラムあるいはデータをメモリモジュール530に格納する。
【0101】
通信制御モジュール540は、ネットワーク2を介して、サーバ600その他の情報通信装置と通信し得る。
【0102】
ある局面において、コントロールモジュール510およびレンダリングモジュール520は、例えば、ユニティテクノロジーズ社によって提供されるUnity(登録商標)を用いて実現され得る。別の局面において、コントロールモジュール510およびレンダリングモジュール520は、各処理を実現する回路素子の組み合わせとしても実現され得る。
【0103】
コンピュータ200における処理は、ハードウェアと、プロセッサ210により実行されるソフトウェアとによって実現される。このようなソフトウェアは、ハードディスクその他のメモリモジュール530に予め格納されている場合がある。ソフトウェアは、CD-ROMその他のコンピュータ読み取り可能な不揮発性のデータ記録媒体に格納されて、プログラム製品として流通している場合もある。あるいは、当該ソフトウェアは、インターネットその他のネットワークに接続されている情報提供事業者によってダウンロード可能なプログラム製品として提供される場合もある。このようなソフトウェアは、光ディスク駆動装置その他のデータ読取装置によってデータ記録媒体から読み取られて、あるいは、通信制御モジュール540を介してサーバ600その他のコンピュータからダウンロードされた後、メモリモジュール530に一旦格納される。そのソフトウェアは、プロセッサ210によってメモリモジュール530から読み出され、実行可能なプログラムの形式でRAMに格納される。プロセッサ210は、そのプログラムを実行する。
【0104】
[HMDシステムの制御構造]
図11を参照して、HMDセット110の制御構造について説明する。
図11は、ある実施の形態に従うHMDセット110において実行される処理の一部を表すシーケンスチャートである。
【0105】
図11に示されるように、ステップS1110にて、コンピュータ200のプロセッサ210は、コントロールモジュール510として、仮想空間データを特定し、仮想空間11を定義する。
【0106】
ステップS1120にて、プロセッサ210は、仮想カメラ14を初期化する。たとえば、プロセッサ210は、メモリのワーク領域において、仮想カメラ14を仮想空間11において予め規定された中心12に配置し、仮想カメラ14の視線をユーザ5が向いている方向に向ける。
【0107】
ステップS1130にて、プロセッサ210は、レンダリングモジュール520として、初期の視界画像を表示するための視界画像データを生成する。生成された視界画像データは、通信制御モジュール540によってHMD120に出力される。
【0108】
ステップS1132にて、HMD120のモニタ130は、コンピュータ200から受信した視界画像データに基づいて、視界画像を表示する。HMD120を装着したユーザ5は、視界画像を視認すると仮想空間11を認識し得る。
【0109】
ステップS1134にて、HMDセンサ410は、HMD120から発信される複数の赤外線光に基づいて、HMD120の位置と傾きを検知する。検知結果は、動き検知データとして、コンピュータ200に出力される。
【0110】
ステップS1140にて、プロセッサ210は、HMD120の動き検知データに含まれる位置と傾きとに基づいて、HMD120を装着したユーザ5の視界方向を特定する。
【0111】
ステップS1150にて、プロセッサ210は、アプリケーションプログラムを実行し、アプリケーションプログラムに含まれる命令に基づいて、仮想空間11にオブジェクト
を配置する。
【0112】
ステップS1160にて、コントローラ300は、ユーザ5の操作を検出し、その検出された操作を表す検出データをコンピュータ200に出力する。別の局面において、ユーザ5による操作は、ユーザ5の周囲に配置されたカメラからの画像に基づいて検出されてもよい。
【0113】
ステップS1170にて、プロセッサ210は、コントローラ300から取得した検出データに基づいて、ユーザ5によるコントローラ300の操作を検出する。
【0114】
ステップS1180にて、プロセッサ210は、ユーザ5によるコントローラ300の操作に基づく視界画像データを生成する。生成された視界画像データは、通信制御モジュール540によってHMD120に出力される。
【0115】
ステップS1190にて、HMD120は、受信した視界画像データに基づいて視界画像を更新し、更新後の視界画像をモニタ130に表示する。
【0116】
[アバターオブジェクト]
図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に含まれる。
【0117】
図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を装着していない。
【0118】
ある局面において、プロセッサ210Aは、ユーザ5Aの視界画像17Aを撮影する仮想カメラ14Aを、アバターオブジェクト6Aの目の位置に配置し得る。
【0119】
図12(B)は、
図12(A)におけるユーザ5Aの視界画像17Aを示す図である。視界画像17Aは、HMD120Aのモニタ130Aに表示される画像である。この視界画像17Aは、仮想カメラ14Aにより生成された画像である。視界画像17Aには、ユーザ5Bのアバターオブジェクト6Bが表示されている。特に図示はしていないが、ユーザ5Bの視界画像にも同様に、ユーザ5Aのアバターオブジェクト6Aが表示されている。
【0120】
図12(B)の状態において、ユーザ5Aは仮想空間11Aを介してユーザ5Bと対話による通信(コミュニケーション)を図ることができる。より具体的には、マイク170Aにより取得されたユーザ5Aの音声は、サーバ600を介してユーザ5BのHMD120Bに送信され、HMD120Bに設けられたスピーカ180Bから出力される。ユーザ5Bの音声は、サーバ600を介してユーザ5AのHMD120Aに送信され、HMD120Aに設けられたスピーカ180Aから出力される。
【0121】
ユーザ5Bの動作(HMD120Bの動きおよびコントローラ300Bの動き)は、プロセッサ210Aにより仮想空間11Aに配置されるアバターオブジェクト6Bに反映される。これにより、ユーザ5Bによって操作されて動くアバターオブジェクト6Bがユーザ5Aから視認される。
【0122】
図13は、本実施の形態に従うHMDシステム100において実行される処理の一部を表すシーケンスチャートである。
図13においては、HMDセット110Dを図示していないが、HMDセット110Dについても、HMDセット110A、110B、110Cと同様に動作する。以下の説明でも、HMDセット110Aに関する各構成要素の参照符号にAが付され、HMDセット110Bに関する各構成要素の参照符号にBが付され、HMDセット110Cに関する各構成要素の参照符号にCが付され、HMDセット110Dに関する各構成要素の参照符号にDが付されるものとする。
【0123】
ステップS1310Aにおいて、HMDセット110Aにおけるプロセッサ210Aは、仮想空間11Aにおけるアバターオブジェクト6Aの動作を決定するためのアバター情報を取得する。このアバター情報は、例えば、動き情報、フェイストラッキングデータ、および音声データ等のアバターに関する情報を含む。動き情報は、HMD120Aの位置および傾きの時間的変化を示す情報や、モーションセンサ420A等により検出されたユーザ5Aの手の動きを示す情報や、コントローラ300等により検出されたユーザの操作を示す情報などを含む。フェイストラッキングデータは、ユーザ5Aの顔の各パーツの位置および大きさを特定するデータが挙げられる。フェイストラッキングデータは、ユーザ5Aの顔を構成する各器官の動きを示すデータや視線データが挙げられる。音声データは、HMD120Aのマイク170Aによって取得されたユーザ5Aの音声を示すデータが挙げられる。アバター情報には、アバターオブジェクト6A、あるいはアバターオブジェクト6Aに関連付けられるユーザ5Aを特定する情報や、アバターオブジェクト6Aが存在する仮想空間11Aを特定する情報等が含まれてもよい。アバターオブジェクト6Aやユーザ5Aを特定する情報としては、ユーザIDが挙げられる。アバターオブジェクト6Aが存在する仮想空間11Aを特定する情報としては、ルームIDが挙げられる。プロセッサ210Aは、上述のように取得されたアバター情報を、ネットワーク2を介してサーバ600に送信する。
【0124】
ステップS1310Bにおいて、HMDセット110Bにおけるプロセッサ210Bは、ステップS1310Aにおける処理と同様に、仮想空間11Bにおけるアバターオブジェクト6Bの動作を決定するためのアバター情報を取得し、サーバ600に送信する。同様に、ステップS1310Cにおいて、HMDセット110Cにおけるプロセッサ210Cは、仮想空間11Cにおけるアバターオブジェクト6Cの動作を決定するためのアバター情報を取得し、サーバ600に送信する。
【0125】
ステップS1320において、サーバ600は、HMDセット110A、HMDセット110B、およびHMDセット110Cのそれぞれから受信したアバター情報を一旦記憶する。サーバ600は、各アバター情報に含まれるユーザIDおよびルームID等に基づいて、共通の仮想空間11に関連付けられた全ユーザ(この例では、ユーザ5A~5C)のアバター情報を統合する。そして、サーバ600は、予め定められたタイミングで、統合したアバター情報を当該仮想空間11に関連付けられた全ユーザに送信する。これにより、同期処理が実行される。このような同期処理により、HMDセット110A、HMDセット110B、およびHMDセット110Cは、互いのアバター情報をほぼ同じタイミングで共有することができる。
【0126】
続いて、サーバ600から各HMDセット110A~110Cに送信されたアバター情報に基づいて、各HMDセット110A~110Cは、ステップS1330A~S1330Cの処理を実行する。ステップS1330Aの処理は、
図11におけるステップS1180の処理に相当する。
【0127】
ステップS1330Aにおいて、HMDセット110Aにおけるプロセッサ210Aは、仮想空間11Aにおける他のユーザ5B,5Cのアバターオブジェクト6B、アバターオブジェクト6Cの情報を更新する。具体的には、プロセッサ210Aは、HMDセット110Bから送信されたアバター情報に含まれる動き情報に基づいて、仮想空間11におけるアバターオブジェクト6Bの位置および向き等を更新する。例えば、プロセッサ210Aは、メモリモジュール530に格納されたオブジェクト情報に含まれるアバターオブジェクト6Bの情報(位置および向き等)を更新する。同様に、プロセッサ210Aは、HMDセット110Cから送信されたアバター情報に含まれる動き情報に基づいて、仮想空間11におけるアバターオブジェクト6Cの情報(位置および向き等)を更新する。
【0128】
ステップS1330Bにおいて、HMDセット110Bにおけるプロセッサ210Bは、ステップS1330Aにおける処理と同様に、仮想空間11Bにおけるユーザ5A,5Cのアバターオブジェクト6A,6Cの情報を更新する。同様に、ステップS1330Cにおいて、HMDセット110Cにおけるプロセッサ210Cは、仮想空間11Cにおけるユーザ5A,5Bのアバターオブジェクト6A,6Bの情報を更新する。
【0129】
[モジュールの詳細構成]
図14を参照して、コンピュータ200のモジュール構成の詳細について説明する。
図14は、ある実施の形態に従うコンピュータ200のモジュールの詳細構成を表すブロック図である。
【0130】
図14に示されるように、コントロールモジュール510は、仮想カメラ制御モジュール1421と、視界領域決定モジュール1422と、基準視線特定モジュール1423と、顔器官検出モジュール1424と、動き検出モジュール1425と、仮想空間定義モジュール1426と、仮想オブジェクト生成モジュール1427と、操作オブジェクト制御モジュール1428と、アバター制御モジュール1429と、を備える。レンダリングモジュール520は、視界画像生成モジュール1438を備える。
【0131】
仮想カメラ制御モジュール1421は、仮想空間11に仮想カメラ14を配置する。仮想カメラ制御モジュール1421は、仮想空間11における仮想カメラ14の配置位置と、仮想カメラ14の向き(傾き)を制御する。視界領域決定モジュール1422は、HMD120を装着したユーザの頭の向きと、仮想カメラ14の配置位置に応じて、視界領域15を規定する。視界画像生成モジュール1438は、決定された視界領域15に基づいて、モニタ130に表示される視界画像17を生成する。
【0132】
基準視線特定モジュール1423は、注視センサ140からの信号に基づいて、ユーザ5の視線を特定する。顔器官検出モジュール1424は、第1カメラ150および第2カメラ160が生成するユーザ5の顔の画像から、ユーザ5の顔を構成する器官(例えば、口、目、眉)を検出する。動き検出モジュール1425は、顔器官検出モジュール1424が検出した各器官の動き(形状)を検出する。
【0133】
仮想空間定義モジュール1426は、仮想空間11を表す仮想空間データを生成することにより、HMDシステム100における仮想空間11を規定する。
【0134】
仮想オブジェクト生成モジュール1427は、仮想空間11に配置されるオブジェクトを生成する。オブジェクトは、例えば、ゲームのストーリーの進行に従って配置される森、山その他を含む風景、動物等を含み得る。
【0135】
操作オブジェクト制御モジュール1428は、仮想空間11においてユーザの操作を受け付けるための操作オブジェクトを仮想空間11に配置する。ユーザは、操作オブジェクトを操作することにより、例えば、仮想空間11に配置されるオブジェクトを操作する。ある局面において、操作オブジェクトは、例えば、HMD120を装着したユーザの手に相当する手オブジェクト等を含み得る。ある局面において、操作オブジェクトは、後述するアバターオブジェクトの手の部分に相当し得る。
【0136】
アバター制御モジュール1429は、ネットワーク2を介して接続される他のコンピュータ200のユーザのアバターオブジェクト6を仮想空間11に配置するためのデータを生成する。ある局面において、アバター制御モジュール1429は、ユーザ5のアバターオブジェクト6を仮想空間11に配置するためのデータを生成する。ある局面において、アバター制御モジュール1429は、ユーザ5を含む画像に基づいて、ユーザ5を模したアバターオブジェクト6を生成する。別の局面において、アバター制御モジュール1429は、複数種類のアバターオブジェクト6(例えば、動物を模したオブジェクトや、デフォルメされた人のオブジェクト)の中からユーザ5による選択を受け付けたアバターオブジェクト6を仮想空間11に配置するためのデータを生成する。
【0137】
アバター制御モジュール1429は、HMDセンサ410が検出するHMD120の動きをアバターオブジェクト6に反映する。例えば、アバター制御モジュール1429は、HMD120が傾いたことを検知して、アバターオブジェクト6を傾けて配置するためのデータを生成する。ある局面において、アバター制御モジュール1429は、コントローラ300の動きをアバターオブジェクト6に反映する。別の局面において、アバター制御モジュール1429は、動き検出モジュール1425が検出した顔器官の動作を、仮想空間11に配置されるアバターオブジェクト6の顔に反映する。つまり、アバター制御モジュール1429は、ユーザ5Aの顔の動作をアバターオブジェクト6に反映する。このように、アバターオブジェクト6は、HMDセンサ410、コントローラ300または動き検出モジュール1425が検出する動きによって操作される(換言すると、動かされる)ようになっている。
【0138】
[サーバのモジュール構成]
図15を参照して、サーバ600のモジュール構成について説明する。
図15は、ある実施の形態に従うサーバ600のモジュールの構成を表すブロック図である。
図15に示されるように、サーバ600は、コントロールモジュール1610と、メモリモジュール1630と、通信制御モジュール1640とを備える。ある局面において、コントロールモジュール1610は、プロセッサ610によって実現される。メモリモジュール1630は、メモリ620またはストレージ630によって実現される。通信制御モジュール1640は、通信インターフェイス650によって実現される。
【0139】
メモリモジュール1630は、コンピュータ200が仮想空間11をユーザ5に提供するために使用されるデータを保持している。ある局面において、メモリモジュール1630は、空間情報と、オブジェクト情報と、ユーザ情報とを保持している。メモリモジュール1630の空間情報、オブジェクト情報、およびユーザ情報は、それぞれ上述したメモリモジュール530の空間情報、オブジェクト情報、およびユーザ情報を含み得る。したがって、ここでは説明を省略する。
【0140】
通信制御モジュール1640は、各HMDセット110から、各種の情報、および各種の要求を受信する。一例として、通信制御モジュール1640が各HMDセット110から受信する情報は、空間情報、オブジェクト情報、ユーザ情報、およびアバター情報を含み得る。通信制御モジュール1640は、各HMDセット110に対して、各種の情報、および各種の要求を送信する。一例として、通信制御モジュール1640が各HMDセット110へ送信する情報は、空間情報、オブジェクト情報、ユーザ情報、およびアバター情報を含み得る。
【0141】
サーバ600における処理は、ハードウェアと、プロセッサ610により実行されるソフトウェアとによって実現される。このようなソフトウェアは、ハードディスクその他のメモリモジュール1630に予め格納されている場合がある。ソフトウェアは、CD-ROMその他のコンピュータ読み取り可能な不揮発性のデータ記録媒体に格納されて、プログラム製品として流通している場合もある。あるいは、当該ソフトウェアは、インターネットその他のネットワークに接続されている情報提供事業者によってダウンロード可能なプログラム製品として提供される場合もある。このようなソフトウェアは、光ディスク駆動装置その他のデータ読取装置によってデータ記録媒体から読み取られて、あるいは、通信制御モジュール1640を介して所定のコンピュータからダウンロードされた後、メモリモジュール1630に一旦格納される。そのソフトウェアは、プロセッサ610によってメモリモジュール1630から読み出され、実行可能なプログラムの形式でRAMに格納される。プロセッサ610は、そのプログラムを実行する。
【0142】
なお、上述したコンピュータ200およびサーバ600のモジュール構成は一例にすぎない。コンピュータ200およびサーバ600の各装置は、他の装置が備えるモジュール(換言すると、機能)の少なくとも一部を備えていてもよい。また、コンピュータ200およびサーバ600等の各装置は、一体の機器により実現されるものでなくてもよく、例えば、ネットワーク等を介して接続される複数の機器によって実現されてもよい。
【0143】
また、本実施形態では、コンピュータ200のプロセッサ210またはサーバ600のプロセッサ610が、HMDシステム100に記憶されているプログラムを実行することによって、上述のまたは後述する各処理を行うものとして説明する。ただし、上述のまたは後述する処理であってプロセッサ210が行う処理のうちの少なくとも一部を、プロセッサ210とは別のプロセッサが実行するようにしてもよい。また、上述のまたは後述する処理であってプロセッサ610が行う処理のうちの少なくとも一部を、プロセッサ610とは別のプロセッサが実行するようにしてもよい。換言すると、本実施形態においてプログラムを実行するコンピュータは、コンピュータ200およびサーバ600のいずれであってもよく、また、複数の装置の組み合わせにより実現されてもよい。
【0144】
[本実施形態に係る処理]
コンピュータ200のコントロールモジュール510は、マイク170を用いた発話を検出すると、当該発話に対応する音声データの送信対象のコンピュータ200を特定し、当該音声データを送信する。また、コントロールモジュール510は、他のユーザのコンピュータ200から音声データを受信すると、当該音声データに対応する音声をスピーカ180から出力する。例えば、
図12(B)に示す状態では、マイク170Aにより取得されたユーザ5Aの音声は、ユーザ5BのHMD120Bに送信され、HMD120Bに設けられたスピーカ180Bから出力される。一方、ユーザ5Bの音声は、ユーザ5AのHMD120Aに送信され、HMD120Aに設けられたスピーカ180Aから出力される。このように仮想空間11において、ユーザ5Aとユーザ5Bとは、アバターオブジェクト6Aとアバターオブジェクト6Bとを介して、対話することが可能となっている。各コンピュータ200のコントロールモジュール510が備えるアバター制御モジュール1429(キャラクタ制御手段)は、仮想空間11にアバターオブジェクト6(キャラクタ)を出現させ、アバターオブジェクト6を介しての対話を可能としている。なお、仮想空間11でのユーザ5Aとユーザ5Bとの対話(換言すると、アバターオブジェクト6Aとアバターオブジェクト6Bとを介しての対話)は、テキストメッセージの交換によるもの等であってもよい。
【0145】
以下、
図12(A)に示すように、各HMD120がユーザ5に仮想空間11を提供している場合について説明する。また、
図12(A)に示す仮想空間11において、アバターオブジェクト6B(換言すると、ユーザ5B)が、アバターオブジェクト6A(換言すると、ユーザ5A)にハラスメント(換言すると、不快感を与える言動)を行う場合を想定して説明する。
【0146】
HMDセット110Aのアバター制御モジュール1429Aは、仮想空間11にアバターオブジェクト6Aおよびアバターオブジェクト6Bを配置する。そして、アバター制御モジュール1429Aは、ユーザ5Aの操作(換言すると、ユーザ5Aの動き)に基づいてアバターオブジェクト6Aを動かし、ユーザ5Bの操作(換言すると、ユーザ5Bの動き)に基づいてアバターオブジェクト6Bを動かす。そして、ユーザ5Aは、アバター制御モジュール1429Aによって動かされるアバターオブジェクト6Aおよびアバターオブジェクト6Bの動きを見ることとなる。すなわち、コントロールモジュール510Aは、ユーザ5Aに提供される表示に係る制御を行う。
【0147】
また、HMDセット110Bのアバター制御モジュール1429Bは、仮想空間11にアバターオブジェクト6Aおよびアバターオブジェクト6Bを配置する。そして、アバター制御モジュール1429Bは、ユーザ5Aの操作(換言すると、ユーザ5Aの動き)に基づいてアバターオブジェクト6Aを動かし、ユーザ5Bの操作(換言すると、ユーザ5Bの動き)に基づいてアバターオブジェクト6Bを動かす。そして、ユーザ5Bは、アバター制御モジュール1429Bによって動かされるアバターオブジェクト6Aおよびアバターオブジェクト6Bの動きを見ることとなる。すなわち、コントロールモジュール510Bは、ユーザ5Aに提供される表示に係る制御を行う。
【0148】
本実施形態において、コントロールモジュール510は、ユーザ5Bがアバターオブジェクト6Bに実行させる所定の動きが、ユーザ5Aに提供される表示におけるアバターオブジェクト6Bに反映されないように制御する。換言すると、HMDシステム100は、ユーザ5Aに提供される表示においては、ユーザ5Bの操作に基づいて動くアバターオブジェクト6Bについて、ユーザ5Bの操作の一部を反映させない。本実施形態では、コントロールモジュール510は、仮想空間11においてアバターオブジェクト6Aから所定範囲内に存在するアバターオブジェクト6Bについて、ユーザ5Bの操作に基づく所定の動きが、前記第1ユーザに提供される表示におけるアバターオブジェクト6Bに反映されないように制御する。
【0149】
本実施形態では、各アバターオブジェクト6(換言すると、各ユーザ5)には、パーソナルスペースが設定されており、パーソナルスペース内においては他の所定のユーザ5のアバターオブジェクト6の所定の動きが反映されないようになっている。
【0150】
具体的には、例えば、
図16に示すように、アバターオブジェクト6AのパーソナルスペースP内にいるアバターオブジェクト6Bが、仮想空間11Bにおいてアバターオブジェクト6Aに触れる特定の動きを行う場合に、コントロールモジュール510は、仮想空間11Aにおいては、アバターオブジェクト6Bが当該特定の動きをせず、アバターオブジェクト6Aに、触れないように制御する。すなわち、ユーザ5Bに提供される表示上は、アバターオブジェクト6Bをユーザ5Bの操作に基づいて動かし、アバターオブジェクト6Aに触れることが可能となっている。一方で、ユーザ5Aに提供される表示上は、アバターオブジェクト6Bの動きに制限が与えられ、アバターオブジェクト6Aに触れることができないようになっている。なお、ユーザが、一人称視点で仮想空間11に入り込むコンテンツにおいては、自身のアバターオブジェクト6の姿を視認できない場合(具体的には、手などの一部しか視認できない場合や、一部すら視認できない場合)もあり得るが、このような場合についても、自身のアバターオブジェクト6の動きは、自身に提供される表示におけるアバターオブジェクト6の動きといえる。
【0151】
ここで、所定の動きが反映されない仮想空間11Aのアバターオブジェクト6Bについて、コントロールモジュール510は、例えば、アバターオブジェクト6AのパーソナルスペースP内においてはアバターオブジェクト6Bが直立不動のまま動かないようにしてもよい。また、コントロールモジュール510は、例えば、アバターオブジェクト6Aに向けてアバターオブジェクト6Bが手を伸ばす場合において、アバターオブジェクト6Bの手がアバターオブジェクト6Aに触れそうになった時点で手の動きを停止(換言すると、硬直)させ、手の位置をこの時の位置で固定させるなどしてもよい。あるいは、コントロールモジュール510は、アバターオブジェクト6Bの手がアバターオブジェクト6Aに触れそうになった時点で手の動く軌道を変更し、例えば、当該手がアバターオブジェクト6B自身の方へ向かうように(例えば、アバターオブジェクト6Bの頭や肩や移動前の位置等に向かうように)制御するなどしてもよい。また、コントロールモジュール510は、所定の動きが反映されない仮想空間11Aのアバターオブジェクト6Bについて、予め定められた特定の動き(例えば、直立したまま腕や足を適度に動かす動きなどの自然な動き)をさせてもよい。また、当該特定の動きとして複数のパターンが用意されており、コントロールモジュール510は、反映させない所定の動きの代わりに、当該複数のパターンの動きの中から選択された動きをアバターオブジェクト6Bにさせてもよい。
【0152】
コントロールモジュール510は、例えば、次のような制御により、仮想空間11Aのアバターオブジェクト6Bについて、所定の動きが反映されないようにしてもよい。すなわち、上述のように、コントロールモジュール510Aは、仮想空間11Aにおけるアバターオブジェクト6Bを、コントロールモジュール510Bから送信されたアバター情報に基づいて動かすが、当該アバター情報が当該所定の動きに係るアバター情報の場合には、コントロールモジュール510Aは、アバターオブジェクト6Bを当該アバター情報に基づいて動かさない。換言すると、当該アバター情報が当該所定の動きに係るアバター情報の場合には、コントロールモジュール510Aは、当該アバター情報を破棄または改変し、アバターオブジェクト6Bを当該アバター情報に基づく動きとは異なる動きで動かすか、あるいはアバターオブジェクト6Bを動かさない。ここで、「改変」とは、例えば、当該アバター情報が、アバターオブジェクト6Bにアバターオブジェクト6Aに触れる動きをさせるものであった場合に、アバターオブジェクト6Bにアバターオブジェクト6Aに触れない所定の動きをさせるものに変化させる(換言すると、差し替える)ことなどを含む。
【0153】
あるいは、コントロールモジュール510は、例えば、次のような制御により、仮想空間11Aのアバターオブジェクト6Bについて、所定の動きが反映されないようにしてもよい。すなわち、上述のように、コントロールモジュール510Aは、仮想空間11Aにおけるアバターオブジェクト6Bを、コントロールモジュール510Bから送信されたアバター情報に基づいて動かすが、当該アバター情報が当該所定の動きに係るアバター情報の場合には、コントロールモジュール510Bは、コントロールモジュール510Aに対して、当該アバター情報を送らないか、当該アバター情報を改変した情報を送る。
【0154】
なお、仮想空間11Aのアバターオブジェクト6Bについて、所定の動きが反映されないようにする制御の少なくとも一部が、サーバ600のコントロールモジュール1610により実行されてもよい。すなわち、例えば、コントロールモジュール510Bから送信されたアバターオブジェクト6Bの動きを示すアバター情報が当該所定の動きに係るアバター情報の場合には、コントロールモジュール1610は、コントロールモジュール510Aに対して、当該アバター情報を送らないか、当該アバター情報を改変した情報を送ってもよい。あるいは、コントロールモジュール1610が、各HMDセット110から送られたアバター情報に基づいて仮想空間11にアバターオブジェクト6を配置し動かすとともに、各HMDセット110のモニタ130に表示される視界画像17を生成して各HMDセット110に送信する構成等において、コントロールモジュール1610は、コントロールモジュール510Bから送信されたアバター情報が当該所定の動きに係るアバター情報の場合には、コントロールモジュール1610は、当該アバター情報を破棄または改変し、アバターオブジェクト6Bを当該アバター情報に基づく動きとは異なる動きで動かすか、あるいはアバターオブジェクト6Bを動かさないこととしてもよい。
【0155】
なお、本実施形態において、「動きを反映させない」とは、あるアバターオブジェクト6について、一方のユーザ5の仮想空間11においては実行される所定の動きが、他方のユーザ5の仮想空間11においては実行されないことを意味する。すなわち、動きを反映させないようにするための処理(例えば、動きを反映させるか否かを決定する処理等)は、当該一方のユーザ5の仮想空間11において当該所定の動きが実行される(換言すると、当該所定の動きに係る表示がされる)よりも前に行われてもよく、実行された後に行われてもよい。
【0156】
パーソナルスペースPの範囲は、ユーザ毎に可変となっている。具体的には、パーソナルスペースPの範囲は、各ユーザ5が自身で設定可能となっている。コントロールモジュール510は、ユーザ5の操作に基づいて、当該ユーザ5(換言すると、当該ユーザ5のアバターオブジェクト6)についてのパーソナルスペースPの大きさを変化させる。換言すると、アバターオブジェクト6から所定距離離れた位置までをパーソナルスペースPとすると、コントロールモジュール510は、当該所定距離をユーザ5の操作に基づいて変化させることが可能となっている。なお、コントロールモジュール510は、ユーザ5またはアバターオブジェクト6の属性(例えば、フレンドやフォロワーの数、職業、または性別等)に応じてパーソナルスペースPの大きさを変化させてもよい。換言すると、コントロールモジュール510は、所定条件を満たしたことに基づいて自動的に(ユーザ5の操作に基づかずに)パーソナルスペースPの大きさを変化させてもよい。各ユーザ5について設定されたパーソナルスペースPの範囲を示す情報は、例えば、メモリモジュール530に記憶されてもよく、メモリモジュール1630に記憶されてもよい。なお、パーソナルスペースPの範囲は、可変でなくてもよい。また、パーソナルスペースPの範囲を、各ユーザ5が設定できないようになっていてもよい。
【0157】
なお、フレンドやフォローについては、従来のゲームやSNS(Social Networking Service)と同様とすることができる。本実施形態では、各ユーザ5は、他のユーザ5をフレンドとして登録することが可能となっていてもよい。また、各ユーザ5は、他のユーザ5をフォローすることが可能となっていてもよい。例えば、ユーザ5Aが、ユーザ5Bに対してフレンド登録の申請を行い、ユーザ5Bが当該申請を承諾すると、コントロールモジュール1610が、ユーザ5Aとユーザ5Bとを互いにフレンドとして登録してもよい。また、ユーザ5Aが、ユーザ5Bに対してフォローの申請を行うと、コントロールモジュール1610が、ユーザ5Aをユーザ5Bのフォロワーとして登録してもよい。なお、各申請やその承諾は、各ユーザ5がコントローラ300を操作して行うことができる。また、アバターオブジェクト6Aとアバターオブジェクト6Bとがフレンドの関係であることを、ユーザ5Aとユーザ5Bとがフレンドであると称してもよい。
【0158】
また、パーソナルスペースPは、アバターオブジェクト6の形状に沿って形成されてもよい。具体的には、例えば、アバターオブジェクト6Aの形状に沿って、アバターオブジェクト6Aから10cmの範囲がパーソナルスペースPとして設定されることとする。この場合に、コントロールモジュール510は、アバターオブジェクト6Aに沿って10cm以内にアバターオブジェクト6Bの手が進入しようとする場合に、仮想空間11Bにおいては、アバターオブジェクト6Aに沿って10cm以内へのアバターオブジェクト6Bの手の進入を許可する一方で、仮想空間11Aにおいては、アバターオブジェクト6Aに沿って10cm以内へのアバターオブジェクト6Bの手の進入をさせない(例えば、アバターオブジェクト6Bの手の動きが、アバターオブジェクト6Aから10cm離れた位置で止まる)ように制御してもよい。
【0159】
換言すると、本実施形態では、アバターオブジェクト6Aから所定範囲内におけるアバターオブジェクト6Bの所定の動きが、ユーザ5Aに提供される表示に反映されないようになっているが、アバターオブジェクト6Bの当該所定範囲内への進入は可能とした上で当該所定の動きが反映されないようにしてもよく、アバターオブジェクト6Bの当該所定範囲内への進入自体を不可能とすることにより当該所定の動きが反映されないようにしてもよい。換言すると、当該所定範囲は、アバターオブジェクト6Bの進入可能な範囲であってもよく、進入不可能な範囲であってもよい。換言すると、当該所定の動きは、当該所定範囲内において実行され得る特定の動きであってもよく、アバターオブジェクト6Bの少なくとも一部(例えば、体の特定の部位、あるいは全身等)を当該所定範囲に進入させる動きであってもよい。
【0160】
以下、特定のアバターオブジェクト6(例えば、アバターオブジェクト6B)を操作するユーザ5(例えば、ユーザ5B)が当該特定のアバターオブジェクト6に実行させる動きであって、他の特定のユーザ5(例えば、ユーザ5A)に提供される表示における当該特定のアバターオブジェクト6に反映されない所定の動きを、「非反映動作」ともいう。
【0161】
コントロールモジュール510は、所定のユーザ5に提供される表示において所定の動きを反映させないアバターオブジェクト6を、当該所定のユーザ5の操作に基づいて決定する。具体的には、例えば、コントロールモジュール510Aは、ユーザ5Aによる、ブロックするユーザ5を選択する操作を受け付け、選択されたユーザ5のアバターオブジェクト6が非反映動作を行う場合に、仮想空間11Aのアバタ―オブジェクト6に当該非反映動作を行わせないように制御してもよい。あるいは、例えば、コントロールモジュール510Aは、ユーザ5Aによる、非反映動作の反映を拒否しないユーザ5を選択する操作を受け付け、選択されたユーザ5のアバターオブジェクト6が非反映動作を行う場合には、仮想空間11Aのアバタ―オブジェクト6に当該非反映動作を行わせる一方で、選択されていないユーザ5のアバターオブジェクト6が非反映動作を行う場合には、仮想空間11Aのアバタ―オブジェクト6に当該非反映動作を行わせないように制御してもよい。換言すると、非反映動作を反映させないアバターオブジェクト6は、非反映動作を反映させないユーザ5を選択する操作に基づいて決定されてもよく、非反映動作を反映させるユーザ5を選択する操作に基づいて決定されてもよい。また、例えば、コントロールモジュール510は、ユーザ5Aと所定の関係性を有するユーザ5(例えば、フレンド等)のアバターオブジェクト6が非反映動作を行う場合については、仮想空間11Aのアバターオブジェクト6に非反映動作を行わせる一方で、ユーザ5Aと所定の関係性を有しないユーザ5のアバターオブジェクト6が非反映動作を行う場合については、仮想空間11Aのアバターオブジェクト6に非反映動作を行わせないように制御してもよい。この場合に、コントロールモジュール510は、他のユーザ5をフレンドとして登録する操作を、非反映動作を反映させないアバターオブジェクト6を決定するための操作として受け付けてもよい。あるいは、コントロールモジュール510は、非反映動作を反映させる対象の属性を選択する操作(例えば、「フレンドのみ反映させる」という設定や「全ユーザについて反映させる」という設定等を行う操作)を受け付けてもよい。各ユーザ5について設定された非反映動作を反映させないアバターオブジェクト6(換言すると、非反映動作を反映させない他のユーザ5)を示す情報は、例えば、メモリモジュール530に記憶されてもよく、メモリモジュール1630に記憶されてもよい。
【0162】
なお、本実施形態においては、非反映動作を反映させないユーザ5として設定されているユーザ5との間でも対話が可能となっている。換言すると、アバターオブジェクト6Bの非反映動作がユーザ5Aに提供される表示に反映されない場合において、ユーザ5Aとユーザ5Bとは、仮想空間11において、アバターオブジェクト6Aとアバターオブジェクト6Bとを介して、対話することが可能となっている。
【0163】
なお、いずれのアバターオブジェクト6について動きの反映を制限するかは、ユーザが設定不可能となっていてもよい。例えば、他のユーザの操作する全てのアバターオブジェクト6について、所定の動きの反映がされないようになっていてもよい。すなわち、本実施形態においては、例えば、ユーザ5Bがアバターオブジェクト6Bに実行させる所定の動きが、ユーザ5Aに提供される表示に反映されないようになっているが、当該所定の動きが、ユーザ5Aおよびユーザ5B以外のユーザ(例えば、ユーザ5C)に提供される表示に反映され得るようになっていてもよく、ユーザ5B以外のユーザに提供される表示には反映されないようになっていてもよい。
【0164】
コントロールモジュール510は、特定のアバターオブジェクト6(例えば、アバターオブジェクト6B)を操作するユーザ5(例えば、ユーザ5B)が当該特定のアバターオブジェクト6に実行させる動きのうち、他の特定のユーザ5(例えば、ユーザ5A)に提供される表示における当該特定のアバターオブジェクト6に反映されない動きの種類を、当該特定のアバターオブジェクト6が当該他の特定のユーザ5のアバターオブジェクト6(例えば、アバターオブジェクト6A)に近づくにつれて増加させてもよい。換言すると、コントロールモジュール510は、当該特定のアバターオブジェクト6の動きの制限の強度を、当該特定のアバターオブジェクト6と他のアバターオブジェクト6との距離に応じて変化させてもよい。
【0165】
具体的には、例えば、コントロールモジュール510は、アバターオブジェクト6Aとアバターオブジェクト6Bとの距離が第1の距離の場合には、アバターオブジェクト6Bの視線(換言すると、どこを見ているかを示す目の動き。例えば、アバターオブジェクト6Aの体の特定の部位を見る目の動き等。)を、仮想空間11Aのアバターオブジェクト6Bに反映させないように制御してもよい。一方で、例えば、コントロールモジュール510は、アバターオブジェクト6Aとアバターオブジェクト6Bとの距離が第1の距離の場合には、アバターオブジェクト6Bの手の動きについては、制限なく仮想空間11Aのアバターオブジェクト6Bに全て反映させるように制御してもよい。
【0166】
これに対し、例えば、コントロールモジュール510は、アバターオブジェクト6Aとアバターオブジェクト6Bとの距離が第1の距離よりも近い第2の距離の場合にも、アバターオブジェクト6Bの視線(換言すると、どこを見ているかを示す目の動き。例えば、アバターオブジェクト6Aの体の特定の部位を見る目の動き等。)を、仮想空間11Aのアバターオブジェクト6Bに反映させないように制御してもよい。また、例えば、コントロールモジュール510は、アバターオブジェクト6Aとアバターオブジェクト6Bとの距離が第2の距離の場合には、アバターオブジェクト6Bの手の動きを、仮想空間11Aのアバターオブジェクト6Bに反映させないように制御してもよい。
【0167】
換言すると、1のアバターオブジェクト6(換言すると、1のユーザ5)に対して複数種類のパーソナルスペースPが設定されていてもよい。そして、パーソナルスペースP毎に、異なる動きが非反映動作として設定されていてもよい。
【0168】
換言すると、例えば、コントロールモジュール510は、アバターオブジェクト6Aとアバターオブジェクト6Bとの距離が第1の距離の場合には、アバターオブジェクト6Bの第1の動きについては、ユーザ5Aに提供される表示におけるアバターオブジェクト6Bに反映させつつ、アバターオブジェクト6Bの第2の動きについては、ユーザ5Aに提供される表示におけるアバターオブジェクト6Bに反映させないように制御する一方で、アバターオブジェクト6Aとアバターオブジェクト6Bとの距離が第2の距離の場合には、アバターオブジェクト6Bの第1の動きについて、ユーザ5Aに提供される表示におけるアバターオブジェクト6Bに反映させないように制御してもよい。ここで、コントロールモジュール510は、アバターオブジェクト6Aとアバターオブジェクト6Bとの距離が第2の距離の場合に、第1の動きをユーザ5Aに提供される表示におけるアバターオブジェクト6Bに反映させてもよく、反映させなくてもよい。
【0169】
また、コントロールモジュール510は、他のユーザ5(例えば、ユーザ5B)の操作する所定のアバターオブジェクト6(例えば、アバターオブジェクト6B)が特定の動きをしたことに基づいて、当該所定のアバターオブジェクト6を、ユーザ5(例えば、ユーザ5A)に提供される表示において所定の動きを反映させないアバターオブジェクト6にしてもよい。なお、以下、当該特定の動きを、「禁止行動」ともいう。なお、禁止行動は、ハラスメント行為(換言すると、所定の迷惑行為)であってもよい。
【0170】
具体的には、例えば、コントロールモジュール510は、アバターオブジェクト6Aに沿って10cm以内にアバターオブジェクト6Bの手が進入すると、その後、アバターオブジェクト6Bがアバターオブジェクト6Aから5m以内(換言すると、パーソナルスペースP内)にいる間は、アバターオブジェクト6Bの所定の動きを、ユーザ5Aに提供される表示において反映させないように(例えば、アバターオブジェクト6Bを直立不動に制御する等)してもよい。換言すると、コントロールモジュール510は、アバターオブジェクト6Bが、アバターオブジェクト6Aに沿って10cm以内に手を進入させるという禁止行動をとったことを契機として、アバターオブジェクト6Bの動きの反映に制限を与えてもよい。
【0171】
また、例えば、コントロールモジュール510は、アバターオブジェクト6Bが、アバターオブジェクト6Aのことを所定時間以上見続けるいう禁止行動をとったことを契機として、アバターオブジェクト6Bの動きの反映に制限を与えるなどしてもよい。この場合に、例えば、コントロールモジュール510は、HMDセット110Bから受信したユーザ5Bの視界に関する情報に基づいて、視界にアバターオブジェクト6Aが含まれている時間を判定すること等により、アバターオブジェクト6Bがアバターオブジェクト6Aを所定時間以上見続けたか否か判定するなどしてもよい。換言すると、アバターオブジェクト6Bが禁止行動をとったか否かは、ユーザ5Bの操作に基づいて判定されてもよい。
【0172】
なお、禁止行動は、ユーザ5が設定可能となっていてもよい。換言すると、コントロールモジュール510は、例えば、アバターオブジェクト6Bが、ユーザ5Aが禁止行動として設定した特定の動きをしたことに基づいて、アバターオブジェクト6Bを、ユーザ5Aに提供される表示において所定の動きを反映させないものとしてもよい。
【0173】
また、コントロールモジュール510は、他のユーザ5(例えば、ユーザ5B)の操作する所定のアバターオブジェクト6(例えば、アバターオブジェクト6B)が禁止行動を所定回数(例えば、2回以上の所定回数)実行した場合に、当該所定のアバターオブジェクト6を、ユーザ5(例えば、ユーザ5A)に提供される表示において所定の動きを反映させないアバターオブジェクト6にすることとしてもよい。このような構成によれば、故意である可能性が高い複数回の禁止行動に基づいて、所定の動きを反映しないように制御することができる。なお、当該所定回数は、ユーザ5が設定可能となっていてもよい。
【0174】
次に、アバターオブジェクトの動きの反映を制限する処理の一例について、
図17に示すフローチャートを参照しながら説明する。
【0175】
ステップS1510において、HMDセット110Aのコントロールモジュール510Aは、ユーザ5Aの操作に基づいて、特定のユーザ5のアバターオブジェクト6を、ユーザ5Aに提供される表示において非反映動作を反映させないアバターオブジェクト6として設定する。ここでは、アバターオブジェクト6Bが非反映動作を反映させないアバターオブジェクト6に設定されるとともに、アバターオブジェクト6Cが非反映動作を反映させないアバターオブジェクト6に設定されないものとして説明する。
【0176】
次いでステップS1520において、コントロールモジュール510Aは、他のユーザのHMDセット110から送信されたアバター情報を受信する。換言すると、コントロールモジュール510Aは、仮想空間11に存在する各アバターオブジェクト6の動きを示すアバター情報を取得する。
【0177】
次いでステップS1530において、コントロールモジュール510Aは、受信したアバター情報が、ステップS1510において非反映動作を反映させないアバターオブジェクト6として設定されたアバターオブジェクト6に係るものか判定する。
【0178】
受信したアバター情報が、非反映動作を反映させないアバターオブジェクト6に係るものの場合(ステップS1530でYES)、すなわち例えばアバターオブジェクト6Bに係るものの場合、コントロールモジュール510Aは、アバターオブジェクト6Bを非反映動作をさせずに動かす(ステップS1540)。換言すると、コントロールモジュール510Aは、アバター情報が、アバターオブジェクト6Bに係るものであって、非反映動作に係るものである場合に、アバターオブジェクト6Bが非反映動作をしないように制御する。
【0179】
一方、受信したアバター情報が、非反映動作を反映させないアバターオブジェクトに係るものでない場合(ステップS1530でYES)、すなわち例えばアバターオブジェクト6Cに係るものの場合、コントロールモジュール510Aは、アバターオブジェクト6Cを非反映動作を許容しつつ動かす(ステップS1550)。換言すると、コントロールモジュール510Aは、アバター情報が、アバターオブジェクト6Cに係るものの場合、当該アバター情報が非反映動作に係るものであってもアバターオブジェクト6Cの動きを制限せず、非反映動作が反映されるようにアバターオブジェクト6Cを動かす。
【0180】
なお、本実施形態に係る構成は、マルチプレイが可能な各種ゲームに適用することもできる。アバターオブジェクト6は、ユーザに対応するキャラクタともいえる。
【0181】
なお、本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変形して実施できる。本発明はその発明の範囲内において、各構成要素の自由な組み合わせ、任意の構成要素の変形、または任意の構成要素の省略等が可能である。また、本明細書において説明した処理の流れはあくまで一例であり、各処理の順序や構成は異なるものであってもよい。また、各フローチャートに示した各種判定処理等の各処理は存在しないものがあってもよい。換言すると、処理の流れや具体的な判定処理等は本明細書に例示したものと異なっていてもよい。
【0182】
[付記]
以上の実施形態で説明した事項は、以下の付記のようにも記載され得る。
【0183】
(付記1)
コンピュータを、
第1キャラクタを操作する第1ユーザに提供される表示において第2ユーザの操作に基づいて動く第2キャラクタについて、前記第2ユーザが前記第2キャラクタに実行させる所定の動きが、前記第1ユーザに提供される表示における前記第2キャラクタに反映されないように制御する制御手段(例えば、コントロールモジュール510またはコントロールモジュール1610)として機能させる
プログラム。
このような構成によれば、第2ユーザが第2キャラクタを自由に動かすことを可能としつつ、第1ユーザに提供される表示においては、第2キャラクタの動きに所定の制限を与えることができる。したがって、例えば、第1ユーザが不快に感じる第2キャラクタの動き(例えば、第1ユーザに対するハラスメントにあたる動き等)を第1ユーザに提供される表示に対して反映させないようにし、第1ユーザに対して快適に利用可能な仮想空間を提供できる。一方で、第2ユーザは、このように第1ユーザに対して反映されない動きを第2キャラクタに実行させることが可能となるので、第1ユーザが抱く不快感を防止する上で、第2ユーザの仮想空間中における行動の自由度を狭めることがない。したがって、第2ユーザに対しても快適に利用可能な仮想空間を提供できる。このような構成は、例えば、第1ユーザに提供させる表示においても第2キャラクタを表示させないわけにはいかない(例えば、所謂ブロック等により第1ユーザと第2ユーザとの関係性を完全に断つわけにはいかない)場合、具体的には、例えば、メタバースオフィス等として仮想空間を利用する場合等にも有効に活用できる。
【0184】
(付記2)
前記制御手段は、前記第1ユーザに提供される表示において前記所定の動きを反映させないキャラクタを、前記第1ユーザの操作に基づいて決定する
付記1に記載のプログラム。
このような構成によれば、自身に提供される表示において動きを反映させるキャラクタや反映させないキャラクタを第1ユーザが選択することが可能となる。したがって、自身に不快感を与えるキャラクタについては動きに所定の制限を与えつつ、不快感を与える可能性の低いキャラクタについては当該所定の制限を与えないようにすること等が可能となる。
【0185】
(付記3)
前記制御手段は、前記第1キャラクタから所定範囲内における前記第2キャラクタの前記所定の動きが、前記第1ユーザに提供される表示における前記第2キャラクタに反映されないように制御する
付記1に記載のプログラム。
このような構成によれば、第1キャラクタから所定範囲内における第2キャラクタの動きという、第1ユーザに特に不快感を与えやすい動きについて、第1ユーザに提供される表示に反映されないようにすることができる。
【0186】
(付記4)
前記制御手段は、前記所定範囲の大きさをユーザ毎に異なる大きさに設定可能な
付記3に記載のプログラム。
このような構成によれば、他者から不快感を与える行動を受けやすいユーザについては(例えば、当該ユーザの操作に基づき)、当該所定範囲の大きさを相対的に大きいものとし、不快感を与える行動を受けにくいユーザについては(例えば、当該ユーザの操作に基づき)、当該所定範囲の大きさを相対的に小さいものとすること等が可能となる。
【0187】
(付記5)
前記第2ユーザが前記第2キャラクタに実行させ得る動きには、第1の動きと第2の動きとが含まれ、
前記制御手段は、
前記第1キャラクタと前記第2キャラクタとの距離が第1の距離の場合には、前記第2キャラクタの前記第1の動きについては、前記第1ユーザに提供される表示における前記第2キャラクタに反映させつつ、前記第2キャラクタの前記第2の動きについては、前記第1ユーザに提供される表示における前記第2キャラクタに反映させないように制御し、
前記第1キャラクタと前記第2キャラクタとの距離が第2の距離の場合には、前記第2キャラクタの前記第1の動きについて、前記第1ユーザに提供される表示における前記第2キャラクタに反映させないように制御する
付記1に記載のプログラム。
同一の動きであっても、キャラクタ同士の距離に応じて不快感を与える動きになりかねないところ、このような構成によれば、キャラクタの動きの反映について、距離に応じた適切な制限を与えることができる。
【0188】
(付記6)
前記制御手段は、他のユーザの操作する所定のキャラクタが特定の動きをしたことに基づいて、当該所定のキャラクタを、前記第1ユーザに提供される表示において前記所定の動きが反映されないキャラクタに設定する
付記1に記載のプログラム。
このような構成によれば、特定の動きをするまでは所定のキャラクタによる所定の動きを許容しつつ、特定の動きをしたことに基づいて当該所定の動きについて反映されないようにすることができる。したがって、例えば、特定の動きをするか否かによって不快感を与えるキャラクタか否かを判定し、動きの反映についての制限を与えることができる。
【0189】
(付記7)
第1キャラクタを操作する第1ユーザに提供される表示において第2ユーザの操作に基づいて動く第2キャラクタについて、前記第2ユーザが前記第2キャラクタに実行させる所定の動きが、前記第1ユーザに提供される表示における前記第2キャラクタに反映されないように制御する制御手段(例えば、コントロールモジュール510またはコントロールモジュール1610)を備える
情報処理システム。
このような構成によれば、付記1に記載のプログラムと同様の作用効果を奏することができる。
【符号の説明】
【0190】
5 ユーザ、6 アバターオブジェクト、11 仮想空間、100 HMDシステム、110 HMDセット、120 HMD、130 モニタ、200 コンピュータ、210 プロセッサ、220 メモリ、230 ストレージ、240 入出力インターフェイス、250 通信インターフェイス、300 コントローラ、410 HMDセンサ、420 モーションセンサ、510 コントロールモジュール、520 レンダリングモジュール、530 メモリモジュール、540 通信制御モジュール、600 サーバ、610 プロセッサ、620 メモリ、630 ストレージ、640 入出力インターフェイス、650 通信インターフェイス、700 外部機器、1421 仮想カメラ制御モジュール、1422 視界領域決定モジュール、1423 基準視線特定モジュール、1424 顔器官検出モジュール、1425 動き検出モジュール、1426 仮想空間定義モジュール、1427 仮想オブジェクト生成モジュール、1428 操作オブジェクト制御モジュール、1429 アバター制御モジュール、1438 視界画像生成モジュール、1610 コントロールモジュール、1630 メモリモジュール、1640 通信制御モジュール
【要約】
【課題】快適に利用できる仮想空間を提供する。
【解決手段】プログラムは、コンピュータを、第1キャラクタを操作する第1ユーザに提供される表示において第2ユーザの操作に基づいて動く第2キャラクタについて、第2ユーザが第2キャラクタに実行させる所定の動きが、第1ユーザに提供される表示における第2キャラクタに反映されないように制御する制御手段として機能させる。
【選択図】
図16