(57)【特許請求の範囲】
【請求項１】
ＶＲ環境を作り出すように構成された仮想現実（ＶＲ）サーバの処理回路が、前記ＶＲ環境におけるオブジェクトを現在の状態から第１状態にする第１操作を行う第１要求を第１ユーザから受け付け、前記ＶＲ環境における前記オブジェクトを前記現在の状態から第２状態にする第２操作を行う第２要求を第２ユーザから受け付けるステップと、
前記第１要求と前記第２要求との競合を示す競合状態を生成するステップと、
前記第１操作を行った後の前記オブジェクトの画像を前記第１ユーザに提供するステップと、
前記第２操作を行った後の前記オブジェクトの画像を前記第２ユーザに提供するステップと、
前記競合を解決して前記第１要求の許可および前記第２要求の拒否を示す解決した状態を生成するステップと、
前記解決した状態を生成することに応答して、前記オブジェクトを前記第１状態にする操作の画像を前記第２ユーザに提供するステップとを含む、方法。
【請求項２】
前記オブジェクトを前記第１状態にする操作の画像を前記第２ユーザに提供するステップは、前記オブジェクトを前記第２状態から中間状態のセットを経て前記第１状態にする操作を生成するステップを含む、請求項１に記載の方法。
【請求項３】
前記第１要求および前記第２要求を受け付けることに応答して、前記第２操作を行った後の前記オブジェクトの画像を前記第１ユーザに提供し、前記第１操作を行った後の前記オブジェクトの画像を前記第２ユーザに提供するステップをさらに含み、前記第１ユーザおよび第２ユーザには、前記オブジェクトを前記第１状態にする前記操作の画像および前記第２状態にする前記操作の画像がそれぞれ提供され、さらに、
前記解決した状態を生成することに応答して、前記第２状態の前記オブジェクトの削除を前記第１ユーザに提供するステップを含み、
前記オブジェクトを前記第１状態にする操作の画像を前記第２ユーザに提供するステップは、前記第２状態の前記オブジェクトの前記削除を前記第２ユーザに提供するステップを含む、請求項１または２に記載の方法。
【請求項４】
前記オブジェクトは、複数の頂点、エッジ、およびフェースを含むメッシュとして前記ＶＲ環境において提供され、
前記競合状態を生成するステップは、前記第１操作および前記第２操作が行われる前記オブジェクトの前記メッシュの共通の頂点、エッジ、またはフェースを特定するステップを含む、請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記競合を解決するステップは、
（ｉ）前記第１操作を第１の操作変換として表し、（ｉｉ）前記第２操作を第２の操作変換として表すステップと、
前記第１の操作変換および前記第２の操作変換に所定のルールを適用して、前記第１操作の前記許可および前記第２操作の前記拒否を生成するステップとを含む、請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記第１操作の二次効果を記録するステップをさらに含む、請求項１から５のいずれか１項に記載の方法。
【請求項７】
コンピュータプログラムであって、前記コンピュータプログラムは、コードを含み、前記コードは、第１ユーザおよび第２ユーザが没入するＶＲ環境を作り出すように構成された仮想現実（ＶＲ：Ｖｉｒｔｕａｌ  Ｒｅａｌｉｔｙ）サーバのプロセッサ回路によって実行されると、前記プロセッサ回路に請求項１から６のいずれか１項に記載の方法を実行させる、コンピュータプログラム。
【請求項８】
第１ユーザおよび第２ユーザが没入するＶＲ環境を作り出すように構成された電子機器であって、
メモリと、
前記メモリに連結された制御回路とを備え、前記制御回路は、
前記ＶＲ環境におけるオブジェクトを現在の状態から第１状態にする第１操作を行う第１要求を第１ユーザから受け付け、前記ＶＲ環境における前記オブジェクトを前記現在の状態から第２状態にする第２操作を行う第２要求を第２ユーザから受け付け、
前記第１要求と前記第２要求との競合を示す競合状態を生成し、
前記第１操作を行った後の前記オブジェクトの画像を前記第１ユーザに提供し、
前記第２操作を行った後の前記オブジェクトの画像を前記第２ユーザに提供し、
前記競合を解決して、前記第１要求の許可および前記第２要求の拒否を示す解決した状態を生成し、
前記解決した状態を生成することに応答して、前記オブジェクトを前記第１状態にする操作の画像を前記第２ユーザに提供するように構成される、電子機器。
【請求項９】
前記オブジェクトを前記第１状態にする操作の画像を前記第２ユーザに提供するように構成された前記制御回路は、前記オブジェクトを前記第２状態から中間状態のセットを経て前記第１状態にする操作を生成するようにさらに構成される、請求項８に記載の電子機器。
【請求項１０】
前記制御回路は、さらに、
前記第１要求および前記第２要求を受け付けることに応答して、前記第２操作を行った後の前記オブジェクトの画像を前記第１ユーザに提供し、前記第１操作を行った後の前記オブジェクトの画像を前記第２ユーザに提供し、前記第１ユーザおよび第２ユーザには、前記オブジェクトを前記第１状態にする前記操作の画像および前記第２状態にする前記操作の画像をそれぞれ提供し、
前記解決した状態を生成することに応答して、前記第２状態の前記オブジェクトの削除を前記第１ユーザに提供するように構成され、
前記オブジェクトを前記第１状態にする操作の画像を前記第２ユーザに提供するように構成された前記制御回路は、前記第２状態の前記オブジェクトの前記削除を前記第２ユーザに提供するようにさらに構成される、請求項８または９に記載の電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１６年１２月２日に出願され、「ＣＯＬＬＡＢＯＲＡＴＩＶＥ  ＭＡＮＩＰＵＬＡＴＩＯＮ  ＯＦ  ＯＢＪＥＣＴＳ  ＩＮ  ＶＩＲＴＵＡＬ  ＲＥＡＬＩＴＹ（仮想現実におけるオブジェクトの共同操作）」と題された米国特許出願第１５／３６７，９５３号の継続出願であり、かつ、それに基づく優先権を主張し、そのすべての開示内容を、引用により本明細書に援用する。
【０００２】
技術分野
本明細書は、仮想現実環境のオブジェクトに関する。
【背景技術】
【０００３】
背景
複数のユーザは、共同環境においてソフトウェアオブジェクトとやり取りすることができる。ネットワークの遅れおよびその他の要因によって、２人以上のユーザが同時に同じオブジェクトを異なる形に変更しようとするなどの競合が生じる可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
包括的な一態様では、方法は、ＶＲ環境を作り出すように構成された仮想現実（ＶＲ）サーバの処理回路が、ＶＲ環境におけるオブジェクトを現在の状態から第１状態にする第１操作を行う第１要求を第１ユーザから受け付け、ＶＲ環境におけるオブジェクトを現在の状態から第２状態にする第２操作を行う第２要求を第２ユーザから受け付けるステップを含み得る。方法は、第１要求と第２要求との競合を示す競合状態を特定するステップも含み得る。方法は、第１操作を行った後のオブジェクトの画像を第１ユーザに提供するステップと、第２操作を行った後のオブジェクトの画像を第２ユーザに提供するステップとをさらに含み得る。方法は、競合を解決して第１要求の許可および第２要求の拒否を示す解決した状態を生成するステップをさらに含み得る。方法は、解決した状態を生成することに応答して、オブジェクトを第１状態にする操作のアニメーションを第２ユーザに提供するステップをさらに含み得る。
【０００５】
１つ以上の実装形態の詳細を、添付の図面および以下の説明において記載する。その他の特徴は、本明細書および図面から、ならびに請求の範囲から明らかになるだろう。
【図面の簡単な説明】
【０００６】
【図１】本明細書に記載の改良技術が実施され得る例示的な電子環境を示す図である。
【図２】図１に示す改良技術を実施する方法の例を示すフローチャートである。
【図３Ａ】図１に示す改良技術に従って競合を解決する前の、ＶＲ環境で１つのオブジェクトとやり取りしている一組のユーザ例の図である。
【図３Ｂ】図１に示す改良技術に従って競合を解決する前の、ＶＲ環境で１つのオブジェクトとやり取りしている一組のユーザ例の図である。
【図４】図１に示す改良技術に従って競合を解決する例示的な工程を説明するフローチャートである。
【図５Ａ】図１に示す改良技術に従って競合を解決した後の、ＶＲ環境でオブジェクトとやり取りしている一組のユーザ例の図である。
【図５Ｂ】図１に示す改良技術に従って競合を解決した後の、ＶＲ環境でオブジェクトとやり取りしている一組のユーザ例の図である。
【図６】コンピュータデバイス、および本明細書に記載の回路とともに使用できるモバイルコンピュータデバイスの例を示す図である。
【図７】例示的なＶＲヘッドマウントディスプレイ（ＨＭＤ）を示す図である。
【図８Ａ】例示的なＶＲ  ＨＭＤおよびコントローラを示す図である。
【図８Ｂ】例示的なＶＲ  ＨＭＤおよびコントローラを示す図である。
【図８Ｃ】例示的なＶＲ  ＨＭＤおよびコントローラを示す図である。
【発明を実施するための形態】
【０００７】
詳細な説明
複数のユーザは、ソフトウェアオブジェクトとやり取りすることができる。ネットワークの遅れおよびその他の要因によって、たとえば、共有ドキュメント編集環境における単語など、２人以上のユーザが同時に同じオブジェクトを異なる形に変更しようとするなどの競合が生じる可能性がある。共有環境における競合を解決するための従来の手法には、変更が承認されるまでオブジェクトを移動するまたはオブジェクトを隠す必要があった。
【０００８】
競合を解決するための従来の手法は、ユーザが没入しない２次元環境、たとえば、共同型文書作成ソフトウェアに応用される。しかしながら、ＶＲなどの３次元没入型環境では、競合を解決するための従来の手法では、ユーザを不快にさせたり、および／またはユーザそれぞれの環境での没入を邪魔してしまったりする可能性がある。
【０００９】
本明細書に記載の実装形態によると、ＶＲ環境における競合を解決する改良技術は、ＶＲ環境の仮想オブジェクトがＶＲ環境で２人以上のユーザによって同時に操作された場合、ＶＲサーバが競合状態を生成する。仮想オブジェクトが競合状態である場合、ＶＲサーバは、各ユーザにユーザ自身の操作を見せる。競合が解決されると、各ユーザは、仮想オブジェクトがアニメーション表示されて、その後解決状態になる様子を目にする。このように、各ユーザは、自然でまとまりのあるＶＲ環境のビューを目にし、その環境に没入したままでいる。仮想オブジェクトは、操作があり次第突然見えなくなって別の場所に別の形状で再び現れるのではなく、連続的に変化する。
【００１０】
図１は、上述した改良技術が実施され得る例示的な電子環境１００を示す図である。図１に示すように、電子環境１００は、複数のユーザ１１２（１）〜１１２（Ｎ）を含む。各ユーザは、ユーザデバイス１１４（１）〜１１４（Ｎ）によって制御されるそれぞれのＶＲコントローラ１１０（１）〜１１０（Ｎ）を介してＶＲ環境に没入する。電子環境１００は、ＶＲサーバコンピュータ１２０およびネットワーク１５０をも含む。
【００１１】
ＶＲコントローラ１１０は、ユーザ１１２が装着するヘッドマウントディスプレイ（ＨＭＤ）の形をとって、没入型仮想環境を提供してもよい。例示的な電子環境１００では、ＶＲコントローラ１１０（１）を装着したユーザ１１２（１）は、ユーザデバイス、すなわち、ユーザデバイス１１４（１）を把持する。ユーザデバイス１１４（１）は、たとえば、スマートフォン、コントローラ、ジョイスティック、または没入型仮想環境でやり取りするためにＶＲコントローラ１１０（１）とペアリングまたは通信できる別の持ち運び可能な携帯電子機器（複数可）であってもよい。ユーザデバイス１１４（１）は、たとえば、有線接続、または、たとえば、ＷｉＦｉあるいはＢｌｕｅｔｏｏｔｈ（登録商標）接続などの無線接続を介してＶＲコントローラ１１０（１）と動作可能に連結またはペアリングされてもよい。ユーザデバイス１１４（１）とＶＲコントローラ１１０（１）とのペアリングまたは動作可能な接続によって、ユーザデバイス１１４（１）とＶＲコントローラ１１０（１）との間の通信、およびユーザデバイス１１４（１）とＶＲコントローラ１１０（１）との間のデータのやり取りが可能になってもよい。これによって、没入型仮想環境でやり取りを行うためのＶＲコントローラ１１０（１）と通信を行うコントローラとしてユーザデバイス１１４（１）を機能させることができる。すなわち、たとえば、ユーザデバイス１１４（１）から発せられ、仮想のオブジェクトまたは特徴に選択のために向けられるビームまたは光線など、ユーザデバイス１１４（１）の操作、および／またはユーザデバイス１１４（１）のタッチ面上で受け付けられた入力、および／またはユーザデバイス１１４（１）の移動は、ＶＲコントローラ１１０（１）が提供する没入型仮想環境における、対応する選択、移動、またはその他の種類のやり取りに変換されてもよい。
【００１２】
ＶＲサーバコンピュータ１２０は、没入型仮想環境用のデータを生成し、ネットワーク１５０によってそのデータをユーザデバイス、たとえば、１１４（１）に送信するように構成される。図１に示すように、ＶＲサーバコンピュータ１２０は、ネットワーク１５０によってユーザデバイス１１４（１）と通信するコンピュータシステムとして実装されるが、その他の実装形態では、ＶＲサーバコンピュータ１２０は、ユーザデバイスのうちの１つ、たとえば、ユーザデバイス１１４（１）に備えられる。
【００１３】
いくつかの実施形態では、ＶＲサーバコンピュータ１２０の構成要素のうちの１つ以上は、メモリ１２６に格納された命令を処理するように構成されたプロセッサ（たとえば、処理装置１２４）であり得、または、当該プロセッサを含み得る。図１に示すこのような命令として、仮想環境（ＶＥ：Ｖｉｒｔｕａｌ  Ｅｎｖｉｒｏｎｍｅｎｔ）通信マネージャ１６０およびＶＥ競合解決マネージャ１７０が挙げられる。さらには、図１に示すように、メモリ１２６は、様々なデータを格納するように構成され、当該データについては、このようなデータを利用するそれぞれのマネージャに関連して説明する。
【００１４】
ＶＥ通信マネージャ１６０は、ＶＥデータ１４０としてＶＲサーバコンピュータ１２０において表される仮想環境に対する変更の要求を受け付けて処理するように構成される。たとえば、仮想環境に没入しているユーザ１１２（１）が仮想環境において仮想オブジェクト１４２を移動させると、ＶＲコントローラ／ディスプレイ１１０（１）は、この変更をユーザ１１２（１）にローカルで表示する。しかしながら、ＶＥデータ１４０が表示のために処理されるユーザデバイス１１４（１）は、ＶＲサーバコンピュータ１２０に格納されたＶＥデータが更新されるよう、仮想オブジェクトを移動させることによって生じた仮想環境での変更をネットワーク１５０によってＶＲサーバコンピュータ１２０に送る。このように、１人のユーザによって行われた仮想環境に対する変更を、仮想環境に没入しているすべてのユーザが体験することになる。
【００１５】
いくつかの実装形態では、図１に示すように、仮想環境の仮想オブジェクト１４２は、メッシュ１４４として表される。３次元仮想オブジェクト１４２のメッシュ１４４は、任意の数の頂点１４６、エッジ１４８、およびフェース１５０を含んでもよい。このように、オブジェクト１４２に対するいかなる変更も、１つ以上の頂点１４６、エッジ１４８、および／またはフェース１５０に対する具体的な変更として表されてもよい。さらには、ＶＲサーバコンピュータ１２０は、メッシュ１４４に対する直接の変更だけでなく、たとえば、オブジェクト１４２の変形の一部としての頂点１４６の移動によって、別の頂点１４６が移動されるなどの二次効果も格納してもよい。
【００１６】
ユーザ、たとえば、ユーザ１１２（１）が仮想環境の仮想オブジェクト１４２に対して変更を行った場合、ＶＥ通信マネージャ１４２は、この変更を未処理のオブジェクト変更１５４としてメモリ１２６に格納するように構成される。メモリ１２６に格納された各々の未処理のオブジェクト変更１５４は、オブジェクト１４２を変更する要求として表される。ほとんどの場合、未処理のオブジェクト変更１５４は互いに競合しておらず（すなわち、これらの変更は第１の変更が第２の変更のいずれの部分も取り消さないという点で統計的に独立（ｏｒｔｈｏｇｏｎａｌ）している）、オブジェクト１４２に対する最終的変更（ｎｅｔ  ｃｈａｎｇｅ）は、当該未処理のオブジェクト変更１５４の集約である。いくつかの実装形態では、ＶＲサーバコンピュータ１２０は、未処理のオブジェクト変更１５４に従ってメッシュ１４４に対して変更を行うように構成される。次に、ＶＥ通信マネージャ１６０は、各ユーザ１１２（１）〜１１２（Ｎ）が仮想環境のオブジェクト１４２に集約された同じ変更を目にするよう、この変更を各ユーザデバイス１１４（１）〜１１４（Ｎ）に渡すように構成される。
【００１７】
しかしながら、場合によっては、競合する未処理のオブジェクト変更１５４がある可能性がある。たとえば、未処理のオブジェクト変更１５４に格納されている、オブジェクト１４２のエッジ１４８を右に１０ｃｍ移動するというユーザ１１２（１）からの要求を考える。この同じエッジ１４８を実質的に同時に左に１０ｃｍ移動する要求もあるとする。このような未処理のオブジェクト変更１５４は、互いに競合するが、一致していない頂点、エッジ、およびフェースに対する変更であっても、競合が生じる結果になり得る。たとえば、第１フェースおよび隣接する第２フェースの移動は、第２フェースの動きが第１フェースの動きの一部を取り消してしまう場合、互いに競合する動きが生じる結果になり得る。
【００１８】
これらの流れに沿って、ＶＥ競合解決マネージャ１７０は、未処理のオブジェクト変更１５４において競合するオブジェクト変更の存在を示す競合状態１５２を生成するように構成される。いくつかの実装形態では、ＶＥ競合解決マネージャ１７０は、同じタイムスタンプを有するすべての未処理のオブジェクト変更１５４の位置を特定し、これらの変更で指定されたメッシュ１４４に対する変更にルールセットを適用することによって、競合状態１５２を生成する。たとえば、１つのこのようなルールとして、同じ頂点１４６、エッジ１４８、および／またはフェース１５０が２つ以上の形に同時に変更される場合は必ず競合状態１５２を生成するという形をとってもよい。したがって、エッジを右および左に１０ｃｍ同時に移動する上記例は、競合状態１５２を生成する。一般に、このような競合状態１５２は、上述したような競合条件を特定することに応答して、ＶＥ競合解決マネージャ１７０が生成する。
【００１９】
競合状態１５２の存在に応答して、ＶＥ競合解決マネージャ１７０は、さらに、この競合を解決するように構成される。これに関して、競合を解決することは、通常、競合状態１５２を生じさせると特定された未処理のオブジェクト変更１５４のうちの１つを選択することを意味する。いくつかの実装形態では、ＶＥ競合解決マネージャ１７０は、ルールセットを適用し、仮想環境内で適用する未処理のオブジェクト変更１５４を選択するように構成される。次に、ＶＥ通信マネージャ１６０は、選択されたオブジェクト変更をネットワーク１５０によってユーザデバイス１１４（１）〜１１４（Ｎ）に伝達するように構成される。
【００２０】
ＶＲサーバコンピュータ１２０は、ネットワークインタフェース１２２と、１つ以上の処理装置１２４と、メモリ１２６とを備える。ネットワークインタフェース１２２は、ネットワーク１５０から受信した電気信号および／または光信号をＶＲサーバコンピュータ１２０が使用するための電子的形式に変換するための、たとえば、Ｅｔｈｅｒｎｅｔ（登録商標）アダプタ、Ｔｏｋｅｎ  Ｒｉｎｇアダプタなどを含む。処理装置１２４の一式は、１つ以上の処理チップおよび／またはアセンブリを含む。メモリ１２６は、揮発性メモリ（たとえば、ＲＡＭ）、および、１つ以上のＲＯＭ、ディスクドライブ、ソリッドステートドライブなどの不揮発性メモリの両方を含む。処理装置１２４の一式とメモリ１２６とは、あわせて制御回路を形成する。制御回路は、本明細書に記載の様々な方法および機能を実行するように構成および配置されている。
【００２１】
ユーザデバイス１２０の構成要素（たとえば、モジュール、処理装置１２４）は、１つ以上の種類のハードウェア、ソフトウェア、ファームウェア、オペレーティングシステム、ランタイムライブラリなどを含み得る１つ以上のプラットフォーム（たとえば、１つ以上の同様または異なるプラットフォーム）に基づいて動作するように構成され得る。いくつかの実装形態では、ＶＲサーバコンピュータ１２０の構成要素は、デバイスのクラスタ（たとえば、サーバファーム）内で動作するように構成され得る。このような実装形態では、ＶＲサーバコンピュータ１２０の構成要素の機能および処理は、デバイスのクラスタのうちのいくつかのデバイスに分散され得る。
【００２２】
ＶＲサーバコンピュータ１２０の構成要素は、属性を処理するように構成された任意の種類のハードウェアおよび／またはソフトウェアであり得、または、当該ハードウェアおよび／またはソフトウェアを含み得る。いくつかの実装形態では、図１のＶＲサーバコンピュータ１２０の構成要素に示される構成要素のうちの１つ以上の部分は、ハードウェアベースのモジュール（たとえば、デジタル信号プロセッサ（ＤＳＰ：Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、メモリ）、ファームウェアモジュール、および／またはソフトウェアベースのモジュール（たとえば、コンピュータコードのモジュール、コンピュータにおいて実行され得るコンピュータ読み取り可能な命令のセット）であり得、または当該モジュールを含み得る。たとえば、いくつかの実装形態では、ＶＲサーバコンピュータ１２０の構成要素のうちの１つ以上の部分は、少なくとも１つのプロセッサ（図示せず）によって実行されるように構成されたソフトウェアモジュールであり得、または、当該ソフトウェアモジュールを含み得る。いくつかの実装形態では、構成要素の機能は、図１に示すモジュールおよび／または構成要素とは異なるモジュールおよび／または構成要素に含まれ得る。
【００２３】
図示しないが、いくつかの実装形態では、ユーザデバイス１２０の構成要素（または、その一部）は、たとえば、データセンター（たとえば、クラウドコンピューティング環境）、コンピュータシステム、１つ以上のサーバ／ホスト装置内などで動作するように構成され得る。いくつかの実装形態では、ＶＲサーバコンピュータ１２０の構成要素（または、その一部）は、ネットワーク内で動作するように構成され得る。よって、ＶＲサーバコンピュータ１２０の構成要素（または、その一部）は、１つ以上の装置および／または１つ以上のサーバ装置を含み得る様々な種類のネットワーク環境内で機能するように構成され得る。たとえば、ネットワークは、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）などであり得、または、当該ＬＡＮおよびＷＡＮを含み得る。ネットワークは、無線ネットワークおよび／または有線ネットワーク、たとえば、ゲートウェイ装置、ブリッジ、スイッチなどを用いて実現されるネットワークであり得、または、当該無線ネットワークおよび／または有線ネットワークを含み得る。ネットワークは、１つ以上のセグメントを含み得、および／または、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）および／またはプロプライエタリプロトコルなど、様々なプロトコルに基づいてセグメントの一部を有し得る。ネットワークは、少なくともインターネットの一部を含み得る。
【００２４】
いくつかの実施形態では、ＶＲサーバコンピュータ１２０の構成要素のうちの１つ以上は、メモリに格納された命令を処理するように構成されたプロセッサであり得、または当該プロセッサを含み得る。たとえば、ＶＥ通信マネージャ１６０（および／または、その一部）とＶＥ競合解決マネージャ１７０とは、１つ以上の機能を実現するための工程に関する命令を実行するように構成されたメモリとプロセッサとの組合せであり得る。
【００２５】
いくつかの実装形態では、メモリ１２６は、ＲＡＭ、ディスクドライブメモリ、フラッシュメモリなど、任意の種類のメモリであり得る。いくつかの実装形態では、メモリ１２６は、ＶＲサーバコンピュータ１２０の構成要素に関連付けられた２つ以上のメモリコンポーネント（たとえば、２つ以上のＲＡＭコンポーネントまたはディスクドライブメモリ）として実現され得る。いくつかの実装形態では、メモリ１２６は、データベースメモリであり得る。いくつかの実装形態では、メモリ１２６は、非ローカルメモリであり得、または当該非ローカルメモリを含み得る。たとえば、メモリ１２６は、複数の装置（図示せず）によって共有されるメモリであり得、または、当該メモリを含み得る。いくつかの実装形態では、メモリ１２６は、ネットワーク内のサーバ装置（図示せず）に関連付けられ、ＶＲサーバコンピュータ１２０の構成要素を提供するように構成され得る。図２に示すように、メモリ１２６は、ＶＥデータ１４０、競合状態１５２、および未処理のオブジェクト変更１５４を含む様々なデータを格納するように構成される。
【００２６】
図２は、仮想環境内の競合を解決する例示的な方法２００を示すフローチャートである。方法２００は、図１に関して説明したソフトウェア構成によって実行されてもよい。ソフトウェア構成は、ＶＲサーバコンピュータ１２０のメモリ１２６に存在し、処理装置１２４の一式によって実行される。
【００２７】
ステップ２０２において、ＶＲサーバコンピュータ１２０は、第１ユーザ、たとえば、ユーザ１１２（１）から第１要求を受け付け、第２ユーザ、たとえば、ユーザ１１２（２）から第２要求を受け付ける。たとえば、第１要求は、仮想環境において任意の軸の右側にＶＲオブジェクトのエッジを第１ユーザが１０ｃｍ移動させることに起因して生じてもよい。さらには、第２要求は、仮想オブジェクトの同じエッジを第２ユーザが反対方向に１０ｃｍ移動させることに起因して生じてもよい。これらの要求は、仮想環境でのエッジの移動に応答して、それぞれのユーザデバイス１１４（１）および１１４（２）上のインタプリタによって生成される操作変換（ｏｐｅｒａｔｉｏｎａｌ  ｔｒａｎｓｆｏｒｍ）という形をとってもよい。
【００２８】
ステップ２０４において、要求を受け付けることに応答して、ＶＲサーバコンピュータ１２０は、競合状態を生成し、各ユーザに自身のＶＲオブジェクトに対する操作（すなわち、第１操作および第２操作）の結果を提供する。これは、ＶＲサーバコンピュータ１２０が第１要求と第２要求との間に競合を検出したと想定している。たとえば、各ユーザ１１２（１）および１１２（２）にＶＲオブジェクトの初期のそれぞれの操作を提供するに当たって、ＶＲサーバコンピュータ１２０は、ユーザデバイス１１４（１）および１１４（２）の各々に、表示されている仮想環境内のＶＲオブジェクトに対するローカルな変更を表示するように構成されたソフトウェアおよび／またはハードウェアを提供する。したがって、短い間、コントローラ／ディスプレイ１１０（１）は、コントローラ／ディスプレイ１１０（２）がユーザ１１２（２）に示すＶＲオブジェクトの位置とは異なる位置をユーザ１１２（１）に示す。しかしながら、いくつかの実装形態では、ＶＲサーバコンピュータ１２０は、競合が解決されるまで、オブジェクトの異なる位置をユーザデバイス１１４（１）および１１４（２）の各々に送信してもよい。
【００２９】
しかしながら、競合条件を最初に検出するために、ＶＲサーバコンピュータ１２０は、要求をリアルタイムで調べてもよく、要求が、たとえば、未処理のオブジェクト変更１５４としてメモリに格納されているかどうかを調べてもよい。たとえば、後者の場合、ＶＲサーバ１２０は、オブジェクトメッシュの同じ頂点、エッジ、および／またはフェースに対する変更について実質的に同じタイムスタンプを有する要求を調べてもよい。このような変更があった場合、ＶＲサーバコンピュータ１２０は、競合状態１５２を生成してもよい。
【００３０】
ステップ２０６において、ＶＲサーバコンピュータ１２０は、第１要求を許可して第２要求を拒否することによって競合を解決する。いくつかの実装形態では、ＶＲサーバコンピュータ１２０は、ルールセットを用いてこのような競合を解決する。たとえば、あるルールセットは、右への動きが左への動きよりも好まれることを条件として指定してもよい。この場合、第１要求におけるエッジの右への移動がそのエッジの左への移動よりも好まれ、第１要求が好まれることになる。いくつかの実装形態では、ＶＲサーバコンピュータ１２０は、すべての要求を、競合解決の際に許可されたどうかに関わらず、メモリ１２６に保持しておく。
【００３１】
ステップ２０８において、ＶＲサーバコンピュータ１２０は、第１ユーザ１１２（１）によって操作されたＶＲオブジェクトを第２ユーザ１１２（２）に提供する。なお、ＶＲサーバコンピュータ１２０は第１ユーザ１１２（１）に当該ユーザの操作をすでに提供しているため、その操作を再送する必要はない。いずれにせよ、この操作を第２ユーザに送ることの効果は、自然でまとまりのある仮想環境のビューを当該ユーザに提供することである。たとえば、従来の技術では、共同ワードプロセッサなど、２次元の非没入型環境において利用される種類の技術であったため、仮想環境を保守する制御サーバは、オブジェクトを削除、または、競合が解決されるまで仮想環境でのアクションを停止させていた。このような従来の技術は、仮想環境に没入しているユーザの脳が頼りにする連続性が欠如しているため、ユーザに悪影響をもたらす可能性があるであろう。対照的に、本明細書に記載の改良技術によって、このような連続性が可能になると同時に、競合に対するロバストな解決策を提供することができる。
【００３２】
いくつかの実装形態では、ＶＲサーバコンピュータ１２０は、第２操作を行った後のオブジェクトの画像を第１ユーザに提供し、第１操作を行った後のオブジェクトの画像を第２ユーザに提供する。この場合、第１ユーザおよび第２ユーザの各々には、オブジェクトを第１状態および第２状態にした操作の画像が提供される。次に、ＶＲサーバコンピュータ１２０は、第２状態のオブジェクトの画像は、余計であり、もはや必要ないので、削除したものを第１ユーザ１１２（１）および第２ユーザ１１２（２）の各々に提供してもよい。
【００３３】
図３Ａおよび図３Ｂは、仮想環境において競合を生成する例を示す図である。図３Ａに示すように、コントローラ３０２および３５２をそれぞれ持った２人のユーザ３００および３５０がいる。ユーザ３００は、ヘッドマウントディスプレイ（ＨＭＤ）３１０を介して、仮想環境における自身のアバター３０４およびオブジェクト３２０を見る。ユーザ３５０は、ＨＭＤ３６０を介して、仮想環境における自身のアバター３７０およびオブジェクト３２０を見る。
【００３４】
図３Ｂに示すように、ユーザ３００は、自身のアバター３０４を介して、オブジェクト３２０のエッジ３２２を少しの距離、たとえば、仮想環境内のある長さ寸法で計測される１０単位分だけ右に動かして位置３２４まで移動させる。同時に、ユーザ３５０は、ユーザのアバター３７０を介して、オブジェクト３２０のエッジ３２２を左に１０単位分だけ動かして位置３２６まで移動させる。ユーザ３００および３５０によるこれらの操作によって、当該ユーザそれぞれのユーザデバイス（図示せず）は、オブジェクトを変更するための要求を生成する。
【００３５】
図４は、図３に示す操作から生成された上述の要求など、仮想環境のオブジェクトを変更する要求の例示的な処理を示すフローチャートである。はじめに、ＶＲサーバコンピュータ１２０は、ＶＥ通信マネージャ１６０を介してオブジェクト３２０に対する変更３２４および３２６の要求を受け付ける。次に、ＶＲサーバコンピュータ１２０は、これらの要求を未処理のオブジェクト変更１５４としてメモリ１２６に格納する。
【００３６】
いくつかの実装形態では、未処理のオブジェクト変更１５４は、操作変換で表現される。操作変換（ＯＴ：Ｏｐｅｒａｔｉｏｎａｌ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎ）とは、最新の共同型ソフトウェアシステムにおいて共同機能の範囲をサポートするための技術である。ＯＴは、元々、プレーンテキスト文書を共同編集する際の整合性の維持および同時制御のために発明されたが、オブジェクトを含んだ同じ仮想環境を共有する異なるユーザによるそれらのオブジェクトの操作を表すために、本明細書に記載の改良技術の一部としてＯＴを使用できることが分かった。
【００３７】
図４では、操作は、未処理のオブジェクト変更１５４としてメモリに格納されている例示的なＯＴ４１０として示されている。この例では、第１のＯＴは、動作「Ｍｏｖｅ（移動）」を、機能が作用するある要素（図３に示すエッジ３２２）の機能として、ならびに、この作用の大きさおよび方向（ここでは、右に１０単位を示す）として表現する。また、第１のＯＴは、第１要求が時間Ｔ１に受け付けられたことも表現する。第２のＯＴは、エッジ３２２が左へ１０単位分だけ移動すること、およびこの要求が時間Ｔ２に受信されたことを表現する。
【００３８】
未処理のオブジェクト変更１５４を表すＯＴの一貫性のある言語を用いて、ＶＲサーバコンピュータ１２０は、未処理のオブジェクト変更１５４の間に競合があるかどうかを判断する。この場合、両方のＯＴ４１０が、同じ要素に対して異なる方向および異なる大きさの同じ動作を行う。一般的に言えば、時間Ｔ２とＴ１との差がある閾値よりも少ない場合、たとえば、０．１秒であった場合（このような閾値は、これよりも多かったり少なかったりするが）、ＶＲサーバコンピュータ１２０は、競合状態１５２を生成する。一例では、競合条件は、複数の異なるユーザが、ある閾値間隔内のそれぞれの時間に同じオブジェクトに対して変更を行おうと試みる場合に、または、図１に関して上述した状態で成立する。
【００３９】
競合状態１５２がない場合、ＶＲサーバコンピュータ１２０は、未処理のオブジェクト変更１５４に対して集約動作を任意のタイミングで行う。たとえば、２つの競合しない変更が実質的に同時に要求された場合、ＶＲサーバコンピュータ１２０は、これら２つの変更の合成を行う。ほとんどの場合、合成の順序は重要ではない。しかしながら、順序が重要である場合、たとえば、異なる軸を中心とした３次元での回転については、ＶＲサーバコンピュータ１２０は、競合状態１５２を生成して、ＶＥ競合解決マネージャ１７０を呼び出し得る。
【００４０】
競合状態１５２がある場合、ＶＲサーバコンピュータ１２０は、ＶＥ競合解決マネージャ１７０を呼び出す。ＶＥ競合解決マネージャ１７０は、未処理のオブジェクト変更１５４のうち、競合状態１５２にある１つの未処理のオブジェクト変更１５４を選択することによって競合を解決するように構成される。本明細書に記載されるように、いくつかの実装形態では、ＶＥ競合解決マネージャ１７０は、ルールセット４２０を参照してこの選択を行う。
【００４１】
ルールセット４２０は、競合状態のいずれの未処理のオブジェクト変更１５４を仮想環境における変更として選ぶかを選択するためのルールセットを提供するように構成される。ルールセット４２０は、未処理のオブジェクト変更１５４を表すために使用されるのと同じＯＴ言語４１０で表されてもよい。たとえば、１つのこのようなルールは、「Ｍｏｖｅ（Ｅｄｇｅ，＋）＞Ｍｏｖｅ（Ｅｄｇｅ，−）」と表されてもよく、右への移動が左への移動よりも好まれることを意味する。このようなルールは、第１要求を第２要求よりも好む。
【００４２】
したがって、競合状態では、ＶＲサーバコンピュータ１２０は、競合状態１５２にある未処理のオブジェクト変更１５４のうちの１つを選択する。このように、ＶＲサーバコンピュータ１２０は、すべてのユーザに一貫性のある仮想環境を実現する。
【００４３】
いずれにしても、競合があろうがなかろうが、ＶＥ通信マネージャは、オブジェクトに対するいかなる最終的変更もユーザデバイス１１４（１）〜１１４（Ｎ）の各々に伝達する。競合があり、１つの変更しか行われなかった場合、要求が許可されなかったユーザは、たとえば、テキストメッセージ、視覚的プロンプト（たとえば、点滅）、および音声メッセージを介して変更を自分に伝達させる。上記例では、ユーザ１１２（１）が既に変更を表示させているので、ユーザ１１２（２）のみが、オブジェクト３２０に対する変更を自分に伝達させる必要がある。
【００４４】
図５Ａおよび図５Ｂは、図３Ａおよび図３Ｂと同様であるが、ＶＲディスプレイ３６０が変更３２６ではなく第１の変更３２４の受け付け結果を表示している点で異なる。図５Ａにおいて、各ユーザ３００および３５０は、それぞれの変更をユーザ自身のディスプレイ３１０および３６０で目にする。図５Ｂにおいて、変更３２６が見えなくなり、変更３２４と同一の新しい変更５２４が表示される。ユーザ３５０は、３２６でマークされた位置にあったオブジェクトが５２４でマークされた位置に移動していることに気づくだろう。この動きは、たとえば、中間状態も含むほとんどの場合、なめらかであり、変更がユーザ３５０にとって不快にならないよう、連続的である。一例では、オブジェクト３２０の位置３２６の５２６への変更は、１つ以上の中間状態で描画され、中間状態の描画は、ユーザ３５０に表示されるが、ユーザ３００には表示されない。そのように、ユーザ３５０は、仮想オブジェクト３２０がアニメーション表示されて、その後解決状態になる様子を目にする。
【００４５】
図６は、本明細書に記載の技術とともに利用され得る、汎用コンピュータデバイス６００および汎用モバイルコンピュータデバイス６５０の例を示す図である。
【００４６】
図６に示すように、コンピューティングデバイス６００は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、およびその他適切なコンピュータなど、様々な形態のデジタルコンピュータを表すよう意図される。コンピューティングデバイス６５０は、携帯情報端末、携帯電話、スマートフォン、およびその他同様のコンピューティングデバイスなど、様々な形態のモバイル機器を表すよう意図される。本明細書に示す構成要素、それらの接続および関係、ならびにそれらの機能は、例示に過ぎず、本明細書に記載および／またはクレームされた発明の実装形態を限定するものではない。
【００４７】
コンピューティングデバイス６００は、プロセッサ６０２と、メモリ６０４と、記憶装置６０６と、メモリ６０４および高速拡張ポート６１０に接続された高速インタフェース６０８と、低速バス６１４および記憶装置６０６に接続された低速インタフェース６１２とを備える。構成要素６０２、６０４、６０６、６０８、６１０、および６１２の各々は、様々なバスを用いて互いに接続されており、共通のマザーボード上に実装されてもよく、またはその他の方法で適宜実装されてもよい。プロセッサ６０２は、コンピューティングデバイス６００内で実行するための命令を処理することができ、命令は、高速インタフェース６０８に連結されたディスプレイ６１６など、外付けの入出力装置上のＧＵＩのためのグラフィック情報を表示するためのメモリ６０４に格納された命令または記憶装置６０６上に格納された命令を含む。その他の実装形態では、複数のプロセッサおよび／または複数のバスが複数のメモリおよび複数種類のメモリとともに適宜利用されてもよい。また、（たとえば、サーババンク、ブレードサーバ群、または多重プロセッサシステムなどとしての）必要な動作の一部を各々が提供する複数のコンピューティングデバイス６００が接続されてもよい。
【００４８】
メモリ６０４は、コンピューティングデバイス６００内の情報を格納する。一実装形態では、メモリ６０４は、１つまたは複数の揮発性記憶装置である。別の実装形態では、メモリ６０４は、１つまたは複数の不揮発性記憶装置である。また、メモリ６０４は、磁気ディスクまたは光ディスクなど、別の形態のコンピュータ読み取り可能な媒体であってもよい。
【００４９】
記憶装置６０６は、コンピューティングデバイス６００用の大容量ストレージを提供することができる。一実装形態では、記憶装置６０６は、フロッピー（登録商標）ディスク装置、ハードディスク装置、光ディスク装置、またはテープ装置、フラッシュメモリもしくは他の同様の固体メモリ装置、または、ストレージエリアネットワークもしくはその他の構成に含まれる装置を含む装置のアレイなど、コンピュータ読み取り可能な媒体であってもよく、または、当該コンピュータ読み取り可能な媒体を含んでもよい。情報担体にコンピュータプログラムプロダクトが有形に含まれ得る。また、このコンピュータプログラムプロダクトは、命令を含んでもよく、当該命令は、実行されると、上述した方法など、１つ以上の方法を実行する。情報担体は、メモリ６０４、記憶装置６０６、または、プロセッサ６０２上のメモリなど、コンピュータ読み取り可能な媒体または機械読み取り可能な媒体である。
【００５０】
高速コントローラ６０８は、コンピューティングデバイス５００のための多くの帯域幅を必要とする動作を管理し、低速コントローラ６１２は、より低い帯域幅の多くを必要とする動作を管理する。このような機能の割振りは、例示に過ぎない。一実装形態では、高速コントローラ６０８は、（たとえば、グラフィックスプロセッサまたはアクセラレータを通じて）メモリ６０４、ディスプレイ６１６に連結され、高速拡張ポート６１０に接続される。高速拡張ポート６１０は、様々な拡張カード（図示せず）を受け付けてもよい。この実装形態では、低速コントローラ６１２は、記憶装置５０６および低速拡張ポート６１４に連結される。様々な通信ポート（たとえば、ＵＳＢ、Ｂｌｕｅｔｏｏｔｈ、Ｅｔｈｅｒｎｅｔ、無線Ｅｔｈｅｒｎｅｔ）を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナなどの１つ以上の入出力装置、または、スイッチもしくはルータなどのネットワーク装置に、たとえば、ネットワークアダプタを通じて連結されてもよい。
【００５１】
コンピューティングデバイス６００は、図示したような複数の異なる形態で実現されてもよい。たとえば、標準的なサーバ６２０として、または多くの場合、このようなサーバの群で実現されてもよい。または、ラックサーバシステム６２４の一部として実現されてもよい。これに加えて、ラップトップコンピュータ６２２など、パーソナルコンピュータで実現されてもよい。これに代えて、コンピューティングデバイス６００の構成要素は、デバイス６５０など、モバイル機器（図示せず）に含まれるその他の構成要素と組み合わされてもよい。このようなデバイスの各々は、コンピューティングデバイス６００、６５０のうちの１つ以上を含んでよく、互いに通信を行う複数のコンピューティングデバイス６００、６５０によってシステム全体が構成されてもよい。
【００５２】
コンピューティングデバイス６５０は、特に、プロセッサ６５２と、メモリ６６４と、ディスプレイ６５４などの入出力装置と、通信インタフェース６６６と、送受信装置６６８とを備える。デバイス６５０には、追加ストレージを提供するためのマイクロドライブまたはその他の装置など、記憶装置が提供されてもよい。構成要素６５０、６５２、６６４、６５４、６６６、および６６８の各々は、様々なバスを用いて互いに接続されており、当該構成要素のうちのいくつかは、共通のマザーボード上に実装されてもよく、またはその他の方法で適宜実装されてもよい。
【００５３】
プロセッサ６５２は、メモリ６６４に格納された命令を含む命令をコンピューティングデバイス６５０内で実行できる。プロセッサは、別個の複数のアナログプロセッサおよびデジタルプロセッサを含むチップのチップセットとして実現されてもよい。プロセッサによって、たとえば、ユーザインタフェースの制御、デバイス６５０によって実行されるアプリケーション、およびデバイス６５０による無線通信など、デバイス６５０のその他の構成要素間の協調が可能になってもよい。
【００５４】
プロセッサ６５２は、ディスプレイ６５４に連結された制御インタフェース６５８および表示インタフェース６５６を通じてユーザと通信してもよい。ディスプレイ６５４は、たとえば、ＴＦＴ  ＬＣＤ（Ｔｈｉｎ−Ｆｉｌｍ−Ｔｒａｎｓｉｓｔｏｒ  Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）もしくはＯＬＥＤ（Ｏｒｇａｎｉｃ  Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）ディスプレイ、またはその他の適切なディスプレイ技術であってもよい。表示インタフェース６５６は、グラフィック情報およびその他の情報をユーザに提示するためのディスプレイ６５４を駆動するための適切な回路を備えてもよい。制御インタフェース６５８は、ユーザからコマンドを受信し、プロセッサ６５２に実行を依頼するために変換してもよい。これに加えて、デバイス６５０のその他のデバイスとの近距離通信が可能になるよう、プロセッサ６５２と通信する外部インタフェース６６２が提供されてもよい。外部インタフェース６６２によって、たとえば、いくつかの実装形態では有線通信、その他の実装形態では無線通信が可能になってもよく、また、複数のインタフェースが利用されてもよい。
【００５５】
メモリ６６４は、コンピューティングデバイス６５０内の情報を格納する。メモリ６６４は、１つまたは複数のコンピュータ読み取り可能な媒体、１つまたは複数の揮発性記憶装置、または、１つまたは複数の不揮発性記憶装置、のうちの１つ以上として実現され得る。また、拡張メモリ６７４は、拡張インタフェース６７２を通してデバイス６５０に提供および接続されてもよい。拡張インタフェース６７２は、たとえば、ＳＩＭＭ（Ｓｉｎｇｌｅ  Ｉｎ  Ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）カードインタフェースを含んでもよい。このような拡張メモリ６７４は、デバイス６５０のための追加の記憶空間を提供してもよく、または、デバイス６５０のためのアプリケーションまたはその他の情報も格納してもよい。具体的には、拡張メモリ６７４は、上述した工程を実行または補助するための命令を含んでもよく、セキュアな情報も含んでもよい。よって、たとえば、拡張メモリ６７４は、デバイス６５０のためのセキュリティモジュールとして提供されてもよく、デバイス６５０のセキュアな使用を可能にする命令がプログラムされていてもよい。これに加えて、セキュアなアプリケーションは、ハッキングできない方法でＳＩＭＭカード上にＩＤ情報を置くなど、追加情報とともにＳＩＭＭカードを介して提供されてもよい。
【００５６】
メモリは、たとえば、後述するフラッシュメモリおよび／またはＮＶＲＡＭメモリを含んでもよい。一実装形態では、情報担体にコンピュータプログラムプロダクトが有形に含まれる。このコンピュータプログラムプロダクトは、命令を含み、当該命令は、実行されると、上述した方法など、１つ以上の方法を実行する。情報担体は、メモリ６６４、拡張メモリ６７４、またはプロセッサ６５２上のメモリなど、コンピュータ読み取り可能な媒体または機械読み取り可能な媒体であり、たとえば、送受信装置６６８または外部インタフェース６６２を介して受信されてもよい。
【００５７】
デバイス６５０は、通信インタフェース６６６を通して無線通信を行ってもよい。通信インタフェース６６６は、必要であれば、デジタル信号処理回路を備えてもよい。通信インタフェース６６６によって、とくに、ＧＳＭ（登録商標）音声通話、ＳＭＳ、ＥＭＳ、もしくはＭＭＳメッセージング、ＣＤＭＡ、ＴＤＭＡ、ＰＤＣ、ＷＣＤＭＡ（登録商標）、ＣＤＭＡ２０００、またはＧＰＲＳなど、様々なモードまたはプロトコル下の通信が可能になってもよい。このような通信は、たとえば、無線周波数送受信装置６６８を通して生じてもよい。これに加えて、Ｂｌｕｅｔｏｏｔｈ、ＷｉＦｉ、またはその他のこのような送受信装置（図示せず）を用いるなどして、近距離通信が生じてもよい。これに加えて、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）受信モジュール６７０は、追加のナビゲーション関係または位置関係の無線データをデバイス６５０に提供してもよい。追加のナビゲーション関係または位置関係の無線データは、デバイス６５０上で実行するアプリケーションによって適宜利用され得てもよい。
【００５８】
また、デバイス６５０は、オーディオコーデック６６０を用いて、音声による通信を行ってもよい。オーディオコーデック６６０は、ユーザからの音声情報を受信し、使用可能なデジタル情報に変換してもよい。同様に、オーディオコーデック６６０は、たとえば、デバイス６５０のハンドセットにおいて、スピーカを通してなど、ユーザのために音を生成してもよい。このような音は、音声電話通話からの音声を含んでもよく、録音音声（たとえば、音声メッセージ、音楽ファイルなど）を含んでもよく、デバイス６５０上で動作するアプリケーションによって生成された音も含んでもよい。
【００５９】
コンピューティングデバイス６５０は、図示したような複数の異なる形態で実現されてもよい。たとえば、携帯電話６８０として実現されてもよい。また、スマートフォン６８２、携帯情報端末、または他の同様のモバイル機器の一部として実現されてもよい。
【００６０】
図７は、図３および図５に示すヘッドマウントディスプレイの例示的な実装形態を示す図である。図７では、ＨＭＤ７００を装着したユーザが、持ち運び可能な携帯電子機器７０２を把持している。携帯電子機器７０２は、たとえば、スマートフォン、コントローラ、ジョイスティック、または、ＨＭＤ７００が作り出した没入型仮想環境においてやり取りを行うためのＨＭＤ７００とペアリングまたは通信を行うことができる別の持ち運び可能な携帯電子機器（複数可）であってもよい。携帯電子機器７０２は、たとえば、有線接続、または、たとえば、ＷｉＦｉもしくはＢｌｕｅｔｏｏｔｈ接続などの無線接続を介してＨＭＤ７００と動作可能に連結またはペアリングされてもよい。この携帯電子機器７０２およびＨＭＤ７００のペアリングまたは動作可能な連結によって、携帯電子機器７０２とＨＭＤ７００との間の通信、および携帯電子機器７０２とＨＭＤ７００との間のデータ交換が可能になってもよい。これによって、ＨＭＤ７００が作り出した没入型仮想環境においてやり取りを行うためのＨＭＤ７００と通信を行うコントローラとして携帯電子機器６０２が機能できるようになってもよい。すなわち、携帯電子機器７０２から発せられ、仮想のオブジェクトまたは特徴に選択のために向けられるビームまたは光線など、携帯電子機器７０２の操作、および／または携帯電子機器７０２のタッチ面上で受け付けられた入力、および／または携帯電子機器７０２の移動は、ＨＭＤ７００が作り出した没入型仮想環境における、対応する選択、移動、またはその他の種類のやり取りに変換されてもよい。たとえば、ＨＭＤ７００は、携帯電子機器７０２とともに、上述の仮想環境を作り出してもよく、携帯電子機器７０２を操作して、ユーザの尺度または見え方についての変更を、上述した仮想環境における仮想の容貌に生じさせてもよい。
【００６１】
図８Ａおよび図８Ｂは、たとえば、図７においてユーザが装着しているＨＭＤ７００など、例示的なＨＭＤの斜視図であり、図８Ｃは、たとえば、図７に示す携帯電子機器７０２など、例示的な携帯電子機器を示す図である。
【００６２】
携帯電子機器８０２は、機器８０２の内蔵コンポーネントが収容される筐体８０３と、筐体８０３の外側にある、ユーザが利用可能なユーザインタフェース８０４とを備えてもよい。ユーザインタフェース８０４は、ユーザのタッチ入力を受け付けるように構成されたタッチ面８０６を備えてもよい。また、ユーザインタフェース８０４は、たとえば、実行ボタン、つまみ、ジョイスティックなど、ユーザによる操作のためのその他のコンポーネントを含んでもよい。いくつかの実装形態では、ユーザインタフェース８０４の少なくとも一部がタッチスクリーンとして構成されてもよく、ユーザインタフェース８０４の当該一部は、ユーザインタフェースの項目をユーザに表示するように、また、タッチ面８０６上のユーザからのタッチ入力を受け付けるように構成される。また、携帯電子機器８０２は、たとえば、ユーザインタフェース８０４において受け付けたユーザ入力に応答して、たとえば、ビームまたは光線などの光を筐体８０３のポートを通して選択的に発するように構成された光源８０８を備えてもよい。
【００６３】
ＨＭＤ８００は、フレーム８２０に連結された筐体８１０を備えてもよく、筐体８１０は、こちらもフレーム８２０に連結された、たとえばヘッドフォンに実装されたスピーカを含む、音声出力装置８３０を有する。図８Ｂでは、筐体８１０の前方部分８１０ａが、筐体８１０に収容された構成要素のうちのいくつかが見えるよう、筐体８１０のベース部８１０ｂから離れるように回転する。ディスプレイ８４０は、筐体８１０の前方部分８１０ａの内部に面した側に実装されてもよい。レンズ８５０は、筐体８１０内の、前方部分８１０ａが筐体８１０のベース部８１０ｂに対して閉位置のときのディスプレイ８４０とユーザの目との間に実装されてもよい。いくつかの実装形態では、ＨＭＤ８００は、様々なセンサを含む検知システム８６０、ならびに、プロセッサ８９０およびＨＭＤ８００の操作を容易にするための様々な制御システム装置を備える制御システム８７０を備えてもよい。
【００６４】
いくつかの実装形態では、ＨＭＤ８００は、静止画および動画を撮影するためのカメラ８８０を備えてもよい。カメラ８８０が撮影した画像は、実世界、または仮想環境に相対的な実環境におけるユーザおよび／または携帯電子機器８０２の物理的な位置を追跡するのに役立てるために利用されてもよく、および／または透過（ｐａｓｓ  ｔｈｒｏｕｇｈ）モードでディスプレイ８４０上でユーザに表示されてもよく、ユーザは、ＨＭＤ８００を外さずに、または、ＨＭＤ８００の設定を変更して筐体８１０をユーザの視線から外すことをせずに、一時的に仮想環境を離れて実環境に戻ることができる。
【００６５】
いくつかの実装形態では、ＨＭＤ８００は、ユーザの視線を検出および追跡するための視線追跡装置８６５を備えてもよい。視線追跡装置８６５は、ユーザの視線の方向および動きを検出および追跡するために、たとえば瞳孔など、ユーザの目の特定の部分など、ユーザの目を撮影するための、たとえば、１つまたは複数のイメージセンサ８６５Ａを備えてもよい。いくつかの実装形態では、ＨＭＤ８００は、検出された視線が、没入型仮想体験における対応するやり取りに変換されるユーザ入力として処理されるよう、構成されてもよい。
【００６６】
本明細書において説明したシステムおよび技術のさまざまな実装形態は、デジタル電子回路、集積回路、専用に設計されたＡＳＩＣ（特定用途向け集積回路）、コンピュータハードウェア、ファームウェア、ソフトウェア、および／またはそれらの組み合せで実現することができる。これらのさまざまな実装形態は、データおよび命令を送受信するために連結された特定用途プロセッサまたは汎用プロセッサであり得る少なくとも１つのプログラム可能なプロセッサと、ストレージシステムと、少なくとも１つの入力装置と、少なくとも１つの出力装置とを備えるプログラム可能なシステム上で実行可能および／または解釈可能な１つ以上のコンピュータプログラムでの実装を含み得る。
【００６７】
これらのコンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる）は、プログラム可能なプロセッサ用の機械命令を含み、高レベルの手続き形言語および／もしくはオブジェクト指向プログラミング言語で、ならびに／またはアセンブリ言語／機械言語で実現できる。本明細書において使用するとき、用語「機械読み取り可能な媒体」および「コンピュータ読み取り可能な媒体」は、機械命令および／またはデータを、機械読み取り可能な信号として機械命令を受け付ける機械読み取り可能な媒体を含むプログラム可能なプロセッサに提供するために使用される任意のコンピュータプログラムプロダクト、装置、および／またはデバイス（たとえば、磁気ディスク、光学ディスク、メモリ、ＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅｓ））を指す。用語「機械読み取り可能な信号」は、機械命令および／またはデータをプログラム可能なプロセッサに提供するために使用される任意の信号を指す。
【００６８】
ユーザとのやり取りを可能にするために、本明細書に記載のシステムおよび技術は、ユーザに情報を表示するための表示装置（たとえば、ブラウン管（ＣＲＴ）または液晶ディスプレイ（ＬＣＤ）モニタ）と、ユーザがコンピュータに入力を行えるキーボードおよびポインティングデバイス（たとえば、マウスまたはトラックボール）とを備えたコンピュータ上に実装され得る。その他の種類のデバイスを使ってユーザとのやり取りを可能にすることもでき、たとえば、ユーザに提供されるフィードバックは、任意の形式の感覚フィードバック（たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック）であり得、ユーザからの入力は、音響入力、音声入力、触覚入力など、任意の形式で受け付けられ得る。
【００６９】
本明細書に記載のシステムおよび技術は、（たとえば、データサーバとしての）バックエンド・コンポーネントを備えるコンピュータシステム、ミドルウェア・コンポーネント（たとえば、アプリケーションサーバ）を備えるコンピュータシステム、フロントエンド・コンポーネント（たとえば、本明細書に記載のシステムおよび技術の実装形態とユーザがやり取りできるグラフィカルユーザーインターフェースまたはウェブブラウザを有するクライアントコンピュータ）を備えるコンピュータシステム、または、このようなバックエンド・コンポーネント、ミドルウェア・コンポーネント、フロントエンド・コンポーネントの任意の組み合わせを備えるコンピュータシステムで実現され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信（たとえば、通信ネットワーク）によって互いに接続され得る。通信ネットワークとして、ローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、インターネットなどが挙げられる。
【００７０】
コンピュータシステムは、クライアントとサーバとを含み得る。クライアントおよびサーバは、一般に、互いから離れており、通常、通信ネットワークを通じてやり取りを行う。クライアントとサーバとの関係は、それぞれのコンピュータ上で動作し、クライアントとサーバとの関係を互いに有するコンピュータプログラムによって成り立つ。
【００７１】
いくつかの実施形態を説明したが、本明細書の趣旨および範囲から逸脱することなく、様々な変更がなされてもよいことが理解されるだろう。
【００７２】
一例では、ＶＲサーバコンピュータ１２０などの電子機器において、オブジェクトは、複数の頂点、エッジ、およびフェースを含んだメッシュとしてＶＲ環境において提供される。
【００７３】
別の例では、ＶＲサーバコンピュータ１２０などの電子機器において、競合条件を特定するように構成される制御回路は、第１操作および第２操作が行われるオブジェクトのメッシュの共通の頂点、エッジ、またはフェースを特定するようにさらに構成される。
【００７４】
別の例では、ＶＲサーバコンピュータ１２０などの電子機器において、競合を解決するように構成された制御回路は、（ｉ）第１操作を第１の操作変換として表し、（ｉｉ）第２操作を第２の操作変換として表し、所定のルールを第１の操作変換および第２の操作変換に適用して第１操作の許可および第２操作の拒否を生じさせるようにさらに構成される。
【００７５】
別の例では、ＶＲサーバコンピュータ１２０などの電子機器において、制御回路は、第１操作の二次効果を記録するようにさらに構成される。
【００７６】
ある要素が別の要素の上にある、別の要素に接続される、電気的に接続される、連結される、または電気的に連結されると称される場合、当該要素は、当該別の要素の上に直接あってもよく、接続または連結されてもよく、または、１つ以上の中間要素が存在してもよい、と理解されるだろう。対照的に、ある要素が別の要素の上に直接ある、別の要素に直接接続されるまたは直接連結されると称される場合、中間要素は存在しない。〜の上に直接ある、〜に直接接続される、または、〜に直接連結される、という用語は、詳細な説明を通して使用されていないかもしれないが、〜の上に直接ある、〜に直接接続される、または、〜に直接連結される状態で図示された要素は、そのように称され得る。本願の特許請求の範囲を補正し、明細書で説明または図に示した例示的な関係を記載してもよい。
【００７７】
本明細書に記載したように、上述の実装形態の特定の特徴が例示されたが、当業者であれば、多くの変形例、代替例、変更例、および均等物に想到するだろう。そのため、当然ながら、特許請求の範囲は、実装形態の範囲に含まれるこのような変形例および変更例のすべてを包含するものとする。これらは、ほんの一例として提示されたものであり、限定ではなく、形式および詳細についてさまざまな変更がなされ得ることを理解されたい。本明細書に記載の装置および／または方法のいずれの部分も、相互に排他的な組み合わせを除く、あらゆる組み合わせに組み合わされ得る。本明細書に記載の実装形態は、記載された異なる実装形態の機能、構成要素、および／または特徴のさまざまな組み合わせおよび／または部分的な組み合わせを含み得る。
【００７８】
これに加えて、図示した論理フローは、所望の結果を実現するために、順次または図示した特定の順序である必要はない。これに加えて、記載のフローにその他のステップが提供されてもよく、ステップが排除されてもよく、記載のシステムにその他の構成要素が追加または削除されてもよい。したがって、その他の実施形態は、添付の特許請求の範囲に含まれる。
【図１】
0006782846.tif 000002
【図２】
0006782846.tif 000003
【図３Ａ】
0006782846.tif 000004
【図３Ｂ】
0006782846.tif 000005
【図４】
0006782846.tif 000006
【図５Ａ】
0006782846.tif 000007
【図５Ｂ】
0006782846.tif 000008
【図６】
0006782846.tif 000009
【図７】
0006782846.tif 000010
【図８Ａ】
0006782846.tif 000011
【図８Ｂ】
0006782846.tif 000012
【図８Ｃ】
0006782846.tif 000013