(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-19
(45)【発行日】2024-08-27
(54)【発明の名称】仮想世界または現実世界の多次元3Dエンジンコンピューティングおよび仮想化ベースの動的負荷分散
(51)【国際特許分類】
G06T 15/00 20110101AFI20240820BHJP
G06F 9/50 20060101ALI20240820BHJP
A63F 13/35 20140101ALI20240820BHJP
A63F 13/60 20140101ALI20240820BHJP
A63F 13/77 20140101ALI20240820BHJP
【FI】
G06T15/00 501
G06F9/50 150D
G06F9/50 150C
A63F13/35
A63F13/60
A63F13/77
(21)【出願番号】P 2023007046
(22)【出願日】2023-01-20
(62)【分割の表示】P 2020214349の分割
【原出願日】2020-12-23
【審査請求日】2023-02-17
(32)【優先日】2019-12-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520509030
【氏名又は名称】ティーエムアールダブリュー ファウンデーション アイピー エスエーアールエル
(74)【代理人】
【識別番号】100114775
【氏名又は名称】高岡 亮一
(74)【代理人】
【識別番号】100121511
【氏名又は名称】小田 直
(74)【代理人】
【識別番号】100202751
【氏名又は名称】岩堀 明代
(74)【代理人】
【識別番号】100208580
【氏名又は名称】三好 玲奈
(74)【代理人】
【識別番号】100191086
【氏名又は名称】高橋 香元
(72)【発明者】
【氏名】セヴァト,イエルリ
(72)【発明者】
【氏名】プラスハンス ヒレマタダ
【審査官】▲徳▼田 賢二
(56)【参考文献】
【文献】特開2010-131409(JP,A)
【文献】特開2009-187115(JP,A)
【文献】米国特許出願公開第2010/0113159(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/00
G06F 9/50
A63F 13/35
A63F 13/60
A63F 13/77
(57)【特許請求の範囲】
【請求項1】
メモリおよび少なくとも1つのプロセッサを備える1つまたは複数のサーバコンピュータを備えるシステムであり、前記メモリは、
仮想世界または現実世界の少なくとも一部分を、永続的仮想世界システムを形成する仮想オブジェクトを記憶する複数のセルに仮想化するデータ構造と、
分散デプロイメントで実装された分散型3Dエンジンであって、リソースマネージャおよび複数の個々の分散型ソフトウェアエンジンを含む分散型3Dエンジンと
を記憶する、システムであって、
リソースは、現在の負荷と、前記1つまたは複数のセルの対応する計算されてランク付けされた需要とに基づいて、前記分散デプロイメントによって前記複数のセルのうちの前記1つまたは複数のセルに動的に割り当てられ、前記ランク付けされた需要は、前記1つもしくは複数のセル内の仮想オブジェクトの量、または前記1つもしくは複数のセル内のユーザアバターに見える前記永続的仮想世界システムの部分の範囲内の対話のレベルに基づく、システム。
【請求項2】
前記ランク付けされた需要はさらに、前記1つもしくは複数のセルにアクセスしているクライアントデバイスとネットワーク機器との間の距離、前記1つもしくは複数のセルにアクセスしているユーザによって使用されているアプリケーションのタイプ、または前記1つもしくは複数のセルにアクセスしているユーザのエンタイトルメントのタイプに基づく、請求項1に記載のシステム。
【請求項3】
前記永続的仮想世界システムは、需要評価および負荷分散のために使用される低忠実度シミュレーションと、ユーザ体験を改善するために使用される高忠実度シミュレーションとを含む、請求項1に記載のシステム。
【請求項4】
前記永続的仮想世界システムの前記仮想オブジェクトのうちの少なくともいくつかは、自己コンピューティング能力および自律挙動を含む、請求項1に記載のシステム。
【請求項5】
前記個々の分散型ソフトウェアエンジンは、1つまたは複数の特定のタスクの実現のために互いのエンジンサービスを補完するために、前記分散デプロイメントによって順次にまたは同時に使用される、請求項1に記載のシステム。
【請求項6】
前記仮想世界または前記現実世界をセルに表現する前記データ構造は、八分木データ構造であり、各セルは、前記八分木データ構造内のボクセルとして表現され、前記ボクセルは、前記現実世界のより大きい部分の配置で使用するための疎なボクセルである、または前記現実世界のより小さい部分の配置で使用するための密なボクセルである、請求項1に記載のシステム。
【請求項7】
前記仮想世界または前記現実世界をセルに表現する前記データ構造は、BSP木、疎ボクセル八分木、3Dアレイ、kD木、点群、ワイヤフレーム、境界表現(B-Rep)、空間領域構成木(CSG木)、二分木、および六角形構造の1つまたは複数を含む、請求項1に記載のシステム。
【請求項8】
前記仮想世界または前記現実世界の前記少なくとも一部分からのより高リソース集約的な関心領域を表すセルは、より多くの数のセルにさらに分割され、より小さいセルには、より多くの量のリソースが割り当てられ、前記リソースは、1つまたは複数の要求に関連付けられたイベントを終了した後に返され、前記仮想世界または前記現実世界の前記少なくとも一部分は、元の数のセルに統合される、請求項1に記載のシステム。
【請求項9】
前記リソースマネージャは、分散型メッセージ交換プラットフォームを介して割り当てを実行し、前記分散型メッセージ交換プラットフォームは、パブリッシュ/サブスクライブモデルを利用し、1つまたは複数の仮想オブジェクトは、リソースがパブリッシュされる1つまたは複数のセルにサブスクライブする、請求項1に記載のシステム。
【請求項10】
前記分散型メッセージ交換プラットフォームは、前記メモリに記憶されている前記仮想世界または前記現実世界の前記少なくとも一部分の動的に更新された状態を、クライアントデバイスおよびサーバのうちの1つまたは複数と共有し、前記状態は、前記永続的仮想世界システムにセンサデータを提供するセンサを含む複数の接続デバイスのうちの1つまたは複数によって、ユーザ入力によって、サーバ計算によって、またはそれらの組み合わせによって取得されたデータを通して修正される、請求項9に記載のシステム。
【請求項11】
前記複数のセルの各セルは、1つまたは複数のストリームを含み、各ストリームは、複数のストリーム固有仮想オブジェクトを含み、クライアントデバイス上で閲覧および対話するために有効または無効になるようにプログラムされ、各ストリームは、1つまたは複数のアプリケーションに関連付けられる、請求項1に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本願は、2019年12月30日に出願された米国仮出願特許第62/955247号の利益を主張するものである。この特許の内容を参照によって本願明細書に引用したものとする。
【背景技術】
【0002】
仮想世界、特に多人数参加型オンラインゲーム(MMOG)を実行するように設計された従来のシステムでは、仮想世界内の非常に多数のプレーヤまたはエンティティをサポートするようにスケーリングする方法に制限がある。これらの仮想世界は、通常、単一の物理コンピュータ上で実行され、ゲームまたはアプリケーションの単一のインスタンスに依存しているので、仮想世界は、システムの限られた帯域幅および仮想世界をホストするサーバのプロセッサ容量によってサポートされる。ゲームまたはシミュレーションエンジンをホストするサーバは、仮想世界内の全てのオブジェクトおよびプレーヤにシミュレーション機能を提供する必要がある。しかしながら、プレーヤおよびエンティティの数が増加するにつれて、リソース要件も同様に増加し、仮想世界内のサービス品質(QOS)およびユーザ体験を低下させる。
【0003】
他の手法は、マップを分割して均等に分散させ、マップの一部を複数のサーバ上で実行することを含み、各サーバは、マップの対応する部分に対する責任を有する。マップ全体を提供するためにより多くのリソースが利用可能であるが、この方法には依然としていくつかの欠点がある。例えば、1つのゾーンの混雑により、このタイプの地理的分割が仮想世界での使用に対して非効率的になる可能性があり、1つのゾーンから別のゾーンへの移行は、必要とされるサーバ切り替えのために、ゾーンを横断するユーザに、連続的なビューとは対照的に、離散的なビューを提供する可能性がある。
【0004】
加えて、仮想世界の開発および処理において使用される現在の3Dエンジンは、仮想世界のプロビジョニングの能力を制限するいくつかの欠点を有する。例えば、典型的な現在の3Dエンジンは、モノリシックである傾向があり、集中型であり、スケールアップすることが困難であり得、プラットフォーム依存であり得る。このことは、前述の欠点に加えて、仮想世界の開発および実行中に3Dエンジンの特定のモジュールの各々の能力を最大限引き出す可能性を妨げる。
【発明の概要】
【0005】
この概要は、「発明を実施するための形態」において以下でさらに詳細に説明する概念の選択を簡略化した形で紹介するために提供されている。この概要は、特許請求される主題の重要な特徴を特定することを意図するものではなく、特許請求される主題の範囲を決定する際の補助として使用されることを意図するものでもない。
【0006】
本開示は、全般的には、コンピュータシステムおよび方法に関し、より具体的には、仮想世界または現実世界の多次元3Dエンジンコンピューティングおよび仮想化ベースの動的負荷分散を可能にするシステムおよび方法に関する。
【0007】
本開示のシステムは、メモリおよび少なくとも1つのプロセッサを備える1つまたは複数のサーバコンピュータを備え、メモリは、仮想世界または現実世界の少なくとも一部分を、永続的仮想世界システムを形成する仮想オブジェクトを記憶する複数のセルに仮想化するデータ構造を記憶する。いくつかの実施形態では、仮想オブジェクトの少なくともいくつかは、対応する現実世界要素の仮想レプリカである。メモリはさらに、分散デプロイメントで実装された分散型3Dエンジンを記憶し、分散型3Dエンジンは、リソースマネージャおよび複数の個々の分散型ソフトウェアエンジンを含む。リソースは、現在の負荷と、1つまたは複数のセルの対応する計算およびランク付けされた需要とに基づいて、分散デプロイメントによって1つまたは複数のセルに動的に割り振られる。いくつかの実施形態では、需要は、少なくとも部分的に、1つもしくは複数のセル内の仮想オブジェクトの量、または1つもしくは複数のセル内のユーザアバターに見える永続的仮想世界システムの一部分の範囲内の対話のレベル、またはそれらの組み合わせに基づく。いくつかの実施形態では、リソースは、コンピューティングパワー、メモリ、ネットワークリソース(例えば、帯域幅)、またはそれらの組み合わせを含む。
【0008】
さらなる実施形態では、需要はさらに、1つもしくは複数のセルにアクセスしているユーザデバイスとネットワーク機器(例えば、サーバおよびネットワークアンテナ)との間の距離、ユーザによって使用されているアプリケーションのタイプ、または1つもしくは複数のセルにアクセスしているユーザが有し得るエンタイトルメントのタイプ(例えば、ユーザの個々のユーザプロファイルもしくは契約内容に基づく)、またはそれらの組み合わせに基づく。
【0009】
いくつかの実施形態では、仮想オブジェクトは、現実世界で利用可能でない純粋仮想オブジェクト、現実の人間の仮想アバター、およびアプリケーションをさらに含む。
【0010】
いくつかの実施形態では、永続的仮想世界システムは、同じ仮想世界または現実世界の複数のシミュレーションを含み、シミュレーションは、高忠実度から低忠実度まで変動し、低忠実度シミュレーションは、需要評価および負荷分散のために使用され、高忠実度シミュレーションは、ユーザ体験を改善するために使用される。このことにより、場合や状況に応じて異なるシミュレーションを行うことができる。LOD管理は、特定の要件およびコンテキストに応じて、最適化されたユーザ体験を提供することも可能にする。したがって、同じ仮想世界または現実世界を異なるLODでシミュレートして、ユーザに適切な体験を提供しながら本開示の負荷分散方法を容易にすることができる。
【0011】
いくつかの実施形態では、永続的仮想世界システムの仮想オブジェクトは、仮想オブジェクトまたは対応する現実オブジェクトの態様の任意のグラフィカル表現、数学的表現、または論理的表現を指すデータおよびモデルを含む。いくつかの実施形態では、データおよびモデルは、永続的仮想世界システムのエンティティに自己コンピューティング能力および自律挙動を提供する。いくつかの実施形態では、適切なモデルは、3Dモデル、幾何モデル、動的モデル、および機械学習モデルのうちの1つまたは複数を含む。仮想オブジェクトは、シミュレーションから取得されたデータ、ユーザデバイスを介してユーザによって入力されたデータ、またはモノのインターネットデバイスなどのセンサデバイスによってキャプチャされたデータ(例えば、現実世界に基づく永続的仮想世界システムの場合)を供給され得る。データの連続的な流れは、周期的に更新される永続的仮想世界システムを維持することができる。
【0012】
いくつかの実施形態では、永続的仮想世界システムは、拡張現実(AR)レイヤと仮想現実(VR)レイヤとに分離され得る仮想世界レイヤを備え得る。別個のレイヤは、拡張現実または仮想現実のいずれかにおける永続的仮想世界システムにアクセスすること、および各レイヤに記憶されている要素を組み合わせることを可能にし得、一方または他方のタイプの現実にアクセスするときはいつでも、ネットワークを介して少なくとも1つのサーバコンピュータに接続されたクライアントデバイスを介してアクティブ化され得る。レイヤの各々は、各レイヤに固有であり得る現実オブジェクトおよび仮想オブジェクトの拡張を含み得る。
【0013】
いくつかの実施形態では、個々の分散型ソフトウェアエンジンは、複数の動的かつ独立したソフトウェアモジュールに分解された分散型3Dエンジンであり得、複数の動的かつ独立したソフトウェアモジュールは、ローカルに構成されたときに互いに通信し、またはリモートに位置する個々のソフトウェアモジュールと通信し得る。いくつかの実施形態では、複数の分散型ソフトウェアエンジンをネットワーク内で同時にまたは順次に使用して、互いに相乗効果を生み出すことができる。例えば、同じまたは異なるサーバコンピュータでホストされる複数の3Dグラフィックスエンジンは、1つまたは複数の特定のタスクの実現のために互いのエンジンサービスを補完するために、分散型メッセージ交換プラットフォームを介して、順次にまたは同時にエンジンサービスを割り当て得る。
【0014】
いくつかの実施形態では、1つまたは複数のプロセッサは、対応する個々の分散型ソフトウェアエンジンからのタスクをハードウェアで処理するように構成された専用処理装置、汎用処理装置、またはそれらの組み合わせである。一実施形態では、標準的な中央処理装置(CPU)、グラフィックス処理装置(GPU)のうちの1つまたは複数を採用し得る典型的なシステムとは対照的に、専用ハードウェアエンジンはそれぞれ、3Dグラフィックス、人工知能操作、物理操作、3D構造処理操作、シミュレーション操作、追跡ならびに測位、および通信などのうちの少なくとも1つの処理において使用される個々の分散型ソフトウェアエンジンの処理用に調整される。いくつかの実施形態では、各ハードウェアエンジンは、各々の特定のタイプの操作を処理するように指定された1つまたは複数の特定のハードウェア処理コアを備える電子チップ上のチップまたはシステムとして結合され得る。1つまたは複数の電子チップの処理コアは、各3Dエンジンの必要なアルゴリズムを物理的に実行するように設計された電子チップの電子回路の機能ユニットまたはモジュールと見なすことができる。例えば、1つまたは複数の処理コアのうちの少なくとも1つは、FPGAまたは専用機能を実装する任意の他の形態の積分回路として実現され得る。したがって、電子チップは、1つまたは複数の処理コアのうちの少なくともいくつかを実現する少なくとも1つの集積回路を含み、処理コアのうちの少なくとも1つは、異なる専用ハードウェアエンジンを実装する。これらの電子チップは、例えば、1つまたは複数の外部サーバまたはメインサーバのいずれかまたは両方に設置され得る。いくつかの実施形態では、電子チップは、CPUおよび/またはGPUなどの汎用処理コアをさらに備えてもよく、または各々のエンジンタスクに対する追加のサポートを提供するために外部CPUおよび/またはGPUに接続してもよい。ソースの各々に専用ハードウェアエンジンを設け、分散かつ独立した形で3Dエンジンモジュールの各々を構成することは、各3Dエンジンモジュールが1つまたは複数のハードウェアエンジンからの1つまたは複数の専用ハードウェアコアを有することを可能にすることに加えて、システム全体にさらなるリソースを提供することができる。
【0015】
いくつかの実施形態では、仮想世界または現実世界をセルに表現するデータ構造は、八分木データ構造であり、各セルは、八分木データ構造内のボクセルとして表現される。いくつかの実施形態では、八分木データ構造内で利用されるボクセルは、現実世界のより大きな部分の配置で使用するための疎なボクセルである。他の実施形態では、八分木データ構造内で利用されるボクセルは、現実世界のより小さい部分の配置で使用するための密なボクセルである。八分木および選択された疎ボクセルまたは密ボクセルは、現実世界を表す永続的仮想世界システムなどの仮想世界において3次元空間を表現するのに適したデータ構造である。八分木は、複数のオブジェクトの高速かつ容易な組み合わせを可能にし、比較的単純なレンダリングアルゴリズムを実装し、迅速な空間探索の実行を可能にし、現実のオブジェクトの仮想化を通して(例えば、LIDARまたは他の画像走査方法を通して)モデル生成を可能にする。現実世界の少なくとも一部分を表す3D仮想世界を含む仮想世界について、世界のそのような3Dパーティションは、ユーザが見ているおよび/または対話している可能性がある領域上の3次元ベースのエンジンサービスおよびクラウドリソース割り当てを可能にする。
【0016】
いくつかの実施形態では、世界の少なくとも一部分からのより高リソース集約的な関心領域を表すセルは、より多くの数のセルにさらに分割される。さらなる実施形態では、各々の高リソース集約的なセルには、適宜1つまたは複数のソースからのリソースが割り当てられ、より小さいセルは、より多くのリソースが割り振られる。さらに別の実施形態では、1つまたは複数の要求に関連付けられたイベントを終了した後、リソースは、複数のソースから元の1つまたは複数のソースに返される。その後、世界の少なくとも一部分が元のセル数に統合される。このようにして、該システムは、より高い需要を有する関心領域を選択することによって、リソースの効率的かつ動的な割り当てを達成する。
【0017】
いくつかの実施形態では、リソースマネージャは、分散型メッセージ交換プラットフォームを介して割り当てを実行する。さらなる実施形態では、分散型メッセージ交換プラットフォームは、パブリッシュ/サブスクライブモデルを利用し、1つまたは複数の仮想オブジェクトは、リソースがパブリッシュされている1つまたは複数のセルにサブスクライブする。さらなる実施形態では、分散型メッセージ交換プラットフォームは、メモリに記憶された世界の少なくとも一部分の動的に更新された状態を、クライアントデバイスおよびサーバのうちの1つまたは複数と共有する。したがって、本開示の分散型3Dエンジンのリソースマネージャは、各リソースを分散型メッセージ交換プラットフォームに一度パブリッシュし、パブリッシュされたリソースを有するセルにサブスクライブすることによってリソースを必要とする各仮想オブジェクトに配信される。これは、マップ内の各クライアントデバイスに対して完全なデータ更新パケットを出力する、仮想世界をプロビジョニングするように調整された典型的な3Dエンジンシステムとは対照的であり、クライアントデバイスがクライアントデバイスに関連し得るデータおよび視界内のオブジェクトに対するデータのみを受信するようにクライアントデバイスに対して各パケットを調整し、その結果、ゲームまたはシミュレーションエンジンが、オブジェクトが見える各クライアントデバイスに対して一度、同じデータを複数回送信することが可能になる。
【0018】
一実施形態によれば、世界の少なくとも一部分の状態は、センサデータを永続的仮想世界システムに提供するセンサを含む複数の接続デバイスを介して、さらに更新される。接続デバイスは、例えば、ネットワークを介して互いに、およびサーバと通信し得るモノのインターネット(IoT)デバイスであり得、永続的仮想世界システムの仮想レプリカを更新するために、現実世界からマルチソースセンサデータを連続的にキャプチャし得る。したがって、状態更新は、センサデータから生じ得る。しかしながら、状態更新はさらに、ユーザ入力から、または1つまたは複数の3Dエンジンによる計算(例えば、人工知能推論)から生じ得る。次に、世界の状態更新は、全てのクライアントデバイスおよびソースがオンデマンドでサブスクライブし、閲覧するために、分散型メッセージ交換プラットフォーム上でパブリッシュされ得る。
【0019】
いくつかの実施形態では、複数のセルの各セルは、1つまたは複数のストリームを含み、各ストリームは、ストリーム固有仮想オブジェクトのうちの1つまたは複数を含み、クライアントデバイス上で閲覧および対話するために有効または無効になるように構成される。さらなる実施形態では、各ストリームは、1つまたは複数のユーザアプリケーションに関連付けられる。各ストリームは、対応する仮想オブジェクトからデータを取得し、テーマおよび/または目標別シミュレーションを実行するように構成され得る。各ストリームは、複数のストリーム関連仮想オブジェクトを生成するルートノードまたはルートシミュレーションオブジェクトに接続し得る。ストリームはさらに、ストリームがシミュレーションを実行する必要がある仮想レプリカを定義するインポート機能に接続し得る。いくつかの実施形態では、1つのセルまたは複数のセルのような既定の環境における仮想レプリカの全体または大部分、それらのコンテキスト、および各々の仮想レプリカ間の関係ならびに対話を含む複数のストリームが、ユニバースまたはサブユニバースを形成する。サブユニバースのネットワークは、永続的仮想世界システムのユニバースを形成し得る。例えば、都市のサブユニバースは、都市の建物、木、人、街路、交通信号灯、車両などの全て、およびそれらの関係、対話、ならびにコンテキストを表すことができる都市バースと呼ぶことができる。都市バース内の住宅バースなど、別のサブユニバース内にサブユニバースが存在し得る。住宅バースは、家の外部および内部の3D設計、家の全ての電気器具、人、壁、エネルギー消費データなどを含み得る。全てのサブユニバースのネットワークは、仮想現実または拡張現実で閲覧され得る永続的仮想世界システムのユニバースを形成し得る。これらのサブユニバースの各々は、リソースが動的に割り当てられる複数のセルに動的に分割され得る。
【0020】
本開示の実施形態では、該システムは、パブリッククラウドまたはプライベートクラウド、フォグサーバ、ピアツーピアクラウドサーバシステム、分散型台帳ベースのインフラストラクチャ、企業システム、モバイルプラットフォーム、およびユーザデバイスのようなクラウドレット(cloudlet)/エッジシステムの採用を含む、分散コンピューティング能力を表示し得るクラウドツーエッジインフラストラクチャ内に実装され得る。分散型台帳ベースのインフラストラクチャは、仮想レプリカ、純粋仮想オブジェクト、アプリケーション、および永続的仮想世界システム内の任意のイベントまたは対話を含む、永続的仮想世界システムを広く分散させるために必要なデータの転送および記憶を促進する、非中央集権型不変ブロックチェーンまたは分散型台帳ネットワークであり得る。物理サーバおよびネットワーク機器を含むリソースは、クラウドツーエッジインフラストラクチャを介して、リソースおよびネットワークに対するユーザの距離、および互いに対する、ならびにユーザがいるロケーション位置に対するユーザからの計算需要などの要因に応じた動的割り当てが可能である共有ストレージおよびコンピューティングを可能にし、状況に応じて多かれ少なかれ計算するように命令する。いくつかの実施形態では、リソースの動的割り当ては、分散型台帳インフラストラクチャを使用してスマートコントラクトに体系化され、トランザクション論理(例えば、ストレージおよびコンピューティングの各々の割り当ての背後にあるコンピュータ論理)およびそのような割り当ての結論または結果を自動化する。
【0021】
一実施形態によれば、仮想世界を通じて動的負荷分散を実行するための分散型3Dエンジンを可能にする方法は、少なくとも1つのサーバコンピュータのメモリ内で、仮想世界または現実世界の少なくとも一部分を表すデータ構造を、永続的仮想世界システムを形成する仮想オブジェクトを記憶する複数のセルに仮想化するステップを含み、仮想オブジェクトのうちの少なくともいくつかは、対応する現実世界要素の仮想レプリカである。該方法は、続いて、少なくとも1つのサーバコンピュータのメモリ内に、分散デプロイメントで実装された分散型3Dエンジンを提供し、分散型3Dエンジンは、リソースマネージャと、複数の個々の分散型ソフトウェアエンジンとを備える。その後、該方法は、続いて、リソースマネージャによって、現在の負荷に基づいて、複数のセルのうちの個々のセルの需要を計算し、前記需要は、少なくとも部分的に、個々のセル内の仮想オブジェクトの量、または個々のセル内のユーザアバターに見える永続的仮想世界システムの一部分の範囲内の対話のレベルに基づく。該方法は、続いて、需要に応じて個々のセルをランク付けする。最後に、ランク付けされた需要に基づいて、該方法は、個々のセル(例えば、1つまたは複数のより高リソース集約的なセル)にリソースを動的に割り当てて終了する。
【0022】
一実施形態によれば、該方法は、計算された需要に基づいて、仮想世界または現実世界の少なくとも一部分の関心領域を追加のセルに分割するステップと、対応するリソースを追加のセル(例えば、各セルはリソース集約的な関心領域を表す)に割り当てるステップとをさらに含む。一実施形態では、該方法は、より高リソース集約的な関心領域内の1つまたは複数の要求に関連付けられたイベントを終了した後に、リソースを元の1つまたは複数のソースに返すステップと、永続的仮想世界システム内の世界の少なくとも一部分を元のセル数に統合するステップとをさらに含む。
【0023】
いくつかの実施形態では、前記割り当ては、パブリッシュ/サブスクライブモデルを使用するリソースマネージャの分散型メッセージ交換プラットフォームを介して対応するセルにリソースをパブリッシュすること、および1つまたは複数の仮想オブジェクトによって、必要なリソースを取得するために関心対象のセルにサブスクライブすることによって実行される。
【0024】
いくつかの実施形態では、該方法は、分散型メッセージ交換プラットフォームを介して、1つまたは複数のクライアントデバイスおよび/またはサーバコンピュータがサブスクライブしている世界の少なくとも一部分の動的に更新された状態を、前記クライアントデバイスおよび/またはサーバコンピュータと共有して世界の更新バージョンを取得するステップをさらに含む。またさらなる実施形態では、世界の少なくとも一部分の状態は、センサデータを永続的仮想世界システムに提供するセンサを含む複数の接続デバイスによって、ユーザ入力によって、サーバの計算によって、またはそれらの組み合わせによって取得される。
【0025】
上記の概要は、本開示の全ての態様の網羅的なリストを含むものではない。本開示は、上記で要約された様々な態様の全ての適切な組み合わせから実施され得る全てのシステムおよび方法、ならびに以下の「発明を実施するための形態」において開示され、本願とともに出願された請求項において特に指摘されているシステムおよび方法を含むことが企図される。そのような組み合わせは、上記の概要に具体的に列挙されていない特定の利点を有する。本開示の他の特徴および利点は、添付図面および以下の詳細な説明から明らかになるであろう。
【0026】
本開示の特定の特徴、態様および利点は、以下の説明および添付図面を参照すると、より良く理解されるであろう。
【図面の簡単な説明】
【0027】
【
図1】一実施形態に係る、仮想世界または現実世界の多次元3Dエンジンコンピューティングおよび仮想化ベースの動的負荷分散を可能にするシステムの概略図である。
【
図2】一実施形態に係る、仮想世界または現実世界の多次元3Dエンジンコンピューティングおよび仮想化ベースの動的負荷分散を可能にするシステムのサーバの概略図である。
【
図3】一実施形態に係る、分散型メッセージ交換プラットフォームを介したリソース割り当ての概略図である。
【
図4A-4B】一実施形態に係る 、分散型メッセージ交換プラットフォームを介したエンジンサービス割り当ての概略図である。
【
図5A-5C】一実施形態に係る、永続的仮想世界システムの要素間の関係の概略図である。
【
図6A-6B】一実施形態に係る、複数のセルへの分割の概略図である。
【
図7】一実施形態に係る、複数のセルへの分割の別の実施形態の概略図である。
【
図8】一実施形態に係る、クライアントデバイスの概略図である。
【
図9】一実施形態に係る、仮想世界または現実世界の多次元3Dエンジンコンピューティングおよび仮想化ベースの動的負荷分散を可能にするコンピュータ実装方法のブロック図である。
【
図10】一実施形態に係る、仮想世界または現実世界の多次元3Dエンジンコンピューティングおよび仮想化ベースの動的負荷分散を可能にするコンピュータ実装方法のさらなるステップを含むブロック図である。
【
図11】一実施形態に係る、分散型メッセージ交換プラットフォームを介したリソース割り当てステップを示すブロック図である。
【発明を実施するための形態】
【0028】
以下の説明では、様々な実施形態を例示した図面を参照する。また、以下では、いくつかの実施例を参照して様々な実施形態について説明する。実施形態は、特許請求される主題の範囲から逸脱することなく、設計および構造の変更を含み得ることを理解されたい。
【0029】
図1は、一実施形態に係る、仮想世界または現実世界の多次元3Dエンジンコンピューティングおよび仮想化ベースの動的負荷分散を可能にするシステム100の概略図である。
【0030】
システム100は、ネットワーク104を介して、分散デプロイメント106内にリソースマネージャを含む分散型3Dエンジンを実装する複数のサーバコンピュータ102(例えば、外部サーバA~C)を備える。分散デプロイメント106は、システム100のアーキテクチャのような分散アーキテクチャを使用した、複数のサーバコンピュータ102における分散型3Dエンジンのソフトウェア実装のことである。サーバコンピュータ102は、パブリッシュ/サブスクライブモデルを使用するリソースマネージャを介して、複数のセル108(例えば、セル1~3)のうちの1つまたは複数にリソースを動的に割り当てる。各セル108は、現実世界または仮想世界の1つまたは複数の異なる領域を仮想的に表す。割り当ては、現在の負荷と、対応する計算およびランク付けされた需要とに基づく。いくつかの実施形態では、需要はさらに、以下でさらに詳細に説明するように、仮想オブジェクト110の量およびユーザアバターに見える永続的仮想世界システムの部分の範囲内の対話のレベルのうちの1つまたは複数を考慮する。
【0031】
複数のセル108のうちの1つまたは複数は、仮想オブジェクト110を含み、セル108内の複数のそれらの仮想オブジェクト110は、永続的仮想世界システム112を形成する。いくつかの実施形態では、仮想オブジェクト110の少なくともいくつかは、対応する現実世界要素の仮想レプリカである。いくつかの実施形態では、個々のセルの需要は、以下でさらに詳細に説明するように、個々のセル内の仮想オブジェクト110の量、それぞれのクライアントデバイス114を介してユーザに見える永続的仮想世界システムの部分の範囲内の対話のレベル、またはそれらの組み合わせを考慮する。さらなる実施形態では、要求は、以下でさらに詳細に説明するように、クライアントデバイス114とサーバおよび/またはアンテナなどのネットワーク機器との間の距離、ユーザによって使用されているアプリケーションのタイプ、またはユーザが個々のユーザプロファイルもしくは契約内容に応じて有し得るエンタイトルメントのタイプなどの他のパラメータを考慮する。
【0032】
本開示では、「永続的」という用語は、プロセスまたはネットワーク接続を連続的に実行しなくても存在し続けることができるシステムの状態を特徴付けるために使用される。例えば、「永続的」という用語は、仮想世界システムおよびその中に含まれるオブジェクトの全てが、仮想オブジェクトを作成するために使用されるプロセスが終了した後に、仮想世界システムに接続されているユーザとは無関係に存在し続ける仮想世界システムを特徴付けるために使用され得る。したがって、仮想世界システムは、不揮発性記憶場所(例えば、サーバ)に保存される。このようにして、仮想レプリカ、純粋仮想オブジェクトおよびアプリケーションは、ユーザがサーバに接続されていない場合であっても、特定の目標を達成するように構成されているときに、互いに対話し、協働することができる。
【0033】
いくつかの実施形態では、ハードウェアおよびネットワークの需要を低減し、ネットワークレイテンシの低減に寄与し、一般的な複合現実感体験を改善するために、該システムは、ミリ波(mmW)またはmmWとサブ6GH通信システムとの組み合わせを含むネットワーク104を介して、例えば、第5世代無線システム通信(5G)を介して接続することができる。他の実施形態では、該システムは、無線ローカルエリアネットワーク(Wi-Fi)を介して接続することができる。提供される通信システムは、典型的には高対話型デジタル・リアリティ・アプリケーションまたは他の高需要のアプリケーションを実行するために必要なパラメータに応じて、フィールド内のエンドポイントに対して低い(例えば、約1~約5ミリ秒)エンドツーエンド(E2E)レイテンシと高い(例えば、1~10Gbp)ダウンリンク速度とを可能にし得る。その結果、高品質、低レイテンシ、リアルタイムのデジタル・アプリケーション・コンテンツ・ストリーミングが得られる。他の実施形態では、該システムは、第4世代無線システム通信(4G)を通して通信可能に接続してもよく、4G通信システムによってサポートされてもよく、または他の有線もしくは無線通信システムを含んでもよい。
【0034】
他の実施形態では、GPS、BDS、Glonass、QZSS、Galileo、およびIRNSSのような衛星航法システムを指す、全地球的航法衛星システム(GNSS)が、デバイスの測位を可能にするために使用され得る。十分な数の衛星からの信号と、三角測量および三辺測量などの技法とを使用して、GNSSは、デバイスの位置、速度、高度、および時間を計算することができる。一実施形態では、外部測位システムは、既存のセルラー通信ネットワークのアーキテクチャを介して補助GNSS(AGNSS)によって拡張され、この場合、既存のアーキテクチャは5Gを含む。他の実施形態では、AGNSS追跡システムは、4Gセルラー通信ネットワークによってさらにサポートされる。屋内の実施形態では、GNSSは、限定的ではないが、好ましくは60GHzでデータを提供する、Wi-Fiなどの無線ローカルエリアネットワークを介して、さらに拡張される。代替の実施形態では、GNSSは、ディファレンシャルGPS(DGPS)、静止衛星型補強システム(SBAS)、リアルタイムキネマティック(RTK)システムなどの当技術分野で周知の他の技術を介して拡張される。いくつかの実施形態では、デバイスの追跡は、デバイス内のAGNSSセンサと慣性センサとの組み合わせによって実装される。
【0035】
本開示のいくつかの実施形態では、システム100は、パブリッククラウドまたはプライベートクラウド、フォグサーバ、クラウドレット、ピアツーピアクラウドサーバシステム、分散型台帳ベースのインフラストラクチャ、そして企業システム、モバイルプラットフォーム、およびユーザデバイスのようなエッジデバイス/システム(全てネットワーク104を介して接続し得る)などのコンピューティングデバイスおよびシステムを採用する、分散コンピューティング能力を表示し得るクラウドツーエッジインフラストラクチャ内に実装され得る。クラウド・ツー・エッジ・コンピューティング・ネットワークを使用して、コンピューティングパワー、コンピュータインフラストラクチャ(例えば、サービスとしてのいわゆるインフラストラクチャ、またはIaaSを介して)、アプリケーション、およびビジネスプロセスへのアクセスは、オンデマンドでクライアントデバイス114を介してユーザにサービスとして配信され得る。このようにして、物理サーバおよびネットワーク機器を含むリソースは、動的に割り当てられ得る共有ストレージおよびコンピューティングを可能にする。いくつかの実施形態では、クライアントデバイス114は、ユーザデバイスおよび他のデバイスを含む。ユーザデバイスは、例えば、モバイルデバイス、パーソナルコンピュータ、ゲームコンソール、メディアセンター、ヘッドマウントディスプレイ、およびシースルー型デバイス(例えば、デジタルリアリティコンタクトレンズ)を備え得る。他のデバイスは、対応する現実世界のオブジェクトの仮想レプリカを更新し、充実させるために、特に、センサ機構を介して現実世界のオブジェクトからマルチソースセンサデータをキャプチャするように構成され得る。一実施形態によれば、他のデバイスは、1つまたは複数の監視カメラ、車両、交通信号灯、建物、道路、線路、家電製品などである。
【0036】
図2は、一実施形態に係る、仮想世界または現実世界の多次元3Dエンジンコンピューティングおよび仮想化ベースの動的負荷分散を可能にするシステム100のサーバ102の概略図である。
【0037】
1つまたは複数のサーバ102は、1つまたは複数のプロセッサ202と、仮想世界または現実世界の少なくとも一部分を複数のセル(例えば、
図1のセル108)として仮想化するデータ構造を記憶するメモリ204とを備え、各セルは仮想オブジェクト110を含み、永続的仮想世界システム112を形成する。永続的仮想世界システム112が現実世界に基づく実施形態では、仮想オブジェクト110の一部は、対応する現実世界要素の仮想レプリカ206である。他の実施形態では、仮想オブジェクト110は、アプリケーション208と、現実世界に存在しない純粋仮想オブジェクト210とをさらに含む。メモリ204は、リソースを管理するリソースマネージャ214を含む分散型3Dエンジン212をさらに記憶する。リソースマネージャ214は、パブリッシュ/サブスクライブモデルを使用する分散型メッセージ交換プラットフォーム216を利用して、仮想オブジェクトがサブスクライブすることができる1つまたは複数のセル上にリソースをパブリッシュすることによって、コンピューティングパワー、メモリ、およびネットワークを含むリソースを割り当てる。リソースマネージャ214は、リソースを管理するハードウェアコンポーネントおよびソフトウェアコンポーネントをインターフェースする仮想レイヤとして機能し得る。管理アクションは、分散型メッセージ交換プラットフォーム216を介したリソースの評価、プロビジョニング、スケーリング、および複製を含み得る。
【0038】
本開示では、「仮想レプリカ」という用語は、現実世界要素の正確で永続的な仮想表現を指す。一実施形態では、本開示の仮想レプリカ206は、現実世界要素または現実ツインの仮想バージョンもしくは仮想ツインを指し、これらは、コンピュータ支援描画(CAD)方法またはコンピュータ支援エンジニアリング(CAE)方法、現実オブジェクトのコンピュータモデル(例えば、ビルディング・インフォメーション・モデル(BIM))による入力、または他の適切な先行技術の方法によってマッピングまたはモデル化され得、現実ツインの外観だけでなく挙動も反映し得る。現実世界オブジェクトのうちのいくつかは、仮想レプリカ206をそれらのそれぞれの現実の対応物を用いて充実させ、同期させるために、仮想レプリカ206にマルチソース入力データを提供することができるセンサをさらに含み得る。
【0039】
いくつかの実施形態では、仮想レプリカ206は、SLAMまたは微分マッピングベースデータなどの3D世界/建物データ、3Dジオメトリデータ、3D点群データ、またはアプリケーションのための3D構造をモデル化するのに役立ち得る現実世界構造特性を表す地理情報システムデータのうちの1つまたは複数を含む。
【0040】
本開示では、「仮想化」という用語は、仮想世界または現実世界の少なくとも一部分の抽象化された仮想バージョンまたは永続的仮想世界システム112を作成する行為を指す。現実世界の場合、仮想化は、現実世界で見られる要素の仮想バージョン、ならびに現実世界の任意のリソース(例えば、コンピューティングパワー、メモリまたはネットワーク)および関連機器の仮想バージョンを作成し、ユーザ(例えば、人間のユーザ、コンピュータプログラムまたはマシン)が永続的仮想世界システム112を介して現実世界の要素と対話することを可能にすることを指す。このようにして、ユーザは、対話が現実世界の要素と直接行われたかのように感じることができる。例えば、人間のユーザは、ユーザデバイス(例えば、携帯電話またはヘッドマウントディスプレイデバイス)のユーザインターフェースを通した拡張現実または仮想現実において、仮想都市を通して現実都市の要素と対話することができ、この場合、現実都市の複数の要素は、永続的仮想世界システム112内で仮想化されている。仮想レプリカを通した現実世界の物理的操作のために、仮想レプリカを通して現実世界オブジェクトに送信されたリモートコマンドを現実世界要素からの物理的アクションに変換するために、電気機械デバイスが現実世界オブジェクト上にインストールされ得る。永続的仮想世界システム112が仮想世界または現実世界に基づいているかどうかに関係なく、仮想オブジェクトは、仮想オブジェクトまたは対応する現実オブジェクトの態様の任意のグラフィカル表現、数学的表現、または論理的表現を指すモデルをさらに含み得る。いくつかの実施形態では、そのようなモデルは、永続的仮想世界システム112のエンティティに自己コンピューティング能力および自律挙動を提供する。いくつかの実施形態では、適切なモデルは、3Dモデル、幾何モデル、動的モデル、および機械学習モデルのうちの1つまたは複数を含む。
【0041】
本開示の分散型3Dエンジン212は、分散デプロイメント(例えば、複数のサーバコンピュータまたはクライアントコンピュータ)で実装されている3Dエンジンの分散バージョンを指す。分散型3Dエンジン212は、リソースマネージャ214を介して、リソース(例えば、コンピューティングパワー、メモリおよびネットワーク)を仮想的にプールし、割り当て、提供し、動的に負荷分散し、割り当てるように構成される。分散型3Dエンジン212の永続的仮想世界システム112への接続およびアクセスは、現実世界または仮想世界の少なくとも一部分を表すセルの各々における需要を評価するために空間コンピューティング原理を使用することによって、負荷分散が正確に実行されることを可能にする。リソースプロビジョニングの一部として、分散型3Dエンジン212は、複数の個々の分散型ソフトウェアエンジンを介して、複数のエンジンサービス(例えば、3Dレンダリング、グラフィックス、物理学、オーディオ、人工知能、測位、および通信)をオンデマンドで提供する。上述のエンジンサービスの各々を提供するために実行されるハードウェア操作は、複数の対応するハードウェアエンジンによって提供され得る。このリソースのプーリングは、上述したように仮想化を通して実装される。したがって、本開示の分散型3Dエンジン212の概念は、異なるアプリケーション(例えば、ビデオゲーム)間で再使用され得るライブラリ内で抽象化された機能の集合として単純に解釈されるべきではなく、永続的仮想世界システムを前記操作のベースとして採用する空間コンピューティング原理を使用してリソースマネージャ214を介してプールされ、割り当てられ、提供され、負荷分散されるエンジン操作を包含する分散型ハードウェアおよびソフトウェア実装として解釈されるべきである。
【0042】
本開示では、「空間コンピューティング」という用語は、入力を送信し、コンピュータからの出力を受信するための物理空間の使用を指す。したがって、空間コンピューティングは、要求されるコンピューティングおよび動的負荷分散を実行するために、仮想オブジェクトの幾何学的特性ならびにその位置および向きを使用する。
【0043】
仮想オブジェクト110には、シミュレーションから得られたデータ、ユーザデバイスを通してユーザによって入力されたデータ、またはモノのインターネットデバイスのようなセンサデバイスによってキャプチャされたデータ(例えば、現実世界に基づく永続的仮想世界システムの場合)が供給され得る。データの連続フローは、永続的仮想世界システム112を周期的に更新された状態に維持することができる。したがって、現実世界の少なくとも一部分からの永続的仮想世界システム112は、多くの現在の仮想世界システムの場合のように、現実世界の視覚的3D表現であるだけでなく、仮想オブジェクト110が現実世界の他の次元または態様からのモデルおよびデータを含むので、現実世界の多次元表現でもある。例えば、複数の仮想オブジェクト110は、温度、燃料消費量、速度、電力、圧力、質量、音などに関連するデータを含み得、各仮想オブジェクト間の接続および通信も可能にする。
【0044】
いくつかの実施形態では、仮想世界または現実世界の仮想化は、様々な詳細度(LOD)で同じ世界の複数のシミュレーションを実行することを含む。LOD管理は、異なる物理モデルを低忠実度モデルから高忠実度モデルまで仮想レプリカに関連付けることができるので、グラフィックスパイプライン使用、典型的には頂点変換における作業負荷を低減することによって、または物理シミュレーションを強化することによって、レンダリングプロセスなどのコンピューティングプロセスの効率を高める。このことにより、場合や状況に応じて異なるシミュレーションを行うことが可能になる。LOD管理は、特定の要件およびコンテキストに応じて、最適化されたユーザ体験を提供することも可能にする。したがって、同じ仮想世界または現実世界を異なるLODでシミュレートして、ユーザに適切な体験を提供しながら本開示の負荷分散方法を容易にすることができる。例えば、永続的仮想世界システム112における現実世界シミュレーションは、人間ユーザの視覚化を目的とした現実世界の少なくとも一部分の高忠実度シミュレーションと、各セルの需要を評価し、高忠実度シミュレーションの負荷分散を容易にするための低忠実度シミュレーションとを含み得る。したがって、低忠実度シミュレーションは、より少ないリソースを利用しながら、どの領域が過負荷状態であり、どの領域が過負荷状態でないかを閲覧することを容易にし得る。別の例では、製造工場の仮想化は、製造工場の各機械の現在のエネルギー消費、生産速度、効率などに関連するデータおよびモデル以外に、正確な空間表現およびオブジェクト間の関係により、分散型3Dエンジン212を介した需要評価および対応するリソース割り当てを含む製造工場の正確な管理を可能にし得る。製造工場は、製造工場の管理(例えば、製造プロセスおよび工場内の全ての要素の制御)のために高忠実度でシミュレートされ得、さらに、製造工場の負荷分散を管理するために低忠実度でシミュレートされ得る。上記の同じLOD原理が、仮想世界に基づく永続的仮想世界システム112に適用することができ、この場合、仮想世界の低忠実度バージョンは、仮想世界の低い負荷分散のために永続的仮想世界システム112内でシミュレートされ得、仮想世界の高忠実度バージョンは、より良好なユーザ体験を提供するためにシミュレートされ得る。
【0045】
「自己管理能力」とも呼ばれる「自己コンピューティング能力」は、本明細書では、コンピューティングリソースを自律的に管理するために人工知能アルゴリズムを適用する能力を指す。一実施形態では、永続的仮想世界システムにおける自己コンピューティング能力を有する仮想レプリカは、コンピューティングリソースを自律的に管理して、対応する現実世界要素の環境の変化または現実世界要素自体の変化に適応することができる。自己管理ルールおよび条件はさらに、ブロックチェーンまたは分散型台帳技術において実行されるスマートコントラクトの使用によって管理され、分散的かつ透過的な方法でルールおよび条件がさらに体系化され得る。したがって、一実施形態では、現実オブジェクトの仮想レプリカのような各仮想オブジェクトは、(例えば、必要なリソースを割り当てること、コマンドを自律的に送信ならびに実行すること、および/またはそれぞれの状況によって必要とされるイベントを生成することによって)永続的仮想世界システムに反映される現実世界の状態に応じて自律的に動作する自律的挙動を示し得る。このタイプの挙動を実現するには、仮想オブジェクトのモデリング中に人工知能アルゴリズムを用いて仮想オブジェクトをトレーニングすることが必要であり得る。
【0046】
仮想レプリカは、1つまたは複数のソース(例えば、1つまたは複数の現実世界オブジェクト、環境センサ、コンピューティングデバイスなど)からデータを取得し得る。本明細書内で使用される場合、「マルチソースデータ」という用語は、複数のソースから取得され得るデータを指す。仮想レプリカは、例えば、既知のパラメータまたは特徴を更新すること、仮想レプリカを追加のパラメータまたは特徴を用いて充実させることによって、マルチソースデータに基づいて更新され得る。
【0047】
本開示では、「充実させる」という用語は、マルチソースデータに基づいて仮想レプリカにさらなる特性を付与する行為を説明するために使用される。例えば、仮想レプリカを充実させることは、クライアントデバイス上のセンサ機構からキャプチャされた現実世界データを提供することを指す場合があり、さらなる現実世界データは、ビデオデータ、温度データ、リアルタイムエネルギー消費データ、リアルタイム水消費データ、速度または加速度データなどを含む。
【0048】
いくつかの実施形態では、仮想レプリカ206のうちのいくつかは、クライアントデバイスを介して永続的仮想世界システム112にアクセスする現実ユーザの仮想アバターであり得る。これらの実施形態では、リソースは、例えば、ユーザが自分のクライアントデバイスを通して閲覧することができる位置および向きに対応して、ユーザの仮想アバターがアクティブである対応セル上でパブリッシュされ、その結果、リソースは、ユーザクライアントデバイスを介して、対応セルにサブスクライブしている対応仮想アバターを通してユーザによって受信される。同様に、アプリケーション208および/または純粋仮想オブジェクト210がセル内でアクティブであるときに、これらの仮想オブジェクト110はそのセルにサブスクライブし、リソースマネージャ214をトリガして、需要を評価し、それに応じて、仮想オブジェクト110が対応セルにサブスクライブすることによって取得することができるリソースを多かれ少なかれパブリッシュする。
【0049】
例えば、都市内の特定の交通信号灯は、道路または街路にリンクされ、センサまたは他の交通信号灯などの他の物体にも関連付けられ得る。これらの関係は、永続的仮想世界システム112内で新しい対話を生成し得るイベントをトリガすることができ、例えば、街路内の緊急車両は、緊急車両の軌道のシミュレーションおよび領域内の実際の交通状況に基づいて、交差点における停止を回避するように交通信号灯パターンを変更する優先イベントを自動的にトリガすることができる。このようなイベントに関与するデバイス(例えば、自動車)のプロビジョニングを含む、このようなイベント中のリソースの管理は、リソースマネージャ212によって実行される。いくつかの実施形態では、そのような条件、イベント、および結果は、トラフィック固有の分散型台帳にバインドされたスマートコントラクト、例えば、様々な体系化されたトラフィックルールおよび期待挙動を定義する多くのスマートコントラクトを有するトラフィックサイドチェーンとしてプログラムされ、したがって、そのようなイベントの発生を自動化し、記録することができる。
【0050】
いくつかの実施形態では、純粋仮想オブジェクト210は、永続的仮想世界システム112内にのみ存在するオブジェクトを指し、したがって、現実世界内に対応するオブジェクトを有さない。
【0051】
いくつかの実施形態では、アプリケーション208は、1つまたは複数の従来のアプリケーション、分散型アプリケーション、または非中央集権型アプリケーションであり得る。従来のアプリケーションは、典型的には、従来のクライアント/サーバモデルに基づいており、静的インフラストラクチャ内の専用サーバ上で実行される。分散型アプリケーションは、主に本開示のクラウドサーバのようなクラウドコンピューティングプラットフォーム上に記憶されるアプリケーションであり、同一ネットワーク上の複数のシステムおよびデバイス上で同時に実行され得る、またはブロックチェーンもしくは分散型台帳ベースの分散データベース上で実行され得る。非中央集権型アプリケーションは、主に、ブロックチェーンまたは分散型台帳ベースの分散データベースなどの非中央集権型インフラストラクチャ上で実行される。
【0052】
いくつかの実施形態では、永続的仮想世界システム112は、拡張現実(AR)レイヤと仮想現実(VR)レイヤとに分離され得る仮想世界レイヤを備え得る。別個のレイヤは、拡張現実または仮想現実のいずれかにおける永続的仮想世界システムにアクセスすること、および各レイヤに記憶された要素を組み合わせることを可能にし得、一方または他方のタイプの現実にアクセスするときはいつでも、ネットワークを介して少なくとも1つのサーバコンピュータ102に接続されているクライアントデバイスを介してアクティブ化され得る。レイヤの各々は、各レイヤに固有であり得る現実オブジェクトおよび仮想オブジェクト110の拡張を含み得る。例えば、ARレイヤは、拡張現実において永続的仮想世界システム112にアクセスしているときにのみ可視であり得る、仮想レプリカ206、アプリケーション208、および純粋仮想オブジェクト210のみを含み得る。同様に、VRレイヤは、仮想現実において永続的仮想世界システム112にアクセスしているときにのみ可視であり得る、仮想レプリカ206、アプリケーション208、および純粋仮想オブジェクト210のみを含み得る。しかしながら、ユーザは、1つのレイヤの少なくともいくつかのオブジェクトが別のレイヤにおいて可視であるように、両方のレイヤをアクティブ化すること、または各レイヤのレベルを調整することを決定し得る。例えば、仮想現実のシーンにアクセスすると、建物または観光地のさらなる記述を見るなど、VRレイヤで仮想化された現実オブジェクトの拡張を閲覧するのを可能にする拡張現実レイヤをアクティブ化することが可能であり得る。
【0053】
いくつかの実施形態では、分散型3Dエンジン212は、1つまたは複数の個々の分散型ソフトウェアエンジン218をさらに備える。分散型ソフトウェアエンジン218は、複数の動的かつ独立したソフトウェアモジュールに分解された3Dエンジンであり得、各ソフトウェアモジュールは、特定のエンジンタスクを実行するようにプログラムされる。個々の分散型ソフトウェアエンジン218は、例えば、分散型メッセージ交換プラットフォーム216を介して、互いに通信し得る。各々の個々の分散型3Dエンジン218は、メッセージ交換プラットフォーム216を使用して、他の個々の分散型ソフトウェアエンジン218内のサービス機能を呼び出すことができる。このような呼び出しは、間接的に(例えば、分散型メッセージ交換プラットフォーム216によって呼び出される汎用プロキシ機能を通して)、または直接(例えば、各々の個々の分散型3Dエンジン218との直接通信を保持する分散型メッセージ交換プラットフォーム216によって)実行され得る。
【0054】
いくつかの実施形態では、1つまたは複数のプロセッサ202は、1つまたは複数の専用ハードウェアエンジン220であり得る。他の実施形態では、1つまたは複数のプロセッサ202は、汎用処理装置であるか、または汎用処理ユニットによってサポートされている専用処理装置である。いくつかの実施形態では、専用処理装置は、エンジンタスクを実行するための1つまたは複数の個々の分散型ソフトウェアエンジン218の処理用に調整された処理装置である。したがって、専用ハードウェアエンジン220は、3Dグラフィックス、人工知能操作、物理操作、3D構造処理操作、シミュレーション操作、追跡および測位、またはそれらの通信のうちの1つまたは複数に関連する操作の処理のために個別に設計および構成され得る。いくつかの実施形態では、各ハードウェアエンジン220は、各々の特定のタイプの操作を処理するように指定された1つまたは複数の特定のハードウェア処理コアを備える1つまたは複数の電子チップまたはチップ上のシステムに結合され得る。1つまたは複数の電子チップの処理コアは、各々の個々の分散型ソフトウェアエンジン218の必要なアルゴリズムを物理的に実行するように設計された電子チップの電子回路の機能ユニットまたはモジュールと見なすことができる。例えば、1つまたは複数の処理コアのうちの少なくとも1つは、FPGAまたは専用機能を実装する任意の他の形態の積分回路として実現され得る。したがって、1つまたは複数の電子チップは、1つまたは複数の処理コアのうちの少なくともいくつかを実現する少なくとも1つの集積回路を含み、処理コアのうちの少なくとも1つは、異なる専用ハードウェアエンジン220を実装する。いくつかの実施形態では、電子チップは、CPUおよび/またはGPUなどの汎用処理コアをさらに備えてもよく、または各々のエンジンタスクに対する追加のサポートを提供するために外部CPUおよび/またはGPUに接続してもよい。専用ハードウェアエンジン220を設けることにより、各々の個々の分散型3Dエンジン218は1つまたは複数のハードウェアエンジン220からの1つまたは複数の専用ハードウェアコアからリソースを取得することができるので、個々の分散型ソフトウェアエンジン218の各々は、永続的仮想世界システム内でより多くの数のタスクを実行するためにより多くのリソースをプルすることが可能になる。
【0055】
プロセッサ202は、単一の専用プロセッサ、単一の共有プロセッサ、または複数の個々のプロセッサを指すことができ、それらのうちのいくつかは共有され得る。さらに、「プロセッサ」という用語の明示的な使用は、ソフトウェアを実行することができるハードウェアのみを指すと解釈すべきではなく、限定的ではないが、デジタル信号プロセッサ(DSP)ハードウェア、ネットワークプロセッサ、特定用途向け集積回路(ASIC)、およびFPGAなどを暗黙的に含み得る。
【0056】
メモリ204は、コンピュータ可読媒体、またはハードドライブ、メモリカード、フラッシュドライブ、ROM、RAM、DVDもしくは他の光ディスク、ならびに他の書込み可能メモリおよび読取り専用メモリなどの電子デバイスの助けを借りて読み取ることができるデータを記憶する他の媒体を含む、プロセッサ202によってアクセス可能な情報を記憶することができる任意の適切なタイプのメモリであり得る。メモリは、永続記憶装置に加えて一時記憶装置を含み得る。命令は、プロセッサ202によって直接実行され得る(例えば、機械コード)、または間接的に実行され得る(例えば、スクリプト)。命令は、プロセッサ202による直接処理のためにオブジェクトコードフォーマットで記憶され得る、またはオンデマンドで解釈され得るかもしくは事前にコンパイルされ得る独立したソースコードモジュールのスクリプトもしくはコレクションを含む任意の他のコンピュータ言語で記憶され得る。データは、命令に従ってプロセッサ202によって取り出され、記憶され、または修正され得る。データは、例えば、複数の異なるフィールドおよびレコード、XML文書、またはフラットファイルなどを有するテーブルとして、リレーショナルデータベース内のコンピュータレジスタに記憶され得る。データはまた、任意のコンピュータ可読フォーマットでフォーマットされてもよい。
【0057】
いくつかの実施形態では、仮想オブジェクト110との対話機構および仮想オブジェクト110間の対話機構は、コンピュータスクリプトおよびコンピュータプログラムに含まれるコンピュータコードの使用を通して定義され、対話および対話アプリケーションが行われる永続的仮想世界システム112内にプロビジョニングされたアプリケーション、スマートコントラクト、またはそれらの組み合わせにより有効になり得る。したがって、アプリケーション、スマートコントラクト、またはそれらの組み合わせは、永続的仮想世界システム112を介して現実世界の全ての要素間の可能な所望の対話および対話インターフェースをデジタル的に体系化し、表現することを可能にする。対話は、対話型ゲームのようなアプリケーションの形態で、またはゲームのような対話機構を通じてユーザによって体験され得る。
【0058】
図3は、一実施形態に係る、リソースマネージャの分散型メッセージ交換プラットフォーム216を介したリソース割り当てシステム300の概略図である。
【0059】
リソース割り当てシステム300は、分散型メッセージ交換プラットフォーム216にリソース302を割り当て、リソース302は、コンピューティングパワー304、メモリ306、およびネットワーク308を含み、リソース302は、1つまたは複数のサーバコンピュータ102および/またはクライアントデバイス114から取得され得る。分散型メッセージ交換プラットフォーム216は、セル108内に存在する1つまたは複数の仮想オブジェクト110から要求を受信し、セル108にパブリッシュすることによって対応する割り当てを実行する。いくつかの実施形態では、これらのリソース割り当てを実行するために、分散型メッセージ交換プラットフォーム216は、パブリッシュ/サブスクライブモデルを利用し、そのことにより、1つまたは複数の仮想オブジェクト110は、リソース302がパブリッシュされている1つまたは複数のセル108にサブスクライブする。例えば、ユーザを表す仮想オブジェクト、またはユーザ仮想アバターは、特定のセル108内でアクティブであり得、リソースマネージャをトリガして、ユーザ仮想アバターによって必要とされるリソースを対応するセルにパブリッシュする。前記パブリッシュは、分散型メッセージ交換プラットフォーム216を介して実行される。したがって、リソース302は、分散型メッセージ交換プラットフォーム216に一度パブリッシュされ、リソース302にサブスクライブ310する各仮想オブジェクト110に配信される。これは、マップ内の各クライアントデバイスに対して完全なデータ更新パケットを出力する、仮想世界をプロビジョニングするように開発された典型的な3Dエンジンシステムとは対照的であり、クライアントデバイスがクライアントデバイスに関連し得るデータおよび視界内のオブジェクトに対するデータのみを受信するようにクライアントデバイスに対して各パケットを調整し、その結果、3Dエンジンが、オブジェクトが見える各クライアントデバイスに対して一度、同じデータを複数回送信することが可能になる。
【0060】
パブリッシュ/サブスクライブモデルは、コンテンツの生成および消費に基づく通信のモデルであり、通信が通常2つのノード間(すなわち、クライアントとサーバとの間)で行われる、一般的なクライアント/サーバベースの通信モデルとは異なる。このようなパブリッシュ/サブスクライブモデルを介した通信は、匿名通信可能であり得、つまり、サーバコンピュータ102および/またはクライアントデバイス114が、リソース302を取得するためにどのセル108に誰がサブスクライブしたかを知る必要がなく、同様に、リソースを取得する仮想オブジェクト110が、リソース302の出所を知る必要がない。典型的なパブリッシュ/サブスクライブモデルは、誰もが情報をパブリッシュおよび受信することができる情報交換を可能にし、典型的なクライアント/サーバモデルよりも高い自由度を可能にする。しかしながら、パブリッシュ/サービスモデルの使用は、非効率性の懸念をもたらす可能性もある。なぜなら、典型的には、あらゆるパブリケーションがあらゆる参加者に搬送され、参加者は、その関連性を決定するために情報を分析しなければならないからである。一方、本開示のパブリッシュ/サブスクライブモデルは、より多くの量のリソースを、それらを最も必要とするセル108に(例えば、仮想オブジェクト110がサブスクライブすることができる、よりリソース需要の高いセル108に)動的に集中させることを可能にする。また、パブリッシュされるリソースの量は、仮想オブジェクト110の量、ユーザに見える永続的仮想世界システムの部分の範囲内の対話のレベル、および他のパラメータを考慮するので、各仮想オブジェクト110は、それぞれのシミュレーション中に必要とされるリソースのみをサブスクライブされている各々のセルから取得する。
【0061】
いくつかの実施形態では、リソース302のコンピューティングパワー304は、1つまたは複数の個々の分散型3Dエンジン(例えば、
図2の個々の分散型ソフトウェアエンジン218)から取得されたエンジンサービス314を含む。 さらなる実施形態では、リソース302のメモリ306は、世界状態を記憶し、世界状態はさらに対応するセル108にパブリッシュされて、セル108にサブスクライブするクライアントデバイスに、仮想世界を通じて現実世界の更新バージョンを提供する。さらなる実施形態では、分散型メッセージ交換プラットフォーム308は、状況に応じて共有されるネットワークリソースの一部として構成される。いくつかの実施形態では、複数の分散型ソフトウェアエンジン218をネットワーク308内で同時にまたは順次に使用して、互いに相乗効果を生み出すことができる。
【0062】
本明細書内で使用される「エンジンサービス」という用語は、ゲームまたは他のアプリケーション関連タスクなどの1つまたは複数のタスクを達成するために、1つまたは複数の3Dエンジンによって実行および提供される操作を指す。3Dエンジンは通常、そのようなタスクを実行するために必要とされるライブラリ、ソフトウェア開発キット(SDK)、オブジェクトなどのソフトウェアコンポーネントを含む。エンジンサービスは、例えば、3Dレンダリング、グラフィックス、物理学、オーディオ、人工知能、測位、および通信に関連するサービスを含む。エンジンサービスの各々は、専用ハードウェアエンジン、汎用ハードウェアエンジン、またはそれらの組み合わせであり得るハードウェアエンジンによってプロビジョニングされる個々の分散型ソフトウェアエンジンによって実行され得、各ハードウェアエンジンは、個々の分散型3Dエンジンによって呼び出される機能からの命令を実行するための専用の回路を備える。
【0063】
本明細書で使用される「世界状態」という用語は、永続的仮想世界システム内の仮想オブジェクトの各々の状態を指し、永続的仮想世界システムにセンサデータを提供するセンサを含む複数の接続デバイスを通して時間内に更新され得る。接続デバイスは、例えば、ネットワークを介して互いに、かつサーバと通信し得るモノのインターネット(IoT)デバイスであり得、永続的仮想世界システムの仮想レプリカを更新するために現実世界からマルチソースデータを連続的にキャプチャし得る。したがって、状態更新は、センサデータから生じ得る。しかしながら、世界状態の更新はさらに、ユーザ入力から、または1つまたは複数の3Dエンジンからの計算(例えば、人工知能推論)から生じ得る。
【0064】
いくつかの実施形態では、セル108にパブリッシュすることによる仮想オブジェクト110への割り当ては、現在の負荷と、対応する計算およびランク付けされた需要とに基づき得る。
図2を参照すると、そのような需要の計算およびランク付けは、例えば、分散型3Dエンジン212のリソースマネージャ214によって実行され得る。ランク付けは、より低い需要ランクのセルがより高い需要ランクのセルよりも少ないリソース302を取得し得るように、各セル108にパブリッシュするリソース302の量の決定を支援し得る。いくつかの実施形態では、需要は、セル内の対応するクライアントデバイスを介してユーザに見える永続的仮想世界システムの部分の範囲内の仮想オブジェクト110の量を考慮する。ユーザアバターに見える永続的仮想世界システムの部分は、セル内のアバターの視野またはフィールドによって定義され得る。例えば、ユーザが拡張現実または仮想現実において世界の一部分を閲覧するとき、対応するアバターが永続的仮想世界システムにおいて利用可能であり得、したがって、ユーザアバターの視錐台がそのような視野を定義し得る。他の実施形態では、ユーザが、コンピュータまたは携帯電話画面などの「フラット」ユーザインターフェースを介してアバターを使用しているとき、実際のユーザアバターは、コンピュータ画面内で可視であり得、ユーザアバターは、永続的仮想世界システムの一部分の範囲内で視聴し、対話する。このような例では、ユーザアバターは、一人称視点で永続的仮想世界システムを閲覧することができ、一人称のアバターの視錐台が視野を定義し得る。ユーザアバターが上面から見られる実施形態では、視野は、ユーザアバターを中心とした半径によって定義され得る。全ての場合において、視野は、ユーザがユーザアバターを介して対話する可能性を有し得る複数の仮想オブジェクト110を含み得る。したがって、ユーザアバターの視野内の仮想オブジェクトが多いほど、その特定のセルに対するリソース需要が高くなり、したがって、ランク付けの需要のスコアが高くなる。他の実施形態では、需要は、ユーザに見える永続的仮想世界システムの部分の範囲内の対話のレベルをさらに考慮する。例えば、永続的仮想世界システムの2つの異なる領域内および2つの異なるセル内に2つのユーザアバターが存在し得、両方ともに対話に利用可能な5つの仮想オブジェクト110を有する。第1のユーザが(例えば、グループ活動、会話、バトルなどに参加することによって)全ての仮想オブジェクト110と同時に対話することを決定した場合、第2のユーザアバターが仮想オブジェクト110のいずれとも対話しないか、またはそのような仮想オブジェクト110とのより低いレベルの対話を有すれば、そのようなセルには、第2のユーザアバターよりも高いランクの需要を有し、したがってより多くのリソースが割り当てられ得る。この例では、ランク付けされた需要は、第1のユーザアバターが位置する仮想セルの需要の方が、第2のユーザアバターが位置する仮想セルの需要よりも高い。
【0065】
他の実施形態では、需要はさらに、クライアントデバイスとネットワーク機器(例えば、サーバおよび/またはアンテナ)との間の距離、ユーザによって使用されているアプリケーションのタイプ、またはユーザが個々のユーザプロファイルもしくは契約内容に応じて有し得るエンタイトルメントのタイプなどの他のパラメータを要因として考慮する。クライアントデバイスとネットワーク機器との間の距離の一例として、各セルに特定のネットワーク機器が割り当てられているので、ユーザが永続的仮想世界システムの特定のセル内のネットワーク機器から離れているほど、潜在的により低いサービス品質(QoS)を補償するために同時にアクティブ化され得るネットワーク機器が多くなり得、そのセルに対するより需要のランクが高くなる。ユーザによって使用されているアプリケーションの一例として、アプリケーションが、より高いリアルタイムのレンダリングレートまたはより良好な詳細レベルおよび鮮明度を必要とするために、帯域幅またはコンピューティングパワーなどのより多くのリソースを消費する場合、それは、そのセルに必要なリソースが増加し、ひいては、ランク付けされた需要が対応して高くなることを示している。エンタイトルメントのタイプの一例として、ユーザは、他のユーザよりも高いサービス品質(QoS)および高いデータ転送速度を得るためにプレミアムアカウントユーザとして登録されてもよく、その結果、他のユーザよりも高いリソース割り当てが得られる。さらに、上記の要因の全てを互いに組み合わせて計算して、各セルのランク付けされた需要を決定することができる。
【0066】
図4Aおよび
図4Bは、一実施形態に係る 、分散型メッセージ交換プラットフォーム216を介したエンジンサービス割り当ての概略
図400aおよび400bである。
【0067】
図4Aの概略
図400aは、
図1のサーバコンピュータ102のような1つまたは複数のサーバ上でホストされる複数の個々の分散型ソフトウェアエンジン218を含む。各々の個々の分散型ソフトウェアエンジン218は、分散型メッセージ交換プラットフォーム216を介してセル108にパブリッシュされ得る特定のエンジンサービスを提供する。次に、仮想オブジェクトA~Dのような仮想オブジェクト110は、それらが位置するセル1~2のようなセル108にサブスクライブすることによって、自身のエンジンサービスを取得し得る。
【0068】
図4Aに見られるように、個々の分散型ソフトウェアエンジン218は、1つまたは複数の特定のタイプのタスクのために設計された複数の動的かつ独立したソフトウェアモジュールであり得る。個々の分散型ソフトウェアエンジン218は、個々の分散型ソフトウェアエンジン218がプログラムされた機能を提供する独立したエンティティである。したがって、個々の分散型ソフトウェアエンジン218は、例えば、人工知能エンジン402a、3Dグラフィックスエンジン402b、シミュレーションエンジン402c、通信エンジン402d、オーディオエンジン402e、3D構造エンジン402f、位置エンジン402g、およびレンダリングエンジン402hなどであり得る。個々の分散型ソフトウェアエンジン218間の通信は、分散型メッセージ交換プラットフォーム216によって管理される機能呼び出しを介して実装される。
【0069】
いくつかの実施形態では、複数の分散型ソフトウェアエンジン218をネットワーク内で同時にまたは順次に使用して、互いに相乗効果を生み出すことができる。例えば、同じまたは異なるサーバコンピュータでホストされる複数の3Dグラフィックスエンジン402bは、1つまたは複数の特定のタスクの実現のために互いのエンジンサービスを補完するために、分散型メッセージ交換プラットフォーム216を介して、順次にまたは同時にエンジンサービスを割り当て得る。一例では、異なる3Dグラフィックスエンジン402bが、異なるロケーションの3Dモデルを計算し、この場合、ロケーションは、同じまたは異なるセル108内にあり得る。別の例では、異なる3Dグラフィックスエンジン402bは、同じ領域内に位置する異なるアプリケーションを計算することができ、アプリケーションのうちの少なくともいくつかは、ARレイヤ内に構成され、アプリケーションのうちの少なくともいくつかは、VRレイヤ内に構成される。例として、同じセル内の同じロケーションは、VRレイヤにおいてUnity(登録商標)によって計算され、一方、ARレイヤ内に構成された純粋仮想オブジェクトおよびアプリケーションなどの任意の拡張は、CryEngine(登録商標)およびUnrealEngine(登録商標)によって部分的に計算される。さらに、この例では、同じまたは異なるセル108内の隣接ロケーションは、CryEngine(登録商標)によってVRレイヤ内で計算され得るが、ARレイヤにおける拡張は、UnrealEngine(登録商標)およびUnity(登録商標)によって部分的に計算される。
【0070】
さらに
図4Aでは、仮想オブジェクトA~Bは、現在、永続的仮想世界システムのセル1内に位置し、AIエンジン402aによってプロビジョニングされるAIサービス404、レンダリングエンジン402hによってプロビジョニングされるレンダリングサービス406、およびシミュレーションエンジン402cによってプロビジョニングされるシミュレーションサービス408などの複数のエンジンサービスを受信しており、これらのサービスは、現在のアプリケーションおよび現在のセル1内の仮想オブジェクトの処理ならびに対話に必要であり得る。一方、仮想オブジェクトC~Dは、現在、永続的仮想世界システムのセル2内に位置し、オーディオエンジン402eによってプロビジョニングされるオーディオサービス410、通信エンジン402dによってプロビジョニングされる通信サービス412、およびシミュレーションエンジン402cによってプロビジョニングされるシミュレーションサービス408などの複数のエンジンサービスを受信しており、これらのサービスは、現在のアプリケーションおよび現在のセル2内の仮想オブジェクトの処理ならびに対話に必要であり得る。これらのエンジンサービスは、個々の分散型ソフトウェアエンジン218をホストする同じサーバコンピュータによって、個々の分散型ソフトウェアエンジン218をホストする複数のサーバコンピュータによって、またはそれらの組み合わせによってプロビジョニングされ得る。
【0071】
図4Bは、個々の分散型ソフトウェアエンジン218と、ハードウェアエンジン220と、および1つまたは複数のサーバ102の分散型3Dエンジン212との間の関係を示す概略
図400bである。セル108内に位置する1つまたは複数の仮想オブジェクトから要求を受信すると、1つまたは複数のサーバコンピュータ102上でホストされているリソースマネージャ214は、要求を受信し、需要を評価し、分散型メッセージ交換プラットフォーム216を介して、ソフトウェアエンジンおよびハードウェアエンジン218~220をそれぞれホストしている1つまたは複数のサーバコンピュータ102に対してエンジンサービスを要求する。エンジンサービスの各々は、専用ハードウェアエンジン、汎用ハードウェアエンジン、またはそれらの組み合わせであり得る、ハードウェアエンジン1~Nのようなそれぞれのハードウェアエンジン220によってプロビジョニングされている3Dエンジン1~Nのような個々の分散型ソフトウェアエンジン218によって提供され得る。次に、分散型メッセージ交換プラットフォーム216は、それぞれのエンジンサービスを受信し、そのエンジンサービスを必要とする1つまたは複数のセル108にそのエンジンサービスをパブリッシュする。次に、サービスを要求している仮想オブジェクトは、分散型メッセージ交換プラットフォーム216を介して、必要なエンジンサービスを受信するために、それぞれのセルにサブスクライブする。
【0072】
図5A~
図5Cは、一実施形態に係る、サブユニバース(本明細書では略して「バース」とも呼ばれる)と、ストリームと、永続的仮想世界システムの他の要素との間の関係の概略
図500a~500cである。
【0073】
図5Aの概略
図500aを参照すると、目標別シミュレーションに使用され得る複数の接続された仮想オブジェクト110は、ストリーム502を構成し得、各ストリーム502は、対応する仮想オブジェクト110からデータを取得し、目標別シミュレーションを実行するように構成される。各ストリーム502は、複数のストリーム関連仮想オブジェクト110を生成するルートノード504またはルートシミュレーションオブジェクトに接続し得る。ストリーム502は、必要なシミュレーションを実行するためにストリーム502が必要とする仮想オブジェクト110を定義するインポート機能506にさらに接続し得る。例えば、車両、人、交通信号灯、さらには気象条件の複数の仮想レプリカを含むトラフィックストリーム502が存在し得る。言い換えれば、ストリーム502は、ストリーム502の特定の機能に関連し得る仮想レプリカのような任意の数の仮想オブジェクト110を含む。この例では、インポート機能506は、トラフィックシミュレーションのためにどの仮想オブジェクト110を考慮すべきかを定義することができる。次に、ストリーム502は、仮想センサおよび/または現実センサの組み合わせを使用して、トラフィックシナリオの目標別シミュレーションを実行することによって、対応する仮想オブジェクト110の各々の挙動を読み取ることができる。例えば、目標は、トラフィックストリームを最適化すること、所定の平均速度で実行すること、または交通渋滞の可能性を低減することであり得る。このようなシミュレーションは、例えば、自律車両またはドローンを運転するために使用され得る。ストリーム502の別の例は、電力消費データを含む建物の仮想レプリカと、機械、コンピュータ、電気器具などの特定のエネルギー消費仮想レプリカとを含み得るエネルギー消費であり得る。
【0074】
続けて
図5Aを参照すると、既定の環境内の全てのまたはほとんどの仮想オブジェクト110を含む複数のストリーム502は、本明細書では、バース508と呼ばれるサブユニバースを形成する。例えば、都市バース508は、都市の建物、樹木、人、街路、交通信号灯、車両などの全てまたはほとんどを表すことができる。いくつかの実施形態では、住宅の外部ならびに内部の3D設計、および住宅の電気器具、人、壁、エネルギー消費データなどの全てまたはほとんどを含み得る、都市バース内の住宅バースのようなバース508内のバース508も存在し得る。
【0075】
図5Bの概略
図500bを参照すると、バース1~Nのようなバース508のネットワークは、永続的仮想世界システム112を形成することができる。例えば、都市バースは、他の都市バースに接続して、国バースを形成することができる。国バースが他のいかなるバース508にも接続しない場合、国バースは、永続的仮想世界システム112のユニバースを表すことができる。
【0076】
図5Cの概略
図500cを参照すると、それぞれが複数のストリーム関連仮想オブジェクト110を含む、ストリーム1~4のような複数のストリーム502を含むバース508の空間図が示されている。
【0077】
図6A~
図6Bは、一実施形態に係る、複数のセル108へのバース508の分割の概略
図600a~600bである。
【0078】
図6Aに見られるように、世界の領域を表す未分割バース602は、リソースマネージャが仮想オブジェクト110からの要求に基づいてリソースを要求すると、複数のセル606を含む分割バース604に分割され得る。より多くの数の仮想オブジェクト110を含むセルのようなより高リソース集約的なセル608は、より多くの数のセル606にさらに分割され得る。同様に、より少ない数の仮想オブジェクト110を有するセル606は、より少ない数のセル606に分割され得る。したがって、各セル606には、リソースが割り当てられ、より高リソース集約的なセル608は、より低リソース集約的なセル606よりも多くのリソースを受信する。例えば、より高リソース集約的なセル608内のいくつかのセル606は、残りのセル606よりも多くの仮想オブジェクト110を含む。しかしながら、各セル606に割り当てられるリソースの量は、特定のセル606内の仮想オブジェクト110の数だけでなく、ユーザに見える永続的仮想世界システムの部分の範囲内の対話のレベル、ユーザとサーバおよび/またはアンテナなどのネットワーク機器との間の距離、ユーザによって使用されているアプリケーションのタイプ、ユーザが個々のユーザプロファイルまたは契約内容に応じて有し得るエンタイトルメントのタイプ、またはそれらの組み合わせにも関連付けられることを理解されたい。しかしながら、簡略化のため、および例示目的で、
図6A~
図6Bは、需要を評価し、1つまたは複数のセルへの割り当てを管理するためのパラメータとして仮想オブジェクト110のみを使用する。
【0079】
いくつかの実施形態では、現実世界をセルに表現するデータ構造は、八分木データ構造であり、各セルは、八分木データ構造内のボクセルとして表現される。いくつかの実施形態では、八分木データ構造内で利用されるボクセルは、現実世界のより大きな部分の配置で使用するための疎なボクセルである。他の実施形態では、八分木データ構造内で利用されるボクセルは、現実世界のより小さい部分の配置で使用するための密なボクセルである。八分木および選択された疎ボクセルまたは密ボクセルは、現実世界を表す永続的仮想世界システムなどの仮想世界において3次元空間を表現するのに適したデータ構造である。八分木は、複数のオブジェクトの高速かつ容易な組み合わせを可能にし、比較的単純なレンダリングアルゴリズムを実装し、迅速な空間探索の実行を可能にし、現実オブジェクトの仮想化を通して(例えば、LIDARまたは他の画像走査方法を通して)モデル生成を可能にする。現実世界の少なくとも一部分を表す3D仮想世界を含む仮想世界について、世界のそのような3Dパーティションは、ユーザが見ているおよび/または対話している可能性がある領域上の3次元ベースのエンジンサービスおよびクラウドリソース割り当てを可能にする。しかしながら、さらに四分木が2D世界のケースを扱うときに利用され得る。他の実施形態では、BSP木、疎ボクセル八分木、3Dアレイ、kD木、点群、ワイヤフレーム、境界表現(B-Rep)、空間領域構成木(CSG木)、二分木、および六角形構造などの他の適切なデータ構造が利用され得る。
【0080】
いくつかの実施形態では、データ構造は、データに適用され得るデータ値、関係、および機能もしくは操作の集合を含み、データは、永続的仮想世界システム内の仮想オブジェクトの少なくともジオメトリおよび座標を定義する。例えば、正確なデータ構造の選択は、データの発信元、レンダリング中に求められるジオメトリの精度、レンダリングがリアルタイムで行われるか、または事前にレンダリングされるか、レンダリングがクラウドサーバを介して実行されるか、ユーザデバイス、フォグデバイス、もしくはそれらの組み合わせを介して実行されるか、永続的仮想世界システムが使用される特定のアプリケーション(例えば、医療または科学アプリケーションでは他のタイプのアプリケーションよりも高いレベルの鮮明度が必要とされ得る)、サーバおよびユーザデバイスからの記憶容量ひいては所望のメモリ消費などに依存する。
【0081】
さらに
図6Aでは、1つまたは複数の要求に関連付けられたイベントを終了した後、リソースは、元の1つまたは複数のソースに返される。その後、分割バース604は、分割バース604から未分割バース602に戻ることを指し示す曲線矢印610で表されているように、元の数のセル606に統合される。このようにして、該システムは、より高い需要を有する関心領域を選択し、リソースが必要とされなくなったときにそれらのソースにリソースを返すことによって、リソースの効率的かつ動的な割り当てを達成する。
【0082】
図6Bは、八分木データ構造600bを示す図である。八分木データ構造600bは、現実世界の少なくとも一部分を表すボリュームのようなデータ構造内のボリュームを直接表す。八分木データ構造600bの主な利点は、いくつかのオブジェクトの高速かつ容易な組み合わせ、単純なレンダリングの実装、迅速な空間検索の実行を可能にすること、および現実オブジェクトのデジタル化(例えば、LIDARまたは他の画像走査)によるモデル生成を可能にすることである。
【0083】
八分木データ構造600bは、各々の内部ノードが8個の子ノード、またはオクタントを有する木データ構造である。バースがさらに分割されると、子ノードのさらなるレベルが生成され、リソースを必要とするさらに分割されたセルに、より多くのリソースが割り当てられる。したがって、
図6Bの例では、八分木データ構造600bは、子ノードの3つのレベル612、すなわちレベル1~3と、バース全体を表すルートノード614とを生成している。太字で示された八分木データ構造600bの領域は、仮想オブジェクト110を有する領域を表す。バースの八分木データ構造600bの上位レベルは、例えば、存在する仮想オブジェクト110がより少ないので、より少ない分割、したがってより少ないリソースを必要とする領域を表す。これに対して、より多くの数の仮想オブジェクト110を含む下位レベルは、より多くの分割、したがってより多くのリソースを必要とする。
【0084】
図7は、一実施形態に係る、複数のセルへのバースの分割の別の実施形態の概略
図700である。
【0085】
概略
図700は、3つのストリーム702、ストリーム1~3で構成された分割バース604を示しており、各ストリーム702は、1つまたは複数のストリーム固有仮想オブジェクト110を含み、各ストリーム702は、クライアントデバイス上で閲覧および対話するために有効または無効になるようにプログラムされる。さらなる実施形態では、各ストリーム702は、1つまたは複数のユーザアプリケーションに関連付けられる。各ストリーム702は、対応する仮想オブジェクト110からデータを取得し、テーマおよび/または目標別のシミュレーションを実行するように構成され得る。各ストリーム702は、複数のストリーム関連仮想オブジェクト110を生成するルートノードまたはルートシミュレーションオブジェクトに接続し得る。ストリーム702はさらに、ストリームがシミュレーションを実行する必要がある仮想オブジェクト110を定義するインポート機能に接続し得る。
【0086】
例えば、視聴者がレストランアプリケーションを利用している場合、ユーザは、分割バース704のレストランストリーム(例えば、ストリーム1)を有効にするように随意選択することができ、そのことにより、レストランのみがユーザに示される、または強調表示される。同様に、トラフィック関連アプリケーションは、トラフィックストリーム(例えば、ストリーム2)を有効にして、トラフィックをユーザに示す、または強調表示するように構成され得る。別の例では、複数の純粋仮想オブジェクトを含むゲーム関連アプリケーションは、ゲームストリーム(例えば、ストリーム3)をアクティブ化して、ゲームアプリケーションに関連付けられた純粋仮想オブジェクトを示す、または強調表示することができる。この例では、ストリーム3は、より多くの仮想オブジェクト110を有するため、他のストリーム1~2よりも多くの量のリソースを必要とし得る。したがって、全てのストリーム1~3をまとめることにより、分割バース704が得られる。いくつかの実施形態では、どのストリーム702がアクティブ化されるかに応じて、アクティブ化されたストリーム702は、クライアントデバイス上で出力された、レンダリング済みまたは未レンダリングメディアストリームとしてユーザによって閲覧され、ストリーム702は、3D画像データ、3Dジオメトリ、3Dエンティティ、3D知覚データ、3D動的オブジェクト、ビデオデータ、オーディオデータ、テキストデータ、時間データ、位置データ、向きデータ、触覚データ、および照明データなど、またはそのようなメディアコンテンツの組み合わせを含む。したがって、各ストリーム702は、1つまたは複数のハードウェアエンジンによってプロビジョニングされている個々の分散型ソフトウェアエンジンのうちの1つまたは複数によって計算され、随意選択でレンダリングされ得る。いくつかの実施形態では、個々の分散型ソフトウェアエンジンのうちの1つまたは複数は、1つまたは複数のハードウェアエンジンによって実行されると、特定のストリーム702に関心を持っているユーザのみがストリーム702のメディアコンテンツを受信し、復号化することができるように、ストリーム702のエンドツーエンド暗号化(E2EE)をトリガする命令を含む。このような実施形態は、例えば、エンドツーエンドストリーミングサービスを利用するビデオ通話中に使用され得る。
【0087】
図8は、一実施形態に係る、クライアントデバイス114の概略図である。
図9のいくつかの要素は、
図1~
図8の要素と同様であり得、したがって、それらの要素を示すために、同様または同一の参照番号が使用され得る。
【0088】
本開示のクライアントデバイス114は、入出力(I/O)モジュール802、電源804、メモリ806、追跡モジュール812を形成する感知機構808とトランシーバ810、およびネットワークインターフェース814などの操作コンポーネントを含み得、これらは全て、プロセッサ816に動作可能に接続される。
【0089】
I/Oモジュール802は、ユーザと対話し、ユーザ入力データを1つまたは複数の他のシステムコンポーネントに提供するように構成されたコンピューティングハードウェアおよびソフトウェアとして実装される。例えば、I/Oモジュール802は、ユーザと対話し、対話に基づいてユーザ入力データを生成し、ネットワークを介してサーバなどの他の処理システムに転送される前にユーザ入力データをプロセッサ816に提供するように構成され得る。別の例では、I/Oモジュール802は、クライアントデバイス114と対話するように構成された外部コンピューティングポインティングデバイス(例えば、タッチスクリーン、マウス、3Dコントロール、ジョイスティック、ゲームパッドなど)および/またはテキスト入力デバイス(例えば、キーボード、ディクテーションツールなど)として実装される。さらに他の実施形態では、I/Oモジュール802は、上述したものに対して追加の機能、より少ない機能、または異なる機能を提供し得る。
【0090】
電源804は、クライアントデバイス114に電力を供給するように構成されたコンピューティングハードウェアおよびソフトウェアとして実装される。一実施形態では、電源804はバッテリであり得る。電源804は、クライアントデバイス114に内蔵されてもよく、またはクライアントデバイス114から取り外し可能であってもよく、再充電可能または再充電不可能であってもよい。一実施形態では、クライアントデバイス114は、1つの電源804を別の電源804と交換することによって再電力供給され得る。別の実施形態では、電源804は、パーソナルコンピュータに取り付けられた、ユニバーサルシリアルバス(「USB」)、FIREWIRE(登録商標)、Ethernet、Thunderbolt、またはヘッドホンケーブルなどの充電源に取り付けられたケーブルによって再充電され得る。さらに別の実施形態では、電源804は、電磁誘導充電によって再充電され得、電磁場は、電磁誘導充電器から電源804にエネルギーを伝達するために使用され、このとき、2つは、近接させられるが、ケーブルを介して互いに差し込まれる必要はない。別の実施形態では、充電を容易にするためにドッキングステーションが使用され得る。
【0091】
メモリ806は、アプリケーションプログラム命令を記憶し、複数の感知機構808によってキャプチャされたセンサデータを記憶するように適合されたコンピューティングハードウェアおよびソフトウェアとして実装され得る。メモリ806は、コンピュータ可読媒体、またはハードドライブ、メモリカード、フラッシュドライブ、ROM、RAM、DVDもしくは他の光ディスク、ならびに他の書込み可能メモリおよび読取り専用メモリなどの電子デバイスの助けを借りて読み取ることができるデータを記憶する他の媒体を含む、プロセッサ816によってアクセス可能な情報を記憶することができる任意の適切なタイプのメモリであり得る。メモリ806は、永続記憶装置に加えて一時記憶装置を含み得る。
【0092】
感知機構808は、現実世界から様々なセンサデータを取得し、クライアントデバイス114の位置および向きを決定/追跡するように適合されたコンピューティングハードウェアおよびソフトウェアとして実装され得る。感知機構808は、限定的ではないが、1つまたは複数の温度センサ、近接センサ、慣性センサ、赤外線センサ、汚染センサ(例えば、ガスセンサ)、圧力センサ、光センサ、超音波センサ、煙センサ、タッチセンサ、クロマティックセンサ、湿度センサ、水センサ、電気センサ、またはそれらの組み合わせを含む1つまたは複数を含み得る。特に、感知機構808は、1つまたは複数の慣性測定ユニット(IMU)、加速度計、およびジャイロスコープを含む。IMUは、加速度計およびジャイロスコープの組み合わせを使用することによって、クライアントデバイス114の速度、加速度、角運動量、並進速度、回転速度、および他のテレメトリメタデータを測定し、報告するように構成される。IMU内にあり、および/またはIMUから分離するように構成された加速度計は、地球の重力場による加速度を含む、対話デバイスの加速度を測定するように構成され得る。一実施形態では、加速度計は、3つの直交方向の加速度を測定することができる3軸加速度計を含む。
【0093】
トランシーバ810は、クライアントデバイス114がアンテナから無線電波を受信し、データをアンテナに送り返すことを可能にするように構成されたコンピューティングハードウェアおよびソフトウェアとして実装され得る。いくつかの実施形態では、アンテナからミリ波信号を受信し、イマーシブコンテンツと対話するときにデータをアンテナに送り返すように構成され得るミリ波トランシーバが採用され得る。トランシーバ810は、双方向通信トランシーバ810であり得る。
【0094】
一実施形態では、追跡モジュール812は、IMU、加速度計、およびジャイロスコープの能力を、トランシーバ810によって提供される位置追跡と組み合わせることによって実装され得、ミリ波ベースのアンテナによって提供される正確な追跡、低レイテンシ、および高QOS機能は、1センチメートル未満または1ミリメートル未満の位置および向きの追跡を可能にし得、これは、クライアントデバイス114のリアルタイムの位置および向きを追跡するときの精度を高め得る。代替の実施形態では、感知機構808およびトランシーバ810は、単一の追跡モジュールデバイス内で結合され得る。
【0095】
ネットワークインターフェース814は、ネットワークに通信可能に接続し、サーバまたはクライアントデバイス114によって送信されたコンピュータ可読プログラム命令をネットワークから受信し、プロセッサ816による実行のためにメモリ806に記憶するためにコンピュータ可読プログラム命令を転送するためのコンピューティングソフトウェアおよびハードウェアとして実装され得る。
【0096】
プロセッサ816は、センサデータを受信して処理するように構成されたコンピューティングハードウェアおよびソフトウェアとして実装され得る。例えば、プロセッサ816は、撮像要求を送信し、撮像データを受信し、撮像データを環境データまたは他のデータに処理し、ユーザ入力データおよび/または撮像データを処理してユーザ対話データを生成し、エッジベースの(デバイス上の)機械学習トレーニングおよび推論を実行し、サーバ要求を送信し、サーバ応答を受信し、および/またはユーザ対話データ、環境データ、およびコンテンツオブジェクトデータを1つまたは複数の他のシステムコンポーネントに提供するように構成され得る。例えば、プロセッサ816は、I/Oモジュール802からユーザ入力データを受信し得、メモリ806に記憶されているアプリケーションプログラムをそれぞれ実装し得る。他の例では、プロセッサ816は、現実世界からキャプチャされたセンサデータを感知機構808から受信することができ、または追跡モジュール812を介してクライアントデバイス114の正確な位置および向きを受信することができ、さらなる処理のためにデータをサーバに送信する前にデータの一部を準備することができる。例として、プロセッサ816は、データをサーバに送信する前に、センサデータの生データ低減またはフィルタリングなどのアナログまたはデジタル信号処理アルゴリズムを含む、データ準備中に必要とされるステップのいくつかを実現し得る。
【0097】
図9は、一実施形態に係る、分散型3Dエンジンを介する動的負荷分散を可能にするコンピュータ実装方法900のブロック図である。
【0098】
仮想世界または現実世界の多次元3Dエンジンコンピューティングおよび仮想化ベースの動的負荷分散を可能にする方法900は、ステップ902において、サーバコンピュータのメモリ内に、現実世界の少なくとも一部分を表すデータ構造を、永続的仮想世界システムを形成する仮想オブジェクトを記憶する複数のセルに提供して開始する。この場合、仮想オブジェクトのうちの少なくともいくつかは、対応する現実世界要素の仮想レプリカである。該方法は、続いて、ステップ904において、少なくとも1つのサーバコンピュータのメモリ内に、分散デプロイメントで実装されたリソースマネージャおよび複数の個々の分散型ソフトウェアエンジンを含む分散型3Dエンジンを提供する。
【0099】
次いで、該方法は、ステップ906に進み、現在の負荷に基づいてリソースマネージャによって、各々の個々のセルの需要を計算する。前記需要は、仮想オブジェクトの量およびユーザアバターに見える永続的仮想世界システムの部分の範囲内の対話のレベルのうちの1つまたは複数をさらに考慮する。他の実施形態では、需要は、ユーザとネットワーク機器(例えば、サーバおよび/またはアンテナ)との間の距離、ユーザによって使用されているアプリケーションのタイプ、またはユーザが個々のユーザプロファイルもしくは契約内容に応じて有し得るエンタイトルメントのタイプなどの他のパラメータを考慮する。需要に基づいて、該方法は、続いて、ステップ908において需要に応じてセルをランク付けする。その後、ランク付けされた需要に基づいて、該方法は、続いて、ステップ910において、1つまたは複数のより高リソース集約的なセルにリソースを動的に割り当てる。
【0100】
図10は、一実施形態に係る、分散型3Dエンジンを介する動的負荷分散を可能にする方法900のステップをさらに含むコンピュータ実装方法1000のブロック図である。
【0101】
一実施形態によれば、方法1000は、ステップ1002において、計算された需要に基づいて、世界の少なくとも一部分のより高リソース集約的な関心領域をより多くの数のセルに分割して開始する。次いで、方法1000は、続いて、ステップ1004において、1つまたは複数のソースからの対応するリソースを各セルに割り当てる。より高リソース集約的な関心領域内の1つまたは複数の要求に関連付けられたイベントを終了した後、方法1000は、続いて、ステップ1006において、リソースを元の1つまたは複数のソースに返す。最後に、方法1000は、ステップ1008において、バースを元の数のセルに統合して終了する。
【0102】
図11は、一実施形態に係る、分散型メッセージ交換プラットフォームを介したリソース割り当てステップを示す方法1100のブロック図である。
【0103】
方法1100は、ステップ1102において、パブリッシュ/サブスクライブモデルを使用するリソースマネージャの分散型メッセージ交換プラットフォームを介して、対応するセルに対応するリソースをパブリッシュして開始することができる。次いで、方法1100は、ステップ1104において、分散型メッセージ交換プラットフォームを介して必要なリソースを取得するために、1つまたは複数の仮想オブジェクトによって関心対象のセルにサブスクライブして終了する。
【0104】
いくつかの実施形態では、方法1200は、分散型メッセージ交換プラットフォームを介して、1つまたは複数のクライアントデバイスおよび/またはサーバコンピュータがサブスクライブし得る世界の少なくとも一部分の動的に更新された状態を、前記クライアントデバイス、サーバコンピュータ、またはそれらの組み合わせと共有して世界の更新バージョンを取得するステップをさらに含む。またさらなる実施形態では、世界の少なくとも一部分の状態は、センサデータを永続的仮想世界システムに提供するセンサを含む複数の接続デバイスによって、ユーザ入力によって、サーバの計算によって、またはそれらの組み合わせによって取得される。
【0105】
特定の実施形態が説明され、添付図面に示されているが、そのような実施形態は例示的なものに過ぎず、広範な開示内容を限定するものではなく、当業者は様々な他の変形形態に気付き得るので、本開示は図示され説明されている特定の構成および配置に限定されないことを理解されたい。したがって、説明は、限定ではなく、例示と見なされるべきである。