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