(57)【要約】仮想領域（２８）を共用するネットワークノード（５２、５４、５６、６４、４０４）間でのリアルタイム・データ・ストリーム接続の切換えが説明される。一態様では、この切換えは、仮想領域仕様（６０、１８０）を記憶することを伴う。仮想領域仕様（６０、１８０）は、個々のリアルタイム・データ・ストリーム型のソース（６６）とそのリアルタイム・データ・ストリーム型のシンク（６８）の間の個々の接続を、仮想領域（２８）における位置によってそれぞれ定義する１つ以上の切換え規則の記述を含む。それぞれが、リアルタイム・データ・ストリーム型のうちの１つ以上におけるソース（６６）およびシンク（６８）のうちの少なくとも１つと関連付けられている個々のオブジェクト（３０、３２、３４）と関連付けられたネットワークノード（５２、５４、５６、６４、４０４）間で、リアルタイム・データ・ストリーム接続が確立される。これらのリアルタイム・データ・ストリーム接続は、１つ以上の切換え規則、オブジェクト（３０、３２、３４）と関連付けられた個々のソース（６６）およびシンク（６８）、ならびに仮想領域（２８）におけるオブジェクト（３０、３２、３４）の個々の位置に基づいて確立される。【選択図】図８
2011502305.tif 000002
【特許請求の範囲】
【請求項１】
仮想領域を共用するネットワークノード間でリアルタイム・データ・ストリーム接続を切り換える方法であって、
個々のリアルタイム・データ・ストリーム型のソース（６６）と前記リアルタイム・データ・ストリーム型のシンク（６８）の間の個々の接続を、前記仮想領域（２８）における位置によってそれぞれ定義する１つ以上の切換え規則の記述を含む仮想領域仕様（６０、１８０）を記憶するステップと、
前記リアルタイム・データ・ストリーム型のうちの１つ以上におけるソース（６６）およびシンク（６８）のうちの少なくとも１つとそれぞれ関連付けられている個々のオブジェクト（３０、３２、３４）と関連付けられたネットワークノード（５２、５４、５６、６４、４０４）間で、前記１つ以上の切換え規則、前記オブジェクト（３０、３２、３４）と関連付けられた前記個々のソース（６６）およびシンク（６８）、ならびに前記仮想領域（２８）における前記オブジェクト（３０、３２、３４）の個々の位置に基づいて、１つ以上のリアルタイム・データ・ストリーム接続を確立するステップと、
を含む、方法。
【請求項２】
前記仮想領域仕様（６０、１８０）は、前記仮想領域（２８）における１つ以上のゾーン（３６、３８、４０、４４、４４）の記述を備え、
前記１つ以上の切換え規則は、前記ゾーン（３６、３８、４０、４４、４４）の１つ以上と、（ｉ）前記ゾーンをソースとする個々のリアルタイム・データ・ストリーム型、および（ｉｉ）前記個々のリアルタイム・データ・ストリーム型のシンクである前記ゾーンの個々の１つと、を関連付け、
前記確立するステップは、前記ゾーン（３６、３８、４０、４４、４４）の１つ以上との関連で前記オブジェクト（３０、３２、３４）の前記位置を確認すること、および前記確認された位置に基づいて前記１つ以上のリアルタイム・データ・ストリーム接続を確立することを含む、
請求項１に記載の方法。
【請求項３】
前記確立することは、
前記（３０、３２、３４）オブジェクトの所与の１つによって占有されるすべての前記ゾーン（３６、３８、４０、４４、４４）を識別することと、
前記１つ以上の切換え規則が前記識別されたゾーン（３６、３８、４０、４４、４４）と関連付ける目標のリアルタイム・データ・ストリーム型のセットを決定することと、
を含む、請求項２に記載の方法。
【請求項４】
前記確立することは、
前記１つ以上の切換え規則によって定義される、前記目標セット内の前記リアルタイム・データ・ストリーム型のそれぞれのソースであり、前記目標セット内の前記リアルタイム・データ・ストリーム型のそれぞれのシンクである前記ゾーン（３６、３８、４０、４４、４４）の１つ以上に含まれる、前記所与のオブジェクトを除く前記オブジェクト（３０、３２、３４）のそれぞれを確認することと、
それぞれ、（ｉ）前記確認されたオブジェクト（３０、３２、３４）と関連付けられている前記ネットワークノードの１つ以上をソースとする、および（ｉｉ）前記確認されたオブジェクト（３０、３２、３４）と関連付けられている前記ネットワークノード（５２、５４、５６、６４、４０４）の１つ以上をシンクとする、の少なくとも一方である接続可能なリアルタイム・データ・ストリームのセットを決定することと、
前記接続可能なリアルタイム・データ・ストリームのセットと関連付けられているソースとシンクとのマッチングに基づいて、必要なリアルタイム・データ・ストリーム・データのセットを決定することと、
を含む、請求項３に記載の方法。
【請求項５】
前記切換え規則の少なくとも１つは、個々のソース役割識別子を、前記リアルタイム・データ・ストリーム型の所与の１つと関連付け、前記確立するステップは、前記ソース役割識別子と、前記所与のリアルタイム・データ・ストリーム型のソース（６６）と関連付けられた前記オブジェクト（３０、３２、３４）の１つ以上と個々に関連付けられた役割識別子との比較に基づいて、前記リアルタイム・データ・ストリーム接続の１つ以上を確立することを含む、請求項１に記載の方法。
【請求項６】
前記切換え規則の少なくとも１つは、個々のシンク役割識別子を、前記リアルタイム・データ・ストリーム型の所与の１つと関連付け、前記確立するステップは、前記シンク役割識別子と、前記リアルタイム・データ・ストリーム型のシンク（６８）と関連付けられた前記オブジェクト（３０、３２、３４）の１つ以上と個別に関連付けられた役割識別子との比較に基づいて、前記リアルタイム・データ・ストリーム接続の１つ以上を確立することを含む、請求項１に記載の方法。
【請求項７】
前記確立するステップはさらに、前記ソース（６６）のそれぞれと、前記仮想領域（２８）において相互に規定の距離内にある個々のオブジェクト（３０、３２、３４）と関連付けられている、適合する前記シンク（６８）のそれぞれとの接続だけを許可する少なくとも１つの近接性ポリシ規則に基づくものである、請求項１に記載の方法。
【請求項８】
前記仮想領域（２８）内の各オブジェクト（３０、３２、３４）ごとに、それぞれのオブジェクト識別子、前記オブジェクト（３０、３２、３４）と関連付けられたネットワークノード（５２、５４、５６、６４、４０４）とのネットワーク接続が確立されることを可能にする接続データ、およびそれぞれ前記オブジェクト（３０、３２、３４）と関連付けられているすべてのリアルタイム・データ・ストリームのソース型およびシンク型を識別するインターフェースデータを有する、オブジェクトレジスタ（１８２）を保持するステップと、
前記仮想領域（２８）内のオブジェクト（３０、３２、３４）と関連付けられている前記ネットワークノード（５２、５４、５６）の１つ以上に前記オブジェクトレジスタ（１８２）を送るステップと、
をさらに含む、請求項１に記載の方法。
【請求項９】
前記ネットワークノード（５２、５４、５６、６４、４０４）の所与の１つから、前記所与のネットワークノード（５２、５４、５６、６４、４０４）と関連付けられた各オブジェクト（３０、３２、３４）ごとに、前記所与のネットワークノードと関連付けられているすべてのリアルタイム・データ・ストリーム・ソース型およびリアルタイム・データ・ストリーム・シンク型のリストを含むインターフェースデータを受け取るステップと、
前記所与のネットワークノード（５２、５４、５６、６４、４０４）から受け取られた前記インターフェースデータで前記オブジェクトレジスタ（１８２）を更新するステップと、
前記オブジェクトレジスタにリストされたオブジェクトと関連付けられている前記ネットワークノード（５２、５４、５６、６４、４０４）の他の１つ以上に、前記更新されたオブジェクトレジスタ（１８２）を送信するステップと、
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記ネットワークノード（５２、５４、５６、６４、４０４）の所与の１つに、指定のリアルタイム・データ・ストリーム・データのセットを配信するリアルタイム・データ・ストリーム処理トポロジを決定するステップをさらに含み、前記仮想領域仕様（６０、１８０）は、前記仮想領域（２８）の１つ以上のゾーン（３６、３８、４０、４４、４４）内の１つ以上のリアルタイム・データ・ストリーム型のストリーム属性値を指定し、前記決定することは、前記仮想領域仕様（６０、１８０）によって指定される前記１つ以上のストリーム属性値に基づいて前記リアルタイム・データ・ストリーム処理トポロジを選択することを含む、請求項１に記載の方法。
【請求項１１】
前記仮想領域仕様（６０、１８０）は、第１のリアルタイム・データ・ストリーム型に第１のストリーム優先度属性値を割り当て、第２のリアルタイム・データ・ストリーム型に前記第１のストリーム優先度属性値とは異なる第２のストリーム優先度属性値を割り当て、前記選択することは、前記ストリーム処理トポロジとして、前記異なる第１のストリーム優先度属性値と前記第２のストリーム優先度属性値に従って、前記第１のリアルタイム・データ・ストリーム型と前記第２のリアルタイム・データ・ストリーム型に異なる優先度を付けるトポロジを選択することを含む、請求項１０に記載の方法。
【請求項１２】
前記仮想領域仕様（６０、１８０）は、第１のリアルタイム・データ・ストリーム型に第１のストリームトポロジ属性値を割り当て、第２のリアルタイム・データ・ストリーム型に、前記第１のストリームトポロジ属性値とは異なる第２のストリームトポロジ属性値を割り当て、前記選択することは、異なる前記第１のストリームトポロジ属性値と前記第２のストリームトポロジ属性値に従って、前記第１のリアルタイム・データ・ストリーム型と前記第２のリアルタイム・データ・ストリーム型に異なるストリーム処理トポロジを選択することを含む、請求項１０に記載の方法。
【請求項１３】
前記第１のリアルタイム・データ・ストリーム型に選択される前記ストリーム処理トポロジは、混合ストリーム形式で前記所与のネットワークノード（５２、５４、５６、６４、４０４）に前記第１の型の前記リアルタイム・データ・ストリームのそれぞれを配信し、前記第２のリアルタイム・データ・ストリーム型に選択される前記ストリーム処理トポロジは、非混合ストリーム形式で前記所与のネットワークノード（５２、５４、５６、６４、４０４）に前記第２の型の前記リアルタイム・データ・ストリームのそれぞれを配信する、請求項１２に記載の方法。
【請求項１４】
前記確立するステップは、個々のリンクを介して、前記１つ以上のリアルタイム・データ・ストリーム接続を生成することを含み、前記リンクの各々は、それぞれのリンク帯域幅を有し、１つ以上のリアルタイム・データ・ストリームのそれぞれの送信セットを搬送する、請求項１に記載の方法。
【請求項１５】
前記仮想領域仕様（９６０、１８０）は、１つ以上のリアルタイム・データ・ストリーム型のそれぞれに１つ以上のそれぞれの帯域幅レベルを割り当て、前記生成することは、前記仮想領域仕様（６０、１８０）によって前記１つ以上のリアルタイム・データ・ストリーム型にそれぞれ割り当てられた前記１つ以上の帯域幅レベルに基づくものである、請求項１４に記載の方法。
【請求項１６】
前記仮想領域仕様（６０、１８０）は、１つ以上のリアルタイム・データ・ストリーム型のそれぞれにそれぞれの最小帯域幅レベルを割り当て、前記生成することは、前記仮想領域仕様（６０、１８０）によって前記１つ以上のリアルタイム・データ・ストリーム型にそれぞれ割り当てられた前記１つ以上の最小帯域幅レベルに基づき、前記リンクのそれぞれについてそれぞれの最小リンク帯域幅レベルを決定すること、およびそれぞれのリンク帯域幅が前記決定されたそれぞれの最小リンク帯域幅レベルに適合するリンクだけを生成することを含む、請求項１５に記載の方法。
【請求項１７】
前記仮想領域仕様（６０、１８０）は、１つ以上のリアルタイム・データ・ストリーム型の各々に、複数の帯域幅レベルのそれぞれのセットを割り当て、
前記生成することは、前記仮想領域仕様（６０、１８０）によって割り当てられた前記帯域幅レベルに少なくとも部分的に基づいて決定される第１の候補リンク帯域幅レベルで前記リンクの所与の１つを生成しようと試みること、および前記第１の候補リンク帯域幅レベルで前記所与のリンクを生成するのに失敗したことに応答して、前記所与のリンクを、前記仮想領域仕様（６０、１８０）によって割り当てられた前記帯域幅レベルに少なくとも部分的に基づいて決定される第２の候補リンク帯域幅レベルで生成しようと試みることを含む、
請求項１５に記載の方法。
【請求項１８】
前記仮想領域仕様（６０、１８０）は、１つ以上のリアルタイム・データ・ストリーム型の各々にそれぞれのストリーム優先度属性値を割り当て、
前記生成することは、前記リンクの各々について、前記仮想領域仕様（６０、１８０）によって前記１つ以上のリアルタイム・データ・ストリーム型にそれぞれ割り当てられた前記１つ以上のストリーム優先度属性値に少なくとも部分的に基づいて、前記各送信セット内の前記１つ以上のリアルタイム・データ・ストリームに前記それぞれのリンク帯域幅を割り振ることを含む、
請求項１４に記載の方法。
【請求項１９】
仮想領域を共用するネットワークノード間でリアルタイム・データ・ストリーム接続を切り換える装置であって、
個々のリアルタイム・データ・ストリーム型のソース（６６）と前記リアルタイム・データ・ストリーム型のシンク（６８）の間の個々の接続を、仮想領域（２８）における位置によってそれぞれ定義する１つ以上の切換え規則の記述を含む仮想領域仕様（６０、１８０）を記憶するように動作可能なコンピュータ可読メモリ（１２４、１２８）と、
前記リアルタイム・データ・ストリーム型のうちの１つ以上におけるソース（６６）およびシンク（６８）のうちの少なくとも１つとそれぞれ関連付けられている各オブジェクト（３０、３２、３４）と関連付けられたネットワークノード（５２、５４、５６、６４、４０４）間で、前記１つ以上の切換え規則、前記オブジェクト（３０、３２、３４）と関連付けられたそれぞれのソース（６６）およびシンク（６８）、ならびに前記仮想領域（２８）における前記オブジェクト（３０、３２、３４）のそれぞれの位置に基づいて、１つ以上のリアルタイム・データ・ストリーム接続を確立するように動作可能な処理装置（１２２、１３６、４０３、４０７）と、
を備えている、装置。
【請求項２０】
前記仮想領域仕様（６０、１８０）は、前記仮想領域（２８）における１つ以上のゾーン（３６、３８、４０、４４、４４）の記述を備え、
前記１つ以上の切換え規則は、前記ゾーン（３６、３８、４０、４４、４４）の１つ以上と、（ｉ）前記ゾーンをソースとする個々のリアルタイム・データ・ストリーム型、および（ｉｉ）前記個々のリアルタイム・データ・ストリーム型のシンクである前記ゾーンの個々の１つとを関連付け、
前記処理装置（１２２、１３６、４０３、４０７）は、前記ゾーン（３６、３８、４０、４４、４４）の１つ以上との関連で前記オブジェクト（３０、３２、３４）の前記位置を確認し、前記確認された位置に基づいて前記１つ以上のリアルタイム・データ・ストリーム接続を確立するように動作可能である、
請求項１９に記載の装置。
【請求項２１】
前記処理装置（１２２、１３６、４０３、４０７）は、
前記オブジェクト（３０、３２、３４）の所与の１つによって占有されているすべての前記ゾーン（３６、３８、４０、４４、４４）を識別し、
前記識別されたゾーン（３６、３８、４０、４４、４４）に前記１つ以上の切換え規則よって関連付けられる目標のリアルタイム・データ・ストリーム型のセットを決定し、
前記１つ以上の切換え規則によって定義される、前記目標セット内の前記リアルタイム・データ・ストリーム型のそれぞれのソースであり、前記目標セット内の前記リアルタイム・データ・ストリーム型のそれぞれのシンクである前記ゾーン（３６、３８、４０、４４、４４）の１つ以上に含まれる、前記所与のオブジェクトを除く前記オブジェクト（３０、３２、３４）のそれぞれを確認し、
それぞれ、（ｉ）前記確認されたオブジェクト（３０、３２、３４）と関連付けられている前記ネットワークノード（５２、５４、５６、６４、４０４）の１つ以上をソースとする、および（ｉｉ）前記確認されたオブジェクト（３０、３２、３４）と関連付けられている前記ネットワークノード（５２、５４、５６、６４、４０４）の１つ以上をシンクとする、の少なくとも一方である接続可能なリアルタイム・データ・ストリームのセットを決定し、
前記接続可能なリアルタイム・データ・ストリームのセットと関連付けられているソース（６６）とシンク（６８）とのマッチングに基づいて、必要なリアルタイム・データ・ストリーム・データのセットを決定する
ように動作可能である、請求項１９に記載の装置。
【請求項２２】
前記切換え規則の少なくとも１つは、個々の役割識別子を、前記リアルタイム・データ・ストリーム型の所与の１つと関連付け、前記処理装置（１２２、１３６、４０３、４０７）は、前記役割識別子と、（ｉ）前記所与のリアルタイム・データ・ストリーム型のソース（６６）、および（ｉｉ）前記所与のリアルタイム・データ・ストリーム型のシンク（６８）の少なくとも１つと関連付けられた前記オブジェクト（３０、３２、３４）の１つ以上と個々に関連付けられた役割識別子との比較に基づいて、前記リアルタイム・データ・ストリーム接続の１つ以上を確立する、請求項１９に記載の装置。
【請求項２３】
コンピュータによって実行されると、前記コンピュータに、
個々のリアルタイム・データ・ストリーム型のソースと前記リアルタイム・データ・ストリーム型のシンクの間の個々の接続を仮想領域における位置によってそれぞれ定義する１つ以上の切換え規則の記述を有する仮想領域仕様を記憶することと、
前記リアルタイム・データ・ストリーム型のうちの１つ以上におけるソースおよびシンクのうちの少なくとも１つとそれぞれ関連付けられている各オブジェクトと関連付けられたネットワークノード間で、前記１つ以上の切換え規則、前記オブジェクトと関連付けられた各前記ソースおよびシンク、ならびに前記仮想領域における前記オブジェクトの各位置に基づいて、１つ以上のリアルタイム・データ・ストリーム接続を確立することと、
を含む動作を実行させるコンピュータ可読命令を記憶するコンピュータ可読媒体。
【請求項２４】
仮想領域を共用するネットワークノード間でリアルタイム・データ・ストリーム接続を切り換えるネットワークスイッチであって、
個々のリアルタイム・データ・ストリーム型のソース（６６）と前記リアルタイム・データ・ストリーム型のシンク（６８）の間の個々の接続を仮想領域（２８）における位置によってそれぞれ定義する１つ以上の切換え規則の記述を含む仮想領域仕様（４０６）を記憶するように動作可能であり、さらに、ネットワーク宛先までの経路を記述するネットワークトポロジ情報を含む表（４０９、４１１）を記憶するように動作可能であるコンピュータ可読メモリ（４０５）と、
前記仮想領域（２８）における個々の位置、ならびに前記リアルタイム・データ・ストリーム型のうちの１つ以上におけるソース（６６）およびシンク（６８）のうちの少なくとも１つとそれぞれ関連付けられているネットワークノード（４０４、５２、５４、５６）間でリアルタイム・データ・ストリーム・パケットを転送するように動作可能であり、前記１つ以上のリアルタイム・データ・ストリーム・パケットを、前記ネットワークトポロジ情報および前記１つ以上の切換え規則に基づいて転送する処理装置（４０７）と、
を備えている、ネットワークスイッチ。
【請求項２５】
前記処理装置（４０７）は、前記ネットワークノード（５２、５４、５６、４０４）の所与の１つに、指定のリアルタイム・データ・ストリーム・データのセットを配信するリアルタイム・データ・ストリーム処理トポロジを決定するように動作可能であり、前記リアルタイム・データ・ストリーム処理トポロジを決定する際に、前記処理装置（４０７）は、前記所与のネットワークノード、および前記仮想領域（２８）内のオブジェクト（３０、３２、３４）と関連付けられたその他のネットワークノードのうちの１つ以上における帯域幅能力を見出し、前記見出された帯域幅能力に基づいて前記ストリーム処理トポロジを選択する、請求項２４に記載のネットワークスイッチ。
【請求項２６】
仮想領域を構築する方法であって、
ユーザ入力に応答して、表示モニタ（１３２）において、前記表示モニタ（１３２）に提示される前記仮想領域（１００）の形状要素を含む、前記仮想領域（１００）のモデルを生成するステップと、
ユーザ入力に応答して、１つ以上の切換え規則と前記仮想領域（１００）の前記モデルとを関連付けるステップであって、前記切換え規則の各々は、それぞれのリアルタイム・データ・ストリーム型のソース（６６）と前記リアルタイム・データ・ストリーム型のシンク（６８）の間の個々の接続を前記仮想領域（１００）における位置によって定義する、ステップと、
前記仮想領域（１００）の前記モデルおよび前記１つ以上の関連付けられた切換え規則を記述する仮想領域仕様（６０、１８０）を生成するステップと、
前記仮想領域仕様（６０、１８０）をコンピュータ可読記憶媒体（１２４、１２８）に記憶するステップと、
を含む、方法。
【発明の詳細な説明】
【背景技術】
【０００１】
対面してのコミュニケーションが実際的でないとき、人々は多くの場合、１つ以上の技術的解決法を利用して通信の必要を満たす。これらの解決法は通常、対面コミュニケーションの１つ以上の態様をシミュレートするように設計されている。従来からの電話技術システムは、通話者間の音声通信を可能にする。インスタントメッセージング（「チャット」ともいう）通信システムは、ユーザが、インスタント・メッセージ・サーバによって相互接続されているインスタント・メッセージ・コンピュータ・クライアントを介して、リアルタイムでテキストメッセージをやりとりすることを可能にする。インスタント・メッセージング・システムの中にはさらに、ユーザを仮想環境において、（「アバタと呼ばれる」）ユーザ制御可能なグラフィックオブジェクトによって表現させるものもある。対話型仮想現実通信システムは、遠隔地にいるユーザ同士が、複数のリアルタイムチャネルを介して通信し、共用３次元仮想空間においてその個々のアバタを操作することにより相互に対話することを可能にする。
【０００２】
アバタベースの仮想現実通信システムへの関心は、高処理能力および高帯域幅ネットワーク接続を有するコンピューティングシステムがますます入手しやすくなるにつれて高まっている。このような仮想現実システムの主要な目標は、ユーザが、オーディオストリーム、映像ストリーム、テキスト・チャット・ストリームといったリアルタイム・データ・ストリームを使用して対話し、通信することのできる仮想空間を作成することである。仮想空間は通常、その空間の視覚的形状、その視覚的形状にマップされる色およびテクスチャ、その空間内でユーザがどのようにして行動するかを制御する衝突特性、およびその空間の、残響特性や吸音特性といった聴覚特性を記述するコンピュータグラフィックス仕様によって定義される。
【０００３】
典型的な仮想現実システムにおいて、ユーザはそれぞれ、システムによってサポートされているリアルタイム・データ・ストリームの１つ以上のソース、シンク、またはソースとシンクの両方であるインターフェースを介して通信する。デフォルト設定で、仮想現実システムは通常、グローバル切換え規則、ローカルユーザ設定、および仮想空間内のオブジェクトの特性において指定される条件に従って、仮想空間において表現される各ソースを仮想空間において表現されるあらゆるシンクに接続する。これらの条件は通常、オブジェクト間の相対距離として指定される。例えば、システムの中には、アバタ間の分離距離が最大閾値距離を超える場合に、リアルタイム・データ・ストリーム接続が確立されないように構成されているものもある。加えて、オブジェクトの中には、データ・ストリームがどのようにレンダリングされるかに影響を及ぼすように設計されているものもある。例えば、スクリーンオブジェクトは、特定の方向からの視界および音を遮る。他のオブジェクトの中には、ユーザのアバタがこれらのオブジェクトの対話領域内にあるときに、ユーザのアバタと関連付けられている対話の領域に影響を及ぼすように設計されているものもある。例えば、演壇（podium）アダプタオブジェクトは、仮想演壇の対話空間内にあるアバタの音声対話空間のサイズを増大させ、テーブル・アダプタ・オブジェクトは、仮想テーブルに着席しているすべてのアバタの対話空間を、その仮想テーブルにまたがる共通対話空間に畳み込む。
【発明の概要】
【０００４】
一態様において、本発明は、仮想領域を共用するネットワークノード間のリアルタイム・データ・ストリーム接続を切り換える方法を特色とする。この方法によれば、仮想領域仕様が記憶される。仮想領域仕様は、個々のリアルタイム・データ・ストリーム型のソースとそのリアルタイム・データ・ストリーム型のシンクの間の個々の接続を仮想領域における位置によって（を使って）それぞれ定義する、１つ以上の切換え規則の記述を含む。１つ以上のリアルタイム・データ・ストリーム接続が、リアルタイム・データ・ストリーム型のうちの１つ以上におけるソースおよびシンクのうちの少なくとも１つとそれぞれが関連付けられている個々のオブジェクトと関連付けられたネットワークノード間で確立される。リアルタイム・データ・ストリーム接続は、１つ以上の切換え規則、オブジェクトと関連付けられた個々のソースおよびシンク、ならびに仮想領域におけるオブジェクトの個々の位置に基づいて確立される。
【０００５】
別の態様において、本発明は、仮想領域を共用するネットワークノード間のリアルタイム・データ・ストリーム接続を切り換える装置を特色とする。この装置は、コンピュータ可読メモリと処理装置とを含む。コンピュータ可読メモリは、個々のリアルタイム・データ・ストリーム型のソースとそのリアルタイム・データ・ストリーム型のシンクの間の個々の接続を仮想領域における位置によってそれぞれ定義する１つ以上の切換え規則の記述を備える仮想領域仕様を記憶するように動作可能である。処理装置は、リアルタイム・データ・ストリーム型のうちの１つ以上におけるソースおよびシンクのうちの少なくとも１つとそれぞれが関連付けられている個々のオブジェクトと関連付けられたネットワークノード間で、１つ以上の切換え規則、オブジェクトと関連付けられた個々のソースおよびシンク、ならびに仮想領域におけるオブジェクトの個々の位置に基づいて、１つ以上のリアルタイム・データ・ストリーム接続を確立するように動作可能である。
【０００６】
別の態様において、本発明は、コンピュータによって実行されると、そのコンピュータに、個々のリアルタイム・データ・ストリーム型のソースとそのリアルタイム・データ・ストリーム型のシンクの間の個々の接続を仮想領域における位置によってそれぞれ定義する１つ以上の切換え規則の記述を備える仮想領域仕様を記憶することと、リアルタイム・データ・ストリーム型のうちの１つ以上におけるソースおよびシンクのうちの少なくとも１つとそれぞれが関連付けられている個々のオブジェクトと関連付けられたネットワークノード間で、１つ以上の切換え規則、オブジェクトと関連付けられた個々のソースおよびシンク、ならびに仮想領域におけるオブジェクトの個々の位置に基づいて、１つ以上のリアルタイム・データ・ストリーム接続を確立することと、を含む動作を行わせるコンピュータ可読命令を記憶する、１つ以上のコンピュータ可読媒体を特色とする。
【０００７】
別の態様において、本発明は、仮想領域を構築する方法を特色とする。ユーザ入力に応答して、仮想領域のモデルが表示モニタにおいて作成される。このモデルは、表示モニタに提示される仮想領域の形状要素（幾何学的要素）を含む。ユーザ入力に応答して、１つ以上の切換え規則がこの仮想領域のモデルと関連付けられる。切換え規則はそれぞれ、個々のリアルタイム・データ・ストリーム型のソースとそのリアルタイム・データ・ストリーム型のシンクの間の個々の接続を仮想領域における位置によって定義する。仮想領域のモデルおよび１つ以上の関連付けられた切換え規則を記述する仮想領域仕様が生成される。仮想領域仕様は、コンピュータ可読記憶媒体に記憶される。
【０００８】
別の態様において、本発明は、仮想領域を共用するネットワークノード間でリアルタイム・データ・ストリーム接続を切り換えるネットワークスイッチを特色とする。このネットワークスイッチは、コンピュータ可読メモリと処理装置とを含む。コンピュータ可読メモリは、個々のリアルタイム・データ・ストリーム型のソースとそのリアルタイム・データ・ストリーム型のシンクの間の個々の接続を仮想領域における位置によってそれぞれ定義する１つ以上の切換え規則の記述を含む仮想領域仕様を記憶するように動作可能である。またコンピュータ可読メモリは、ネットワーク宛先までの経路を記述するネットワークトポロジ情報を含む表を記憶するようにも動作可能である。処理装置は、仮想領域における個々の位置およびリアルタイム・データ・ストリーム型のうちの１つ以上におけるソースおよびシンクのうちの少なくとも１つとそれぞれが関連付けられているネットワークノード間でリアルタイム・データ・ストリーム・パケットを転送するように動作可能である。処理装置は、ネットワークトポロジ情報および１つ以上の切換え規則に基づいて１つ以上のリアルタイム・データ・ストリーム・パケットを転送する。
【０００９】
本発明の各実施形態は、以下の特徴のうちの１つ以上を含み得る。
【００１０】
仮想領域仕様は通常、仮想領域における１つ以上のゾーンの記述を含む。１つ以上の切換え規則は通常、各ゾーンの１つ以上と、（ｉ）そのゾーンをソースとする個々のリアルタイム・データ・ストリーム型、および（ｉｉ）個々のリアルタイム・データ・ストリーム型のシンクであるゾーンの個々の１つとを関連付ける。リアルタイム・データ・ストリーム接続を確立するプロセスは通常、ゾーンの１つ以上との関連で第１のオブジェクトおよび第２のオブジェクトの位置を確認すること、ならびに確認された位置に基づいて１つ以上のリアルタイム・データ・ストリーム接続を確立することを含む。リアルタイム・データ・ストリーム接続を確立するプロセスはさらに、オブジェクトの所与の１つによって占有されているすべてのゾーンを識別すること、および（１つ以上の切換え規則が、識別されたゾーンと関連付ける）目標のリアルタイム・データ・ストリーム型のセットを決定すること、を含んでいてもよい。また、リアルタイム・データ・ストリーム接続を確立するプロセスは、１つ以上の切換え規則によって定義される、目標セット内のリアルタイム・データ・ストリーム型のそれぞれのソースであり、目標セット内のリアルタイム・データ・ストリーム型のそれぞれのシンクであるゾーンの１つ以上に含まれる、所与のオブジェクトを除くオブジェクトのそれぞれを確認すること、それぞれが、（ｉ）確認されたオブジェクトと関連付けられているネットワークノードの１つ以上をソースとする、および（ｉｉ）確認されたオブジェクトと関連付けられているネットワークノードの１つ以上をシンクとする、の少なくとも一方である接続可能なリアルタイム・データ・ストリームのセットを決定すること、ならびに接続可能なリアルタイム・データ・ストリームのセットと関連付けられているソースとシンクとのマッチングに基づいて、必要なリアルタイム・データ・ストリーム・データのセットを決定することをさらに含んでいてもよい。
【００１１】
切換え規則の少なくとも１つは、個々のソース役割識別子をリアルタイム・データ・ストリーム型の所与の１つと関連付けてもよく、リアルタイム・データ・ストリーム接続を確立するプロセスは、そのソース役割識別子と、その所与のリアルタイム・データ・ストリーム型のソースと関連付けられたオブジェクトの１つ以上と個々に関連付けられた役割識別子との比較に基づいて、リアルタイム・データ・ストリーム接続の１つ以上を確立することを含んでいてもよい。
【００１２】
切換え規則の少なくとも１つは、個々のシンク役割識別子をリアルタイム・データ・ストリーム型の所与の１つと関連付けてもよく、リアルタイム・データ・ストリーム接続を確立するプロセスは、そのシンク役割識別子と、そのリアルタイム・データ・ストリーム型のシンクと関連付けられたオブジェクトの１つ以上と個々に関連付けられた役割識別子との比較に基づいて、リアルタイム・データ・ストリーム接続の１つ以上を確立することを含んでいてもよい。
【００１３】
リアルタイム・データ・ストリーム接続を確立するプロセスはさらに、ソースのそれぞれと、仮想領域において相互に規定の距離内にある個々のオブジェクトと関連付けられているシンクの適合するものとの接続だけを可能にする少なくとも１つの近接性ポリシ規則に基づくものとすることもできる。
【００１４】
オブジェクトレジスタが保持されていてもよい。オブジェクトレジスタは通常、仮想領域内の各オブジェクトごとに、個々のオブジェクト識別子、オブジェクトと関連付けられたネットワークノードとのネットワーク接続を確立させることを可能にする接続データ、ならびに、オブジェクトと個々に関連付けられているすべてのリアルタイム・データ・ストリームのソース型およびシンク型を識別するインターフェースデータを含む。オブジェクトレジスタは通常、仮想領域内のオブジェクトと関連付けられているネットワークノードの１つ以上に送られる。インターフェースデータは、ネットワークノードの所与の１つから受け取られ得る。インターフェースデータは通常、所与のネットワークノードと関連付けられた各オブジェクトごとに、その所与のネットワークノードと関連付けられているすべてのリアルタイム・データ・ストリーム・ソース型およびリアルタイム・データ・ストリーム・シンク型のリストを含む。オブジェクトレジスタは通常、所与のネットワークノードから受け取られるインターフェースデータで更新される。更新されたオブジェクトレジスタは通常、オブジェクトレジスタに記載されたオブジェクトと関連付けられている１つ以上の他の各ネットワークノードに送信される。
【００１５】
ネットワークノードの所与の１つに指定のリアルタイム・データ・ストリーム・データのセットを配信するリアルタイム・データ・ストリーム処理トポロジが決定されてもよい。仮想領域仕様は、仮想領域の１つ以上のゾーンにおける１つ以上のリアルタイム・データ・ストリーム型のストリーム属性値を指定してもよい。リアルタイム・データ・ストリーム・トポロジを決定するプロセスは通常、仮想領域仕様によって指定される１つ以上のストリーム属性値に基づいて、リアルタイム・データ・ストリーム処理トポロジを選択することを含む。
【００１６】
仮想領域仕様は、第１のリアルタイム・データ・ストリーム型に第１のストリーム優先度属性値を割り当て、第２のリアルタイム・データ・ストリーム型に、第１のストリーム優先度属性値とは異なる第２のストリーム優先度属性値を割り当てることができ、リアルタイム・データ・ストリーム処理トポロジを選択するプロセスは、ストリーム処理トポロジとして、異なる第１のストリーム優先度属性値と第２のストリーム優先度属性値に従って、第１のリアルタイム・データ・ストリーム型と第２のリアルタイム・データ・ストリーム型に異なる優先度を付けるトポロジを選択することを含んでいてもよい。
【００１７】
仮想領域仕様は、第１のリアルタイム・データ・ストリーム型に第１のストリームトポロジ属性値を割り当て、第２のリアルタイム・データ・ストリーム型に、第１のストリームトポロジ属性値とは異なる第２のストリームトポロジ属性値を割り当てることができ、リアルタイム・データ・ストリーム処理トポロジを選択するプロセスは、異なる第１のストリームトポロジ属性値と第２のストリームトポロジ属性値に従って、第１のリアルタイム・データ・ストリーム型と第２のリアルタイム・データ・ストリーム型に異なるストリーム処理トポロジを選択することを含んでいてもよい。第１のリアルタイム・データ・ストリーム型に選択されるストリーム処理トポロジは、混合ストリーム形式で所与のネットワークノードに第１の型のリアルタイム・データ・ストリームのそれぞれを配信してもよく、第２のリアルタイム・データ・ストリーム型に選択されるストリーム処理トポロジは、非混合ストリーム形式で所与のネットワークノードに第２の型のリアルタイム・データ・ストリームのそれぞれを配信してもよい。
【００１８】
リアルタイム・データ・ストリーム接続を確立するプロセスは、それぞれが個々のリンク帯域幅を有し、１つ以上のリアルタイム・データ・ストリームの個々の送信セットを搬送する個々のリンクを介した、１つ以上のリアルタイム・データ・ストリーム接続を作成することを含んでいてもよい。
【００１９】
仮想領域仕様は、１つ以上のリアルタイム・データ・ストリーム型のそれぞれに１つ以上の個々の帯域幅レベルを割り当ててもよく、接続を作成するプロセスは、仮想領域仕様によって１つ以上のリアルタイム・データ・ストリーム型に個々に割り当てられた１つ以上の帯域幅レベルに基づくものとすることができる。仮想領域仕様は、１つ以上のリアルタイム・データ・ストリーム型のそれぞれに個々の最小帯域幅レベルを割り当ててもよく、接続を作成するプロセスは、各リンクごとの個々の最小リンク帯域幅レベルを、仮想領域仕様によって１つ以上のリアルタイム・データ・ストリーム型に個々に割り当てられた１つ以上の最小帯域幅レベルに基づいて決定すること、およびその個々のリンク帯域幅が決定された個々の最小リンク帯域幅レベルに適合するリンクだけを作成することを含んでいてもよい。仮想領域仕様は、１つ以上のリアルタイム・データ・ストリーム型のそれぞれに、複数の帯域幅レベルの個々のセットを割り当ててもよく、接続を作成するプロセスは、仮想領域仕様によって割り当てられた帯域幅レベルに少なくとも部分的に基づいて決定される第１の候補リンク帯域幅レベルでリンクの所与の１つを作成しようと試みること、および第１の候補リンク帯域幅レベルで所与のリンクを作成するのに失敗したことに応答して、所与のリンクを、仮想領域仕様によって割り当てられた帯域幅レベルに少なくとも部分的に基づいて決定される第２の候補リンク帯域幅レベルで作成しようと試みることを含んでいてもよい。
【００２０】
仮想領域仕様は、１つ以上のリアルタイム・データ・ストリーム型のそれぞれに個々のストリーム優先度属性値を割り当ててもよく、接続を作成するプロセスは、各リンクごとに、仮想領域仕様によって１つ以上のリアルタイム・データ・ストリーム型に個々に割り当てられた１つ以上のストリーム優先度属性値に少なくとも部分的に基づいて、個々の送信セット内の１つ以上のリアルタイム・データ・ストリームに個々のリンク帯域幅を割り振ることを含んでいてもよい。
【００２１】
ネットワークノードの所与の１つに指定のリアルタイム・データ・ストリーム・データのセットを配信するリアルタイム・データ・ストリーム処理トポロジが決定されてもよい。このプロセスでは、所与のネットワークノードおよび仮想領域内のオブジェクトと関連付けられたその他のネットワークノードの１つ以上の帯域幅能力が判定され、見出された帯域幅能力に基づいてストリーム処理トポロジが選択される。
【００２２】
本発明の他の特徴および利点は、図面および特許請求の範囲を含めて、以下の説明を読めば明らかになる。
【図面の簡単な説明】
【００２３】
【図１】共用仮想領域の２次元描写を提示するグラフィカル・ユーザ・インターフェースを含むネットワークノードの一実施形態を示す概略図である。
【図２Ａ】ネットワークノードがピア・ツー・ピア・アーキテクチャで通信する共用仮想領域通信環境の一実施形態を示す概略図である。
【図２Ｂ】ネットワークノードがサーバ仲介型アーキテクチャで通信する共用仮想領域通信環境の一実施形態を示す概略図である。
【図３】３つのネットワークノードのソースとシンクの間の例示的なリアルタイム・データ・ストリーム接続のセットを含む共用仮想領域通信環境の一実施形態を示すブロック図である。
【図４】ソースのセット例とシンクのセット例とを含むネットワークノードの一実施形態を示すブロック図である。
【図５】個々のリアルタイム・データ・ストリーム切換え規則と関連付けられているゾーンを含む仮想領域の斜視図を示すグラフィカル・ユーザ・インターフェースの一実施形態を示す概略図である。
【図６】図５に示す３次元仮想領域の平面図を示すグラフィカル・ユーザ・インターフェースの一実施形態を示す概略図である。
【図７】共用仮想領域通信環境の一実施形態における、１つのエリア・サーバ・ネットワーク・ノードと他の２つのエリア・クライアント・ネットワーク・ノードとに接続されたエリア・クライアント・ネットワーク・ノードの一実施形態を示すブロック図である。
【図８】図７に示す共用仮想領域通信環境の一実施形態を示す概略図である。
【図９】エリア・クライアント・ネットワーク・ノードおよびエリア・サーバ・ネットワーク・ノードによって実行される方法の一実施形態を示す流れ図である。
【図１０】ストリーム切換えマネージャの一実施形態がエリアサーバから受け取られる構成データを処理するための方法の一実施形態を示す流れ図である。
【図１１】仮想領域に４つのアバタオブジェクトが取り込まれている図６に示す仮想領域を示す平面図である。
【図１２】エリア・クライアント・ネットワーク・ノードに必要なデータ・ストリーム・データを配信するリアルタイム・データ・ストリーム接続を決定する方法の一実施形態を示す流れ図である。
【図１３】仮想領域を共用するネットワークノード間でリアルタイム・データ・ストリーム接続を切り換える方法の一実施形態を示す流れ図である。
【図１４】仮想領域を共用するネットワークノード間でリアルタイム・データ・ストリーム接続を切り換える方法の一実施形態を示す流れ図である。
【図１５】拡張リンク管理機能を備えるネットワークアダプタを含むホストシステムを示すブロック図である。
【図１６】図１５に示すネットワークアダプタの一実施形態を示すブロック図である。
【図１７】エリア・クライアント・ネットワーク・ノードに必要なデータ・ストリーム・データを配信する１つ以上のリアルタイム・データ・ストリーム処理トポロジを決定する方法の一実施形態を示す流れ図である。
【図１８】リアルタイム・データ・ストリーム処理トポロジの一実施形態を示す概略図である。
【図１９】リアルタイム・データ・ストリーム処理トポロジの一実施形態を示す概略図である。
【図２０】リアルタイム・データ・ストリーム処理トポロジの一実施形態を示す概略図である。
【図２１】リアルタイム・データ・ストリーム処理トポロジの一実施形態を示す概略図である。
【図２２】リアルタイム・データ・ストリーム処理トポロジの一実施形態を示す概略図である。
【図２３】仮想領域仕様で定義される切換え規則に従ってリアルタイム・データ・ストリーム接続を管理するネットワークスイッチの一実施形態を含む共用仮想領域通信環境の一実施形態を示すブロック図である。
【発明を実施するための形態】
【００２４】
以下の説明では、類似の参照符号を使用して類似の要素を識別する。さらに、図面は、例示的実施形態の主要な特徴を図式的に説明するためのものである。図面は、実際の実施形態のあらゆる特徴を図示するためのものでも、図示される要素の相対的寸法を示すためのものでもなく、縮尺通りには描かれていない。
【００２５】
Ｉ．概説
本明細書で示す実施形態は、共用仮想領域通信環境においてリアルタイム・データ・ストリーム接続を切り換えるシステムおよび方法を提供する。これらの実施形態は、共用仮想領域を介して通信するネットワークノード間でリアルタイム・データ・ストリームを接続するための切換え規則を、仮想領域の仕様に明示的に結び付けることを可能にする。
【００２６】
これらの実施形態は、仮想領域の設計者が、仮想領域の形および外観のみならず、交信者がリアルタイム・データ・ストリームを介して相互に接続し合うやり方も制御することを可能にする。このようにして、領域設計者は、特定の通信目的のための、または特定の通信環境（個人空間、画廊、コンサートホール、講堂、会議室、クラブハウスなど）のための仮想領域を共用する交信者間で行われるリアルタイム・データ・ストリーム接続を最適化することができる。
【００２７】
加えて、仮想領域内の各場所に自動切換え規則を結び付けることにより、これらの実施形態は、仮想空間内のオブジェクトの属性および特性に基づいて接続を確立し、終了するシステム、ならびに信号処理機能をストリームの経路指定、接続および切断の各機能と絡み合わせるシステムに比べて、交信者ノードの接続および切断の際に伴う複雑さを低減し、システムのスケーラビリティを増大させる。
【００２８】
ＩＩ．用語の定義
「仮想領域」とは、コンピュータで管理される空間または場面の表現である。仮想領域は、２次元表現とすることも、３次元表現とすることもできる。多くの場合、仮想領域は、物理的な実世界空間をシミュレートするように設計される。例えば、従来のコンピュータモニタを使用すると、仮想領域は、３次元コンピュータ生成空間の２次元グラフィックとして可視化され得る。しかし仮想領域は、切換え規則を実施するための関連する可視化を必要としない。
【００２９】
「仮想領域仕様」とは、共用仮想領域通信環境を作成する際に使用される仮想領域記述である。
【００３０】
「ゾーン」とは、共用仮想領域を介して通信するネットワークノード間でリアルタイム・データ・ストリームを切り換える（経路指定する、接続する、切断するなど）ための少なくとも１つの規則と関連付けられている仮想領域の一区域である。
【００３１】
「交信者」とは、共用仮想領域通信セッションにおいて通信し、または別のやり方で共用仮想領域通信セッションに参加する人である。
【００３２】
「オブジェクト」とは、ある仮想領域において、その仮想領域の形状から分離されている任意の種類の個別要素である。オブジェクトは通常、仮想領域の属性および特性から分離され、区別される属性または特性を有する。
【００３３】
「アバタ」とは、仮想領域において交信者を表すオブジェクトである。
【００３４】
仮想領域における「位置」とは、仮想領域におけるある点またはエリアまたはボリュームの場所をいう。点は通常、仮想領域内のある箇所を定義する単一の２次元または３次元座標セット（ｘ，ｙ，ｚなど）によって表される。エリアは通常、仮想領域内の閉じた２次元形の境界を定義する３つ以上の同一平面上の頂点の３次元座標によって表される。ボリュームは通常、仮想領域内の３次元形の閉じた境界を定義する４つ以上の非同一平面上の頂点の３次元座標によって表される。
【００３５】
「ネットワークノード」とは、通信ネットワークにおける連結または接続点である。ネットワークノードの例には、それだけに限らないが、端末、コンピュータ、ネットワークスイッチなどが含まれる。
【００３６】
「コンピュータ」とは、一時的に、または永続的に機械可読媒体上に記憶されている機械可読命令（ソフトウェアなど）に従ってデータを処理する機械である。特定のタスクを実行するこのような命令のセットを、プログラムまたはソフトウェアプログラムと呼ぶ。
【００３７】
「リアルタイム・データ・ストリーム」とは、連続した流れとして構造化され、処理される、遅延なしで、またはごくわずかな遅延しか伴わずに受け取られるように設計されているデータである。リアルタイム・データ・ストリームには、音声、映像、ユーザの動き、表情およびその他の物理的現象のディジタル表現、ならびに、例えば、アバタ運動命令、テキストチャット、リアルタイム・データ・フィード（センサデータ、機械制御命令、取引ストリーム、株式相場情報提供など）およびファイル転送などを含む、高速伝送、高速実行、または高速伝送と高速実行の両方から利益が得られるコンピューティング環境内のデータが含まれる。
【００３８】
「データソース」（本明細書では単に「ソース」という）とは、データを発生する機器、機器の一部（コンピュータなど）、またはソフトウェアのいずれかである。
【００３９】
「データシンク」（本明細書では単に「シンク」という）とは、データを受け取る機器、機器の一部（コンピュータなど）、またはソフトウェアのいずれかである。
【００４０】
「切換え規則」とは、１つ以上のリアルタイム・データ・ソースと１つ以上のリアルタイム・データ・シンクを接続し、または切断するために満たされなければならない１つ以上の条件を指定する命令である。
【００４１】
「ストリームミックス」とは、同じ型（音声、映像、チャット、動きデータなど）の２つ以上のリアルタイム・データ・ストリームの組み合わせである。
【００４２】
「送受信スイッチ」とは、あるネットワークノード（クライアント、サーバ、ネットワーク機器など）からアナログまたはディジタル信号を受信し、その受信信号（または受信信号のコピー）を１つ以上の他のネットワークノードに送信することによって、ネットワークノードを相互接続するネットワーク機器である。
【００４３】
「ストリーム処理トポロジ」とは、リアルタイム・データ・ストリーム（それぞれ、混合ストリームとすることも、非混合ストリームとすることもできる）を１つ以上のネットワークノードに配信するためのネットワーク経路の編成である。
【００４４】
ＩＩＩ．序論
本明細書で示す実施形態は、共用仮想領域通信環境においてリアルタイム・データ・ストリームを切り換えるシステムおよび方法を提供する。交信者は通常、そのような環境に、２次元および３次元の可視化機能を有する通信ソフトウェアプログラムの個々のコピーを実行する個々のネットワークノードからアクセスする。通信ソフトウェアプログラムは、個々のネットワークノードにおいて仮想領域の個々のビューを提示するクライアントプロセスを制御し、他のネットワークノードとのリアルタイム・データ・ストリーム接続を確立する。交信者は通常、仮想領域において、個々のアバタによって表され、これらのアバタは、交信者によってその個々のネットワークノードにおいて入力される入力コマンドに応答して仮想領域を動き回る。仮想領域の交信者のビューは通常、交信者のアバタの視点から提示され、そのことにより、交信者によって体験される没入のレベルが高まる。各交信者は通常、自分のアバタの周りの仮想領域のあらゆる部分を見ることができる。
【００４５】
図１に、表示モニタ１２、コンピュータマウス１４、キーボード１６、スピーカ１８、２０、およびマイクロホン２２を含むコンピュータシステムによって実施されるネットワークノード１０の一実施形態を示す。表示モニタ１２は、グラフィカル・ユーザ・インターフェース２４を表示する。グラフィカル・ユーザ・インターフェース２４は、複数のウィンドウ、アイコン、およびポインタ２６を含むことのできるウィンドウズ（登録商標）ベースのグラフィカル・ユーザ・インターフェースである。図示の実施形態では、グラフィカル・ユーザ・インターフェース２４は、画廊を表す共用３次元仮想領域２８の２次元描写を提示している。各交信者は、仮想領域２８において、個々のアバタ３０、３２、３４によって表され、各アバタは、個々の役割（学芸員、画家、来訪者など）を持つ場合もある。
【００４６】
以下で詳細に説明するように、仮想領域２８は、仮想領域２８においてアバタ３０〜３４によって表されるネットワークノード間のリアルタイム・データ・ストリームの切換えを制御する個々の規則と関連付けられているゾーン３６、３８、４０、４２、４４を含む。（典型的な通信セッションの間、図１の各ゾーン３６〜４４の境界を定める破線は交信者から見えないが、そのようなゾーン境界と関連付けられた視覚的手掛かりがあってもよい。）切換え規則は、ネットワークノードのそれぞれで実行される各ローカル接続プロセスが、仮想領域２８のゾーン３６〜４４における交信者のアバタ３０〜３４の場所に基づいて、どのようにしてその他のネットワークノードとの通信を確立するか指図する。
【００４７】
通信セッションの間、交信者ネットワークノードはそれぞれ、リアルタイム・データ・ストリーム（動きデータ・ストリーム、オーディオ・データ・ストリーム、チャット・データ・ストリーム、ファイル転送データ・ストリーム、映像データ・ストリームなど）の個々のセットを生成する。例えば、各交信者は、仮想領域２８における自分のアバタの動きを制御する動きデータ・ストリームを生成する１つ以上の入力装置（コンピュータマウス１４、キーボード１６など）を操作する。加えて、ネットワークノード１０の近傍においてローカルで生成される交信者の音声およびその他の音も、マイクロホン２２によって取り込まれる。マイクロホン２２は、リアルタイム・オーディオ・ストリームに変換されるオーディオ信号を生成する。オーディオストリームの個々のコピーが、仮想領域２８においてアバタで表されているその他のネットワークノードに送信される。これら他のネットワークノードにおいてローカルで生成される音は、リアルタイムオーディオ信号に変換され、ネットワークノード１０に送信される。ネットワークノード１０は、受信したローカルで生成されたオーディオストリームを、スピーカ１８、２０によってレンダリングされるオーディオ信号に変換する。動きデータ・ストリームおよびオーディオストリームは、各交信者ノードからその他の交信者ネットワークノードに、直接送信されても、間接的に送信されてもよい。ストリーム処理トポロジによっては、交信者ネットワークノードはそれぞれ、その他の交信者ネットワークノードによって送信されるリアルタイム・データ・ストリームのコピーを受信する。他のストリーム処理トポロジにおいては、交信者ネットワークノードの１つ以上が、他の各ネットワークノードをソースとする（またはそこから発せられる）リアルタイム・データ・ストリームから得られる１つ以上のストリームミックスを受信する場合もある。
【００４８】
図２Ａは、３つのネットワークノード５２、５４、５６がピア・ツー・ピア・アーキテクチャで通信ネットワーク５８によって相互接続されている共用仮想領域通信環境５０の一実施形態の概略図である。通信ネットワーク５８は、ローカル・エリア・ネットワーク（ＬＡＮ）とすることも、グローバル通信ネットワーク（インターネットなど）とすることもできる。ネットワークノード５２〜５６は、個々のコンピュータによって表されている。
【００４９】
このアーキテクチャにおいて、ネットワークノード５２〜５６はそれぞれ、仮想領域におけるアバタの動きといった状態変化を、その他の各ネットワークノードに送信する。ネットワークノードのうちの１つ（通常は、通信セッションを開始するネットワークノード）は、エリアサーバとして動作する。図示の実施形態において、ネットワークノード５２は、エリアサーバの役割を負っている。エリア・サーバ・ネットワーク・ノード５２は、グローバル状態情報を維持し、その他のネットワークノード５４、５６のためのデータサーバとして働く。グローバル状態情報は、仮想領域にあるすべてのオブジェクトと仮想領域における各オブジェクトの個々の場所のリストを含む。エリア・サーバ・ネットワーク・ノード５２は、その他のネットワークノード５４、５６にグローバル状態情報を周期的に送る。また、エリア・サーバ・ネットワーク・ノード５２は、通信セッションへの参加を要求する他のネットワークノードの登録、およびこれらのノードへの初期設定情報の送信も行う。このプロセスにおいて、エリア・サーバ・ネットワーク・ノード５２は、各参加ネットワークノードに、仮想領域仕様６０のコピーを送信し、この仮想領域仕様は、ローカルで記憶されていても、リモートデータベースに記憶されていてもよい。またエリア・サーバ・ネットワーク・ノード５２は、通信障害が発生した場合に、他のネットワークノード５４、５６が、グローバル状態に同期することができるようにもする。
【００５０】
以下で詳細に説明するように、仮想領域仕様６０は、仮想領域の形状要素（幾何学的要素）の記述およびネットワークノード間のリアルタイムストリーム接続を制御する１つ以上の切換え規則を含む。形状要素の記述は、ネットワークノード５２〜５６上で動作するそれぞれの通信アプリケーションが、それぞれの表示モニタ上の交信者に仮想領域の個別のビューを提示することを可能にする。切換え規則は、ネットワークノード５２〜５６のそれぞれで実行されている接続プロセスが、仮想領域における交信者のアバタの場所に基づいて、その他のネットワークノードとの通信をどのようにして確立するか指図する。
【００５１】
図２Ｂは、ネットワークノード５２〜５６（このアーキテクチャでは「エリア・クライアント・ネットワーク・ノード」という）が、エリアサーバ６４によって仲介されるアーキテクチャにおいて通信する共用仮想領域通信環境６２の一実施形態の概略図である。この実施形態において、エリアサーバ６４は、図２Ａに示すピア・ツー・ピア・アーキテクチャの実施形態でネットワークノード５２によって行われたエリアサーバ機能を引き受ける。これに関して、エリアサーバ６４は、グローバル状態情報を維持し、エリア・クライアント・ネットワーク・ノード５２〜５６のためにデータサーバとして働く。以下で詳細に説明するように、このアーキテクチャは、エリア・クライアント・ノード５２〜５６間のリアルタイム・データ・ストリーム切換えが、ピア・ツー・ピア・トポロジ、エリアサーバ６４がネットワークノード５２〜５６の間で通信仲介者として動作する完全なサーバ仲介型トポロジ、ピア・ツー・ピア・トポロジと完全なサーバ仲介型トポロジの態様を組み合わせたハイブリッドトポロジを含む、様々なトポロジとして処理されることを可能にする。
【００５２】
図３に、共用仮想領域通信環境の一実施形態における３つのネットワークノード５２〜５６のソースとシンクの間のリアルタイム・データ・ストリーム接続のセットの例を示す。説明を容易にするために、図３の矢印はそれぞれ１つ以上のリアルタイム・データ・ストリームの個々のセットを表すものとする。本明細書に示す各実施形態によれば、図３に示す接続は、共用仮想領域の仕様で定義されている切換え規則、共用仮想領域における交信者のアバタの場所、およびネットワークノード５２〜５６のそれぞれで利用できる特定のソースおよびシンクに基づいて確立される。
【００５３】
図４に、ソースのセット例６６とシンクのセット例６８を含むネットワークノード５２の例示的実施形態を示す。各ソースは、データを発生するネットワークノード５２の機器または構成要素であり、各シンクは、データを受け取るネットワークノード５２の機器または構成要素である。ソースのセット６６は、オーディオソース７０（マイクロホンといったオーディオ取込み機器など）、映像ソース７２（ビデオカメラといった映像取込み機器など）、チャットソース７４（キーボードといったテキスト取込み機器など）、動きデータソース７６（コンピュータマウスといったポインティングデバイスなど）、「その他の」ソース７８（ファイル共用ソースや、カスタマイズ・リアルタイム・データ・ストリームのソースなど）を含む。シンクのセット６８は、オーディオシンク８０（スピーカやヘッドホンといったオーディオレンダリング機器など）、映像シンク８２（表示モニタといった映像レンダリング機器など）、チャットシンク８４（表示モニタといったテキストレンダリング機器など）、動きデータシンク８６（表示モニタといった動きレンダリング機器など）、および「その他の」シンク８８（共用ファイルを印刷するプリンタ、前述のもの以外のリアルタイム・データ・ストリームをレンダリングする機器、分析またはカスタマイズ表示のためにリアルタイムストリームを処理するソフトウェアなど）を含む。
【００５４】
図４に示すネットワークノードの実施形態によって例示するように、ネットワークノードはそれぞれ、潜在的に、多種多様なソースおよびシンクを利用することができる。領域設計者がソースとシンクの間でどのようにして接続が確立されるか制御できるようにすることによって、本明細書で示す実施形態は、各交信者が仮想領域において通信し、また別のやり方で対話する際の各交信者の知覚体験を領域設計者が大いに制御することを可能にする。このようにして、領域設計者は、特定の通信目的または特定の通信環境（画廊、コンサートホール、講堂、会議室、クラブハウスなど）のための仮想領域を最適化することができる。
【００５５】
ＩＶ．仮想領域の指定
Ａ．序論
共用仮想領域は、仮想領域の形状要素と、ネットワークノード間のリアルタイムストリーム接続を制御する１つ以上の切換え規則の記述を含む仕様によって定義される。
【００５６】
仮想領域の形状要素は通常、仮想領域の物理的形状および衝突形状を含む。物理的形状は、仮想領域の形を記述する。物理的形状は通常、三角形、四辺形、または多角形の面で構成される。仮想領域のより現実的な外観を創り出すために、物理的形状に色およびテクスチャがマップされる。照明効果は、例えば、視覚的形状に照明をペイントし、照明の近くのテクスチャ、色、または強度を修正することなどによって与えられる。衝突形状は、各オブジェクトが仮想領域において動くことのできるやり方を決定する不可視の面を記述する。衝突形状は、視覚的形状と同一空間を占めていてもよく、視覚的形状のより単純な近似に対応していてもよく、設計者のアプリケーション特有の要件に関連していてもよい。
【００５７】
切換え規則は通常、仮想領域における位置による（を使った）リアルタイム・データ・ストリームのソースとシンクを接続する条件の記述を含む。各規則は通常、その規則が適用されるリアルタイム・データ・ストリーム型、およびその規則が適用される仮想領域における１つ以上の場所を定義する属性を含む。実施形態によっては、規則はそれぞれ、任意選択で、必要なソースの役割、必要なシンクの役割、ストリームの優先度レベル、および要求されるストリーム処理トポロジを指定する１つ以上の属性を含み得る。実施形態によっては、仮想領域の特定の部分についての明示的な切換え規則が定義されていない場合、仮想領域のその部分に、１つ以上の暗黙的な、またはデフォルトの切換え規則が適用され得る。１つの例示的なデフォルト切換え規則は、ポリシ規則に従って、あらゆるソースをある領域内のあらゆる適合するシンクに接続するというものである。ポリシ規則は、エリアクライアント間のすべての接続にグローバルに適用されてもよく、個々のエリアクライアントとの個々の接続だけに適用されてもよい。ポリシ規則の一例は、ソースと、仮想領域において相互に規定の距離（または半径）内にある個々のオブジェクトと関連付けられている適合するシンクとの接続だけを許可する近接性ポリシ規則である。
【００５８】
Ｂ．仮想領域を指定するやり方の例
１．仮想領域の形状要素の指定
仮想領域の形状要素を指定するには、多種多様な３次元グラフィックス設計ツールおよびゲームレベルの設計エディタが使用され得る。一般に、仮想領域の形状要素の仕様は、それだけに限らないが、ＶＲＭＬ（ｈｔｔｐ：／／ｗｗｗ．ｗｅｂ３ｄ．ｏｒｇ／ｘ３ｄ／ｓｐｅｃｉｆｉｃａｔｉｏｎｓ／ｖｒｍｌなど参照）、Ｘ３Ｄ（ｈｔｔｐ：／／ｗｗｗ．ｗｅｂ３ｄ．ｏｒｇ／ｘ３ｄ／ｓｐｅｃｉｆｉｃａｔｉｏｎｓ／ｘ３ｄなど参照）、ＣＯＬＬＡＤＡ（ｈｔｔｐ：／／ｗｗｗ．ＣＯＬＬＡＤＡ．ｏｒｇなど参照）、およびＵ３Ｄ（ｈｔｔｐ：／／ｗｗｗ．ｗ３．ｏｒｇなど参照）を含む任意の種類の３次元記述言語で記述することができる。
【００５９】
実施形態によっては、仮想領域仕様は、ＣＯＬＬＡＤＡに従って仮想領域の形状要素を記述し、ＣＯＬＬＡＤＡは、「タグ」または「要素」（すなわち「＜」と「＞」で囲まれた単語）および「属性」（すなわち属性名＝“値”）を含むＸＭＬベースのディジタル資産交換スキーマである。これらの実施形態の中には、仮想領域の形状要素のＣＯＬＬＡＤＡ記述が、ＳｋｅｔｃｈＵｐ（米国カリフォルニア州マウンテンビュー所在のグーグル社（Ｇｏｏｇｌｅ  Ｉｎｃ）から入手できる）や、Ｍａｙａ、または３ｄｓ  Ｍａｘ（どちらも、米国カリフォルニア州サンラファエル所在のオートデスク社（Ａｕｔｏｄｅｓｋ）から入手できる）といった３次元グラフィックスツールを使用して作成されるものもある。
【００６０】
２．仮想領域と関連付けられる切換え規則の指定
ａ．概説
実施形態によっては、仮想領域仕様は、以下のＣＯＬＬＡＤＡスキーマのＸＭＬベースの拡張に従って仮想領域と関連付けられている切換え規則を記述する。以下に提示するモデルは、ＣＯＬＬＡＤＡ−Ｄｉｇｉｔａｌ  Ａｓｓｅｔ  Ｓｃｈｅｍａ  Ｒｅｌｅａｓｅ  １．４．１  Ａｐｒｉｌ  ２００６  ｓｐｅｃｉｆｉｃａｔｉｏｎ（ｈｔｔｐ：／／ｗｗｗ．ｋｈｒｏｎｏｓ．ｏｒｇ／ｃｏｌｌａｄａ／から入手できる）への拡張案として記述されている。この拡張を本明細書では、「ＣＯＬＬＡＤＡストリーム参照」と呼ぶ。
【００６１】
ｂ．ＣＯＬＬＡＤＡストリーム参照
ＣＯＬＬＡＤＡストリーム参照に従って定義される切換え規則は、通常、システムレベルで定義されているソースおよびシンクを参照する。実施形態によっては、ＣＯＬＬＡＤＡの基礎をなすＸＭＬシステムの拡張性機能を使用して、アプリケーション特有のストリーム型が記述される。他の実施形態の中には、サポートされるストリーム型がシステムにおいて更新されるものもある。ＣＯＬＬＡＤＡストリーム参照は、領域開発者が、所与の領域のための新しいストリーム型を定義することを可能にする。これらの場合、交信者のシステムがある領域に参入するときに未知のストリーム型に遭遇する場合、システムは、開発者指定の方法を起動して、そのストリーム型を処理し、交信者のシステム内で適切なストリーム処理を構成するのに必要な情報でシステムを更新する。
【００６２】
通常、「音声」といったストリームソース型と、実際のローカル・ストリーム・ソース（特定のマイクロホンなど）およびそのソースと関連付けられている任意の信号処理または他のストリーム処理プラグイン（圧縮プログラム／リミッタや、音声に基づいてアバタの動きを生成する動きデータ・ストリーム・ソースなど）の間には接続が生じる。型「音声」は通常、システムによって、各設計者がその型を独自に定義することを必要とするのではなく、どんな領域設計者でも使用することができるように定義されている。他方、選択され、または必要とされる特定のプラグインを指定することが、アプリケーション設計の一般的な部分である。ＣＯＬＬＡＤＡストリーム参照は、交信者が、音声などのストリームソース型を、マイクロホン、記録または音源に割り当てると共に、ハンドラ内のプラグインを定義することを可能にする。
【００６３】
同様の状況がシンクに影響を及ぼす。「音声」などのストリーム型のためのシンクは通常、システムレベル（ヘッドセットやスピーカなど）において確立される。交信者または領域設計者によって追加のプラグインが指定される場合もある（距離ベースのフェーダレベルや相対的場所に基づくステレオパンなど）。
【００６４】
各ゾーン、およびストリームのソースとシンクを各ゾーンに関して接続するための規則を記述するＣＯＬＬＡＤＡストリーム参照の各要素を以下に定義する。
【００６５】
ｉ．＜ｚｏｎｅ＿ｍｅｓｈ＞
＜ｚｏｎｅ＿ｍｅｓｈ＞タグは、ゾーンの境界を定義する。
【００６６】
（１）序論
基本形状メッシュを記述するのに十分な情報を含み、または参照する。
【００６７】
（２）概念
＜ｚｏｎｅ＿ｍｅｓｈ＞の定義は、完全な記述（＜ｓｏｕｒｃｅ＞、＜ｖｅｒｔｉｃｅｓ＞、＜ｐｏｌｙｇｏｎｓ＞など）ではなく、単にその形を導き出すための別の＜ｇｅｏｍｅｔｒｙ＞を指し示してもよいことを除いて、＜ｍｅｓｈ＞と同一である。後者の場合は通常、その＜ｇｅｏｍｅｔｒｙ＞の凸包を、（任意選択のｃｏｎｖｅｘ＿ｈｕｌｌ＿ｏf属性によって表示される）ゾーン境界として使用するために計算する必要があることを意味する。
【００６８】
これは非常に有用である。というのは、ストリーム処理に＜ｍｅｓｈ＞（レンダリングに使用されたものなど）を再利用して、文書サイズを最小限に抑え、元の＜ｍｅｓｈ＞へのリンクを維持することを可能にするからである。この意味で、＜ｚｏｎｅ＿ｍｅｓｈ＞は、物理学エンジンに使用されるＣＯＬＬＡＤＡ＜ｃｏｎｖｅｘ＿ｍｅｓｈ＞要素に類似したものである。
【００６９】
必要なボリューム属性は、ゾーンが、メッシュボリュームの内側であるか、それとも外側であるかを表示する。
【００７０】
＜ｃｏｎｖｅｘ＿ｍｅｓｈ＞を記述する最小限のやり方は、これの各頂点を（＜ｖｅｒｔｉｃｅｓ＞要素およびこれに対応するソースによって）指定し、インポータにその点群の凸包を計算させることである。
【００７１】
（３）属性
＜ｚｏｎｅ＿ｍｅｓｈ＞要素は以下の属性を有する。
【００７２】
【表１】
2011502305.tif 000003
【００７３】
（４）関連要素
＜ｃｏｎｖｅｘ＿ｍｅｓｈ＞要素は以下の要素に関連する。
発生数      スキーマにおいて定義される要素数
親要素      形状
子要素      以下の項を参照されたい。
その他      なし
【００７４】
（５）子要素
子要素は、存在する場合には、＜ｓｏｕｒｃｅ＞、＜ｖｅｒｔｉｃｅｓ＞、プリミティブ要素、＜ｅｘｔｒａ＞の順序で表されなければならない（プリミティブ要素は、＜ｌｉｎｅｓ＞、＜ｌｉｎｅｓｔｒｉｐｓ＞、＜ｐｏｌｙｇｏｎｓ＞、＜ｐｏｌｙｌｉｓｔ＞、＜ｔｒｉａｎｇｌｅｓ＞、＜ｔｒｉｆａｎｓ＞、または＜ｔｒｉｓｔｒｉｐｓ＞の任意の組み合わせ）。
【００７５】
【表２】
2011502305.tif 000004
【００７６】
（６）例
以下に基本＜ｚｏｎｅ＿ｍｅｓｈ＞要素の一例を示す。
【数１】
2011502305.tif 000005
【００７７】
以下に＜ｚｏｎｅ＿ｍｅｓｈ＞要素の別の例を示す。
【数２】
2011502305.tif 000006
【００７８】
ｉｉ．＜ｓｔｒｅａｍ＞
＜ｓｔｒｅａｍ＞タグは＜ｚｏｎｅ＞内の切換え規則を定義する。
【００７９】
＜ｓｔｒｅａｍ＞要素は、以下の属性を有する。
【００８０】
【表３】
2011502305.tif 000007
【００８１】
ｉｉｉ．＜ｓｉｎｋ＞
＜ｓｉｎｋ＞タグは、ゾーンごと、ユーザ役割ごとのストリームの宛先を定義する＜ｓｔｒｅａｍ＞の子要素である。
【００８２】
＜ｓｉｎｋ＞要素は、以下の属性を有する。
【００８３】
【表４】
2011502305.tif 000008
【００８４】
ｃ．ＣＯＬＬＡＤＡストリーム参照  例１
以下は、２つのゾーン、ｚｏｎｅｎａｍｅ１およびｚｏｎｅｎａｍｅ２の記述例である。
【数３】
2011502305.tif 000009
【００８５】
この例において、＜ｇｅｏｍｅｔｒｙ＞要素は、場面（仮想の部屋など）内のボリュームの形を記述するＣＯＬＬＡＤＡ要素である。＜ｚｏｎｅ＿ｍｅｓｈ＞要素は、前述のような、ゾーン境界と既存のメッシュの間の関係を定めるＣＯＬＬＡＤＡストリーム参照要素である。＜ｌｉｂｒａｒｙ＿ｚｏｎｅｓ＞要素は、ゾーン「ｚｏｎｅｎａｍｅ１」とゾーン「ｚｏｎｅｎａｍｅ２」を含む＜ｚｏｎｅ＞要素のセットを宣言する。
【００８６】
ｚｏｎｅｎａｍｅ１の境界は、ＵＲＩ「＃ｍｙＡｒｂｉｔｒａｒｙＭｅｓｈ」で参照される＜ｇｅｏｍｅｔｒｙ＞によって計算される凸包の内部ボリュームに対応する。ｚｏｎｅｎａｍｅ２の境界は、「ａｎｏｔｈｅｒＭｅｓｈ」で定義される形状メッシュに対応する。
【００８７】
ｚｏｎｅｎａｍｅ１と関連付けられている第１の切換え規則は、ｚｏｎｅｎａｍｅ１をソースとする各音声データ・ストリームの１つのコピーが、音声データ・ストリームを受け取る（ｓｉｎｋ）ことができ且つ「ｐａｒｔｉｃｉｐａｎｔ（参加者）」役割属性を有するｚｏｎｅｎａｍｅ１内の各オブジェクトに送られると規定している。また第１の切換え規則は、ｚｏｎｅｎａｍｅ１をソースとする各音声データ・ストリームのコピーが、音声データ・ストリームを受け取ることができ且つ「ｍｏｄｅｒａｔｏｒ（仲介者）」役割属性を有するｚｏｎｅｎａｍｅ２内の各オブジェクトに送られるとも規定している。ｚｏｎｅｎａｍｅ１と関連付けられている第２の切換え規則は、ｚｏｎｅｎａｍｅ１をソースとする各チャット・データ・ストリームの１つのコピーが、チャット・データ・ストリームを受け取ることのできるｚｏｎｅｎａｍｅ１内の各オブジェクトに送られると規定している。ｚｏｎｅｎａｍｅ１と関連付けられている第３の切換え規則は、ｚｏｎｅｎａｍｅ１をソースとする、「ｍｏｄｅｒａｔｏｒ」役割属性と関連付けられた各オーディオ・データ・ストリームの１つのコピーが、オーディオ・データ・ストリームを受け取ることができ且つ仲介者役割属性と関連付けられていないｚｏｎｅｎａｍｅ１内の各オブジェクトに送られると規定している。
【００８８】
ｄ．ＣＯＬＬＡＤＡストリーム参照  例２
以下は、２つのゾーン、ＳｔａｇｅＺｏｎｅおよびＡｕｄｉｅｎｃｅＺｏｎｅを含むコンサートホールをモデル化した仮想領域のＣＯＬＬＡＤＡストリーム参照記述の一例である。
【数４】
2011502305.tif 000010
【００８９】
この例において、ＳｔａｇｅＺｏｎｅの境界は、「ＳｔａｇｅＭｅｓｈ」によって定義される形状メッシュに対応する。ＡｕｄｉｅｎｃｅＺｏｎｅの境界は、「ＲｏｏｍＭｅｓｈ」によって定義される形状メッシュに対応する。
【００９０】
ＳｔａｇｅＺｏｎｅと関連付けられている切換え規則は、ＳｔａｇｅＺｏｎｅをソースとする、「ｌｅａｄ＿ｓｉｎｇｅｒ（リードボーカル）」属性と関連付けられている各音声データ・ストリームの１つのコピーが、音声データ・ストリームを受け取ることができ且つ「ａｕｄｉｅｎｃｅ（観客）」役割属性を有するＡｕｄｉｅｎｃｅＺｏｎｅ内の各オブジェクトに送られると規定している。音声データ・ストリームの各コピーは、優先度レベル１で、直接ストリーム処理トポロジの設定で送られることになっている。またこの切換え規則は、ＳｔａｇｅＺｏｎｅをソースとする、「ｌｅａｄ＿ｓｉｎｇｅｒ」属性と関連付けられている各音声データ・ストリームのコピーが、音声データ・ストリームを受け取ることができ且つ「ａｌｌ＿ｐｅｒｆｏｒｍｅｒｓ（すべての演者）」役割属性を有するＳｔａｇｅＺｏｎｅ内の各オブジェクトに送られるとも規定している。
【００９１】
ＡｕｄｉｅｎｃｅＺｏｎｅと関連付けられている第１の切換え規則は、ＡｕｄｉｅｎｃｅＺｏｎｅをソースとする各音声データ・ストリームの１つのコピーが、音声データ・ストリームを受け取ることのできるＡｕｄｉｅｎｃｅＺｏｎｅ内の各オブジェクトに、優先度レベル２で送られると規定している。ＡｕｄｉｅｎｃｅＺｏｎｅと関連付けられている第２の切換え規則は、ＡｕｄｉｅｎｃｅＺｏｎｅをソースとする各チャット・データ・ストリームの１つのコピーが、サーバミックスの設定で、チャット・データ・ストリームを受け取ることのできるＡｕｄｉｅｎｃｅＺｏｎｅ内の各オブジェクトに送られると規定している。
【００９２】
Ｃ．仮想領域仕様の作成
図５に、仮想領域の仕様を作成するための３次元グラフィック設計ツールのグラフィカル・ユーザ・インターフェース９０の一実施形態を示す。グラフィカル・ユーザ・インターフェース９０は、描画領域９２、メニュー９４、およびツールバー９６を含む。
【００９３】
メニュー９４は、描画ツール、コマンド、および設定へのアクセスを可能にする。図５Ａに示すメニューセットの例９４は、Ｆｉｌｅ（ファイル）、Ｅｄｉｔ（編集）、Ｖｉｅｗ（表示）、Ｖｉｅｗｐｏｉｎｔ（視点）、Ｄｒａｗ（描画）、Ｔｏｏｌｓ（ツール）、Ｗｉｎｄｏｗｓ（登録商標）（ウィンドウ）、およびＨｅｌｐ（ヘルプ）を含む。また、メニューセット９４は、仮想領域における各ゾーンおよびストリーム接続を定義するツールへのアクセスを可能にするＳｏｃｏｃｏ  Ｚｏｎｅｓメニュー９８も含む。これらのツールは、３次元グラフィック設計ツールの不可欠な構成要素とすることもでき、またはＳｋｅｔｃｈＵｐ（米国カリフォルニア州マウンテンビュー所在のグーグル社から入手できる）、Ｍａｙａ、または３ｄｓ  Ｍａｘ（どちらも、米国カリフォルニア州サンラファエル所在のオートデスク社から入手できる）といった３次元グラフィックスツールへのプラグイン拡張の一部として提供されてもよい。
【００９４】
ツールバー９６は、ユーザ定義可能なツールおよびコントロールのセットを含む。図５に示すツールバーセットの例９６は、ＳｋｅｔｃｈＵｐ６の３次元グラフィックス設計ソフトウェア・アプリケーション・プログラムといった、３次元グラフィック設計ツールにおいて通常見られるツールおよびコマンドに対応するものである。
【００９５】
描画領域９２は、領域設計者が仮想領域の３次元モデルを作成するところである。図５において、グラフィカル・ユーザ・インターフェース９０の描画領域９２には、３次元仮想領域１００の斜視図が示されている。図６において、グラフィカル・ユーザ・インターフェース９０の描画領域９２には、仮想領域１００の平面図が示されている。仮想領域１００の各形状要素（壁、天井、床、柱、ベンチ、照明器具など）は通常、ＳｋｅｔｃｈＵｐ６の３次元グラフィックス設計ソフトウェア・アプリケーション・プログラムといった、３次元グラフィック設計ツールにおいて通常見られる標準的なツールおよびコマンドを使用して定義される。
【００９６】
図５および図６に示すように、形状要素に加えて、仮想領域１００はさらに、破線境界で囲まれたゾーン１０１、１０２、１０４、１０６、１０８、１１０、１１２も含む。ゾーン１０１〜１１２はそれぞれ、１つ以上の個々のリアルタイム・データ・ストリーム切換え規則と関連付けられている。ゾーン１０２〜１１２は、Ｓｏｃｏｃｏ  Ｚｏｎｅｓメニュー９８を介してアクセス可能なツールおよびコマンドを使用して指定される。実施形態によっては、領域設計者は、標準３次元グラフィックス設計ツールを使用してゾーン１０１〜１１２のそれぞれの境界を指定し、次いで、Ｓｏｃｏｃｏ  Ｚｏｎｅｓ設計ツールの１つ以上を選択して、その境界を個々の＜ｚｏｎｅ＿ｍｅｓｈ＞タグと関連付け、その＜ｚｏｎｅ＿ｍｅｓｈ＞タグの属性を指定することができる。これらの実施形態の中には、Ｓｏｃｏｃｏ  Ｚｏｎｅｓ設計ツールがユーザを誘導して、各ゾーンが前述のＣＯＬＬＡＤＡストリーム参照仕様（＜ｚｏｎｅ＞タグ、＜ｓｔｒｅａｍ＞タグ、＜ｓｉｎｋ＞タグなど）を使用して表現されるように各ゾーンを定義するプロセスを行わせるものもある。
【００９７】
Ｖ．第１のシステムアーキテクチャ実施形態
Ａ．全般的システム概要
交信者は通常、それぞれのネットワークノードから共用仮想領域通信環境にアクセスする。これらのネットワークノードはそれぞれ、通常は、汎用コンピュータシステムまたは専用通信コンピュータシステム（または「コンソール」）によって実施される。各ネットワークノードは、各ネットワークノードにおいて仮想領域のそれぞれのビューを提示し、他のネットワークノードとのリアルタイム・データ・ストリーム接続を確立する通信プロセスを実行する。
【００９８】
図７に、ネットワークノード５２〜５６（このアーキテクチャでは「エリア・クライアント・ネットワーク・ノード」または単に「エリアクライアント」と呼ぶ）とエリアサーバ６４が、通信ネットワーク５８によって相互接続されている、サーバ仲介型共用仮想領域通信環境１２０の一実施形態を示す。この実施形態において、エリア・クライアント・ネットワーク・ノード５２〜５６はそれぞれ、エリア・クライアント・サーバ・ネットワーク・ノード５２と関連して後述する種類の個々のコンピュータシステムによって実施される。またエリアサーバ６４も、後述する同じ種類の汎用コンピュータシステムによって実施される。
【００９９】
図７に示すように、エリア・クライアント・ネットワーク・ノード５２は、処理装置１２２、システムメモリ１２４、および処理装置１２２をコンピュータシステムの様々な構成要素に結合するシステムバス１２６を含むコンピュータシステムによって実施される。処理装置１２２は、１つ以上のデータプロセッサを含んでいてもよく、各データプロセッサは、様々な市販のコンピュータプロセッサのいずれか１つの形のものとすることができる。システムメモリ１２４は、コンピュータシステムのためのスタートアップルーチンを含む基本入出力システム（ＢＩＯＳ）を記憶する読取り専用メモリ（ＲＯＭ）、およびランダム・アクセス・メモリ（ＲＡＭ）を含み得る。システムバス１２６は、メモリバス、周辺バスまたはローカルバスとすることができ、ＰＣＩ、ＶＥＳＡ、Ｍｉｃｒｏｃｈａｎｎｅｌ、ＩＳＡ、およびＥＩＳＡを含む様々なバスプロトコルのいずれかと適合するものとすることができる。また、コンピュータシステムは、システムバス１２６に接続され、データ、データ構造、およびコンピュータ実行可能命令のための不揮発性または永続記憶を提供する１つ以上のコンピュータ可読媒体ディスクを含む、永続記憶装置１２８（ハードドライブ、フロッピー（登録商標）ドライブ、ＣＤ−ＲＯＭドライブ、磁気テープドライブ、フラッシュ・メモリ・デバイス、ディジタル・ビデオ・ディスクなど）も含む。交信者は、１つ以上の入力装置１３０（１つ以上のキーボード、コンピュータマウス、マイクロホン、カメラ、ジョイスティック、Ｗｉｉデバイスといった身体動作センサ、タッチパッドなど）を使用してコンピュータシステムと対話する（コマンドまたはデータを入力するなど）ことができる。情報は、表示コントローラ１３４によって制御される表示モニタ１３２上で交信者に提示される２次元グラフィカル・ユーザ・インターフェース（ＧＵＩ）または３次元ＧＵＩのいずれかを介して提示され得る。また、コンピュータシステムは、スピーカやプリンタといった周辺出力装置を含んでいてもよい。コンピュータシステムは、（「ネットワーク・インターフェース・カード」またはＮＩＣともいう）ネットワークアダプタ１３６を介して他のエリア・クライアント・ネットワーク・ノード５４、５６およびエリアサーバ６４に接続する。
【０１００】
システムメモリ１２４には、オペレーティングシステム１４０（米国ワシントン州レッドモンド所在のマイクロソフト社（Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ）から入手できるＷｉｎｄｏｗｓ（登録商標）ＸＰ  オペレーティングシステムなど）、通信アプリケーション１４２、ＧＵＩドライバ１４４、およびデータ１４６を含む（ただし必ずしもこれらに限定されない）いくつかのプログラムモジュールが記憶され得る。データ１４６の種類の例には、入力データ、出力データ、およびレジストリ（または構成データベース）１４８といったプログラムデータなどが含まれる。
【０１０１】
オペレーティングシステム１４０は、コンピュータシステム上で実行時実行環境を作成するための基本オペレーティング・システム・サービス（メモリ管理、プロセスおよびスレッド管理、セキュリティ、入力／出力、プロセス間通信など）を提供するエグゼクティブ（executive）を含む。レジストリ１４８は通常、システムを起動し構成するのに必要なパラメータ、オペレーティングシステム１４０の動作を制御するシステム規模のソフトウェア設定、セキュリティデータベース、およびユーザごとのプロファイル設定という情報を含む。ネイティブ・オペレーティング・システム（ＯＳ）アプリケーション・プログラミング・インターフェース（ＡＰＩ）１５０が、エグゼクティブの基本オペレーティング・システム・サービスを、通信アプリケーション１４２および他のユーザアプリケーションに提示する。本明細書で使用する場合、「サービス」（または「サービスモジュール」）という用語は、１つ以上の機能のセットを提供するオペレーティングシステムの構成要素をいう。
【０１０２】
実施形態によっては、通信アプリケーション１４２は、表示モニタ１３２上の仮想領域および仮想領域内のオブジェクトの個々のビューの表示を制御するプロセス、ならびにエリア・クライアント・ネットワーク・ノード５２とその他のエリア・クライアント・ネットワーク・ノード５４、５６およびエリアサーバ６４の間のリアルタイム・データ・ストリームの切換えを制御するプロセスを含む。通信アプリケーション１４２は、ＧＵＩドライバ１４４およびユーザ入力１３０とインターフェースして、仮想領域のビューを提示し、交信者に、通信アプリケーション１４２の動作を制御させる。
【０１０３】
通信アプリケーション１４２の実施形態は、どんな特定のハードウェア、ファームウェア、またはソフトウェア構成にも限定されない、１つ以上の個別モジュール（またはデータ処理コンポーネント）によって実施され得る。一般にこれらのモジュールは、ディジタル電子回路（ディジタル信号プロセッサ（ＤＳＰ）といった特定用途向け集積回路など）や、コンピュータハードウェア、ファームウェア、デバイスドライバ、またはソフトウェアを含む、任意のコンピューティング環境またはデータ処理環境において実施され得る。実施形態によっては、これらのモジュールの機能が組み合わされて単一のデータ処理コンポーネントとされる。実施形態によっては、これらのモジュールの１つ以上のそれぞれの個々の機能が、複数のデータ処理コンポーネントの個々のセットによって実行される。実装形態によっては、通信アプリケーション１４２の各実施形態によって実行される方法を実施するプロセス命令（コンピュータソフトウェアといった機械可読コードなど）、および通信アプリケーション１４２が生成するデータが、１つ以上の機械可読媒体に記憶される。これらの命令およびデータを目に見える形で実施するのに適した記憶装置には、例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ・デバイスといった半導体メモリデバイスや、内蔵式ハードディスク、取り外し可能ハードディスクといった磁気ディスク、光磁気ディスク、ＤＶＤ−ＲＯＭ／ＲＡＭ、およびＣＤ−ＲＯＭ／ＲＡＭなどを含む、あらゆる形の不揮発性コンピュータ可読メモリが含まれる。通信アプリケーション１４２の実施形態は、パーソナルコンピュータ機器（デスクトップコンピュータ、モバイルコンピュータ、通信機器など）、ネットワーク機器（サーバコンピュータ、ルータ、スイッチ、ハブなど）、ゲームコンソール、ケーブルテレビおよびハイブリッド・セットトップ・ボックス、モデムを含む多種多様な電子機器のいずれか１つとして実施され得る。
【０１０４】
また、システムメモリ１２４に記憶される実行環境は、リアルタイム・データ・ストリームを送受信するためのネットワーク・トランスポート・プロトコル１５２のセットも含む。
【０１０５】
実施形態によっては、ネットワーク５８を介した通信は、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）に従って行われる。このプロトコルのＴＣＰ部分は、搬送機能を提供して、メッセージをより小さいパケットに分割し、通信ネットワークの他端においてそれらのパケットを再組立てし、経路上で失われたパケットを再送信する。このプロトコルのＩＰ部分は、経路指定機能を提供して、データパケットに宛先ネットワークと宛先ネットワークにおける目標ノードのアドレスを割り当てる。ＴＣＰ／ＩＰプロトコルを使用して送られる各データパケットは、ＴＣＰおよびＩＰ情報を含むヘッダ部分を含む。ＩＰプロトコルは、通信スタックの上位層へのパケット受渡しを保証するものではない。他方、ＴＣＰプロトコルは、シーケンス内パケット受渡しが保証される、接続指向のエンドツーエンド搬送サービスを提供する。このようにして、ＴＣＰプロトコルは、信頼性の高いトランスポート層接続を提供する。
【０１０６】
他の実施形態には、ネットワーク５８を介した通信が、ユーザ・データグラム・プロトコル／インターネットプロトコル（ＵＤＰ／ＩＰ）に従って行われるものもある。ＵＤＰは、高信頼性の配信が必要とされない条件下で、ＴＣＰの代わりに使用され得る。例えばＵＤＰ／ＩＰは、再送信する時間がない、またはデータ品質全般の低下は許容可能である、のいずれかの理由で失われたデータパケットが単に無視される、リアルタイムのオーディオおよび映像トラフィックに使用され得る。
【０１０７】
実施形態の中には、Ｊａｖａ（登録商標）メディアフレームワーク（ＪＭＦ）を使用するものもあり、ＪＭＦは、デバイス取込み、符号化、復号、レンダリング、およびリアルタイム・トランスポート・プロトコル（ＲＴＰ）をサポートする。エリア・クライアント・ネットワーク・ノード５２〜５６間でＲＴＰデータを送受信する際には、ピア・ツー・ピア・ネットワーキング・フレームワーク、ＴＣＰソケットを単独で、もしくはＵＤＰと組み合わせて使用する集中サーバ、またはマルチキャストプロトコルを含む様々なネットワークプロトコルが使用され得る。
【０１０８】
また実行環境は、ハードウェアのリンクレベルおよびアクセスプロトコルも含み、これらのプロトコルは、開放型システム間相互接続（ＯＳＩ）参照モデルのデータリンク層および物理層に対応し得る。
【０１０９】
図示の実施形態において、エリア・クライアント・ネットワーク・ノード５２〜５６とエリアサーバ６４の間の通信は、ＴＣＰ／ＩＰプロトコルに従って行われる。これらの実施形態では、コンピュータシステムは、ＴＣＰ／ＩＰを使用して通信する前に、その各ネットワークインターフェースのそれぞれについてＩＰアドレスを決定する。このプロセスは、サーバにコンタクトして、そのネットワークインターフェースの１つ以上のＩＰアドレスを動的に獲得することを伴い得る。コンピュータシステムは、動的ホスト構成プロトコル（ＤＨＣＰ）を使用して、ＤＨＣＰサーバにＩＰアドレスを求める要求を発し得る。これに関して、コンピュータシステムは、システム起動時に、表示されるネットワークインターフェースのためのＩＰアドレスの割振りを要求するＤＨＣＰ要求パケットをブロードキャストする。ＤＨＣＰ要求パケットを受け取ると、ＤＨＣＰサーバは、表示されるネットワークインターフェースで使用するためにコンピュータシステムにＩＰアドレスを割り振る。次いでコンピュータシステムは、サーバからの応答に含まれるＩＰアドレスを、ＩＰプロトコルを使用して通信するときにそのネットワークインターフェースと関連付けるべきＩＰアドレスとして記憶する。
【０１１０】
Ｂ．例示的システムアーキテクチャ
図８に、エリア・クライアント・ネットワーク・ノード５２〜５６がエリアサーバ６４によって仲介されるアーキテクチャにおいて通信し合う、図７に示すサーバ仲介型共用仮想領域通信環境１２０の一実施形態１６０を示す。
【０１１１】
エリアサーバ６４は、グローバル状態情報を保持し、エリア・クライアント・ネットワーク・ノード５２〜５６のデータサーバとして働く。エリアサーバによって保持されるグローバル状態情報の中には、仮想領域の現在の仕様１８０、仮想領域にあるオブジェクトの現在のレジスタ１８２、エリアサーバ６４によって現在生成されている任意のストリームミックスのリスト１８４がある。
【０１１２】
前述のように、仮想領域仕様１８０は、仮想領域の形状要素および１つ以上の切換え規則の記述を含む。切換え規則はそれぞれ、個々のリアルタイム・データ・ストリーム型のソースとそのリアルタイム・データ・ストリーム型のシンクの間の個々の接続を、仮想領域における位置を使って定義する。実施形態によっては、仮想領域の形状要素は、ＣＯＬＬＡＤＡ−Ｄｉｇｉｔａｌ  Ａｓｓｅｔ  Ｓｃｈｅｍａ  Ｒｅｌｅａｓｅ  １．４．１仕様に従って記述され、切換え規則は、前述の提案するＣＯＬＬＡＤＡストリーム参照仕様に従って記述される。
【０１１３】
オブジェクトレジスタ１８２は通常、仮想領域内の各オブジェクトごとに、個々のオブジェクト識別子（オブジェクトを一意に識別するラベルなど）、オブジェクトと関連付けられているネットワークノードとネットワーク接続が確立されることを可能にする接続データ（ＩＰアドレスなど）、およびオブジェクトと関連付けられているリアルタイムデータのソースおよびシンク（オブジェクトと関連付けられているネットワークノードのソースおよびシンクなど）を識別するインターフェースデータを含む。また、オブジェクトレジスタ１８２は通常、各オブジェクトごとに、１つ以上の任意選択の役割識別子も含み、これらの役割識別子は、交信者またはエリアサーバ６４によってオブジェクトに明示的に割り当てられる場合もあり、オブジェクトの他の属性から推論される場合もある。また、実施形態によっては、オブジェクトレジスタ１８２は、エリア・クライアント・ネットワーク・ノード５２〜５６から受け取られるリアルタイムの動きデータ・ストリームの解析からエリアサーバ６４によって決定される仮想領域における各オブジェクトの現在位置も含む。これに関して、エリアサーバ６４は、エリア・クライアント・ノード５２〜５６からリアルタイムの動きデータ・ストリームを受け取り、動きデータに基づいて仮想領域において参入し、退出し、動き回る交信者のアバタおよび他のオブジェクトを追跡する。エリアサーバ６４は、追跡されるオブジェクトの現在の場所に従ってオブジェクトレジスタ１８２を更新する。
【０１１４】
図８に示す実施形態において、エリア・クライアント・ネットワーク・ノード５２は、通信モジュール１６２、３次元可視化エンジン１６４、チャットエンジン１６５、およびオーディオ処理エンジン１６６を含む、通信アプリケーション１４２の一実施形態を含む（図７参照）。その他のネットワークノード５４、５６はそれぞれ、通常、エリア・クライアント・ネットワーク・ノード５２に関連して説明したのと同じまたは同様の通信アプリケーション１４２の一実施形態を含む。
【０１１５】
通信モジュール１６２は、エリア・クライアント・ネットワーク・ノード５２と、その他のエリア・クライアント・ネットワーク・ノード５４、５６およびエリアサーバ６４の間のリアルタイム・データ・ストリームの切換えを制御する。通信モジュール１６２は、ストリーム切換えマネージャ１６８および帯域幅モニタ１７０を含む。ストリーム切換えマネージャ１６８は、エリア・クライアント・ネットワーク・ノード５２と関連付けられたアバタおよび他のオブジェクトの仮想領域への参入および仮想領域からの退出を処理する。またストリーム切換えマネージャ１６８は、エリア・クライアント・ネットワーク・ノード５２と、その他のエリア・クライアント・ネットワーク・ノード５４、５６およびエリアサーバ６４の間でリアルタイム・データ・ストリームをどのようにして切り換える（経路指定する、接続する、切断するなど）べきか、も自動的に決定する。ストリーム切換えマネージャ１６８は、これらの決定を、仮想領域仕様に含まれる切換え規則、仮想領域におけるアバタおよび他のオブジェクトの現在の場所、ならびに仮想領域内のアバタおよび他のオブジェクトと関連付けられているリアルタイム・データ・ストリーム型に基づいて行う。また、実施形態によっては、ストリーム切換えマネージャ１６８は、これらの決定に際して、エリア・クライアント・ネットワーク・ノード５２、他のネットワークノード５４、５６、またはエリアサーバ６４のいずれかのアップロードおよびダウンロードの帯域幅制約条件も考慮する。加えて、ストリーム切換えマネージャ１６８は、現在の接続のセットを、イベント（アップロードまたはダウンロード帯域幅の障害や、仮想領域への参入および仮想領域からの退出を求める要求など）に応答して、または周期的に、または、イベントに応答して、と、周期的に、の両方で再評価する。現在の接続の再評価の結果として、ストリーム切換えマネージャ１６８は、例えば、エリアサーバ６４からのストリームミックスを要求する、エリアサーバからのストリームミックスを削除する、その他のエリア・クライアント・ネットワーク・ノード５４、５６の１つ以上との１つ以上の直接リンクを切断する、またはその他のエリア・クライアント・ネットワーク・ノード５４、５６の１つ以上との１つ以上の直接リンクを構成する、のいずれかの措置を講じる。
【０１１６】
リアルタイム・データ・ストリーム接続の切換えを管理する過程において、ストリーム切換えマネージャ１６８は、インターフェースデータ１８６、ゾーンリスト１８８、および現在仮想領域内にあるオブジェクトの位置１９２を含む構成データセットを維持する。インターフェースデータ１８６は、エリア・クライアント・ネットワーク・ノード５２と関連付けられた各オブジェクトごとに、そのオブジェクトと関連付けられているリアルタイム・データ・ストリーム型のすべてのソースおよびシンクの個々のリストを含む。ゾーンリスト１８８は、エリア・クライアント・ネットワーク・ノード５２と関連付けられたアバタによって現在占有されている仮想領域内のすべてのゾーンのレジスタである。交信者が最初に仮想領域に参入するとき、ストリーム切換えマネージャ１６８は通常、現在オブジェクト位置データベース１９２を、エリアサーバ６４からダウンロードされる位置初期設定情報で初期設定する。その後、ストリーム切換えマネージャ１６８は、現在のオブジェクト位置データベース１９２を、例えば、コンピュータマウス１７１、エリア・クライアント・ネットワーク・ノード５４、５６、およびエリアサーバ６４の１つ以上などから受け取られるリアルタイムの動きデータ・ストリームの解析から決定される仮想領域におけるオブジェクトの現在位置で更新する。実施形態によっては、オブジェクト位置１９２は、オブジェクトレジスタ１９０に組み込まれる。また、ストリーム切換えマネージャ１６８によって維持される構成データは、オブジェクトレジスタ１８２、ストリーム・ミックス・リスト１８４および仮想領域仕様１８０のそれぞれのコピー１９０、１９４、１９６も含む。これらのコピー１９０、１９４、１９６は通常、エリアサーバ６４からダウンロードされ、これらのデータのローカルキャッシュを表す。
【０１１７】
３次元可視化エンジン１６４は、表示モニタ１３２上に、仮想領域と仮想領域内にある任意のオブジェクトのビューを提示する。このプロセスにおいて、３次元可視化エンジン１６４は、仮想領域仕様データ１９６、オブジェクトレジスタ１９０、および現在オブジェクト位置データベース１９２を読み取る。また、実施形態によっては、３次元可視化エンジン１６４は、仮想領域において交信者のアバタをレンダリングするのに必要な画像を含む交信者アバタデータベース１９８も読み取る。この情報に基づき、３次元可視化エンジン１６４は、仮想領域における交信者のアバタの視点（位置と向き）からの仮想領域および仮想領域内のオブジェクトの透視図表現（すなわち画像）を生成する。次いで３次元可視化エンジン１６４は、仮想領域の透視図表現を表示モニタ１３２上にレンダリングする。実施形態によっては、３次元可視化エンジン１６４は、交信者のアバタの可視性を、表示モニタ１３２上に見える仮想領域の部分に対してやり取りされ、処理され、レンダリングされる必要のあるデータ量を制限するように決定する。
【０１１８】
実施形態によっては、３次元可視化エンジン１６４はさらに、仮想領域の平面図表現を生成するように動作可能である。これらの実施形態において、交信者は、３次元可視化エンジン１６４に、仮想領域の透視図表現と仮想領域の平面図表現の一方または両方を表示モニタ１３２上にレンダリングするように指図し得る。
【０１１９】
交信者は、提示される仮想領域のビューまたは仮想領域内のアバタの位置を、入力装置（コンピュータマウス１７１など）から通信モジュール１６２にコマンドを送信することによって制御することができる。３次元可視化エンジン１６４は、仮想領域のビューおよび仮想領域内のオブジェクトの位置を、現在オブジェクト位置データベース１９２内の更新された位置に従って更新し、仮想領域のグラフィック表現の更新バージョンを表示モニタ１３２上にレンダリングし直す。３次元可視化エンジン１６４は、レンダリングされた画像を、周期的に更新してもよく、仮想領域内のオブジェクトの１つ以上の動きに応答してのみ更新してもよい。
【０１２０】
チャットエンジン１６５は、エリア・クライアント・ネットワーク・ノード５２のローカルテキスト入力装置（キーボードなど）から受け取られる発信チャット（テキスト）メッセージと、他のエリア・クライアント・ネットワーク・ノード５４、５６から受け取られる着信チャットストリームのためのインターフェースを提供する。チャットエンジン１６５は、交信者によりテキスト入力装置を介して入力されるチャット（テキスト）メッセージを、その他のネットワークノード５４、５６に送信することのできるリアルタイム・チャット・ストリームに変換する。またチャットエンジン１６５は、着信チャットストリームの、表示モニタ１３２上にレンダリングすることのできるテキスト信号への変換も行う。
【０１２１】
オーディオ処理エンジン１６６は、交信者のヘッドセット１７６内のスピーカ１７２、１７４によってレンダリングされるオーディオ信号を生成し、ヘッドセット１７６内のマイクロホン１７８によって生成されるオーディオ信号を、その他のエリア・クライアント・ネットワーク・ノード５４、５６に送ることのできるリアルタイム・オーディオ・ストリームに変換する。
【０１２２】
ＶＩ．リアルタイム・データ・ストリームの自動切換え
Ａ．序論
前述のように、共用仮想領域は、仮想領域の形状要素、およびネットワークノード間のリアルタイムストリーム接続を制御する１つ以上の切換え規則の記述を含む仕様によって定義される。切換え規則は通常、仮想領域における位置によるリアルタイム・データ・ストリームのソースとシンクを接続する条件の記述を含む。各規則は通常、その規則が適用されるリアルタイム・データ・ストリーム型を定義する属性と、その規則が適用される仮想領域内の１つ以上の場所を含む。実施形態によっては、規則はそれぞれ、任意選択で、必要とされるソースの役割、必要とされるシンクの役割、必要とされるストリームの優先度レベル、および必要とされる、または好ましいストリームトポロジを規定する１つ以上の属性を含み得る。
【０１２３】
切換え規則は、仮想領域へのオブジェクトの参入、仮想領域内でのオブジェクトの移動、および仮想領域からのオブジェクトの退出に際して関与する。
【０１２４】
Ｂ．仮想領域への参入
図９に、エリアクライアント（この項では「参入エリアクライアント」という）が仮想領域に参入するための方法の一実施形態を示す。
【０１２５】
交信者が、エリア・クライアント・ネットワーク・ノード上で通信アプリケーション１４２（図７参照）を起動して通信セッションを開始する（図９、ブロック２００）。通信アプリケーション１４２は、交信者に、交信者がアプリケーション１４２と対話するためのグラフィカル・ユーザ・インターフェースを提示する。グラフィカル・ユーザ・インターフェースは通常、交信者に、共用仮想領域にログインするための選択肢を与える。
【０１２６】
共用仮想領域にログインするためのコマンドを受け取ったことに応答して、通信アプリケーション１４２は、エリアサーバ６４にログインメッセージを送る（図９、ブロック２０２）。ログインメッセージは通常、交信者を識別し、認証するためのログイン情報を含む。
【０１２７】
エリアサーバ６４は、ログインメッセージに含まれるログイン情報を認証し（図９、ブロック２０４）、エリアクライアントにその結果を通知する（図９、ブロック２０６）。
【０１２８】
認証に成功した場合（図９、ブロック２０７）、通信アプリケーション１４２はエリアサーバ６４にインターフェースデータを送信する（図９、ブロック２０９）。インターフェースデータは、その領域に参入しようとする各オブジェクトごとに、そのオブジェクトと個々に関連付けられているすべてのリアルタイム・データ・ストリームのソース型およびシンク型の識別を含む。認証に失敗した場合（図９、ブロック２０７）、通信アプリケーション１４２は、ログインセッションを停止し、交信者にログイン試行の失敗を通知する（図９、ブロック２０８）。
【０１２９】
エリアサーバ６４は、参入するエリアクライアントと関連付けられているオブジェクト、ならびにこれらのオブジェクトと関連付けられているリアルタイム・データ・ストリームのソース型およびシンク型を含めるようにオブジェクトレジスタ１９０（図８参照）を更新する（図９、ブロック２１０）。エリアサーバ６４は、参入するエリアクライアントに構成データを送信する（図９、ブロック２１２）。構成データは、仮想領域仕様１８０（図８参照）のコピー、および更新されたオブジェクトレジスタ１８２（図８参照）のコピーを含む。実施形態によっては、構成データはさらに、ストリーム・ミックス・リスト１８４（図８参照）のコピーも含み、ストリーム・ミックス・リスト１８４は、現在エリアサーバ６４によって生成されているエリアクライアントのリアルタイム・データ・ストリームの混合（または組み合わせ）を識別する。またエリアサーバ６４は、更新されたオブジェクトレジスタ１８２の個々のコピーを、仮想領域内のオブジェクトと関連付けられている他のエリアクライアントにも送信する（図９、ブロック２１４）。前述のように、エリアサーバ６４は、エリア・クライアント・ノード５２〜５６からリアルタイムの動きデータ・ストリームを受け取り、動きデータに基づいて交信者のアバタおよび仮想領域に出入りする他のオブジェクトを追跡し、追跡されるオブジェクトの現在の場所に従ってオブジェクトレジスタ１８２を更新する。エリアサーバ６４は、更新されたオブジェクトレジスタ１８２を、仮想領域にあるオブジェクトと関連付けられているエリアクライアントに周期的に送信する。
【０１３０】
参入するエリア・クライアント・ネットワーク・ノード上で実行されている通信アプリケーション１４２は、仮想領域仕様およびオブジェクトレジスタを、以下に詳細に説明するように処理する（図９、ブロック２１６）。次いで通信アプリケーション１４２は、参入するエリア・クライアント・ネットワーク・ノードと、オブジェクトレジスタに記載されているその他のエリアクライアントの１つ以上の間の１つ以上のリアルタイム・データ・ストリーム接続を、仮想領域仕様で定義されている切換え規則と、受け取ったオブジェクトレジスタ１８２のコピーに記載されているオブジェクトと関連付けられている個々のソースおよびシンクと、仮想領域におけるオブジェクトの個々の位置とに基づいて確立する（図９、ブロック２１８）。これらの接続を確立するプロセスにおいて、通信アプリケーション１４２は、参入するエリア・クライアント・ネットワーク・ノード上で利用可能なそのリアルタイム・データ・ストリームの取込み、再生、ストリーミング、および変換を可能にする構成モジュールを開始し、構成する。これらの構成要素には通常、チャットエンジン１６５、オーディオ処理エンジン１６６、およびその他の構成要素（ローカル映像取込み機器から受け取られる映像データを符号化し、リモート・ネットワーク・ノードから受け取られるリアルタイム映像ストリームパケットを復号する映像処理エンジンなど）を含む。
【０１３１】
Ｃ．必要なリアルタイム・データ・ストリーム接続のセットを決定するための構成データの処理
図１０は、必要なリアルタイム・データ・ストリーム接続のセットを決定するために、ストリーム切換えマネージャ１６８（図８）の一実施形態が、図９の方法のブロック２１６でエリアサーバ６４から受け取られる構成データを処理する際に従う方法の一実施形態の流れ図である。前述のように、構成データは、仮想領域仕様１８０（図８参照）のコピー、および更新されたオブジェクトレジスタ１８２（図８参照）のコピーを含む。実施形態によっては、構成データはさらに、現在エリアサーバ６４によって生成されているエリア・クライアント・リアルタイム・データ・ストリームの混合（または組み合わせ）を識別するストリーム・ミックス・リスト１８４（図８参照）を含む。
【０１３２】
ストリーム切換えマネージャ１６８は、ローカル・オブジェクト・レジスタ１９０（図８参照）を、エリアサーバ６４から受け取られるオブジェクトレジスタ１８２のコピーで初期設定する（図１０、ブロック２２０）。また、ストリーム切換えマネージャ１６８は、エリアサーバ６４から受け取られるストリーム・ミックス・リスト１８４のコピーでローカル・ストリーム・ミックス・リスト１９４も初期設定する（図１０、ブロック２２２）。ストリーム切換えマネージャ１６８はさらに、エリアサーバ６４から受け取られる仮想領域仕様１８０のコピーでローカル仮想領域仕様キャッシュ１９６（図８参照）も初期設定する（図１０、ブロック２２４）。
【０１３３】
ストリーム切換えマネージャ１６８は、仮想領域仕様１９６および仮想領域における交信者のアバタの場所から、占有ゾーンのリスト１８８（図８参照）を構築する（図１０、ブロック２２６）。このプロセスにおいて、ストリーム切換えマネージャ１６８は、仮想領域におけるアバタの現在位置の座標を含む現在オブジェクト位置データベース１９２から仮想領域における交信者のアバタの現在位置を検索する。これらの座標は、コンピュータマウス１７１といった入力装置から受け取られるリアルタイムの動きデータ・ストリームから決定される。次いでストリーム切換えマネージャ１６８は、交信者のアバタの現在位置を仮想領域仕様１９６におけるゾーン定義と比較する。ストリーム切換えマネージャ１６８は、交信者のアバタの現在位置と同一空間を占める仮想領域仕様内のすべてのゾーンから占有ゾーンのリスト１８８をまとめる。例えば、実施形態によっては、占有ゾーンのリスト１８８は、そのメッシュが交信者のアバタの現在位置を含むすべてのゾーンからなる。
【０１３４】
ストリーム切換えマネージャ１６８は、占有ゾーンのリスト内の各ゾーンに定義される目標リアルタイム・データ・ストリーム型のセットを決定する（図１０、ブロック２２８）。次いでストリーム切換えマネージャ１６８は、目標リアルタイム・データ・ストリーム型のセット、仮想領域におけるオブジェクトの位置、および仮想領域仕様で定義されている切換え規則から、必要なリアルタイム・データ・ストリーム・データのセットを決定する（図１０、ブロック２３０）。
【０１３５】
例示的実施形態の中には、ストリーム切換えマネージャ１６８が、１つ以上の切換え規則によって、目標セット内のリアルタイム・データ・ストリーム型のそれぞれのソースであり、目標セット内のリアルタイム・データ・ストリーム型のそれぞれのシンクであると定義されている各ゾーンの１つ以上に含まれる、所与のオブジェクトを除く各オブジェクトのそれぞれを確認するものもある。ストリーム切換えマネージャ１６８は、確認されたオブジェクトに基づいて、接続可能なリアルタイム・データ・ストリームのセットを決定する。接続可能なストリームはそれぞれ、（ｉ）確認されたオブジェクトと関連付けられているネットワークノードの１つ以上をソースとするものと、（ｉｉ）確認されたオブジェクトと関連付けられているネットワークノードの１つ以上をシンクとするものの少なくとも１つである。次いでストリーム切換えマネージャ１６８は、接続可能なリアルタイム・データ・ストリームのセットと関連付けられているソースとシンクのマッチングに基づいて、必要なリアルタイム・データ・ストリーム・データのセットを決定する。
【０１３６】
これらの実施形態の中には、必要なリアルタイム・データ・ストリーム・データのセットが、切換え規則およびエリア・クライアント・ネットワーク・ノード上で利用可能なシンクに従って交信者のアバタによって占有されるゾーンに供給することのできるリアルタイム・データ・ストリームに対応するものもある。これらの実施形態において、ストリーム切換えマネージャ１６８は、関連付けられたネットワークノードがシンクとすることのできる占有ゾーンに定義されるシンクのそれぞれを決定し、次いで、仮想領域における他のオブジェクトの位置、および切換え規則に基づいて、それらのシンクのすべてのソースを決定する。このプロセスにおいて、ストリーム切換えマネージャ１６８は、交信者のアバタと関連付けられる、交信者のアバタによって占有されているゾーンのいずれかのシンク型として定義されるすべてのリアルタイムシンク型（オーディオ、チャット、映像、動きデータなど）から、目標リアルタイム・データ・ストリーム型のセットをまとめる。次いでストリーム切換えマネージャ１６８は、切換え規則から、目標リアルタイム・データ・ストリーム型がそれぞれそのソースとすることのできるすべての目標ソースゾーンを決定する。ストリーム切換えマネージャ１６８は、オブジェクトレジスタ１９０および現在オブジェクト位置データベース１９２から、切換え規則に従って、それらの現在位置を目標リアルタイム・データ・ストリーム型の１つ以上のソースとすることのできる目標ソースゾーン内のすべてのオブジェクトを識別する。ストリーム切換えマネージャ１６８は、オブジェクトレジスタ１９０内の識別されたオブジェクトと関連付けられる接続データから、必要なリアルタイム・データ・ストリーム・データのセットをまとめる。
【０１３７】
一説明例として、図１１に、４つのアバタオブジェクトＡ、Ｂ、Ｃ、Ｄが読み込まれているときの、仮想画廊領域１００（図５、図６など参照）の平面図を示す。アバタＡおよびアバタＢはゾーン１０１に位置し、アバタＣおよびアバタＤはゾーン１０８に位置している。この説明例では、以下のとおりであるものとする。
アバタＡ〜Ｄはそれぞれ、音声、映像、およびチャットの各ソース型および各シンク型と関連付けられている。
ゾーン１０１の切換え規則は、
ゾーン１０１内のアバタと関連付けられている各音声ソースは、ゾーン１０１内のあらゆる音声シンクに接続されるべきであり、
ゾーン１０１内のアバタと関連付けられている各映像ソースは、ゾーン１０１内のあらゆる映像シンクに接続されるべきであり、
ゾーン１０１内のアバタと関連付けられている各チャットソースは、ゾーン１０１内のあらゆるチャットシンクに接続されるべきである
と規定している。
ゾーン１０８の切換え規則は、ゾーン１０８内のアバタと関連付けられている各音声ソースは、ゾーン１０８内のあらゆる音声シンクに接続されるべきであるとのみ規定している。
ストリーム切換えマネージャ１６８は、ゾーン切換え規則に加えて、仮想領域において相互に指定の距離（または半径）ｒＰ以内にある個々のオブジェクトと関連付けられている適合するシンクとソースの接続だけを許容する近接性ポリシ規則を実施する。
【０１３８】
この例において、ゾーン切換え規則および近接性ポリシ規則は、アバタＡ、Ｂ、Ｃ、およびＤ間の接続をどのようにして確立するか決定する個々の切換え条件を提供する。
【０１３９】
動作に際して、アバタＡと関連付けられているエリア・クライアント・ノード上で動作するストリーム切換えマネージャ１６８のインスタンスは、アバタＢが、アバタＡの周りの、指定の距離ｒＰで定義される近接ゾーン２３２内に位置しているときはいつでも、アバタＢと関連付けられているエリア・クライアント・ノードをソースとするリアルタイムの音声、映像、およびチャットのストリームに接続されるよう要求するはずである。同様に、アバタＢと関連付けられているエリア・クライアント・ノード上で動作するストリーム切換えマネージャ１６８のインスタンスは、アバタＡが、アバタＢから指定の距離ｒＰ内に位置しているときはいつでも、アバタＡと関連付けられているエリア・クライアント・ノードをソースとするリアルタイムの音声、映像、およびチャットのストリームに接続されるよう要求するはずである。アバタＢは現在アバタＡの近接ゾーン２３２の外部にあり、逆もまた同様であるため、アバタＡおよびアバタＢと関連付けられたノードは、図１１に示す現在の例示的状態においては相互に接続されないはずである。
【０１４０】
ゾーン１０８は音声接続だけを許容するため、アバタＣと関連付けられているエリア・クライアント・ノード上で動作するストリーム切換えマネージャ１６８のインスタンスは、（近接性ポリシ規則で指定されている近接条件が満たされるものと仮定すると）アバタＤと関連付けられているエリア・クライアント・ノードをソースとするリアルタイム音声ストリームだけに接続されるよう要求するはずである。同様に、アバタＤと関連付けられているエリア・クライアント・ノード上で動作するストリーム切換えマネージャ１６８のインスタンスは、（近接性ポリシ規則で指定されている近接条件が満たされるものと仮定すると）アバタＣと関連付けられているエリア・クライアント・ノードをソースとするリアルタイム音声ストリームだけに接続されるよう要求するはずである。
【０１４１】
ゾーン１０１およびゾーン１０８の切換え規則は、ゾーン１０１とゾーン１０８の間の接続を許容しないため、アバタＡおよびアバタＢと関連付けられているソースおよびシンクは、近接性ポリシ規則で指定されている近接条件が満たされる場合でさえも、アバタＣおよびアバタＤと関連付けられているソースおよびシンクのいずれにも接続されないはずである。
【０１４２】
実施形態によっては、エリアクライアント５２〜５６の少なくとも１つは、ネットワーク５８への接続を可能にし、さらに、図１０の方法を実行するのに必要な機能を含むエリア・クライアント・ストリーム切換えマネージャ１６８の機能の１つ以上を果たすように構成されているネットワークアダプタ（イーサネット（登録商標）・インターフェース・カードなど）を含む。
【０１４３】
Ｄ．リアルタイム・データ・ストリーム接続の確立
１．必要なリアルタイム・データ・ストリーム接続の決定
例示的実施形態の中には、ネットワークノード５２が共用仮想領域内の他のネットワークノードとの協調的通信セッションに参加するのを可能にするリアルタイム・データ・ストリーム・データのセットをストリーム切換えマネージャ１６８が決定した（図１０、ブロック２３０）後で、ストリーム切換えマネージャ１６８が、エリア・クライアント・ネットワーク・ノード５２への必要なデータ・ストリーム・データの配信を行わせる結果を生じるリアルタイム・データ・ストリーム接続を決定するものもある。
【０１４４】
これらの実施形態の中には、ストリーム切換えマネージャ１６８が、所与のネットワークノードの帯域幅能力に少なくとも部分的に基づいて、所与のネットワークノードにリアルタイム・データ・ストリームのセットを配信するリアルタイム・データ・ストリーム処理トポロジを決定するものもある。このプロセスにおいて、ストリーム切換えマネージャ１６８は、非混合リアルタイム・データ・ストリームと、リアルタイム・データ・ストリームの組み合わせから得られるストリームミックスとからリアルタイム・データ・ストリームのそれぞれを受け取るべき個々の形を決定する。また、ストリーム切換えマネージャ１６８は、直接ピア・ツー・ピア・ネットワーク経路と、その他のネットワークノードの１つ以上によって仲介されるネットワーク経路からリアルタイムストリームのそれぞれを受け取るためのネットワーク経路も決定する。ストリーム処理トポロジが決定された後で、ストリーム切換えマネージャ１６８は、決定されたストリーム処理トポロジに従って、所与のネットワークノードと他のネットワークノードのそれぞれの間のリアルタイム・データ・ストリーム接続を確立する。
【０１４５】
図１２に、必要なデータ・ストリーム・データをエリア・クライアント・ネットワーク・ノードに配信するリアルタイム・データ・ストリーム接続のトポロジを決定する方法の一実施形態を示す。
【０１４６】
この方法によれば、ストリーム切換えマネージャ１６８は、エリア・クライアント・ネットワーク・ノード５２が、その他のエリア・クライアント・ネットワーク・ノードから直接、必要なリアルタイム・データ・ストリーム・データのセット２４０を受け取るのに十分な帯域幅を有するかどうか判定する（図１２、ブロック２４２）。このプロセスにおいて、その他のエリア・クライアント・ネットワーク・ノードは、エリア・クライアント・ネットワーク・ノード５２にリンク要求を送信する。リンク要求は、エリア・クライアント・ネットワーク・ノード５２に必要とされる個々のリアルタイム・データ・ストリームのセットを送信するための個々の帯域幅要件を表示する（以下の第Ｖ．Ｄ．２項参照）。ストリーム切換えマネージャ１６８は、必要な直接接続を確立するのに必要とされる全体帯域幅を、帯域幅モニタ１７０（図８参照）によって現在エリア・クライアント・ネットワーク・ノード５２が利用可能であると報告されているダウンロード帯域幅と比較する。
【０１４７】
利用可能な帯域幅が、少なくとも、全体の必要帯域幅と等しい場合、ストリーム切換えマネージャ１６８は、必要なリアルタイム・データ・ストリーム・データを提供するその他のエリア・クライアント・ノードと直接接続を確立する（図１２、ブロック２４４）。このプロセスにおいて、通信アプリケーション１４２およびこれに関連付けられる実行時環境は、エリア・クライアント・ネットワーク・ノード５２と、その他のエリア・クライアント・ネットワーク・ノード５４、５６の１つ以上およびエリアサーバ６４の間に、ソケット（ＴＣＰソケットや、性能を向上させるように最適化された専用リアルタイムソケットなど）を作成する。作成されるソケットは通常、各リアルタイム・データ・ストリーム型ごとに、リアルタイム・データ・ストリームを搬送する１ソケットと、関連付けられるリアルタイム・データ・ストリーム・パケットの送受信と関連付けられている制御情報（サービス品質情報など）を搬送する１ソケットを含む。通信アプリケーション１４２は、リアルタイム・データ・ストリームの記録、およびクライアント・ユーザ・インターフェースへのこれらのレンダリングを含めて、リアルタイム・データ・ストリームを処理し、符号化する。例えば、ローカルで生成されるオーディオデータ、映像データ、およびチャットデータは通常、取り込まれ、符号化され、パケット（ＲＴＰパケットなど）に分割されて、ネットワーク５８に送出される。
【０１４８】
利用可能な帯域幅が必要な帯域幅より小さい場合（図１２、ブロック２４２）、ストリーム切換えマネージャ１６８は、ストリーム・ミックス・リスト１９４（図８参照）をチェックして、必要なリアルタイム・データ・ストリーム・データを提供するストリームミックスが、現在エリアサーバ６４によって生成されているかどうか判定する（図１２、ブロック２４６）。必要なストリームミックスが利用できる場合、ストリーム切換えマネージャ１６８は、エリアサーバ６４との、エリアサーバ６４からエリア・クライアント・ネットワーク・ノード５２に必要なリアルタイム・データ・ストリーム・ミックスのコピーを送信するための接続を確立する（図１２、ブロック２４８）。必要なストリームミックスが利用できない場合、ストリーム切換えマネージャ１６８は、エリアサーバ６４にストリームミックス要求を送る（図１２、ブロック２５０）．
【０１４９】
実施形態によっては、エリアサーバ６４は、エリアクライアントのストリーム切換えマネージャ１６８の機能の１つ以上を果たす。これらの実施形態において、エリアサーバ６４は、ネットワークノード５２〜５４の間に１つ以上のリアルタイム・データ・ストリーム接続を確立し、その場合ネットワークノード５２〜５６は、リアルタイム・データ・ストリーム型の１つ以上のソースおよびシンクの少なくとも１つとそれぞれが関連付けられている個々のオブジェクトと関連付けられている。エリアサーバ６４は、それら１つ以上のリアルタイム・データ・ストリーム接続を、図１０および図１２の方法の一方または両方に従い、１つ以上の切換え規則、オブジェクトと関連付けられた個々のソースおよびシンク、ならびに仮想領域におけるオブジェクトの個々の位置に基づいて確立する。
【０１５０】
２．リアルタイム・データ・ストリーム接続
ａ．序論
実施形態によっては、ネットワークノード間の接続は、リンクとチャネルの２層において確立される。
【０１５１】
あるノードから別のノードまで直接送信するための少なくとも１つのストリームがあるときにはいつでも、２つのネットワークノード間でリンクが確立される。リンクは通常、一方向であり、送信側によって要求され、受信側によって受け入れられ、または拒否される。拒否された場合でも、エリアサーバとの（それぞれ）上りと下りのリンクを介して通信が可能な場合もある（本明細書で示すように、混合され、または送受信される）。各リンクは、リアルタイム通信のために２つのノードによって割り振られる全帯域幅を表す。この割振りは、利用可能な全体のネットワーク帯域幅、その時々に望ましい帯域幅の品質、およびリンク数に基づいて動的に決定される。リンクの追加および削除は、進行する動的プロセスである。複合領域内の、すなわち領域から領域への移動は、リンクの接続および切断が、進行中のシステム挙動において重要な役割を果たす例である。
【０１５２】
各リンクは、個々のリアルタイム・データ・ストリームを搬送するチャネルに分割される。チャネルは、各リンクに割り振られている全体帯域幅内の個々のストリームに割り振られる。チャネル帯域幅は、全体リンク帯域幅、ならびにリンク内のチャネルの数および優先度の変化に基づいて動的に変更することができる。チャネルの活動化および非活動化は、ネットワークノードのリンク層によって２つのノード間の所望の帯域幅を変更するのに使用され得る情報を提供する。またこの情報は、リンクに割り振られる帯域幅のレベルを設定するためにノード間で共用されてもよい。
【０１５３】
これらの実施形態によって提供される接続フレームワークは、送信側と受信側のネットワークノードが、２つのノード間でその時々に必要とされるストリームセットに利用可能な帯域幅を、各ノードごとのすべてのリンクの間の帯域幅の要件との関連でどのように使用すべきか動的に決定することを可能にする。音声チャネルのビット伝送速度を低減または増大させる一方で、同時に行われるファイル転送または映像フィードのために確保される帯域幅の量を増大または減少させるというのが、この割振り決定プロセスの例である。またこの接続フレームワークは、受信側ネットワークノードが、サーバミックスか、それとも個別ストリーム伝送かを、リンク内の利用可能な帯域幅に基づいて決定することも可能にする。
【０１５４】
システム設定は、仮想領域仕様によって任意選択で変更され、リンクおよびチャネルの相対的帯域幅割振り、ならびにストリーム型およびトポロジの優先度を決定するためのパラメータを提供する。これらの可変的、動的要件のために、ネットワークノードとエリアサーバ（または他の高帯域幅中間ノード）の間の上りおよび下りリンクは通常、ローカル帯域幅に高い優先度を有する。というのは、これらのリンクは、様々なノード間でリンクおよびチャネルを送信するのに必要とされ得るからである。仮想領域設計者は、所与のノードにおけるリンク、チャネルまたはリンクとチャネル両方の帯域幅制限を理由として、そのノードによって実行することのできない仮想領域を作成することも可能である。
【０１５５】
帯域幅は、多くの場合、（ＣＰＵ時間、ハードディスク空間、グラフィックレンダリング能力などと比較して）乏しいリソースである。ノード接続をリンクおよびリンク内のチャネルに階層化することにより、仮想領域設計者、ならびにシステム管理者は、帯域幅が飽和状態にあるときに、１つ以上のリアルタイムセッションに関与する任意の所与のノードがどのように応答するか制御することが可能になる。階層化により、個々のリンクを、最小と最大の帯域幅のために能動的に管理することが可能になる。また階層化により、（エリアサーバを介して接続を要求するのに比べて）どのノードがリンクを受信するかの選択を制御することも可能になる。
【０１５６】
一説明例において、第１のネットワークノードと第２のネットワークノードが共用仮想領域を介して通信するものと仮定する。第１のノードと第２のノードはそれぞれ、他方に音声ストリームおよび動きデータ・ストリームを要求する。この必要を満たすために、第１のノードと第２のノードはそれぞれ、エリアサーバと個々の上りリンクを確立し、このリンクは、音声チャネルと動きデータチャネルに分割される。エリアサーバは、第１のネットワークノードおよび第２のネットワークノードから受け取る音声ストリームを送受信し、第１のネットワークノードおよび第２のネットワークノードから受け取る動きデータ・ストリームを混合する。エリアサーバは、第１のネットワークノードおよび第２のネットワークノードと個々の下りリンクを確立し、個々の下りリンクにおいて割り振られた音声チャネルおよび動きデータチャネルで音声ストリームおよび動きデータ・ストリームを送信する。第１のノードおよび第２のノードは、接続されている間、ファイル転送を行ってもよく、その場合ファイル転送は、リンク内で新しいチャネルを必要とするはずである。妥当なデータ転送速度では十分な帯域幅を利用できない場合、送信側は、そのビット伝送速度をより低品質の音声通話用のものに落とし、エリアサーバリンクを介してファイル転送ストリームを送受信することもでき、あるいは、第１のネットワークノードおよび第２のネットワークノードの個々のシステム設定における論理、または仮想領域仕様によって指定される挙動に従ってチャネルおよびリンクを調整することもできる。
【０１５７】
第３のネットワークノードがこの仮想領域への参入を要求する場合、第１のネットワークノードと第２のネットワークノードはそれぞれ、第３のネットワークノードからの音声ストリームおよび動きデータ・ストリームを必要として、第３のネットワークノードは、帯域幅が許容する、第１のネットワークノードと第２のネットワークノードのそれぞれからの音声ストリームおよび動きデータ・ストリームを必要とすることになる。第３のネットワークノードから直接必要なストリームを受け取るための最小限の帯域幅が利用できない場合、第１のネットワークノードおよび第２のネットワークノードは、エリアサーバまでの上りリンク帯域幅、サーバからの下りリンク帯域幅、またはこれら両方を増大させる。あるいは、第１のネットワークノードおよび第２のネットワークノードは、１つ以上のサーバミックスを必要とすることになる。それでもなお仮想領域仕様によって必要とされるすべての接続を行うのに十分な帯域幅が生じない場合には、第３のネットワークノードはこの仮想領域への参入を阻止され、または第１のノードと第２のノードの一方もしくは両方が、リアルタイムセッションから削除されることもあり、その場合、削除されたネットワークノードは、再試行し、またはより高速なネットワーク接続によって接続することが必要になる場合もある。
【０１５８】
その後、第３のネットワークノードが仮想領域を退出するとき、第１、第２および第３のネットワークノードはそれぞれ、第１のネットワークノードとの接続に割り振られたリンクおよび帯域幅を切断し、解放する必要があり、このため、第１のネットワークノードと第２のネットワークノードにより、利用可能な帯域幅のこれらの間のリンクへの再割り振りが行われる場合もある。
【０１５９】
実施形態によっては、第１のネットワークノードおよび第２のネットワークノードは、帯域幅を第３のネットワークノードに割り振る前に、相互に確立している各リンクに優先度を付けることができる。実施形態によっては、仮想領域仕様の切換え規則が各接続に優先度を付ける。例えば、仮想領域設計によっては、ある特定の役割特性（仲介者など）と関連付けられたネットワークノードが、他のネットワークノードより高い接続優先度を有し、したがって、常に仮想領域にリンクすることができる。他の仮想領域設計では、各接続が個々の接続の経過時間によってランク付けされ、より古い接続がより新しい接続より高くランク付けされる場合もある。これらの仮想領域では、最も古い接続と関連付けられたノードが、通信セッションから最後に削除されることになる。
【０１６０】
ｂ．リンクの作成
図１３に、前項で説明した種類のリンクによってリンクが確立される、仮想領域を共用するネットワークノード間でリアルタイム・データ・ストリーム接続を切り換える方法の例示的実施形態を示す。図１３の方法は通常、仮想領域を共用する他のネットワークノードによって必要とされるリアルタイム・データ・ストリームの１つ以上のソースであるネットワークノードのそれぞれのストリーム切換えマネージャ１６８によって行われる。
【０１６１】
１つ以上の受信側ネットワークノードのそれぞれについて、ストリーム切換えマネージャ１６８は、１つ以上のリアルタイム・データ・ストリームの個々の送信セットを送信するための、それぞれが個々のリンク帯域幅を有する個々のリンクを決定する（図１３、ブロック４４０）。各リンクは通常、送信側ネットワークノードの個々の１つから受信側ネットワークノードの個々の１つまでの個々の一方向リンクである。しかし、実施形態によっては、各リンクの１つ以上を、双方向（半二重や全二重などの）リンクとすることもできる。
【０１６２】
各リンクごとに、ストリーム切換えマネージャ１６８は、個々の送信セット内の１つ以上のリアルタイム・データ・ストリームに個々に割り振られた１つ以上のチャネル間で個々のリンク帯域幅を配分し、個々の送信セット内の１つ以上のリアルタイム・データ・ストリームを、個々に割り振られたチャネルを介して個々の受信側ネットワークノードに送信する（図１３、ブロック４４２）。実施形態によっては、ストリーム切換えマネージャ１６８は、個々の帯域幅を、個々の受信側ネットワークノードと関連付けられている少なくとも１つの属性に基づいて決定された量で割り振る。この属性は、受信側ネットワークノードと関連付けられたアバタによって占有される仮想領域内の位置、受信側ネットワークノードと関連付けられたリンク優先度レベル、受信側ネットワークノードと関連付けられたアバタに割り当てられた役割識別子という属性例のいずれかに対応し得る。実施形態によっては、個々のリンク帯域幅の配分は、個々の送信セット内の１つ以上のリアルタイム・データ・ストリームと個々に関連付けられた１つ以上のストリーム優先度レベルに基づくものである。
【０１６３】
実施形態によっては、各リンクごとに、ストリーム切換えマネージャ１６８は、個々の送信セット内の１つ以上のリアルタイム・データ・ストリームのそれぞれについて、１つ以上の個々の帯域幅レベルを確認し、確認された帯域幅レベルに基づいてリンクに個々の帯域幅を割り振る。実施形態によっては、ストリーム切換えマネージャ１６８は、これらの帯域幅レベルを、送信側ネットワークノードのシステムレベル設定をチェックし、仮想領域仕様に、共用仮想領域の各ゾーンのいずれかに含まれる任意のストリーム型に割り当てられる帯域幅レベルがあるかどうかチェックすることによって確認する。各リアルタイム・データ・ストリーム型は通常、少なくとも１つのシステムレベルの帯域幅レベルと関連付けられている。例えば、エリア・クライアント・ネットワーク・ノードはそれぞれ、通常、音声ストリームのための異なる圧縮レベルを提供する音声コーデック、および映像ストリームのための異なる圧縮レベルを提供する映像コーデックを含む。これらのコーデックはそれぞれ、通常は、デフォルトの低（好ましい、または目標の）圧縮レベルから高圧縮レベルまでの個々の圧縮レベル範囲を提供するように設定され得る。仮想領域仕様は、１つ以上のリアルタイム・データ・ストリーム型のそれぞれについて１つ以上の領域特有の帯域幅レベルを指定し得る。これらのレベルには、好ましい帯域幅レベル、最小帯域幅レベル、および好ましい帯域幅レベルと最小帯域幅レベルの間の１つ以上の帯域幅レベルが含まれ得る。
【０１６４】
実施形態によっては、各リンクごとに、ストリーム切換えマネージャ１６８は、個々の送信セット内のリアルタイム・データ・ストリームのそれぞれについての個々の最小帯域幅レベルを識別し、１つ以上の識別された個々の最小帯域幅レベルから個々の最小リンク帯域幅レベルを計算する。ストリーム切換えマネージャ１６８は通常、リンクが利用できる帯域幅が、定義される期間にわたって個々の最小リンク帯域幅レベルに適応することができないという判定に応答して、リンクのいずれかを削除する。
【０１６５】
実施形態によっては、各リンクごとに、ストリーム切換えマネージャ１６８は、個々の送信セット内のリアルタイム・データ・ストリームの１つ以上のそれぞれについて、個々の第１の好ましい帯域幅レベル（デフォルトの帯域幅レベルなど）から個々の第２の好ましい帯域幅レベル（最小帯域幅レベルなど）まで順序付けされた個々の優先階層における少なくとも２つの個々の帯域幅レベルを識別する。ストリーム切換えマネージャ１６８は、識別された第１の好ましい帯域幅レベルに少なくとも部分的に基づいて個々の目標リンク帯域幅レベルを計算し、識別された第２の好ましい帯域幅レベルに少なくとも部分的に基づいて個々のフォールバックリンク帯域幅レベルを計算する。受信側ネットワークノードのそれぞれについて、ストリーム切換えマネージャ１６８は、目標リンク帯域幅レベルでの受信側ネットワークノードへの個々のリンクを確立しようと試みる。このプロセスにおいて、ストリーム切換えマネージャ１６８は、目標リンク帯域幅レベルを、個々の送信セットを送信するのに利用可能な現在の帯域幅の量と比較する。また受信側ネットワークノードも、目標リンク帯域幅レベルを、個々の送信セットを受信するのに利用可能な現在の帯域幅の量と比較する。目標リンク帯域幅レベルで受信側ネットワークノードまでの個々のリンクを確立するのに失敗したことに応答して、ストリーム切換えマネージャ１６８は、受信側ネットワークノードまでの個々のリンクを、フォールバックリンク帯域幅レベルで確立しようと試みる。
【０１６６】
図１４に、前項で説明した各実施形態の例示的実施方法を示す。この実施形態によれば、ストリーム切換えマネージャ１６８は、各リンク（図１４、ブロック４４４）ごとに、現在の個々の候補リンク帯域幅レベルと、１つ以上の任意選択の個々のフォールバック候補リンク帯域幅レベルとを決定する（図１４、ブロック４４６）。ストリーム切換えマネージャ１６８は、現在のリンクを、現在の個々の候補リンク帯域幅レベルで確立しようと試みる（図１４、ブロック４４８）。リンクが確立された場合（図１４、ブロック４５０）、ストリーム切換えマネージャ１６８は、次のリンクを処理する（図１４、ブロック４４４）。そうでない場合、ストリーム切換えマネージャ１６８は、現在のリンクに利用可能な他の候補リンク帯域幅レベルがあるかどうか判定する（図１４、ブロック４５２）。利用可能な他の候補リンク帯域幅レベルがある場合、ストリーム切換えマネージャ１６８は、現在の個々の候補リンク帯域幅レベルを次のより低リンク帯域幅レベルに変更し（図１４、ブロック４５４）、現在のリンクをその新しい候補リンク帯域幅レベルで確立しようと試みる（図１４、ブロック４４８）。次の候補リンク帯域幅レベルがない場合（図１４、ブロック４５２）、ストリーム切換えマネージャ１６８は、現在のリンクについてエラーを報告し、このプロセスを次のリンクのために繰り返す（図１４、ブロック４４４）。
【０１６７】
リンクのいずれかを確立するのに失敗したことに応答して、それらのリンクが宛先指定された相手側の受信側ネットワークノードは、既存の帯域幅制約条件に適応しようとして、送信データセット内の少なくとも１つの任意選択のリアルタイム・データ・ストリームを削除しようと試みることができる。あるいは、そのような受信側ネットワークノードは、その他のネットワークノードの１つ以上によって仲介される個々のネットワーク経路を介して必要なリアルタイム・データ・ストリーム・データを提供するリンクを確立しようと試みることもできる。例えば、受信側ネットワークノードは、必要なリアルタイム・データ・ストリーム・データを非混合形式または混合形式で提供するエリアサーバ６４にリンクを要求する。
【０１６８】
実施形態によっては、リンクがセキュリティ保護される。セキュアなリンクは、認証、完全性および秘密保持というセキュリティ特性のうちの１つ以上を備え得る。認証リンクは、（ベリサイン（Ｖｅｒｉｓｉｇｎ）によって提供されるものなど、公開鍵インフラストラクチャの一部として配信される証明書を評価するといった）認証技法を使用して、各ノードが、詐称ノードではなく、既知の他のノードに実際に接続していることを保証することができる。（ＳＨＡアルゴリズムと関連付けられたセキュアなハッシュ法プロセスを使用するといった）完全性の技法は、送信と受信の間にリンクコンテンツに加えられた変更が検出されるよう保証するのに使用される。（送信前にＡＥＳ暗号化アルゴリズムを用いてリンクコンテンツを暗号化し、共有鍵に基づいて使用前にリンクコンテンツを暗号解読するといった）秘密保持の技法は、リンクのコンテンツが、盗聴者によって容易に理解されないようにするのに役立つ。これらの技法は、個々の通信セッションのための所望のセキュリティ特性を達成するように選択的に組み合わされてもよい。セキュアなリンクが用いられるとき、システム設定およびアプリケーション設計パラメータは、セキュアなリンクを確立することに伴う追加オーバーヘッドに対応するように調整され得る。例えばリンクは、帯域幅が利用可能になった場合にそのリンクを再確立する必要が生じないように、より長時間にわたって低い帯域幅で（０帯域幅にさえも）保持される。
【０１６９】
ｃ．拡張リンク管理機能を有する例示的実施形態
第Ｖ．Ｄ．２項で説明しているストリーム切換えマネージャ１６８の拡張リンク管理機能は、ディジタル電子回路（ディジタル信号プロセッサ（ＤＳＰ）といった特定用途向け集積回路など）や、コンピュータハードウェア、ファームウェア、デバイスドライバ、またはソフトウェアを含む、任意のコンピューティングまたはデータ処理環境において実施され得る。実施形態によっては、これらの機能は、ネットワークアダプタやネットワークスイッチといった専用ハードウェアモジュールとして実施される。そのようなモジュールの実施形態は、リンク作成、リンク経路指定、所与のネットワークノードから送信される複数のリンク間での帯域幅割振り、および所与のリンク内のチャネル間の帯域幅の管理という各拡張リンク管理機能のいずれかの加速された性能を提供するように構成され得る。
【０１７０】
図１５に、拡張リンク管理機能を備えるネットワークアダプタ４６２が動作し得る例示的適用環境４６０を示す。ネットワークアダプタ４６２は、ホストシステム４６４内に組み込まれ、ホストシステム４６４は、通信コントローラ４６６と、媒体アクセス制御（ＭＡＣ）インターフェース４６８とを含む。ネットワークアダプタ４６２は、ホストシステム４６４とネットワーク媒体４７０との間で送信を行う。ネットワーク媒体４７０は、ホストシステム４６４から１つ以上の他のネットワークノード４７２までのリンクを確立するための物理媒体である。電線、ファイバ、および自由空間における電磁波がネットワーク媒体の種類の３つの例である。
【０１７１】
ホストシステム４６４およびその他のネットワークノード４７２はそれぞれ、ネットワークに接続する任意の種類の機器またはシステム（パーソナルコンピュータ、コンピュータワークステーション、ネットワークスイッチ、ネットワークハブ、ネットワークリピータなど）とすることができる。ホスト通信コントローラ４６６は、ホストシステム４６４がネットワーク媒体４７０へのアクセスを共用することを可能にする。ＭＡＣインターフェース４６８は、通信コントローラ４６６をネットワークアダプタ４６２に接続する。ＭＡＣインターフェースの種類の一例が、パラレル通信コントローラ４６６との通信をサポートするパラレルインターフェースを提供するメディア独立インターフェース（ＭＩＩ）である。ＭＡＣインターフェースの種類の別の例が、シリアル通信コントローラ４６６とのシリアル通信をサポートするＩＥＥＥ８０２．０３準拠の汎用シリアルインターフェース（ＧＰＳＩ）である。
【０１７２】
図１６に、ホスト・インターフェース・ポート４７４、ネットワーク媒体インターフェースポート４７６、処理装置４７８、送受信機４８０、およびメモリ４８２を含むネットワークアダプタ４６２の一実施形態を示す。ホスト・インターフェース・ポート４７４は、ＭＡＣインターフェース４６８に接続することができる。ネットワーク媒体インターフェースポート４７６は、ネットワーク媒体４７０に接続することができる。図示の実施形態では、ネットワーク媒体インターフェースポート４７６は、送受信機４８０とネットワーク媒体４７０の間の物理インターフェースを提供する。
【０１７３】
処理装置４７８は通常、ホストシステム４６４および１つ以上の他のネットワークノード４７２が正しいフレーム形式およびプロトコルを用いて通信するよう保証すること（ただし必ずしもこれに限定されない）を含むＭＡＣ層機能を果たすＭＡＣ処理装置である。加えて、処理装置４７８は、第Ｖ．Ｄ．２項で説明されているリンクおよびチャネル管理機能を果たすように動作可能である。これらの機能を果たすのに役立つように、処理装置４７８は、メモリ４８２に、仮想領域仕様のコピー４８４、リンク表４８６、およびチャネル表４８８を記憶する。本明細書で説明しているように、仮想領域仕様４８４は、リンクおよびチャネルの管理に影響を及ぼす、ストリーム型ごとの好ましい、最小、および中間の各帯域幅レベル、ストリーム型優先度、ストリーム処理トポロジ優先度、ならびに仮想領域を共用する各ネットワークノードと関連付けられているオブジェクト（アバタなど）に割り当てられた役割識別子というパラメータ値のいずれかを含み得る。リンク表４８６は、その他のネットワークノード４７２との間で確立されている現在のリンク、および現在のリンク間での帯域幅の割振りのリストを含む。チャネル表４８８は、現在のリンクのそれぞれについて、リンクを介して送信されるリアルタイム・データ・ストリームに割り振られている個々のチャネル、およびそのリンク内の個々のチャネル間での帯域幅の割振りのリストを含む。
【０１７４】
３．リアルタイム・データ・ストリーム接続の管理
図１７に、必要なデータ・ストリーム・データをエリア・クライアント・ネットワーク・ノードに配信するリアルタイム・データ・ストリーム接続を決定する方法の一実施形態を示す。このプロセスにおいて、エリアサーバ６４は、必要なリアルタイム・データ・ストリーム・データをエリア・クライアント・ネットワーク・ノード５２に提供する最適なストリーム処理トポロジを決定する。
【０１７５】
エリアサーバ６４は、現在のストリーム処理トポロジに従って、エリア・クライアント・ネットワーク・ノード間の接続を管理する（図１７、ブロック２５１）。これに関して、エリアサーバ６４は、仮想領域の定義を含むグローバル状態データと、仮想領域内のすべてのアバタおよびその他のオブジェクトの現在のオブジェクト状態データとを管理する。このプロセスにおいて、エリアサーバ６４は、仮想領域内のオブジェクトを追跡し、実施形態によっては、エリアサーバ６４は、エリア・クライアント・ネットワーク・ノードのリアルタイム同期に使用される最新履歴データキャッシュを保持する。またエリアサーバ６４は、仮想領域へのオブジェクトの参入、仮想領域からのオブジェクトの退出、および帯域幅障害に応答した接続の再評価も行う。
【０１７６】
要求側エリア・クライアント・ネットワーク・ノードからリアルタイム・データ・ストリーム・データを求める要求を受け取った（図１７、ブロック２５２）ことに応答して、エリアサーバ６４は、オブジェクトレジスタ１９０（図８参照）内のオブジェクトと関連付けられているエリア・クライアント・ネットワーク・ノードの帯域幅能力を見出す（図１７、ブロック２５４）。実施形態によっては、エリア・クライアント・ネットワーク・ノードはそれぞれ、エリアサーバ６４に、その現在のアップロード帯域幅容量およびその現在のダウンロード帯域幅容量を、動的に、または周期的に送信する。
【０１７７】
エリアサーバ６４は、要求側エリア・クライアント・ネットワーク・ノードに、リアルタイム・データ・ストリーム・データを配信するリアルタイム・データ・ストリーム処理トポロジを選択する（図１７、ブロック２５６）。エリアサーバ６４は通常、エリア・クライアント・ネットワーク・ノードの見出された帯域幅能力に基づいてトポロジを選択する。実施形態によっては、エリアサーバ６４は、要求側ネットワークノードおよびその他のネットワークノードが最大数の非混合リアルタイム・データ・ストリームを受け取るストリーム処理トポロジを選択する。そのような非混合リアルタイム・データ・ストリームは、エリア・クライアント・ネットワーク・ノードがストリームを、より高品質で、より深い没入体験または特定の用途目的（５．１オーディオ処理や特殊なアバタの動きなど）を実現するためのローカル処理（アバタをステレオ音場空間によりリアルに配置するためのオーディオ・ステレオ・パン処理またはフェーダエンベロープ処理の一方または両方など）を各ストリームに適用することもできるようにレンダリングすることを可能にする。
【０１７８】
実施形態によっては、仮想領域仕様は、仮想領域の１つ以上のゾーン内の１つ以上のリアルタイム・データ・ストリーム型のストリーム属性値を指定する。これらの実施形態において、エリアサーバ６４は、仮想領域仕様で指定される１つ以上のストリーム属性値に基づいてストリーム処理トポロジを選択する。例示的仮想領域設計の中には、仮想領域仕様が、第１のリアルタイム・データ・ストリーム型に第１のストリーム優先度属性値を割り当て、第２のリアルタイム・データ・ストリーム型に、第１のストリーム優先度属性値とは異なる第２のストリーム優先度属性値を割り当てるものもある。例えば、前述の第２のＣＯＬＬＡＤＡストリーム参照の例では、ＳｔａｇｅＺｏｎｅをソースとする、「ｌｅａｄ＿ｓｉｎｇｅｒ」役割属性と関連付けられた音声ストリームに優先度レベル１が割り当てられ、他方ＡｕｄｉｅｎｃｅＺｏｎｅをソースとする音声ストリームは、優先度レベル２と関連付けられている。これらの種類の仮想領域設計仕様に関して、エリアサーバ６４は、異なる第１のストリーム優先度属性値と第２のストリーム優先度属性値とに従って、第１のリアルタイム・データ・ストリーム型と第２のリアルタイム・データ・ストリーム型とに異なる優先度を付けるストリーム処理トポロジを選択しようと試みる。例えば、帯域幅利用制約に遭遇する第２のＣＯＬＬＡＤＡストリーム参照の例に関しては、エリアサーバ６４は、ＳｔａｇｅＺｏｎｅをソースとするｌｅａｄ＿ｓｉｎｇｅｒ音声ストリームのストリームミックスを作成し、送信する前に、ＡｕｄｉｅｎｃｅＺｏｎｅをソースとする音声ストリームのストリームミックスを作成し、送信するはずである。
【０１７９】
例示的領域設計の中には、仮想領域仕様が、第１のリアルタイム・データ・ストリーム型に第１のストリームトポロジ属性値を割り当て、第２のリアルタイム・データ・ストリーム型に、第１のストリームトポロジ属性値とは異なる第２のストリームトポロジ属性値を割り当てるものもある。例えば、前述の第２のＣＯＬＬＡＤＡストリーム参照の例では、ＳｔａｇｅＺｏｎｅをソースとし、ｌｅａｄ＿ｓｉｎｇｅｒ役割属性と関連付けられている音声ストリームに、「ｄｉｒｅｃｔ（直接）」というトポロジ属性値が割り当てられ、他方ＡｕｄｉｅｎｃｅＺｏｎｅをソースとするチャットストリームは、「ｓｅｒｖｅｒ＿ｍｉｘ（サーバミックス）」というトポロジ属性値と関連付けられている。これらの種類の仮想領域設計仕様に関して、エリアサーバ６４は、異なる第１のストリームトポロジ属性値と第２のストリームトポロジ属性値とに従って、第１のリアルタイム・データ・ストリーム型と第２のリアルタイム・データ・ストリーム型とに異なるストリーム処理トポロジを選択しようと試みる。例えば、場合によっては、エリアサーバ６４は、第１のリアルタイム・データ・ストリーム型については、所与のネットワークノードおよびその他のネットワークノードの１つ以上に、混合ストリーム形式で第１の型のリアルタイム・データ・ストリームのそれぞれを配信するストリーム処理トポロジ（第２のＣＯＬＬＡＤＡストリーム参照の例におけるＡｕｄｉｅｎｃｅＺｏｎｅをソースとするチャットストリームなど）を選択し、第２のリアルタイム・データ・ストリーム型については、所与のネットワークノードおよびその他のネットワークノードの１つ以上に、非混合ストリーム形式で第２の型のリアルタイム・データ・ストリームを配信するストリーム処理トポロジ（第２のＣＯＬＬＡＤＡストリーム参照の例における、ＳｔａｇｅＺｏｎｅをソースとし、ｌｅａｄ−ｓｉｎｇｅｒ役割属性と関連付けられた音声ストリームなど）を選択する。
【０１８０】
エリアサーバ６４は、エリアクライアントと折衝してストリーム処理トポロジを選択されたトポロジに再構成する（図１７、ブロック２５８）。このプロセスにおいて、エリアサーバ６４は、エリアクライアントと折衝して、エリアクライアントと、任意選択で、要求側エリア・クライアント・ネットワーク・ノードに必要なデータ・ストリーム・データを配信するエリアサーバ６４との間で１組の接続を確立する。場合によっては、エリアサーバ６４は、各エリアクライアントに、要求側のエリア・クライアント・ノードまで中継され、または他のリアルタイム・データ・ストリームと組み合わされて、要求側エリア・クライアント・ネットワーク・ノードに必要なリアルタイム・データ・ストリーム・データを配信するストリームミックスとされる１つ以上のリアルタイム・データ・ストリームを求める個々の要求を送る。
【０１８１】
選択されたトポロジがエリアサーバ６４からのストリームを必要としない場合（図１７、ブロック２６０）、エリアサーバ６４は、現在のストリーム処理トポロジに従ってエリア・クライアント・ネットワーク・ノード間の接続を管理する（図１７、ブロック２５１）。例えば、場合によっては（図２２など参照）、選択されたトポロジは、エリア・クライアント・ネットワーク・ノードの１つ以上から直接要求側エリア・クライアント・ネットワーク・ノードに必要なリアルタイム・データ・ストリーム・データを配信し、エリアサーバ６４がそのデータを送信する必要を生じさせない。
【０１８２】
選択されたトポロジがエリアサーバ６４からのストリームを必要とする場合（図１７、ブロック２６０）、領域は、ストリーム・ミックス・リスト１８４（図８参照）から、必要なサーバストリームが利用できるかどうか（すなわち、現在生成されているかどうか）判定する（図１７、ブロック２６２）。必要なサーバストリームは、その他のエリア・クライアント・ネットワーク・ノードの１つによって供給されるリアルタイム・データ・ストリームのコピーとすることもでき、エリアサーバ６４が、要求側エリア・クライアント・ネットワーク・ノード以外のエリア・クライアント・ネットワーク・ノードのそれぞれから受け取っている２つ以上のリアルタイム・データ・ストリームから現在生成されているストリームミックスとすることもできる。必要なストリームが利用できる場合（図１７、ブロック２６２）、エリアサーバ６４は、要求側エリア・クライアント・ネットワーク・ノードに必要なサーバストリームのコピーを送信し（図１７、ブロック２７０）、現在のストリーム処理トポロジに従ってエリアクライアント接続を管理する（図１７、ブロック２５１）。
【０１８３】
必要なストリームが利用できない場合（図１７、ブロック２６２）、エリアサーバ６４は、必要なサーバストリームを獲得する（図１７、ブロック２６４）。このプロセスにおいて、エリアサーバ６４は、その他のエリア・クライアント・ネットワーク・ノードの１つから受け取られるリアルタイム・データ・ストリームのコピーを生成してもよく、要求側エリア・クライアント・ネットワーク・ノード以外のエリア・クライアント・ネットワーク・ノードのそれぞれから受け取られる２つ以上のリアルタイム・データ・ストリームからストリームミックスを生成してもよい。新しいストリームミックスが生成される場合（図１７、ブロック２６６）、エリアサーバ６４は、ストリーム・ミックス・リスト１８４を更新し（図１７、ブロック２６８）、要求側エリアクライアントに必要なサーバストリームを送信し（図１７、ブロック２７０）、現在のストリーム処理トポロジに従ってエリアクライアント接続を管理する（図１７、ブロック２５１）。新しいストリームミックスが生成されない場合（図１７、ブロック２６６）、エリアサーバ６４は、要求側エリアクライアントに必要なサーバストリームを送信し（図１７、ブロック２７０）、現在のストリーム処理トポロジに従ってエリアクライアント接続を管理する（図１７、ブロック２５１）。
【０１８４】
４．リアルタイム・データ・ストリーム処理トポロジの例
本項では、図１７に示す方法のブロック２５６でエリアサーバ６４によって選択され得るストリーム処理トポロジの例を説明する。
【０１８５】
ａ．サーバ混合ストリーム処理トポロジの例
図１８に、エリアサーバ６４が、エリア・クライアント・ネットワーク・ノード５２〜５６からそれぞれ、リアルタイム・データ・ストリームのセット２８２、２８４、２８６を受け取るリアルタイム・データ・ストリーム処理トポロジの一実施形態を示す。これらのデータ・ストリームのセット２８２〜２８６は、共用仮想領域内のオブジェクトを、仮想領域仕様および各オブジェクトの位置に従って接続するのに必要なすべてのリアルタイム・データ・ストリームを含む。これらのストリームはそれぞれ、エリアクライアント５２〜５６によってパケットに分割される。各パケットは、パケットのソースを識別するソース識別子フィールド、順序付け番号、その他の情報を含むヘッダを含む。
【０１８６】
エリアサーバ６４は、受け取られたデータ・ストリームのセット２８２〜２８６から個々のストリームミックスのセット２８８、２９０、２９２を生成し、各セット２８８〜２９２は、エリア・クライアント・ノード５２〜５６の個々の１つによって必要とされるリアルタイム・データ・ストリーム型（オーディオ、映像、チャット、動きデータなど）を含む。このプロセスにおいて、エリアサーバ６４は、着信リアルタイム・データ・ストリーム・パケットを、型（映像、オーディオ、チャット、動きデータ、制御など）ごと、ソース識別子ごとに分け、順序番号によってパケットを再組立てする。次いでエリアサーバ６４は、同じ型のストリームをストリームミックスの個々の１つに組み合わせ、個々のストリームミックスのセット２８８〜２９２を、エリア・クライアント・ネットワーク・ノード５２〜５６の個々の１つに送信する。
【０１８７】
図１９に示すピア・ツー・ピア・トポロジと比べて、トポロジ２８０は、各エリアクライアントごとに必要とされるネットワーク接続数を低減し、それによって各エリアクライアントおよびそのネットワークにかかる負荷が低減される。しかし、エリアサーバ６４にかかる負荷は増大する。
【０１８８】
ｂ．ピア・ツー・ピア・クライアント混合ストリーム処理トポロジの例
図１９に、エリア・クライアント・ネットワーク・ノード５２〜５６がそれぞれ、その他のエリア・クライアント・ネットワーク・ノード５２〜５６のそれぞれに、必要なリアルタイム・データ・ストリームのそれぞれの個々のコピーを送信するピア・ツー・ピア・リアルタイム・データ・ストリーム処理トポロジの一実施形態を示す。よって、図１９に示す例において、エリアクライアント５２は、エリアクライアント５４に第１のストリームセット３０２を、エリアクライアント５６に第２のストリームセット３０４を送信し、エリアクライアント５４は、エリアクライアント５２に第１のストリームセット３０６を、エリアクライアント５６に第２のストリームセット３０８を送信し、エリアクライアント５６は、エリアクライアント５２に第１のストリームセット３１０を、エリアクライアント５４に第２のストリームセット３１２を送信する。これらのストリーム３０２〜３１２は、共用仮想領域内のオブジェクトを、仮想領域仕様および各オブジェクトの位置に従って接続するのに必要なすべてのリアルタイム・データ・ストリームを含む。各ストリームはそれぞれパケットに分割され、各パケットは、パケットのソースを識別するソース識別子フィールド、順序付け番号、およびその他の情報を含むヘッダを含む。
【０１８９】
エリア・クライアント・ネットワーク・ノード５２〜５６はそれぞれ、必要なリアルタイム・データ・ストリーム型（オーディオ、映像、チャット、動きデータなど）ごとに、その他のエリア・クライアント・ネットワーク・ノードから受け取られるリアルタイム・データ・ストリームから個々のストリームミックスを生成する。このプロセスにおいて、各エリアクライアントは、着信リアルタイム・データ・ストリーム・パケットを、型（映像、オーディオ、チャット、動きデータ、制御など）ごと、ソース識別子ごとに分け、順序番号によってパケットを再組立てする。次いで各エリアクライアントは、レンダリング時にリアルタイム・データ・ストリーム間の同期を維持するために、相関関係を有するタイムスタンプおよびソースＩＤにより、再組立てされたパケットストリームを順序付けする。
【０１９０】
トポロジ３００のスケーラビリティは、エリア・クライアント・ネットワーク・ノードにおける重いアップロード要件により制約を受ける。またトポロジ３００は、図１９に示すように、ユニキャスト送信を使用して必要なリアルタイム・データ・ストリームが送られるときには、ネットワークにも重い負荷をかける。実施形態によっては、ローカルネットワーク負荷は、その他のネットワークノードにマルチキャストストリームのコピーを配信する１つ以上のスイッチに対し、必要なデータ・ストリームの各々の単一の個別マルチキャスト送信を送るようにエリア・クライアント・ネットワーク・ノード５２〜５６のそれぞれを構成することによって軽減される。
【０１９１】
ｃ．ピア・ツー・ピア・クライアント混合ストリーム処理トポロジの例
図２０に、４つのエリア・クライアント・ネットワーク・ノード５２〜５６および３２２の間の接続を最小限にするピア・ツー・ピア・リアルタイム・データ・ストリーム処理トポロジ３２０の一実施形態を示す。トポロジ３２０において、エリア・クライアント・ネットワーク・ノード５２〜５６、３２２はそれぞれ、他の２つのエリア・クライアント・ネットワーク・ノード５２〜５６、３２２のそれぞれに、必要なリアルタイム・データ・ストリームのそれぞれの個々のコピーを送信する。よって、図２０に示す例において、エリアクライアント５２はエリアクライアント５６に第１のストリームセット３２４を、エリアクライアント３２２に第２のストリームセット３２６を送信し、エリアクライアント５４はエリアクライアント３２２に第１のストリームセット３２８を、エリアクライアント５６に第２のストリームセット３３０を送信し、エリアクライアント５６はエリアクライアント５２に第１のストリームセット３３２を、エリアクライアント５４に第２のストリーム３３４を送信し、エリアクライアント３２２はエリアクライアント５２に第１のストリームセット３３６を、エリアクライアント５４に第２のストリーム３３８を送信する。加えて、エリアクライアント５２〜５６、３２２はそれぞれ、その他のエリアクライアントの１つから受け取られるリアルタイム・データ・ストリームのセットをエリアクライアントの別の１つへ中継する送受信スイッチとしても働く。詳細には、エリアクライアント５２は、エリアクライアント３２２からのストリームセット３３６のコピー３４０をエリアクライアント５６に中継し、エリアクライアント５４は、エリアクライアント５６からのストリームセット３３４のコピー３４２をエリアクライアント３２２に中継し、エリアクライアント５６は、エリアクライアント５２からのストリームセット３２４のコピー３４４をエリアクライアント５４に中継し、エリアクライアント３２２は、エリアクライアント５４からのストリームセット３２８のコピー３４６をエリアクライアント５２に中継する。これらのストリームセット３２４〜３４６は、共用仮想領域内のオブジェクトを、仮想領域仕様および各オブジェクトの位置に従って接続するのに必要とされるすべてのリアルタイム・データ・ストリームを含む。これらのストリームはそれぞれ、パケットに分割され、各パケットは、パケットのソースを識別するソース識別子フィールド、順序付け番号、およびその他の情報を含むヘッダを含む。
【０１９２】
エリア・クライアント・ネットワーク・ノード５２〜５６、３２２はそれぞれ、必要なリアルタイム・データ・ストリーム型（オーディオ、映像、チャット、動きデータなど）ごとに、その他のエリア・クライアント・ネットワーク・ノードから受け取られるリアルタイム・データ・ストリームから個々のストリームミックスを生成する。このプロセスにおいて、各エリアクライアントは、着信リアルタイム・データ・ストリーム・パケットを、型（映像、オーディオ、チャット、動きデータ、制御など）ごと、ソース識別子ごとに分け、順序番号によってパケットを再組立てする。次いで各エリアクライアントは、レンダリング時にリアルタイム・データ・ストリーム間の同期を維持するために、相関関係を有するタイムスタンプおよびソースＩＤにより、再組立てされたパケットストリームを順序付けする。
【０１９３】
トポロジ３２０のスケーラビリティは、エリア・クライアント・ネットワーク・ノードにおける重いアップロード要件により制約を受ける。またトポロジ３２０は、図２０に示すように、ユニキャスト送信を使用して必要なリアルタイム・データ・ストリームが送られるときには、ネットワークにも重い負荷をかける。実施形態によっては、ローカルネットワーク負荷は、複製された必要なデータ・ストリームの各々の単一の個別マルチキャスト送信を、その他のネットワークノードにマルチキャストストリームのコピーを配信する１つ以上のスイッチに送るよう各エリア・クライアント・ネットワーク・ノード５２〜５６、３２２を構成することによって低減される。
【０１９４】
ｄ．サーバ仲介型クライアント混合ストリーム処理トポロジの例
図２１に、エリアサーバ６４が、エリア・クライアント・ネットワーク・ノード５２〜５６間でリアルタイム・データ・ストリームを中継する送受信スイッチとして働く、サーバ仲介型リアルタイム・データ・ストリーム処理トポロジ３５０の一実施形態を示す。トポロジ３５０において、エリア・クライアント・ネットワーク・ノード５２〜５６はそれぞれ、必要なリアルタイム・データ・ストリームの個々のセット３５２、３５４、３５６をエリアサーバ６４にアップロードし、エリアサーバ６４は、アップロードされたストリームの必要なコピーを、エリア・クライアント・ネットワーク・ノード５２〜５６に、それらの個々の要件に従って中継する。よって、図２１に示す例で、エリアサーバ６４は、エリアクライアント５２によってアップロードされたストリームセット３５２の個々のコピー３５８、３６０をその他の各エリアクライアント５４、５６に送信し、エリアクライアント５４によってアップロードされたストリームセット３５４の個々のコピー３６２、３６４をその他の各エリアクライアント５２、５６に送信し、エリアクライアント５６によってアップロードされたストリームセット３５６の個々のコピー３６６、３６８をその他の各エリアクライアント５２、５４に送信する。各ストリームセット３５８〜３６８は、共用仮想領域内のオブジェクトを、仮想領域仕様および各オブジェクトの位置に従って接続するのに必要とされるすべてのリアルタイム・データ・ストリームを含む。これらのストリームはそれぞれパケットに分割され、各パケットは、パケットのソースを識別するソース識別子フィールド、順序付け番号、およびその他の情報を含むヘッダを含む。
【０１９５】
エリア・クライアント・ネットワーク・ノード５２〜５６はそれぞれ、必要なリアルタイム・データ・ストリーム型（オーディオ、映像、チャット、動きデータなど）ごとに、エリア・サーバ・ネットワーク・ノード６４から受け取られるリアルタイム・データ・ストリームから個々のストリームミックスを生成する。このプロセスにおいて、各エリアクライアントは、着信リアルタイム・データ・ストリーム・パケットを、型（映像、オーディオ、チャット、動きデータ、制御など）ごと、ソース識別子ごとに分け、順序番号によってパケットを再組立てする。次いで各エリアクライアントは、レンダリング時にリアルタイム・データ・ストリーム間の同期を維持するために、相関関係を有するタイムスタンプおよびソースＩＤにより、再組立てされたパケットストリームを順序付けする。
【０１９６】
ｅ．動的ストリーム処理トポロジの例
実施形態によっては、エリアサーバ６４は、指定のリアルタイム・データ・ストリームのセットを所与のネットワークノードに配信するリアルタイム・データ・ストリーム処理トポロジを動的に決定する。このプロセスにおいて、エリアサーバ６４は、ストリーム処理トポロジとして、中央ネットワークノードを介して第１のセット内のネットワークノード間でリアルタイム・データ・ストリームを切り換えること、および第２のセット内のネットワークノード間で、直接ピア・ツー・ピア・リアルタイム・データ・ストリーム接続を介してリアルタイム・データ・ストリームを切り換えることを伴うトポロジを選択する。第１のノードセットは、第２のノードセットと異なっていてもよい。前述のように、各ネットワークノードは、仮想領域における個々の位置と関連付けられた少なくとも１つのオブジェクトと、リアルタイム・データ・ストリーム型の１つ以上のソースおよびシンクの少なくとも１つを有する。エリアサーバ６４は、１つ以上の切換え規則、および決定されたリアルタイム・データ・ストリーム処理トポロジに基づき、第１のセット内のネットワークノード間でリアルタイム・データ・ストリーム・パケットを転送する。
【０１９７】
図２２に、前述のストリーム処理トポロジの要素を動的に組み合わせるリアルタイム・データ・ストリーム処理トポロジ３７０の一実施形態を示す。詳細には、図２２に示す例示的トポロジにおいて、エリア・クライアント・ネットワーク・ノード５２〜５６は、必要に応じて、ピア・ツー・ピア接続と、エリアサーバ６４がエリア・クライアント・ネットワーク・ノード間の送受信スイッチを作動させるサーバ仲介型接続との動的組み合わせによって、必要なリアルタイム・データ・ストリームを受け取る。
【０１９８】
トポロジ３７０において、エリア・クライアント・ネットワーク・ノード５２〜５６はそれぞれ、必要なリアルタイム・データ・ストリームの個々のセット３７２、３７４、３７６を、エリアサーバ６４にアップロードする。図２２に示す例において、エリアサーバ６４は、エリアクライアント５２によってアップロードされたストリームセット３７２のコピー３７８を、エリアクライアント５４に中継し、エリアクライアント５４によってアップロードされたストリームセット３７４の各コピー３８０、３８２を、その他のエリアクライアント５２、５６のそれぞれに中継し、エリアクライアント５６によってアップロードされたストリームセット３７６のコピー３８４をエリアクライアント５４に中継する。加えてエリアクライアント５２は、必要なストリームセット３８６を、エリアクライアント５４から直接受け取り、エリアクライアント５６は、必要なストリームセット３８８を、エリアクライアント５２から直接受け取る。各ストリームセット３７８〜３８８は、共用仮想領域内のオブジェクトを、仮想領域仕様および各オブジェクトの位置に従って接続するのに必要とされるすべてのリアルタイム・データ・ストリームを含む。これらのストリームはそれぞれパケットに分割され、各パケットは、パケットのソースを識別するソース識別子フィールド、順序付け番号、およびその他の情報を含むヘッダを含む。
【０１９９】
エリア・クライアント・ネットワーク・ノード５２〜５６はそれぞれ、必要なリアルタイム・データ・ストリーム型（オーディオ、映像、チャット、動きデータなど）ごとに、その他のエリア・クライアント・ネットワーク・ノードから受け取られるリアルタイム・データ・ストリームから個々のストリームミックスを生成する。このプロセスにおいて、各エリアクライアントは、着信リアルタイム・データ・ストリーム・パケットを、型（映像、オーディオ、チャット、動きデータ、制御など）ごと、ソース識別子ごとに分け、順序番号によってパケットを再組立てする。次いで各エリアクライアントは、レンダリング時にリアルタイム・データ・ストリーム間の同期を維持するために、相関関係を有するタイムスタンプおよびソースＩＤにより、再組立てされたパケットストリームを順序付けする。
【０２００】
トポロジ３７０は、エリア・クライアント・ネットワーク・ノード５２〜５６上で利用できる帯域幅を、各エリア・クライアント・ネットワーク・ノード５２〜５６が最大数の非混合リアルタイム・データ・ストリームを受け取るように最適化させることを可能にする。
【０２０１】
ＶＩＩ．第２のシステムアーキテクチャ実施形態
図２３に、エリア・クライアント・ネットワーク・ノード５２〜５６、エリア・サーバ・ネットワーク・ノード６４の一実施形態４０２、およびネットワークスイッチ４０４を含む共用仮想領域通信環境４００の一実施形態を示す。共用仮想領域通信環境４００の各要素の構造および動作は、エリアサーバ６４およびクライアント通信アプリケーション１４２（図７参照）の少なくとも１つのリアルタイム・データ・ストリーム切換え機能の１つ以上がネットワークスイッチ４０４に組み込まれ、ネットワークスイッチ４０４が、前述の方法の１つ以上に従って自動リアルタイム・データ・ストリーム切換えを行うことが可能になっていることを除いて、前述の共用通信環境の各要素の構造および動作と同じである。
【０２０２】
ネットワークスイッチ４０４は、メモリ４０５と、少なくとも１つコンピュータプロセッサを含む処理装置４０７と、ネットワークスイッチ４０４がエリア・クライアント・ネットワーク・ノード５４、５６およびエリアサーバ４０２に接続するためのネットワークアダプタ４０３と、を含むコンピュータネットワーキング機器である。動作に際して、ネットワークスイッチ４０４は、データパケットを検査し、各パケットのソースを決定し、各パケットを個々の宛先に転送することによって各ネットワークセグメントを接続する。各パケットごとに、ネットワークスイッチは、宛先およびソースのハードウェアアドレスを、ネットワークセグメントおよびアドレスの表と比較する。セグメントが同じである場合、パケットは削除される。そうでない場合、ネットワークスイッチ４０４は、そのパケットを適正なセグメントに転送する。ネットワークスイッチ４０４は通常、パケット転送のための好ましい経路を含む転送表４０９に基づいて、パケットの転送先となるネットワーク宛先を決定する。ネットワークスイッチ４０４は通常、ネットワークスイッチ４０４の近くにあるネットワーク宛先への経路を含む経路指定表４１１に経路指定アルゴリズムを適用することによって、転送表４０９を生成する。転送表４０９および経路指定表４１１内の各経路は通常、ネットワークスイッチ４０４とネットワーク宛先の間のネットワークトポロジを記述する情報によって指定される。ネットワークスイッチ４０４は、不良なパケットまたは正しく整列されていないパケットは転送しない。ネットワークスイッチ４０４は、物理層、データリンク層、ネットワーク層、およびトランスポート層を含むＯＳＩ階層の１つ以上において動作し得る。ネットワークスイッチ４０４の例示的実装形態には、ネットワークスイッチ、ネットワークルータ、ネットワークハブなどが含まれる（ただし必ずしもこれらに限定されない）。
【０２０３】
実施形態によっては、ネットワークスイッチ４０４は、仮想領域を共用するネットワークノード間でリアルタイム・データ・ストリーム接続を切り換える。ネットワークアダプタ４０３は、エリアサーバ４０２から仮想領域仕様４０６を受け取る。仮想領域仕様４０６は、個々のリアルタイム・データ・ストリーム型のソースとそのリアルタイム・データ・ストリーム型のシンクの間の個々の接続を仮想領域における位置によってそれぞれ定義する１つ以上の切換え規則の記述を含む。コンピュータ可読メモリ４０５は、仮想領域仕様４０６と、経路指定表４１１および転送表４０９の一方または両方を記憶し、表４０９、４１１はそれぞれ、ネットワーク宛先までの経路を記述するネットワークトポロジ情報を含む。処理装置４０７は、ネットワークノード５２〜５６の２つ以上の間でリアルタイム・データ・ストリーム・パケットを転送し、ネットワークノード５２〜５６はそれぞれ、仮想領域における個々の位置、ならびにリアルタイム・データ・ストリーム型の１つ以上のソースおよびシンクの少なくとも１つと関連付けられている。処理装置４０７は、１つ以上のリアルタイム・データ・ストリーム・パケットを、ネットワークトポロジ情報および１つ以上の切換え規則に基づいて転送する。
【０２０４】
実施形態によっては、ネットワークスイッチは、エリア・クライアント・ストリーム切換えマネージャ１６８の機能の１つ以上を果たす。これらの実施形態において、処理装置４０７は、ネットワークノード５２〜５４間で１つ以上のリアルタイム・データ・ストリーム接続を確立し、ネットワークノード５２〜５６は、リアルタイム・データ・ストリーム型の１つ以上のソースおよびシンクの少なくとも１つとそれぞれが関連付けられている個々のオブジェクトと関連付けられている。処理装置４０７は、それら１つ以上のリアルタイム・データ・ストリーム接続を、図１０および図１２〜１４の方法の一方または両方に従い、１つ以上の切換え規則、オブジェクトと関連付けられた個々のソースおよびシンク、ならびに仮想領域におけるオブジェクトの個々の位置に基づいて確立する。
【０２０５】
実施形態によっては、ネットワークスイッチ４０４は、エリア・サーバ・ネットワーク・ノードの機能の１つ以上を果たす。詳細には、ネットワークスイッチ４０４は、エリアサーバ６４（図８など参照）のリアルタイム・データ・ストリーム切換え機能の一部または全部を果たす。これに関して、ネットワークスイッチ４０４は、エリアサーバ６４から構成データを受け取る。構成データは、仮想領域仕様１８０（図８参照）のコピー、およびオブジェクトレジスタ１８２（図８参照）のコピーを含む。ネットワークスイッチ４０４は、仮想領域仕様１８０のコピーでローカル仮想領域仕様キャッシュ４０６を初期設定し、オブジェクトレジスタ１８２のコピーでローカル・オブジェクト・レジスタ４０８を初期設定する。ネットワークスイッチ４０４は、周期的に、またはイベント（アバタの動きなど）に応答して、または、周期的に、と、イベントに応答して、の両方で、エリアクライアント５２〜５６から受け取られる動きデータに基づき、仮想領域において参入し、退出し、動き回る交信者のアバタおよびその他のオブジェクトを追跡することにより得られる情報で、ローカル・オブジェクト・レジスタ４０８を更新する。ネットワークスイッチ４０４は、図１７の方法に従ってエリア・クライアント・ネットワーク・ノード５２〜５６に必要なデータ・ストリーム・データを配信するリアルタイム・データ・ストリーム接続を決定する。このプロセスは、エリア・クライアント・ネットワーク・ノード５２〜５６に必要なリアルタイム・データ・ストリーム・データを提供する最適なストリーム処理トポロジを決定することを含む。
【０２０６】
実施形態によっては、ネットワークスイッチ４０４は、所与のネットワークノードに指定のリアルタイム・データ・ストリームのセットを配信するリアルタイム・データ・ストリーム処理トポロジを動的に決定する。このプロセスにおいて、処理装置４０７は、ストリーム処理トポロジとして、中央ネットワークノードを介して第１のセット内のネットワークノードのそれぞれの間でリアルタイム・データ・ストリームを切り換えること、および（通常は第１のセットと異なる）第２のセット内のネットワークノードのそれぞれの間で、直接ピア・ツー・ピア・リアルタイム・データ・ストリーム接続を介してリアルタイム・データ・ストリームを切り換えることを伴うトポロジを選択する。前述のように、各ネットワークノードは、仮想領域における個々の位置、ならびにリアルタイム・データ・ストリーム型の１つ以上のソースおよびシンクの少なくとも１つと関連付けられている。処理装置４０７は、１つ以上の切換え規則、および決定されたリアルタイム・データ・ストリーム処理トポロジに基づき、第１のセット内のネットワークノード間でリアルタイム・データ・ストリーム・パケットを転送する。
【０２０７】
ＶＩＩＩ．結論
本明細書で示す実施形態は、各共用仮想領域通信環境においてリアルタイム・データ・ストリーム接続を切り換えるシステムおよび方法を提供するものである。これらの実施形態は、共用仮想領域を介して通信するネットワークノード間でリアルタイム・データ・ストリームを接続するための切換え規則を、仮想領域の仕様に明示的に結び付けることを可能にする。これらの実施形態は、仮想領域の設計者が、仮想領域の形および外観のみならず、交信者がリアルタイム・データ・ストリームを介して相互に接続するやり方も制御することを可能にする。加えて、仮想領域内の各場所に自動切換え規則を結び付けることにより、これらの実施形態は、仮想領域内のオブジェクトの属性および特性に基づいて接続を確立し、終了するシステム、ならびに信号処理機能をストリームの経路指定、接続および切断の各機能と絡み合わせるシステムに比べて、交信者ノードの接続および切断の際に伴う複雑さを低減し、システムのスケーラビリティを増大させる。
【０２０８】
特許請求の範囲内には他の実施形態も含まれるものである。
【符号の説明】
【０２０９】
５２  エリア・クライアント・ネットワーク・ノード
５４  エリア・クライアント・ネットワーク・ノード
５６  エリア・クライアント・ネットワーク・ノード
５８  通信ネットワーク
６４  エリアサーバ
１６２  通信モジュール
１６４  ３次元可視化エンジン
１６５  チャットエンジン
１６６  オーディオ処理エンジン
１６８  ストリーム切換えマネージャ
１７０  帯域幅モニタ
１７１  コンピュータマウス
１７２  スピーカ
１７４  スピーカ
１７６  ヘッドセット
１７８  マイクロホン
１８０  仮想領域仕様
１８２  オブジェクトレジスタ
１８４  ストリームミックスのリスト
１８６  インターフェースデータ
１８８  ゾーンリスト
１９０  オブジェクトレジスタ
１９２  現在のオブジェクト位置データベース
１９４  ストリーム・ミックス・リスト
１９６  仮想領域仕様
１９８  交信者アバタデータベース
【図１】
2011502305.tif 000011
【図２Ａ】
2011502305.tif 000012
【図２Ｂ】
2011502305.tif 000013
【図３】
2011502305.tif 000014
【図４】
2011502305.tif 000015
【図５】
2011502305.tif 000016
【図６】
2011502305.tif 000017
【図７】
2011502305.tif 000018
【図８】
2011502305.tif 000019
【図９】
2011502305.tif 000020
【図１０】
2011502305.tif 000021
【図１１】
2011502305.tif 000022
【図１２】
2011502305.tif 000023
【図１３】
2011502305.tif 000024
【図１４】
2011502305.tif 000025
【図１５】
2011502305.tif 000026
【図１６】
2011502305.tif 000027
【図１７】
2011502305.tif 000028
【図１８】
2011502305.tif 000029
【図１９】
2011502305.tif 000030
【図２０】
2011502305.tif 000031
【図２１】
2011502305.tif 000032
【図２２】
2011502305.tif 000033
【図２３】
2011502305.tif 000034
【国際調査報告】
2011502305.tif 000035
2011502305.tif 000036