(57)【要約】本開示は、一般に、ディスプレイ上でグラフィックデータを視覚的にレンダリングするためのシステムおよび方法に関し、特に、単一のディスプレイ上で複数のコンピュータアプリケーションからデータを視覚的にレンダリングするためのシステムおよび方法に関する。方法が開示され、本方法は、第１のクライアントアプリケーションから、第１のノードを備える、第１のグラフィックデータを受信するステップと、第１のクライアントアプリケーションから独立している第２のクライアントアプリケーションから、第２のノードを備える、第２のグラフィックデータを受信するステップと、シーングラフを生成するステップとを含み、シーングラフは、第１のノードと第２のノードとの間の階層関係を表す。
2020515967.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
コンピュータシステムの第１のクライアントアプリケーションから、第１のノードを備える第１のグラフィックデータを受信することと、
前記コンピュータシステムの第２のクライアントアプリケーションから、第２のノードを備える第２のグラフィックデータを受信することと、
シーングラフを生成することと
を含み、
前記シーングラフは、前記第１のノードと前記第２のノードとの間の関係を表し、
前記シーングラフは、前記コンピュータシステムのプロセッサによってトラバースされるとき、出力をレンダリングするように構成される、方法。
【請求項２】
前記コンピュータシステムのプロセッサによって、前記シーングラフをトラバースすることをさらに含む、請求項１に記載の方法。
【請求項３】
前記コンピュータシステムは、ディスプレイと通信するように構成され、前記方法はさらに、前記ディスプレイ上に前記出力を表示することを含む、請求項２に記載の方法。
【請求項４】
前記コンピュータシステムにおいて、最適化を前記出力に適用することをさらに含む、請求項２に記載の方法。
【請求項５】
前記最適化を適用することは、表面を抜粋することを含む、請求項４に記載の方法。
【請求項６】
前記コンピュータシステムにおいて、視覚効果を前記出力に適用することをさらに含む、請求項２に記載の方法。
【請求項７】
前記視覚効果を適用することは、光量値を計算することを含む、請求項６に記載の方法。
【請求項８】
前記視覚効果を適用することは、シェーダを実行することを含む、請求項６に記載の方法。
【請求項９】
前記コンピュータシステムにおいて、物理的効果を前記出力に適用することをさらに含む、請求項２に記載の方法。
【請求項１０】
前記物理的効果を適用することは、衝突を検出することを含む、請求項９に記載の方法。
【請求項１１】
前記第１のクライアントアプリケーションは、前記コンピュータシステム上で実行される第１のアプリケーションであり、前記第２のクライアントアプリケーションは、前記コンピュータシステム上で実行される第２のアプリケーションであり、前記第１のクライアントアプリケーションは、前記第２のクライアントアプリケーションに対して前記コンピュータシステム上でサンドボックス化される、請求項１に記載の方法。
【請求項１２】
前記第１のグラフィックデータは、前記第１のクライアントアプリケーションと関連付けられる第１のクライアントシーングラフに対応し、
前記第２のグラフィックデータは、前記第２のクライアントアプリケーションと関連付けられる第２のクライアントシーングラフに対応し、
前記第１のクライアントシーングラフは、前記第２のクライアントシーングラフに対して前記コンピュータシステム上でサンドボックス化され、
前記第１のクライアントシーングラフは、前記シーングラフに対して前記コンピュータシステム上でサンドボックス化され、
前記第２のクライアントシーングラフは、前記シーングラフに対して前記コンピュータシステム上でサンドボックス化される、請求項１に記載の方法。
【請求項１３】
前記シーングラフは、バージョン付きシーングラフのバージョンに対応する、請求項１に記載の方法。
【請求項１４】
前記第１のグラフィックデータは、前記コンピュータシステムの第１の処理スレッドを使用して、前記シーングラフに通信され、前記第２のグラフィックデータは、前記第１の処理スレッドから独立している前記コンピュータシステムの第２の処理スレッドを使用して、前記シーングラフに通信される、請求項１に記載の方法。
【請求項１５】
方法であって、
ディスプレイを伴うコンピュータシステムのシーングラフをトラバースすることであって、
前記シーングラフは、第１のアプリケーションと関連付けられる第１の３Ｄデータを備え、前記第１の３Ｄデータは、１つ以上のノードを備え、
前記シーングラフは、第２のアプリケーションと関連付けられる第２の３Ｄデータを備え、前記第２の３Ｄデータは、１つ以上のノードを備え、
前記第１のアプリケーションは、前記第２のアプリケーションに対して前記コンピュータシステム上でサンドボックス化され、
前記シーングラフは、前記第１の３Ｄデータのノードと前記第２の３Ｄデータのノードとの間の関係を備える、ことと、
前記ディスプレイ上で、前記シーングラフに対応する画像を表示することであって、
前記画像は、前記シーングラフをトラバースすることの出力に対応し、
前記画像は、前記関係を反映する、ことと
を含む、方法。
【請求項１６】
前記関係は、空間関係である、請求項１５に記載の方法。
【請求項１７】
前記コンピュータシステムにおいて、前記シーングラフをトラバースすることの前記出力に最適化を適用することをさらに含む、請求項１５に記載の方法。
【請求項１８】
前記最適化を適用することは、表面を抜粋することを含む、請求項１７に記載の方法。
【請求項１９】
前記コンピュータシステムにおいて、前記シーングラフをトラバースすることの前記出力に視覚効果を適用することをさらに含む、請求項１５に記載の方法。
【請求項２０】
前記視覚効果を適用することは、光量値を計算することを含む、請求項１９に記載の方法。
【請求項２１】
前記視覚効果を適用することは、シェーダを実行することを含む、請求項１９に記載の方法。
【請求項２２】
前記コンピュータシステムにおいて、前記シーングラフをトラバースすることの前記出力に物理的効果を適用することをさらに含む、請求項１５に記載の方法。
【請求項２３】
前記物理的効果を適用することは、衝突を検出することを含む、請求項２２に記載の方法。
【請求項２４】
前記シーングラフは、バージョン付きシーングラフのバージョンに対応する、請求項１５に記載の方法。
【請求項２５】
前記第１の３Ｄデータに対応するグラフィックデータは、前記コンピュータシステム上で実行されるホストアプリケーションによって前記シーングラフに通信される、請求項１５に記載の方法。
【請求項２６】
前記第１の３Ｄデータに対応するグラフィックデータは、前記ホストアプリケーションのクライアントによって前記ホストアプリケーションに通信される、請求項２５に記載の方法。
【請求項２７】
前記第１の３Ｄデータに対応する第１のグラフィックデータは、第１の処理スレッドを使用するホストアプリケーションによって、前記シーングラフに通信され、前記第２の３Ｄデータに対応する第２のグラフィックデータは、前記第１の処理スレッドから独立している第２の処理スレッドを使用する前記ホストアプリケーションによって、前記シーングラフに通信される、請求項１５に記載の方法。
【請求項２８】
コンピュータシステムであって、
１つ以上のプロセッサと、
命令を記憶するメモリであって、前記メモリは、前記１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに、
前記コンピュータシステムにおいて、第１のクライアントアプリケーションから、第１のノードを備える第１のグラフィックデータを受信することと、
前記コンピュータシステムにおいて、前記第１のクライアントアプリケーションと異なる第２のクライアントアプリケーションから、第２のノードを備える第２のグラフィックデータを受信することと、
前記コンピュータシステムにおいて、シーングラフを生成することであって、
前記シーングラフは、前記第１のノードと前記第２のノードとの間の階層関係を表し、
前記シーングラフは、前記１つ以上のプロセッサによってトラバースされるとき、出力をレンダリングするように構成される、ことと
を含む方法を実施させる、メモリと
を備える、コンピュータシステム。
【請求項２９】
前記シーングラフをトラバースすることをさらに含む、請求項２８に記載のコンピュータシステム。
【請求項３０】
前記コンピュータシステムはさらに、ディスプレイを備え、前記方法はさらに、前記ディスプレイ上に前記画像を表示することを含む、請求項２９に記載のコンピュータシステム。
【請求項３１】
前記方法はさらに、前記シーングラフをトラバースすることの前記出力に最適化を適用することを含む、請求項２９に記載のコンピュータシステム。
【請求項３２】
前記最適化を適用することは、表面を抜粋することを含む、請求項３１に記載のコンピュータシステム。
【請求項３３】
前記方法はさらに、前記シーングラフをトラバースすることの前記出力に視覚効果を適用することを含む、請求項２９に記載のコンピュータシステム。
【請求項３４】
前記視覚効果を適用することは、光量値を計算することを含む、請求項３３に記載のコンピュータシステム。
【請求項３５】
前記視覚効果を適用することは、シェーダを実行することを含む、請求項３３に記載のコンピュータシステム。
【請求項３６】
前記方法はさらに、前記シーングラフをトラバースすることの前記出力に物理的効果を適用することを含む、請求項２９に記載のコンピュータシステム。
【請求項３７】
前記物理的効果を適用することは、衝突を検出することを含む、請求項３６に記載のコンピュータシステム。
【請求項３８】
前記第１のクライアントアプリケーションは、前記コンピュータシステム上で実行される第１のアプリケーションであり、前記第２のクライアントアプリケーションは、前記コンピュータシステム上で実行される第２のアプリケーションであり、前記第１のクライアントアプリケーションは、前記第２のクライアントアプリケーションに対して前記コンピュータシステム上でサンドボックス化される、請求項２８に記載のコンピュータシステム。
【請求項３９】
前記第１のグラフィックデータは、前記第１のクライアントアプリケーションと関連付けられる第１のクライアントシーングラフに対応し、
前記第２のグラフィックデータは、前記第２のクライアントアプリケーションと関連付けられる第２のクライアントシーングラフに対応し、
前記第１のクライアントシーングラフは、前記第２のクライアントシーングラフに対して前記コンピュータシステム上でサンドボックス化され、
前記第１のクライアントシーングラフは、前記シーングラフに対して前記コンピュータシステム上でサンドボックス化され、
前記第２のクライアントシーングラフは、前記シーングラフに対して前記コンピュータシステム上でサンドボックス化される、請求項２８に記載のコンピュータシステム。
【請求項４０】
前記シーングラフは、バージョン付きシーングラフのバージョンに対応する、請求項２８に記載のコンピュータシステム。
【請求項４１】
前記第１のグラフィックデータは、前記コンピュータシステムの第１の処理スレッドを使用して、前記シーングラフに通信され、前記第２のグラフィックデータは、前記第１の処理スレッドから独立している前記コンピュータシステムの第２の処理スレッドを使用して、前記シーングラフに通信される、請求項２８に記載のコンピュータシステム。
【請求項４２】
コンピュータシステムであって、
１つ以上のプロセッサと、
記憶装置であって、
前記コンピュータシステムにおいて、第１のクライアントアプリケーションから第１のシーンデータを受信することと、
前記コンピュータシステムにおいて、第２のクライアントアプリケーションから第２のシーンデータを受信することと
を行うように構成される、記憶装置と、
命令を記憶するメモリであって、前記命令は、前記１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに、
前記第１のシーンデータおよび前記第２のシーンデータに基づいて、グラフィックデータ構造を生成することであって、前記グラフィックデータ構造は、前記１つ以上のプロセッサによって実行されるレンダリング動作への入力として提供されるときに、ディスプレイ上の画像に対応する出力をもたらすように構成される、こと
を含む方法を実施させる、メモリと
を備える、コンピュータシステム。
【請求項４３】
前記グラフィックデータ構造は、表示リストおよび表示ツリーのうちの少なくとも１つである、請求項４２に記載のコンピュータシステム。
【請求項４４】
前記方法はさらに、入力として前記グラフィックデータ構造を使用して、前記レンダリング動作を実行することを含む、請求項４２に記載のコンピュータシステム。
【請求項４５】
前記コンピュータシステムはさらに、ディスプレイを備え、前記方法はさらに、前記ディスプレイ上に前記画像を表示することを含む、請求項４４に記載のコンピュータシステム。
【請求項４６】
前記第１のクライアントアプリケーションは、第１のデバイスの１つ以上のプロセッサによって実行される第１のアプリケーションであり、
前記第２のクライアントアプリケーションは、前記第１のデバイスの前記１つ以上のプロセッサによって実行される第２のアプリケーションである、請求項４２に記載のコンピュータシステム。
【請求項４７】
前記第１のクライアントアプリケーションは、第１のデバイスの１つ以上のプロセッサによって実行される第１のアプリケーションであり、
前記第２のクライアントアプリケーションは、第２のデバイスの前記１つ以上のプロセッサによって実行される第２のアプリケーションである、請求項４２に記載のコンピュータシステム。
【請求項４８】
前記記憶装置はさらに、第３のクライアントアプリケーションから第３のシーンデータを受信するように構成される、請求項４２に記載のコンピュータシステム。
【請求項４９】
前記方法はさらに、前記記憶装置から前記第１のシーンデータを削除することを含む、請求項４２に記載のコンピュータシステム。
【請求項５０】
前記グラフィックデータ構造は、第１のデータと、第２のデータとを備え、前記方法はさらに、
前記第１のデータが遮蔽ビューに対応するかまたは未遮蔽ビューに対応するかを決定することと、
前記第１のデータが未遮蔽ビューに対応するという決定に応答して、前記第１のデータに基づいて、前記未遮蔽ビューを備える画像をレンダリングすることと、
前記第１のデータが遮蔽ビューに対応するという決定に応答して、前記遮蔽ビューを備えない画像をレンダリングすることと
を含む、請求項４２に記載のコンピュータシステム。
【請求項５１】
前記記憶装置はさらに、前記第１のシーンデータを受信することに応答して、前記第１のシーンデータを第１のバージョンとしてバージョン制御システムの中に記憶するように構成される、請求項４２に記載のコンピュータシステム。
【請求項５２】
前記記憶装置はさらに、
前記第１のクライアントアプリケーションから第３のシーンデータを受信することと、
前記第３のシーンデータを第２のバージョンとして前記バージョン制御システムの中に記憶することと
を行うように構成される、請求項５１に記載のコンピュータシステム。
【請求項５３】
前記方法はさらに、前記グラフィックデータ構造を生成することに応答して、前記記憶装置から前記第１のバージョンを除去することを含む、請求項５１に記載のコンピュータシステム。
【請求項５４】
前記方法は、前記記憶装置が前記第３のシーンデータを受信することと並行して実施される、請求項４８に記載のコンピュータシステム。
【請求項５５】
前記記憶装置は、前記第２のシーンデータを受信することと並行して前記第１のシーンデータを受信するように構成される、請求項４２に記載のコンピュータシステム。
【請求項５６】
前記記憶装置は、第１のデータレートに対応する第１の間隔で前記第３のシーンデータを受信するように構成され、前記方法はさらに、第２のデータレートに対応するように前記第１の間隔の長さを調節することを含む、請求項５２に記載のコンピュータシステム。
【請求項５７】
前記第１のシーンデータは、新しいデータ、削除されたデータ、およびデータ間の関係の変化のうちの少なくとも１つを備える、請求項４２に記載のコンピュータシステム。
【請求項５８】
コンピュータシステムであって、前記コンピュータシステムは、サーバと、サーバデータと、第１のクライアントアプリケーションと、第２のクライアントアプリケーションとを備え、前記コンピュータシステムは、
前記サーバにおいて、前記第１のクライアントアプリケーションから第１の未処理シーンデータを受信することと、
前記サーバにおいて、前記第２のクライアントアプリケーションから第２の未処理シーンデータを受信することと、
前記サーバにおいて、前記第１のクライアントアプリケーションからの前記第１の未処理シーンデータ、前記第２のクライアントアプリケーションからの前記第２の未処理シーンデータ、および前記サーバデータを、集中シーンデータ構造に組み込むことと、
前記サーバにおいて、前記集中シーンデータ構造内に含有される前記データの少なくとも一部を実行することと、
前記集中シーンデータ構造内で実行された前記データに基づいて、グラフィックデータ構造を作成することと
を行うように構成される、コンピュータシステム。
【請求項５９】
前記グラフィックデータ構造は、表示リストまたは表示ツリーである、請求項５８に記載のコンピュータシステム。
【請求項６０】
前記グラフィックデータ構造を処理画像にレンダリングするように構成されるレンダリングエンジンをさらに備える、請求項５８に記載のコンピュータシステム。
【請求項６１】
前記処理画像を表示するように構成されるディスプレイをさらに備える、請求項６０に記載のコンピュータシステム。
【請求項６２】
前記ディスプレイは、物理的世界の少なくとも部分ビューを維持しながら、仮想コンテンツを表示することが可能である、請求項６１に記載のコンピュータシステム。
【請求項６３】
前記第１のクライアントアプリケーションおよび前記第２のクライアントアプリケーションは、単一の物理的デバイス上で起動する２つの異なるアプリケーションである、請求項５８に記載のコンピュータシステム。
【請求項６４】
前記第１のクライアントアプリケーションおよび前記第２のクライアントアプリケーションは、別個の物理的デバイス上でそれぞれ起動する２つの異なるアプリケーションである、請求項５８に記載のコンピュータシステム。
【請求項６５】
前記サーバは、第３のクライアントアプリケーションから第３の未処理シーンデータを受信するように構成される、請求項５８に記載のコンピュータシステム。
【請求項６６】
前記サーバは、前記第１のクライアントアプリケーションからの前記未処理シーンデータの実行後に、前記第１のクライアントアプリケーションから前記未処理シーンデータを削除するように構成される、請求項５８に記載のコンピュータシステム。
【請求項６７】
前記レンダリングエンジンはさらに、遮蔽モジュールを備え、前記遮蔽モジュールは、前記グラフィックデータ構造内のデータを第１の遮蔽カテゴリおよび第２の未遮蔽カテゴリに分離し、前記第２の未遮蔽カテゴリを表示するように構成される、請求項６０に記載のコンピュータシステム。
【請求項６８】
前記サーバは、前記第１のクライアントアプリケーションからの前記第１の未処理シーンデータを第１のバージョンとして記憶するように構成される、請求項５８に記載のコンピュータシステム。
【請求項６９】
前記サーバは、前記第１のクライアントアプリケーションからの第３の未処理シーンデータを第２のバージョンとして記憶するように構成される、請求項６８に記載のコンピュータシステム。
【請求項７０】
前記コンピュータシステムは、前記第１のクライアントアプリケーションからの前記第１の未処理シーンデータの第１のバージョンが前記サーバによって受信される時間から、前記第１のクライアントアプリケーションからの前記第１の未処理シーンデータが読み取られ、実行される時間まで、前記第１のクライアントアプリケーションからの前記第１の未処理シーンデータの第１のバージョンを記憶するように構成される、請求項６８に記載のコンピュータシステム。
【請求項７１】
前記サーバは、前記サーバが前記第２のクライアントから前記第２の未処理シーンデータを受信するのと同時に、前記第１のクライアントから前記第１の未処理シーンデータを受信するように構成される、請求項５８に記載のコンピュータシステム。
【請求項７２】
前記サーバは、前記第１のクライアントアプリケーションが未処理シーンデータを前記サーバに送信するレートを減速するように構成される、請求項６９に記載のコンピュータシステム。
【請求項７３】
前記第１および第２のクライアントアプリケーションから受信されるデータは、新しいデータ、削除されたデータ、前もって転送されたデータ間の関係の変化、および修正されたデータから成る群から選択される少なくとも１つである、請求項５８に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、２０１７年３月３０日に出願された米国特許出願第６２／４７９，１３４号の３５  Ｕ．Ｓ．Ｃ．  §  １１９（ｅ）のもとでの利益を主張するものであり、該米国特許出願の内容は、あらゆる目的のためにその全体が参照により本明細書中に援用される。
【０００２】
本開示は、一般に、ディスプレイ上でグラフィックデータを視覚的にレンダリングするためのシステムおよび方法に関し、特に、単一のディスプレイ上で複数のコンピュータアプリケーションからデータを視覚的にレンダリングするためのシステムおよび方法に関する。
【背景技術】
【０００３】
種々の技術が、コンピュータアプリケーションのグラフィックデータをディスプレイにレンダリングするために存在する。これらの技術が、グラフィックデータを現実的に、すなわち、物理的世界に基づいて視認者の期待に一致して、かつ効率的に、レンダリングすることが望ましくあり得る。また、レンダリング技術が、例えば、複数のアプリケーションが単一のディスプレイ上に表示されるグラフィックデータを寄与する、コンピュータシステムを含む、種々のトポロジのコンピュータシステムに適応することも望ましくあり得る。
【０００４】
従来的なシステムは、多くの場合、そのような多重アプリケーションシステムにおいてコンテンツを写実的かつ効率的にレンダリングすることができない。例えば、いくつかのそのようなシステムでは、単一のディスプレイ上に複数のアプリケーションからのグラフィックデータをレンダリングすることは、データをディスプレイ上で誤ってソートさせ、ディスプレイの現実感を侵害する、予期しない視覚結果を生成する。さらに、１つのアプリケーションからのグラフィックデータは、照明および影付け効果を介して、またはシェーダを介して等、別のアプリケーションからのグラフィックデータと現実的に相互作用することができない場合がある。加えて、いくつかのそのようなシステムは、不可視表面の抜粋等のレンダリング最適化を使用し、計算効率を増加させる、それらの能力が限定されている。
【０００５】
拡張現実（ＡＲ）または「複合現実」を伴うシステムは、特に、複数のアプリケーションからのグラフィックデータを単一のディスプレイにレンダリングすることの問題のより良好な解決策を要求する。例えば、ＡＲシステムは、複数のユーザが、共有仮想空間内で、単一のディスプレイにレンダリングされる全てのユーザからの仮想コンテンツと相互作用する可能性を持つ。そのような相互作用が、真実味を持ち、ユーザにとって有意義であり、ＡＲシステムのグラフィック出力が、説得力があり、ユーザの視覚期待と一致することを要求し得、異なるタイプおよび数のユーザ、ユーザハードウェア、およびユーザソフトウェア、およびユーザがシステムに関与することを所望し得る異なる方法に適応するために十分に柔軟であり、高いフレームレートで継続的動作を持続するため、かつモバイルデバイス上のバッテリ寿命を最大限にするために十分に効率的であることが望ましくあり得る。さらに、ＡＲシステムにおける個々のユーザと関連付けられるアプリケーションおよびアプリケーションデータが、セキュリティ（信頼できないユーザ間のデータアクセスによって侵害され得る）を提供することと、特に、システムのユーザの数が大きくなるにつれて、スケーラビリティを維持することとの両方のために、他のユーザから独立したままであることが望ましくあり得る。また、そのようなシステムは、ユーザおよびユーザアプリケーションへの技術的制約を最小限にすることから利益を享受し得、例えば、ユーザがＡＲシステムに参加するためのハードウェア要件を限定することは、より多くのユーザに参加するように促す。これは、個々のユーザまたはユーザのハードウェア上で起動するアプリケーションが複雑なレンダリング動作を実施する必要がある程度を限定することによって、例えば、そのような動作を専用ハードウェア上で起動するサーバ側ホストアプリケーション等の共有システムにオフロードすることによって、達成され得る。
【発明の概要】
【課題を解決するための手段】
【０００６】
本開示の実施例は、複数のアプリケーションが単一のディスプレイ上に表示されるグラフィックデータを与える、コンピュータシステムを説明する。本開示の実施例は、グラフィックデータを現実的に、すなわち、物理的世界に基づいて視認者の期待に一致して、かつ効率的に、レンダリングするために使用されることができる。本開示の実施例によると、第１のグラフィックデータは、第１のクライアントアプリケーションから受信されてもよく、第２のグラフィックデータは、第２の独立クライアントアプリケーションから受信されてもよい。第１および第２のグラフィックデータは、第１および第２のグラフィックデータによって表されるノード間の関係を表すために使用され得る、シーングラフ等の「集中」データ構造に組み合わせられてもよい。集中データ構造は、故に、現実的および効率的様式で、第１および第２のグラフィックデータを反映するシーンをディスプレイにレンダリングするために使用されることができる。
【図面の簡単な説明】
【０００７】
【図１】図１Ａ−１Ｅは、本開示の実施例による、グラフィックディスプレイを含む、例示的コンピュータシステムを図示する。
【０００８】
【図２Ａ】図２Ａは、本開示の実施例による、例示的コンピュータシステムにおけるデータの例示的フローを示す。
【０００９】
【図２Ｂ】図２Ｂは、本開示の実施例による、例示的コンピュータシステムに対応する例示的レンダラ出力を示す。
【００１０】
【図２Ｃ】図２Ｃは、本開示の実施例による、複数の独立アプリケーションを含む、例示的コンピュータシステムにおけるデータの例示的フローを示す。
【００１１】
【図２Ｄ】図２Ｄは、本開示の実施例による、複数の独立アプリケーションを含む、例示的コンピュータシステムに対応する例示的レンダラ出力を示す。
【００１２】
【図３Ａ】図３Ａは、本開示の実施例による、集中シーングラフを使用して、複数の独立アプリケーションからの３Ｄデータをディスプレイにレンダリングし得る、例示的コンピュータシステムのコンポーネントを図示する。
【００１３】
【図３Ｂ】図３Ｂは、本開示の実施例による、複数の独立クライアントアプリケーションを含む、例示的コンピュータシステムに関する例示的クライアントアプリケーションの側面を図示する。
【００１４】
【図３Ｃ】図３Ｃは、本開示の実施例による、複数の独立クライアントアプリケーションを含む、例示的コンピュータシステムに関する例示的クライアント・サーバインターフェースの側面を図示する。
【００１５】
【図３Ｄ】図３Ｄは、本開示の実施例による、複数の独立クライアントアプリケーションを含む、例示的コンピュータシステムに関する例示的ホストアプリケーション３４０の側面を図示する。
【００１６】
【図３Ｅ】図３Ｅは、本開示の実施例による、複数の独立クライアントアプリケーションを含む、例示的コンピュータシステムに関する例示的レンダラ３６０の側面を図示する。
【００１７】
【図４】図４は、本開示の実施例による、任意の携帯用または非携帯用デバイス内で具現化され得る、システムアーキテクチャの実施例を図示する。
【発明を実施するための形態】
【００１８】
以下の実施例の説明では、本明細書の一部を形成し、例証として、実践され得る具体的実施例が示される、付随する図面が参照される。他の実施例も使用され得、構造変更が、開示される実施例の範囲から逸脱することなく行われ得ることを理解されたい。
【００１９】
図１Ａから１Ｅは、ディスプレイを伴う種々の例示的コンピュータシステムを図示する。図１Ａは、外部モニタに接続される例示的デスクトップコンピュータを示す。図１Ｂは、ディスプレイを含む、例示的ラップトップを示す。図１Ｃは、統合ディスプレイを含む、例示的モバイルデバイスを示す。図１Ｄは、ディスプレイを含む、例示的テレビを示す。図１Ｅは、頭部搭載型ディスプレイを含む、例示的コンピュータシステムを示す。本開示は、いかなる特定のタイプのコンピュータシステムにも、いかなる特定のタイプのディスプレイにも、またはコンピュータシステムをディスプレイに接続するいかなる特定の手段にも限定されない。本開示はさらに、２次元ディスプレイに限定されず、特に、立体ディスプレイ等の３次元ディスプレイが、考慮される。
【００２０】
いくつかの例示的コンピュータシステムでは、ディスプレイ上にグラフィックで提示されるデータは、３次元空間内でオブジェクト（多角形を含む、２Ｄまたは３Ｄ幾何プリミティブ等）を表すデータ（「３Ｄデータ」）を含み、ディスプレイ上で３Ｄデータを提示することは、視認軸に沿って配向される視認起点から視認されるような３次元空間内のオブジェクトに対応する画像（「レンダリングされたシーン」）を提示することを含む。例えば、コンピュータシステム上で起動するソフトウェアアプリケーション（３Ｄエンジンを使用するビデオゲーム等）では、３Ｄデータは、３次元ゲーム世界の中のオブジェクトの空間座標、配向、および／または視覚性質、およびゲーム世界の中の視認起点および視認軸を表すデータを含んでもよい。３Ｄデータはまた、レンダリングされるオブジェクトと関連付けられるテクスチャに関するデータ、オブジェクトに関するシェーダパラメータ、およびオブジェクトが表示され得る方法に影響を及ぼす他の情報を含んでもよい。ゲームは、例えば、「レンダリング」または「描画」段階中に、ディスプレイ上にレンダリングされたシーンを提示するように、ソフトウェアおよび／またはハードウェア「パイプライン」に指図してもよい。そのような実施例では、概して、結果として生じる画像が、視覚世界についてのユーザの期待を反映することが望ましい。特に、概して、視認起点により近い第１の不透明なオブジェクトが、第１のオブジェクトの後ろの第２のオブジェクトを遮蔽することが望ましい。正しく遮蔽されていないオブジェクトは、ユーザを混乱させ得、オブジェクトが３次元空間内に位置する場所を明確に提示しない場合がある。いくつかの例示的コンピュータシステムでは、遮蔽は、視認起点により近いオブジェクトが、視認起点からより遠いオブジェクトの上でソートまたは描画される、ソーティングを通して達成される。
【００２１】
１つのオブジェクトが別のオブジェクトを現実的に遮蔽するように、ディスプレイ上に提示するために複数のオブジェクトをソートすることは、オブジェクト間の関係、例えば、３次元空間内のオブジェクト間の空間関係についての情報を要求する。いくつかの例示的コンピュータシステムは、シーングラフを利用し、シーンとしてレンダリングされるオブジェクト等の１つ以上のオブジェクトの間の関係（例えば、階層関係）を表す。本明細書で使用されるように、シーングラフは、そのような関係を表す任意のデータ構造である。例えば、シーングラフでは、レンダリングされるオブジェクトは、グラフではノードとして表されてもよく、ノード間の関係は、オブジェクト間の論理または空間関係を表す。レンダラは、次いで、当技術分野で公知の技法に従って、シーングラフをトラバースし、適切な遮蔽を達成するであろう様式で、オブジェクトを表示することができる。いくつかの実施例では、シーングラフは、３Ｄデータを含むアプリケーションと、その３Ｄデータを画面にレンダリングするためのレンダラとの間に位置する、中間データ構造であり、いくつかの実施例では、アプリケーションは、シーン情報をシーングラフに書き込み、シーングラフは、以降で、シーンをレンダリングするためにレンダラによって使用されてもよい。
【００２２】
図２Ａは、例示的コンピュータシステム２００におけるデータの例示的フローを示す。システム２００では、単一のアプリケーション２１０は、レンダラ２５０がオブジェクト２２０をディスプレイ２９０にレンダリングするために使用し得る、シーングラフ２４０にデータを書き込むことができる。例えば、オブジェクト２２０は、２つの人間の手、すなわち、手２３２および手２３６の３Ｄ表現をともに構成するいくつかのオブジェクト（例えば、多角形）を含んでもよく、アプリケーションは、例えば、レンダリングまたは描画段階中に、視認軸に沿って配向される視認起点の視点からディスプレイ上にレンダリングされるようにオブジェクト２２０に指図してもよい。実施例では、手２３２および手２３６は、握手で相互係止され、手の相対位置付けにより、視認者は、視認起点および視認軸に対して、手２３２のいくつかの部分が手２３６の部分を遮蔽し、手２３６を構成するいくつかの多角形が手２３２の部分を遮蔽することを予期する。アプリケーション２１０は、他の多角形を遮蔽するはずである多角形、すなわち、他のものの上に表示するようにソートされるはずである多角形を識別するために使用され得る、オブジェクト２２０を構成する多角形の間の空間関係等のオブジェクト２２０の間の関係を表す情報を、シーングラフ２４０に書き込むことができる。例えば、シーングラフ２４０は、多角形２３４（手２３２に属する）が、視認起点と手２３６を構成する多角形との間に位置付けられ、したがって、手２３６の中のこれらの多角形を遮蔽するはずであり、多角形２３８（手２３６に属する）が、視認起点と手２３２を構成する多角形との間に位置付けられ、したがって、手２３２の中のこれらの多角形を遮蔽するはずであることを反映し得る。レンダラ２５０は、次いで、オブジェクト２２０を、所望の遮蔽と一致してディスプレイ２９０にレンダリングしてもよい。
【００２３】
図２Ｂは、図２Ａに示される例示的コンピュータシステム２００のレンダラ２５０の例示的出力を示す。図２Ａに関して上記に説明される実施例では、オブジェクト２２０の相対位置に基づいて、視認者は、手２３２を構成するいくつかのオブジェクト（多角形２３４等）が手２３６を遮蔽し、手２３６を構成するいくつかのオブジェクト（多角形２３８等）が手２３２を遮蔽することを予期する。図２Ｂに示される例示的出力は、予期される遮蔽と一致する。すなわち、図２Ａのオブジェクト２２０は、視認者の期待に一致する握手をディスプレイ２９０上に提示するように正しく表示される。
【００２４】
図２Ａおよび２Ｂに示される例示的コンピュータシステム２００では、シーングラフ２４０は、単一のアプリケーションのみによって、アプリケーション２１０に直接書き込まれる。レンダラ２５０は、次いで、シーングラフ２４０をトラバースし、適切な遮蔽を伴って手２３２および手２３６をレンダリングする。例示的コンピュータシステム２００等のレンダリングプロセスの一部としてシーングラフを使用する従来的なシステムは、シーングラフ（例えば、シーングラフ２４０）が複数の独立アプリケーションから直接入力を受信するときに、オブジェクトを正しく遮蔽しない場合がある。これらの状況では、例示的コンピュータシステム２００と異なり、ディスプレイ上でオブジェクトを正しくソートするために必要とされ得る、オブジェクト関係データの全てを伴うシーングラフを提供し得る、アプリケーションが１つも存在しない。
【００２５】
図２Ｃは、２つの独立アプリケーションを使用する、例示的コンピュータシステム２０１におけるデータの例示的フローを示し、上記に説明される遮蔽問題を図示する。上記に説明される例示的コンピュータシステム２００と異なり、例示的コンピュータシステム２０１は、２つの独立アプリケーション、すなわち、アプリケーション２１２およびアプリケーション２１４とを含む。例示的コンピュータシステム２０１では、アプリケーション２１２およびアプリケーション２１４は両方とも、データをシーングラフ２４０に書き込み、それらの個別の３Ｄデータを単一のディスプレイ２９０にレンダリングする。図２Ｃでは、アプリケーション２１２は、オブジェクト２２２（手２３２を構成するオブジェクトを含む）をレンダリングしようとし、アプリケーション２１４は、オブジェクト２２４（手２３６を構成するオブジェクトを含む）をレンダリングしようとする。本実施例では、図２Ａおよび２Ｂに説明される実施例のように、手２３２および手２３６は、同一の３Ｄ環境内で現在表示されている場合、視認者が、手２３２の部分が手２３６を遮蔽し、手２３６の部分が手２３２を遮蔽することを予期するであろうように、握手で相互係止されるであろう。
【００２６】
図２Ｃに示される実施例は、レンダリングされるオブジェクトの現実的な遮蔽を達成する困難を有し得る。実施例では、アプリケーション２１２は、オブジェクト２２２（手２３２を含む）に対応するデータをシーングラフ２４０に書き込むことができ、アプリケーション２１４は、オブジェクト２２４（手２３６を含む）に対応するデータを同一のシーングラフ２４０に書き込むことができる。しかしながら、例示的コンピュータシステム２０１では、アプリケーション２１２およびアプリケーション２１４が独立（「サンドボックス化された」）アプリケーションである場合、アプリケーション２１２は、アプリケーション２１４のオブジェクト２２４（手２３６およびその構成オブジェクトを含む）に関するデータにアクセスすることができず、同様に、アプリケーション２１４は、アプリケーション２１２のオブジェクト２２２（手２３２およびその構成オブジェクトを含む）に関するデータにアクセスすることができない。すなわち、いくつかの実施例では、アプリケーション２１２もアプリケーション２１４も、オブジェクト２２２とオブジェクト２２４との間の関係を完全に識別することができない。したがって、アプリケーション２１２もアプリケーション２１４も、他のオブジェクトを遮蔽するオブジェクト、またはオブジェクトがディスプレイ上でソートされるはずである順序を識別するために必要であり得る、情報をシーングラフ２４０に書き込むことができない。
【００２７】
図２Ｄは、図２Ｃに示される例示的コンピュータシステム２０１のレンダラ２５０の例示的出力を示す。図２Ｃに関して上記に説明される実施例では、オブジェクト２２２およびオブジェクト２２４の相対位置付けに基づいて、視認者は、手２３２のいくつかの部分が手２３６を遮蔽し、手２３６のいくつかの部分が手２３２を遮蔽することを予期する。しかしながら、図２Ａおよび２Ｂと異なり、図２Ｃのシーングラフ２４０は、上記で説明されるように、オブジェクト２２２および２２４を正しくソートし、所望の遮蔽を生じることができない。代わりに、示される実施例では、オブジェクト２２２の全ては、オブジェクト２２４の全ての上にソートされる。図２Ｄに示される例示的出力は、したがって、予期される遮蔽と一致しない。結果として生じる握手画像は、したがって、アプリケーション２１２およびアプリケーション２１４においてオブジェクトを正確に反映せず、画像は、加えて、不自然に見え得、視認者にとって紛らわしくあり得る。
【００２８】
図２Ａから２Ｄのシーングラフ２４０等の従来的なシーングラフの他の不利点は、例示的コンピュータシステム２０１の中等の複数の独立アプリケーションと併用されるときに、明白である。例えば、レンダリング効率は、図２Ａのアプリケーション２１０の中等でレンダリングされるシーン全体に対応するデータを使用して、実現されることができる。例えば、遮蔽されるであろう表面を把握することによって、図２Ａの例示的コンピュータシステム２００は、これらの表面を抜粋するようにシステム２００に命令し、それによって、計算リソースの不必要な支出を回避することができる。本抜粋は、各アプリケーションが、抜粋されるはずである表面を決定するためのシーン知識を保有しない場合があるため、図２Ｃの例示的コンピュータシステム２０１等の多重アプリケーションシステムでは可能ではない場合がある。さらに、例示的コンピュータシステム２００等の単一のアプリケーションのみを伴う、いくつかの実施例では、有益な効果が、シーンの中の他のオブジェクトの存在に基づいて、オブジェクトに適用されてもよい。例えば、現実的な照明および影付け効果をオブジェクトに適用することは、近傍のオブジェクトに対応するデータを要求し得る。さらに、いくつかのシェーダ効果は、そのようなデータから利益を享受する。同様に、粒子システムまたは衝突検出システムによって生成される効果は、そのようなデータから利益を享受し得る。そのような効果は、そのような効果を適用するために必要なノード関係情報の全てを提供することが可能であり得るアプリケーションが１つも存在しないため、３Ｄデータが複数の独立アプリケーションによって提供されるシステムでは、限定される、または不可能であり得る。
【００２９】
本開示は、集中シーングラフを使用し、複数の独立アプリケーションからの３Ｄデータをレンダリングするシステムの上記の不利点に対処する、システムおよび方法を提示する。集中シーングラフが、複数の独立アプリケーションがレンダリングされる３Ｄデータを提供するシステム（図２Ｃの例示的コンピュータシステム２０１等）で、図２Ｃのシーングラフ２４０等の従来的なシーングラフの代わりに、使用されることができる。本明細書に説明されるように、いくつかの実施例では、集中シーングラフは、複数の個々の入力源から３Ｄデータを受信し、その３Ｄデータに対応する情報を中心の場所に書き込み、その３Ｄデータに基づいて画像をレンダリングするレンダラによるアクセスのためにその情報を維持する、システムを含むことができる。そのグラフィック出力は、現実的なオブジェクト遮蔽、計算効率、視覚効果（照明および影付け等）、または別様に集中シーングラフを利用しないシステムでは実現することが困難または不可能であろう物理的効果（衝突検出等）を反映してもよい。
【００３０】
いくつかの実施例では、例示的コンピュータシステムは、共通３Ｄ環境内の１つ以上のオブジェクトを表す３Ｄデータをそれぞれ含む、複数のアプリケーションを含む。複数のアプリケーションはそれぞれ、他のアプリケーションに依存しないままであるように、「サンドボックス化された」環境に存在してもよく、例えば、各個別のアプリケーションのデータは、各他のアプリケーションのデータから独立し得、各アプリケーションは、各他のアプリケーションのデータへのアクセスを有していない場合があり、アプリケーションのそれぞれの３Ｄデータが、同一の３Ｄ環境に対応し得る一方で、各アプリケーションは、３Ｄ環境のその独自のインスタンスを維持する。例えば、各アプリケーションは、各プレーヤが同一のゲーム世界のインスタンスまたは３Ｄ環境内に存在するが、他のプレーヤのデータへの直接アクセスが欠けている、オンラインマルチプレーヤビデオゲームの中のプレーヤを表してもよい。そのような実施例では、全てのプレーヤが、ゲーム世界の単一のインスタンスで同時にレンダリングされることが望ましくあり得るが、各プレーヤが、各他のクライアント参加者の３Ｄデータをレンダリングするために必要な情報を維持することは望ましくない場合がある（または計算的に法外に高価である）。さらに、セキュリティ目的のために、他のプレーヤに利用可能であるプレーヤの情報を限定することが望ましくあり得る。
【００３１】
いくつかの実施例では、複数のサンドボックス化されるアプリケーションはそれぞれ、独立して、その３Ｄデータに対応する情報をローカルシーングラフに書き込むことができ、その情報は、以降で共通集中シーングラフに書き込まれる。集中シーングラフは、次いで、各アプリケーションによって提供される集合的３Ｄデータに基づいて、ディスプレイに画像をレンダリングするように、レンダラによってトラバースされることができる。複数のサンドボックス化されたアプリケーションのそれぞれから単一の集中シーングラフに３Ｄデータを通信することによって、レンダラは、全てのアプリケーションの３Ｄデータの同時知識を要求する、またはそれから利益を享受する、遮蔽、照明効果、およびレンダリング最適化（表面抜粋等）等の有益な技法を適用することができる。これらの利益は、各サンドボックス化されたアプリケーションのために要求される計算オーバーヘッドを限定しながら、実現され、単一のアプリケーションの視点から、アプリケーションが行わなければならないことは、単一のシーングラフを更新し、その３Ｄデータを反映することのみであり、他の動作は、システムの別のコンポーネントによって実施される。さらに、セキュリティ利益が、サンドボックス化されたアプリケーションの間の分離を維持することによって、取得されることができる。
【００３２】
図３Ａは、集中シーングラフを使用して、複数の独立アプリケーションからの３Ｄデータをディスプレイにレンダリングし得る、例示的コンピュータシステム３００のコンポーネントを図示する。図示される実施例は、クライアント・サーバトポロジを利用するが、しかしながら、本開示は、クライアント・サーバ実施例に限定されない。例示的コンピュータシステム３００では、第１のクライアントアプリケーション３１０および第２のクライアントアプリケーション３２０はそれぞれ、（いくつかの実施例では、ネットワークを経由して）３Ｄデータをクライアント・サーバインターフェース３３０に通信する。いくつかの実施例では、クライアントアプリケーション３１０および３２０は、相互から独立して動作し、独立してそれらの３Ｄデータをクライアント・サーバインターフェース３３０に通信する、「サンドボックス化された」アプリケーションである。クライアント・サーバインターフェース３３０は、クライアントアプリケーション３１０および３２０から更新された３Ｄデータを受信し、（いくつかの実施例では、ネットワークを経由して）その３Ｄデータをサーバ側ホストアプリケーション３４０に通信することができる。いくつかの実施例では、クライアント・サーバインターフェース３３０は、マルチスレッディング技法を使用し、複数のプロセッサスレッドを使用して、３Ｄデータを受信し、処理し、および／またはホストアプリケーション３４０に通信する。いくつかの実施例では、クライアント・サーバインターフェースは、３Ｄデータがホストアプリケーション３４０に通信されるレートを（抑制することによって等）制御するための論理を含む。ホストアプリケーション３４０は、クライアント・サーバインターフェースから受信される３Ｄデータを使用し、集中シーングラフ３５０がクライアントアプリケーション３１０および３２０から受信される３Ｄデータを反映するように、集中シーングラフ３５０を更新することができる。いくつかの実施例では、集中シーングラフ３５０は、シーングラフの複数のバージョンを備え、既知のバージョニング技法が、集中シーングラフ３５０への更新が並行して起こることを可能にするために使用される。レンダラ３６０は、次いで、集中シーングラフ３５０をトラバースし、適宜、最適化および効果を適用し、コンピュータモニタ等のディスプレイ３７０上に表示されるようにグラフィック出力を生成することができる。
【００３３】
図３Ｂは、図３Ａに示される例示的コンピュータシステム３００に関する例示的クライアントアプリケーション３１０の側面を図示する。示される実施例では、３Ｄデータ３１２は、ディスプレイ３７０上に描画される、３Ｄ環境内のグラフィックオブジェクト（幾何プリミティブ、例えば、多角形等）を表す。３Ｄデータ３１２は、クライアントアプリケーション３１０によって更新されてもよい（３１４）。例えば、クライアントアプリケーション３１０が、１秒あたり６０回反復するレンダリングループを伴うアプリケーションである場合、クライアントアプリケーション３１０は、３Ｄデータ３１２を１秒あたり６０回更新し、レンダリング出力で反映されるはずであるアプリケーションの動作の経過中に、そのデータへの変更を反映してもよい。いくつかの実施例では、３Ｄデータ３１２は、各クライアントアプリケーション３１０にローカルであり得る、ローカルシーングラフ３１６として表される。いくつかの実施例では、ローカルシーングラフ３１６は、集中シーングラフ３５０の中のデータに対応するデータ（ノード等）を含んでもよい。３Ｄデータ３１２が更新される（３１４）と、クライアントアプリケーション３１０は、ローカルシーングラフ３１６を更新し、３Ｄデータ３１２の直近のバージョンを反映することができる。ローカルシーングラフ３１６が更新されると、クライアントデータ３１８を生成する（３１７）ようにクライアントアプリケーション３１０によって使用されることができる。いくつかの実施例では、クライアントデータ３１８は、その全体としてローカルシーングラフ３１６を表してもよい。いくつかの実施例では、クライアントデータ３１８は、前のクライアントデータ３１８がクライアント・サーバインターフェース３３０に送信された以降にローカルシーングラフ３１６に行われた変更を表してもよい。例えば、クライアントデータ３１８は、ローカルシーングラフ３１６に追加された、またはそこから削除されたノード、ローカルシーングラフ３１６の中のノード間の関係の変更、またはローカルシーングラフ３１６の中のノードの性質の変更を含み得る。いくつかの実施例では、クライアントデータ３１８は、シーングラフノードに対応する識別番号等の識別子を使用し、ローカルシーングラフ３１６からのデータと集中シーングラフ３５０上の対応するデータとの間の関係を識別してもよい。クライアントデータ３１８は、次いで、ホストアプリケーション３４０への最終的な通信のために、クライアント・サーバインターフェース３３０に通信されることができる。いくつかの実施例では、クライアント・サーバインターフェース３３０へのクライアントデータ３１８の通信は、ネットワークを経由して起こってもよい。いくつかの実施例では、クライアントヘルパアプリケーションが、ローカルシーングラフ３１６から、または３Ｄデータ３１２から、クライアントデータ３１８を生成するために、クライアントアプリケーション３１０と併せて使用されてもよい。
【００３４】
クライアントアプリケーション３１０に関して説明される側面は、同様に、クライアントアプリケーション３２０、または（クライアントアプリケーション３１０とともに）例示的コンピュータシステム３００を備える他のクライアントアプリケーションを説明し得る。本明細書に説明されるシステムおよび方法は、任意の数のクライアントアプリケーションおよびクライアントデータを含むように拡張され得、本開示は、いかなるそのような数にも限定されず、さらに、いくつかの利益（例えば、計算効率の向上）が、ますます増加するクライアントアプリケーションを用いるとより明白になり得ることが、当業者によって理解されるであろう。上記で説明されるように、クライアントアプリケーション３１０および３２０は、データまたは機能性を共有しない、サンドボックス化されたアプリケーションであってもよい。例えば、例示的コンピュータシステム３００では、クライアントアプリケーション３２０は、クライアントアプリケーション３１０に属する、３Ｄデータ３１２およびローカルシーングラフ３１６から独立している、その独自の３Ｄデータおよびローカルシーングラフを有してもよい。しかしながら、例示的コンピュータシステム３００を含む、いくつかの実施例では、単一のクライアント・サーバインターフェース３００が、クライアントアプリケーション３１０および３２０等の複数のクライアントアプリケーションによって共有される。
【００３５】
図３Ｃは、図３Ａおよび３Ｂに示される例示的コンピュータシステム３００に関する例示的クライアント・サーバインターフェース３３０の側面を図示する。実施例では、クライアントデータ３１８およびクライアントデータ３２８は、図３Ｂに関して上記で説明されるように、個別のクライアントアプリケーション３１０および３２０に通信される、またはそれによって更新される、クライアントデータである。いくつかの実施例では、クライアントデータ３１８および３２８は、異なるレートにおいてクライアント・サーバインターフェース３３０上で更新されてもよい。これは、例えば、１つのクライアントアプリケーションが、別のクライアントアプリケーションよりも能力が低いコンピューティングハードウェア上で実行される（そのクライアントアプリケーションに、そのクライアントデータを低頻度で更新させる）場合、１つのクライアントアプリケーションが、別のクライアントアプリケーションよりも低い帯域幅のネットワークを経由してクライアント・サーバインターフェース３３０と通信する場合、または１つのクライアントアプリケーションと関連付けられるクライアントデータが、別のクライアントアプリケーションと関連付けられるクライアントデータよりも複雑である（かつ生成するためにより多くの処理時間を要求する）場合に、起こり得る。クライアント・サーバインターフェース３３０上でクライアントデータを更新する異なるレートはまた、ネットワーク故障がクライアントアプリケーションを一時的にオフラインにさせる場合等の動作条件の一時的急変の結果であってもよい。例えば、コンピュータシステム３００が、クライアントデータを更新する異なるレートに耐えることが望ましく、例えば、１つのクライアントアプリケーションに影響を及ぼすネットワーク故障が、他のクライアントアプリケーションからのクライアントデータを使用して集中シーングラフ３５０を更新するレート、またはシーンがレンダリングされるレートに悪影響を及ぼさないことが望ましくあり得る。また、集中シーングラフ３５０を更新する際に、クライアントアプリケーションに対する集中シーングラフまたはレンダリングされた表示の不安定化または非同期化をもたらし得るため、１つのクライアントアプリケーションからのクライアントデータが、他のクライアントアプリケーションからのクライアントデータに過剰に遅れて遅延しない、またはその前で過剰に先導しないことを確実にすることが望ましくあり得る。
【００３６】
いくつかの実施例では、クライアント・サーバインターフェース３３０の役割は、クライアントデータを更新するレートの差異または変動に対処することである。図３Ｃを参照すると、例示的クライアント・サーバインターフェース３３０は、それぞれ、独立処理スレッド３３２および３３４を介してクライアントデータ３１８および３２８を受信してもよく、スレッドに対処するためのスレッドマネージャ３３６を含んでもよい。複数のスレッドを利用し、クライアントアプリケーション３１０およびクライアントアプリケーション３２０等の異なるソースからのクライアントデータを更新することは、１つのソースに関する問題が他のソースからのデータを遮断することまたは別様に悪影響を及ぼすことを防止することができる。示される実施例では、スレッドマネージャ３３６は、それぞれ、スレッド３３２および３３４を使用して、クライアントアプリケーション３１０および３２０からクライアントデータ３１８および３２８を入力し、ホストデータ３１９および３２９（それぞれ、クライアントデータ３１８および３２８、クライアントアプリケーション３１０および３２０、およびスレッド３３２および３３４に対応する）をホストアプリケーション３４０に出力してもよい。スレッドマネージャ３３６は、スレッド３３２および３３４を処理するため、スループット問題およびスレッド３３２および３３４に関する他の問題を識別し、対処するため、および／またはホストデータ３１９および３２９の出力を制御するための論理を含んでもよい。例えば、クライアントデータ３１８およびクライアントデータ３２８が、（それぞれ、スレッド３３２および３３４を介して）ほぼ同一のレートで更新している場合、スレッドマネージャ３３６は、単純に、ほぼ同一のレートでホストデータ３１９および３２９（それぞれ、クライアントデータ３１８および３１９に対応する）を更新してもよい。しかしながら、クライアントデータ３１８がクライアントデータ３２８よりもはるかに速いレートで更新される場合、スレッドマネージャ３３６は、（例えば、低頻度でそれをホストアプリケーション３４０に通信することによって）クライアントデータ３１８を抑制し、それがクライアントデータ３２８をはるかに上回ることを防止してもよい。スレッドマネージャ３３６はまた、ホストデータが更新される全体的レートを制御してもよい。例えば、スレッドマネージャ３３６は、ホストデータ３１９および／または３２９を更新するレートを抑制し、本ホストデータが、ホストアプリケーション３４０がそれを処理し得るよりも速く更新すること（クライアントアプリケーション３１０および／または３２０、集中シーングラフ３５０、およびディスプレイ３７０への出力の望ましくない非同期化をもたらし得る）を防止する。
【００３７】
図３Ｄは、図３Ａ−３Ｃに示される例示的コンピュータシステム３００に関する例示的ホストアプリケーション３４０の側面を図示する。本明細書では、スレッド３４１がホストアプリケーション３４０内で付加的スレッドと同時に実行され得る、ホストアプリケーション３４０内のスレッド３４１内で実行される動作が説明される。いくつかの実施例では、ホストアプリケーション３４０内のマルチスレッド処理は、複数のクライアントアプリケーションまたはホストデータの複数のセットが、（いくつかの実施例では、集中シーングラフの異なるバージョンを更新することによって）同一の集中シーングラフ３５０を同時に更新することを可能にするという利点を持ち得る。これは、ひいては、レンダリングされた表示へのクライアントデータの全体的スループットを増加させ得る。いくつかの実施例では、マルチスレッディングは、例えば、スレッドが不注意に同一のデータに書き込むことを防止するために、ロックが集中シーングラフデータ上に設置されることを要求し得る。しかしながら、いくつかの実施例では、説明される動作のうちの１つ以上のものは、スレッド内で実行されない場合がある。
【００３８】
図３Ｄに示される実施例では、ホストデータ３１９（クライアントアプリケーション３１０およびクライアントデータ３１８に対応する）が、図３Ｃに関して上記で説明されるように更新される（３４２）。ホストアプリケーション３４０は、次いで、ホストデータ３１９が集中シーングラフ３５０の前のバージョンに行い得る変更を識別してもよい。例えば、ホストアプリケーション３４０は、集中シーングラフ３５０に関して、ホストデータ３１９がノードを追加する、ノードを削除する、２つのノード間の関係を変更する、またはノードの性質を変更するであろうことを識別してもよい。（図３Ｄに示される実施例等のいくつかの実施例では、ホストアプリケーション３４０は、ホストデータハンドラ３４４を使用して、これらの動作またはその他を実施してもよい）。ホストアプリケーション３４０は、ホストデータ３１９に従って作成または更新される集中シーングラフ３５０のバージョンを識別してもよい（３５２）。いくつかの実施例では、集中シーングラフ３５０のバージョン３５２に書き込むことに先立って、ホストアプリケーション３４０は、そのバージョンをロックし、他のプロセスがそれを同時に処理することを防止してもよい。ホストアプリケーション３４０は、（例えば、ホストデータ３１９に対応するようにバージョン３５２の中のシーングラフノードを追加または削除することによって）バージョン３５２に変更を行い、ホストデータ３１９を反映してもよい。いくつかの実施例では、ホストアプリケーション３４０は、次いで、バージョン３５２をロック解除し、バージョン３５２に対応するバージョン番号の値を更新してもよい（３５６）。ホストアプリケーション３４０は、次いで、ホストデータを更新し（３４２）、図３Ｄに示されるプロセスを繰り返してもよい。集中シーングラフ３５０が個々のクライアントアプリケーションから導出される個々のホストデータを反映するように更新されると、集中シーングラフ３５０は、個々のクライアントアプリケーションが「サンドボックス化され」、相互から独立し得ても、複数のクライアントアプリケーションからの集合的ホストデータを反映するであろう。
【００３９】
図３Ｅは、図３Ａ−３Ｄに示される例示的コンピュータシステム３００に関する例示的レンダラ３６０の側面を図示する。いくつかの実施例では、レンダラ３６０は、ホストアプリケーション３４０の一部を備える。いくつかの実施例では、レンダラ３６０は、例示的コンピュータシステム３００の別のコンポーネントの一部であってもよい、または別個のコンポーネントまたはアプリケーションであってもよい。いくつかの実施例では、レンダラ３６０は、例示的コンピュータシステム３００の１つ以上のコンポーネンと異なる物理的ハードウェアで実装されてもよく、ネットワークを経由してこれらのコンポーネントのうちの１つ以上のものと通信してもよい。
【００４０】
図３Ｅに示される実施例では、レンダラ３６０は、集中シーングラフ３５０のバージョン３５２に作用する。実施例では、レンダラの役割は、集中シーングラフ３５０のバージョン３５２に基づいて、グラフィック出力をディスプレイ３７０にレンダリングすることである。本目的の一部として、レンダラ３６０は、既知のシーングラフトラバース技法を使用して、バージョン３５２をトラバースしてもよい（３６２）。トラバース３６２中または後に、レンダラ３６０は、適宜、集中シーングラフ３５０を更新（３６４）し、トラバースの結果を反映してもよい。例えば、トラバース３６２の一部として、レンダラ３６０は、集中シーングラフ３５０から削除されるはずである、放棄されたノードを識別してもよい。トラバース３６２および／または更新３６４後に、レンダラ３６０は、種々の最適化３６６をシーンに適用してもよい。例えば、レンダラ３６０は、曖昧なまたは不可視の表面を抜粋し、不必要な計算リソースを消費することを回避してもよい。トラバース３６２および／または更新３６４後に、レンダラ３６０は、１つ以上の視覚効果３６７をシーンに適用してもよい。例えば、いくつかの実施例では、レンダラ３６０は、照明効果または影効果を適用する、１つ以上のシェーダを適用する、粒子効果を適用する、および／または物理的効果を適用してもよい。最後に、レンダラ３６０は、データをグラフィック出力パイプラインに出力することができ、その結果は、ディスプレイ３７０上にグラフィック出力を表示することができる。
【００４１】
コンピュータシステムの上記の例示的プロセスは、任意の好適な論理回路によって提供されてもよい。好適な論理回路は、ソフトウェアプログラムで実装される命令を実行するときにプロセスを実施する、１つ以上のコンピュータプロセッサ（例えば、ＣＰＵ、ＧＰＵ等）を含んでもよい。加えて、そのようなプロセスはまた、プロセスを提供する論理設計を実装する、プログラマブル論理（例えば、ＰＬＤ、ＦＰＧＡ等）またはカスタマイズされた論理（例えば、ＡＳＩＣ等）等のハードウェア論理回路で実装される、対応する論理設計を介して、提供されることもできる。さらに、そのようなプロセスは、ソフトウェアおよびハードウェア論理回路を起動する、両方の１つ以上のプロセッサを組み合わせる実装を介して、提供されることができる。
【００４２】
図４は、上記の実施例のうちのいずれかまたは全てを実装するために使用され得る、例示的システム４００を図示する。上記の実施例（全体的または部分的）は、任意の携帯用デバイス（ウェアラブルデバイスを含む）または非携帯用デバイス、例えば、通信デバイス（例えば、携帯電話、スマートフォン）、マルチメディアデバイス（例えば、ＭＰ３プレーヤ、ＴＶ、ラジオ）、携帯用またはハンドヘルドコンピュータ（例えば、タブレット、ノートブック、ラップトップ）、デスクトップコンピュータ、一体型デスクトップ、周辺デバイス、頭部搭載型デバイス（例えば、統合ディスプレイを含み得る）、またはこれらのタイプのデバイスのうちの２つ以上のものの組み合わせを含む、例示的システムアーキテクチャ４００の包含に適合可能な任意の他のシステムまたはデバイス内で具現化されてもよい。上記の実施例は、無線ネットワークを介して通信する２つ以上のコンピュータ等の２つ以上の物理的に別個のデバイスで具現化されてもよい。上記の実施例は、データを、頭部搭載型ディスプレイへ、および／またはそこから通信する、ベルトパック等の２つ以上の物理的に異なるデバイスで具現化されてもよい。図４は、概して、１つ以上のコンピュータ可読媒体４０１と、処理システム４０４と、Ｉ／Ｏサブシステム４０６と、高周波（ＲＦ）回路４０８と、オーディオ回路４１０と、センサ回路４１１とを含む、システム４００の一実施例のブロック図である。これらのコンポーネントは、１つ以上の通信バスまたは信号ライン４０３によって結合されてもよい。
【００４３】
図４に示されるアーキテクチャは、システム４００の１つの例示的アーキテクチャにすぎず、システム４００は、示されるものよりも多いまたは少ないコンポーネント、またはコンポーネントの異なる構成を有し得ることが明白となるはずである。図４に示される種々のコンポーネントは、１つ以上の信号処理および／または特定用途向け集積回路を含む、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実装されることができる。
【００４４】
図４の例示的システムアーキテクチャ４００を参照すると、ＲＦ回路４０８は、１つ以上の他のデバイスへの無線リンクまたはネットワークを経由して情報を送信および受信するために使用されることができ、本機能を果たすための周知の回路を含む。ＲＦ回路４０８およびオーディオ回路４１０は、周辺機器インターフェース４１６を介して処理システム４０４に結合されることができる。インターフェース４１６は、周辺機器と処理システム４０４との間の通信を確立および維持するための種々の既知のコンポーネントを含むことができる。オーディオ回路４１０は、オーディオスピーカ４５０およびマイクロホン４５２に結合されることができ、インターフェース４１６から受信される音声信号を処理し、ユーザが他のユーザとリアルタイムで通信することを可能にするための既知の回路を含むことができる。いくつかの実施例では、オーディオ回路４１０は、ヘッドホンジャック（図示せず）を含むことができる。
【００４５】
センサ回路４１１は、限定ではないが、１つ以上の発光ダイオード（ＬＥＤ）または他の光エミッタ、１つ以上のフォトダイオードまたは他の光センサ、１つ以上の光熱センサ、磁力計、加速度計、ジャイロスコープ、気圧計、コンパス、近接性センサ、カメラ、周囲光センサ、温度計、ＧＰＳセンサ、電気眼球図記録（ＥＯＧ）センサ、および残存バッテリ寿命、電力消費量、プロセッサ速度、ＣＰＵ負荷、および同等物を感知し得る種々のシステムセンサを含む、種々のセンサに結合されることができる。頭部搭載型デバイスを伴うこと等の実施例では、１つ以上のセンサは、ユーザの眼移動を追跡すること、またはその眼の画像に基づいてユーザを識別すること等のユーザの眼に関連する機能性に関連して採用されてもよい。
【００４６】
周辺機器インターフェース４１６は、システムの入力および出力周辺機器を、プロセッサ４１８およびコンピュータ可読媒体４０１に結合することができる。１つ以上のプロセッサ４１８は、コントローラ４４を介して１つ以上のコンピュータ可読媒体４０１と通信してもよい。コンピュータ可読媒体４０１は、１つ以上のプロセッサ４１８によって使用するためのコードおよび／またはデータを記憶し得る、任意のデバイスまたは媒体（信号を除外する）であり得る。いくつかの実施例では、媒体４０１は、非一過性のコンピュータ可読記憶媒体であり得る。媒体４０１は、限定ではないが、キャッシュ、メインメモリ、および二次メモリを含む、メモリ階層を含むことができる。メモリ階層は、ＲＡＭ（例えば、ＳＲＡＭ、ＤＲＡＭ、ＤＤＲＡＭ）、ＲＯＭ、ＦＬＡＳＨ、ディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、およびＤＶＤ（デジタルビデオディスク）等の磁気および／または光学記憶デバイスの任意の組み合わせを使用して、実装されることができる。媒体４０１はまた、（信号を除外し、信号が変調される搬送波を除外するが）コンピュータ命令またはデータを示す情報伝達信号を搬送するための伝送媒体を含んでもよい。例えば、伝送媒体は、限定ではないが、インターネット（ワールドワイドウェブとも称される）、イントラネット、ローカエルエリアネットワーク（ＬＡＮ）、ワイドローカルエリアネットワーク（ＷＬＡＮ）、ストレージエリアネットワーク（ＳＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、および同等物を含む、通信ネットワークを含んでもよい。
【００４７】
１つ以上のプロセッサ４１８は、媒体４０１の中に記憶された種々のソフトウェアコンポーネントを起動し、システム４００のための種々の機能を果たすことができる。いくつかの実施例では、ソフトウェアコンポーネントは、オペレーティングシステム４２２と、通信モジュール（または命令のセット）４２４と、Ｉ／Ｏ処理モジュール（または命令のセット）４２６と、グラフィックスモジュール（または命令のセット）４２８と、１つ以上のアプリケーション（または命令のセット）４３０とを含むことができる。これらのモジュールおよび上記のアプリケーションはそれぞれ、上記に説明される１つ以上の機能および本願に説明される方法（例えば、コンピュータ実装方法および本明細書に説明される他の情報処理方法）を実施するための命令のセットに対応することができる。これらのモジュール（すなわち、命令のセット）は、別個のソフトウェアプログラム、プロシージャ、またはモジュールとして実装される必要はなく、したがって、これらのモジュールの種々のサブセットは、種々の実施例では、組み合わせられる、または別様に再配列されてもよい。いくつかの実施例では、媒体４０１は、上記で識別されるモジュールおよびデータ構造のサブセットを記憶してもよい。さらに、媒体４０１は、上記に説明されていない付加的モジュールおよびデータ構造を記憶してもよい。
【００４８】
オペレーティングシステム４２２は、一般的システムタスク（例えば、メモリ管理、記憶デバイス制御、電力管理等）を制御および管理するための種々のプロシージャ、命令のセット、ソフトウェアコンポーネント、および／またはドライバを含むことができ、種々のハードウェアとソフトウェアコンポーネントとの間の通信を促進する。
【００４９】
通信モジュール４２４は、１つ以上の外部ポート４３６を経由して、またはＲＦ回路４０８を介して、他のデバイスとの通信を促進することができ、ＲＦ回路４０８および／または外部ポート４３６から受信されるデータを取り扱うための種々のソフトウェアコンポーネントを含むことができる。
【００５０】
グラフィックスモジュール４２８は、１つ以上のディスプレイ表面上でグラフィックオブジェクトをレンダリング、動画化、および表示するための種々の既知のソフトウェアコンポーネントを含むことができる。ディスプレイ表面は、２Ｄまたは３Ｄディスプレイを含んでもよい。ディスプレイ表面は、例示的システム４００の１つ以上のコンポーネントに直接または間接的に結合されてもよい。タッチ感知ディスプレイ（例えば、タッチスクリーン）を伴う実施例では、グラフィックスモジュール４２８は、タッチ感知ディスプレイ上でオブジェクトをレンダリング、表示、および動画化するためのコンポーネントを含むことができる。いくつかの実施例では、グラフィックスモジュール４２８は、遠隔ディスプレイをレンダリングするためのコンポーネントを含むことができる。カメラを組み込むもの等のいくつかの実施例では、グラフィックスモジュール４２８は、レンダリングされたグラフィックオブジェクトとカメラデータ（頭部搭載型カメラから捕捉されるもの等）または写真データ（衛星によって捕捉された画像等）を合成することによって形成される画像を作成および／または表示するためのコンポーネントを含むことができる。いくつかの実施例では、グラフィックスモジュールは、画像を頭部搭載型ディスプレイデバイスにレンダリングするためのコンポーネントを含むことができる。いくつかの実施例では、画像は、仮想コンテンツの要素のビュー（例えば、３次元仮想環境内のオブジェクト）および／または物理的世界のビュー（例えば、ユーザの物理的周辺を示すカメラ入力）を含んでもよい。いくつかの実施例では、ディスプレイは、仮想コンテンツおよび物理的世界のビューの合成画像を提示してもよい。いくつかの実施例では、物理的世界のビューは、レンダリングされた画像であってもよく、いくつかの実施例では、物理的世界のビューは、カメラからの画像であってもよい。
【００５１】
１つ以上のアプリケーション４３０は、限定ではないが、ブラウザ、アドレス帳、連絡先リスト、Ｅメール、インスタントメッセージ、文書処理、キーボードエミュレーション、ウィジェット、ＪＡＶＡ（登録商標）対応アプリケーション、暗号化、デジタル著作権管理、音声認識、音声複製、場所決定能力（全地球測位システム（ＧＰＳ）によって提供されるもの等）、音楽プレーヤ等を含む、システム４００上にインストールされた任意のアプリケーションを含むことができる。
【００５２】
Ｉ／Ｏサブシステム４０６は、眼Ｉ／Ｏデバイス４１２および種々の機能を制御する、または果たすための１つ以上のＩ／Ｏデバイス４１４に結合されることができる。例えば、眼Ｉ／Ｏデバイス４１２は、眼入力（例えば、眼追跡のためのセンサ）またはユーザジェスチャ入力（例えば、光学センサ）を処理するための種々のコンポーネントを含み得る、眼Ｉ／Ｏデバイスコントローラ４３２を介して、処理システム４０４と通信することができる。１つ以上の他のＩ／Ｏコントローラ４３４は、電気信号を他のＩ／Ｏデバイス４１４に送信し、そこから受信することができる。他のＩ／Ｏデバイス４１４は、物理的ボタン、ダイヤル、スライダスイッチ、スティック、キーボード、タッチパネル、付加的ディスプレイ画面、またはそれらの任意の組み合わせを含んでもよい。
【００５３】
Ｉ／Ｏ処理モジュール４２６は、限定ではないが、眼Ｉ／Ｏデバイスコントローラ４３２を介して眼Ｉ／Ｏデバイス４１２から、またはＩ／Ｏコントローラ４３４を介して他のＩ／Ｏデバイス４１４から受信される、入力を受信および処理することを含む、眼Ｉ／Ｏデバイス４１２および／または他のＩ／Ｏデバイス４１４と関連付けられる種々のタスクを実施するための種々のソフトウェアコンポーネントを含むことができる。いくつかの実施例では、Ｉ／Ｏデバイス４１４および／またはＩ／Ｏ処理モジュール４２６は、触知または非触知手段によって提供され得る、ジェスチャ入力と関連付けられる種々のタスクを実施してもよい。いくつかの実施例では、ジェスチャ入力は、例えば、ユーザの眼、腕、手、および／または指の移動を検出するためのカメラまたは別のセンサによって提供されてもよい。いくつかの実施例では、Ｉ／Ｏデバイス４１４および／またはＩ／Ｏ処理モジュール４２６は、ユーザが相互作用することを所望するディスプレイ上のオブジェクト、例えば、ユーザが指し示しているＧＵＩ要素を識別するように構成されてもよい。いくつかの実施例では、眼Ｉ／Ｏデバイス４１２および／またはＩ／Ｏ処理モジュール４２６は、ユーザが見ているオブジェクトまたはディスプレイ上の領域を識別すること等の眼追跡タスクを実施するように（光学またはＥＯＧセンサの助けを借りて等）構成されてもよい。いくつかの実施例では、デバイス（ハードウェア「ビーコン」等）が、２Ｄまたは３Ｄ環境に対するユーザの手の場所を識別すること等のジェスチャ関連タスクを伴うＩ／Ｏデバイス４１２および／またはＩ／Ｏ処理モジュール４２６のタッチを補助するように、ユーザによって装着または保持されてもよい。いくつかの実施例では、眼Ｉ／Ｏデバイス４１２および／またはＩ／Ｏ処理モジュール４２６は、ユーザの眼に関するカメラセンサからのデータ等のセンサ入力に基づいて、ユーザを識別するように構成されてもよい。
【００５４】
いくつかの実施例では、グラフィックスモジュール４２８は、ＧＵＩ内で視覚出力をユーザに表示することができる。視覚出力は、テキスト、グラフィック、ビデオ、およびそれらの任意の組み合わせを含んでもよい。視覚出力の一部または全ては、ユーザインターフェースオブジェクトに対応してもよい。いくつかの実施例では、Ｉ／Ｏデバイス４１２および／または４１４および／またはコントローラ４３２および／または４３４は（媒体４０１内の任意の関連付けられるモジュールおよび／または命令のセットとともに）、ジェスチャおよび／または眼移動を検出および追跡することができ、検出されたジェスチャおよび／または眼移動を、１つ以上のユーザインターフェースオブジェクト等のグラフィックオブジェクトとの相互作用に変換することができる。眼Ｉ／Ｏデバイス４１２および／または眼Ｉ／Ｏデバイスコントローラ４３２が、ユーザの眼移動を追跡するように構成される、実施例では、ユーザは、グラフィックオブジェクトを見ることによって、それらと直接相互作用することができる。
【００５５】
フィードバックが、表示されているものおよび／またはコンピューティングシステムの１つまたは複数の状態に基づいて、眼Ｉ／Ｏデバイス４１２または別のＩ／Ｏデバイス４１４によって等、提供されてもよい。フィードバックは、光学的に（例えば、光信号または表示された画像）、機械的に（例えば、触知フィードバック、タッチフィードバック、力フィードバック、または同等物）、電気的に（例えば、電気刺激）、嗅覚、音響的に（例えば、ビープ音または同等物）、または同等物、またはそれらの任意の組み合わせで、かつ可変または非可変様式で、伝送されてもよい。
【００５６】
システム４００はまた、種々のハードウェアコンポーネントに給電するための電力システム４４４を含むことができ、電力管理システム、１つ以上の電源、再充電システム、停電検出回路、電力コンバータまたはインバータ、電力状態インジケータ、および典型的には携帯用デバイスにおける電力の生成、管理、および分配と関連付けられる任意の他のコンポーネントを含んでもよい。
【００５７】
いくつかの実施例では、周辺機器インターフェース４１６、１つ以上のプロセッサ４１８、およびメモリコントローラ４２０は、処理システム４０４等の単一のチップ上に実装されてもよい。いくつかの他の実施例では、それらは、別個のチップ上に実装されてもよい。
【００５８】
いくつかの実施例では、方法が開示される。本方法は、コンピュータシステムの第１のクライアントアプリケーションから、第１のノードを備える、第１のグラフィックデータを受信することと、コンピュータシステムの第２のクライアントアプリケーションから、第２のノードを備える、第２のグラフィックデータを受信することと、シーングラフを生成することとを含んでもよく、シーングラフは、第１のノードと第２のノードとの間の関係を表し、シーングラフは、コンピュータシステムのプロセッサによってトラバースされるとき、出力をレンダリングするように構成される。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法はさらに、コンピュータシステムのプロセッサによって、シーングラフをトラバースすることを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、コンピュータシステムは、ディスプレイと通信するように構成されてもよく、方法はさらに、ディスプレイ上に出力を表示することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法はさらに、コンピュータシステムにおいて、最適化を出力に適用することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、最適化を適用することは、表面を抜粋することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法はさらに、コンピュータシステムにおいて、視覚効果を出力に適用することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、視覚効果を適用することは、光量値を計算することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、視覚効果を適用することは、シェーダを実行することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法はさらに、コンピュータシステムにおいて、物理的効果を出力に適用することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、物理的効果を適用することは、衝突を検出することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１のクライアントアプリケーションは、コンピュータシステム上で実行される第１のアプリケーションであってもよく、第２のクライアントアプリケーションは、コンピュータシステム上で実行される第２のアプリケーションであってもよく、第１のクライアントアプリケーションは、第２のクライアントアプリケーションに対してコンピュータシステム上でサンドボックス化されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１のグラフィックデータは、第１のクライアントアプリケーションと関連付けられる第１のクライアントシーングラフに対応してもよく、第２のグラフィックデータは、第２のクライアントアプリケーションと関連付けられる第２のクライアントシーングラフに対応してもよく、第１のクライアントシーングラフは、第２のクライアントシーングラフに対してコンピュータシステム上でサンドボックス化されてもよく、第１のクライアントシーングラフは、シーングラフに対してコンピュータシステム上でサンドボックス化されてもよく、第２のクライアントシーングラフは、シーングラフに対してコンピュータシステム上でサンドボックス化されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、シーングラフは、バージョン付きシーングラフのバージョンに対応してもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１のグラフィックデータは、コンピュータシステムの第１の処理スレッドを使用して、シーングラフに通信されてもよく、第２のグラフィックデータは、第１の処理スレッドから独立しているコンピュータシステムの第２の処理スレッドを使用して、シーングラフに通信されてもよい。
【００５９】
いくつかの実施例では、方法が開示される。本方法は、ディスプレイを伴うコンピュータシステムのシーングラフをトラバースすることであって、シーングラフは、第１のアプリケーションと関連付けられる第１の３Ｄデータを備え、第１の３Ｄデータは、１つ以上のノードを備え、シーングラフは、第２のアプリケーションと関連付けられる第２の３Ｄデータを備え、第２の３Ｄデータは、１つ以上のノードを備え、第１のアプリケーションは、第２のアプリケーションに対してコンピュータシステム上でサンドボックス化され、シーングラフは、第１の３Ｄデータのノードと第２の３Ｄデータのノードとの間の関係を備える、ことと、ディスプレイ上で、シーングラフに対応する画像を表示することであって、画像は、シーングラフをトラバースすることの出力に対応し、画像は、関係を反映する、こととを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、関係は、空間関係であってもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法はさらに、コンピュータシステムにおいて、最適化を、シーングラフをトラバースすることの出力に適用することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、最適化を適用することは、表面を抜粋することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法はさらに、コンピュータシステムにおいて、視覚効果を、シーングラフをトラバースすることの出力に適用することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、視覚効果を適用することは、光量値を計算することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、視覚効果を適用することは、シェーダを実行することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法はさらに、コンピュータシステムにおいて、物理的効果を、シーングラフをトラバースすることの出力に適用することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、物理的効果を適用することは、衝突を検出することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、シーングラフは、バージョン付きシーングラフのバージョンに対応してもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１の３Ｄデータに対応するグラフィックデータは、コンピュータシステム上で実行されるホストアプリケーションによってシーングラフに通信されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１の３Ｄデータに対応するグラフィックデータは、ホストアプリケーションのクライアントによってホストアプリケーションに通信されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１の３Ｄデータに対応する第１のグラフィックデータは、第１の処理スレッドを使用するホストアプリケーションによって、シーングラフに通信されてもよく、第２の３Ｄデータに対応する第２のグラフィックデータは、第１の処理スレッドから独立している第２の処理スレッドを使用するホストアプリケーションによって、シーングラフに通信されてもよい。
【００６０】
いくつかの実施例では、コンピュータシステムが開示される。本システムは、１つ以上のプロセッサと、１つ以上のプロセッサによって実行されると、１つ以上のプロセッサに、上記に説明される方法のうちの１つ以上のものを実施させる、命令を記憶する、メモリとを備えてもよい。
【００６１】
いくつかの実施例では、非一過性のコンピュータ可読記憶媒体が開示される。非一過性のコンピュータ可読記憶媒体は、１つ以上のプロセッサによって実行されると、１つ以上のプロセッサに、コンピュータシステムの第１のクライアントアプリケーションから、第１のノードを備える、第１のグラフィックデータを受信することと、コンピュータシステムの第２のクライアントアプリケーションから、第２のノードを備える、第２のグラフィックデータを受信することと、シーングラフを生成することであって、シーングラフは、第１のノードと第２のノードとの間の関係を表し、シーングラフは、コンピュータシステムのプロセッサによってトラバースされるとき、出力をレンダリングするように構成される、こととを含む、方法を実施させる、命令を記憶してもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法はさらに、コンピュータシステムのプロセッサによって、シーングラフをトラバースすることを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、コンピュータシステムは、ディスプレイと通信するように構成されてもよく、方法はさらに、ディスプレイ上に出力を表示することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法はさらに、コンピュータシステムにおいて、最適化を出力に適用することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、最適化を適用することは、表面を抜粋することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法はさらに、コンピュータシステムにおいて、視覚効果を出力に適用することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、視覚効果を適用することは、光量値を計算することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、視覚効果を適用することは、シェーダを実行することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法はさらに、コンピュータシステムにおいて、物理的効果を出力に適用することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、物理的効果を適用することは、衝突を検出することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１のクライアントアプリケーションは、コンピュータシステム上で実行される第１のアプリケーションであってもよく、第２のクライアントアプリケーションは、コンピュータシステム上で実行される第２のアプリケーションであってもよく、第１のクライアントアプリケーションは、第２のクライアントアプリケーションに対してコンピュータシステム上でサンドボックス化されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１のグラフィックデータは、第１のクライアントアプリケーションと関連付けられる第１のクライアントシーングラフに対応してもよく、第２のグラフィックデータは、第２のクライアントアプリケーションと関連付けられる第２のクライアントシーングラフに対応してもよく、第１のクライアントシーングラフは、第２のクライアントシーングラフに対してコンピュータシステム上でサンドボックス化されてもよく、第１のクライアントシーングラフは、シーングラフに対してコンピュータシステム上でサンドボックス化されてもよく、第２のクライアントシーングラフは、シーングラフに対してコンピュータシステム上でサンドボックス化されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、シーングラフは、バージョン付きシーングラフのバージョンに対応してもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１のグラフィックデータは、コンピュータシステムの第１の処理スレッドを使用して、シーングラフに通信されてもよく、第２のグラフィックデータは、第１の処理スレッドから独立しているコンピュータシステムの第２の処理スレッドを使用して、シーングラフに通信されてもよい。
【００６２】
いくつかの実施例では、非一過性のコンピュータ可読記憶媒体が開示される。非一過性のコンピュータ可読記憶媒体は、１つ以上のプロセッサによって実行されると、１つ以上のプロセッサに、ディスプレイを伴うコンピュータシステムのシーングラフをトラバースすることであって、シーングラフは、第１のアプリケーションと関連付けられる第１の３Ｄデータを備え、第１の３Ｄデータは、１つ以上のノードを備え、シーングラフは、第２のアプリケーションと関連付けられる第２の３Ｄデータを備え、第２の３Ｄデータは、１つ以上のノードを備え、第１のアプリケーションは、第２のアプリケーションに対してコンピュータシステム上でサンドボックス化され、シーングラフは、第１の３Ｄデータのノードと第２の３Ｄデータのノードとの間の関係を備える、ことと、ディスプレイ上で、シーングラフに対応する画像を表示することであって、画像は、シーングラフをトラバースすることの出力に対応し、画像は、関係を反映する、こととを含む、方法を実施させる、命令を記憶してもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、関係は、空間関係であってもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法はさらに、コンピュータシステムにおいて、最適化を、シーングラフをトラバースすることの出力に適用することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、最適化を適用することは、表面を抜粋することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法はさらに、コンピュータシステムにおいて、視覚効果を、シーングラフをトラバースすることの出力に適用することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、視覚効果を適用することは、光量値を計算することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、視覚効果を適用することは、シェーダを実行することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法はさらに、コンピュータシステムにおいて、物理的効果を、シーングラフをトラバースすることの出力に適用することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、物理的効果を適用することは、衝突を検出することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、シーングラフは、バージョン付きシーングラフのバージョンに対応してもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１の３Ｄデータに対応するグラフィックデータは、コンピュータシステム上で実行されるホストアプリケーションによってシーングラフに通信されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１の３Ｄデータに対応するグラフィックデータは、ホストアプリケーションのクライアントによってホストアプリケーションに通信されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１の３Ｄデータに対応する第１のグラフィックデータは、第１の処理スレッドを使用するホストアプリケーションによって、シーングラフに通信されてもよく、第２の３Ｄデータに対応する第２のグラフィックデータは、第１の処理スレッドから独立している第２の処理スレッドを使用するホストアプリケーションによって、シーングラフに通信されてもよい。
【００６３】
いくつかの実施例では、コンピュータシステムが開示される。本システムは、１つ以上のプロセッサと、コンピュータシステムにおいて、第１のクライアントアプリケーションから第１のシーンデータを受信し、コンピュータシステムにおいて、第２のクライアントアプリケーションから第２のシーンデータを受信するように構成される、記憶装置と、１つ以上のプロセッサによって実行されると、１つ以上のプロセッサに、第１のシーンデータおよび第２のシーンデータに基づいて、グラフィックデータ構造を生成することであって、グラフィックデータ構造は、１つ以上のプロセッサによって実行されるレンダリング動作への入力として提供されるときに、ディスプレイ上の画像に対応する出力をもたらすように構成される、ことを含む、方法を実施させる、命令を記憶する、メモリとを備えてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、グラフィックデータ構造は、表示リストおよび表示ツリーのうちの少なくとも１つであってもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法はさらに、入力としてグラフィックデータ構造を使用して、レンダリング動作を実行することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、コンピュータシステムはさらに、ディスプレイを備えてもよく、本方法はさらに、ディスプレイ上に画像を表示することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１のクライアントアプリケーションは、第１のデバイスの１つ以上のプロセッサによって実行される第１のアプリケーションであってもよく、第２のクライアントアプリケーションは、第１のデバイスの１つ以上のプロセッサによって実行される第２のアプリケーションであってもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１のクライアントアプリケーションは、第１のデバイスの１つ以上のプロセッサによって実行される第１のアプリケーションであってもよく、第２のクライアントアプリケーションは、第２のデバイスの１つ以上のプロセッサによって実行される第２のアプリケーションであってもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、記憶装置はさらに、第３のクライアントアプリケーションから第３のシーンデータを受信するように構成されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法はさらに、記憶装置から第１のシーンデータを削除することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、グラフィックデータ構造は、第１のデータと、第２のデータとを備えてもよく、本方法はさらに、第１のデータが遮蔽ビューに対応するかまたは未遮蔽ビューに対応するかを決定することと、第１のデータが未遮蔽ビューに対応するという決定に応答して、第１のデータに基づいて、未遮蔽ビューを備える画像をレンダリングすることと、第１のデータが遮蔽ビューに対応するという決定に応答して、遮蔽ビューを備えない画像をレンダリングすることとを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、記憶装置はさらに、第１のシーンデータを受信することに応答して、第１のシーンデータを第１のバージョンとしてバージョン制御システムの中に記憶するように構成されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、記憶装置はさらに、第１のクライアントアプリケーションから第３のシーンデータを受信し、第３のシーンデータを第２のバージョンとしてバージョン制御システムの中に記憶するように構成されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法はさらに、グラフィックデータ構造を生成することに応答して、記憶装置から第１のバージョンを除去することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、本方法は、記憶装置が第３のシーンデータを受信することと並行して実施されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、記憶装置は、第２のシーンデータを受信することと並行して第１のシーンデータを受信するように構成されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、記憶装置は、第１のデータレートに対応する第１の間隔で第３のシーンデータを受信するように構成されてもよく、本方法はさらに、第２のデータレートに対応するように第１の間隔の長さを調節することを含んでもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１のシーンデータは、新しいデータ、削除されたデータ、およびデータ間の関係の変化のうちの少なくとも１つを備えてもよい。
【００６４】
いくつかの実施例では、コンピュータシステムが開示される。コンピュータシステムは、サーバと、サーバデータと、第１のクライアントアプリケーションと、第２のクライアントアプリケーションとを備えてもよく、サーバにおいて、第１のクライアントアプリケーションから第１の未処理シーンデータを受信し、サーバにおいて、第２のクライアントアプリケーションから第２の未処理シーンデータを受信し、サーバにおいて、第１のクライアントアプリケーションからの第１の未処理シーンデータ、第２のクライアントアプリケーションからの第２の未処理シーンデータ、およびサーバデータを、集中シーンデータ構造に組み込み、サーバにおいて、集中シーンデータ構造内に含有されるデータの少なくとも一部を実行し、集中シーンデータ構造内で実行されたデータに基づいて、グラフィックデータ構造を作成するように構成されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、グラフィックデータ構造は、表示リストまたは表示ツリーであってもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、コンピュータシステムはさらに、グラフィックデータ構造を処理画像にレンダリングするように構成される、レンダリングエンジンを備えてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、コンピュータシステムはさらに、処理画像を表示するように構成されるディスプレイを備えてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、ディスプレイは、物理的世界の少なくとも部分ビューを維持しながら、仮想コンテンツを表示することが可能であり得る。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１のクライアントアプリケーションおよび第２のクライアントアプリケーションは、単一の物理的デバイス上で起動する、２つの異なるアプリケーションであってもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１のクライアントアプリケーションおよび第２のクライアントアプリケーションは、別個の物理的デバイス上でそれぞれ起動する、２つの異なるアプリケーションであってもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、サーバは、第３のクライアントアプリケーションから第３の未処理シーンデータを受信するように構成されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、サーバは、第１のクライアントアプリケーションからの未処理シーンデータの実行後に、第１のクライアントアプリケーションから未処理シーンデータを削除するように構成されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、レンダリングエンジンはさらに、遮蔽モジュールであって、グラフィックデータ構造内のデータを第１の遮蔽カテゴリおよび第２の非遮蔽カテゴリに分離し、第２の非遮蔽カテゴリを表示するように構成される、遮蔽モジュールを備えてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、サーバは、第１のクライアントアプリケーションからの第１の未処理シーンデータを第１のバージョンとして記憶するように構成されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、サーバは、第１のクライアントアプリケーションからの第３の未処理シーンデータを第２のバージョンとして記憶するように構成されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、コンピュータシステムは、第１のクライアントアプリケーションからの第１の未処理シーンデータの第１のバージョンがサーバによって受信される時間から、第１のクライアントアプリケーションからの第１の未処理シーンデータが読み取られ、実行される時間まで、第１のクライアントアプリケーションからの第１の未処理シーンデータの第１のバージョンを記憶するように構成されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、サーバは、サーバが第２のクライアントから第２の未処理シーンデータを受信するのと同時に、第１のクライアントから第１の未処理シーンデータを受信するように構成されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、サーバは、第１のクライアントアプリケーションが未処理シーンデータをサーバに送信するレートを減速するように構成されてもよい。上記の実施例のうちの１つ以上のものに加えて、またはその代替として、第１および第２のクライアントアプリケーションから受信されるデータは、新しいデータ、削除されたデータ、前もって転送されたデータ間の関係の変化、および修正されたデータから成る群から選択される少なくとも１つであってもよい。
【００６５】
開示される実施例は、付随する図面を参照して完全に説明されているが、種々の変更および修正が当業者により明白でとなるであろうことに留意されたい。例えば、１つ以上の実装の要素が、さらなる実装を形成するように組み合わせられる、削除される、修正される、または補完されてもよい。そのような変更および修正は、添付の請求項によって定義されるような開示される実施例の範囲内に含まれると理解されるものである。
【図１Ａ】
2020515967.tif 000003
【図１Ｂ】
2020515967.tif 000004
【図１Ｃ】
2020515967.tif 000005
【図１Ｄ】
2020515967.tif 000006
【図１Ｅ】
2020515967.tif 000007
【図２Ａ】
2020515967.tif 000008
【図２Ｂ】
2020515967.tif 000009
【図２Ｃ】
2020515967.tif 000010
【図２Ｄ】
2020515967.tif 000011
【図３Ａ】
2020515967.tif 000012
【図３Ｂ】
2020515967.tif 000013
【図３Ｃ】
2020515967.tif 000014
【図３Ｄ】
2020515967.tif 000015
【図３Ｅ】
2020515967.tif 000016
【図４】
2020515967.tif 000017
【国際調査報告】
2020515967.tif 000018
2020515967.tif 000019
2020515967.tif 000020