以下の説明では、本発明の完全な理解を提供するために、多くの具体的な詳細が記載されている。しかしながら、これらの具体的な詳細の一部または全てを用いずに本発明が実施され得ることが当業者にとって明らかであろう。他の例では、本発明が不明瞭なものとならないように、周知のプロセスステップについては詳細に説明していない。
本発明の各種の実施形態によれば、ヘッドマウントディスプレイ(HMD)を着用しているユーザは、例えば、ユーザアカウントを通じてクラウドシステム上のローカルサーバまたはリモートサーバにアクセスし、ビデオゲームなどのインタラクティブアプリケーションを選択する。要求に応答して、サーバは、インタラクティブアプリケーションの仮想シーンを識別し、HMDの表示画面上にレンダリングするために仮想シーンのコンテンツを提供する。仮想シーンは、インタラクティブアプリケーションの第1の仮想シーン、またはインタラクティブアプリケーションの前のセッション中にユーザがいた最後の仮想シーンであってもよく、サーバは、ユーザについて格納された以前のセッションの現在の状態に基づいて仮想シーンを識別してもよい。要求をサービスすることの一部として、サーバは、仮想シーンを識別するために、要求に含まれるユーザの識別子を使用してユーザの前のセッション(存在する場合)からインタラクティブアプリケーションの現在の状態を読み出す。インタラクティブアプリケーションの仮想シーンからのコンテンツは、インタラクションのためにユーザに提供される。仮想シーンは、インタラクティブアプリケーションの他の仮想シーンにアクセスするための1つ以上の視覚的オプションを含む。仮想シーン内でユーザによって提供されたインタラクティビティは、仮想シーンに含まれる各種の視覚的オプションとの予測されたインタラクションを識別して仮想シーン内の仮想オプションのうちの特定の1つに対して選択が近いと識別するために処理される。ユーザのインタラクティビティによって識別された仮想オプションのうちの特定の1つに関連付けられた第2の仮想シーンが識別され、プリロードされる。第2の仮想シーンのプリロードが先に行われるため、第2の仮想シーンに関連付けられている視覚的オプションのうちの特定の1つをユーザが実際に選択したときには、第2の仮想シーンのプリロードされたコンテンツが実行され、ユーザは、待機することなく第2の仮想シーンにアクセスし、この仮想シーンとのインタラクションを開始することが可能になる。
インタラクティビティの処理により、システムは、仮想シーンのコンテンツとのインタラクションの間に各種のアクションを通じて表現された特定の視覚的オプションに向けられたユーザの現在の関心を決定することができる。現在の関心は、仮想シーンのコンテンツとのユーザのインタラクションの間に取り込まれた複数のインタラクティブインジケータのそれぞれを評価してユーザによる選択が近い対象として特定の視覚的オプションを識別することによって決定される。システムは、各種のインタラクティブインジケータ(合図の形で提供される)を使用して視覚的オプションに対する選択を予測し、そのような予測に基づいてユーザのインタラクションのためにインタラクティブアプリケーションの後続の仮想シーンを用意する。
視覚的オプションに対する予測された選択に関連付けられた仮想シーンのコンテンツをプリロードすると、システムは、ユーザのインタラクティビティを継続して処理して、ユーザが特定の視覚的オプションへの関心を継続して表現しているか、それとも異なる視覚的オプションに切り替えたかを判定する。システムがその視覚的オプションから異なる視覚的オプションへの選択が近い対象が移行したことを検出すると、システムは、その変化を動的に判定し、異なる視覚的オプションに対応する異なる仮想シーンをプリロードする。いくつかの実施形態では、異なる仮想シーンをプリロードすることの一部として、システムは、対応する視覚的オプションにおけるユーザの最初の関心に応答して既にプリロードされた第2の仮想シーンをアンロードしてもよい。
いくつかの実施形態では、ユーザが各種の仮想シーンを通じて進行するにつれて、ロード及び実行された最初の仮想シーンのうちの特定のいくつかが、メモリ使用量を削減するためにアンロードされてもよい。アンロードされた仮想シーンのうちの特定のいくつかは、後続の仮想シーン内で利用可能な視覚的オプションに基づいていてもよい。
HMDを介して見ることができる仮想空間は広大である。その結果、ナビゲートするには多くのコンテンツをユーザのためにロードする必要がある。さらに、HMD内に提示されたコンテンツは、三次元(3D)空間内に提供されてビュー錐台を提供する。いくつかの実施形態では、ビュー錐台(カメラなどの、キャプチャリングの視野とも呼ばれる)は、表示画面上に投影される3Dモデル化された世界の空間領域として定義される。これは通常、視界のピラミッドの錐台(すなわち、平行面によりピラミッド頂部が切断されている)を取ることで取得される。三次元フォーマットの性質上、ユーザが完全に没入型の体験をするためには、多くのコンテンツをロードする必要がある。従って、あるコンテンツが現在HMDにてレンダリングされていない場合でも、ユーザが3D空間内で移動するときにユーザにとって利用可能となるように、そのコンテンツをキャッシュ及びロードし、新しいフレームを生成するように処理する準備をする必要がある。これは、二次元(2D)環境には当てはまらない。2D環境では、ユーザが見る必要のある全てのコンテンツを全てのフレームが有する。例えば、2D環境でキャラクタを移動させた場合、単一のフレームを使用してそのような情報を取り込み、ユーザに提示することができる。しかしながら、3D環境では、そのような細部は、複数のフレームにおいて取り込まれ、ユーザにとって利用可能となるようにする必要がある。
従って、各種の実施形態によれば、システムリソースの最適な使用量を確保しつつ完全に没入型の体験をユーザに提供するために、システムは、視線方向、移動方向、仮想シーン内の動き、ウェアラブルデバイスを着用しているユーザの身体の一部の伸長、コントローラを使用したトリガなどの、ユーザの各種の合図を収集し、これらの合図を処理して、視覚的オプションの選択、仮想オブジェクトに向かう移動方向などを含む、仮想シーン内のユーザの次の移動または選択を予測する。視覚的オプションの選択の予測に基づき、視覚的オプションに関連付けられた異なる仮想シーンのコンテンツが、異なる仮想シーンにアクセスするための視覚的オプションに対するユーザの選択に先立ってプリロードされ、メモリ内にキャッシュされることにより、コンテンツを容易にレンダリングし、ユーザのインタラクションに利用可能とすることができる。
任意の仮想シーン用のコンテンツは、アートワーク、3Dグラフィックス、3D動的キャラクタ、人工知能(AI)キャラクタなどの、グラフィックを多用するコンテンツを含む。いくつかの実施形態では、コンテンツに関連したデータは、様々なキャラクタまたはオブジェクトの制御された移動のバリエーションを含む、コンテンツのバリエーションを生成して、様々なビューのためにコンテンツのバリエーションをレンダリングできるようにするランダムジェネレータの技術を使用するグラフィックスプロセッサへの入力として提供される。合図の評価に基づいて仮想シーンをプリロードすることにより、システムは、必要なコンテンツのみをユーザのインタラクションのために適時にプリロードし、アクセスされないかあるいは必要のないコンテンツをロードし過ぎないようにすることができる。各種の実施形態により、システムは、ユーザの待機時間を最小限にしつつネットワーク及びシステムリソースを上手に割り当て、ユーザにとって最適なインタラクティブ体験をもたらすことができる。
本明細書で説明される各種の実施形態の他の利点は、当業者にとって明らかになるであろう。本発明の全体的な理解に関して、特定の実施形態について各種の図面を参照して以下に説明する。
図1は、ゲームアプリケーションなどのインタラクティブアプリケーションのコンテンツを求める要求を検出するために使用されるシステムの簡略ブロック図を示す。各種の実施形態はゲームアプリケーションに関して詳細に説明されているが、実施形態はゲームアプリケーションに制限されず、バーチャルツアーなどの、他の種類のインタラクティブアプリケーションにも拡張できることが留意されるべきである。要求は、ユーザによって着用されたヘッドマウントディスプレイ(HMD)などの、ユーザのクライアントデバイスから受信される。HMD104は、アプリケーションサーバ112などのサーバに通信可能に接続されている。アプリケーションサーバ112は、HMD104に対してローカルであってもよく、またはネットワーク110を介してアクセスすることができるリモートサーバとすることができる。例示的なネットワークは、ローカルエリアネットワーク、ワイドエリアネットワーク、ワイヤレスローカルエリアネットワーク、パーソナルエリアネットワーク、メトロポリタンエリアネットワークを含み、またはネットワークは、1つ以上のリモートデータセンター内に分散されたサーバ、ゲームコンソールなどを含むクラウドネットワークの一部とすることができ、インターネットなどのネットワーク110を経由してアクセスすることができる。サーバ112(すなわち、クラウドサーバ)は、データセンター内の複数のサーバのうちの1つでもよい。
HMD104は、処理モジュール(すなわち、プロセッサ)、メモリ、及びコンピューティングデバイス(例えば、コンソール)またはネットワーク経由でアクセスされるサーバに接続するためのネットワークまたは通信接続を含み、サーバ側アプリケーションと通信するための適切なアプリケーションプログラミングインタフェース(API)を含む。いくつかの実施形態では、HMD104のプロセッサは、スタンドアロンで実行され得るか、または有線もしくは無線接続を通じてローカルサーバコンピューティングデバイス(例えば、コンピュータ106)に接続することによってサーバ側アプリケーションとのインタラクションを行い得るクライアント側アプリケーションを実行することができる。他の実施形態では、HMD104は、ネットワーク接続を使用してネットワーク110に接続し、アプリケーションプログラミングインタフェース(API)を使用して、リモートサーバ112(例えば、リモートクラウドサーバ)上にホスティングされたサーバ側アプリケーションと通信するか、またはこのサーバ側アプリケーションにアクセスしてもよい。従来の実施形態のように、ネットワーク接続は、有線または無線接続とすることができる。各種の実施形態は、図1のHMD104に制限されず、他のクライアントデバイス(例えば、シンクライアント、汎用コンピュータ、専用コンピュータ、ゲームコンソール、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、モバイルコンピューティングデバイス、ポータブルゲーミングデバイス、携帯電話、スマートフォン、セットトップボックス、ストリーミングメディアインタフェース/デバイス、スマートテレビもしくはネットワーク化されたディスプレイ、またはローカルもしくはリモートで利用可能なサーバに接続してインタラクティブアプリケーションにアクセスするために使用することができる任意の他のコンピューティングデバイス)も含むことができる。
使用されるネットワーク接続及び/または通信プロトコルにより、HMD104は、サーバ(複数可)と通信して、マルチメディアコンテンツのビデオフレームのストリーム(複数可)を含むコンテンツをサーバ(複数可)から受信することが可能になる。サーバ(複数可)によってストリーミングされるビデオフレームには、サーバ側でエンコーダを使用して圧縮をかけてもよい。従って、HMD104は、サーバ(複数可)(例えば、アプリケーションサーバ)によって送信されたアプリケーションコンテンツを表すビデオフレームのストリーム(複数可)を展開するためのデコーダを含んでもよく、HMD104の表示画面上に画像をレンダリングしてもよい。レンダリングされた画像は、ゲームアプリケーションなどのインタラクティブアプリケーションの現在の状態を識別する。アプリケーションの現在の状態は、HMDがアプリケーションサーバ(複数可)からのオーディオ及び/またはビデオデータを受信し、復号し、レンダリングし、ユーザ入力をアプリケーションサーバ(複数可)に返信するように主として機能することにより、アプリケーションサーバ(複数可)上で実質的に維持及び実行される。
本出願において使用されるようなアプリケーションサーバは、ローカルサーバコンピューテイングデバイス(例えば、コンピュータ106)、コンソールサーバ、仮想コンピュータ、クラウドサーバ112、デジタルメディアサーバ、ゲーム開発者もしくはゲームスポンサーもしくはアプリケーション開発者もしくはアプリケーション提供者のストアフロントを提供するために使用されるサーバ、ウェブサーバ、端末サーバ、リモートサーバ、または使用中にユーザがアクセスし、インタラクションを行うことができるインタラクティブアプリケーションを実行するための処理リソースを提供しもしくは割り当てる、1つ以上のインタラクティブアプリケーション(例えば、ゲームアプリケーション、バーチャルツアーなど)をホスティングすることが可能である任意の他の種類もしくは形式のサーバコンピューティングデバイスであってもよい。アプリケーションサーバは、特定の種類の通信プロトコルに従ったAPIコールを使用して、ビデオフレーム内のデータを圧縮し、圧縮されたビデオフレームをデータストリームにおいてHMDに転送するためのエンコーダを含んでもよい。
アプリケーションサーバ(例えば、コンピュータ106、クラウドサーバ112など)は、ユーザから受信した要求に基づき、ユーザアカウントで利用可能である各種のインタラクティブアプリケーション(例えば、ゲーム、バーチャルツアーなど)を実行し、インタラクティブアプリケーションの現在の状態を識別し、HMDにてレンダリングするためにインタラクティブアプリケーションのうちの特定の1つから適切なコンテンツを提供する。コンテンツは、画像データ、オーディオデータ、触覚データなどを含むストリーミングビデオデータを含む。HMDを介して提供されたユーザ入力は、アプリケーションサーバにて受信及び処理されて、インタラクティブアプリケーションの結果に影響を与える。インタラクティブアプリケーションの結果は、インタラクティブアプリケーションの現在の状態を提供する。インタラクティブアプリケーションは、シングルユーザまたはマルチユーザアプリケーションであってもよく、サーバは、ユーザから受信した要求において識別され、仮想シーンのコンテンツを提供するインタラクティブアプリケーションをインスタンス化することにより、ユーザによるインタラクションを促進する。仮想シーンは、ユーザについて維持されるインタラクティブアプリケーションの現在の状態に対応してもよい。
いくつかの実施形態では、コンピュータ106内への統合、または外部への搭載のいずれかがなされたカメラ108が、ユーザがHMD104上に提供されたコンテンツとのインタラクションを行っている間にユーザの画像を取り込むために使用されてもよい。カメラ108は、画像を取り込むための信号を受信し、その後の処理に画像を提供するために、コンピュータ106及び/またはHMD104に通信可能に接続されてもよい。いくつかの実施形態では、インタラクティブアプリケーションの結果に影響を及ぼすために、取り込まれたユーザの画像が使用されてもよい。
本明細書で説明されるシステムアーキテクチャを使用して実行された動作は、ユーザにとって、特定のコンテンツに高速にアクセスすることを可能にするために1つ以上のサーバ及び/または実行プラットフォームに求める技術的動作を構成する。仮想シーンのコンテンツをHMDにそれを送信する前に圧縮するために、任意の数の圧縮技術がサーバによって連携されてもよい。圧縮技術は、標準エンコーダを使用してもよい。これにより、HMD上の標準デコーダは、次いで、ユーザがコンテンツとのインタラクションを行うことができるように、HMD上の画像、ビデオ、及びオーディオデータにアクセスし、それらを復号及びレンダリングすることが可能になる。インタラクティブアプリケーションの実行の管理及びHMDへのコンテンツの配信は、複数の指示サーバ、サービス品質テスタまたはエンジンなどを必要とし得る。これらの動作及びタスクは、ゲームをリモートで実行し、広い地形にわたって分散されたHMD104にデータを供給している間、ストリーミング及び低レイテンシのために設計された専用サーバコンピュータを利用してもよい。実施形態をHMD104に関して説明したが、実施形態は、他のウェアラブルデバイス、モバイルコンピューティングデバイス、パーソナルコンピューティングデバイスなどを含む他のクライアントコンピューティングデバイスに拡張されてもよい。
システムの全体的な理解に関して、本発明の特定の実施形態について他の図面を参照して以下に説明する。
図2は、コンテンツを求める要求に応答して、コンテンツを識別し、処理し、検証し、そのコンテンツをユーザに提供するために各種のアプリケーションモジュールを連携させる例示的なアプリケーションサーバ112を示す。アプリケーションサーバ112は、例えば、ユーザアカウントデータ処理モジュール113及びアプリケーションプリローダモジュール115を含む。ユーザアカウントデータ処理モジュール113は、ユーザからの要求を検証するために使用される。検証では、要求が有効なユーザからのものであることを保証するために、要求に含まれるユーザのユーザ識別子を識別し、かつ、サーバ112上のユーザアカウントデータベース131内に保持されたユーザアカウントと照合してユーザ識別子を検証する。ユーザの検証が成功すると、要求は、処理のためにアプリケーションプリローダモジュール115に転送される。アプリケーションプリローダモジュール115は、インタラクティブアプリケーションを求める要求を処理し、インタラクティブアプリケーションの適切な仮想シーンをロードし、キャッシュし、実行し、インタラクティブアプリケーションの関連コンテンツをレンダリングのためにクライアントデバイスに提供するように構成される。
いくつかの実施形態では、アプリケーションプリローダモジュール115は、インタラクティブアプリケーションの適切なコンテンツを提供する前に、要求のさらなる検証を実行してもよい。さらなる検証の一部として、インタラクティブアプリケーションのアプリケーション識別子を要求から抽出してもよく、抽出された識別子をアプリケーションデータストア133と照合して検証して、(a)要求がアプリケーションデータストア133において利用可能であるアプリケーションを求めるものかどうかの判定、及び(b)ユーザがアプリケーションへのアクセスを許可されているかどうかの判定を行ってもよい。要求の検証が成功すると、アプリケーションプリローダモジュール(またはさもなければ「プリローダモジュール」と呼ばれる)115は、ユーザに提示するためのインタラクティブアプリケーションからの仮想シーンを識別することの要求を処理する。
ユーザが初めてインタラクティブアプリケーションを選択したとき、インタラクティブアプリケーションの一番初めの仮想シーンがユーザに提供される。一番初めの仮想シーンは、インタラクション用のアプリケーションを設定するためにオプションをユーザに提供する仮想「ホーム」シーンであってもよい。オプションは、ユーザのインタラクション用のアプリケーションを設定するために、カスタマイズオプション及び設定オプションを含んでもよい。アプリケーションを設定するための前述のオプションに加えて、インタラクティブアプリケーションからの1つ以上の仮想シーンもホームシーン内に提供されてもよい。1つ以上の仮想シーンを選択及び提供して、ユーザがアプリケーションの仮想シーンのうちの選択式の1つを「サンプリング」することができるようにしてもよい。インタラクティブアプリケーションへの後続のアクセス中、ホームシーン内で提供され得る1つ以上の仮想シーンは、最後の仮想シーン及び/または頻繁にアクセスされる仮想シーンであってもよい。
インタラクティブアプリケーションは、複数の仮想シーンを含んでもよく、各仮想シーンは、インタラクティブアプリケーションの追加の仮想シーンにアクセスするための複数の視覚的オプションを有する。各仮想シーン内で提供された視覚的オプションは、特定の仮想シーンに固有のものであり、ある場合には、ユーザに固有であってもよい。視覚的オプションにより、ユーザは、インタラクティブアプリケーション内の1つ以上の追加の仮想シーンにアクセスすることができる。
図3は、ユーザのインタラクション用のアプリケーションにユーザが最初にアクセスするときにユーザに提供され得る例示的な仮想「ホーム」シーン300の簡略ブロック図を示す。ホームシーン300は、ユーザのインタラクション用のアプリケーションをユーザが最初に設定するのを支援するための設定メニューオプション301、ユーザがコンテンツの明るさ、レンダリングの速度、コンテンツの明瞭度、仮想シーン内でインタラクションを行うために使用される仮想オブジェクト、インタラクティブアプリケーション内でユーザを表現するためのアバターなどの、インタラクティブアプリケーションのいくつかの態様をユーザがカスタマイズできるようにするためのユーザカスタマイズオプション302を含む。設定オプション(301、302)に加えて、インタラクティブセッションを中止または終了するために「中止」(または終了)オプション315が提供されてもよい。また、追加のオプション(複数可)303、304及び305が、それぞれ、仮想シーンA、B及びCのうちの特定の1つにアクセスするために提供されてもよい。ホームシーン300内に提供される仮想シーンのうちの特定の1つは、インタラクティブアプリケーションの連続的または非連続的な仮想シーンであってもよい。例えば、ユーザが初めてアプリケーションを選択している例では、図3に示したように、ホームシーン内に提供され得る仮想シーンは、アプリケーションの先頭からの仮想シーンの連続的なセットを含んでもよい。前のセッションにおいてユーザがアプリケーションとのインタラクションを行っていた例では、ホームシーン内に提供されたオプションは、非連続的な仮想シーンのためのものであってもよい。例えば、ホームシーン内に提供された仮想シーンのオプションは、ユーザによって、もしくはユーザの社会的な知り合いである他のユーザ、アプリケーション関連の知り合い、ユーザと同一の属性を有する他のユーザ、もしくは同様の人口動態を共有する他のユーザによって、または同一の共同体もしくは地理などから頻繁にアクセスされる仮想シーンを含んでもよい。ある場合には、先頭からの仮想シーンの連続的ないくつかにアクセスするためのオプションを初めに含めることによってユーザについてホームシーンを動的に調整し、1つ以上のインタラクティブセッションの後、ユーザの、または他のユーザのお気に入りの仮想シーンまたはインタラクションが度々行われた仮想シーンのうちの一部を含むようにホームシーンを更新してもよい。ユーザの選択に関連する情報は、使用履歴データベース135内に維持され、ユーザの後続の各インタラクティブセッション中にアプリケーションのホームシーンに入れるために使用されてもよい。
再度図2を参照すると、ホームシーン内の各種のオプションにおけるユーザの選択は、アプリケーションの設定及びカスタマイズのために、かつユーザのインタラクションの間に使用される。最初のアプリケーション設定後、プリローダモジュール115の仮想シーンセレクタサブモジュール117は、アプリケーションの仮想シーンを選択し、ユーザのインタラクションのために仮想シーンの関連コンテンツを提示する。ユーザが以前にアプリケーションとのインタラクションを行っていた場合、仮想シーンセレクタ117は、アプリケーションの現在の状態に基づいて仮想シーンを識別してもよい。例えば、仮想シーンセレクタ117は、使用履歴データベース135とのインタラクションを行って、ユーザの以前のインタラクティブセッションからアプリケーションの現在の状態を取得し、ユーザに提示するための適切な仮想シーンを識別してもよい。仮想シーンにおけるユーザのインタラクションは、アプリケーションの進行を促すために使用される。
インタラクティブアプリケーションの仮想シーン内のユーザのインタラクションは、インタラクション予測器モジュール119によって実質的にリアルタイムで受信され、処理される。インタラクションは、仮想シーン内に提供された1つ以上の視覚的オプションに向けたユーザの予測されたインタラクションを識別するために処理され、1つ以上の視覚的オプションは、アプリケーションの追加の仮想シーンにアクセスするために使用される。視覚的オプションは、ボタン、ドアの仮想画像、エレベータの仮想画像、一続きの階段の仮想画像などの、仮想オブジェクトのインタラクティブ画像、もしくはシーンのインタラクティブ画像、または様々な仮想シーンにアクセスするためのオプションのフローティングメニューの形態であってもよい。
図3A~3Dは、他の仮想シーンにアクセスするためのインタラクティブアプリケーションの仮想シーン内で利用可能な視覚的オプションのいくつかの例を示す。例えば、図3Aは、インタラクティブアプリケーションの仮想シーンであるシーンA 303を示す。シーンAは、ホームシーンの後のインタラクティブアプリケーションの第1の仮想シーンであってもよく、ユーザがホームシーン内のオプションを使用して設定動作を完了した後に提供されてもよく、または仮想シーンは、ユーザの最後のセッションから取得されたインタラクティブアプリケーションの状態に基づいて提供されてもよく、もしくはホームシーン内でユーザによって選択されたオプションに応答して提供されてもよい。シーンAは、アプリケーションの様々な仮想シーンにアクセスするための複数の視覚的オプションを含む。視覚的オプションは、仮想シーン内に分散させてもよく、視錐台(すなわち、視野)に基づいて見えてもよい。例えば、仮想シーン内の視覚的オプションは、仮想シーンBにアクセスするための仮想ドア304の画像、仮想シーンCにアクセスするためのエレベータドア305の画像、仮想シーンGにアクセスするためのシーン310の画像、及び一組の視覚的オプションであって、これらに関連付けられた仮想シーンにアクセスするためにフローティングメニュー311内に提供された一組の視覚的オプションを含んでもよい。例えば、フローティングメニュー311は、ホームシーン(シーンD 306)に戻るためのインタラクティブ視覚的オプション、お気に入りのシーン(シーンE 307)、次のシーン(シーンFn 308)または以前のシーン(シーンFp 309)にアクセスするためのインタラクティブ視覚的オプションなどを含んでもよい。当然のことながら、図3Aに示され、フローティングメニュー311内に示されたオプションは単なる例であり、インタラクティブアプリケーションの各種の仮想シーンにユーザがアクセスできるように、類似または異なる種類の、より少ないか、またはより多い視覚的オプションが提供されてもよい。
HMD104のディスプレイ上にレンダリングされたアプリケーションのコンテンツにユーザがインタラクションを提供している間、インタラクションは、視覚的オプションとの予測インタラクションを判定するために処理される。各種の視覚的オプションにおける予測インタラクションは、予測されたインタラクションが閾値を超えたかどうか、及びインタラクションの閾値が、ユーザによる選択が近いことになる視覚的オプションのうちの特定の1つを示しているかどうかを判定するために一定期間にわたって累積される。一実施形態では、仮想シーン内でユーザによって提供された予測インタラクションは、視線方向、仮想シーン内でのユーザのアバターまたはユーザの表現の移動、動きの方向、ウェアラブルデバイス、コントローラのトリガなどを追跡することによって判定することができる仮想シーンへのユーザの手の伸長、または様々な視覚的オプションに向けたユーザの関心を示す任意の他の合図(すなわち、信号)を含んでもよい。ここで、これらのインタラクションは、視覚的オプションを実際には選択せずにユーザによって提供されたアクションである。例えば、アプリケーションの仮想シーン内のユーザのインタラクティビティの処理は、ユーザの視線が視覚的オプション304(すなわち、仮想シーンB(例えば、ファンゾーン)へのアクセスを提供するドアの仮想画像)に向けられていることを検出してもよい。処理の一部として、インタラクション予測器モジュール119は、全ての視覚的オプションに向けたユーザのインタラクティビティを累積し、累積されたインタラクティビティを使用して、仮想シーン内の視覚的オプションのうちの特定の1つに対してユーザによる近くなされる選択を予測し、対応する仮想シーンをユーザのインタラクションのためにプリロードしてもよい。視覚的オプションのうちの特定の1つに対するユーザによる選択が近いという予測の詳細について、図4を参照して詳細に論じる。
図3Bは、図3Aに示した仮想シーンA 303内で利用可能な視覚的オプションとの予測されたインタラクションの評価に基づいて選択が近いと識別された視覚的オプションのうちの特定の1つに関連付けられた仮想シーンの一例を示す。図3Bに示した例では、予測されたインタラクションの処理により、視覚的オプション304に向けられるユーザにより近くなされる選択が識別され、対応する仮想シーンがファンゾーン(すなわち、仮想シーンB)に対して識別された。この例では、仮想シーンBは、シーンAに対して連続的または非連続的な仮想シーンであってもよい。インタラクション予測器モジュール119は、ユーザが仮想シーン内でインタラクションを行っている間にユーザのインタラクティビティを継続的に処理して、仮想シーン内のユーザのインタラクティビティにおいて検出された様々なアクションを識別してもよい。処理に基づき、インタラクション予測器モジュール119は、ユーザが実際にユーザのインタラクションのために視覚的オプション304を選択した場合にシーンBのコンテンツがユーザにとって利用可能となるようにプリロードし、キャッシュし、準備を整えるために仮想シーンBを識別する。
同様に、エレベータ305の画像の形態の視覚的オプションが、仮想シーンCにアクセスするためにシーンA内に提供されてもよい。エレベータオプションは、仮想シーンの状況に基づき、さらにはインタラクティブアプリケーションの仮想環境内のユーザの位置及び進行に基づき、仮想シーンA内に提供される。例えば、現在シーンA内にレンダリングされている仮想シーンが高層ビルの一部である場合、ユーザがアプリケーションの仮想コンテンツとのインタラクションの間に高層ビルのフロア(例えば、1階、ロビー)に入ったことを検出すると、エレベータオプション305が提供されてもよい。高層ビルの他の階へのアクセスは、高層ビルを含むアプリケーションのコンテンツとのユーザのインタラクションに基づき、エレベータオプション305を介して提供されてもよい。ユーザがインタラクティブアプリケーション内にいることが検出されたフロア階に応じて、エレベータオプション305は、高層ビルの他のフロアの仮想シーンへのアクセスを提供してもよい。例えば、ユーザが最上フロアにいることが検出されたとき、エレベータオプションは、高層ビルのより下のフロア階へのアクセスを提供する。同様に、ユーザが高層ビルの地下にいることが検出された場合、エレベータオプションは、高層ビルのより上の階のフロアへのアクセスを提供してもよい。他の実施形態では、エレベータオプション305の代わりに、高層ビルの高層階または低層階にアクセスするための階段オプション(図3Aには図示せず)がユーザに提供されてもよい。
図3Cは、高層階フロアにアクセスするために図3AのシーンA内の視覚的オプション305(すなわち、エレベータの画像)を使用してユーザによってアクセスされる、ホテルのビルの高層階の例示的な仮想シーンであるシーンC’を示す。仮想シーンであるシーンC’は、廊下の両側にあるゲストルームにアクセスするためのドア付きの廊下を示す。オプションの一部(例えば、ゲストルームへのドア)は、図3Cに示した視覚的角度からは完全に見えない場合がある。しかしながら、仮想シーンC’内の視覚的オプションに関連付けられた仮想シーンのコンテンツは、ユーザが視覚的オプションのそれぞれ1つとのインタラクションを行う場合にユーザにとって容易に利用可能にする必要がある。ユーザが仮想シーンとのインタラクションを行う(例えば、頭をゲストルームへのドアの方向に動かすか、または特定のゲストルームのドアに向かって移動するか、または視覚的オプションに向かって手を伸長させる)とき、そのアクションがシーンC’内の視覚的オプションに対する選択が近いことを示しているかどうかを判定するためにユーザのインタラクティビティが評価される。ユーザは、追跡可能なウェアラブルデバイスを着用していてもよく、または着用していなくてもよい。インタラクション予測器119は、HMD内に組み込まれたセンサを使用して、またはHMDの外部にあるセンサを使用して、またはユーザの手に着用されたウェアラブルデバイスを追跡することによってユーザの手を追跡してもよい。視覚的オプションに対する選択が近いことを識別する、予測されたインタラクションの評価に基づき、対応する仮想シーンのコンテンツが、ユーザのインタラクションのためにプリロードされる。
高層階フロアの仮想シーンC’の視覚的オプション(例えば、ゲストルームまたはスイートルームへのドア)を提供することに加えて、シーンC’に固有の1つ以上の追加の視覚的オプションも提供される。例えば、図3Cに示した、仮想シーンであるシーンC’は、他のフロア階(ビルの階数及びユーザが自分のいることが分かった現在の階に応じた、高層階フロアと低層階フロアとの両方)にアクセスするためのエレベータオプション305a及びフローティングメニューオプション311aを含む。このフローティングメニューオプションは、ホームオプション及びお気に入りのシーンオプションなどの、その中に提供された各種のオプションにアクセスするために使用され得る。図3Cに提供された例では、フローティングメニューオプション311aは、シーンA内に提供されたオプションよりも少ないオプションを提供するように示されている。しかしながら、同じ量及び種類のオプション、またはより少ないか、もしくはより多い数もしくは種類のオプションがフローティングメニューオプション311a内に提供されてもよい。
図3Dは、図3AのシーンA内に提供されたエレベータオプション305を使用してアクセスされ得る別の例の仮想シーンであるシーンC’’305bを示す。仮想シーンであるシーンC’’は、ユーザが仮想シーンAからエレベータオプション305を選択してロビーよりも下の階にアクセスしたときの、高層ビルの(例えば、居住用集合住宅またはレストランもしくはホテルもしくはオフィスビルの)地下である。一例では、シーンAは、集合住宅またはレストランもしくはホテルもしくはオフィスビルであってもよく、ユーザは、下に向かうというエレベータオプション305を既に選択ずみであってもよい。あるいは、エレベータオプション305の代わりに、ユーザは、高層ビルのロビーから下に行くという階段オプションとのインタラクションを既に行っていてもよい。ユーザはまた、現在の仮想シーンであるシーンA303内で利用可能なエレベータオプション305または階段オプション以外の視覚的オプション(例えば、以前のシーン、次のシーン、お気に入りのシーン、最も難しいシーンなど)を選択して、地下シーンC’’305bにアクセスしてもよい。いずれの場合も、ユーザにはシーンC’’305bが提示されるが、これは未完成の地下階のビューである。地下シーンC’’または任意の他の仮想シーンにアクセスするための他の手法は、インタラクティブアプリケーションの進行、ユーザのスキルレベル、特定の勝利、またはこのような仮想シーンにアクセスするためにユーザにとって利用可能なツールに基づいていてもよい。シーンC’’は、このシーン内に描写された仮想地下シーンに固有の視覚的オプションを提供する。例えば、図3Dに提示されたビューの方向に提供された視覚的オプションは、上のフロアにアクセスするための一続きの階段311bを含み、このフロアは、ビルのロビーにアクセスするための1階であってもよい。地下はビルの最も低い部分であるため、さらに下に行くためのオプションは提供されない。さらに、シーンAから地下にアクセスするためにエレベータオプション305が使用されたことから、エレベータオプションはシーンC’’内にも提供される(図3Dには図示せず)。図3Dに示した例では、フローティングメニューオプションはのオプション数は、図3Aに提供されたオプション数よりも少ない。しかしながら、他の例では、フローティングメニューオプションは、高層ビルの外側の好ましい仮想シーンを含む任意の他の仮想シーンにユーザがアクセスできるように、追加のオプションを含むように提供されてもよい。プリローダモジュール115は、ユーザのインタラクションに間に合うようにインタラクティブアプリケーションの適切な仮想シーンを識別及びプリロードし、その仮想シーンは、インタラクティブアプリケーションへのアクセスを求める要求から、または対応する視覚的オプションに対する近くなされる選択から識別される。
プリローダモジュールが仮想シーンのコンテンツをどのように識別及びプリロードするかの詳細について以下に説明する。プリローダモジュール115は、複数のサブモジュールを連携させてインタラクティブアプリケーションの各種の仮想シーンの識別及びプリロードを支援することにより、視覚的シーンのうちのそれぞれ1つが、対応する視覚的オプションがユーザによって選択されたときにユーザのインタラクションに間に合うように完全にレンダリングされることを可能にする。プリローダモジュール115の仮想シーンセレクタ117は、インタラクティブアプリケーションにアクセスすることの要求に応答して、または現在の仮想シーンとは異なる仮想シーンにアクセスすることの要求に応答して、ユーザに提供するための仮想シーンを識別するために使用される。仮想シーンセレクタ117は、要求内で提供された情報を使用して、どの仮想シーンをユーザに提供するかを決定してもよい。要求は、ユーザがインタラクティブアプリケーションの先頭から開始することを望んでいることを示してもよい。このような場合、前のセッション中にユーザがアプリケーションを選択し、そのアプリケーションとのインタラクションを行い、インタラクティブアプリケーションの現在の状態がユーザについてのインタラクティブアプリケーションの使用履歴データに格納されている場合でも、仮想画面セレクタ117は、インタラクティブアプリケーションの第1の仮想シーンをサーバ上にロードし、第1の仮想シーンのコンテンツをレンダリングのためにクライアントデバイスに提供する。第1の仮想シーンは、図3に示したように、アプリケーションを設定するための最初のホームシーンであってもよく、または最初のホームシーンの直後の仮想シーンであってもよい。
あるいは、仮想シーンセレクタ117は、使用履歴データベースからインタラクティブアプリケーションの現在の状態を読み出し、その現在の状態に関する仮想シーンに関連する情報をロードのためにシーンローダ123に提供してもよい。履歴が存在しない場合、インタラクティブアプリケーションは先頭から開始される。
シーンローダ123は、シーンセレクタ117によって提供された仮想シーン情報を使用して、アプリケーションデータストア133内のアプリケーションに照会し、仮想シーンのコンテンツを取得する。仮想シーンのために取得されたコンテンツは、仮想シーンを実行するために必要なコード及びデータを含む。仮想シーンのコンテンツがロードされ、アプリケーションサーバ内のメモリ内にキャッシュされ、コードを実行するためにシーン実行エンジン125に信号が送信されることにより、ユーザのインタラクションのために仮想シーンをレンダリングすることが可能になる。仮想シーンからのコンテンツは、レンダリングのために、適切なAPIを使用してネットワーク110を経由してHMD104に転送される。コンテンツの一部として、仮想シーンのコンテンツに固有の1つ以上の視覚的オプションも読み出され、レンダリングのためにHMDに提供される。
仮想シーンにおけるユーザのインタラクションが追跡され、アプリケーションの進行に影響を与えるために使用される。インタラクション予測器119は、アプリケーションの仮想シーン内のユーザのインタラクティビティを継続的に処理して、仮想シーン内の特定の視覚的オプションへのユーザの関心を示すユーザのアクションを判定する。各アクションは、インタラクティブインジケータを識別する。例えば、ユーザが仮想シーンのコンテンツとのインタラクションを行うとき、特定の方向に頭を動かすユーザのアクションを使用して、視線インジケータを識別してもよい。同様に、仮想シーン内の特定のオブジェクト(例えば、視覚的オプション)に向かって移動するユーザのアクションは、移動インジケータなどを識別するために使用されてもよい。仮想シーン内のユーザのインタラクションに基づいて識別されたこれらのインジケータのそれぞれには、異なる重みが与えられてもよい。いくつかの実施形態では、時間的属性、位置属性などに基づいて異なる重みが各インタラクティブインジケータに与えられてもよい。例えば、視線インジケータには、ユーザの視線が特定の方向に継続した時間に基づいて異なる重みが与えられてもよい。その結果、ユーザの視線が特定の方向に長時間継続した場合、視線インジケータに与えられる重みを、ユーザが特定の視線方向に視線を向けた時間に対応するように徐々に増加させてもよい。同様に、ユーザが仮想シーン内で移動する場合、特定の方向の移動インジケータには、ユーザが特定の方向への移動を継続したことに基づき、さらには視覚的オプションに接近したことに基づき、異なる重みが与えられてもよい。ユーザが視覚的オプションに近づくほど、移動インジケータに与えられる重みが大きくなる。
図4は、インタラクション予測器モジュール119が、図3Aの仮想シーン内のユーザのインタラクティビティを経時的に監視し、ユーザのインタラクティビティから識別されたインタラクティブインジケータを評価することにより、視覚的オプションに対するユーザの近くなされる選択を予測して、対応する仮想シーンをユーザのインタラクションのためにプリロードする場合の一例を示す。インタラクション予測器119は、ユーザの各種のアクションから識別されたインタラクションインジケータを評価する。次いで、このインタラクション予測器は、時間の経過に伴って仮想シーン内のユーザのインタラクティビティの間に検出されたユーザのアクションに基づき、異なるインタラクティブインジケータについて異なるアクションの重みを与える。次いで、インタラクション予測器119は、仮想シーン内の特定の視覚的オプションに対する選択が近いことを表す閾値にインタラクティブインジケータが近づくときを判定する。ここで、特定の視覚的オプションは第2の仮想シーンに関連付けられている。仮想シーン内の各視覚的オプションは、アプリケーションの個別の仮想シーンに関連付けられ、その仮想シーンへのアクセスを提供することに留意されるべきである。例えば、図3Aの仮想シーンを描写した図4を参照すると、視覚的オプション304はシーンBへのアクセスを提供し、視覚的オプション305はシーンCへのアクセスを提供し、視覚的オプション306はシーンDへのアクセスを提供し、視覚的オプション307はシーンEへのアクセスを提供し、他も同様である。
いくつかの実施形態では、近くなされる選択は、複数のインタラクティブインジケータのそれぞれに関連付けられたアクションの重みを累積することにより、その累積的なアクションの重みが仮想シーン内の視覚的オプションに対するユーザの選択が近いことを判定する閾値に近づくときを判定するために計算される。インタラクション予測器モジュール119は、閾値計算器エンジン121を連携させて、インタラクション予測器モジュール119によって識別された各種のインタラクティブインジケータを累算し、累算されたインタラクティブインジケータが閾値に近づくときを判定してもよい。図4に示すように、インタラクション予測器モジュール119は、時刻t0にて、ユーザの視線方向が、例えば、仮想シーンA 303内の視覚的オプション305(エレベータの画像)に向けられていることを検出する。さらに、インタラクション予測器モジュール119は、ユーザが視覚的オプション305に向かって移動していることを検出してもよい。この情報は、インタラクティブインジケータの累積表現を生成する閾値計算器エンジン121に提供される。その結果、時間t0について、閾値計算器エンジン121によって生成された累積的なインタラクティブインジケータは、(G1W1+Mw1)と表される。式中、G1は、方向1の(すなわち、視覚的オプション305に向かう)視線のインタラクティビティを表し、w1は、時刻t0における視線のインタラクティビティに与えられた重みであり、M1は、方向1の移動のインタラクティビティである。時刻t1にて、インタラクション予測器モジュール119は、視線活動及び移動活動を含むユーザのインタラクティビティが継続して視覚的オプション305に向けられていることを検出する。さらに、時刻t1にて、ユーザは、視覚的オプション305に向かう方向1に手を伸長させた。その結果、時刻t1にて、閾値計算器エンジン121によって生成された累積的なインタラクティブインジケータは、(G1w2+M1w2+HE1w1)と表される。式中、HE1は、方向1に手を伸長させた活動を表し、w2は、時刻t1における各種の活動に与えられた重みである。各インタラクティブインジケータに与えられる重みは、仮想シーンとのユーザのインタラクティビティの間、インタラクティブインジケータのそれぞれ1つが何時に識別されたかに基づいていてもよい。視線のインタラクティビティと移動のインタラクティビティとの両方が時間t0にて識別されたため、両方のインタラクティブインジケータには、時刻t0について同一の重みw1が与えられる。
各インタラクティブインジケータには各時刻にて同一の重みが与えられているが、それらは単なる例として提供されていることに留意されるべきである。評価中の各累積期間について、より大きいか、またはより小さい重みが、異なるインタラクティブインジケータに与えられてもよい。例えば、視線インジケータに与えられた重みは、移動インジケータに与えられた重みよりも大きい場合があり、逆もまた同様である。従って、インタラクション予測器119は、いくつかの既定の規則に従って、仮想シーン内のユーザのインタラクティビティから識別された各インタラクティブインジケータのアクションの重みを識別及び調整してもよい。インタラクション予測器モジュール119は、仮想シーンとのユーザのインタラクションの間、インタラクティブインジケータを継続して評価する。その評価に基づき、時刻t2にて、閾値計算器エンジン121によって生成された累積的なインタラクティブインジケータは、(G1w3+M1w3+HE1w2)と表され得る。式中、w3は、これらのインジケータのそれぞれが時刻t3にて方向1のままであるため、視線及び移動インジケータに与えられた重みである。手伸長インジケータは、視線インジケータ及び移動インジケータよりも後の時刻に検出されたため、手伸長インジケータに与えられた重みは異なることに留意されたい。いくつかの実施形態では、手伸長インジケータが最初に検出されたときにそれに与えられる重みは、視線及び/または移動インジケータが最初に検出されたときと同じであってもよい。
インタラクティブインジケータの累積値を計算することに加えて、閾値計算器エンジン121は、累積的なアクションの重みを比較して、各種のインタラクティブインジケータの累積的なアクションの重みが既定の閾値に近づいたか否かを判定する。その評価に基づき、各種のインタラクティブインジケータの累積的なアクションの重みが時刻t2にて既定の閾値に到達した場合があり、ユーザにより近くなされる選択が視覚的オプション305であると示していることが判定され得る。これに応答して、閾値計算器エンジン121は、図4において、視覚的オプション305がユーザにより近く選択される対象であったことを示すために、インタラクション予測器119に信号を送信する。それに応じて、視覚的オプション305に関連付けられた第2の仮想シーンを選択し、ロードし、キャッシュし、準備しておくことにより、プリローダモジュールは、ユーザとのインタラクションのために第2の仮想シーンを完全にレンダリングすることを可能にするために、視覚的オプション305がユーザによって選択されたときに第2の仮想シーンのコードを実行することができる。従って、その評価に基づき、ユーザがインタラクションを行っている仮想シーン内で利用可能である様々な視覚的オプションに関連付けられた各種の仮想シーンは、対応する仮想シーンへの適時のアクセスをユーザに提供するために各種の準備完了状態に保たれる。各種の準備完了状態は、例えば、選択、ロード、キャッシュ及び実行を含む。前述の状態は単なる例であり、より少ないか、またはより多い数の状態が考察されてもよい。
仮想シーンである図3AのシーンAは、ユーザのインタラクションのために現在アクセスされているため、シーンAは「実行」状態にある。上記のように、シーンAは、複数の仮想シーン(例えば、シーンB、C、D、E、F及びG)にアクセスするための各種の視覚的オプションを提供する。その結果、複数の仮想シーンのそれぞれは、「選択」状態にある。仮想シーンAにおけるユーザのインタラクションの間に検出されたインタラクティブインジケータの評価に基づき、仮想シーンAからアクセスすることができる複数の仮想シーンのそれぞれの状態が動的に更新される。インタラクティブインジケータの評価、及び検出されたインタラクティブインジケータに関連付けられたアクションの重みの累積は、確率グラフを生成するために使用される。確率グラフは、仮想シーンAからアクセスすることができる各種の仮想シーンの状態の視覚的表現を提供する。ここで状態は、各種の視覚的オプションに向けられた合図を介してユーザによって表現された変化しつつある関心に一致するように時間の経過に伴って動的に調整される。
図5A~図5Fは、図3AのシーンA内で利用可能である様々な視覚的オプションに向けてユーザによって提供された合図の評価に基づいてプロットされた確率グラフの例を示す。図5Aは、仮想シーンAの視覚的合図が1回目に評価された後の確率グラフを示す。インタラクティブアプリケーションのシーンAに関連付けられた視覚的オプションが選択される確率は、シーンAが既に選択されており、かつユーザのインタラクション用のコンテンツを提供するように現在実行されているため、最も高くなる。加えて、各種の視覚的オプションを通じてシーンAから直接アクセスすることができる仮想シーンは、少なくとも選択状態に設定される。選択状態は、仮想シーンA内に提供された視覚的オプションとのインタラクションを行うことにより、ユーザがそれらの仮想シーンのうちの任意の1つにいつでもアクセスできることを示す。従って、仮想シーンB、C、D E、Fn、Fp及びGは、少なくとも選択状態にある。加えて、仮想シーンH、I及びJは、低い確率スコアを有するように示されている。というのも、これらの仮想シーンに直接アクセスするための視覚的オプションは、シーンA内に全く提供されていないためである。これらの仮想シーンは、他の仮想シーンを通じてアクセス可能であってもよく、またはユーザにとって利用可能なツールまたはオプションなどの他の手段を通じてアクセスすることができる。
さらに、ユーザにより近くなされる選択は、仮想シーンB(例えば、ファンゾーン仮想シーン)に関連付けられた視覚的オプション304に向けられていることに留意されたい。1回目の評価に基づき、インタラクション予測器119は、視覚的オプション304に関連付けられた仮想シーンに関連する情報を仮想シーンセレクタ117に提供する。仮想シーンセレクタ117は、視覚的オプション304に関連付けられた仮想シーンであるシーンBを識別し、この情報をシーンローダ123に提供して、シーンBのインスタンスを識別し、シーンB用のコードをメモリ内にプリロードし、それをキャッシュして、仮想シーンBの準備を整える。シーンBは、ここで「準備」状態に設定される。
仮想シーンAにおいてユーザのインタラクティブインジケータを評価することに加えて、インタラクション予測器119は、ユーザが仮想シーンA内にいるときにユーザがインタラクションを行うことを好む任意の仮想シーンを決定するために、ユーザの使用履歴データベース135に照会するように使用履歴分析器127モジュールに信号を送ってもよい。その照会に基づき、使用履歴分析器127は、ユーザが仮想シーンA内にいるときにユーザが通常インタラクションを行うフローティングメニュー311から、シーンDに関連付けられた視覚的オプション306を識別してもよい。
使用履歴分析器127によって提供された情報は仮想シーンセレクタ117にも提供され、この仮想シーンセレクタは、シーンDに関連する情報をシーンローダ123に転送する。それにより、シーンローダ123は、シーンDのインスタンスを識別し、シーンD用のコードをメモリ内にプリロードし、それをキャッシュし、仮想シーンDの準備を整えることができる。その結果、仮想シーンBに加えて、仮想シーンDも準備状態に保たれる。従って、1回目の評価の後、仮想シーンAは実行状態にあり、仮想シーンB及びDは準備状態にあり、他方、仮想シーンC、E、Fn、Fp及びGは選択状態にある。
図5Bは、視覚的合図の2回目の評価の後のシーンAの確率グラフを示す。2回目の評価中、インタラクション予測器119は、シーンBに関連付けられた視覚的オプション304からシーンCに関連付けられた視覚的オプション305への、インタラクティブインジケータを介して表現されたユーザの興味の移行を検出する。例えば、図4においてG2として移行が識別され、その移行には重みw1が与えられる。図4に示した例では、視線は視覚的オプション305から視覚的オプション304に移行するように示されているが、視覚的オプション304から視覚的オプション305への同じ種類の移行が検出されてもよい。その結果、確率グラフは、シーンBの累積スコアの下方への移行とシーンCの累積スコアの上方への移行を示すように調整される。シーンA及びシーンDの累積スコアは、図5Bに示すように引き続き同一のレベルにある。2回目の評価中に検出されたユーザの関心の移行により、仮想シーンB及びCの状態が調整される。いくつかの実施形態では、状態の調整により、シーンBのコード及びデータがメモリからアンロードされることによってシーンBが準備状態から選択状態にダウングレードされ、同時にシーンCのコード及びデータがメモリ内にアップロードされることによってシーンCが選択状態から準備状態に上昇する。このような調整は、インタラクティブインジケータの評価に基づいて様々な仮想シーンのコンテンツが頻繁にメモリ内にロードされ、メモリからアンロードされるように見える場合があるが、各評価が既定の閾値で定義された期間に及ぶため、そのような調整の頻度は低い。既定の閾値で定義された期間は、評価が各種の視覚的オプションにおけるユーザの長時間にわたる関心を取り込み、ユーザの一時的な関心を取り込まないことを保証する。これはまた、不要なコード及びデータをメモリから除去しつつ必要なコード及びデータのみが適切な時点でメモリ内にロードされているため、システムの処理リソースが最適に使用されることも保証する。
図5Cは、3回目の評価後、ユーザがシーンAからのコンテンツとのインタラクションを行っているときの確率グラフを示す。この図では、ユーザの合図は、現在、シーンCに関連付けられた視覚的オプション305ではなく、シーンGに関連付けられた視覚的オプション310に向けられている。その結果、シーンGの計算された累積スコアが増加し、シーンCの累積スコアが減少する。シーンG及びシーンCの計算された累積スコアが移行することにより、仮想シーンCがメモリからアンロードされて選択状態にある間、仮想シーンGが現在ロードされ、準備できていることを示すために、シーンG及びシーンCの各状態が確率グラフにおいて動的に調整される。
ユーザが仮想シーンAのコンテンツとのインタラクションを行っている間、各種の視覚的オプションにおけるユーザの合図を継続して監視することにより、累積スコアに対する、従って視覚的オプションのそれぞれ1つに関連付けられた各種の仮想シーンのステータスに対する調整が生じ得る。図5Dは、仮想シーンA内のユーザのインタラクティビティの間に検出された各種の視覚的インジケータの計算された累積スコアに基づき、4回目の評価の後に仮想シーンAからアクセスすることができる各種の仮想シーンのステータスを示す。図5Dに示した4回目の評価の後の確率グラフは、図5Aに示した1回目の評価の後の確率グラフと類似している。仮想シーンのステータスは、アクセスのための準備が完了した各種の状態を識別する。
図5Eは、5回目の評価の後の確率グラフを示す。5回目の評価の後、シーンA内の視覚的オプション304を選択することによってユーザが仮想シーンBにアクセスしたと判定される。その結果、5回目の評価に従って、仮想シーンAの累積スコアは下がり、仮想シーンBの累積スコアは上がる。これにより、シーンAのステータスが「実行」状態から「準備」状態にダウングレードされ、仮想シーンBのステータスが「準備」状態から「実行」状態に上昇する。仮想シーンAは、所定の期間、またはユーザがインタラクティブアプリケーション内にさらに進行するまで、または仮想シーンBから仮想シーンAに関連付けられた視覚的オプションにアクセスするユーザの頻度が高いことが使用履歴から判定された場合、準備状態に維持されてもよい。一方、仮想シーンBから仮想シーンAに関連付けられた視覚的オプションにアクセスするユーザの頻度が低い場合、仮想シーンAのステータスは、「実行」状態から「選択」状態にダウングレードされてもよい。
仮想シーンのうちの特定の1つに対するユーザの選択を使用履歴内に維持することに加えて、使用履歴はまた、様々なユーザについての使用選択を維持してもよい。様々なユーザの使用履歴をインタラクティブアプリケーションの仮想シーンについて取得し、ユーザのインタラクションのために仮想シーンのうちの特定の1つを用意するために使用することができる。例えば、ユーザは、インタラクティブアプリケーションに初めてアクセスしていてもよく、インタラクティブアプリケーションのための使用履歴を全く持っていない。結果として、様々なユーザの使用履歴は、ユーザについて各種の準備完了段階にて各種の仮想シーンを得るために使用されてもよい。
ユーザがアプリケーション内で1つの仮想シーンから別の仮想シーンに進行するとき、ユーザは、以前にアクセスした仮想シーンのうちの特定の1つにアクセスすることができない場合がある。これは、現在の仮想シーンから以前にアクセスした仮想シーンのうちの特定の1つへの直接リンク(すなわち、視覚的オプション)の欠如による場合がある。この場合、以前にアクセスされた仮想シーンは非連続的である。その結果、例えば、図5A~図5Dの確率グラフ内の仮想シーンH~Jに示されているように、現在の仮想シーンのアクセス中、そのような仮想シーンの累積スコアは低下し、そのような仮想シーンのステータスは「利用不可」に設定される。利用不可に設定された仮想シーンは、メモリ内に保持されるか、または他の仮想シーン用の空間を確保するためにメモリからアンロードされてもよい。
他の実施形態では、仮想シーンBは、以前は仮想シーンAからアクセス可能ではなかった仮想シーン(例えば、仮想シーンH~J)のうちの特定の1つへの視覚的オプションを介したアクセスを提供してもよい。その結果、これらの仮想シーン(すなわち、仮想シーンH~J)は、「選択」状態にあるように示される。同様に、仮想シーンBは、仮想シーンAからアクセス可能であった仮想シーンのうちの他の特定のいくつかへのアクセスを提供しなくてもよい。その結果、それらの仮想シーン(例えば、仮想シーンE、Fn、Fp及びG)は、図5Eに示したように、アンロードされるか、または「利用不可」状態に設定されるかのいずれかとなる。
図5Fは、6回目の評価の後のユーザの例示的な確率グラフを示す。示されているように、ユーザは、仮想シーンBに継続してアクセスしている。その結果、仮想シーンBは実行しているように示される。図5Fを参照して論じた仮想シーンBは、図5Fの仮想シーンBが図3Bに示されていない追加の視覚的オプションを含むように示されているため、図3Bの仮想シーンBとはわずかに異なることに留意されたい。仮想シーンBから仮想シーンのうちの特定の1つにユーザによってアクセスされる頻度に基づくと、仮想シーンA及びDについて計算された累積スコアは高い。その結果、仮想シーンA及びDがロードされ、「準備」状態にあるように示される。仮想シーンB内で利用可能な視覚的オプションに基づき、仮想シーンC、Fn、Fp、H及びJは、「選択」状態にあるように示される。さらに、仮想シーンB内のユーザのインタラクティビティから検出されたインタラクティブインジケータの評価に基づき、仮想シーンIの累積スコアが高くなるように計算され、仮想シーンIがロードされ、「準備」状態に設定される。従って、現在の仮想シーンからアクセスすることができる各種の仮想シーンの累積スコアが動的に計算され、計算された累積スコアに従って仮想シーンの状態が調整される。従って、ユーザが特定の仮想シーンにアクセスするために視覚的オプションを選択したとき、その特定の仮想シーンが実行のために準備及びロードされ、そのコンテンツが遅延を伴わずにユーザにとって利用可能となる。これにより、システムは、現時点において必要な仮想シーンのうちの特定のいくつかの必要なコード及びデータのみをロードし、現時点で必要のない仮想シーンのうちの特定の他のいくつかのコード及びデータをロードしないようにすることができる。
図6A及び図6Bは、いくつかの実施形態における、アプリケーションの仮想シーン内の各種のリンクの例を示す。アプリケーションは、複数の仮想シーンを含んでもよく、連続する各仮想シーンは、以前の仮想シーン内で提供された視覚的オプションを使用して、またはアプリケーションの現在の状態に基づいてアクセスされる。図6Aは、一実施形態における、連続的な仮想シーンへのアクセスが現在の仮想シーンから提供されるアプリケーションの各種の仮想シーンの簡略リンケージグラフを示す。例えば、仮想シーンB、C及びDには仮想シーンAからアクセスすることができ、逆もまた同様である。仮想シーンJ及びHには、仮想シーンBからアクセスすることができ、逆もまた同様であり、仮想シーンG及びIには仮想シーンCからアクセスすることができ、逆もまた同様であり、仮想シーンE及びFには仮想シーンDからアクセスすることができ、逆もまた同様である。
一方、図6Bは、他の実施形態における、アプリケーションの各種の仮想シーンのより相互に関連したリンケージグラフを示す。この実施形態では、連続する仮想シーンまたは以前の仮想シーンへのアクセスを有することに加えて、連続的または非連続的である1つ以上の仮想シーンから各種の仮想シーンにアクセスすることができる。例えば、仮想シーンAは、仮想シーンB、C、D、E、F及びGへのアクセスを提供し、これらの仮想シーンのそれぞれは、仮想シーンAへのアクセスを提供する。仮想シーンBは、仮想シーンA、D、E、F、H、I及びJへのアクセスを提供し、これらの仮想シーンは、仮想シーンBへのアクセスを提供する。仮想シーンCは、仮想シーンA、D及びHへのアクセスを提供し、これらの仮想シーンは、仮想シーンCへのアクセスを提供する。仮想シーンDは、仮想シーンA、B、C及びJへのアクセスを提供する。仮想シーンE及びFは、それぞれ、仮想シーンA及びBへのアクセスを提供する。仮想シーンIは、仮想シーンLへのアクセスを提供し、逆もまた同様である。ユーザが各種の仮想シーンを通じて進行し、より遠くに移動し、特定の仮想シーンからより遠くに離れるにつれて、その特定の仮想シーンへの直接アクセスがより制限されるようになるか、または存在しなくなる。そのようなシナリオでは、特定の仮想シーンは、ユーザがいる現在の仮想シーン内で利用可能な、ボタン、オブジェクトの画像、シーンの画像、フローティングメニューなどの視覚的オプションを介してアクセスされる。視覚的オプションにより、ユーザは1つの仮想シーンから別の連続的または非連続的な仮想シーンにジャンプすることができる。様々な仮想シーンに関連付けられた視覚的オプションをユーザが選択した時点で様々な仮想シーンからコンテンツがユーザに提供されることを保証するために、プリローダモジュールは、インタラクティブインジケータを事前に評価し、適切なコンテンツを適時にプリロードする。このような事前の評価に基づき、ユーザの体験が損なわれることなくシステムリソースが保存される。
図7Aは、一実施形態における、インタラクティブアプリケーションの仮想シーンをプリロードするために使用される各種の方法動作を示す。方法は動作610にて開始され、このとき、インタラクティブアプリケーションの選択がサーバにて受信される。インタラクティブアプリケーションは、複数の仮想シーンを含んでもよく、連続する各仮想シーンは、インタラクティブアプリケーションの自然な経過を通じて、または仮想シーン内に提供された視覚的オプションを通じてアクセスされる。インタラクティブアプリケーションの選択に応答して、インタラクティブアプリケーションの仮想シーンのコンテンツが識別され、ヘッドマウントディスプレイにてレンダリングするために提供される。仮想シーンを実行するためのコード及びデータがアップロードされ、キャッシュされ、実行され、実行からのコンテンツがレンダリングのために提供される。仮想シーンにおけるユーザのインタラクティビティは、仮想シーン内の視覚的オプションとの予測されたインタラクションを識別するために処理される。処理は、動作620に示したように、視覚的オプションのうちの1つに対する近くなされる選択を示すアクションの閾値に到達するまで継続する。インタラクティブインジケータの評価では、仮想シーン内の視覚的オプションのうちの特定の1つに対するユーザによる選択の可能性を決定するために、視覚的オプションのそれぞれにおける重み付けされたアクションについて累積スコアを計算する。
操作630に示したように、その評価に基づき、選択が近いと識別された視覚的オプションに関連付けられたインタラクティブアプリケーションの第2の仮想シーンがプリロードされる。動作640に示したように、第2の仮想シーンに関連付けられた視覚的オプションをユーザが選択したときにユーザが第2の仮想シーンのコンテンツにアクセスするように、プリロードされたコンテンツを使用して第2の仮想シーンが実行される。第2の仮想シーンをプリロードすることは、ユーザが視覚的オプションとのインタラクションを行って追加の仮想シーンを選択することができるように、第2の仮想シーンに固有の視覚的オプションをロードする。合図を評価し、適切な仮想シーンをプリロードするプロセスは、ユーザが仮想シーンとのインタラクションを継続するとき、及び現在のセッション中にインタラクティブアプリケーションの各種の仮想シーンを通じてユーザが進行するときに継続する。
図7Bは、他の実施形態における、インタラクティブアプリケーションの仮想シーンをプリロードするために使用される各種の方法動作を示す。方法は動作650にて開始され、このとき、インタラクティブアプリケーションの選択がサーバにて受信される。インタラクティブアプリケーションは、複数の仮想シーンを含み、各仮想シーンは、インタラクティブアプリケーションの自然な経過を通じて、または仮想シーン内に提供された視覚的オプションを通じてのいずれかでアクセスされる。インタラクティブアプリケーションの選択に応答して、インタラクティブアプリケーションの仮想シーンのコンテンツが識別され、選択を提供したユーザによって着用されたヘッドマウントディスプレイ上でレンダリングするために提供される。コンテンツは、アプリケーションの追加の仮想シーンにアクセスするための視覚的オプションを含む。
動作655に示したように、仮想シーンを提供すると、第2の仮想シーンを識別してプリロードするように、アプリケーションのために維持されたユーザの使用履歴が分析される。使用履歴は、ユーザがアクセスした仮想シーン、及び仮想シーンが選択されたモード(例えば、自然な進行または視覚的オプションの選択)の全てを識別するアプリケーションのユーザの前のインタラクティブセッションを維持する。分析に基づき、前のインタラクティブセッション中にユーザによって以前に選択されなかった仮想シーン内の特定の視覚的オプションに関連付けられた第2の仮想シーンが識別されてもよい。ユーザによって選択され得なかった2つ以上の視覚的オプションが仮想シーン内に存在する場合があり、分析は、現在もしくは前のインタラクティブセッション中のユーザが従う各種の視覚的オプションに対する選択の順序に基づいて特定の視覚的オプションに関連付けられた第2の仮想シーンを識別してもよく、または複数のユーザが従う各種の視覚的オプションに対する選択の順序に基づいていてもよく、または選択されなかった視覚的オプションからランダムに選択されてもよい。複数のユーザは、ユーザの社会的な知り合いであってもよく、またはユーザに関連付けられた1つ以上の属性に基づいて識別されてもよい。あるいは、分析に基づき、ユーザが頻繁にアクセスした仮想シーン内の視覚的オプションが識別されてもよく、頻繁にアクセスされた視覚的オプションに関連付けられた第2の仮想シーンが識別される。
動作660に示したように、第2の仮想シーンを実行するためのコード及びデータは、仮想シーンのコンテンツとのユーザの現在のインタラクションの間の第2の仮想シーンに関連付けられた第1の視覚的オプションに対する選択が近いとの予測に基づいてプリロードされる。動作665に示したように、視覚的オプションのうちの特定の1つについて、仮想シーンとのユーザのインタラクションの間に検出された複数のインタラクティブインジケータのそれぞれに与えられたアクションの重みがアクションの重みの閾値に到達するまで、仮想シーン内のユーザのインタラクティビティが評価される。インタラクティブインジケータについて計算された累積スコアは、視覚的オプションのうちの特定の1つにユーザが表現した関心を示す。視覚的オプションの一致が存在するかどうかを判定するために、近く選択されると識別された視覚的オプションのうちの特定の1つが、プリロードされた仮想シーンに関連付けられた第1の視覚的オプションと比較される。
その判定に基づき、動作675に示したように、第1の視覚的オプションがユーザによって選択されたとき、プリロードされた第2の仮想シーンが、ユーザのインタラクションのために第2の仮想シーンの完全なレンダリングを可能にするためにプリロードされたコンテンツを使用して実行される。第2の仮想シーンのプリロードでは、ユーザが第2の仮想シーン内の視覚的オプションとのインタラクションを行って追加の仮想シーンにアクセスできるようにするために、第2の仮想シーンに固有の視覚的オプションをロードする。合図を評価し、適切な仮想シーンをロードするプロセスは、ユーザが仮想シーンとのインタラクションを行うとき、及び現在のセッション中にインタラクティブアプリケーションの各種の仮想シーンを通じてユーザが進行するときに継続する。
本明細書で説明される各種の実施形態は、インタラクティブアプリケーションの仮想シーンとのユーザのインタラクションの間に検出されたインタラクティブインジケータを使用して仮想シーンのうちの特定の1つにユーザが表現した関心を検出すること、及びユーザのインタラクションのためにプリロードされた特定の仮想シーンに関連付けられた視覚的オプションをユーザが選択することを予想して、特定の仮想シーンを先にプリロードする。例えば、オブジェクトに向けたユーザの関心は、通常、オブジェクトに向けられたユーザの特定のインタラクティブインジケータを単に観察及び評価することにより、ユーザが実際にそのオブジェクトを選択する前に判断することができる。例えば、ユーザは、単に、オブジェクトの方向に視線を向けること、もしくはオブジェクトに向かって、もしくはオブジェクトの方向に移動すること、または仮想シーンへと手を伸長させること、コントローラのトリガなどにより、オブジェクトを選択せずにオブジェクトに対する関心を表現してもよい。このようなインジケータは、オブジェクトへのユーザの関心を判断するために評価することができる。本明細書で論じられる各種の実施形態では、仮想シーン内のユーザのインタラクションから検出されたインジケータに基づき、特定の視覚的オプションに関連付けられた特定の仮想シーンをプリロードし、キャッシュし、準備しておく。その結果、特定の仮想シーンにアクセスするための視覚的オプションをユーザが実際に選択した場合、その特定の仮想シーンは既に実行されているため、ユーザが待機する必要なく、さらにはシステムのコンピューティングリソースに不要な負担をかけることなく、仮想シーンのコンテンツへのアクセスを適時的にユーザに提供することができる。各種の実施形態の他の利点は当業者にとって明らかであろう。
図8を参照すると、本発明の実施形態に従った、ヘッドマウントディスプレイ104の構成要素を示す図が示されている。ヘッドマウントディスプレイ104は、プログラム命令を実行するためのプロセッサ700を含む。メモリ702は、ストレージ目的のために提供され、揮発性メモリと不揮発性メモリとの両方を含んでもよい。ユーザが見ることができる視覚的インタフェースを提供するディスプレイ704が含まれる。ヘッドマウントディスプレイ104用の電源としてバッテリ706が提供される。動き検出モジュール708は、磁力計710、加速度計712及びジャイロスコープ714などの、様々な種類の動き検知ハードウェアのいずれかを含んでもよい。
加速度計は、加速度及び重力に誘起された反力を測定するためのデバイスである。単軸及び多軸モデルは、異なる方向における加速度の大きさ及び方向を検出するために利用可能である。加速度計を使用して、傾き、振動及び衝撃を検知する。一実施形態では、3つの加速度計712を使用して2つの角度(ワールド空間ピッチ及びワールド空間ロール)についての絶対参照を与える、重力の方向を提供する。
磁力計は、ヘッドマウントディスプレイの付近の磁場の強さ及び方向を測定する。一実施形態では、3つの磁力計710は、ヘッドマウントディスプレイ内で使用され、ワールド空間ヨー角度についての絶対参照を保証する。一実施形態では、磁力計は、±80マイクロテスラである、地磁気にわたるように設計される。磁力計は、金属の影響を受け、実際のヨーに関して単調であるヨー測定を提供する。磁場は、環境内の金属により歪む場合があり、これによってヨー測定に歪みが生じる。必要であれば、この歪みは、ジャイロスコープまたはカメラなどの他のセンサからの情報を使用して較正することができる。一実施形態では、加速度計712は、磁力計710と共に使用され、ヘッドマウントディスプレイ104の傾き及び方位を取得する。
ジャイロスコープは、角運動量の原理に基づき、向きを測定または維持するためのデバイスである。一実施形態では、3つのジャイロスコープ714は、慣性検知に基づいてそれぞれの軸(x、y及びz)にわたる動きについての情報を提供する。ジャイロスコープは、高速回転を検出する際に有用である。しかしながら、ジャイロスコープは、絶対参照が存在しなくても、経時的にドリフトする可能性がある。これは、ジャイロスコープを定期的にリセットすることを必要とするが、これは、オブジェクトの視覚追跡、加速度計、磁力計などに基づく位置/向きの決定などの、他の利用可能な情報を使用して行うことが可能である。
実環境の画像及び画像ストリームを取り込むためにカメラ716が提供される。後ろ向きのカメラ(ユーザがヘッドマウントディスプレイ104のディスプレイを見ているときにユーザから離れる方に向けられる)、及び前向きのカメラ(ユーザがヘッドマウントディスプレイ104のディスプレイを見ているときにユーザに向けられる)を含む、2つ以上のカメラがヘッドマウントディスプレイ104に含まれてもよい。加えて、深度カメラ718が、実環境におけるオブジェクトの深度情報を検知するためにヘッドマウントディスプレイ104に含まれてもよい。
ヘッドマウントディスプレイ104は、オーディオ出力を提供するためのスピーカ720を含む。また、周囲環境からの音、ユーザによって発せられた音声などを含む、実環境からの音を取り込むためにマイクロホン722が含まれてもよい。ヘッドマウントディスプレイ104は、触覚フィードバックをユーザに提供するための触覚フィードバックモジュール724を含む。一実施形態では、触覚フィードバックモジュール724は、触覚フィードバックをユーザに提供するように、ヘッドマウントディスプレイ104の動き及び/または振動を生じさせることが可能である。
LED726は、ヘッドマウントディスプレイ104のステータスの視覚的インジケータとして提供される。例えば、LEDは、バッテリレベル、電源投入などを示してもよい。カードリーダ728は、ヘッドマウントディスプレイ104がメモリカードとの間で情報を読み出し、書き込むことを可能にするために提供される。周辺デバイスの接続、または他のポータブルデバイス、コンピュータなどの他のデバイスへの接続を可能にするためのインタフェースの一例としてUSBインタフェース730が含まれる。ヘッドマウントディスプレイ104の各種の実施形態では、様々な種類のインタフェースのいずれかが、ヘッドマウントディスプレイ104のより高い接続性を可能にするために含まれてもよい。
WiFiモジュール732は、無線ネットワーク技術を介してインターネットへの接続を可能にするために含まれる。また、ヘッドマウントディスプレイ104は、他のデバイスへの無線接続を可能にするためにBluetoothモジュール734を含む。また、他のデバイスへの接続のために通信リンク736が含まれてもよい。一実施形態では、通信リンク736は、無線通信のために赤外線伝送を利用する。他の実施形態では、通信リンク736は、他のデバイスとの通信のために各種の無線または有線伝送プロトコルのいずれかを利用してもよい。
入力ボタン/センサ738は、ユーザに入力インタフェースを提供するために含まれる。ボタン、タッチパッド、ジョイスティック、トラックボールなどの、様々な種類の入力インタフェースのいずれかが含まれてもよい。超音波技術によって他のデバイスとの通信を容易にするために、超音波通信モジュール740がヘッドマウントディスプレイ104に含まれてもよい。
バイオセンサ742は、ユーザからの生理学的データの検出を可能にするために含まれる。一実施形態では、バイオセンサ742は、ユーザの皮膚を通じてユーザの生体電気信号を検出するための1つ以上の乾燥電極を含む。
ヘッドマウントディスプレイ104の前述の構成要素は、ヘッドマウントディスプレイ104に含まれ得る単なる例示的な構成要素として説明されてきた。本発明の各種の実施形態では、ヘッドマウントディスプレイ104は、各種の前述の構成要素の一部を含んでもよく、含まなくてもよい。ヘッドマウントディスプレイ104の実施形態は、本明細書に説明されるような本発明の態様を容易にする目的のために、ここでは説明されていないが、当該技術分野において既知である他の構成要素を追加で含んでもよい。
当業者は、本発明の各種の実施形態において、前述のハンドヘルドデバイスが各種のインタラクション機能を提供するためにディスプレイ上に表示されるインタラクティブアプリケーションと併せて利用され得ることを理解するであろう。本明細書で説明される例示的な実施形態は、単に例として提供されるものであり、限定として提供されるものではない。
図9は、本発明の各種の実施形態に従った、ゲームシステム800のブロック図である。ゲームシステム800は、ネットワーク815を介して1つ以上のクライアント810にビデオストリームを提供するように構成される。ネットワークは、図2に示したネットワーク110に類似している。ゲームシステム800は、通常、ビデオサーバシステム820及び任意選択のゲームサーバ825を含む。ビデオサーバシステム820は、最小限のサービス品質で1つ以上のクライアント810にビデオストリームを提供するように構成される。例えば、ビデオサーバシステム820は、ビデオゲーム内の状態または視点を変更するゲームコマンドを受信し、クライアント810に、この変更を直ちに反映する更新されたビデオストリームを、最小の遅延時間で提供してもよい。ビデオサーバシステム820は、未だ定義されていないフォーマットを含む、多種多様な代替ビデオフォーマットでビデオストリームを提供するように構成されてもよい。さらに、ビデオストリームは、多種多様なフレームレートでユーザに提示するように構成されたビデオフレームを含んでもよい。典型的なフレームレートは、毎秒30フレーム、毎秒60フレーム、及び毎秒820フレームである。ただし、本発明の他の実施形態には、より高いか、またはより低いフレームレートが含まれる。
本明細書で810A、810Bなどと個々に呼ばれるクライアント810は、ヘッドマウントディスプレイ、端末、パーソナルコンピュータ、ゲームコンソール、タブレットコンピュータ、電話機、セットトップボックス、キオスク、無線デバイス、デジタルパッド、スタンドアロンデバイス、ハンドヘルドゲームプレイデバイス、及び/または同様のものを含んでもよい。典型的には、クライアント810は、符号化されたビデオストリームを受信し、ビデオストリームを復号し、得られたビデオをユーザ、例えば、ゲームのプレイヤーに提示するように構成される。符号化されたビデオストリームを受信するプロセス、及び/またはビデオストリームを復号するプロセスは、通常、個々のビデオフレームをクライアントの受信バッファに格納する。ビデオストリームは、クライアント810に統合されたディスプレイ上またはモニタもしくはテレビなどの別個のデバイス上でユーザに提示されてもよい。クライアント810は、任意選択で、2人以上のゲームプレイヤーをサポートするように構成される。例えば、ゲームコンソールは、2人、3人、4人またはそれ以上の同時プレイヤーをサポートするように構成されてもよい。これらのプレイヤーの各人が、別個のビデオストリームを受信してもよく、または単一のビデオストリームが、各プレイヤーについて特別に生成された、例えば、各プレイヤーの視点に基づいて生成されたフレームの領域を含んでもよい。クライアント810は、任意選択で地理的に分散される。ゲームシステム800に含まれるクライアントの数は、1つもしくは2つから数千、数万、またはそれ以上に大きく変動し得る。本明細書で使用される「ゲームプレイヤー」という用語は、ゲームをプレイする人を指すために使用され、「ゲームプレイデバイス」という用語は、ゲームをプレイするために使用されるデバイスを指すために使用される。いくつかの実施形態では、ゲームプレイデバイスは、ゲームの体験をユーザに届けるために協働する複数のコンピューティングデバイスを指し得る。例えば、ゲームコンソール及びHMDは、ビデオサーバシステム820と協働して、HMDを通して見えるゲームを供給してもよい。一実施形態では、ゲームコンソールは、ビデオサーバシステム820からビデオストリームを受信し、ゲームコンソールは、レンダリングのためにHMDにビデオストリームを転送するか、またはビデオストリームに更新する。
クライアント810は、ネットワーク815を介してビデオストリームを受信するように構成される。ネットワーク815は、電話網、インターネット、無線ネットワーク、電力線ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、プライベートネットワーク、及び/または同様のものを含む任意の種類の通信ネットワークであってもよい。典型的な実施形態では、ビデオストリームは、TCP/IPまたはUDP/IPなどの標準プロトコルを介して通信される。あるいは、ビデオストリームは、独自の規格を介して通信される。
クライアント810の典型的な例は、プロセッサ、不揮発性メモリ、ディスプレイ、復号ロジック、ネットワーク通信機能、及び入力デバイスを含むパーソナルコンピュータである。復号ロジックは、ハードウェア、ファームウェア、及び/またはコンピュータ可読媒体上に格納されたソフトウェアを含んでもよい。ビデオストリームを復号(及び符号化)するためのシステムは、当該技術分野において周知であり、使用される特定の符号化スキームに応じて異なる。
クライアント810は、必須ではないが、受信したビデオを修正するように構成されたシステムをさらに含んでもよい。例えば、クライアントは、さらなるレンダリングを実行すること、1つのビデオ画像を別のビデオ画像上にオーバーレイすること、ビデオ画像をクロッピングすること、及び/または同様のことを行うように構成されてもよい。例えば、クライアント810は、Iフレーム、Pフレーム及びBフレームなどの様々な種類のビデオフレームを受信し、これらのフレームを処理してユーザに表示するための画像にするように構成されてもよい。いくつかの実施形態では、クライアント810のメンバーは、ビデオストリームに対するさらなるレンダリング、シェーディング、3-Dへの変換、または同様の動作を実行するように構成される。クライアント810のメンバーは、任意選択で、2つ以上のオーディオまたはビデオストリームを受信するように構成される。クライアント810の入力デバイスは、例えば、片手用ゲームコントローラ、両手用ゲームコントローラ、ジェスチャ認識システム、視線認識システム、音声認識システム、キーボード、ジョイスティック、ポインティングデバイス、フォースフィードバックデバイス、動き及び/または位置検知デバイス、マウス、タッチスクリーン、ニューラルインタフェース、カメラ、未だ開発されていない入力デバイス、及び/または同様のものを含んでもよい。
クライアント810によって受信されたビデオストリーム(及び任意選択でオーディオストリーム)は、ビデオサーバシステム820によって生成され、提供される。本明細書の他の箇所でさらに説明されるように、このビデオストリームはビデオフレームを含む(さらに、オーディオストリームはオーディオフレームを含む)。ビデオフレームは、ユーザに表示される画像に有効に寄与する(例えば、それらは適切なデータ構造内にピクセル情報を含む)ように構成される。本明細書で使用する「ビデオフレーム」という用語は、ユーザに示される画像に寄与する、例えば、効果を与えるように構成された情報を主として含むフレームを指すために使用される。「ビデオフレーム」に関する本明細書の教示の大部分は、「オーディオフレーム」にも適用することができる。
クライアント810は、典型的には、ユーザからの入力を受信するように構成される。これらの入力は、ビデオゲームの状態を変化させるように、またはそれ以外の場合はゲームプレイに影響を与えるように構成されたゲームコマンドを含んでもよい。ゲームコマンドは、入力デバイスを使用して受信することができ、かつ/またはコンピューティング命令をクライアント810上で実行することによって自動的に生成されてもよい。受信したゲームコマンドは、クライアント810からネットワーク815を介してビデオサーバシステム820及び/またはゲームサーバ825に通信される。例えば、いくつかの実施形態では、ゲームコマンドは、ビデオサーバシステム820を介してゲームサーバ825に通信される。いくつかの実施形態では、ゲームコマンドの別個のコピーは、クライアント810からゲームサーバ825及びビデオサーバシステム820に通信される。ゲームコマンドの通信は、任意選択でコマンドの識別子に依存する。ゲームコマンドは、オーディオまたはビデオストリームをクライアント810Aに提供するために使用されたものとは異なる経路または通信チャネルを通じて、クライアント810Aから任意選択で通信される。
ゲームサーバ825は、任意選択で、ビデオサーバシステム820とは異なるエンティティによって運営される。例えば、ゲームサーバ825は、マルチプレイヤーゲームのパブリッシャーによって運営されてもよい。この例では、ビデオサーバシステム820は、任意選択で、ゲームサーバ825によってクライアントとして見られ、任意選択で、ゲームサーバ825の視点からは従来技術のゲームエンジンを実行する従来技術のクライアントであると見えるように構成される。ビデオサーバシステム820とゲームサーバ825との間の通信は、任意選択で、ネットワーク815を介して行われる。このように、ゲームサーバ825は、ゲームステート情報を複数のクライアントに送信する従来技術のマルチプレイヤーゲームサーバとすることができ、この複数のクライアントのうちの1つがゲームサーバシステム820である。ビデオサーバシステム820は、同時にゲームサーバ825の複数のインスタンスと通信するように構成されてもよい。例えば、ビデオサーバシステム820は、異なるユーザに複数の異なるビデオゲームを提供するように構成することができる。これらの異なるビデオゲームのそれぞれは、異なるゲームサーバ825によってサポートされてもよく、かつ/または異なるエンティティによって発行されてもよい。いくつかの実施形態では、ビデオサーバシステム820の地理的に分散されたいくつかのインスタンスは、複数の異なるユーザにゲームビデオを提供するように構成される。ビデオサーバシステム820のこれらのインスタンスのそれぞれは、ゲームサーバ825の同じインスタンスと通信してもよい。ビデオサーバシステム820と1つ以上のゲームサーバ825との間の通信は、任意選択で、専用の通信チャネルを介して行われる。例えば、ビデオサーバシステム820は、これらの2つのシステム間の通信に専用の高帯域幅チャネルを介してゲームサーバ825に接続されてもよい。
ビデオサーバシステム820は、少なくともビデオソース830、I/Oデバイス845、プロセッサ850、及び非一時的ストレージ855を含む。ビデオサーバシステム820は、1つのコンピューティングデバイスを含んでもよく、または複数のコンピューティングデバイス間に分散されてもよい。これらのコンピューティングデバイスは、任意選択で、ローカルエリアネットワークなどの通信システムを介して接続される。
ビデオソース830は、例えば、ストリーミングビデオまたは動画を形成する一連のビデオフレームといったビデオストリームを提供するように構成される。いくつかの実施形態では、ビデオソース830は、ビデオゲームエンジン及びレンダリングロジックを含む。ビデオゲームエンジンは、プレイヤーからゲームコマンドを受信し、受信したコマンドに基づいてビデオゲームのステートのコピーを維持するように構成される。このゲームステートは、ゲーム環境内のオブジェクトの位置、及び典型的には視点を含む。ゲームステートはまた、オブジェクトの特性、画像、色及び/またはテクスチャを含んでもよい。
ゲームステートは、典型的には、ゲームルールと、移動、回転、攻撃、フォーカス設定、インタラクション、使用及び/または同様のものなどのゲームコマンドとに基づいて維持される。ゲームエンジンの一部は、任意選択で、ゲームサーバ825内に配置される。ゲームサーバ825は、地理的に分散されたクライアントを使用する複数のプレイヤーから受信したゲームコマンドに基づき、ゲームのステートのコピーを維持してもよい。これらの場合、ゲームステートは、ゲームサーバ825によってビデオソース830に提供され、そこでゲームステートのコピーが格納され、レンダリングが実行される。ゲームサーバ825は、ネットワーク815を介してクライアント810から直接ゲームコマンドを受信してもよく、かつ/またはビデオサーバシステム820を介してゲームコマンドを受信してもよい。
ビデオソース830は、典型的には、レンダリングロジック、例えば、ハードウェア、ファームウェア、及び/またはストレージ855などのコンピュータ可読媒体上に格納されたソフトウェアなどを含む。このレンダリングロジックは、ゲームステートに基づいてビデオストリームのビデオフレームを作成するように構成される。レンダリングロジックの全部または一部は、任意選択で、グラフィックス処理ユニット(GPU)内に配置される。レンダリングロジックは、典型的には、ゲームステート及び視点に基づき、オブジェクト間の三次元空間関係を決定するように、かつ/または適切なテクスチャなどを適用するように構成された処理ステージを含む。レンダリングロジックは未処理のビデオを生成する。次いで、このビデオは、通常、クライアント810に通信する前に符号化される。例えば、未処理のビデオは、Adobe Flash(登録商標)規格、.wav、H.264、H.263、On2、VP6、VC-1、WMA、Huffyuv、Lagarith、MPG-x.Xvid.FFmpeg、x264、VP6-8、リアルビデオ、mp3などに従って符号化されてもよい。符号化プロセスは、リモートデバイス上のデコーダに供給するために任意選択でパッケージ化されたビデオストリームを生成する。ビデオストリームは、フレームサイズ及びフレームレートによって特徴付けられる。典型的なフレームサイズには、800×600、1280×720(例えば、720p)、1024×768が含まれるが、任意の他のフレームサイズが使用されてもよい。フレームレートは、1秒当たりのビデオフレームの数である。ビデオストリームは、異なる種類のビデオフレームを含んでもよい。例えば、H.264規格は、「P」フレーム及び「I」フレームを含む。Iフレームは、表示デバイス上の全てのマクロブロック/ピクセルをリフレッシュするための情報を含むのに対し、Pフレームは、そのサブセットをリフレッシュするための情報を含む。Pフレームは、典型的には、Iフレームよりもデータサイズが小さい。本明細書で使用する「フレームサイズ」という用語は、フレーム内の画素数を指すことを意味する。「フレームデータサイズ」という用語は、フレームを格納するために必要なバイト数を指すために使用される。
他の実施形態では、ビデオソース830は、カメラなどのビデオ録画デバイスを含む。このカメラは、コンピュータゲームのビデオストリームに含めることができる遅延ビデオまたはライブビデオを生成するために使用されてもよい。得られたビデオストリームは、任意選択で、レンダリングされた画像と、スチルカメラまたはビデオカメラを使用して録画された画像との両方を含む。ビデオソース830はまた、ビデオストリームに含めるために以前に録画されたビデオを格納するように構成されたストレージデバイスを含んでもよい。ビデオソース830はまた、オブジェクト、例えば、人物の動きまたは位置を検出するように構成された動きまたは位置検知デバイス、ならびに検出された動き及び/または位置に基づいてゲームステートを決定する、またはビデオを生成するように構成されたロジックを含んでもよい。
ビデオソース830は、任意選択で、他のビデオ上に配置されるように構成されたオーバーレイを提供するように構成される。例えば、これらのオーバーレイは、コマンドインタフェース、ログインインストラクション、ゲームプレイヤーへのメッセージ、他のゲームプレイヤーの画像、他のゲームプレイヤーのビデオフィード(例えば、ウェブカメラビデオ)を含んでもよい。タッチスクリーンインタフェースまたは視線検出インタフェースを含むクライアント810Aの実施形態では、オーバーレイは、仮想キーボード、ジョイスティック、タッチパッド及び/または同様のものを含んでもよい。オーバーレイの一例では、プレイヤーの音声がオーディオストリーム上にオーバーレイされる。ビデオソース830は、任意選択で、1つ以上のオーディオソースをさらに含む。
ビデオサーバシステム820が2人以上のプレイヤーからの入力に基づいてゲームステートを維持するように構成される実施形態では、各プレイヤーは、ビューの位置及び方向を含む異なる視点を有してもよい。ビデオソース830は、任意選択で、各プレイヤーの視点に基づいて別個のビデオストリームを各プレイヤーに提供するように構成される。さらに、ビデオソース830は、異なるフレームサイズ、フレームデータサイズ、及び/または符号化をクライアント810のそれぞれに提供するように構成されてもよい。ビデオソース830は、任意選択で、3-Dビデオを提供するように構成される。
I/Oデバイス845は、ビデオサーバシステム820が、ビデオ、コマンド、情報の要求、ゲームステート、視線情報、デバイスの動き、デバイスの位置、ユーザの動き、クライアント識別子、プレイヤー識別子、ゲームコマンド、セキュリティ情報、オーディオ、及び/または同様のものなどの情報を送信及び/または受信するように構成される。I/Oデバイス845は、典型的には、ネットワークカードまたはモデムなどの通信ハードウェアを含む。I/Oデバイス845は、ゲームサーバ825、ネットワーク815及び/またはクライアント810と通信するように構成される。
プロセッサ850は、本明細書で論じられるビデオサーバシステム820の各種の構成要素内に含まれるロジック、例えば、ソフトウェアを実行するように構成される。例えば、プロセッサ850は、ビデオソース830、ゲームサーバ825及び/またはクライアントクォリファイア860の機能を実行するためにソフトウェア命令を用いてプログラムされてもよい。ビデオサーバシステム820は、任意選択で、プロセッサ850の2つ以上のインスタンスを含む。プロセッサ850はまた、ビデオサーバシステム820によって受信されたコマンドを実行するために、または本明細書で論じられるゲームシステム800の各種の要素の動作を連動させるために、ソフトウェア命令を用いてプログラムされてもよい。プロセッサ850は、1つ以上のハードウェアデバイスを含んでもよい。プロセッサ850は、電子プロセッサである。
ストレージ855は、非一時的なアナログ及び/またはデジタルストレージデバイスを含む。例えば、ストレージ855は、ビデオフレームを格納するように構成されたアナログストレージデバイスを含んでもよい。ストレージ855は、コンピュータ可読デジタルストレージ、例えば、ハードドライブ、光学ドライブまたはソリッドステートストレージを含んでもよい。ストレージ815は、ビデオフレーム、人工フレーム、ビデオフレームと人工フレームとの両方を含むビデオストリーム、オーディオフレーム、オーディオストリーム、及び/または同様のものを格納するように(例えば、適切なデータ構造またはファイルシステムによって)構成される。ストレージ855は、任意選択で、複数のデバイス間に分散される。いくつかの実施形態では、ストレージ855は、本明細書の他の箇所で論じられるビデオソース830のソフトウェア構成要素を格納するように構成される。これらの構成要素は、必要なときにプロビジョニングされるように準備がなされたフォーマットで格納されてもよい。
ビデオサーバシステム820は、任意選択で、クライアントクォリファイア860をさらに含む。クライアントクォリファイア860は、クライアント810Aまたは810Bなどのクライアントの能力をリモートで判定するように構成される。これらの能力は、クライアント810A自体の能力と、クライアント810Aとビデオサーバシステム820との間の1つ以上の通信チャネルの能力との両方を含むことができる。例えば、クライアントクォリファイア860は、ネットワーク815を経由して通信チャネルをテストするように構成されてもよい。
クライアントクォリファイア860は、クライアント810Aの能力を手動または自動で判定する(例えば、見出す)ことができる。手動判定は、クライアント810Aのユーザと通信し、ユーザに能力を提供するように依頼する。例えば、いくつかの実施形態では、クライアントクォリファイア860は、クライアント810Aのブラウザ内に画像、テキスト及び/または同様のものを表示するように構成される。一実施形態では、クライアント810Aは、ブラウザを含むHMDである。別の実施形態では、クライアント810Aは、HMD上に表示され得るブラウザを有するゲームコンソールである。表示されたオブジェクトは、クライアント810Aのオペレーティングシステム、プロセッサ、ビデオデコーダの種類、ネットワーク接続の種類、ディスプレイ解像度などの情報をユーザが入力することを要求する。ユーザによって入力された情報は、クライアントクォリファイア860に返信される。
自動判定は、例えば、クライアント810A上のエージェントの実行によって、かつ/またはクライアント810Aへのテストビデオの送信によって行われてもよい。エージェントは、ウェブページに埋め込まれるか、またはアドオンとしてインストールされたJavaスクリプトなどのコンピューティング命令を含んでもよい。エージェントは、任意選択で、クライアントクォリファイア860によって提供される。各種の実施形態では、エージェントは、クライアント810Aの処理パワー、クライアント810Aの復号及び表示能力、クライアント810Aとビデオサーバシステム820との間の通信チャネルの遅延時間の信頼性及び帯域幅、クライアント810Aの表示方式、クライアント810A上に存在するファイアウォール、クライアント810Aのハードウェア、クライアント810A上で実行するソフトウェア、クライアント810A内のレジストリエントリ、及び/または同様のものを知ることができる。
クライアントクォリファイア860は、ハードウェア、ファームウェア、及び/またはコンピュータ可読媒体上に格納されたソフトウェアを含む。クライアントクォリファイア860は、任意選択で、ビデオサーバシステム820の1つ以上の他の要素とは別個のコンピューティングデバイス上に配置される。例えば、いくつかの実施形態では、クライアントクォリファイア860は、クライアント810とビデオサーバシステム820の2つ以上のインスタンスとの間の通信チャネルの特性を判定するように構成される。これらの実施形態では、クライアントクォリファイアによって見出された情報を使用して、ビデオサーバシステム820のどのインスタンスがクライアント810のうちの1つにストリーミングビデオを供給するのに最も適しているかを判定することができる。
図10は、様々なゲームへのアクセスを提供する際に使用され得る情報サービスプロバイダアーキテクチャの実施形態を示す。情報サービスプロバイダ(ISP)902は、ネットワーク950を介して地理的に分散され、接続されたユーザ900に多数の情報サービスを供給する。ネットワーク950は、図1または図2のネットワーク110と同様であってもよい。ゲームへの高速アクセスを提供することに関して各種の実施形態が論じられてきたが、実施形態は、インタラクティブアプリケーションとのインタラクションの間にユーザによって取得された1つ以上の視覚的合図または他のツールもしくはアプリケーションポイントまたは賞もしくは報酬を使用してアクセス可能である様々なレベルのコンテンツを含むことができるコンテンツを提供する、仮想ツアーなどの他のインタラクティブアプリケーションへの高速アクセスを提供するように拡張することができる。例えば、ISP902は、ゲームなどの1種類のみのサービス、またはゲーム、株価の更新、放送メディア、ニュース、スポーツ、ゲーミングなどの様々なサービスを供給することができる。加えて、各ISPによって供されるサービスは動的であってもよく、すなわち、任意の時点でサービスを追加または排除することができる。従って、特定の個人に特定の種類のサービスを提供するISPは、時間の経過に伴って変わり得る。例えば、ユーザが地元にいる間はユーザの付近のISPによってユーザにサービスを行ってもよく、ユーザは、ユーザが異なる街に移動したときは異なるISPによってユーザにサービスを行ってもよい。地元のISPは、接続モジュールを通じて、必要な情報及びデータをユーザのゲーミングまたはアクセスプロファイルから新しいISPに転送することになり、その結果、ユーザ情報が新しい街までユーザに「追従」し、データがユーザにより近づき、データによりアクセスしやすくする。別の実施形態では、ユーザについての情報を管理するマスタISPと、マスタISPからの制御の下でユーザと直接的にインタフェースするサーバISPとの間で、マスタ-サーバ関係が確立されてもよい。別の実施形態では、クライアントが世界中を移動するにつれて(すなわち、ユーザに割り当てられたデータセンターの切り替えの間)データが1つのISPから別のISPに転送され、そのような転送は、ユーザにサービスするためにより良好な位置にあるISP902を、これらのサービスを供給するISPとするために、それぞれのISPによって提供されるサービスの互換性に基づいていてもよい。
ISP902は、ネットワークを経由して顧客にコンピュータベースのサービスを提供するアプリケーションサービスプロバイダ(ASP)906を含む。ASPモデルを使用して供されるソフトウェアは、オンデマンドソフトウェアまたはソフトウエアアズアサービス(SaaS)と呼ばれることもある。特定のアプリケーションプログラム(顧客関係管理など)へのアクセスを提供する簡単な形式は、HTTPなどの標準プロトコルの使用によるものである。アプリケーションソフトウェアは、例えば、ベンダのシステムに常駐し、HTMLを使用するウェブブラウザを通じて、またはベンダによって提供された専用クライアントソフトウェアによって、またはシンクライアントなどの他のリモートインタフェースを介してユーザによってアクセスされる。
広い地理的地域にわたって供給されるサービスは、多くの場合にはクラウドコンピューティングを使用する。クラウドコンピューティングは、動的にスケーラブルであり、かつ多くの場合には仮想化されたリソースがインターネット経由のサービスとして提供されるコンピューティングのスタイルである。ユーザは、ユーザをサポートする「クラウド」のテクノロジインフラストラクチャの専門家である必要はない。クラウドコンピューティングは、インフラストラクチャアズアサービス(IaaS)、プラットフォームアズアサービス(PaaS)、及びソフトウエアアズアサービス(SaaS)などの様々なサービスに分けることができる。クラウドコンピューティングサービスは、多くの場合には、ウェブブラウザからアクセスされる共通のビジネスアプリケーションをオンラインで提供するが、ソフトウェア及びデータはサーバ上に格納される。クラウドという用語は、インターネットがコンピュータネットワーク図にどのように描かれているかに基づき、(例えば、サーバ、ストレージ、及びロジックを使用した)インターネットのメタファとして使用され、メタファが隠す複雑なインフラストラクチャの抽象的概念である。
さらに、ISP902は、ゲームクライアントによってシングル及びマルチプレイヤービデオゲームをプレイするために使用されるゲーム処理サーバまたはプロバイダ(GaPS)908を含む。インターネット経由でプレイされる大部分のビデオゲームは、ゲームサーバへの接続を介して動作する。通常、ゲームはプレイヤーからのデータを収集し、それを他のプレイヤーに配信する専用サーバアプリケーションを使用する。これは、ピアツーピア構成よりも効率的かつ効果的であるが、サーバアプリケーションをホスティングするための別のサーバが必要となる。別の実施形態では、GaPSは、プレイヤーとそれぞれのゲームプレイデバイスとの間の通信を確立し、集中化されたGaPSに依存せずに情報を交換する。
専用GaPSは、クライアントとは独立して実行されるサーバである。このようなサーバは、通常、データセンター内に位置付けられた専用ハードウェア上で実行され、より大きい帯域幅及び専用の処理パワーを提供する。専用サーバは、大部分のPCベースのマルチプレイヤーゲームのためのゲームサーバをホスティングするのに好ましい方法である。大規模なマルチプレイヤーオンラインゲームは、通常ゲームタイトルを所有するソフトウェア会社によってホスティングされた専用サーバ上で実行されて、その専用サーバがコンテンツを管理及び更新することを可能にする。
放送処理サーバまたはプロバイダ(BPS)910は、視聴者にオーディオまたはビデオ信号を配信する。非常に狭い範囲の視聴者への放送はナローキャスティングと呼ばれることもある。放送配信の最終工程は、信号が聴取者または視聴者にどのように達するかであり、信号は、ラジオ局またはテレビ局と同様にアンテナ及び受信機に地上波で到来し得るか、または局を介してケーブルテレビもしくはケーブルラジオ(もしくは「無線ケーブル」)を通じて到来し得るか、またはネットワークから直接到来し得る。インターネットはまた、特に信号及び帯域幅を共有できるマルチキャストを用いて、ラジオまたはテレビのいずれかを受信者に届けてもよい。歴史的に、放送は、全国放送または地域放送などの地理的領域によって区切られてきた。しかしながら、高速インターネットの普及に伴い、コンテンツは世界のほぼ全ての国に到達し得るため、放送は地域によって定められない。
ストレージサービスプロバイダ(SSP)912は、コンピュータストレージ空間及び関連する管理サービスを提供する。SSPは定期的なバックアップ及びアーカイビングも供する。ストレージをサービスとして供することにより、ユーザは必要に応じてより多くのストレージを注文できる。別の大きな利点は、SSPにバックアップサービスが含まれており、コンピュータのハードドライブに障害が発生してもユーザが全てのデータを失うことがないことである。さらに、複数のSSPは、ユーザデータの全部または一部のコピーを有することができ、ユーザがどこに位置するか、またはデータにアクセスするために使用されているデバイスとは無関係に、ユーザは効率的な手法でデータにアクセスすることができる。例えば、ユーザは、家のコンピュータ内の個人的ファイルにアクセスすることができ、さらに、ユーザが移動している間は携帯電話内の個人的ファイルにアクセスすることができる。
通信プロバイダ914は、ユーザに接続性を提供する。ある種類の通信プロバイダは、インターネットへのアクセスを供するインターネットサービスプロバイダ(ISP)である。ISPは、ダイヤルアップ、DSL、ケーブルモデム、ファイバ、無線、または専用の高速インターコネクトなどのインターネットプロトコルデータグラムの供給に適したデータ伝送技術を使用して顧客を接続する。通信プロバイダは、電子メール、インスタントメッセージング及びSMSテキストメッセージなどのメッセージングサービスも提供することができる。通信プロバイダの別の種類は、インターネットへの直接のバックボーンアクセスを提供することによって帯域幅またはネットワークアクセスを販売するネットワークサービスプロバイダ(NSP)である。ネットワークサービスプロバイダは、電気通信会社、データ通信業者、無線通信プロバイダ、インターネットサービスプロバイダ、高速インターネットアクセスを提供するケーブルテレビ事業者などで構成され得る。
データエクスチェンジ904は、ISP902内のいくつかのモジュールを相互接続し、ネットワーク950を介してこれらのモジュールをユーザ900のクライアントデバイス920に接続する。データエクスチェンジ904は、ISP902の全てのモジュールが近接している小さい領域をカバーすることができ、または様々なモジュールが地理的に分散しているときには大きな地理的領域をカバーすることができる。例えば、データエクスチェンジ904は、データセンターのキャビネット内の高速ギガビットイーサネット(登録商標)(もしくはより高速のもの)、または大陸間仮想エリアネットワーク(VLAN)を含むことができる。
ユーザ900は、それぞれのクライアントデバイス920を用いてリモートサービスにアクセスする。このクライアントデバイスは、少なくともCPU、メモリ(図示せず)、ディスプレイ及びI/Oを含む。クライアントデバイスは、PC、携帯電話、ネットブック、タブレット、ゲーミングシステム、PDAなどとすることができる。一実施形態では、ISP1070は、クライアントによって使用されるデバイスの種類を認識し、採用された通信方法を調整する。他の場合には、クライアントデバイスは、HTMLなどの標準的な通信方法を使用して、ISP1070にアクセスする。
本発明の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースの、またはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む各種のコンピュータシステム構成を用いて実施されてもよい。本発明はまた、有線ベースのネットワークまたは無線ネットワークを通じてリンクされるリモート処理デバイスによってタスクが実行される、分散型コンピューティング環境で実施することができる。
上記の実施形態を念頭に置いて、本発明は、コンピュータシステム内に格納されたデータに関連した各種のコンピュータ実装動作を採用できることが理解されるべきである。これらの動作は、物理量の物理的操作を必要とする動作である。本発明の一部を構成する本明細書で説明されるいずれの動作も有用な機械動作である。本発明はまた、これらの動作を実行するためのデバイスまたは装置に関する。装置は、必要とされる目的のために特別に構成することができ、または装置は、コンピュータ内に格納されたコンピュータプログラムによって選択的に起動または構成された汎用コンピュータとすることができる。特に、本明細書の教示に従って記述されたコンピュータプログラムを用いて各種の汎用機械を使用することができ、または必要とされる動作を実行するためにより特殊化された装置を構築することがより便利であり得る。
発明はまた、コンピュータ可読媒体上のコンピュータ可読コードとして具現化することができる。あるいは、コンピュータ可読コードは、上記で説明されたデータエクスチェンジ相互接続を使用してサーバからダウンロードされてもよい。コンピュータ可読媒体は、データを格納することができる任意のデータストレージデバイスであり、データは、その後、コンピュータシステムによって読み出すことができる。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ(NAS)、リードオンリーメモリ、ランダムアクセスメモリ、CD-ROM、CD-R、CD-RW、磁気テープ、ならびに他の光学及び非光学データストレージデバイスが含まれる。コンピュータ可読媒体は、コンピュータ可読コードが分散方式で格納され、実行されるように、ネットワーク結合コンピュータシステム上に分散されたコンピュータ可読有形媒体を含むことができる。
方法動作が特定の順序で説明されたが、他のハウスキーピング操作が動作の間に実行されてもよく、または動作が、わずかに異なる時刻に生じるように調整されてもよく、もしくはオーバーレイ動作の処理が所望の手法で実行される限り、処理に関連する様々な間隔で処理動作の発生を可能にするシステム内に分散されてもよいことが理解されるべきである。
前述の発明は、理解を明確にするために幾分詳細に説明されてきたが、添付された特許請求の範囲内である変更及び修正を実施できることは明らかであろう。従って、本実施形態は、例示的であり、限定的ではないとみなされるべきであり、本発明は本明細書で与えられた詳細に限定されるものではなく、説明される実施形態の範囲及び均等物内で修正されてもよい。
ゲーミングコンソールの例示的なシステムアーキテクチャ全体について本明細書で説明する。例示的なゲーミングコンソールは、本発明の実施形態を実装するためのコントローラと互換性を有し得る、Sony(登録商標)Playstation3(登録商標)(PS3)またはPlaystation4(登録商標)(PS4)エンターテインメントデバイスを含んでもよい。PS3ゲーミングコンソールシステムアーキテクチャが詳細に説明されるが、本明細書で説明される各種の実施形態が、異なるゲーミングコンソールまたはコンピューティングデバイスのシステムアーキテクチャに拡張可能であることに留意されるべきである。システムユニットが提供され、このシステムユニットには各種の周辺デバイスが接続可能である。システムユニットは、図1のクラウドゲームミングシステム300と類似している。システムユニットは、PS3にあるような8コアプロセッサ、またはPS4にあるようなマルチコアプロセッサであり得るプロセッサ、PS3にあるようなRambus(登録商標)ダイナミックランダムアクセスメモリ(XDRAM)ユニット、またはPS4にあるようなGDDR5などのグラフィックスダイナミックランダムアクセスメモリ、PS3にあるような専用ビデオランダムアクセスメモリ(VRAM)ユニットを有するリアリティシンセサイザグラフィックスユニット(例えば、550MHz GPU)、またはPS4及びPS4 Proにおける共有グラフィックスメモリを有する800もしくは900MHz GPU、ならびにI/Oブリッジを含む。システムユニットはまた、I/Oブリッジを通じてアクセス可能な、ディスク及び着脱可能スロットインハードディスクドライブ(HDD)から読み出すためのBluRay(登録商標)ディスクリードオンリーメモリ(BD-ROM(登録商標))(光学)ディスクリーダを含む。任意選択で、システムユニットはまた、I/Oブリッジを通じて同様にアクセス可能である、コンパクトフラッシュ(登録商標)メモリカード及びメモリスティック(登録商標)メモリカードなどを読み出すためのメモリカードリーダ、ならびに、PS4では、ゲームを記録するための内蔵DVRを含む。
I/Oブリッジはまた、6つのユニバーサルシリアルバス(USB)2.0ポート、ギガビットイーサネットポート、IEEE802.11b/g無線ネットワーク(Wi-Fi)ポート、及び最大で7つのBluetooth接続をサポートする能力を有するBluetooth(登録商標)無線リンクポートに接続する。
動作中、I/Oブリッジは、1つ以上のゲームコントローラ(PS3にあるようなDualShock3コントローラ、またはPS4にあるようなPS4 DualShock4コントローラなど)からのデータを含む、全ての無線、USB、及びイーサネットデータを扱う。例えば、ユーザがゲームをプレイしているとき、I/Oブリッジは、Bluetoothリンクを介してゲームコントローラからデータを受信し、それを(PS3における)プロセッサまたは(PS4における)マルチコアプロセッサに送り出し、プロセッサまたはマルチコアプロセッサは、それに応じてゲームの現在のステートを更新する。さらに、他の画像センサ及び移動センサは、ユーザのゲームプレイ中に取り込まれたデータをI/Oブリッジに提供し、I/Oブリッジは、そのデータをそれぞれのプロセッサに送り出す。ゲームコントローラ(例えば、PS4のゲームコントローラ)は、ゲームを共有するための共有ボタンオプション、クリック可能なタッチパッド、再充電可能なバッテリ(リチウムイオンまたは他の種類)などを含む。
無線、USB及びイーサネットポートはまた、ゲームコントローラに加えて、リモコン、キーボード、マウス、Sony Playstation Portable(登録商標)エンターテインメントデバイスなどのポータブルエンターテインメントデバイス、EyeToy(登録商標)ビデオカメラなどのビデオカメラ、マイクロホンヘッドセット、及び着脱可能ハードドライブなどの他の周辺デバイスのための接続性を提供する。従って、このような周辺デバイスは、原則として、無線でシステムユニットに接続されてもよく、例えば、ポータブルエンターテインメントデバイスはWi-Fiアドホック接続を介して通信してもよく、他方、マイクロホンヘッドセットはBluetoothリンクを介して通信してもよい。
これらのインタフェースのプロビジョニングは、Playstation3デバイスが、デジタルビデオレコーダ(DVR)、セットトップボックス、デジタルカメラ、ポータブルメディアプレイヤー、ボイスオーバIP電話、携帯電話、プリンタ、及びスキャナなどの他の周辺デバイスとの互換性も潜在的に有することを意味する。
加えて、レガシーメモリカードリーダは、USBポートを介してシステムユニットに接続されてもよく、Playstation(登録商標)またはPlaystation2(登録商標)デバイスによって使用される種類のメモリカードの読み出しを可能にする。
本実施形態では、ゲームコントローラは、Bluetoothリンクを介してシステムユニットと無線で通信するように動作可能である。しかしながら、ゲームコントローラは、その代わりに、USBポートに接続することができ、それによって、ゲームコントローラのバッテリを充電する電力も提供する。1つ以上のアナログジョイスティック及び従来の制御ボタンに加えて、ゲームコントローラは、各軸における平行移動及び回転に対応した、6つの自由度における動きに反応する。結果として、ゲームコントローラのユーザによるジェスチャ及び移動は、従来のボタンまたはジョイスティックコマンドに加えて、またはそれらの代わりに、ゲームへの入力として変換され得る。任意選択で、Playstation(商標)ポータブルデバイスなどの、他の無線対応の周辺デバイスがコントローラとして使用されてもよい。Playstation(商標)ポータブルデバイスの場合、追加のゲームまたは制御情報(例えば、制御命令またはライブの数)がデバイスの画面上に提供されてもよい。ダンスマット(図示せず)、ライトガン(図示せず)、ハンドル及びペダル(図示せず)、または即答クイズゲームのための1つまたは複数の大型ボタン(同様に図示せず)などの特注品のコントローラなどの、他の代替的または補助的な制御デバイスも使用されてもよい。
リモコンはまた、Bluetoothリンクを介してシステムユニットと無線で通信するように動作可能である。リモコンは、BluRay(商標)ディスクBD-ROMリーダの動作のために、さらにディスクコンテンツのナビゲーションのために好適な制御を備える。
BluRay(商標)ディスクBD-ROMリーダは、従来の記録済みのコンパクトディスク(CD)及び記録可能なCD、ならびにいわゆるスーパーオーディオCDに加えて、Playstation及びPlayStation2デバイスとの互換性を有するコンパクトディスクリードオンリーメモリ(CD-ROM)を読み出すように動作可能である。BluRay(商標)ディスクBD-ROMリーダはまた、従来の記録済みのDVD及び記録可能なDVDに加えて、PlayStation2(商標)及びPlayStation3(商標)デバイスとの互換性を有するデジタルバーサタイルディスクリードオンリーメモリ(DVD-ROM)を読み出すように動作可能である。BluRay(商標)ディスクBD-ROMリーダは、さらに、従来の記録済みのBlu-Rayディスク及び記録可能なBlu-Rayディスクのみならず、PlayStation3デバイスとの互換性を有するBD-ROMを読み出すように動作可能である。
システムユニットは、ディスプレイ及び1つ以上のラウドスピーカを有するモニタまたはテレビセットなどのディスプレイ及びサウンド出力デバイスへのオーディオ及びビデオコネクタを通じて、Playstation3またはPlaystation4デバイスによって生成または復号のいずれかがなされたオーディオ及びビデオをリアリティシンセサイザグラフィックスユニットを介して供給するように動作可能である。オーディオコネクタは、従来のアナログ及びデジタル出力を含んでもよく、他方、ビデオコネクタは、コンポーネントビデオ、Sビデオ、コンポジットビデオ、及び1つ以上の高解像度マルチメディアインタフェース(HDMI(登録商標))出力を様々に含んでもよい。結果として、ビデオ出力は、PALもしくはNTSCなどのフォーマットにあってもよく、または720p、1080iもしくは1080pの高解像度、及び4K、HDRにあってもよい。
オーディオ処理(生成及び復号など)は、プロセッサによって実行される。例えば、Playstation3デバイスのオペレーティングシステムは、Dolby(登録商標)5.1サラウンドサウンド、Dolby(登録商標)シアターサラウンド(DTS)、及びBlu-Ray(登録商標)ディスクからの7.1サラウンドサウンドの復号をサポートする。
本実施形態では、ビデオカメラは、CMOS(相補型金属酸化物半導体)画像センサ(ただし、電荷結合素子(CCD)画像センサも使用され得る)、LEDインジケータ、ならびにハードウェアベースのリアルタイムデータ圧縮及び符号化装置を含むことにより、圧縮されたビデオデータは、システムユニットによる復号のために、イントラ画像ベースのMPEG(motion picture expert group)規格などの適切なフォーマットで送信され得る。カメラLEDインジケータは、例えば、不利な照明条件を示すために、システムユニットからの適切な制御データに応答して発光するように配列されている。ビデオカメラの実施形態は、USB、Bluetooth、Wi-Fi通信ポートを介してシステムユニットに様々に接続してもよい。ビデオカメラの実施形態は、1つ以上の関連するマイクロホンを含んでもよく、オーディオデータを送信することも可能であってもよい。ビデオカメラの実施形態では、CCDは、高解像度ビデオの取り込みに適した分解能を有してもよい。使用中、ビデオカメラによって取り込まれた画像は、例えば、ゲーム内に組み込まれてもよく、またはゲーム制御入力として解釈されてもよい。
一般に、システムユニットの通信ポートのうちの1つを介してビデオカメラまたはリモコンなどの周辺デバイスとのデータ通信が正常に行われるように、デバイスドライバなどの、1つの適切なソフトウェアが提供されるべきである。デバイスドライバ技術は公知であり、ここで詳細に説明しないが、当業者は、デバイスドライバまたは同様のソフトウェアインタフェースが説明される本実施形態において必要とされ得ることを理解するであろうと言えることに留める。
プロセッサは、メモリコントローラ及びデュアルバスインタフェースコントローラを含む外部入力及び出力構造、パワープロセッシングエレメントと称されるメインプロセッサ、シナジスティックプロセッシングエレメント(SPE)と称される8つのコプロセッサ、及びエレメント相互接続バスと称される上記の構成要素を接続する環状データバス、の4つの基本構成要素を含むアーキテクチャを有する。プロセッサの総浮動小数点性能は、Playstation2デバイスのエモーションエンジンの6.2GFLOPSと比較して、218GFLOPSである。
パワープロセッシングエレメント(PPE)は、3.2GHzの内部クロックにより動作する双方向同時マルチスレッディングパワー準拠のPowerPCコア(PPU)に基づいている。このコアは、512kBのレベル2(L2)キャッシュ及び32kBのレベル1(L1)キャッシュを含む。PPEは、1クロックサイクル当たり8つの単一位置演算が可能であり、3.2GHzにおいて25.6GFLOPSに変換する。PPEの主要な役割は、計算負荷の大部分を扱うシナジスティックプロセッシングエレメントのコントローラとして機能することにある。動作中、PPEは、ジョブキューを保持し、シナジスティックプロセッシングエレメントのジョブをスケジュールしており、その進捗を監視する。結果として、各シナジスティックプロセッシングエレメントはカーネルを実行する。カーネルの役割は、ジョブを取り出して、これを実行し、PPEと同期させることにある。
各シナジスティックプロセッシングエレメント(SPE)は、各シナジスティックプロセッシングユニット(SPU)及び各メモリフローコントローラ(MFC)を含み、さらに、MFCは、各ダイナミックメモリアクセスコントローラ(DMAC)、各メモリ管理ユニット(MMU)及びバスインタフェース(図示せず)を含む。各SPUは、3.2GHzにおいてクロック動作し、原則として4GBに拡張可能な、256kBのローカルRAMを含むRISCプロセッサである。各SPEは、単精度性能の理論的な25.6GFLOPSを示す。SPUは、単一のクロックサイクルにおいて、4つの単精度浮動小数点部、4つの32ビット数、8つの16ビット整数または16個の8ビット整数を処理することができる。同一のクロックサイクルにおいて、SPUはまた、メモリ演算を実行することができる。SPUは、システムメモリXDRAM1426に直接アクセスしない。SPUによって形成された64ビットアドレスはMFCに渡され、MFCは、そのDMAコントローラに対し、エレメント相互接続バス及びメモリコントローラを介してメモリにアクセスするように指示する。
エレメント相互接続バス(EIB)は、上記のプロセッサエレメント、すなわちPPE、メモリコントローラ、デュアルバスインタフェース、及び8つのSPE、合計して12個のパーティシパントを接続する、プロセッサの内部の論理的に環状の通信バスである。パーティシパントは、クロックサイクルごとに8バイトのレートでバスに対する読み出し及び書き込みを同時に行うことができる。以前に述べたように、各SPEは、より長い読み出し及び書き込みシーケンスをスケジューリングするためのDMACを含む。EIBは、4つのチャネルを備え、そのうち2つは時計回り方向であり、残り2つは反時計回り方向である。結果として、12個のパーティシパントについて、任意の2つのパーティシパント間の最長のステップ方式のデータフローは、適切な方向で6ステップとなる。従って、パーティシパント間のアービトレーションを通じて完全に利用された場合、12個のスロットの理論上のピーク瞬間EIB帯域幅は、1クロック当たり96Bとなる。これは、3.2GHz(ギガヘルツ)のクロックレートにおける307.2GB/s(ギガバイト/秒)の理論上のピーク帯域幅に等しい。
メモリコントローラは、Rambus Incorporatedによって開発されたXDRAMインタフェースを含む。メモリコントローラは、25.6GB/sの理論上のピーク帯域幅を有するRambus XDRAM1426とインタフェースする。
デュアルバスインタフェースは、Rambus FlexIO(登録商標)システムインタフェースを含む。インタフェースは、5つの経路が受信用、7つの経路が送信用である、それぞれが8ビット幅である12個のチャネルに編成される。これにより、コントローラを介したプロセッサとI/Oブリッジとの間、及びコントローラを介したリアリティシンセサイザグラフィックスユニットの間で、理論上のピーク帯域幅が62.4GB/s(送信36.4GB/s、受信26GB/s)が得られる。
プロセッサによってリアリティシンセサイザグラフィックスユニットに送信されるデータは通常、表示リストを含み、これは、頂点を描画し、ポリゴンにテクスチャを貼り付け、照明条件を指定するなどのための一連のコマンドである。
実施形態は、現実世界のユーザをさらに良好に識別し、アバターまたはシーンの活動を指示するために深度データを取り込むことを含んでもよい。オブジェクトは、人が保持しているものとすることができ、または人の手とすることもできる。この説明では、用語「深度カメラ」及び「三次元カメラ」は、二次元画素情報のみならず距離または深度情報を取得することが可能である任意のカメラを指す。例えば、深度カメラは、制御された赤外線照明を利用して距離情報を取得することができる。別の例示的な深度カメラは、2台の基準カメラを使用して距離情報を三角測量によって求める立体カメラ対とすることができる。同様に、用語「深度検知デバイス」は、距離情報と共に二次元画素情報を取得可能である任意の種類のデバイスを指す。
三次元画像における最新の進歩により、リアルタイムのインタラクティブコンピュータのアニメーションの可能性を広げる機会が与えられている。特に、新たな「深度カメラ」は、通常の二次元ビデオ画像に加えて三次元の取り込み及びマッピングを行う能力を提供する。新たな深度データにより、本発明の実施形態では、他のオブジェクトの背後を含む、ビデオシーン内の各種の場所に、コンピュータによって生成されたオブジェクトをリアルタイムで配置することが可能になる。
その上、本発明の実施形態は、ユーザに対してリアルタイムのインタラクティブゲーミング体験を提供する。例えば、ユーザは、コンピュータによって生成された各種のオブジェクトとリアルタイムでインタラクションを行うことができる。さらに、ビデオシーンは、ユーザの体験を向上させるようにリアルタイムで変更することができる。例えば、コンピュータによって生成されたコスチュームをユーザの服の上に装着させることができ、コンピュータによって生成された光源を利用してビデオシーン内に仮想の影を投影することができる。よって、本発明の実施形態及び深度カメラを使用して、ユーザは、自分のリビングルーム内でインタラクティブ環境を体験することができる。通常のカメラと同様に、深度カメラは、ビデオ画像を含む複数の画素についての二次元データを取り込む。これらの値は、画素についての色値であり、通常は、各画素についての赤、緑、及び青(RGB)の値である。この方式では、カメラによって取り込まれたオブジェクトは、モニタ上では二次元オブジェクトとして見える。
本発明の実施形態形態はまた、分散化された画像処理構成について考察する。例えば、本発明は、CPU内またはCPU及び他の1つの素子内など、1つの場所またはさらには2つの場所内で行われる取り込まれた画像及び表示画像の処理に限定されない。例えば、入力画像処理は、処理を実行することができる関連のCPU、プロセッサまたはデバイス内でそのまま容易に行うことができ、基本的には、画像処理の全てを、相互接続システム全体に分散させることができる。従って、本発明は、いずれかの特定の画像処理ハードウェア回路及び/またはソフトウェアに限定されない。本明細書で説明される実施形態は、汎用ハードウェア回路及び/またはソフトウェアのいずれかの特定の組み合わせにも、処理構成要素によって実行される命令についてのいずれかの特定のソースにも限定されない。
上記の実施形態を念頭に置いて、本発明は、コンピュータシステムに格納されたデータに関連した各種のコンピュータ実装動作を採用し得ることが理解されるべきである。これらの動作は、物理量の物理的操作を必要とする動作を含む。通常、必須ではないが、これらの量は、格納され、変換され、組み合わされ、比較され、さもなければ操作されることが可能な電気または磁気信号の形をとる。さらに、実行される操作は、多くの場合、作成すること、識別すること、判定すること、または比較することなどの用語で参照される。
本発明の一部を構成する本明細書で説明される動作はいずれも有用な機械動作である。本発明はまた、これらの動作を実行するためのデバイスまたは装置に関する。装置は、必要とされる目的のために特別に構成することができ、または装置は、コンピュータに格納されたコンピュータプログラムによって選択的に起動または構成された汎用コンピュータとすることができる。特に、本明細書の教示に従って記述されたコンピュータプログラムを用いて各種の汎用機械を使用することができ、または必要とされる動作を実行するためにより特殊化された装置を構築することがより便利であり得る。
上述の発明は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースの、またはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成によって実施されてもよい。本発明はまた、通信ネットワークを通じてリンクされたリモート処理デバイスによってタスクが実行される分散型コンピューティング環境で実施されてもよい。
本発明はまた、コンピュータ可読媒体上のコンピュータ可読コードとして具現化されてもよい。コンピュータ可読媒体は、電磁搬送波を含む、後でコンピュータシステムによって読み出すことが可能なデータを格納することができる任意のデータストレージデバイスである。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ(NAS)、リードオンリーメモリ、ランダムアクセスメモリ、CD-ROM、CD-R、CD-RW、磁気テープ、ならびに他の光学及び非光学データストレージデバイスが含まれる。コンピュータ可読媒体はまた、コンピュータ可読コードが分散方式で格納及び実行されるように、ネットワーク結合コンピュータシステム上に分散させることができる。
前述の発明は、理解を明確にするために幾分詳細に説明されてきたが、添付された特許請求の範囲内である変更及び修正が実施され得ることは明らかであろう。従って、本実施形態は例示的であって限定的ではないとみなされるべきであり、本発明は本明細書に与えられた詳細に限定されるものではなく、添付された特許請求の範囲及び均等物の範囲内で修正され得る。