(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-01
(45)【発行日】2024-08-09
(54)【発明の名称】HMD環境での高速中心窩レンダリングのための予測及びGPUに対する最新の更新を伴う視線追跡
(51)【国際特許分類】
G09G 5/00 20060101AFI20240802BHJP
G02B 27/02 20060101ALI20240802BHJP
G06F 3/038 20130101ALI20240802BHJP
G06F 3/0346 20130101ALI20240802BHJP
G06F 3/04815 20220101ALI20240802BHJP
G06F 3/01 20060101ALI20240802BHJP
G06T 15/00 20110101ALI20240802BHJP
H04N 13/344 20180101ALI20240802BHJP
H04N 13/383 20180101ALI20240802BHJP
【FI】
G09G5/00 550C
G09G5/00 550H
G09G5/00 510G
G09G5/00 555G
G02B27/02 Z
G06F3/038 310A
G06F3/0346 423
G06F3/0346 422
G06F3/0346 421
G06F3/04815
G06F3/01 510
G06T15/00 501
H04N13/344
H04N13/383
(21)【出願番号】P 2022184232
(22)【出願日】2022-11-17
(62)【分割の表示】P 2020564321の分割
【原出願日】2019-05-07
【審査請求日】2022-12-05
(32)【優先日】2018-05-17
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】100099324
【氏名又は名称】鈴木 正剛
(72)【発明者】
【氏名】アンドリュー ヤング
(72)【発明者】
【氏名】ハビエル フェルナンデス リコ
【審査官】西島 篤宏
(56)【参考文献】
【文献】米国特許出願公開第2017/0169602(US,A1)
【文献】米国特許出願公開第2017/0285735(US,A1)
【文献】特開2008-233765(JP,A)
【文献】特開平07-170535(JP,A)
【文献】特開2018-049603(JP,A)
【文献】米国特許出願公開第2018/0129280(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G09G 5/00 - 5/42
G02B 27/02
G06F 3/038
G06F 3/0346
G06F 3/04815
G06F 3/01
G06T 15/00
H04N 13/344
H04N 13/383
(57)【特許請求の範囲】
【請求項1】
ビデオフレームのためのシーンのプリミティブを生成し、
フレーム期間におけるユーザの
第1の眼及び前記第1の眼とは異なる第2の眼の視線追跡情報を受信し、
前記視線追跡情報に基づいて、前記フレーム期間における
前記第1の眼及び前記第2の眼の視線方向に対応するディスプレイ上の着地点を予測し、
前記プリミティブおよび前記予測された着地点に基づいて、前記フレーム期間で前記ビデオフレームをレンダリングし、
前記視線追跡情報の受信では、
前記第1の眼及び前記第2の眼を追跡して前記視線追跡情報の決定に用いられるサンプル点の数を増加させ
、
前記視線追跡情報は、ユーザのサッカードを判定するために使用される、
方法。
【請求項2】
前記ビデオフレームの前記レンダリングでは、
前記プリミティブおよび前記予測された着地点に基づいて、前記ディスプレイの複数の画素のための画素データを生成するために1つ以上のシェーダ動作を実行する、
請求項1に記載の方法。
【請求項3】
フレームバッファに前記画素データを記憶し、
後続のフレーム期間において、前記画素データを前記フレームバッファから前記ディスプレイにスキャンアウトする、
請求項2に記載の方法。
【請求項4】
前記後続のフレーム期間は次のフレーム期間である、
請求項3に記載の方法。
【請求項5】
前記ビデオフレームの前記レンダリングでは、
前記ビデオフレーム内の高分解能の中心窩の領域をレンダリングし、前記中心窩は、前記予測された着地点を中心とする、
請求項1に記載の方法。
【請求項6】
前記第1の眼及び前記第2の眼が前記サッカードを経験していることを検知し、
前記サッカードに基づいて前記着地点の前記予測を行う、
請求項1に記載の方法。
【請求項7】
前記第1の眼及び前記第2の眼の運動を追跡し、
前記追跡に基づいて前記運動の速度を判定し、
前記速度が閾値速度に達したとき、
前記第1の眼及び前記第2の眼が前記サッカードにあると判定し、
前記サッカードにおける
前記第1の眼及び前記第2の眼の方向に対応する前記着地点を予測する、
請求項6に記載の方法。
【請求項8】
前記フレーム期間の前に発生する、前のフレーム期間において、アプリケーションを実行して前記ビデオフレームにおける前記シーンの前記プリミティブを生成する、
請求項1に記載の方法。
【請求項9】
前記ディスプレイは、ヘッドマウントディスプレイ内に配置される、
請求項1に記載の方法。
【請求項10】
前記第1の眼及び
前記第2の眼を追跡して前記視線追跡情報の決定に用いられるサンプル点の数を増加させる場合に、前記着地点はより正確に予測される、
請求項1に記載の方法。
【請求項11】
前記第1の眼及び
前記第2の眼は、同時に追跡されることを特徴とする、請求項1に記載の方法。
【請求項12】
方法を実行するためのコンピュータプログラムを格納するコンピュータ可読媒体であって、前記コンピュータ可読媒体は、
ビデオフレーム用のシーンのプリミティブを生成するためのプログラム命令と、
フレーム期間におけるユーザの
第1の眼及び前記第1の眼とは異なる第2の眼の視線追跡情報を受信するためのプログラム命令と、
前記視線追跡情報に基づいて、前記フレーム期間における
前記第1の眼及び前記第2の眼の視線方向に対応するディスプレイ上の着地点を予測するためのプログラム命令と、
前記プリミティブおよび前記予測された着地点に基づいて、前記フレーム期間で前記ビデオフレームをレンダリングするためのプログラム命令と、を有し、
前記視線追跡情報を受信するためのプログラム命令は、
前記第1の眼及び前記第2の眼を追跡して前記視線追跡情報の決定に用いられるサンプル点の数を増加させるためのプログラム命令を含
み、
前記視線追跡情報は、ユーザのサッカードを判定するために使用される、
コンピュータ可読媒体。
【請求項13】
前記ビデオフレームの前記レンダリングのための前記プログラム命令は、
前記プリミティブおよび前記予測された着地点に基づいて、前記ディスプレイの複数の画素のための画素データを生成するために1つ以上のシェーダ動作を実行するためのプログラム命令を有する、
請求項12に記載のコンピュータ可読媒体。
【請求項14】
前記ビデオフレームのレンダリングのためのプログラム命令は、
前記ビデオフレーム内の高分解能の中心窩の領域をレンダリングするためのプログラム命令を有し、前記中心窩は、前記予測された着地点を中心とする、
請求項12に記載のコンピュータ可読媒体。
【請求項15】
さらに、
前記第1の眼及び前記第2の眼が
前記サッカードを経験していることを検知するためのプログラム命令と、
前記サッカードに基づいて前記着地点の前記予測を行うためのプログラム命令と、を有する、
請求項12に記載のコンピュータ可読媒体。
【請求項16】
さらに、
前記第1の眼及び前記第2の眼の運動を追跡するためのプログラム命令と、
前記追跡に基づいて前記運動の速度を判定するためのプログラム命令と、
前記速度が閾値速度に達したとき、
前記第1の眼及び前記第2の眼が前記サッカードにあると判定するためのプログラム命令と、
前記サッカードにおける
前記第1の眼及び前記第2の眼の方向に対応する前記着地点を予測するためのプログラム命令と、を有する、
請求項15に記載のコンピュータ可読媒体。
【請求項17】
前記フレーム期間の前に発生する、前のフレーム期間において、アプリケーションを実行して前記ビデオフレームにおける前記シーンの前記プリミティブを生成するためのプログラム命令と、を有する、
請求項12に記載のコンピュータ可読媒体。
【請求項18】
前記第1の眼及び
前記第2の眼を追跡して前記視線追跡情報の決定に用いられるサンプル点の数を増加させる場合に、前記着地点はより正確に予測される、
請求項12に記載のコンピュータ可読媒体。
【請求項19】
前記第1の眼及び
前記第2の眼は、同時に追跡されることを特徴とする、請求項12に記載のコンピュータ可読媒体。
【請求項20】
コンピュータシステムであって、
プロセッサを有し、
前記プロセッサに結合されたメモリを有し、前記メモリには、前記コンピュータシステムによって実行された場合、方法を前記コンピュータシステムに実行させる命令が格納され、前記方法は、
ビデオフレームのためのシーンのプリミティブを生成し、
フレーム期間におけるユーザの
第1の眼及び前記第1の眼とは異なる第2の眼の視線追跡情報を受信し、
前記視線追跡情報に基づいて、前記フレーム期間における
前記第1の眼及び前記第2の眼の視線方向に対応するディスプレイ上の着地点を予測し、
前記プリミティブおよび前記予測された着地点に基づいて、前記フレーム期間で前記ビデオフレームをレンダリングし、
前記視線追跡情報の受信では、
前記第1の眼及び前記第2の眼を追跡して前記視線追跡情報の決定に用いられるサンプル点の数を増加させ
、
前記視線追跡情報は、ユーザのサッカードを判定するために使用される、
コンピュータシステム。
【請求項21】
前記方法では、前記ビデオフレームの前記レンダリングで、前記プリミティブおよび前記予測された着地点に基づいて、前記ディスプレイの複数の画素のための画素データを生成するために1つ以上のシェーダ動作を実行する、
請求項20に記載のコンピュータシステム。
【請求項22】
前記方法では、前記ビデオフレームの前記レンダリングで、前記ビデオフレーム内の高分解能の中心窩の領域をレンダリングし、前記中心窩は、前記予測された着地点を中心とする、
請求項20に記載のコンピュータシステム。
【請求項23】
前記方法では、
前記第1の眼及び前記第2の眼が
前記サッカードを経験していることを検知し、かつ、前記サッカードに基づいて前記着地点の前記予測を行う、
請求項20に記載のコンピュータシステム。
【請求項24】
前記方法では、前記フレーム期間の前に発生する、前のフレーム期間において、アプリケーションを実行して前記ビデオフレームにおける前記シーンの前記プリミティブを生成する、
請求項20に記載のコンピュータシステム。
【請求項25】
前記第1の眼及び
前記第2の眼を追跡して前記視線追跡情報の決定に用いられるサンプル点の数を増加させる場合に、前記着地点はより正確に予測される、
請求項20に記載のコンピュータシステム。
【請求項26】
前記第1の眼及び
前記第2の眼は、同時に追跡されることを特徴とする、請求項20に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータ生成画像に関し、より詳細には、コンピュータ生成グラフィックスのリアルタイムレンダリングに関する。
【背景技術】
【0002】
レンダリングパイプラインにおける仮想現実(VR)シーンのコンピュータレンダリングは、中央処理装置(CPU)及びグラフィック処理ユニット(GPU)のリソースを必要とする。VRシーンは、広い表示範囲でレンダリングされ得るが、その表示範囲のより小さい部分のみが表示される。さらに、VRシーンは従来のシーンよりも複雑であり得、また、映像酔いを回避するために画像処理に一層高いフレームレートを必要とすることもあり、その全てが高い消費電力率をもたらす。
【0003】
電力を節約するために、ディスプレイの一部を他の部分よりも高い解像度で提示し得る。例えば、ユーザが凝視し得る画面の一部は、周辺領域といったユーザが凝視していない他の部分よりも高い解像度で提示され得る。ディスプレイの周辺部分をより低い解像度でレンダリングすることにより、処理リソースが節約でき、ユーザは周辺に焦点を合わせていないので、そうした低解像度でもユーザの視聴体験が低下することはない。しかしながら、VRシーンを見ているユーザの眼球運動は、レンダリングパイプラインを通してフレームが更新されるよりも速い場合がある。このように、眼がコンピュータレンダリングパイプラインよりも速いことにより、ユーザが以前は周辺にあった可能性のあるシーンの一部に移動すると、更新が眼球運動に追いつくまで、その部分は低解像度で提示され得る。これにより、ユーザに対してぼやけた画像がもたらされる。
【0004】
本開示の実施形態はこのような背景の下になされたものである。
【発明の概要】
【0005】
本開示の実施形態は、ヘッドマウントディスプレイ(HMD)のディスプレイを見ているユーザに関連するサッカード(saccade:跳躍性眼球運動)の着地点を予測すること、ならびに予測された着地点の最新の更新を即時使用のためにGPUがアクセス可能なバッファに対して行うことによって、中央処理装置(CPU)及びグラフィック処理ユニット(GPU)を含むレンダリングパイプラインの情報を更新することに関する。本開示のいくつかの発明実施形態が、以下に説明される。
【0006】
一実施形態において、HMDにおける眼球運動を予測する方法を開示する。方法は、複数のサンプル点で、HMDに配置されている視線追跡(あるいは視線トラッキング)システムを用いて、ユーザの眼球運動を追跡することを含む。方法は、眼球運動に基づいて運動の速度を判定することを含む。方法は、速度が閾値速度に達したとき、ユーザの眼がサッカードにあると判定することを含む。方法は、サッカードにおける眼の方向に対応する、HMDのディスプレイ上の着地点を予測することを含む。
【0007】
一実施形態では、CPU及びGPUを含むレンダリングパイプラインの情報を更新する方法が開示される。第1のフレーム期間においてCPUでアプリケーションを実行して、第1のビデオフレームにおけるシーンのプリミティブを生成することを含む方法。フレーム期間は、対応するビデオフレームをディスプレイにスキャンアウトする前に、CPU及びGPUによって連続フレーム期間で順次動作を実行するように構成されているレンダリングパイプラインの動作の周波数に対応する。第2のフレーム期間において、サッカードを経験しているユーザの眼の視線追跡情報をCPUで受信することを含む方法。少なくとも視線追跡情報に基づいて、サッカードにおける眼の視線方向に対応する、ヘッドマウントディスプレイ(HMD)のディスプレイ上の着地点を、第2のフレーム期間においてCPUで予測することを含む方法。予測された着地点をGPUがアクセス可能なバッファに転送することにより、CPUによる最新の更新動作を第2のフレーム期間において実行することを含む方法。第2のフレーム期間において、第1のビデオフレームにおけるシーンのプリミティブに基づいてかつ予測された着地点に基づいて、GPUで1つまたは複数のシェーダ動作を実行して、HMDの画素の画素データを生成することであって、画素データは、少なくとも色及びテクスチャ情報を含み、画素データはフレームバッファに格納される、該生成することを含む方法。第3のフレーム期間において、画素データをフレームバッファからHMDにスキャンアウトすることを含む方法。
【0008】
別の実施形態において、CPU及びGPUを含むレンダリングパイプラインの情報を更新するためのコンピュータプログラムを格納する非一時的なコンピュータ可読媒体を開示する。コンピュータ可読媒体は、第1のフレーム期間において、CPUでアプリケーションを実行して、第1のビデオフレームにおけるシーンのプリミティブを生成するためのプログラム命令を含む。フレーム期間は、対応するビデオフレームをディスプレイにスキャンアウトする前に、CPU及びGPUによって連続フレーム期間で順次動作を実行するように構成されているレンダリングパイプラインの動作の周波数に対応する。コンピュータ可読媒体は、第2のフレーム期間において、サッカードを経験しているユーザの眼の視線追跡情報をCPUで受信するためのプログラム命令を含む。コンピュータ可読媒体は、少なくとも視線追跡情報に基づいて、サッカードにおける眼の視線方向に対応する、ヘッドマウントディスプレイ(HMD)のディスプレイ上の着地点を、第2のフレーム期間においてCPUで予測するためのプログラム命令を含む。コンピュータ可読媒体は、予測された着地点をGPUがアクセス可能なバッファに転送することによって、CPUによる最新の更新動作を第2のフレーム期間において実行するためのプログラム命令を含む。コンピュータ可読媒体は、第1のビデオフレームにおけるシーンのプリミティブに基づいてかつ予測された着地点に基づいて、GPUで1つまたは複数のシェーダ動作を第2のフレーム期間において実行して、HMDの画素の画素データを生成するためのプログラム命令であって、画素データは、少なくとも色及びテクスチャ情報を含み、画素データはフレームバッファに格納される、該プログラム命令を含む。コンピュータ可読媒体は、第3のフレーム期間において、画素データをフレームバッファからHMDにスキャンアウトするためのプログラム命令を含む。
【0009】
さらに別の実施形態において、プロセッサ及び、プロセッサに結合されているメモリを有するコンピュータシステムが開示され、メモリは命令を格納しており、当命令は、コンピュータシステムにより実行されると、CPU及びGPUを含むレンダリングパイプラインの情報を更新する方法をコンピュータシステムに実行させるコンピュータシステムが開示される。第1のフレーム期間においてCPUでアプリケーションを実行して、第1のビデオフレームにおけるシーンのプリミティブを生成することを含む方法。フレーム期間は、対応するビデオフレームをディスプレイにスキャンアウトする前に、CPU及びGPUによって連続フレーム期間で順次動作を実行するように構成されているレンダリングパイプラインの動作の周波数に対応する。第2のフレーム期間において、サッカードを経験しているユーザの眼の視線追跡情報をCPUで受信することを含む方法。少なくとも視線追跡情報に基づいて、サッカードにおける眼の視線方向に対応する、ヘッドマウントディスプレイ(HMD)のディスプレイ上の着地点を、第2のフレーム期間においてCPUで予測することを含む方法。予測された着地点をGPUがアクセス可能なバッファに転送することによって、CPUによる最新の更新動作を第2のフレーム期間において実行することを含む方法。第1のビデオフレームにおけるシーンのプリミティブに基づいてかつ予測された着地点に基づいて、GPUで1つまたは複数のシェーダ動作を第2のフレーム期間において実行して、HMDの画素の画素データを生成することを含む方法であって、画素データは、少なくとも色及びテクスチャ情報を含み、画素データはフレームバッファに格納される、該生成することを含む方法。第3のフレーム期間において、画素データをフレームバッファからHMDにスキャンアウトすることを含む方法。
【0010】
本開示の他の態様は、本開示の原理の例として示される添付図面と併せて、下記の発明を実施するための形態から明らかになるであろう。
【0011】
本開示は、添付図面と併せて、以下の説明を参照することにより、最も良く理解され得る。
【図面の簡単な説明】
【0012】
【
図1A】本開示の一実施形態による、VRコンテンツとのインタラクティブな体験を提供するように、かつ、HMDのディスプレイを見ているユーザに関連するサッカードの着地点を予測するように構成されているシステムの図であり、いくつかの入力制御がハンドヘルドコントローラを介して提供でき、いくつかの入力制御はカメラを介して実装されるような身体部分の追跡を通じて管理され得る。
【
図1B】本開示の一実施形態による、VRコンテンツとのインタラクティブな体験を提供するように、かつ、HMDのディスプレイを見ているユーザに関連するサッカードの着地点を予測するように構成されているシステムの図であり、編集のためのいくつかの入力制御がハンドヘルドコントローラを介して提供でき、いくつかの入力制御はカメラを介して実装されるような身体部分の追跡を通じて管理され得るものであり、カメラはまた、データをHMDに送信するRFエミッタのビーム追跡の目的で、HMDの動きも追跡する。
【
図1C】本開示の一実施形態による、VRコンテンツとインタラクティブな体験を提供するように、かつ、HMDのディスプレイを見ているユーザに関連するサッカードの着地点を予測するように構成されているシステムの図であり、編集のためのいくつかの入力制御がハンドヘルドコントローラを介して提供でき、いくつかの入力制御は部分的に磁気源を介して実装されるような身体部分の磁気追跡を通じて管理され得る。
【
図2】開示の実施形態による、実行中のビデオゲームと連動する、3Dデジタルコンテンツの編集のための3D編集空間を提供するための、HMDの機能の概略図である。
【
図3A】一実施形態による、視線追跡センサを含むHMDの内部を示す、顔がディスプレイハウジングと接触するように設計されている内表面を見ている、一例のディスプレイハウジングの図である。
【
図3B】一実施形態による、視線追跡センサを含むHMDの内部を示す、顔がディスプレイハウジングと接触するように設計されている内表面を見ている、一例のディスプレイハウジングの図である。
【
図3C】一実施形態による、視線追跡センサを含むHMDの内部を示す、顔がディスプレイハウジングと接触するように設計されている内表面を見ている、一例のディスプレイハウジングの図である。
【
図4A】本開示の一実施形態による、HMDのディスプレイを見ているユーザに関連するサッカードの着地点を予測するように構成されている予測エンジンの図である。
【
図4B】本開示の一実施形態による、HMDのディスプレイを見ているユーザに関連するサッカードの着地点を予測するのに使用されるリカレントニューラルネットワークの図である。
【
図4C】本開示の一実施形態による、HMDでVRシーンを見ている1人以上のユーザに対するサッカード運動のモデルを構築するのに使用される例示的なニューラルネットワークの図である。
【
図5A】本開示の一実施形態による、眼球運動の完了後に画像がユーザに対してぼやけることにつながる、眼球運動に比べてのフレーム更新の遅れがどのようなものかを示すサッカード予測なしのレンダリングパイプラインの図である。
【
図5B】本開示の一実施形態による、レンダリングパイプラインにおいて高解像度の中心窩領域の更新を進めることによって、眼球運動の完了後に画像がユーザに対して焦点を合わせることにつながる、HMDのディスプレイを見ているユーザの眼球運動のサッカード予測ありで構成されているレンダリングパイプラインの結果として得られる効果を示す図である。
【
図6A】本開示の一実施形態による、HMDのディスプレイを見ているユーザのサッカードの眼の変位及び速度の図である。
【
図6B】本開示の一実施形態による、HMDのディスプレイを見ているユーザのサッカードの速度グラフにおける様々なサンプル点での眼の向きのデータのサンプリングの図である。
【
図6C】本開示の一実施形態による、HMDのディスプレイを見ているユーザに関連するサッカードの着地点を予測するのに使用される1つまたは複数のサンプル点のセットに対する眼の向きのデータの収集の図である。
【
図6D】本開示の一実施形態による、HMDのディスプレイを見ているユーザに関連するサッカードの着地点を予測するのに使用されるサンプル点のセットに対する眼の向きのデータを一覧表示している表を示す。
【
図6E】本開示の一実施形態による、ユーザの眼(複数可)の速度を判定するのに使用される視線方向ベクトルの図である。
【
図7】本開示の一実施形態による、HMDのディスプレイを見ているユーザに関連するサッカードの着地点を予測する方法のステップを示すとともに、サッカード中に収集されたサンプル点のセットからの眼の向きのデータを用いて、HMDのディスプレイを見ているユーザに関連するサッカードの着地点の複数の予測の収束を含む流れ図。
【
図8】本開示の一実施形態による、HMDのディスプレイを見ているユーザに関連するサッカードの着地点を予測すること、及び対応するビデオフレームにおいて着地点を中心とする高解像度の中心窩領域をレンダリングするのに即時使用するために、着地点を、コンピュータシステムのGPUがアクセス可能なバッファへ最新の更新として提供することを含む、中心窩レンダリングを行うように構成されているレンダリングパイプラインを実装するコンピュータシステムの図である。
【
図9A】本開示の一実施形態による、アプリケーションの実行中にビデオフレームを生成するときに視線追跡情報を受信かつ使用するレンダリングパイプラインの図であり、レンダリングパイプラインは、視線追跡情報の最新の更新を実装していない。
【
図9B】本開示の一実施形態による、HMDのディスプレイ上の着地点を予測することによってレンダリングパイプラインの情報を更新する方法のステップを示す流れ図であり、着地点は、サッカード中またはその終わりのディスプレイを見ているユーザの眼の向きに対応するものであり、予測された着地点は、対応するビデオフレームにおいて着地点を中心とする高解像度の中心窩領域をレンダリングするためにGPUによって用いられる。
【
図9C】本開示の一実施形態による、アプリケーションの実行中にビデオフレームを生成するときに視線追跡情報を受信かつ使用するレンダリングパイプラインの図であり、サッカード中またはその終わりのHMDを見ているユーザの眼の向きに対応する、HMD上の着地点が予測され、予測された着地点は、対応するビデオフレームにおいて着地点を中心とする高解像度の中心窩領域をレンダリングするためにGPUによって用いられる。
【
図10A】本開示の一実施形態による、視線追跡情報の最新の更新を、即時使用のためにGPUがアクセス可能なバッファに対して実行することによって、レンダリングパイプラインの情報を更新する方法のステップを示す流れ図である。
【
図10B】本開示の一実施形態による、アプリケーションの実行中にビデオフレームを生成するときに視線追跡情報を受信かつ使用するレンダリングパイプラインの図であり、レンダリングパイプラインは、視線追跡情報の最新の更新を実装している。
【
図11A】本開示の一実施形態による、HMDのディスプレイ上の予測された着地点の最新の更新を、即時使用のためにGPUがアクセス可能なバッファに対して実行することによって、レンダリングパイプラインの情報を更新する方法のステップを示す流れ図であり、着地点は、サッカード中またはその終わりのディスプレイを見ているユーザの眼の向きに対応する。
【
図11B】本開示の一実施形態による、アプリケーションの実行中にビデオフレームを生成するときに視線追跡情報を受信かつ使用するレンダリングパイプラインの図であり、レンダリングパイプラインは、HMDのディスプレイ上の予測された着地点の最新の更新を、即時使用のためにGPUがアクセス可能なバッファに対して実装しており、着地点は、サッカード中またはその終わりのディスプレイを見ているユーザの眼の向きに対応する。
【
図12】本開示の様々な実施形態の態様を実行するのに使用することができる例示的なデバイスの構成要素の図である。
【
図13】開示の実施形態による、ヘッドマウントディスプレイの構成要素を示す図である。
【
図14】開示の様々な実施形態による、ゲームシステムのブロック図である。
【発明を実施するための形態】
【0013】
以下の発明を実施するための形態は、例示目的で多くの具体的な詳細を含むが、当業者であれば、以下の詳細に対する多数の変形及び変更が本開示の範囲内にあることを理解するであろう。したがって、後述の本開示の態様は、この説明に続く特許請求の範囲の普遍性を失うことなく、かつ特許請求の範囲に制限を課すことなく記載される。
【0014】
概して、本開示の様々な実施形態は、HMDのディスプレイを見ているユーザに関連して定義されたサッカード中かつ/またはその終わりのユーザの眼の視線方向に関連付けられた、ディスプレイ上の着地点を予測するためのシステム及び方法を説明する。具体的には、ユーザの視線がある凝視点から別の凝視点に通常の方法で移動するとき、ユーザの眼球運動を定義するサッカードの測定部分の速度グラフを使用して、サッカード全体の特性を予測することができる。このように、1つまたは複数の眼の方向を速度分析に基づいて予測することができ、眼の方向は、ディスプレイ上の1つまたは複数の着地点に対応する。ディスプレイの標的着地点が分かると、HMDに表示するためにレンダリングされるフレームは、標的着地点を考慮して更新され得る。例えば、眼球運動が標的着地点での中心窩領域の表示と一致するように、標的着地点でのまたはその周囲の領域に対応する、ディスプレイの中心窩領域が更新され得る。中心窩領域(例えば、眼が焦点を合わせ、向けられる場所)は高解像度でレンダリングされ、中心窩ではない領域(例えば、周辺)はより低い解像度でレンダリングされ得る。
【0015】
様々な実施形態の上記概要的な理解とともに、以下、実施形態の例示的な詳細を様々な図面を参照して説明する。
【0016】
本明細書全体を通して、「ゲーミングアプリケーション」とは、入力コマンドの実行を通して指示される任意のタイプのインタラクティブアプリケーションを表すことを意味する。単なる例示目的で、インタラクティブアプリケーションには、ゲーム、ワード処理、ビデオ処理、ビデオゲーム処理などのためのアプリケーションが含まれる。さらに、ビデオゲームとゲーミングアプリケーションという用語は、置換え可能である。
【0017】
本明細書全体を通して、ユーザのサッカードへの言及がなされる。一般に、サッカードは、ディスプレイ上のある凝視点から別の凝視点に移動するときになされるユーザの眼(複数可)の急速かつ同時の運動を指す。眼(複数可)のサッカード運動は、一般に、特定の方向になされ、必ずしも回転的に行われるとは限らない。サッカード運動は、毎秒900度を超えるピーク角速度に達することもあり、20から200ミリ秒(ms)の範囲で持続し得る。サッカード中の眼(複数可)の角変位(度)は、上向きに約90度までの範囲であり得るが、20から50度を超える変位は、頭の動きを伴い得る。
【0018】
サッカードにおけるユーザの眼(複数可)の着地点の予測
図1Aは、開示の実施形態による、ゲーミングアプリケーションのインタラクティブなゲームプレイのためのシステムを示す。ユーザ100は、HMD102を着用して示され、HMD102は、眼鏡、ゴーグル、またはヘルメットと同じ様に着用され、インタラクティブゲーミングアプリケーションからのビデオゲームまたはインタラクティブアプリケーションからの他のコンテンツをユーザ100に表示するように構成されている。HMD102は、ユーザの眼にごく接近して表示機構を提供することにより、非常に没入感のある体験をユーザに提供する。このように、HMD102は、ユーザの視野の大部分または全体でさえも占める表示領域をユーザの眼のそれぞれに提供することができる。
【0019】
図1Aのシステムは、ユーザの眼(複数可)の運動が、更新された標的着地点におけるディスプレイ上の中心窩領域の提示と一致するように、HMD102のディスプレイ上の標的着地点を更新するように構成されている。特に、着地点のサッカード予測は、HMD102、コンピュータ106、及びクラウドゲーミングサーバ114のうちの1つまたは複数で、単独でまたは組み合わせて実行され得る。予測は、被験者に対して測定されたサッカード(例えば、眼の向きのデータまたはパラメータの収集)に基づいてサッカードのトレーニングモデルを介して生成することによって、及び、ユーザの現在のサッカードの眼の向きのデータを、サッカードのトレーニングされたモデルと比較して、サッカード中かつ/またはその終わりのユーザの視線方向に関連付けられた、ディスプレイ上の着地点を予測することの一方または両方を実行するように構成されている深層学習エンジン190を含むサッカード予測エンジン300によって行われる。
【0020】
一実施形態では、HMD102は、コンピュータまたはゲーム機106に接続され得る。コンピュータ106への接続は、有線または無線であり得る。一部の実装例では、HMD102はまた、HMD102及びコンピュータ106の両方が接続されているネットワーク112を介してなど代替の機構またはチャネルを介してコンピュータと通信し得る。コンピュータ106は、以下に限定するものではないが、ゲーム機、パーソナルコンピュータ、ラップトップ、タブレットコンピュータ、モバイルデバイス、携帯電話、タブレット、シンクライアント、セットトップボックス、メディアストリーミングデバイスなどを含む、当技術分野で知られている汎用または特殊目的の任意のコンピュータであり得る。一実施形態では、コンピュータ106は、ゲーミングアプリケーションを実行し、HMD102によるレンダリングのためにゲーミングアプリケーションからビデオ及びオーディオを出力するように構成され得る。コンピュータ106は、ゲーミングアプリケーションを実行することに限定されず、HMD102によるレンダリングのためにVRコンテンツ191を出力するインタラクティブアプリケーションを実行するようにも構成され得る。一実施形態では、コンピュータ106は、ディスプレイを見ているユーザに関連して定義されるサッカード中かつ/またはその終わりのユーザの眼の視線方向に関連付けられた、HMDのディスプレイ上の着地点を予測するように構成されている。他の実施形態では、着地点の予測は、HMD102、コンピュータ106、及びクラウドゲーミングサーバ114のうちの1つまたは複数によって、単独でまたは組み合わせて実行され得る。
【0021】
ユーザ100は、コントローラ104を操作して、ゲーミングアプリケーションへの入力を提供し得る。コンピュータ106への接続は、有線または無線であり得る。さらに、カメラ108は、ユーザ100が置かれているインタラクティブな環境の1つまたは複数の画像をキャプチャするように構成され得る。これらのキャプチャされた画像を分析して、ユーザ100、ユーザの一部(例えば、入力コマンドのための手のジェスチャを追跡する)、HMD102、及びコントローラ104の位置及び動きを判定することができる。一実施形態では、コントローラ104は、その位置及び向きを判定するために追跡することができる光または他のマーカ要素を含む。さらに、HMD102は、HMD102の位置及び向きを判定するために追跡することができる1つまたは複数の光を含み得る。カメラ108によって部分的に実装されるような追跡機能は、コントローラ104及び/またはユーザ100の身体部分(例えば、手)の動きを通して生成された入力コマンドを提供する。カメラ108は、インタラクティブな環境から音を取り込むための1つまたは複数のマイクロフォンを含み得る。マイクロフォンアレイによって取り込まれた音は、音源の位置を特定するために処理され得る。特定された位置からの音は、この特定された位置からではない他の音を排除するために、選択的に利用または処理することができる。さらに、カメラ108は、複数の画像キャプチャデバイス(例えば、立体視可能な一対のカメラ)、IRカメラ、深度カメラ、及びそれらの組み合わせを含むように定義することができる。
【0022】
別の実施形態では、コンピュータ106は、ネットワークを介してクラウドゲーミングプロバイダ112と通信するシンクライアントとして機能する。クラウドゲーミングプロバイダ112は、ユーザ102がプレイしているゲーミングアプリケーションを保持かつ実行する。コンピュータ106は、HMD102、コントローラ104、及びカメラ108からの入力を、クラウドゲーミングプロバイダに送信し、クラウドゲーミングプロバイダは、この入力を処理して、実行中のゲーミングアプリケーションのゲーム状態に影響を与える。実行中のゲーミングアプリケーションからの、ビデオデータ、オーディオデータ、及び触覚フィードバックデータなどの出力は、コンピュータ106に送信される。コンピュータ106は、データをさらに処理した後に送信する場合もあれば、データを関連デバイスに直接送信する場合もある。例えば、ビデオストリーム及びオーディオストリームはHMD102に提供される一方、触覚フィードバックデータは振動フィードバックコマンドを生成するのに用いられ、それはコントローラ104に提供される。
【0023】
一実施形態では、HMD102、コントローラ104、及びカメラ108は、それら自体が、クラウドゲーミングプロバイダ112と通信するためにネットワーク110に接続しているネットワーク化されたデバイスであってもよい。例えば、コンピュータ106は、通常はビデオゲーム処理を実行するのではなくネットワークトラフィックの通過を促進するルータなどのローカルネットワークデバイスであってもよい。HMD102、コントローラ104、及びカメラ(すなわち画像キャプチャデバイス)108によるネットワークへの接続は、有線または無線であり得る。
【0024】
さらに別の実施形態では、コンピュータ106は、ゲーミングアプリケーションの一部を実行可能であり、ゲーミングアプリケーションの残りの部分は、クラウドゲーミングプロバイダ112上で実行され得る。他の実施形態では、ゲーミングアプリケーションの一部はHMD102上でも実行され得る。例えば、コンピュータ106からゲーミングアプリケーションをダウンロードする要求は、クラウドゲーミングプロバイダ112によって提供され得る。要求の提供中、クラウドゲーミングプロバイダ112は、ゲーミングアプリケーションの一部を実行し、HMD102上でレンダリングするためにゲームコンテンツをコンピュータ106に提供し得る。コンピュータ106は、ネットワーク110を介してクラウドゲーミングプロバイダ112と通信し得る。HMD102、コントローラ104、及びカメラ108から受信した入力はクラウドゲーミングプロバイダ112に送信され、その一方で、ゲーミングアプリケーションはコンピュータ106にダウンロードされている。クラウドゲーミングプロバイダ112は、入力を処理して、実行中のゲーミングアプリケーションのゲーム状態に影響を与える。実行中のゲーミングアプリケーションからのビデオデータ、オーディオデータ、及び触覚フィードバックデータなどの出力は、それぞれのデバイスへの以降の送信のためにコンピュータ106に送信される。
【0025】
ゲーミングアプリケーションがコンピュータ106に完全にダウンロードされると、コンピュータ106は、ゲーミングアプリケーションを実行し、クラウドゲーミングプロバイダ112上で中断されたところからゲーミングアプリケーションのゲームプレイを再開し得る。HMD102、コントローラ104、及びカメラ108からの入力は、コンピュータ106によって処理され、ゲーミングアプリケーションのゲーム状態は、HMD102、コントローラ104、及びカメラ108から受信した入力に応答して調整される。そのような実施形態では、コンピュータ106でのゲーミングアプリケーションのゲーム状態は、クラウドゲーミングプロバイダ112でのゲーム状態と同期される。同期は、コンピュータ106及びクラウドゲーミングプロバイダ112の両方でゲーミングアプリケーションの状態を最新に保つために周期的に行われ得る。コンピュータ106は、出力データを、関連するデバイスに直接送信し得る。例えば、ビデオストリーム及びオーディオストリームはHMD102に提供されるのに対して、触覚フィードバックデータは振動フィードバックコマンドを生成するのに用いられ、それはコントローラ104に提供される。
【0026】
図1Bは、本開示の一実施形態による、VRコンテンツとのインタラクティブな体験を提供するように、かつ、3Dデジタルコンテンツを編集するための3D編集空間を提供するように構成されているシステムを示す。さらに、システム(例えば、HMD102、コンピュータ106、及び/またはクラウド114)は、ユーザの眼(複数可)の運動が、更新された標的着地点のディスプレイ上の中心窩領域(高解像度の領域)の提示と一致するように、HMD102のディスプレイ上の標的着地点を更新するように構成されている。
図1Bは、
図1Aに記載されたシステムに類似するが、例えば、RF信号を介してHMD102へデータ配信を行うように構成されている送信機/受信機(トランシーバ)110が追加されている。トランシーバ110は、ゲーミングアプリケーションからのビデオ及びオーディオをHMD102にそこでレンダリングを行うために(有線接続または無線接続によって)送信するように構成されている。さらに、トランシーバ110は、編集の目的で、3D編集空間内で3Dデジタルコンテンツの画像、ビデオ、及びオーディオを送信するように構成されている。この実装例では、本開示の一実施形態にしたがって、カメラ108は、トランシーバ110がそのRF電力の大部分(RF放射パターンを介して供給される)をHMD102に(例えば、データ配信の目的で)ビームステアリングし得るよう、HMD102の動きを追跡するように構成され得る。
【0027】
図1Cは、本開示の一実施形態による、VRコンテンツとのインタラクティブな体験を提供するように構成されているシステムを示す。さらに、システム(例えば、HMD102、コンピュータ106、及び/またはクラウド114)は、ユーザの眼(複数可)の運動が、更新された標的着地点のディスプレイ上の中心窩領域(高解像度の領域)の提示と一致するように、HMD102のディスプレイ上の標的着地点を更新するように構成されている。
図1Cは、
図1Aに記載されたシステムと類似するが、HMD102、コントローラ104(例えば、インターフェースコントローラとして構成されている)、または磁気センサ(例えば、手袋、指などといった身体部分に配置されるストリップ)を用いて構成される任意の物体の磁気追跡を可能にするために磁場を放出するように構成されている磁気源116が追加されている。例えば、磁気センサは、誘導要素であり得る。特に、磁気センサは、磁気源116によって放出される磁場(例えば、強度、向き)を検出するように構成することができる。磁気センサから集められた情報は、3D編集空間内で実行されるような入力コマンドを提供するために、HMD102、コントローラ104、及び他のインターフェースオブジェクトなどの位置及び/または向きを判定かつ追跡するのに使用することができる。実施形態では、磁気追跡は、カメラ108ならびに/またはHMD102、コントローラ104及び/または他のインターフェースオブジェクト内の慣性センサを介して実行される追跡と組み合わされる。
【0028】
一部の実装例では、インターフェースオブジェクト(例えばコントローラ104)は、HMD102に対して追跡される。例えば、HMD102は、インターフェースオブジェクトを含む画像をキャプチャした外向きカメラを含み得る。他の実施形態では、HMD102は、インターフェースオブジェクトなどの外部オブジェクトを追跡するために使用されるIRエミッタを含み得る。キャプチャされた画像を分析して、HMD102に対するインターフェースオブジェクトの位置/向きを判定でき、HMD102の既知の位置/向きを用いて、ローカル環境におけるインターフェースオブジェクトの位置/向き及び/または動きを判定することができるようにする。
【0029】
ユーザ100がHMD102に表示されるゲーミングアプリケーションのまたは3D編集空間の仮想現実シーンとインターフェースする方法は様々なものであり得、インターフェースオブジェクト(例えば、コントローラ104)に加えて他のインターフェースデバイスを用いることができる。例えば、様々な種類の片手用コントローラ、ならびに両手用コントローラ104を使用することができる。一部の実装例では、コントローラに含まれる光を追跡することによって、またはコントローラ104に関連する形状、センサ、及び慣性データを追跡することによって、コントローラ104自体を追跡することができる。これらの様々なタイプのコントローラ104、またはもっと単純に、行われて1つまたは複数のカメラでキャプチャされる手のジェスチャ、及び磁気センサを使用して、HMD102上に提示された仮想現実ゲーミング環境とインターフェースすること、制御すること、操作すること、インタラクトすること、及び参加することが可能である。
【0030】
図2は、開示の実施形態による、VRコンテンツ291の生成(例えば、アプリケーション及び/またはビデオゲームの実行など)に関連するHMD102の機能を概念的に示しており、ユーザの眼(複数可)の運動が、更新された標的着地点でのディスプレイ上の中心窩領域(例えば、高解像度領域)の提示と一致するように、HMD102のディスプレイ上の標的着地点を更新することを含む。着地点のサッカード予測は、HMD102、コンピュータ106、及びクラウドゲーミングサーバ114のうちの1つまたは複数によって、単独でまたは組み合わせて実行され得る。実施形態では、VRコンテンツエンジン220は、HMD102上で実行されている。他の実施形態では、VRコンテンツエンジン220は、HMD102に通信可能に結合されている、かつ/またはHMD102と組み合わせてコンピュータ106(図示せず)上で実行されている。コンピュータは、HMDに対してローカルであってもよく(例えば、ローカルエリアネットワークの一部)、または、遠隔に位置し(例えば、広域ネットワーク、クラウドネットワークの一部など)、ネットワークを介してアクセスされてもよい。HMD102とコンピュータ106間の通信は、有線または無線接続プロトコルに従い得る。例では、アプリケーションを実行しているVRコンテンツエンジン220は、ゲーミングアプリケーションを実行しているビデオゲームエンジンであり得、ゲーミングアプリケーションのゲーム状態を更新する入力を受信するように構成されている。
図2の以下の説明は、簡潔さ及び明快さの目的で、ゲーミングアプリケーションを実行しているVRコンテンツエンジン220の文脈内で説明され、VRコンテンツ291を生成可能な任意のアプリケーションの実行を表すことを意図している。ゲーミングアプリケーションのゲーム状態は、オブジェクトの存在及び位置、仮想環境の状況、イベントのトリガ、ユーザプロファイル、表示視点などといった現在のゲームプレイの様々な態様を規定するビデオゲームの様々なパラメータの値によって少なくとも部分的に定義することができる。
【0031】
図示された実施形態では、VRコンテンツエンジン220は、例として、コントローラ入力261、オーディオ入力262、及びモーション入力263を受信する。コントローラ入力261は、ハンドヘルドゲーミングコントローラ104(例えば、Sony DUALSHOCK(登録商標)4 無線コントローラ、Sony PlayStation(登録商標)Moveモーションコントローラ)、またはウェアラブルグローブインターフェースコントローラなどといったウェアラブルコントローラのような、HMD102とは別個のゲーミングコントローラの操作から定義され得る。例として、コントローラ入力261は、方向入力、ボタン押下、トリガ起動、動き、ジェスチャ、またはゲーミングコントローラの操作から処理される他の種類の入力を含み得る。オーディオ入力262は、HMD102のマイクロフォン251から、または画像キャプチャ装置208に含まれるマイクロフォンもしくはローカルシステム環境内の他の箇所から処理することができる。モーション入力263は、HMD102に含まれるモーションセンサ259から、またはHMD102の画像をキャプチャする画像キャプチャデバイス108から処理することができる。例えば、ゲーミングアプリケーションを実行する場合、VRコンテンツエンジン220は、ゲームエンジンとして動作するコンテンツエンジン220の構成にしたがって処理される入力を受信して、ビデオゲームのゲーム状態を更新する。エンジン220は、ゲーム状態データを、ユーザに提示されることになるコンテンツを定義するためにゲーム状態データを処理する様々なレンダリングモジュールに出力する。
【0032】
図示の実施形態では、ビデオレンダリングモジュール283は、HMD102で提示するためにビデオストリームをレンダリングするように定義される。
【0033】
HMD102の光学系270のレンズは、VRコンテンツ291を表示するために構成されている。HMD102がユーザによって装着されたとき光学系270のレンズが表示画面1304とユーザの眼260の間に在るように、表示画面1304は、光学系270のレンズ背部に配置される。そのようにして、ビデオストリームは、表示画面/プロジェクタ機構1304により提示され、ユーザの眼260によって光学系270を通して見られ得る。HMDユーザは、例えば、3D編集空間で3Dデジタルコンテンツを編集する目的で、HMDを装着することにより、インタラクティブなVRコンテンツ291(例えば、VRビデオソース、ビデオゲームコンテンツなど)とインタラクトすることを選択し得る。ビデオゲームからのインタラクティブな仮想現実(VR)シーンは、HMDの表示画面1304上にレンダリングされ得る。そのようにして、ゲーム開発中に、HMD102により、ユーザは、インタラクティブなVRシーンを編集かつ確認することが可能となる。また、ゲームプレイ(編集の確認を含む)中、HMDによって、ユーザは、ユーザの眼にごく近接してHMDの表示機構をプロビジョニングすることによりゲームプレイに完全に没入することが可能となる。コンテンツをレンダリングするためにHMDの表示画面に画定される表示領域は、ユーザの視野の大部分または全体でさえ占有し得る。通常、それぞれの眼は、1つまたは複数の表示画面を表示している光学系270の関連するレンズによってサポートされる。
【0034】
オーディオレンダリングモジュール282は、ユーザによって聴取されるオーディオストリームをレンダリングするように構成されている。一実施形態では、オーディオストリームは、HMD102に関連付けられたスピーカ152を通して出力される。スピーカ152は、オープンエアスピーカ、ヘッドフォン、またはオーディオを提示することが可能である任意の他の種類のスピーカの形態を取り得ることを理解すべきである。
【0035】
一実施形態では、ユーザの視線の追跡を可能にするために、視線追跡センサ265がHMD102に含まれる。1つの視線追跡センサ265のみが含まれているが、
図3A~3Cに関して説明するように、ユーザの視線を追跡するために2つ以上の視線追跡センサを用い得ることに留意すべきである。例えば、一部の実施形態では、片方の眼だけが追跡されるが(例えば、1つのセンサを使用して)、他の実施形態では、2つの眼が複数のセンサで追跡される。視線追跡センサ265は、カメラ、光学センサ、赤外線センサ、EMG(筋電図)センサ、光学反射器センサ、距離センサ、及びオプティカルフローセンサ、ドップラーセンサ、マイクロフォンなどの1つまたは複数であり得る。一般に、センサ265は、眼球運動方向の変化、加速度、及び速度などの急速な眼球運動を検出するように構成され得る。例えば、視線追跡カメラは、ユーザの眼の画像をキャプチャし、それらを分析してユーザの視線方向を判定する。一実施形態では、ユーザの視線方向に関する情報を利用して、ビデオレンダリングに影響を与えることができる。例えば、ユーザの眼が特定の方向を見ていると判定された場合、その方向に対するビデオレンダリングを優先または強調することができる。本開示の実施形態では、視線方向及び/または他の眼の向きのデータは、ディスプレイを見ているユーザに関連して定義されたサッカード中かつ/またはその終わりのユーザの眼(複数可)の対応する視線方向に関連付けられている、HMDのディスプレイ上の着地点を予測するのに使用され得る。サッカード予測は、
図4A~4Cに関してさらに説明されるサッカード予測エンジン400によって実行され得る。サッカード予測エンジン400はまた、反復的かつ計算集約的な操作を実行するように構成されている深層学習エンジン190と連動して動作し得る。具体的には、深層学習エンジン190は、ユーザの眼(複数可)の運動が、更新された標的着地点におけるディスプレイ上の中心窩領域(高解像度領域)と一致するように、HMD102のディスプレイ上の標的着地点を更新するのに使用されるサッカードモデリング及びサッカード予測の機能を含み、実行し得る。ユーザの視線方向は、ヘッドマウントディスプレイに対して、ユーザが置かれている実環境に対して、かつ/またはヘッドマウントディスプレイ上でレンダリングされている仮想環境に対して定義することができることを理解すべきである。視線方向はHMDの画面に対して定義され得るので、視線方向は、画面上の位置に変換され得る。その位置は、フレームに対して高解像度でレンダリングされた中心窩領域の中心であり得る。
【0036】
大まかに言えば、単独で考える場合、視線追跡センサ265によってキャプチャされた画像の分析により、HMD102に対するユーザの視線方向が提供される。しかしながら、HMD102の追跡された位置及び向きと組み合わせて考える場合、HMD102の位置及び向きはユーザの頭の位置及び向きと同義であるので、ユーザの実世界の視線方向も判定され得る。すなわち、ユーザの実世界の視線方向は、ユーザの眼の位置的な運動を追跡することとHMD102の位置及び向きを追跡することから判定することができる。仮想環境の表示をHMD102上でレンダリングするとき、ユーザの実世界の視線方向を適用して、仮想環境におけるユーザの仮想世界の視線方向を判定することができる。
【0037】
さらに、触覚フィードバックモジュール281は、HMD102、またはHMDユーザによって操作されるコントローラ104などの別デバイスのいずれかに含まれる触覚フィードバックハードウェアに信号を供給するように構成されている。触覚フィードバックは、振動フィードバック、温度フィードバック、圧力フィードバックなどといった様々な種類の触感の形態を取り得る。
【0038】
図3A~3Cは、一実施形態による、視線追跡センサを含むHMDの内部を示す、顔がディスプレイハウジングと接触するように設計されている内表面を見ている、一例のディスプレイハウジングの図を示す。
【0039】
特に、
図3Aは、顔がディスプレイハウジング102aと接触するように設計されている内表面を見ている、例示的なディスプレイハウジング102aの図を示す。示されるように、インターフェース面102eは、着用されるとディスプレイハウジング102aがユーザの眼及び眼を囲む顔の特徴を実質的に覆うように、ディスプレイハウジング102aを囲んでいる。これにより、ユーザが光学系102bを通して見ている領域への光が低減し、したがって、HMD102によって提供される仮想現実シーンのより現実的な表示が提供される。ディスプレイハウジング102aがユーザの頭に配置されると、ユーザの鼻は、鼻挿入領域102d内にスライドするか、またはその中に嵌まり得る。鼻挿入領域102dは、ディスプレイハウジング102aの下部の、光学系102bの間の領域である。
【0040】
フラップ102cは、ユーザの鼻が少なくとも部分的に鼻挿入領域102dに配置されたときに動くまたは屈曲するように設計されている。示されるように、近接センサ206は、ディスプレイハウジング102a内に統合され、鼻挿入領域102dの領域に向けられ、ユーザの鼻が少なくとも部分的に鼻挿入領域102d内に配置されたときに情報をキャプチャするようにする。フラップ102cは、ユーザの鼻に隣接して嵌まるように設計されており、フラップは、ディスプレイハウジング102aがユーザの顔に配置されたときに、光が光学系102b及びユーザの眼に向かって漏れないようにすることを助ける。
【0041】
また
図3Aに示されるように、近接センサ302は、ディスプレイハウジング102aの内表面に統合され、光学系102b間に配置されている。したがって、近接センサ302の位置は、ユーザの額から離間することになり、インターフェース表面102eに、より近接し得る。しかしながら、HMD102におけるユーザの顔の存在は、近接センサ302によって感知することができる。さらに、近接センサ302はまた、HMD102が装着されたときのユーザの顔の距離、テクスチャ、画像、及び/または一般的な特性に関する情報も感知することができる。上述のように、近接センサ302は、ディスプレイハウジング102a内で、同じ場所または異なる場所で統合され得る複数のセンサによって定義され得る。
【0042】
ディスプレイハウジング102aの光学系102b間の位置で統合され得る視線検出センサ265も示されている。視線検出センサ265は、光学系102bを通して見ているときのユーザの眼球運動を監視するように構成されている。視線検出センサは、ユーザがVR空間において見ている位置を特定するのに使用することができる。さらなる実施形態では、視線検出センサ265を使用してユーザの眼を監視する場合、この情報をユーザのアバターの顔に用いて、アバターの顔が、ユーザの眼球運動と同じ様に動く眼を有するようにすることができる。視線検出センサ265はまた、ユーザが映像酔いを体験している可能性があるときを監視するためにも使用することができる。
【0043】
視線検出センサ265は、眼の向きに関する1つまたは複数のパラメータをキャプチャするように構成されている。視線検出センサ265からの情報を使用して、眼の瞳孔の向きに基づいて、ユーザの眼(複数可)の視線方向(例えば、角度θ)を判定し得る。瞳孔は、光が網膜に入り、網膜に当たることを可能にする眼の中心の開口部である。視線検出センサ265は、眼(複数可)を照らすために使用される非可視光(例えば、赤外光)の1つまたは複数の波長のエネルギーを放出する1つまたは複数の光源(図示せず)と連動して機能し得る。例えば、光源は、光エネルギーを眼(複数可)に向ける発光ダイオード(LED)であり得る。視線検出センサ265は、瞳孔、角膜、及び/または眼の虹彩からの反射を捕捉するために使用され得る。反射はその後分析されて(例えば、HMD102のプロセッサ、コンピュータ106などによって)、視線方向及び/または瞳孔の向きを判定し、それは、眼(複数可)の視線方向へと翻訳可能である。視線方向(例えば、角度θ)は、HMD102、及び/または実世界空間に関して参照され得る。視線の向き及び/または方向を判定するために、明瞳孔追跡、暗瞳孔追跡などといった様々な既知の技術が実装され得る。ユーザの瞳孔(複数可)及び/または眼(複数可)の方向及び/または向きを判定するのに用いられる眼の向きのデータをキャプチャするように構成されている、
図4Aに示す1つまたは複数の光源(複数可)401及び1つまたは複数の視線検出センサ(複数可)265を含む視線追跡システム820が示される。
【0044】
さらに、視線方向に基づいて追加情報が判定され得る。例えば、眼(複数可)の速度及び加速度などの眼球運動データが判定され得る。眼(複数可)の追跡された運動は、ユーザのサッカードを判定するために使用され得る。センサからの情報はまた、ユーザの頭を追跡するのにも使用され得る。例えば、情報は、頭の位置、動き、向き、向きの変化に反応し得る。この情報は、実世界環境内の視線方向を判定するために使用され得る。
【0045】
図3Bから3Cもまた、視線方向センサ265の様々な配置位置を示す、HMD102の異なる斜視図を示す。例えば、
図3Bは、眼の視線を捕捉するために、光学系102bの外側部分に配置された視線検出センサ265a及び265bの例である。
図3Cは、眼の視線を捕捉するために、光学系102bの間に配置された視線検出センサ265x及び265yを含む。視線検出センサの位置は、ディスプレイハウジング102a内で異なるものであり得、一般に、ユーザの眼に向けられた表示を提供するように配置される。これらの例示は、視線検出センサがHMD102内の様々な位置に柔軟に配置できることを示すために提供されている。
【0046】
図4Aは、本開示の一実施形態による、HMDのディスプレイを見ているユーザに関連するサッカードの着地点を予測するように構成されている予測エンジン400を示す。予測エンジン400は、前述のように、HMD102、コンピュータ106、及びクラウドゲーミングサーバ114のうちの1つまたは複数に配置され得る。
【0047】
図示されるように、視線追跡システム1220は、ユーザの瞳孔(複数可)及び/または眼(複数可)の視線の方向及び/または向きを判定するように構成されている。視線方向は、HMD102のディスプレイといったディスプレイに関してのものであり得る。前述のように、視線追跡システム1220は、1つまたは複数の光源(複数可)401及び1つまたは複数の視線検出センサ(複数可)265を含む。特に、視線追跡システム1220からの情報は、1つまたは複数のサンプル点において収集される。例えば、情報は、サッカード中に眼を1回以上サンプリングするのに十分な期間で、周期的に収集され得る。例えば、情報は、特定の瞬間における眼(複数可)の視線方向を含み得る。1つまたは複数のサンプル点における情報は、現在のサンプル点における情報を含めて、後でアクセスするためにストレージ1206に保持される。
【0048】
さらに、現在のサンプル点における情報は、入力として予測エンジン400に送られる。より具体的には、一実施形態において、Δθ速度生成器410は、現在のサンプル点402からの情報及び前のサンプル点403からの情報(ストレージ1206から送られるか、または生成器410によってアクセス可能なバッファ405に保持されている)を分析して、眼球運動の速度を判定する。このようにして、速度生成器410は、現在のサンプル点402からの情報及び前のサンプル点403からの情報に基づいて、特定のサンプル点における眼球運動の速度を判定するように構成されている。例えば、情報は特定の時間における視線方向であり得る。別の実施形態では、後方差分の代わりに、速度の中心差分推定が実行される。そのように、検出を遅延させ、前の位置及び次の位置を使用して、速度のより滑らかな推定値を取得することが可能である。これは、サッカード検出を実行する際の誤判定を低減するのに役立ち得る。
【0049】
速度情報(例えば、dθ/dt)が、サッカード識別子420に入力として提供される。ユーザの眼球運動がサッカード内にあるときを判定するために、速度生成器410によって様々な技術が用いられ得る。一実施形態では、眼及び/または眼の眼球運動は、速度が閾値に達するかつ/または超えるとき、サッカード内にある。閾値は、眼がサッカードに達していることを必ずしも示すとは限らないノイズの多い情報は避けるように選択される。例えば、閾値は、オブジェクトを追跡するときなど、眼が滑らかな追跡を実行しているときに通常見られる速度を上回るものである。純粋に例示のために、サッカード検出は、10ms内に実行され得る。
【0050】
前に説明したように、サッカードは、ディスプレイ上のある凝視点から別の凝視点に移動するときになされるユーザの眼(複数可)の急速なかつ同時の運動を定義する。サッカード運動は、毎秒900度を超えるピーク角速度に達することも可能で、20から200ミリ秒(ms)の範囲で持続する。120ヘルツ(Hz)のフレームレートでは、サッカードは、2から25フレームの範囲で持続し得る。例えば、HMDは、90または120Hzのレートでリフレッシュして、ユーザの不快感(例えば、映像酔いによる)を最小限に抑える。
【0051】
眼及び/または眼球運動がサッカードにあると判定されると、予測エンジン400は、ユーザの視線方向が指しているディスプレイ上の着地点を判定するように構成されている。すなわち、サッカード中の特定の点(例えば、中間点、終わりなど)において、着地点は、
図4Bに示されるように、予測エンジン400によって、より具体的には深層学習エンジン190によって判定することができる。特に、サンプルセットコレクタ430は、現在のサンプル点402からの情報を含むように、サンプル点のセットからの情報を収集する。サンプル点のセットから判定された速度情報がさらに判定でき、全速度グラフの少なくとも一部が、ユーザが体験するサッカードに対して生成され得るようにする。速度グラフの一部を含む情報は、着地点を判定するために、深層学習エンジン190に入力として提供される。
【0052】
例えば、
図4Bは、本開示の一実施形態による、HMDのディスプレイを見ているユーザに関連するサッカードの着地点を予測するために使用される深層学習エンジン190としてのリカレントニューラルネットワークを示す。リカレントニューラルネットワークは、長短期記憶(LSTM)モジュール440及び全結合された多層ネットワーク450(例えば、多層パーセプトロン)を含む。特に、深層学習エンジン190は、入力情報451(例えば、速度グラフの一部など)を、深層学習エンジン190によって生成されかつ/または知られるサッカードのモデルと比較するように構成されている。例えば、分析されているサッカードの一部は、被験者の複数のサッカードから構築された速度グラフと比較される。他の実施形態では、ニューラルネットワークへの入力は、各サンプル点での速度といった速度に加えて、各サンプル点での視線方向、及び各サンプル点での時間の情報を含み得る。そのようにして、ユーザの眼の方向に対応する、ディスプレイ上の着地点は、深層学習エンジン190によって構築されかつ/または知られるサッカードモデルに基づいて、サッカード中の任意の点について判定され得る。示されるように、深層学習エンジン190の出力452は、判定された着地点を指しているユーザの視線方向を示すベクトル(X
F-n)、及び任意選択的に、ユーザの眼が着地点に向けられるときを予測する時間(t
n)パラメータを含む。時間(t
n)パラメータは、サッカードの開始、サッカードが判定される点、サンプル点のサンプルセット451における最新のサンプル点などといった1つまたは複数の点を参照し得る。
【0053】
図4Cは、本開示の一実施形態による、被験者の測定されたサッカードに基づいてサッカードモデル及び/またはそれらサッカードモデルにおける速度グラフを構築するために、かつ、例えばHMDのディスプレイ上で着地点の予測を実行するために使用される例示的なニューラルネットワークを示す。着地点は、ディスプレイ(例えば、HMDの)を見ているユーザに関連して定義されるサッカード中かつ/またはその終わりのユーザの任意の眼の視線方向に関連付けられる。具体的には、サッカード予測エンジン400の深層学習または機械学習エンジン190は、ユーザの眼の向きのデータに関する情報(例えば、視線方向、時間、サッカードの速度グラフの一部など)を入力として受信するように構成されている。深層学習エンジン190は、深層学習アルゴリズム、強化学習、または他の人工知能ベースのアルゴリズムを含む人工知能を利用して、前述のように、サッカードモデル、例えばそれらのサッカードモデルに対する速度グラフを構築して、現在ユーザが体験しているサッカードを認識し、サッカード中の任意のポイントで視線方向が指している場所を予測する。
【0054】
すなわち、学習及び/またはモデリング段階中に、深層学習エンジン190は、入力データ(例えば、被験者のサッカードの測定値)を用いて、ユーザの眼(複数可)が指している、ディスプレイの着地点を予測するのに使用することができるサッカードモデル(それらのサッカードモデルに対する速度グラフを含む)を作成する。例えば、入力データは、被験者のサッカードの複数の測定値を含み得、測定値は、深層学習エンジン190に供給されると、1つまたは複数のサッカードモデルを作成するように構成されており、サッカードモデルごとに、サッカード認識アルゴリズムを用いて、現在のサッカードがそのサッカードモデルといつ一致するかを識別することができる。
【0055】
特に、ニューラルネットワーク190は、対応するユーザの応答、行動、態度、所望、及び/またはニーズを判定するためにデータセットを分析する自動分析ツールの例を表す。異なるタイプのニューラルネットワーク190が可能である。例では、ニューラルネットワーク190は、深層学習をサポートする。したがって、ディープニューラルネットワーク、深層畳み込みニューラルネットワーク、及び/または教師ありもしくは教師なしのトレーニングを使用したリカレントニューラルネットワークを実装することができる。別の例では、ニューラルネットワーク190は、強化学習をサポートする深層学習ネットワークを含む。例えば、ニューラルネットワーク190は、強化学習アルゴリズムをサポートするマルコフ決定プロセス(MDP)としてセットアップされる。
【0056】
一般に、ニューラルネットワーク190は、人工ニューラルネットワークなどの相互接続されたノードのネットワークを表す。各ノードは、データからある情報を学習する。相互接続を介して、ノード間で知識を交換することができる。ニューラルネットワーク190への入力により、ノードのセットがアクティブ化される。次に、このノードのセットは、他のノードをアクティブ化し、それにより入力に関する知識が伝播される。このアクティブ化プロセスは、出力が提供されるまで、他のノードにわたって繰り返される。
【0057】
図示されるように、ニューラルネットワーク190は、ノードの階層を含む。最下位階層に、入力層191が存在する。入力層191は、入力ノードのセットを含む。例えば、これらの入力ノードのそれぞれは、対応するサッカード中にある被験ユーザ/被験者の監視(例えば眼の向きのデータ)中に、アクチュエータを介して能動的に収集された、またはセンサにより受動的に収集されたローカルデータ115にマッピングされる。
【0058】
最上位階層には、出力層193が存在する。出力層193は、出力ノードのセットを含む。出力ノードは、現在体験されているサッカードの情報に関する決定(例えば予測)を表す。前述のように、出力ノードは、ユーザが体験したサッカードを、以前にモデル化されたサッカードと一致させ、さらに、サッカード中かつ/またはその終わりにユーザの視線方向が指している、ディスプレイ(例えばHMDの)の予測された着地点を識別し得る。
【0059】
これらの結果は、適切なサッカードモデル及び所与の入力セットに対するサッカード中かつ/またはその終わりのユーザの視線方向に対応するディスプレイの予測された着地点を反復的に判定するように、深層学習エンジン190によって用いられるパラメータを改良かつ/または修正するために、前のインタラクション及び被験者の監視から得られた所定かつ真の結果と比較することができる。すなわち、ニューラルネットワーク190におけるノードは、パラメータを改良するときにそうした決定をなすために用いることができるサッカードモデルのパラメータを学習する。
【0060】
特に、隠れ層192が、入力層191と出力層193の間に存在する。隠れ層192は、「N」個の隠れ層を含み、「N」は、1以上の整数である。次に、隠れ層のそれぞれはまた、隠れノードのセットも含む。入力ノードは、隠れノードと相互接続されている。同様に、隠れノードは、出力ノードと相互接続されているため、入力ノードは、出力ノードと直接相互接続されていない。複数の隠れ層が存在する場合、入力ノードは、最下位の隠れ層の隠れノードと相互接続される。次に、これらの隠れノードは、次の隠れ層の隠れノードと相互接続され、以下同様に続く。次の最上位の隠れ層の隠れノードは、出力ノードと相互接続される。相互接続は、2つのノードを接続する。相互接続は、学習することができる数値の重みを有し、ニューラルネットワーク190を入力に適応させて、学習可能にする。
【0061】
一般に、隠れ層192により、入力ノードに関する知識が、出力ノードに対応する全てのタスク間で共有されることが可能となる。そのようにするため、一実装例では、隠れ層192を介して入力ノードに変換fが適用される。例では、変換fは、非線形である。例えば線形整流器関数f(x)=max(0,x)を含む、様々な非線形変換fが利用可能である。
【0062】
ニューラルネットワーク190はまた、最適解を見つけるためにコスト関数cを使用する。コスト関数は、所与の入力xに関してf(x)と定義されたニューラルネットワーク190によって出力される予測と、グラウンドトゥルースまたはターゲット値y(例えば見込まれる結果)との偏差を測定する。最適解は、最適解のコストよりコストの低い解がない状況を表す。コスト関数の例として、グラウンドトゥルースラベルが利用可能なデータの場合、予測とグラウンドトゥルースとの平均二乗誤差が挙げられる。学習プロセス中に、ニューラルネットワーク190は、誤差逆伝播アルゴリズムを使用して、様々な最適化方法を採用し、コスト関数を最小化するモデルパラメータ(例えば隠れ層192内のノード間の相互接続の重み)を学習し得る。このような最適化方法の一例として、確率的勾配降下法が挙げられる。
【0063】
例では、ニューラルネットワーク190におけるトレーニングデータセットは、同じデータドメインに由来し得る。例えば、ニューラルネットワーク190は、所与の入力または入力データのセットに基づく被験者の類似するサッカードのパターン及び/または特性を学習するようにトレーニングされる。例えば、データドメインは、眼の向きのデータを含む。別の例では、トレーニングデータセットは、ベースライン以外の入力データを含むように、異なるデータドメインに由来する。このようにして、ニューラルネットワーク190は、眼の向きのデータを使用してサッカードを認識可能で、または、眼の向きのデータに基づいて所与のサッカードにおけるサッカードモデルを生成するように構成され得る。
【0064】
図5Aは、本開示の一実施形態による、眼球運動の完了後に画像がユーザに対してぼやけることにつながる、眼球運動に比べてのフレーム更新の遅れがどのようなものかを示すサッカード予測なしのレンダリングパイプライン501を示す。レンダリングパイプライン501は、前述のように、HMD102、コンピュータ106、及びクラウドゲーミングサーバ114内に、単独でまたは組み合わせて実装され得る。
【0065】
着地点予測が有効になっていないレンダリングパイプライン501が
図5Aに示されているが、本開示の実施形態において、レンダリングパイプライン501は、
図5Bに示すように、サッカード及び眼球運動を識別するために、かつ、サッカード中かつ/またはその終わりにユーザの眼(複数可)260の視線方向が指しているディスプレイ(例えばHMD102の)上の着地点を予測する(例えばONにされる)ために、視線追跡情報を分析するように最適化され得ることが理解される。すなわち、
図5Bにおいて、レンダリングパイプライン501は、
図5Bに関して以下でさらに説明するように、着地点の予測に基づいて中心窩レンダリングを実行するように構成され得る。
【0066】
特に、レンダリングパイプラインは、中央処理装置(CPU)1202、グラフィック処理ユニット(GPU)1216、及び両方にアクセス可能なメモリ(例えば、頂点バッファ、インデックスバッファ、深度またはZバッファ、ディスプレイに送られるレンダリングフレームを格納するためのフレームバッファなど)を含む。レンダリングパイプライン(またはグラフィックパイプライン)は、3D(3次元)ポリゴンレンダリングプロセスを使用するときなどの、画像をレンダリングするための一般的なプロセスを示す。例えば、レンダリング画像用のレンダリングパイプライン501は、ディスプレイにおける画素のそれぞれの対応する色情報を出力し、色情報は、テクスチャ及びシェーディング(例えば、色、シャドウィングなど)を表し得る。
【0067】
CPU1202は、一般に、オブジェクトアニメーションを実行するように構成され得る。CPU1202は、3D仮想環境内のオブジェクトに対応する入力ジオメトリを受信する。入力ジオメトリは、3D仮想環境内の頂点、及び各頂点に対応する情報として表され得る。例えば、3D仮想環境内のオブジェクトは、頂点によって定義されるポリゴン(例えば、三角形)として表すことができ、対応するポリゴンの表面は、次に、レンダリングパイプライン501を介して処理されて、最終効果(例えば、色、テクスチャ、等)を達成する。CPU1202の動作はよく知られており、本明細書では大まかに説明する。一般に、CPU1202は、1つまたは複数のシェーダ(例えば、計算、頂点など)を実装して、オブジェクトに加えられるかつ/またはオブジェクトによって加えられる力(例えば、重力などの外力、及び動きを誘発するオブジェクトの内力)に応じて、フレームからフレームへオブジェクトアニメーションを実行する。例えば、CPU1202は、3D仮想環境において、オブジェクトの物理シミュレーション及び/または他の機能を実行する。次に、CPU1202は、GPU1216によって実行されるポリゴン頂点に対する描画コマンドを発行する。
【0068】
特に、CPU1202によって生成されたアニメーション結果は、頂点バッファに格納でき、それは次に、GPU1216によってアクセスされる。GPU1216は、ポリゴン頂点のディスプレイ(例えば、HMDの)への投影及び、ポリゴン頂点をレンダリングする目的で、投影されたポリゴンのテッセレーションを実行するように構成されている。すなわち、GPU1216は、3D仮想環境内でオブジェクトを構成するポリゴン及び/またはプリミティブをさらに構築するように構成でき、これには、ポリゴンに対するライティング、シャドウィング、及びシェーディング計算の実行が含まれ、それはシーンに対するライティングに依存する。ビュー錐台の外側のプリミティブを識別して無視するクリッピング、及びシーンにおけるオブジェクトをディスプレイ上に投影するためのラスタ化(例えば、オブジェクトを、ユーザの視点に関連付けられた画像平面に投影する)などの追加の操作が実行され得る。単純なレベルでは、ラスタ化には、各プリミティブを調べ、そのプリミティブの影響を受ける画素を判定することが含まれる。プリミティブの断片化を使用して、プリミティブを画素サイズのフラグメントに分割可能で、各フラグメントは、ディスプレイ内の画素及び/またはレンダリングの視点に関連付けられた参照面に対応する。1つまたは複数のプリミティブの1つまたは複数のフラグメントは、ディスプレイ上にフレームをレンダリングするときの画素の色に寄与し得る。例えば、所与の画素について、3D仮想環境内のすべてのプリミティブの所与の画素フラグメントが、表示のための画素に結合される。すなわち、対応する画素に対する全体的なテクスチャ及びシェーディング情報が結合されて、画素の最終的なカラー値が出力される。これらのカラー値は、フレームバッファに格納でき、フレームごとにシーンの対応する画像を表示するときに対応する画素にスキャンされる。
【0069】
レンダリングパイプライン501は、視線方向及び/または向きの情報をCPU1202に提供するように構成されている視線追跡システム1220を含み得る。この視線方向情報は、中心窩レンダリングを実行する目的で使用でき、中心窩領域は、高解像度でレンダリングされ、ユーザが注視している方向に対応する。
図5Aは、中心窩レンダリングに関するがサッカード予測なしで(すなわち、サッカード予測がオフになっている)構成されているレンダリングパイプライン501を示す。すなわち、着地点の予測は実行されず、その結果、HMDに表示されるフレームは、ユーザの眼球運動と一致しない中心窩領域を有する。なぜなら、特に眼が動いているときは、計算された各中心窩領域は表示の際古いからである。さらに、
図5Aは、シーケンス内のフレーム(例えば、F1からF8)がレンダリングパイプライン501からスキャンアウトされる時間を示すタイムライン520を示す。フレームF1~F8のシーケンスも、ディスプレイを見ているユーザのサッカードの一部である。
【0070】
図5Aに示すように、レンダリングパイプラインは、視線追跡システム1220、CPU1202、GPU1216、及びレンダリングフレームをディスプレイ1210にスキャンアウトするためのラスタエンジンによって順番に実行される動作を含むとして示されている。例示のために、レンダリングパイプラインシーケンス591~595が示される。スペースの制約のため、フレームF3からF-22に対するシーケンスといった他のパイプラインシーケンスは示されない。
図5Aに示す例では、レンダリングパイプライン501の構成要素のそれぞれは、同じ周波数で動作する。例えば、視線追跡システム1220は、120Hzで視線方向及び/または向きの情報を出力していてもよく、これは、CPU1202及びGPU1216のレンダリングパイプラインが使用するのと同じ周波数であり得る。このように、ユーザの眼(複数可)の視線方向260は、レンダリングパイプラインでスキャンアウトされるフレームごとに更新され得る。他の実施形態では、視線追跡システム1220は同じ周波数で動作しておらず、したがって、視線方向情報は、スキャンアウトされているレンダリングフレームと一致しない場合がある。その場合には、視線追跡システム1220の周波数がCPU1202及びGPU1216によって使用される周波数よりも低速の場合、視線方向情報は追加の遅延を加え得る。
【0071】
視線追跡情報は、高解像度でレンダリングされる中心窩領域を判定するために用いられ得る。中心窩領域の外側の領域は、低解像度で表示される。しかしながら、
図5Aに示されるように、サッカード予測がない場合、視線追跡情報を用いてスキャンアウトするフレームを判定するときまでに、少なくとも2フレーム期間、そして最大3フレーム期間が、視線追跡情報を用いる対応するフレームが表示されるまでに経過している。例えば、レンダリングパイプラインシーケンス591において、視線追跡情報は、時間t-20(サッカードの中間点)における第1のフレーム期間で判定され、CPU1202に送られる。時間t-21における第2のフレーム期間で、CPU1202は、オブジェクトに対して物理シミュレーションを実行し、ポリゴンプリミティブを描画命令と共にGPU1216に送る。時間t-23における第3のフレーム期間で、GPUは、プリミティブアセンブリを実行して、レンダリングフレーム(F23)を生成する。さらに、GPUは、少なくとも2フレーム期間前に判定された、時間t-20における第1のフレーム期間に送られた視線方向に対応する中心窩領域をレンダリングし得る。中心窩領域を含むフレームF23は、時間t-23における第4のフレーム期間でスキャンアウトされる。注目すべきは、レンダリングパイプラインシーケンス591おいて、時間t-20で判定された視線追跡情報は、少なくともt-21及びt-22におけるフレーム期間(2フレーム期間)、場合によっては第3のフレーム期間の一部分、古くなっていることである。同様に、パイプラインシーケンス592は、時間t-24でフレームF24をスキャンアウトするが、中心窩領域は、遡って時間t-21における第1のフレーム期間で定義されたものである。また、パイプラインシーケンス593は、時間t-25でフレームF25をスキャンアウトするが、中心窩領域は、遡って時間t-22における第1のフレーム期間で定義されたものである。さらに、パイプラインシーケンス594は、時間t-26でフレームF26をスキャンアウトするが、中心窩領域は、遡って時間t-23における第1のフレーム期間で定義されたものである。また、パイプラインシーケンス595は、時間t-27でフレームF27をスキャンアウトするが、中心窩領域は、遡って時間t-24における第1のフレーム期間で定義されたものである。
【0072】
眼260は、各レンダリングパイプラインに対して検出されている点(例えば、時間)(例えば、レンダリングパイプラインシーケンス591または592または593の開始時など)を過ぎても動き続けるので、スキャンされるときの対応するレンダリングパイプラインシーケンス(例えば、シーケンス595)のフレーム(例えばフレームF27)における中心窩領域は、少なくとも2から3フレーム期間古い場合がある。例えば、スキャンアウト時のレンダリングフレームF27は、ユーザの視線方向と一致しない中心窩領域を有する。特に、ディスプレイ1210は、時間t-27におけるフレームF27を示すように示され、サッカード経路510(フレームF0とF27の間)が、ディスプレイ1210に重ね合わされ、凝視点A(例えば、方向506及びベクトルXF-0)を示し、これはサッカードの始まりに対応する。例示のために、フレームF1は、時間t-0でサッカード経路510の始まりでスキャンアウトされており、中心窩領域は、凝視点Aを中心とする。サッカード経路510は、サッカードの終わりに対応する凝視点B、またはサッカードの少なくとも第2の点を含む。例示のために、フレームF27は、時間t-27においてサッカード経路510の終わりにスキャンアウトされる。
【0073】
やはり、レンダリングパイプライン501によって実行されるサッカード経路の予測がないので、視線追跡システム1220によって提供される視線方向情報は、少なくとも2または3フレーム期間古くなる。このように、フレームF27は時間t-27でレンダリングパイプラインシーケンス595に対してスキャンアウトされているとき、眼260は凝視点B(眼の方向507及びベクトルXF-27で)を凝視するが、レンダリングパイプラインシーケンス595は、時刻t-24で提供された視線方向情報を使用し、それは古いものである。すなわち、時間t-24で判定された視線方向情報が、レンダリングパイプラインシーケンス595を伝播して、時間t-27でスキャンアウトされる。特に、時間t-24における視線追跡システム1220は、ディスプレイ1210上の点591を指す視線方向を記録している。このように、時間t-24において、フレームF24がスキャンアウトされているとき、ユーザの眼260は、ディスプレイの点591に向けられている。レンダリングされているときのフレームF24の中心窩領域がディスプレイ1210上に正しく配置されているかどうかは、サッカード中、眼260によって受けられた画像は完全に処理されず視聴者においてぼやけて見え得るので、重要ではない場合がある。しかしながら、フレームF27が時間t-27でディスプレイ1210上にスキャンアウトされるとき、レンダリングされた中心窩領域549が時間t-24における点591の周囲にあると計算されていても、ユーザの眼は凝視点B(点線領域592によって示されるように)を向いている。このように、前述のように、時間t-27において眼260を領域592に向けかつ焦点を合わせいるユーザにとって、領域592は周辺にあると計算され、より低い解像度でレンダリングされ得るが、古い中心窩領域549(眼が向けられていない)は高解像度でレンダリングされるため、フレームF27はぼやけて見える。
【0074】
図5Bは、本開示の一実施形態による、レンダリングパイプラインにおける高解像度の中心窩領域の更新を進めることによって、眼球運動の完了後、画像がユーザに対して焦点を合わせるように、HMDのディスプレイを見ているユーザの眼球運動のサッカード予測ありで構成されているレンダリングパイプラインの結果的な効果を示す。例えば、
図5Aに示されているレンダリングパイプライン501において、ここで、サッカード予測、より具体的には着地点予測を有効にする。すなわち、レンダリングパイプライン501は、ここで、サッカード及び眼球運動を識別するため視線追跡情報を分析するように、かつ、サッカード中かつ/またはその終わりにユーザの眼(複数可)260の視線方向が指している、ディスプレイ(例えばHMD102の)上の着地点を予測する(例えばONにする)ように最適化される。このように、
図5Bにおいて、レンダリングパイプライン501は、ここで、着地点の予測に基づいて中心窩レンダリングが行われるように構成されている。例示のみを目的として、
図5Bは、一実施形態におけるサッカード510の終わりの着地点の予測を示すが、他の実施形態では、サッカード中の着地点の予測が可能である(例えば、現在のサンプル点を過ぎて3から5フレーム期間、着地点を予測する)。
【0075】
特に、ディスプレイ1210は、時間t-27でフレームF27を提示するように示される。サッカード経路510は、ディスプレイ1210に重ね合わされ、サッカードの始まりに対応する凝視点A(例えば、方向506及びベクトルXF-0)を示す。例示のために、フレームF1は、時間t-0でサッケード経路510の始まりでスキャンアウトされており、中心窩領域は、凝視点Aを中心とする。サッカード経路510は、サッカードの終わりに対応する凝視点B、またはサッカードの少なくとも第2の点を含む。例示のために、フレームF27は、時間t-27においてサッカード経路510の終わりにスキャンアウトされる。
【0076】
各フレームがスキャンアウトされると、サッカード予測がレンダリングパイプライン501内で実行される。一実施形態では、サッカード予測及び/または着地点予測は、CPU1202、GPU1216、または両方の組み合わせ内で実行することができる。別の実施形態では、サッカード予測は遠隔で実行され、レンダリングパイプライン501へ入力として送られる。予測が実行されると、GPU1216は、フレームを、着地点予測に基づく中心窩領域とともにレンダリングすることができる。特に、GPU1216は、中心窩レンダリングを修正することができ、その結果、
図5Aで前述したような古い視線方向情報に依存する代わりに、予測された着地点を用いて中心窩領域の位置を判定する。
【0077】
特に、凝視点Bに対する予測された着地点が、ディスプレイ1210に重ね合わされる。これらの着地点は、前のレンダリングパイプラインシーケンスで判定されたものである。特に、フレームF8以降のフレームがスキャンアウトされる時間までに、サッカードにおける予測された着地点は、例えば凝視点Bに収束している。図示されるように、サッカード検出後のある点で(例えば、時間t-5におけるフレームF5のスキャンアウト中)、予測が実行される。例えば、予測は、フレームF5及び後続のフレームのレンダリングから開始して実行され得る。サッカード510は、
図5Aで以前に紹介しており、開始点として凝視点A、及び凝視点B(例えば、終点、またはサッカード内の事前定義された点-未来の3から5フレーム期間など-として)を含む。
【0078】
フレームF5がスキャンアウトされるとき、予測された着地点(例えば、ベクトルX
F-5を中心とする)が、凝視点Bから離れている、予測中心窩領域541として示される。次のレンダリングパイプラインシーケンスでは、フレームF6がスキャンアウトされるとき、予測された着地点(例えば、ベクトルX
F-6を中心とする)が予測中心窩領域542として示され、これは、凝視点Bに近いが、まだ離れている。予測は収束するため、次のレンダリングパイプラインシーケンスでは、フレームF7がスキャンアウトされるとき、予測された着地点(ベクトルX
F-7を中心とする)が、凝視点Bに非常に近い、予測中心窩領域543として示される。フレームF8がスキャンされるとき、次のレンダリングパイプラインシーケンスに収束が現れ得、予測された着地点(例えば、ベクトルX
F-8を中心とする)は、凝視点Bを中心とする予測中心窩領域592(太字)として示される。任意の後続のレンダリングパイプラインシーケンスに対して、中心窩領域592は、サッカード510のフレームF9からF27をレンダリング及びスキャンアウトするときなど、レンダリングに使用され、凝視点Bを中心とする。そのようにして、フレームF27がレンダリングされると、凝視点Bに対する着地点予測により、中心窩領域592は、サッカードの終わりにおいてなどで、ユーザの眼(複数可)260の運動と一致する。また、着地点の予測は、フレームF8のレンダリング及びスキャンアウトとともに収束するので、フレームF9からF27は全て、ユーザの眼(複数可)の運動に備えて、既に中心窩領域592を有し得る。このように、予測なしで中心窩領域549をレンダリングする代わりに(
図5Aに記載されるように)、標的着地点(例えば、未来の定義されたフレーム期間数、サッカードの終わりなど)は、予測中心窩領域592を用いて更新され、眼がその予測された着地点に到達したときに、フレームが、その予測された着地点を中心とする中心窩領域とともにレンダリングされるようにする。
【0079】
図6Aは、本開示の一実施形態による、HMDのディスプレイを見ているユーザのサッカードの眼の変位及び速度を示すグラフ600Aを示す。グラフ600Aは、サッカード中の眼球運動の角速度(dθ/dt)を示す垂直軸610Aを含む。さらに、グラフ600Aは、角変位(θ)を示す別の垂直軸610Bを含む。グラフ600Aは、時間を示す横軸615を含み、時間t-0とおおよそt-27及び/またはt-28の間のサッカードにおける時系列を含む。
【0080】
純粋に例示のために、グラフ600Aは、線630でサッカードの角変位を示す。以前に紹介したように、サッカードは、ディスプレイ上のある凝視点から別の凝視点に移動するときになされたユーザの眼(複数可)の急速なかつ同時の運動を定義する。示されるように、眼の変位線630によって示されるような角運動は、特定の方向(例えば、左から右へ)にある。すなわち、サッカード中、眼の視線方向は、グラフ600Aの例では、0度から30度の間で移動する。
【0081】
それに対応して、純粋に例示のために、グラフ600Aは、線620でサッカード中の眼の速度を示す。異なるサッカードの速度グラフは、一般に、線620に示されているのと同じ形状に従う。例えば、サッカードの開始時、サッカードの速度は線形進行に従う(例えば、時間t-0とt-8の間)。線形進行後、速度は時間t-8とt-17の間などでプラトーになり得る。線620の速度グラフは、プラトー後、サッカードの終了まで、例えば、時間t-17とt-27の間などで、速度の急激な低下を示す。
【0082】
本開示の実施形態は、現在のサッカードの速度グラフの一部(例えば、線620の線形部分)を、モデル化されたサッカード(例えば、深層学習エンジン190をトレーニングすると構築される)に一致させる。現在のサッカードの着地点は、サッカード中の任意の点におけるモデル化されたサッカードの着地点に近似可能で、現在のサッカードにおいて予測することができる。
【0083】
図6Bは、本開示の一実施形態による、HMDのディスプレイを見ているユーザのサッカードの速度グラフ600Bにおける様々なサンプル点での眼の向き/追跡データのサンプリングを示す。グラフ600Bは、
図6Aのグラフ600Aに従い、サッカード中の眼球運動の角速度(dθ/dt)を示す垂直軸610A、及び水平軸615を含むが、線620でサッカードの速度のみを示すように切り離されている。
【0084】
特に、サッカード中の様々なサンプル点で、視線追跡システム1220から眼の向き/追跡データが収集される。例示のみを目的として、サンプル点は少なくとも時間t-0、t-1、t-2…t-27…t-nに生じ得る。例えば、線620上のサンプル点S1は、時間t-1における視線追跡データ(例えば、視線方向、速度など)に関連し、サンプル点S2は、時間t-2における視線追跡データに関連し、サンプル点S3は、時間t-4における眼の向き/追跡データに関連し、サンプル点S5は、時間t-5における視線追跡データに関連し、サンプル点S6は、時間t-6における視線追跡データに関連し、サンプル点S7は、時間t-7における視線追跡データに関連し、サンプル点S8は、時間t-8における視線追跡データに関連するなど。例として、各サンプル点で収集されたデータは、前述のように、視線方向、時間、及び他の情報を含み得る。データに基づいて、ユーザの眼(複数可)に対する速度情報が判定され得る。一部の実施形態では、速度データは、視線追跡システム1220から直接収集され得る。
【0085】
このように、速度線620によって示されるサッカード中、少なくともサンプル点S
1からおおよそS
27までに対して視線追跡データが収集かつ/または判定される。サンプル点S
1からS
8は、グラフ600Bで強調されて、
図5Bで先に示したようにサッカードに対する着地点の予測の収束を示し(例えばサッカード510の終わり)、それは、サンプル点S
8に対応するおおよそ時間t-8での収束を示す。
【0086】
図6Cは、本開示の一実施形態による、HMDのディスプレイを見ているユーザの眼(複数可)260に関連するサッカードの着地点を予測するために使用される1つまたは複数のサンプル点のセットに対する眼の向き/追跡データの収集を示す。
図6Cは、ユーザの眼(複数可)のサッカードの着地点を予測するための、
図6Bのグラフ600Bで紹介したサンプル点での情報の使用を示す。
【0087】
示されるように、眼の向き/追跡データは、複数のサンプル点650(例えば時間t-1からt-27のそれぞれにおけるS1からS27)において眼260上で視線追跡システム1220によって収集される。純粋に例示のみを目的として、サッカードは、凝視点Aと凝視点Bの間を0から30度の間で移動するように示される。
【0088】
特に、速度データは、サンプル点650のそれぞれに対する眼の向き/追跡データから収集かつ/または判定される。サンプル点を強調する丸640が拡大して示され、少なくともサンプル点S1からS8を含む。例えば、速度データV1は、サンプル点S1と関連し、速度データV2は、サンプル点S2と関連し、速度データV3は、サンプル点S3と関連し、速度データV4は、サンプル点S4と関連し、速度データV5は、サンプル点S5と関連し、速度データV6は、サンプル点S6と関連し、速度データV7は、サンプル点S7と関連し、少なくとも速度データV8は、サンプル点S8と関連する。追加データが残りのサンプル点に対して収集かつ/または判定されるが、丸640には示されていない。
【0089】
予測の目的で、ユーザの眼(複数可)がサッカードにあると識別されると、サンプル点のセットからの情報が収集される。例示の目的のために、サッカード識別は、サンプル点S5と関連する時間t-5で発生することもあり、それはまた未来のフレームF8のレンダリングの開始と一致する。一実施形態では、サッカード識別は、眼(複数可)の速度が閾値速度に達するかつ/またはそれを超えると確認される。
【0090】
サッカード識別後、事前定義された着地点の予測が実行される。具体的には、サンプル点のセットからの情報が識別される。少なくとも、情報には、測定されるかつ/または計算される角速度が含まれる。セットには、現在のサンプル点を含む、事前定義された数のサンプル点が含まれ得る。例えば、セットには、1から10のサンプル点が含まれ得る。一実施形態では、セットには、エラーを低減するために3から5のサンプル点が含まれ得る。
【0091】
例示の目的で、セットには、
図6Cに記載されているように、現在のサンプル点を含む4つのサンプル点が含まれ得る。サンプル点のセットから情報を収集するスライディングウィンドウが示される。例えば、現在のサンプル点S
5に対応するフレーム期間または時間において、ウィンドウ(w1)は、サンプル点S
2からS
5を含み、これらのサンプル点からのそれぞれの情報(例えば速度)を用いて着地点を予測する。次の現在のサンプル点S
6に対応する次のフレーム期間または時間において、ウィンドウ(w2)は、サンプル点S
3からS
6を含み、それぞれの情報を用いて更新着地点を予測する。また、次の現在のサンプル点S
7に対応する次のフレーム期間または時間において、ウィンドウ(w3)は、サンプル点S
4からS
7を含み、それぞれの情報を用いて更新着地点を予測する。収束は、次の現在のサンプル点S
8に対応する次のフレーム期間または時間に発生可能で、ウィンドウ(w4)はサンプル点S
5からS
8を含む。
【0092】
収束は、
図5Bに関連して以前に説明している。収束の確認は、ウィンドウw5...w27に対してなど着地点の後続の予測をもって発生し得る。一実施形態では、収束が確認されると、予測は停止され得る。
【0093】
図6Dは、本開示の一実施形態による、HMDのディスプレイを見ているユーザに関連するサッカードの着地点(例えば、サッカードの終わり)を予測するために使用されるサンプル点のセットに対する眼の向きのデータを一覧表示している表600Dを示す。
図6Dは、凝視点Bにおける予測された着地点の予測及び収束を示す
図5Bと連携している。
【0094】
具体的には、列661はウィンドウ指定を示し(例えばw1からw5)、列662はサンプル点のセットを示し、列663はサッカードの終わりと一致する予測された着地点を示し、ここで角変位は、凝視点Aにおけるサッカードの開始を基準としており、列664は、予測サッカード終了時間(例えば、フレームまたはフレーム期間単位で)を示し、ここで予測終了時間は、凝視点Aにおけるサッカードの開始時間を基準としている。
【0095】
例えば、ウィンドウw1は、サンプル点S
2からS
5を含むサンプル点のセットからの情報(例えば、速度)を使用して着地点(サッカードの終了)を予測する。予測された着地点に対するユーザの眼(複数可)の予測視線方向は、42度の角度を持つベクトルX
F-5である。予測された着地点は、
図5Bの凝視領域541を中心として示される。さらに、サッカードの予測終了時間または持続時間は、フレーム及び/またはフレーム期間F38に関連するおおよそ時間t-38であると予測される。
【0096】
また、ウィンドウw2は、サンプル点S
3からS
6を含むサンプル点のセットからの情報(例えば速度)を使用して更新着地点(サッカードの終わり)を予測する。予測された着地点に対するユーザの眼(複数可)の予測視線方向は、18度の角度を持つベクトルX
F-6である。予測された着地点は、
図5Bの凝視領域542を中心として示される。さらに、サッカードの予測終了時間または持続時間は、フレーム及び/またはフレーム期間F20に関連するおおよそ時間t-20であると予測される。
【0097】
ウィンドウw3は、サンプル点S
4からS
7を含むサンプル点のセットからの情報(例えば、速度)を使用して更新着地点(サッカードの終わり)を予測する。予測された着地点に対するユーザの眼(複数可)の予測視線方向は、28度の角度を持つベクトルX
F-7であり、これは、30度の角度における凝視点Bに近接する。予測された着地点は、
図5Bの凝視領域543を中心として示され、これは、凝視点Bに近接する。さらに、サッカードの予測終了時間または持続時間は、フレーム及び/またはフレーム期間F25に関連するおおよそ時間t-25であると予測される。
【0098】
ウィンドウw4及びw5は、予測された着地点(例えばサッカードの終わり)の収束を示す。すなわち、これらのウィンドウに関連付けられた予測は、30度(例えば、凝視点Aから)の着地点を示す。例えば、ウィンドウ(w4)は、サンプル点S5からS8を用いて着地点を予測する。ユーザの眼(複数可)の予測視線方向及び予測された着地点は、30度の角度を持つベクトルXF-8であり、これは凝視点Bに対する角度でもある。サッカードの予測終了時間または持続時間は、フレーム及び/またはフレーム期間F27に関連するおおよそ時間t-27であると予測される。また、ウィンドウ(w5)は、サンプル点S6からS9を用いて、凝視点Bにおける30度と同一の着地点を予測する。サッカードの予測終了時間または持続時間は、フレーム及び/またはフレーム期間F27に関連する時間t-27であり同一である。このように、収束は、ウィンドウ(w4)で発生し、収束の確認は、ウィンドウ(w5)で発生する。後続の予測では、収束した着地点が示されるであろう。
【0099】
ゲーム機、HMD、及びクラウドゲーミングサーバの様々なモジュールの詳細な説明とともに、本開示の一実施形態による、着地点がサッカード中の任意の点またはサッカードの終わりで生じ得る、サッカードを経験しているユーザの眼(複数可)の視線方向に関連付けられた、ディスプレイ(例えばHMDの)上の着地点を予測する方法が、ここで、
図7の流れ
図700に関連して説明される。前述のように、流れ
図700は、HMD、ゲーム機、及びクラウドゲーミングサーバの1つまたは複数で着地点を予測するために含まれる動作のプロセス及びデータフローを示す。特に、流れ
図300の方法は、少なくとも部分的に
図1A~1C、2及び4A~4Cのサッカード予測エンジン400によって実行され得る。
【0100】
710で、方法は、複数のサンプル点で、HMDに配置されている視線追跡システムを用いて、ユーザの少なくとも片方の眼球の運動を追跡することを含む。例えば、少なくとも視線方向を含むように、眼の向き/追跡データが収集され得る。例えば、本開示の一実施形態にしたがって、視線方向は、様々な時間t0からt5において
図6Eに示され得る。
図6Eでは、時間t0において、視線方向は、ベクトルX
t0によって定義され、時間t1において、視線方向は、ベクトルX
t1によって定義され、時間t2において、視線方向は、ベクトルX
t2によって定義され、時間t3において、視線方向は、ベクトルX
t3によって定義され、時間t4において、視線方向は、ベクトルX
t4によって定義され、時間t5において、視線方向は、ベクトルX
t5によって定義される。
【0101】
720で、方法は、追跡に基づいて運動の速度を判定することを含む。
図6Eに示すような視線方向ベクトルは、ユーザの眼(複数可)の速度を判定するのに使用され得る。すなわち、眼(複数可)の速度は、2つのサンプル点からの第1の眼または視線方向及び第2の眼または視線方向に基づいて判定され得る。特に、2つのサンプル点の間の視線方向、2つの視線方向の間の角度、及び2つのサンプルの点の間の時間を用いて、2つのサンプル点の間の速度を判定し得る。例えば、2つのサンプル点の間の角度(θ)は、次の式で定義される三角関数を含む多数の手法のうちの1つを使用して判定され得る。例示として、角度(θ)は、一実施形態において、以下の式(1)を使用して、時間t
n及び時間t
n-1で取られた2つのサンプル点の間で判定される。
図6Eを参照すると、角度θ
2は、ベクトルX
t1及びX
t2から判定でき、角度θ
3は、ベクトルX
t2及びX
t3から判定でき、θ
4は、ベクトルX
t3及びX
t4から判定でき、角度θ
5は、ベクトルX
t4及びX
t5から判定され得る。
【数1】
【0102】
式1は、時間tn及び時間tn-1で取られた2つのサンプル点の視線方向の間の角度を与える。2つのサンプル点の間で発生する速度を計算するには、以下の式(2)に示すように、角度を2つのサンプル点の間の持続時間であるΔtで除算する。
速度(1秒あたりの度)=θ/(tn-tn-1) (2)
【0103】
このように、速度(v2)は、ベクトルXt1及びXt2を用いて、時間t1及びt2で取られたサンプル点の間で判定することができ、速度(v3)は、ベクトルXt2及びXt3を用いて、時間t2及びt3で取られたサンプル点の間で判定することができ、速度(v4)は、ベクトルXt3及びXt4を用いて、時間t3及びt4で取られたサンプル点の間で判定することができ、速度(v5)は、ベクトルXt4及びXt5を用いて、時間t4及びt5で取られたサンプル点の間で判定することができる。
【0104】
730で、方法は、一実施形態において、速度が閾値速度に達したとき、ユーザの眼がサッカードにあると判定することを含む。他の実施形態では、ユーザの眼(複数可)がサッカードにあると判定するのに他の方法を使用することができる。前に説明したように、閾値速度は、眼(複数可)が別のタイプの運動(例えば、円滑追跡)を体験している可能性があるときまたはデータにノイズが多いとき、サッカードを識別しないように事前定義されている。
【0105】
740で、方法は、サッカードにおける眼の方向に対応する、HMDのディスプレイ上の着地点を予測することを含む。一実施形態では、方向は、眼の視線方向に対応する。視線方向はHMDの画面に対して定義され得るので、視線方向は、画面上の位置に変換され得る。位置とは、着地点である。着地点は、フレームに対して高解像度でレンダリングされる中心窩領域の中心として使用され得る。一実施形態では、着地点は、サッカード中の任意の点で発生することもあり、眼の中間方向に対応するサッカードの中間点を含む。例えば、一実施形態では、着地点は、現在のフレーム期間を過ぎて事前定義されたフレーム期間の数だけ発生し得る。別の実施形態では、着地点は、サッカードの終わりに発生することもあり、眼の凝視方向に対応する。
【0106】
着地点の予測は、サンプル点のセットに対する眼球運動を追跡するときの眼の向き/追跡データを収集することを含み得る。すなわち、サンプル点のセットからの情報を用いて、着地点を予測する。眼の向き/追跡データは、HMDに関する少なくとも眼及び/または視線の方向を含み、セットのうちの少なくとも1つのサンプル点は、サッカード中に発生する。速度情報は、前に説明したように、眼の向き/追跡データから判定でき、速度データも、着地点を予測するために使用され得る。さらに、サンプル点のセットに対する眼の向き/追跡データは、リカレントニューラルネットワーク(例えば深層学習エンジン)に入力として提供される。ニューラルネットワークは、例えば、被験者の複数のサッカードの以前に測定された眼の向きのデータに関してトレーニングされる。一実施形態では、リカレントニューラルネットワークは、長短期記憶ニューラルネットワーク、及び全結合された多層パーセプトロンネットワークを含む。リカレントニューラルネットワークは、サンプル点のセットに対する眼の向きのデータから構築された眼の速度グラフの一部を、被験者の複数のサッカードから構築された眼の速度グラフと比較するように構成され得る。ユーザのサッカードの眼の速度グラフの一部との一致は、リカレントニューラルネットワークにおけるトレーニングされたサッカードを用いてなされ得る。一致がなされると、ユーザのサッカードの1つまたは複数の予測された着地点は、トレーニングされたサッカードの1つまたは複数の着地点に近似し得る。このようにして、サッカードの着地点(例えば、サッカードの終わり、またはサッカード中の中間点)は、リカレントニューラルネットワークを使用して、サンプル点のセットからの情報を用いて予測され得る。
【0107】
さらに、着地点の予測は、異なるサンプル点のセットのデータを用いる後続の予測をもって更新され得る。例えば、第1の現在のサンプル点に関連して、第1の着地点が741で予測される。第1の着地点の予測は、第1のサンプル点及び少なくとも1つの前のサンプル点を含む第1のサンプル点のセットの眼の向きのデータに基づく。眼の向きのデータには、HMDに関する眼及び/または視線方向が含まれる。742で、サッカードにおける第1のサンプル点に続く第2の現在のサンプル点に関連して、更新された予測が行われる。着地点の更新は、第2のサンプル点及び少なくとも1つの前のサンプル点(例えば、第1のサンプル点)を含む第2のサンプル点のセットの眼の向きのデータに基づいて、第2の着地点を予測することを含む。
【0108】
決定ステップ743で、方法は、予測された着地点の収束があるかどうかを判定する。例えば、2つの予測された着地点が閾値測定値内にある(例えば、2つの予測された着地点の間のディスプレイ上のデルタ距離)とき、収束は発生し得る。一実施形態では、2つの予測された着地点が同一であるとき収束は発生する。
【0109】
収束がない場合、方法は744に進み、別の予測が行われる。具体的には、前のサンプル点に続く次のサンプル点において、次の着地点が、次のサンプル点及び少なくとも1つの前のサンプル点からの眼の向き/追跡データに基づいて予測される。方法は、決定ステップ743に戻って、収束があるかどうかを判定する。
【0110】
一方、収束がある場合、方法は745に進み、最後の予測された着地点が、サッカード予測の着地点として選択される。すなわち、収束により、最後に計算された着地点が予測された着地点として使用される。
【0111】
一実施形態では、中心窩レンダリングが、予測された着地点に基づいて行われ得る。例えば、第1のビデオフレームが、表示するためにレンダリングでき、第1のビデオフレームは、ディスプレイ上の予測された着地点を中心とする中心窩領域を含む。中心窩領域は、高解像度でレンダリングされ得る。さらに、ディスプレイの中心窩ではない領域は、ディスプレイの残りの部分を含み、より低い解像度でレンダリングされる。さらに、中心窩領域を有する第1のビデオフレームは、HMDのディスプレイ上に提示され、眼は、第1のビデオフレームを表示するとき、着地点(すなわち、中心窩領域に対応する)に向けられると予測される。
【0112】
別の実施形態では、HMD上に表示するためにフレームをレンダリングするときの電力消費を削減するために、追加の手段を取り得る。特に、サッカード中、眼球運動が速すぎる場合があるので、ユーザは、レンダリングされ表示される中間フレーム見ることができない場合がある。このように、中間ビデオフレームのうちの少なくとも1つのレンダリングは、レンダリングに使用されるコンピューティングリソースを節約するために、終了され得る。すなわち、方法は、第1のビデオフレームの前にレンダリングされる、サッカード中の少なくとも1つのビデオフレームのレンダリングを終了することを含む。
【0113】
さらに別の実施形態では、HMD上に表示するためにフレームをレンダリングするときの電力消費を削減するために別の手段をとり得る。特に、ユーザは、サッカード中レンダリングされ表示される中間フレームを見ることができない場合があるので、ビデオフレーム全体は、より低い解像度でまたは低解像度でレンダリングされ得る。すなわち、そのフレームに対して中心窩領域はレンダリングされない。言い換えれば、方法は、第1のビデオフレームの前にレンダリングされる、サッカード中の少なくとも1つのビデオフレームを低解像度でレンダリングすることを含む。
【0114】
GPUがアクセス可能なバッファに対する予測された着地点の最新の更新
図8は、本開示の一実施形態による、HMDのディスプレイを見ているユーザに関連するサッカードの着地点を予測すること、及び対応するビデオフレームにおいて着地点を中心とする高解像度の中心窩領域をレンダリングするのに即時使用するために、着地点を、コンピュータシステムのGPUがアクセス可能なバッファへ最新の更新として提供することを含む、中心窩レンダリングを行うように構成されているレンダリングパイプライン800を実装するコンピュータシステムを示す。
【0115】
レンダリングパイプライン800は、3D(3次元)ポリゴンレンダリングプロセスを用いて画像をレンダリングするための一般的なプロセスを例示するが、着地点の予測及び、対応するビデオフレームの中心窩領域を即時レンダリングするための着地点の最新の更新といった、中心窩レンダリングを実行するためパイプライン内で追加のプログラム可能な要素を実行するように修正されている。レンダリングパイプライン800は、レンダリング画像のディスプレイにおける画素のそれぞれの対応する色情報を出力し、色情報は、テクスチャ及びシェーディング(例えば、色、シャドウィングなど)を表し得る。レンダリングパイプライン800は、少なくとも、
図1A~
図1Cのコンピュータシステム106、
図2及び
図13のシステム1200、HMD102、ならびに
図14のクライアントデバイス1410内で実装可能である。
【0116】
レンダリングパイプライン800は、アプリケーションを実行するように構成されたCPU1202、及び中心窩レンダリングのための1つまたは複数のプログラム可能なシェーダ動作を実行するように構成されたGPUを含む。中心窩レンダリングは、頂点データの処理、頂点をプリミティブ(例えば、ポリゴン)にアセンブルする、ラスタライズを実行してディスプレイに対するプリミティブからフラグメントを作成し、各フラグメントの色と深度の値を計算し、画素ごとにフラグメントをブレンドして、表示用のフレームバッファに格納することを含む。
【0117】
示されるように、アプリケーションは、3D仮想環境内の頂点などのジオメトリプリミティブ805、及び各頂点に対応する情報を生成するように構成されている。例えば、CPU1202上で実行されるアプリケーションは、3D仮想環境のシーンに変更を加え、その変更は、物理的特性、アニメーション、モーフィング、加速技術などのアプリケーションを表す。シーンの変更(例えば、オブジェクトの動き)は、オブジェクトにもたらされたかつ/または加えられた力(例えば、重力などの外力、及び動きを誘発する内力)に応じて、フレーム間で計算される。シーン内のオブジェクトは、ジオメトリプリミティブによって定義されたポリゴン(三角形など)を使用して表すことができる。次に、対応するポリゴンの表面は、レンダリングパイプライン800のGPU1216を介して処理されて、最終的な効果(例えば、色、テクスチャなど)を達成する。頂点属性には、法線(例えば、頂点に対してどの方向が光であるか)、色(例えば、RGB-赤、緑、青のトリプルなど)、及びテクスチャ座標/マッピング情報が含まれ得る。頂点は、システムメモリ820に格納され、次に、GPUのメモリ840によってアクセスされるかつ/またはそこに転送される。
【0118】
さらに、CPU1202は、サッカード予測を実行するように構成されている。特に、CPU1202は、ディスプレイを見ているユーザに関連するサッカードのディスプレイ(例えば、HMD)上の着地点を予測するように構成されている予測エンジン400を含む。すなわち、予測エンジン400は、サッカード中の任意の点における眼(複数可)の予測方向に対応する、ディスプレイ上の着地点を予測するために、識別されたサッカード中のユーザの眼(複数可)の動きを予測する。眼の予測方向に対応する予測時間も生成される。前述のように、視線追跡システム1220は、予測段階中に使用するために、眼の向きの情報を予測エンジン400に提供する。例えば、視線追跡システム1220は、別々の時間の点におけるユーザの瞳孔(複数可)及び/または眼(複数可)の視線の方向及び/または向きを判定するように構成されている。視線方向は、ディスプレイに関してのものであり得る。特に、視線追跡システム1220からの情報は、1つまたは複数のサンプル点801において収集され、予測エンジン400に提供される。
【0119】
CPU1202は、
図9~
図11に関連して以下で説明するように、視線追跡情報及び/またはサッカード中の眼球運動の着地点予測の最新の更新を実行するように構成されている最新の更新モジュール830を含む。例えば、予測された着地点及び/または他の視線追跡情報802は、即時処理するためにGPUがアクセス可能であるバッファ(例えば、GPUメモリ840)へ最新の更新として提供され得る。そのようにして、予測情報及び/または視線追跡情報802は、表示するためにビデオフレームをレンダリングするときにGPUによって処理するために次のフレーム期間を待つのではなく、同じフレーム期間内でまたはほぼ即座に使用され得る。
【0120】
GPU1216は、3D仮想環境の画像及び/またはビデオフレームをレンダリングするための、出力マージャ及びフレームバッファを含むラスタライザ、フラグメントシェーダ、及びレンダラなどの1つまたは複数のシェーダ動作を含むが、すべてが
図8に示されていない場合がある。
【0121】
特に、頂点シェーダ850は、3Dシーン内のオブジェクトを構成するプリミティブをさらに構築し得る。例えば、頂点シェーダ410は、シーンのライティングに依存する、ポリゴンのライティング及びシャドウィング計算を実行するように構成され得る。クリッピング(例えば、ゲーム世界の視聴場所によって定義されるビュー錐台の外側にあるプリミティブを識別して無視する)などの追加の動作も頂点プロセッサ410によって実行され得る。
【0122】
頂点プロセッサ410によって出力されたプリミティブは、3D仮想環境内の視点に応じて、シーンのオブジェクトをディスプレイに投影するように構成されているラスタライザ(図示せず)に供給される。単純なレベルでは、ラスタライザは、各プリミティブを調べ、どの画素が対応するプリミティブの影響を受けるかを判定する。特に、ラスタライザは、プリミティブを画素サイズのフラグメントに分割し、各フラグメントは、ディスプレイ内の画素及び/またはレンダリングの視点(例えばカメラの視野)に関連付けられた参照面に対応する。
【0123】
ラスタライザからの出力は、中心窩フラグメントプロセッサ430へ入力として提供され、中心窩フラグメントプロセッサ430は、そのコアにおいて、フラグメントに対してシェーディング動作を実行して、プリミティブの色及び明るさが利用可能なライティングによってどのように変化するかを判定する。例えば、フラグメントプロセッサ430は、各フラグメントの表示位置からの距離のZ深度、色、透明度のアルファ値、法線及びテクスチャ座標(例えば、テクスチャ詳細)を判定可能であり、フラグメントの利用可能なライティング、暗さ、及び色に基づいて適切な光レベルをさらに判定し得る。さらに、フラグメントプロセッサ430は、各フラグメントにシャドウィング効果を適用し得る。
【0124】
本発明の実施形態では、パーティクルシステムのフラグメントは、フラグメントが中心窩領域の内側にあるか外側にあるか(例えば、中心窩領域の内側の画素に寄与するか外側の画素に寄与するか)に応じて異なってレンダリングされる。一実施形態では、中心窩フラグメントシェーダ860は、どの画素が高解像度の中心窩領域に位置するかを判定するように構成されている。例えば、最新の更新動作でGPUメモリ840に提供される予測された着地点及び/または視線追跡情報は、中心窩フラグメントシェーダ860によって使用されて、中心窩領域の画素、及びそれに応じてそれらの画素に対応するフラグメントを判定し得る。このように、中心窩フラグメントシェーダ430は、フラグメントが中心窩領域内にあるか周辺領域内にあるかに基づいて、上記のようにシェーディング動作を実行する。表示画像の中心窩領域内に位置するフラグメントは、中心窩領域内のフラグメントの詳細なテクスチャ及び色の値を実現するために、処理効率に関係なく、高解像度でシェーディング動作を用いて処理される。他方、中心窩フラグメントプロセッサ430は、十分なコントラストを提供するなど、最小限の動作で十分な詳細をもってフラグメントを処理するために、処理効率に関心を持って、周辺領域内に位置するフラグメントに対してシェーディング動作を実行する。フラグメントプロセッサ430の出力は、処理されたフラグメント(例えば、シャドウィングを含むテクスチャ及びシェーディング情報)を含み、レンダリングパイプライン800の次のステージに送られる。
【0125】
出力マージコンポーネント870は、対応する各画素に寄与するかつ/または影響を与えるフラグメントに応じて、各画素の特性を計算する。すなわち、3Dゲーム世界の全てのプリミティブのフラグメントが、ディスプレイ用の2Dカラー画素へと結合される。例えば、対応する画素のテクスチャ及びシェーディング情報に寄与するフラグメントは結合されて、レンダリングパイプライン800の次のステージに送られる画素の最終的な色値を出力する。出力マージコンポーネント870は、中心窩フラグメントシェーダ860から判定されたフラグメント及び/または画素間の値の任意選択的なブレンディングを実行し得る。表示位置に対するクリッピング(ビュー錐台の外側にあるフラグメントを識別して無視する)及びカリング(より近いオブジェクトによって遮られたフラグメントを無視する)などの追加の動作も、出力マージコンポーネント870によって実行され得る。
【0126】
ディスプレイ1210における各画素の画素データ(例えば、色値)は、フレームバッファ880に格納される。これらの値は、シーンの対応する画像を表示するときに、対応する画素にスキャンされる。特に、ディスプレイは、画素ごと、行ごと、左から右にあるいは右から左に、上から下にあるいは下から上に、または任意の他のパターンで、フレームバッファから色値を読み取り、画像を表示するときにそれらの画素値を使用して画素を照らす。
【0127】
図9Aは、本開示の一実施形態による、アプリケーションの実行中にビデオフレームを生成するときに視線追跡情報を受信かつ使用するレンダリングパイプライン900Aを示し、レンダリングパイプラインは、視線追跡情報の最新の更新を実装しておらず、サッカード予測を提供していない。
図9Aは、
図5Aのレンダリングパイプライン501に類似し、いずれも、本開示の一実施形態による、サッカード中かつサッカードの完了後に表示画像がユーザに対してぼやけることにつながる、眼球運動に比べてフレーム更新の遅れがどのようなものかを示す。
【0128】
特に、レンダリングパイプライン900Aは、画像をレンダリングするための一般的なプロセス(例えば、3Dポリゴンレンダリングプロセス)を例示し、現在の視線追跡情報に基づいて中心窩レンダリングを実行するように構成されている。レンダリングパイプライン900Aは、CPU1202及びGPU1216を含み、両方にアクセス可能であり得るメモリ(例えば、頂点、インデックス、深度、及びフレームバッファ)を備える。レンダリングパイプライン900Aは、ディスプレイ(例えばHMD)における画素のそれぞれの対応する画素データ(例えば色情報)を出力することを含む、レンダリングパイプライン800と類似する機能を実行し、色情報は、テクスチャ及びシェーディング(例えば、色、シャドウィングなど)を表し得る。
【0129】
レンダリングパイプラインは特定の周波数で動作し、周波数に対応する各サイクルはフレーム期間として定義され得る。例えば、動作周波数が120Hzの場合、フレーム期間は8.3msである。このように、レンダリングパイプラインにおいて、パイプラインシーケンスには、ビデオフレームがフレームバッファからディスプレイにスキャンアウトされる前に、CPU及びGPUによって連続フレーム期間に実行される順次動作が含まれる。
図9Aは、2つのパイプラインシーケンス901及び902を示す。例示のために、2つのパイプラインシーケンスのみが示される。
【0130】
レンダリングパイプラインは、視線追跡システム1220などから視線追跡情報を受信する。示されるように、視線追跡システム1220は、各レンダリングシーケンス901及び902のフレーム期間の開始時にCPUに提示される。一実施形態では、視線追跡システム1220は、レンダリングパイプライン900Aによって使用される周波数と同じ周波数で動作する。このように、ユーザの眼(複数可)の視線方向は、フレーム期間ごとに更新され得る。他の実施形態では、視線追跡システム1220は、レンダリングパイプライン900Aによって使用される周波数とは異なる周波数を用いて動作する。
【0131】
視線追跡情報は、高解像度でレンダリングされる中心窩領域を判定するために用いられ得る。例えば、パイプラインシーケンス901において、視線追跡情報は、フレーム期間1においてCPU1202に提示される。視線追跡情報は、ディスプレイに関する眼の視線方向に対応するベクトルX1を含み得る。視線追跡情報は、前のフレーム期間に収集されたものであり得る。また、フレーム期間1において、CPU1202は、オブジェクトに対して物理シミュレーションを実行し、ポリゴンプリミティブを描画命令と共にGPU1216に送り得る。このように、第2のフレーム期間において、GPU1216は、一般に、前述のように、プリミティブアセンブリを実行してレンダリングフレームを生成する。さらに、GPU1216は、視線追跡情報に基づいて中心窩レンダリングを提供可能である。すなわち、GPUは、フレーム期間1で送られた視線方向に対応する中心窩領域を有するビデオフレームをレンダリングし得る。非中心窩領域は低解像度でレンダリングされる。フレーム期間3において、ビデオフレーム(F3)は、ディスプレイにスキャンアウト910される。
【0132】
また、パイプラインシーケンス902において、視線追跡情報は、フレーム期間2においてCPU1202に提示される。視線追跡情報は、ディスプレイに関する眼の視線方向に対応するベクトルX2を含み得る。また、フレーム期間2において、CPU1202は、オブジェクトに対して物理シミュレーションを実行し、ポリゴンプリミティブを描画命令と共にGPU1216に送り得る。このように、フレーム期間3において、GPU1216は、一般に、前述のように、プリミティブアセンブリを実行してレンダリングフレームを生成する。さらに、GPU1216は、視線追跡情報に基づいて中心窩レンダリングを提供可能である。すなわち、GPUは、フレーム期間2で送られた視線方向に対応する中心窩領域を有するビデオフレームをレンダリングし得る。非中心窩領域は低解像度でレンダリングされる。フレーム期間4において、ビデオフレーム(F4)は、ディスプレイにスキャンアウト910される。
【0133】
このように、
図9Aにおいて、サッカード予測なしかつ最新の更新なしで、対応するビデオフレームがスキャンアウトされるまでに、そのビデオフレームの中心窩領域をレンダリングするのに使用される視線追跡情報は、2~4フレーム期間(または16~32ms)古くなり得る。すなわち、眼球運動は、ビデオフレームをレンダリングする時間よりも速い場合があり、そのため、中心窩領域は、対応するビデオフレームが表示されるときの視線方向と一致しない。この問題は、動作周波数がさらに遅い場合に強調される。例えば、60Hz(16msのフレーム期間)で動作するレンダリングパイプラインは、2~4フレーム期間古くなった視線追跡情報をやはり有するが、それらの期間の時間は2倍となり、中心窩領域が視線方向と一致するまで32~64msの範囲となる。
【0134】
図9B~
図9Cは、本開示の実施形態において、サッカード中またはサッカードの終わりのディスプレイ(例えば、HMD)を見ているユーザの眼の向きに対応する着地点の予測を示す。特に、
図9Bは、本開示の一実施形態による、HMDのディスプレイ上の着地点を予測することによってレンダリングパイプラインの情報を更新する方法のステップを示す流れ図であり、着地点は、サッカード中またはその終わりのディスプレイを見ているユーザの眼の向きに対応するものであり、予測された着地点は、対応するビデオフレームにおいて着地点を中心とする高解像度の中心窩領域をレンダリングするためにGPUによって用いられる。
図9Cは、本開示の一実施形態による、アプリケーションの実行中にビデオフレームを生成するときに視線追跡情報を受信かつ使用するレンダリングパイプライン900Cを示し、サッカード中またはその終わりのHMDを見ているユーザの眼の予測視線方向及び/または向きに対応する、HMD上の着地点が予測されるものであり、予測された着地点は、対応するビデオフレームにおいて着地点を中心とする高解像度の中心窩領域をレンダリングするためにGPUによって用いられる。
【0135】
レンダリングパイプライン900Cは、画像をレンダリングするための一般的なプロセスの例示であり、サッカード予測に基づいて中心窩レンダリングを実行するように構成されている。すなわち、レンダリングパイプライン900Cは、最新の更新はせずにサッカード予測を提供する。レンダリングパイプライン900Cは、CPU1202及びGPU1216を含み、両方にアクセス可能であり得るメモリ(例えば、頂点、インデックス、深度、及びフレームバッファ)を備える。レンダリングパイプライン900Cは、ディスプレイ(例えばHMD)における画素のそれぞれの対応する画素データ(例えば色情報)を出力することを含む、レンダリングパイプライン800と類似する機能を実行し、色情報は、テクスチャ及びシェーディング(例えば、色、シャドウィングなど)を表し得る。
【0136】
レンダリングパイプラインは、ゲーム追跡システム1220などから視線追跡情報を受信する。示されているように、視線追跡情報は、前述のように、各フレーム期間の開始時にCPUに提示される。視線追跡情報は、サッカード中かつ/またはその終わりにユーザの眼(複数可)が向けられる、ディスプレイ(例えば、HMD)上の着地点を予測するために使用される。着地点の予測は、少なくとも部分的に
図7において以前記載された。
【0137】
915で、方法は、第1のフレーム期間(例えば、フレーム期間1)において、CPUでアプリケーションを実行して、第1のビデオフレームにおけるシーンのプリミティブを生成することを含む。例えば、レンダリングパイプライン900Cは、オブジェクトに対して物理シミュレーションを実行し、ポリゴンプリミティブを描画命令と共にGPU1216に送り得る。フレーム期間は、対応するビデオフレームをディスプレイにスキャンアウトする前に、CPU1202及びGPU1216によって連続フレーム期間で順次動作を実行するように構成されているレンダリングパイプラインの動作の周波数に対応する。一実施形態では、視線追跡システム1220の周波数は、レンダリングパイプライン900Cの周波数と同じであるが、他の実施形態では、周波数は異なる。
【0138】
920で、方法は、サッカードを経験しているユーザの眼の視線追跡情報を第1のフレーム期間においてCPUで受信することを含む。例えば、情報は、前のフレーム期間において視線追跡システム1220によって収集され得る。示されるように、視線追跡情報は、フレーム期間1の開始時にCPUに提示され、ディスプレイに関する眼の視線方向に対応するベクトルX1を含み得る。
【0139】
930で、方法は、フレーム期間1においてCPUで、視線追跡情報に基づいて、サッカードにおけるディスプレイを見ているユーザの眼(複数可)の方向(例えば、ベクトルX
F-1)に対応するディスプレイ(例えば、HMD)上の着地点を予測することを含む。より正確にするために、
図7において以前に説明したように、視線追跡情報の履歴を使用して、サッカード中またはその終わりのユーザの眼(複数可)の予測視線方向(例えば、ベクトルX
F-1)に対応するディスプレイ上の着地点を予測する。予測は、ユーザの視線が予測された着地点に向けられる予測時間を含み得る。
【0140】
940で、方法は、ユーザの眼(複数可)の予測視線方向(例えば、ベクトルXF-1)に対応する予測された着地点を、GPUがアクセス可能なバッファに転送することを含む。このようにして、予測された着地点(ベクトルXF-1に対応する)は、パイプラインシーケンス911で使用可能である。特に、方法は、950で、フレーム期間2において、第1のビデオフレームにおけるシーンのプリミティブに基づいてかつ予測された着地点(ベクトルXF-1に対応する)に基づいて、GPU1216で1つまたは複数のシェーダ動作を実行してディスプレイの画素の画素データを生成することを含む。画素データは、少なくとも色及びテクスチャ情報を含み、画素データはフレームバッファに格納される。さらに、フレーム期間2において、GPU1216は、サッカード中またはその終わりのユーザの眼(複数可)の予測視線方向(ベクトルXF-1)に対応する予測された着地点に対応する中心窩領域を有する第1のビデオフレームをレンダリングし得る。中心窩領域は高解像度でレンダリングされ、非中心窩領域は低解像度でレンダリングされる。
【0141】
960で、方法は、第3のフレーム期間において画素データをフレームバッファからディスプレイにスキャンアウトすることを含む。示されているように、ビデオフレーム(F3)はフレーム期間3においてスキャンアウトされる。
【0142】
同様に、パイプラインシーケンス912は、予測された着地点に基づいて中心窩レンダリングを行うように構成されている。示されるように、
図9Cのフレーム期間2において、CPU1202は、アプリケーションを実行して、第2のビデオフレームにおけるシーンのプリミティブを生成する。例えば、CPU1202は、オブジェクトに対して物理シミュレーションを実行し、ポリゴンプリミティブを描画命令と共にGPU1216に送り得る。フレーム期間2に示されるように、レンダリングパイプライン900Cは、視線追跡情報(ベクトルX
2)を受信し、着地点が、少なくとも現在の視線追跡情報に基づいてサッカードにおけるディスプレイを見ているユーザの眼(複数可)の方向(例えば、ベクトルX
F-2)に対応するディスプレイ(例えば、HMD)上で、CPUで予測される。すなわち、ベクトルX
F-2と予測された着地点の間にマッピングが存在する。より正確にするために、視線追跡情報の履歴(例えば、サッカード中に収集された)を用いて、サッカード中かつ/またはその終わりのユーザの眼(複数可)の予測視線方向に対応するディスプレイ上の着地点を予測する。フレーム期間2または3において、予測された着地点(ベクトルX
F-2に対応する)は、GPUがアクセス可能なバッファに転送される。このようにして、予測された着地点(ベクトルX
F-2に対応する)は、フレーム期間3においてパイプラインシーケンス912で使用可能である。特に、フレーム期間3において、GPU1216は、サッカード中またはサッカードの終わりのディスプレイを見ているユーザの眼(複数可)の視線方向(例えば、ベクトルX
F-2)に対応する予測された着地点に対応する中心窩を有する第2のビデオフレームをレンダリングし得る。中心窩領域は高解像度でレンダリングされ、非中心窩領域は低解像度でレンダリングされる。フレーム期間4において、第2のビデオフレーム(例えば、F4)の画素データがスキャンアウトされる。
【0143】
このように、
図9B~
図9Cにおいて、サッカード予測を用いて、最新の更新なしで、正確な予測を生成するために複数のサイクルが必要な場合でも、対応するビデオフレームがスキャンアウトされるまでに、そのビデオフレームの中心窩領域をレンダリングするために使用される予測された着地点は、少なくとも眼の動きに追いつき得、場合によっては眼の動きよりも速いことがあり得る(例えば、中心窩領域が眼球運動が追いつくのを待っている)。すなわち、サッカード予測があると、ビデオフレームをレンダリングする時間が眼球運動よりも速いことがあり得、そのため、中心窩領域は、対応するビデオフレームが表示されるとき視線方向と一致可能であり、または、対応するビデオフレームの中心窩領域の準備が整い眼球運動が予測視線方向に到達するのを待つ(サッカード中かつ/またはサッカードの終わり)ように進んでいる場合がある。
【0144】
コンピュータシステム、ゲーム機、HMD、及びクラウドゲームサーバの様々なモジュールの詳細な説明とともに、本開示の一実施形態による、視線追跡情報の最新の更新を、即時使用のためにGPUがアクセス可能なバッファに対して実行することによって、CPU及びGPUを含むレンダリングパイプラインの情報を更新する方法をここで、
図10Aの流れ
図1000A及び
図10Bに例示されたレンダリングパイプライン1000Bに関連して説明する。流れ
図1000A及びレンダリングパイプライン1000Bは、少なくとも
図1A~
図1Cのコンピュータシステム106、
図2及び
図13のシステム1200、HMD102、ならびに
図14のクライアントデバイス1410によって実装され得る。
【0145】
レンダリングパイプライン1000Bは、対応するビデオフレームをディスプレイにスキャンアウトする前に、CPU及びGPUによって連続フレーム期間で順次動作を実行する。レンダリングパイプライン1000Bは、画像をレンダリングするための一般的なプロセスを例示し、視線追跡情報の最新の更新に基づいて中心窩レンダリングを実行するように構成されている。すなわち、レンダリングパイプライン1000Bは、視線追跡に最新の更新を与える。レンダリングパイプライン1000Bは、CPU1202及びGPU1216を含み、両方にアクセス可能であり得るメモリ(例えば、頂点、インデックス、深度、及びフレームバッファ)を備える。レンダリングパイプライン1000Bは、ディスプレイ(例えばHMD)における画素のそれぞれの対応する画素データ(例えば色情報)を出力することを含むレンダリングパイプライン800と類似する機能を実行し、色情報は、テクスチャ及びシェーディング(例えば、色、シャドウィングなど)を表し得る。
【0146】
1010で、方法は、第1のフレーム期間において、CPUでアプリケーションを実行して、第1のビデオフレームにおけるシーンのプリミティブを生成することを含む。第1のフレーム期間に示されるように、レンダリングパイプライン1000B、CPU1202は、オブジェクトに対して物理シミュレーションを実行し、ポリゴンプリミティブを描画命令と共にGPU1216に送り得る。フレーム期間は、前述のように、レンダリングパイプラインの動作の周波数に対応する。
【0147】
また、視線追跡情報は、前述のように、フレームごとにCPU1302に提供され得る。示されるように、視線追跡情報は、各フレーム期間の開始時にCPU1202に提示される。例えば、ベクトルX1を含む視線追跡情報はフレーム期間1で提供され、視線追跡情報ベクトルX2はフレーム期間2で提供され、視線追跡情報ベクトルX3はフレーム期間3で提供される、等々である。視線追跡情報は、例えば、ディスプレイ(例えば、HMD)に関するユーザの眼(複数可)の視線方向に対応する。視線追跡情報は、CPUに送られる前に生じるフレーム期間で生成されていてもよい。さらに、視線追跡情報は、高解像度の中心窩領域を判定するために用いられる。一実施形態では、視線追跡情報を提供する視線追跡システム1220の周波数は、レンダリングパイプライン1000Bの周波数と同じであるが、他の実施形態では、周波数は異なる。以下で説明するように、最新の更新がある場合、視線追跡情報は、即時使用のためにGPUに提供され得る。
【0148】
1020で、方法は、第2のフレーム期間において、CPUで視線追跡情報を受信することを含む。
図10Bのフレーム期間2に示されるように、レンダリングパイプライン1000Bは、視線追跡情報(ベクトルX
2)を受信する。フレーム期間1で以前に提示された視線追跡情報(ベクトルX
1)は、パイプラインシーケンス1001の実行中にその情報が古くなっている場合があるため、最新の更新動作をせずに(例えば、
図5Aに示されるように)パイプラインシーケンス1001で使用されないことに留意されたい。例示のために、視線追跡情報(ベクトルX
1)は、示されていない前のパイプラインシーケンスで使用され得る、または、実装されずにハングされたままであり得る。
【0149】
他方、フレーム期間1で実行されるCPU動作を有するパイプラインシーケンス1001は、レンダリングパイプライン1000Bの最新の更新機能を利用して、最新の視線追跡情報を利用し得る。特に、1030において、方法は、フレーム期間2において、視線追跡情報を、GPUがアクセス可能なバッファに転送することによって、CPUによる最新の更新動作を実行することを含む。
【0150】
このように、1フレーム期間既に古くなっている、フレーム期間1で受信した視線追跡情報(ベクトルX1)を用いるのではなく、パイプラインシーケンス1001は、フレーム期間2において、同フレーム期間2においてCPUで受信したベクトルX2という最新の視線追跡情報を用いてGPU動作を実行可能である。特に、1040で、方法は、フレーム期間2において、第1のビデオフレームにおけるシーンのプリミティブに基づいてかつ視線追跡情報(ベクトルX2)に基づいて、GPUで1つまたは複数のシェーダ動作を実行して、ディスプレイの画素の画素データを生成することを含む。画素データは、少なくとも色及びテクスチャ情報を含み、画素データはフレームバッファに格納される。特に、フレーム期間2において、GPU1216は、ユーザの測定された最新の視線方向に対応する視線追跡情報(ベクトルX1)に対応する中心窩領域を有する第1のビデオフレームをレンダリングし得る。中心窩領域は高解像度でレンダリングされ、非中心窩領域は低解像度でレンダリングされる。
【0151】
1050で、方法は、第3のフレーム期間において、画素データをフレームバッファからディスプレイにスキャンアウトすることを含む。示されているように、ビデオフレーム(F3)は、フレーム期間3でスキャンアウトされる。
【0152】
同様に、パイプラインシーケンス1002は、視線追跡情報の最新の更新に基づいて中心窩レンダリングを行うように構成されている。示されるように、フレーム期間2において、CPU1202は、アプリケーションを実行して、第2のビデオフレームにおけるシーンのプリミティブを生成する。例えば、CPU1202は、オブジェクトに対して物理シミュレーションを実行し、ポリゴンプリミティブを描画命令と共にGPU1216に送り得る。
図10Bのフレーム期間3に示されるように、レンダリングパイプライン1000Bは、視線追跡情報(ベクトルX
3)を受信する。また、フレーム期間3において、視線追跡(ベクトルX
3)情報を、GPUがアクセス可能なバッファに転送することによって、CPUにより最新の更新動作が実行される。フレーム期間3において、第2のビデオフレームにおけるシーンのプリミティブに基づいてかつ視線追跡情報(ベクトルX
3)に基づいて、1つまたは複数のシェーダ動作がGPU1216で実行されて、ディスプレイの画素の画素データを生成する。画素データは、少なくとも色及びテクスチャ情報を含み、画素データはフレームバッファに格納される。特に、フレーム期間3において、GPU1216は、ユーザの測定された最新の視線方向に対応する視線追跡情報(ベクトルX
2)に対応する中心窩領域を有する第2のビデオフレームをレンダリングし得る。中心窩領域は高解像度でレンダリングされ、非中心窩領域は低解像度でレンダリングされる。フレーム期間4において、第2のビデオフレーム(例えば、F4)の画素データがスキャンアウトされる。
【0153】
このように、
図10A~
図10Bにおいて、最新の更新を用いて、前のフレーム期間で受信した視線追跡情報に対応する中心窩領域を有する、対応するビデオフレームがスキャンアウトされる。すなわち、最新の更新があると、ビデオフレームをレンダリングする時間は、眼球運動とほぼ同じ速さである。そのようにして、中心窩領域が、サッカード中かつサッカードの終わりの視線方向と一致するのにかかる時間が短くなる。
【0154】
コンピュータシステム、ゲーム機、HMD、及びクラウドゲームサーバの様々なモジュールの詳細な説明とともに、本開示の一実施形態による、サッカード中ディスプレイを見ているユーザの予測視線方向に関連付けられた、ディスプレイ(例えばHMD)上の着地点を予測することによって、CPU及びGPUを含むレンダリングパイプラインの情報を更新し、予測された着地点の最新の更新を、即時使用のためにGPUがアクセス可能なバッファに対して実行する方法をここで、
図11Aの流れ
図1100A及び
図11Bに例示されたレンダリングパイプライン1100Bに関連して説明する。流れ
図1100A及びレンダリングパイプライン1100Bは、少なくとも
図1A~
図1Cのコンピュータシステム106、
図2及び13のシステム1200、HMD102、ならびに
図14のクライアントデバイス1410によって実装され得る。
【0155】
レンダリングパイプライン1100Bは、対応するビデオフレームをディスプレイにスキャンアウトする前に、CPU及びGPUによって連続フレーム期間で順次操作を実行する。レンダリングパイプライン1100Bは、画像をレンダリングするための一般的なプロセスを例示し、サッカード予測の最新の更新に基づいて中心窩レンダリングを実行するように構成されている。すなわち、レンダリングパイプライン1100Bは、サッカード中またはサッカードの終わりのディスプレイ(例えば、HMD)を見ているユーザの眼(複数可)の予測視線方向及び/または向きに対応する予測された着地点の最新の更新を視線追跡に提供する。予測は、ユーザの視線が予測された着地点に向けられる予測時間を含み得る。予測された着地点は、対応するビデオフレームにおける着地点を中心とする高解像度の中心窩領域をレンダリングするためにGPUによって用いられる。レンダリングパイプライン1000Bは、CPU1202及びGPU1216を含み、両方にアクセス可能であり得るメモリ(例えば、頂点、インデックス、深度、及びフレームバッファ)を備える。レンダリングパイプライン1000Bは、ディスプレイ(例えばHMD)における画素のそれぞれの対応する画素データ(例えば色情報)を出力することを含むレンダリングパイプライン800と類似する機能を実行し、色情報は、テクスチャ及びシェーディング(例えば、色、シャドウィングなど)を表し得る。
【0156】
1110において、方法は、第1のフレーム期間(例えば、フレーム期間1)において、CPUでアプリケーションを実行して、第1のビデオフレームにおけるシーンのプリミティブを生成することを含む。フレーム期間1に示されるように、レンダリングパイプライン1000B、CPU1202は、オブジェクトに対して物理シミュレーションを実行し、ポリゴンプリミティブを描画命令と共にGPU1216に送り得る。フレーム期間は、対応するビデオフレームをディスプレイにスキャンアウトする前に、CPU1202及びGPU1216によって連続フレーム期間で順次動作を実行するように構成されているレンダリングパイプラインの動作の周波数に対応する。一実施形態では、視線追跡情報を提供する視線追跡システム1220の周波数は、レンダリングパイプライン1100Bの周波数と同じであるが、他の実施形態では、周波数は異なる。
【0157】
視線追跡情報は、第1のフレーム期間(例えば、フレーム期間1)においてCPUで受信され得る。視線追跡情報は、前のフレーム期間において視線追跡システム1220によって生成されたものであり得る。示されるように、視線追跡情報は、フレーム期間1の開始時にCPUに提示される。例えば、視線追跡情報は、ディスプレイに関する眼の視線方向に対応するベクトルX1を含み得る。さらに、フレーム期間1において、CPUは、少なくとも現在の視線追跡情報に基づいて、サッカードにおけるディスプレイを見ているユーザの眼(複数可)の方向(ベクトルXF-1)に対応するディスプレイ(例えばHMD)上の着地点を予測する。最新の更新があるので、以下に説明するように、より最新の視線追跡情報が使用され得るため、予測された着地点(ベクトルXF-1に対応する)はパイプライン1101で使用されない。
【0158】
1120において、方法は、サッカードを経験しているユーザの眼の視線追跡情報を第2のフレーム期間においてCPUで受信することを含む。視線追跡情報は、前のフレーム期間において視線追跡システム1220によって生成されたものであり得る。示されるように、視線追跡情報は、フレーム期間2の開始時にCPUに提示される。例えば、視線追跡情報は、ディスプレイに関する眼の視線方向に対応するベクトルX2を含み得る。
【0159】
1130で、方法は、フレーム期間2において、CPUで、少なくとも現在の視線追跡情報(X
2)に基づいて、サッカードにおけるディスプレイを見ているユーザの眼(複数可)の方向(ベクトルX
F-2)に対応するディスプレイ(例えばHMD)上の着地点を予測することを含む。より正確にするために、少なくとも部分的に
図7において以前に説明したように、視線追跡情報の履歴(例えばサッカード中に収集された)を用いて、サッカード中かつ/またはその終わりのユーザの眼(複数可)の予測視線方向に対応する、ディスプレイ上の着地点を予測する。予測された着地点は、サッカード中かつ/またはその終わりのユーザの眼(複数可)の予測視線方向(ベクトルX
F-2)に対応し得る。
【0160】
1140で、最新の更新動作がCPU1202によって実行されて、予測された着地点(ベクトルXF-2に対応する)を、GPUがアクセス可能であるバッファに転送する。転送はフレーム期間2において達成され、GPUによる即時使用が可能となる。すなわち、転送は、GPU1216がパイプライン1101のフレーム期間2でその動作を開始する前に起きる。このようにして、予測された着地点は、パイプラインシーケンス1101の開始時に収集された視線追跡情報(例えば、X1)ではなく、より最新の視線追跡情報(例えばパイプラインシーケンス1101の途中で収集されたX2)を用いて生成される。
【0161】
このように、予測された着地点(ベクトルXF-2に対応する)は、パイプラインシーケンス1101において即時使用するのに利用可能である。特に、1150で、方法は、フレーム期間2において、第1のビデオフレームにおけるシーンのプリミティブに基づいてかつ予測された着地点(ベクトルXF-2に対応する)に基づいて、GPU1216で1つまたは複数のシェーダ動作を実行して、ディスプレイの画素の画素データを生成することを含む。画素データは、少なくとも色及びテクスチャ情報を含み、画素データはフレームバッファに格納される。特に、フレーム期間2において、GPU1216は、サッカード中またはその終わりのユーザの眼(複数可)の予測視線方向(ベクトルXF-2)に対応する予測された着地点に対応する中心窩領域を有する第1のビデオフレームをレンダリングし得る。中心窩領域は高解像度でレンダリングされ、非中心窩領域は低解像度でレンダリングされる。
【0162】
1160で、方法は、第3のフレーム期間において、画素データをフレームバッファからディスプレイにスキャンアウトすることを含む。示されているように、ビデオフレーム(F3)はフレーム期間3においてスキャンアウトされる。
【0163】
同様に、パイプラインシーケンス1102は、予測された着地点の最新の更新に基づいて中心窩レンダリングを行うように構成されている。示されるように、
図11Bのフレーム期間2において、CPU1202は、アプリケーションを実行して、第2のビデオフレームにおけるシーンのプリミティブを生成する。例えば、CPU1202は、オブジェクトに対して物理シミュレーションを実行し、ポリゴンプリミティブを描画命令と共にGPU1216に送り得る。フレーム期間2に示されるように、レンダリングパイプライン1100Bは、視線追跡情報(ベクトルX
2)を受信する。
【0164】
フレーム期間3において、着地点が、CPUで、少なくとも現在の視線追跡情報に基づいて、サッカードにおけるディスプレイを見ているユーザの眼(複数可)の方向(例えばベクトルXF-3)に対応するディスプレイ(例えばHMD)上で予測される。すなわち、ベクトルXF-3と予測された着地点の間にマッピングが存在する。より正確にするために、視線追跡情報の履歴(例えば、サッカード中に収集された)を用いて、サッカード中かつ/またはその終わりのユーザの眼(複数可)の予測視線方向に対応する、ディスプレイ上の着地点を予測する。
【0165】
また、フレーム期間3において、ベクトルXF-3に対応する予測された着地点を、GPUがアクセス可能であるバッファに転送することによって、CPUにより最新の更新動作が実行される。フレーム期間3において、第2のビデオフレームにおけるシーンのプリミティブに基づいてかつベクトルXF-3に対応する予測された着地点に基づいて、1つまたは複数のシェーダ動作がGPU1216で実行されて、ディスプレイの画素の画素データを生成する。画素データは、少なくとも色及びテクスチャ情報を含み、画素データはフレームバッファに格納される。特に、フレーム期間3において、GPU1216は、サッカード中またはその終わりのディスプレイを見ているユーザの眼(複数可)の視線方向(例えばベクトルXF-3)に対応する予測された着地点に対応する中心窩領域を有する第2のビデオフレームをレンダリングし得る。中心窩領域は高解像度でレンダリングされ、非中心窩領域は低解像度でレンダリングされる。フレーム期間4において、第2のビデオフレーム(例えば、F4)の画素データがスキャンアウトされる。
【0166】
このように、
図11Bにおいて、サッカード予測(例えば、着地点)の最新の更新を用いて、着地点予測は、必ずしもパイプラインシーケンスの開始時ではなく、パイプラインシーケンス中に収集される最新の視線追跡情報を利用し得る。このように、対応するビデオフレームがスキャンアウトされるまでに、そのビデオフレームの中心窩領域をレンダリングするために使用される予測された着地点は、少なくとも眼の動きに追いつき得、大抵の場合、眼の動きよりも速くなる(例えば、表示された中心窩領域が、眼球運動が追いつくのを待っている)。すなわち、サッカード予測の最新の更新があると、ビデオフレームをレンダリングする時間が眼球運動よりも速いことがあり得、そのため、中心窩領域は、対応するビデオフレームが表示されるとき視線方向と一致可能であり、または、対応するビデオフレームの中心窩領域の準備が整い眼球運動が予測視線方向に到達するのを待つ(サッカード中かつ/またはサッカードの終わり)ように進んでいる場合がある。
【0167】
一実施形態では、HMD上に表示するためにフレームをレンダリングするときの電力消費を削減するために、追加の手段を取り得る。特に、サッカード中、眼球運動が速すぎる場合があるので、ユーザは、レンダリングされ表示される中間フレームを見ることができない場合がある。このように、着地点(例えば、サッカード中またはサッカードの終わり)までの予測時間に基づいて、予測された着地点に対応するビデオフレームの表示前に生じる中間ビデオフレームのうちの少なくとも1つのレンダリングは、レンダリングに使用されるコンピューティングリソースを節約するために終了され得る。
【0168】
さらに別の実施形態では、HMD上に表示するためにフレームをレンダリングするときの電力消費を削減するために別の手段をとり得る。特に、ユーザは、サッカード中レンダリングされ表示される中間フレームを見ることができない場合があるので、ビデオフレーム全体は、より低い解像度でまたは低解像度でレンダリングされ得る。すなわち、それら中間フレームに対して中心窩領域はレンダリングされない。言い換えれば、着地点(例えば、サッカード中またはサッカードの終わり)までの予測時間に基づいて、予測された着地点に対応するビデオフレームの表示前に生じる中間ビデオフレームのうちの少なくとも1つは、低解像度でレンダリングされる。
【0169】
図12は、本開示の様々な実施形態の態様を実行するために使用することができる例示的なデバイス1200の構成要素を示す。例えば、
図12は、一実施形態による、ユーザの眼(複数可)の運動が、更新された標的着地点におけるディスプレイ上の中心窩領域の提示と一致するように、ディスプレイ上の標的着地点を予測かつ最新の更新をするように構成されているデバイスを実装するのに適した例示的なハードウェアシステムを示す。着地点の予測が、HMDならびにより従来のディスプレイの文脈両方で実行され得るときの、例示的なデバイス1200が一般に記載される。このブロック図は、開示の実施形態を実施するのに適した、パーソナルコンピュータ、ビデオゲーム機、パーソナルデジタルアシスタント、または他のデジタルデバイスを組み込むことができる、またはそれらであり得るデバイス1200を示す。デバイス1200は、ソフトウェアアプリケーション及び任意選択的にオペレーティングシステムを作動させる中央処理装置(CPU)1202を含む。CPU1202は、1つまたは複数の同種または異種の処理コアで構成され得る。例えば、CPU1202は、1つまたは複数の処理コアを有する1つまたは複数の汎用マイクロプロセッサである。メディア及びインタラクティブエンターテインメントアプリケーション、または前述のようなディスプレイを見ているユーザに関連して定義されるサッカード中かつ/またはその終わりのユーザの眼(複数可)の視線方向に関連付けられたディスプレイ上の着地点の予測を提供するように構成されているアプリケーションなど、高並列かつ計算集中的なアプリケーションに特に適合したマイクロプロセッサアーキテクチャを有する1つ以上のCPUを用いて、さらなる実施形態を実装することができる。
【0170】
メモリ1204は、CPU1202が使用するアプリケーション及びデータを格納する。ストレージ1206は、アプリケーション及びデータ用の不揮発性ストレージ及び他のコンピュータ可読媒体を提供し、ストレージ1206には、固定ディスクドライブ、取り外し可能ディスクドライブ、フラッシュメモリデバイス、及びCD‐ROM、DVD‐ROM、Blu‐ray(登録商標)、HD‐DVD、または他の光学記憶デバイス、ならびに信号伝送及び記憶媒体が含まれ得る。ユーザ入力デバイス1208は、1人以上のユーザからのユーザ入力をデバイス1200へ通信するものであり、その例には、キーボード、マウス、ジョイスティック、タッチパッド、タッチスクリーン、スチルレコーダ/カメラもしくはビデオレコーダ/カメラ、ジェスチャを認識する追跡デバイス、及び/またはマイクロフォンが挙げられ得る。ネットワークインターフェース1214は、デバイス1200が電子通信ネットワークを介して他のコンピュータシステムと通信することを可能にし、かつ、ローカルエリアネットワーク、及びインターネットなどの広域ネットワークを介する有線または無線通信を含み得る。音声プロセッサ1212は、CPU1202、メモリ1204、及び/またはストレージ1206により提供される命令及び/またはデータから、アナログまたはデジタルの音声出力を生成するように適合される。CPU1202、メモリ1204、データストレージ1206、ユーザ入力デバイス1208、ネットワークインターフェース1210、及び音声プロセッサ1212を含むデバイス1200の構成要素は、1つ以上のデータバス1222を介して接続されている。
【0171】
グラフィックサブシステム1214はさらに、データバス1222及びデバイス1200の構成要素と接続されている。グラフィックサブシステム1214は、グラフィック処理ユニット(GPU)1216と、グラフィックメモリ1218とを含む。グラフィックメモリ1218は、出力画像の各画素の画素データを格納するために使用される表示メモリ(例えばフレームバッファ)を含む。グラフィックメモリ1218は、GPU1216と同じデバイスに統合されてもよく、GPU1216と別個のデバイスとして接続されてもよく、かつ/またはメモリ1204内に実装されてもよい。画素データは、直接CPU1202からグラフィックメモリ1218へ提供され得る。あるいは、CPU1202は、所望の出力画像を定義するデータ及び/または命令をGPU1216に提供し、GPU1216はそこから1つ以上の出力画像の画素データを生成する。所望の出力画像を定義するデータ及び/または命令は、メモリ1204及び/またはグラフィックメモリ1218に格納され得る。実施形態において、GPU1216は、シーンの形状、照明、シャドウィング、質感、動き、及び/またはカメラのパラメータを定義する命令及びデータから、出力画像の画素データを生成する3Dレンダリング機能を含む。GPU1216はさらに、シェーダプログラムを実行することができる1つ以上のプログラム可能実行ユニットを含み得る。
【0172】
グラフィックサブシステム1214は、グラフィックメモリ1218から画像の画素データを定期的に出力して、ディスプレイデバイス1210に表示させる、または投影システム1240により投影させる。ディスプレイデバイス1210は、デバイス1200からの信号に応じて視覚情報を表示することができる任意のデバイスであり得、これにはCRT、LCD、プラズマ、及びOLEDディスプレイが含まれる。デバイス1200は、ディスプレイデバイス1210に、例えばアナログ信号またはデジタル信号を提供することができる。
【0173】
さらに、デバイス1200は、前述のような、視線追跡センサ265及び光源(例えば、不可視赤外光を放出する)を含む視線追跡システム1220を含む。
【0174】
本明細書で説明される実施形態は、任意のタイプのクライアントデバイス上で実行され得ることを理解すべきである。一部の実施形態では、クライアントデバイスは、ヘッドマウントディスプレイ(HMD)、または投影システムである。
図13では、開示の実施形態による、ヘッドマウントディスプレイ102の構成要素を例示する図が示される。HMD102は、ディスプレイを見ているユーザに関連して定義されるサッカード中かつ/またはその終わりのユーザの眼(複数可)の視線方向に関連する、HMDのディスプレイ上の着地点を予測し、予測された着地点を、最新の更新動作においてGPUに提供するように構成され得る。
【0175】
ヘッドマウントディスプレイ102は、プログラム命令を実行するためのプロセッサ1300を含む。メモリ1302が、記憶の目的で備わっており、メモリ1302は、揮発性メモリ及び不揮発性メモリの両方を含んでもよい。ユーザが見ることができる視覚インターフェースを提供するディスプレイ1304が含まれる。ヘッドマウントディスプレイ102の電源としてバッテリ1306が備わっている。モーション検出モジュール1308は、磁気計1310A、加速度計1312、及びジャイロスコープ1314などの様々な種類の、動きに敏感なハードウェアのいずれかを含み得る。
【0176】
加速度計は、加速度及び重力誘起反力を測定するデバイスである。様々な方向の加速の大きさ及び方向を検出するために、単軸モデル及び多軸モデルが利用可能である。加速度計は、傾き、振動、及び衝撃を感知するために使用される。一実施形態では、3つの加速度計1312が重力の方向を提供するために使用され、これは2つの角度(世界空間ピッチ及び世界空間ロール)の絶対基準を与える。
【0177】
磁力計は、ヘッドマウントディスプレイ付近の磁場の強度及び方向を測定する。一実施形態では、3つの磁気計1310Aがヘッドマウントディスプレイ内で使用され、世界空間のヨー角の絶対基準を保証する。一実施形態では、磁力計は、±80マイクロステラの地磁場範囲を有するように設計される。磁力計は金属の影響を受け、実際のヨーに対して単調なヨー測定を提供する。磁場は環境内の金属により歪むことがあり、これによりヨー測定に歪みが生じる。必要な場合、この歪みは、ジャイロスコープまたはカメラなどの他のセンサからの情報を用いて、較正することができる。一実施形態では、ヘッドマウントディスプレイ102の傾斜角及び方位角を得るために、加速度計1312が磁気計1310Aと共に使用される。
【0178】
ジャイロスコープは、角運動量の原理に基づいて、配向を測定または維持するためのデバイスである。一実施形態では、3つのジャイロスコープ1314が、慣性感知に基づいて、それぞれの軸(x、y、及びz)にわたる動きについての情報を提供する。ジャイロスコープは、高速回転を検出するのに有用である。しかしながら、ジャイロスコープは、絶対基準が存在しないと、時間の経過と共にドリフトし得る。これには、定期的にジャイロスコープをリセットする必要があり、これは、オブジェクトの視覚追跡、加速度計、磁力計などに基づく位置/向きの判定など、他の入手可能な情報を使用して行うことができる。
【0179】
実環境の画像及び画像ストリームを取り込むために、カメラ1316が備わっている。後向きのカメラ(ユーザがヘッドマウントディスプレイ102のディスプレイを見ているときに、ユーザから離れる方向に向けられる)及び前向きのカメラ(ユーザがヘッドマウントディスプレイ102のディスプレイを見ているときに、ユーザに向けられる)を含む、複数のカメラをヘッドマウントディスプレイ102に含めることができる。さらに、実環境におけるオブジェクトの深度情報(depth information)を感知するために、深さカメラ1318がヘッドマウントディスプレイ102に含まれてもよい。
【0180】
一実施形態では、HMDの前面に統合されたカメラを使用して、安全に関する警告が提供され得る。例えば、ユーザが壁またはオブジェクトに接近している場合、ユーザに警告が与えられ得る。一実施形態では、室内の物理的オブジェクトの外観をユーザに提供して、ユーザにそれらの存在を警告し得る。外観は、例えば仮想環境において重ね合わせられ得る。一部の実施形態では、例えば床に重ね合わせられた参照マーカの表示が、HMDユーザに提供され得る。例えば、マーカは、ユーザに、ユーザがゲームをプレイしている部屋の中心の場所の参照を提供し得る。これは、例えば部屋の中の壁または他のオブジェクトに衝突しないようにユーザが移動すべき場所の視覚情報をユーザに提供し得る。ユーザがHMDを装着してゲームをプレイする、またはHMDでコンテンツを操作するとき、安全性を高めるために、触覚的警告及び/または音声警告もユーザに提供することができる。
【0181】
ヘッドマウントディスプレイ102は、音声出力を提供するスピーカ252を含む。また、周囲環境からの音、ユーザによる発言などを含む実環境からの音声を取り込むために、マイクロフォン251が含まれ得る。ヘッドマウントディスプレイ102は、ユーザに触覚フィードバックを提供する触覚フィードバックモジュール281を含む。一実施形態では、触覚フィードバックモジュール281は、触覚フィードバックをユーザに提供することができるように、ヘッドマウントディスプレイ102の動き及び/または振動を引き起こすことが可能である。
【0182】
LED1326は、ヘッドマウントディスプレイ102の状態の可視的インジケータとして提供される。例えば、LEDは、バッテリーレベル、電源オンなどを示し得る。ヘッドマウントディスプレイ102がメモリカードに情報を読み出し、書き込むことを可能にするカードリーダ1328が備わっている。周辺デバイスの接続、または他のポータブルデバイス、コンピュータなどの他のデバイスへの接続を可能にするためのインターフェースの一例として、USBインターフェース1330が含まれる。ヘッドマウントディスプレイ102の様々な実施形態では、ヘッドマウントディスプレイ102の接続性を高めることを可能にするために、様々な種類のインターフェースのいずれかが含まれ得る。
【0183】
無線ネットワーク技術を介してインターネットへの接続を可能にするために、Wi-Fiモジュール1332が含まれる。また、ヘッドマウントディスプレイ102は、他のデバイスへの無線接続を可能にするためのブルートゥース(登録商標)モジュール1334を含む。他のデバイスへの接続のために、通信リンク1336がまた、含まれていてもよい。一実施形態では、通信リンク1336は、無線通信のために赤外線伝送を利用する。他の実施形態では、通信リンク1336は、他のデバイスとの通信のために、様々な無線または有線の伝送プロトコルのいずれかを利用することができる。
【0184】
ユーザに入力インターフェースを提供するために、入力ボタン/センサ1338が含まれる。ボタン、タッチパッド、ジョイスティック、トラックボールなど、様々な種類の入力インターフェースのいずれかを含めてもよい。超音波技術を介して他のデバイスとの通信を促進するために、超音波通信モジュール1340がヘッドマウントディスプレイ102に含まれ得る。
【0185】
ユーザからの生理学的データの検出を可能にするために、バイオセンサ1342が含まれる。一実施形態では、バイオセンサ1342は、ユーザの皮膚を通してユーザの生体電気信号を検出するための1つ以上のドライ電極(dry electrode)を含む。
【0186】
3次元の物理的環境に配置されたエミッタ(例えば赤外線基地局)からの信号に応答するために、光センサ1344が含まれる。ゲーム機は、光センサ1344及びエミッタからの情報を分析して、ヘッドマウントディスプレイ102に関する位置及び向きの情報を判定する。
【0187】
さらに、視線追跡システム1320が含まれ、これは、ユーザの視線追跡を可能にするように構成されている。例えば、システム1320は、ユーザの眼の画像をキャプチャし、キャプチャされた画像はその後ユーザの視線方向を判定するために分析される視線追跡カメラ(例えばセンサ)を含み得る。一実施形態では、ユーザの視線方向に関する情報を利用して、ビデオレンダリングに影響を与えることができ、かつ/または、サッカード中またはサッカードの終わりのユーザの視線が向けられるディスプレイ上の着地点を予測することができる。また、中心窩レンダリングにより詳細、より高い解像度を提供すること、中心窩領域に表示されるパーティクルシステム効果のより高い解像度を提供すること、中心窩領域の外側に表示されるパーティクルシステム効果のより低い解像度を提供すること、またはユーザが見ている領域のより高速な更新を提供することなどにより、視線方向のビデオレンダリングを優先または強調することができる。
【0188】
ヘッドマウントディスプレイ102の前述の構成要素は、ヘッドマウントディスプレイ102に含まれ得る単なる例示的な構成要素として説明されている。開示の様々な実施形態では、ヘッドマウントディスプレイ102は、上記の様々な構成要素の一部を含んでもよいし、または含まなくてもよい。ヘッドマウントディスプレイ102の実施形態は、本明細書に記載されている本開示の態様を容易にするために、本明細書には記載されていないが、当技術分野で知られている、他の構成要素を追加的に含んでもよい。
【0189】
開示の様々な実施形態では、様々なインタラクティブ機能を提供するために、前述のヘッドマウントデバイスが、ディスプレイに表示されるインタラクティブアプリケーションと併せて利用され得ることが、当業者には理解されよう。本明細書で説明される例示的な実施形態は、限定としてではなく、単に例として提供される。
【0190】
現在の実施形態のゲームへのアクセス提供など、広範囲な地域にわたり送られるアクセスサービスは、多くの場合、クラウドコンピューティングを使用することに留意すべきである。クラウドコンピューティングは、動的に拡張縮小可能で多くの場合仮想化されたリソースがインターネットを介したサービスとして提供される、コンピューティング様式である。ユーザは、ユーザをサポートする「クラウド」の技術的インフラストラクチャのエキスパートである必要はない。クラウドコンピューティングは、Infrastructure as a Service(IaaS)、Platform as a Service(PaaS)、及びSoftware as a Service(SaaS)などの異なるサービスに分類することができる。クラウドコンピューティングサービスは、多くの場合、ウェブブラウザからアクセスされるオンラインで、ビデオゲームなどの共通のアプリケーションを提供し、ソフトウェア及びデータは、クラウド内のサーバに格納される。クラウドという用語は、コンピュータネットワーク図におけるインターネットの描かれ方に基づいたインターネットの隠喩として使われ、複雑なインフラストラクチャを隠し持つことの抽象的概念である。
【0191】
ゲーム処理サーバ(GPS)(または単純に「ゲームサーバ」)は、ゲームクライアントにより、シングルプレーヤ及びマルチプレーヤのビデオゲームをプレイするのに使用される。インターネット上でプレイされる大抵のビデオゲームは、ゲームサーバへの接続を介して動作する。通常、ゲームはプレーヤからのデータを収集し、それを他のプレーヤに配信する専用サーバアプリケーションを使用する。これは、ピアツーピア構成よりも効率的かつ効果的であるが、サーバアプリケーションをホストする別個のサーバが必要となる。別の実施形態では、GPSは、プレーヤ及びそれぞれのゲームプレイデバイスの間の通信を確立して、集中型GPSに依存せずに情報を交換する。
【0192】
専用GPSは、クライアントとは無関係に稼働するサーバである。このようなサーバは、通常、データセンタに配置された専用ハードウェア上で稼働し、より多くの帯域幅及び専用処理能力を提供する。専用サーバは、大部分のPCベースのマルチプレーヤゲームのためのゲームサーバをホスティングするのに好ましい方法である。大規模なマルチプレーヤオンラインゲームは、ゲームタイトルを所有するソフトウェア会社が通常ホストする専用サーバ上で稼働し、専用サーバがコンテンツを制御かつ更新することを可能にする。
【0193】
ユーザは、少なくともCPU、ディスプレイ、及びI/Oを含むクライアントデバイスにより、リモートサービスにアクセスする。クライアントデバイスは、PC、携帯電話、ネットブック、PDAなどであり得る。一実施形態では、ゲームサーバ上で実行されるネットワークは、クライアントが使用するデバイスの種類を認識し、採用する通信方法を調整する。他の場合には、クライアントデバイスは、HTMLなどの標準的な通信方法を使用して、インターネット経由でゲームサーバ上のアプリケーションにアクセスする。
【0194】
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な一般消費者向け電気製品、小型コンピュータ、及びメインフレームコンピュータなどを含む様々なコンピュータシステム構成により実施され得る。本開示はまた、有線ベースネットワークまたは無線ネットワークを介してリンクされたリモート処理デバイスによりタスクが行われる分散型コンピューティング環境においても、実施することができる。
【0195】
所与のビデオゲームまたはゲーミングアプリケーションは、特定のプラットフォーム及び特定の関連コントローラデバイス用に開発されてもよいことを、理解すべきである。しかしながら、このようなゲームが、本明細書において提示されるようなゲームクラウドシステムを介して利用可能となる場合、ユーザは、異なるコントローラデバイスでビデオゲームにアクセスしている可能性がある。例えば、あるゲームは、ゲーム機及びその関連コントローラ用に開発された可能性があるが、ユーザは、キーボード及びマウスを利用してパーソナルコンピュータから、ゲームのクラウドベースバージョンにアクセスすることができる。このようなシナリオでは、入力パラメータ構成により、ユーザが利用可能なコントローラデバイス(この事例ではキーボード及びマウス)により生成され得る入力からビデオゲームの実行で受入れ可能な入力へのマッピングが定義され得る。
【0196】
別の例では、ユーザは、タブレットコンピューティングデバイス、タッチスクリーンスマートフォン、または他のタッチスクリーン駆動デバイスを介して、クラウドゲームシステムにアクセスし得る。この場合、クライアントデバイス及びコントローラデバイスは、同じデバイス内に一体に統合され、入力は、検出されたタッチスクリーン入力/ジェスチャにより提供される。このようなデバイスでは、入力パラメータ構成により、ビデオゲームのゲーム入力に対応する特定のタッチスクリーン入力が定義され得る。例えば、ユーザがタッチしてゲーム入力を生成することができる、タッチスクリーン上の位置を示すために、ビデオゲームの実行中に、ボタン、方向パッド、または他の種類の入力要素が、表示または重ね合わされ得る。特定の向きにおけるスワイプなどのジェスチャ、または特定のタッチモーションもゲーム入力として検出されることができる。一実施形態において、例えば、ビデオゲームのゲームプレイを開始する前に、タッチスクリーン上での制御の操作へユーザを慣れさせるために、ゲームプレイ用のタッチスクリーンを介して入力を提供する方法を示すチュートリアルをユーザに提供することができる。
【0197】
いくつかの実施形態では、クライアントデバイスは、コントローラデバイスの接続ポイントとして機能する。すなわち、コントローラデバイスは、無線接続または有線接続を介してクライアントデバイスと通信して、コントローラデバイスからクライアントデバイスへ入力を送信する。クライアントデバイスは、これらの入力を順番に処理し、その後ネットワーク(例えば、ルータなどのローカルネットワークデバイスを介してアクセスされる)を介してクラウドゲームサーバへ入力データを送信し得る。しかしながら、他の実施形態では、コントローラ自体が、このような入力をまずクライアントデバイスを通して通信する必要なく、ネットワークを介して入力を直接クラウドゲームサーバに通信する能力を有するネットワークデバイスであり得る。例えば、コントローラは、ローカルネットワークデバイス(前述のルータなど)に接続し、クラウドゲームサーバへデータを送信し、このクラウドゲームサーバからデータを受信することができる。このように、クライアントデバイスは依然として、クラウドベースのビデオゲームからのビデオ出力を受信して、それをローカルディスプレイにレンダリングする必要はあり得るが、コントローラがクライアントデバイスを迂回して、ネットワークを介してクラウドゲームサーバに入力を直接送信することを可能にすることによって、入力待ち時間を低減することができる。
【0198】
一実施形態では、ネットワーク化されたコントローラ及びクライアントデバイスは、特定の種類の入力を直接コントローラからクラウドゲームサーバへ、かつ他の種類の入力を、クライアントデバイスを介して送信するように構成することができる。例えば、検出がコントローラ自体とは別の任意の追加のハードウェアまたは処理に依存しない入力は、クライアントデバイスをバイパスして、コントローラからクラウドゲームサーバへネットワークを介して直接送信することができる。このような入力には、ボタン入力、ジョイスティック入力、埋込型動作検出入力(例えば加速度計、磁力計、ジャイロスコープ)などが含まれ得る。しかしながら、追加のハードウェアを利用する、またはクライアントデバイスによる処理を要する入力は、クライアントデバイスによりクラウドゲームサーバへ送信され得る。これらには、クラウドゲームサーバへ送信する前にクライアントデバイスにより処理され得る、ゲーム環境から取り込まれたビデオまたはオーディオが含まれ得る。加えて、コントローラの動き検出ハードウェアからの入力は、取り込まれたビデオと併せてクライアントデバイスにより処理され、コントローラの位置及び動きを検出することができ、その後、クライアントデバイスによりクラウドゲームサーバへ通信される。様々な実施形態によるコントローラデバイスも、クライアントデバイスから、または直接クラウドゲームサーバから、データ(例えばフィードバックデータ)を受信し得ることを理解すべきである。
【0199】
特に、
図14は、開示の様々な実施形態による、ゲームシステム1400のブロック図である。ゲームシステム1400は、ネットワーク1415を介して1つ以上のクライアント1410に対し、シングルプレーヤモードまたはマルチプレーヤモードなどで、ビデオストリームを提供するように構成されている。ゲームシステム1400は、通常は、ビデオサーバシステム1420とオプションのゲームサーバ1425とを含む。ビデオサーバシステム1420は、ビデオストリームを最小限のサービス品質で1つまたは複数のクライアント1410に提供するように構成される。例えば、ビデオサーバシステム1420は、ビデオゲーム内の状態または視点を変更するゲームコマンドを受信し、この状態の変更を反映する更新されたビデオストリームを最小の遅延時間でクライアント1410に提供することができる。ビデオサーバシステム1420は、まだ定義されていないフォーマットを含む多種多様な代替ビデオフォーマットでビデオストリームを提供するように構成され得る。さらに、ビデオストリームは、多種多様なフレームレートでユーザに提示されるように構成されたビデオフレームを含み得る。通常のフレームレートは、毎秒30フレーム、毎秒80フレーム、及び毎秒820フレームである。しかしながら、開示の代替的実施形態には、より高いまたはより低いフレームレートが含まれる。
【0200】
本明細書で個々に1410A、1410Bなどと呼ばれるクライアント1410は、ヘッドマウントディスプレイ、端末、パーソナルコンピュータ、ゲームコンソール、タブレットコンピュータ、電話、セットトップボックス、キオスク、無線装置、デジタルパッド、スタンドアロン装置、ハンドヘルドゲームプレイ装置及び/または同種のものを含むことができる。通常、クライアント1410は、符号化された(すなわち圧縮された)ビデオストリームを受信し、ビデオストリームを復号化し、得られたビデオをユーザ、例えばゲームのプレーヤに提示するように構成されている。符号化されたビデオストリームを受信しかつ/またはビデオストリームを復号化するプロセスは通常、クライアントの受信バッファに個々のビデオフレームを格納することを含む。ビデオストリームは、クライアント1410に一体化したディスプレイ上で、またはモニタもしくはテレビなどの別個の装置上でユーザに提示され得る。クライアント1410は、2人以上のゲームプレーヤをサポートするように任意選択で設定される。例えば、ゲームコンソールは、2人、3人、4人、またはそれ以上の同時プレーヤをサポートするように構成されてもよい。これらのプレーヤの各々は、別々のビデオストリームを受信することができ、あるいは単一のビデオストリームが、各プレーヤのために特別に生成された、例えば各プレーヤの視点に基づいて生成されたフレームの領域を含み得る。クライアント1410は、任意選択で地理的に分散している。ゲームシステム1400に含まれるクライアントの数は、1または2から数千、数万、またはそれ以上まで幅広く変わり得る。本明細書で使用するとき、「ゲームプレーヤ」という用語は、ゲームをプレイする者を指すのに使用され、「ゲームプレイデバイス」という用語は、ゲームをプレイするのに使用されるデバイスを指すのに使用される。いくつかの実施形態では、ゲームプレイデバイスは、ゲーム体験をユーザに提供するために協働する複数のコンピューティングデバイスを指すことがある。例えば、ゲームコンソール及びHMDは、HMDを介して見たゲームを配信するために、ビデオサーバシステム1420と協働してもよい。一実施形態では、ゲームコンソールはビデオサーバシステム1420からビデオストリームを受信し、ゲームコンソールは、レンダリングのためにビデオストリームをHMDに転送するか、またはビデオストリームを更新して、レンダリングのためにHMDに転送する。
【0201】
クライアント1410は、ネットワーク1415を介してビデオストリームを受信するように構成されている。ネットワーク1415は、電話ネットワーク、インターネット、無線ネットワーク、電力線ネットワーク、ローカルエリアネットワーク、広域ネットワーク、プライベートネットワーク、及び/または同種のものを含む任意の種類の通信ネットワークであり得る。代表的な実施形態では、ビデオストリームは、TCP/IPまたはUDP/IPなどの標準プロトコルを介して通信される。あるいは、ビデオストリームは、プロプライエタリな規格を介して通信される。
【0202】
クライアント1410の代表的な例は、プロセッサ、不揮発性メモリ、ディスプレイ、復号化ロジック、ネットワーク通信機能、及び入力デバイスを含むパーソナルコンピュータである。復号化ロジックは、ハードウェア、ファームウェア、及び/またはコンピュータ可読媒体に記憶されたソフトウェアを含み得る。ビデオストリームを復号化(及び符号化)するためのシステムは当技術分野において周知であり、使用される特定の符号化方式に応じて変わる。
【0203】
クライアント1410は、受信したビデオを修正するように構成されたシステムを更に含むことができるが、必ずしもそうである必要はない。例えば、クライアントは、更なるレンダリングを実行して、1つのビデオ画像を別のビデオ画像上にオーバーレイするように、ビデオ画像をクロッピングするように、及び/または同様のことを行うように、構成され得る。例えば、クライアント1410は、Iフレーム、Pフレーム、及びBフレームなどの各種のビデオフレームを受信して、これらのフレームがユーザに表示するための画像に処理されるように構成され得る。いくつかの実施形態では、クライアント1410のメンバは、ビデオストリームに対して更なるレンダリング、シェーディング、3Dへの変換、または同様の動作を実行するように構成される。クライアント1410のメンバは、任意選択で、複数のオーディオストリームまたはビデオストリームを受信するように構成される。クライアント1410の入力デバイスは、例えば、片手ゲームコントローラ、両手ゲームコントローラ、ジェスチャ認識システム、視線認識システム、音声認識システム、キーボード、ジョイスティック、ポインティングデバイス、力フィードバック装置、モーション検知装置及び/または位置感知デバイス、マウス、タッチスクリーン、ニューラルインターフェース、カメラ、未開発の入力デバイス、及び/または同種のものを含み得る。
【0204】
クライアント1410によって受信されるビデオストリーム(及び任意選択でオーディオストリーム)は、ビデオサーバシステム1420によって生成されて提供される。本明細書の他の箇所で更に説明するように、このビデオストリームはビデオフレームを含む(オーディオストリームはオーディオフレームを含む)。ビデオフレームは、ユーザに表示される画像に有意義に寄与するように構成されている(例えば、ビデオフレームは、適切なデータ構造の画素情報を含む)。本明細書で使用される用語「ビデオフレーム」は、ユーザに示される画像に寄与する、例えば作用するように構成された情報を主に含むフレームを指すのに使用される。「ビデオフレーム」に関する本明細書の教示のほとんどは、「オーディオフレーム」に適用することもできる。
【0205】
クライアント1410は通常、ユーザから入力を受け取るように構成されている。これらの入力は、ビデオゲームの状態を変化させるまたは他の方法でゲームプレイに影響を与えるように構成されているゲームコマンドを含み得る。ゲームコマンドは、入力デバイスを使用して受信することができ、及び/またはクライアント1410上で実行される命令をコンピュータで処理することによって自動的に生成することができる。受信したゲームコマンドは、クライアント1410からネットワーク1415を介して、ビデオサーバシステム1420及び/またはゲームサーバ1425に伝達される。例えば、いくつかの実施形態では、ゲームコマンドはビデオサーバシステム1420を介してゲームサーバ1425に伝達される。いくつかの実施形態では、ゲームコマンドの別個のコピーがクライアント1410からゲームサーバ1425及びビデオサーバシステム1420に伝達される。ゲームコマンドの通信は、任意選択でコマンドの識別情報に依存する。ゲームコマンドは、オーディオストリームまたはビデオストリームをクライアント1410Aに提供するために使用した異なる経路または通信チャネルを通じて、クライアント1410Aから任意選択で通信される。
【0206】
ゲームサーバ1425は、ビデオサーバシステム1420とは異なるエンティティによって任意選択で操作される。例えば、ゲームサーバ1425は、マルチプレーヤゲームのパブリッシャによって運営され得る。この例では、ビデオサーバシステム1420は、任意選択でゲームサーバ1425によってクライアントとして捉えられ、任意選択でゲームサーバ1425の視点から見れば、先行技術のゲームエンジンを実行する先行技術のクライアントであるように構成される。ビデオサーバシステム1420とゲームサーバ1425との間の通信は、任意選択でネットワーク1415を介して行われる。したがって、ゲームサーバ1425は、ゲーム状態情報を複数のクライアントに送信する従来技術のマルチプレーヤゲームサーバであり得、そのうちの1つがゲームサーバシステム1420である。ビデオサーバシステム1420は、同時にゲームサーバ1425の複数のインスタンスと通信するように構成されてもよい。例えば、ビデオサーバシステム1420は、複数の異なるビデオゲームを別々のユーザに提供するように構成することができる。これらの異なるビデオゲームのそれぞれは、異なるゲームサーバ1425によってサポートされてもよく、及び/または異なるエンティティによって発行されてもよい。いくつかの実施形態では、ビデオサーバシステム1420のいくつかの地理的に分散したインスタンスは、ゲームビデオを複数の異なるユーザに提供するように構成される。ビデオサーバシステム1420のこれらのインスタンスのそれぞれは、ゲームサーバ1425の同じインスタンスと通信することができる。ビデオサーバシステム1420と1つまたは複数のゲームサーバ1425との間の通信は、専用の通信チャネルを介して任意選択で行われる。例えば、ビデオサーバシステム1420は、これら2つのシステム間の通信専用の高帯域幅チャネルを介して、ゲームサーバ1425に接続されてもよい。
【0207】
ビデオサーバシステム1420は、少なくともビデオソース1430、入出力デバイス1445、プロセッサ1450、及び非一時的記憶装置1455を含む。ビデオサーバシステム1420は、1つのコンピューティングデバイスを含むか、または複数のコンピューティングデバイスの間に分散され得る。これらのコンピューティングデバイスは、ローカルエリアネットワークなどの通信システムを介して、任意選択で接続される。
【0208】
ビデオソース1430は、ビデオストリーム、例えばストリーミングビデオまたは動画を形成する一連のビデオフレームを提供するように構成される。いくつかの実施態様では、ビデオソース1430はビデオゲームエンジン及びレンダリングロジックを含む。ビデオゲームエンジンは、プレーヤからゲームコマンドを受け取り、受け取ったコマンドに基づいてビデオゲームの状態のコピーを維持するように構成される。このゲーム状態には、ゲーム環境内のオブジェクトの位置と、典型的には視点を含む。ゲーム状態はまた、オブジェクトの特性、画像、色及び/またはテクスチャを含み得る。
【0209】
ゲーム状態は、通常、ゲームルール、及び移動、ターン、攻撃、フォーカス設定、インタラクト、使用などのゲームコマンドに基づいて維持される。ゲームエンジンの一部は、任意選択でゲームサーバ1425内に配置される。ゲームサーバ1425は、地理的に分散したクライアントを使用して、複数のプレーヤから受信したゲームコマンドに基づき、ゲームの状態のコピーを維持することができる。これらの場合、ゲーム状態は、ゲームサーバ1425によってビデオソース1430に提供され、そこでゲーム状態のコピーが記憶され、レンダリングが実行される。ゲームサーバ1425は、ネットワーク1415を介してクライアント1410から直接ゲームコマンドを受信してもよく、及び/またはビデオサーバシステム1420を経由してゲームコマンドを受信してもよい。
【0210】
ビデオソース1430は、通常、レンダリングロジック、例えば、ハードウェア、ファームウェア、及び/または記憶装置1455などのコンピュータ可読媒体に格納されたソフトウェアを含む。このレンダリングロジックは、ゲーム状態に基づいて、ビデオストリームのビデオフレームを作成するように構成される。レンダリングロジックの全てまたは一部は、任意選択的に、グラフィック処理ユニット(GPU)内に配置される。レンダリングロジックは、通常、ゲーム状態及び視点に基づいて、オブジェクト間の3次元空間的関係を判定するため、及び/または適切なテクスチャなどを適用するために構成された処理段階を含む。レンダリングロジックは未処理のビデオを生成し、次いでこのビデオは、クライアント1410への通信に先立ち、通常、符号化される。例えば、未処理ビデオは、Adobe Flash(登録商標)規格.wav、H.264、H.263、On2、VP6、VC-1、WMA、Huffyuv、Lagarith、MPGーx、Xvid、FFmpeg、x264、VP6―8、realvideo、mp3、または同種のものに従って符号化されてもよい。符号化プロセスは、リモートデバイス上のデコーダに配信するために任意選択的にパッケージ化されたビデオストリームを生成する。ビデオストリームは、フレームサイズ及びフレームレートによって特徴付けられる。任意の他のフレームサイズを使用し得るが、典型的なフレームサイズには、800×600、1280×720(例えば、720p)、1024×768がある。フレームレートは、1秒あたりのビデオフレームの数である。ビデオストリームは、様々な種類のビデオフレームを含み得る。例えば、H.264規格は、「P」フレーム及び「I」フレームを含む。Iフレームは、ディスプレイデバイス上の全てのマクロブロック/画素を更新する情報を含み、一方、Pフレームは、そのサブセットを更新する情報を含む。Pフレームは、典型的には、Iフレームよりもデータサイズが小さい。本明細書で使用する「フレームサイズ」という用語は、フレーム内の画素数を指すことを意味する。「フレームデータサイズ」という用語は、フレームを格納するのに必要なバイト数を指すのに使用される。
【0211】
他の実施態様では、ビデオソース1430は、カメラなどのビデオ記録デバイスを含む。このカメラは、コンピュータゲームのビデオストリームに含めることができる遅延ビデオまたはライブビデオを生成するのに使用することができる。結果として生じるビデオストリームは、レンダリングされた画像と、スチルカメラまたはビデオカメラを使用して記録された画像との両方を任意選択で含む。ビデオソース1430はまた、ビデオストリームに含まれる以前に記録されたビデオを記憶するように構成された記憶デバイスを含んでもよい。ビデオソース1430はまた、例えば人などのオブジェクトのモーションまたは位置を検出するように構成されたモーション感知デバイスまたは位置感知デバイスと、検出されたモーション及び/または位置に基づいてゲーム状態を判定し、またはビデオを生成するように構成されるロジックとを含み得る。
【0212】
ビデオソース1430は、他のビデオ上に配置されるように構成されたオーバーレイを提供するように任意選択で構成される。例えば、このようなオーバーレイには、コマンドインターフェース、ログイン命令、ゲームプレーヤへのメッセージ、他のゲームプレーヤの画像、他のゲームプレーヤのビデオフィード(例えば、ウェブカメラビデオ)が含まれ得る。タッチスクリーンインターフェースまたは視線検出インターフェースを含むクライアント1410Aの実施形態では、オーバーレイはバーチャルキーボード、ジョイスティック、タッチパッド、及び/または同種のものを含み得る。オーバーレイの一例では、プレーヤの声がオーディオストリームにオーバーレイされる。ビデオソース1430は、任意選択で、1つまたは複数のオーディオソースを更に含む。
【0213】
ビデオサーバシステム1420が2人以上のプレーヤからの入力に基づいてゲーム状態を維持するように構成されている実施形態では、各プレーヤは表示の位置及び方向を含む異なる視点を有することができる。ビデオソース1430は、プレーヤらの視点に基づいて各プレーヤに別々のビデオストリームを提供するように任意選択で設定される。更に、ビデオソース1430は、異なるフレームサイズ、フレームデータサイズ、及び/または符号化をクライアント1410のそれぞれに提供するように設定してもよい。ビデオソース1430は、任意選択で、3Dビデオを供給するように設定される。
【0214】
入出力デバイス1445は、ビデオサーバシステム1420が、ビデオ、コマンド、情報要求、ゲーム状態、視線情報、デバイスモーション(動作)、デバイス位置、ユーザモーション、クライアント識別情報、プレーヤ識別情報、ゲームコマンド、セキュリティ情報、オーディオ、及び/または同種のものなどの情報を送信し、及び/または受信するように構成されている。通常、入出力デバイス1445は、ネットワークカードまたはモデムなどの通信ハードウェアを含む。入出力デバイス1445は、ゲームサーバ1425、ネットワーク1415、及び/またはクライアント1410と通信するように構成される。
【0215】
プロセッサ1450は、本明細書で論じられるビデオサーバシステム1420の様々な構成要素内に含まれるロジック、例えばソフトウェアを実行するように構成される。例えば、ビデオソース1430、ゲームサーバ1425、及び/またはクライアントクオリファイア1460の機能を実行するために、プロセッサ1450は、ソフトウェア命令でプログラムされてもよい。ビデオサーバシステム1420は、任意選択でプロセッサ1450の複数のインスタンスを含む。プロセッサ1450はまた、ビデオサーバシステム1420によって受信されたコマンドを実行するために、または本明細書で論じられるゲームシステム1400の様々な要素の動作を調整するために、ソフトウェア命令でプログラムされてもよい。プロセッサ1450は、1つまたは複数のハードウェアデバイスを含むことができる。プロセッサ1450は電子的なプロセッサである。
【0216】
ストレージ1455は、非一時的なアナログ及び/またはデジタルの記憶デバイスを含む。例えば、ストレージ1455は、ビデオフレームを記憶するように構成されたアナログ記憶デバイスを含み得る。ストレージ1455は、例えば、ハードドライブ、オプティカルドライブ、またはソリッドステートストレージといったコンピュータ可読デジタルストレージを含み得る。ストレージ1455は、ビデオフレーム、人工フレーム、ビデオフレームと人工フレームの両方を含むビデオストリーム、オーディオフレーム、オーディオストリーム、及び/または同様のものを格納するように(例えば、適切なデータ構造またはファイルシステムによって)構成される。ストレージ1455は、任意選択で、複数のデバイスの間に分散される。いくつかの実施形態では、記憶装置1455は、本明細書の他の箇所で説明されているビデオソース1430のソフトウェア構成要素を格納するように構成される。これらの構成要素は、必要に応じてプロビジョニングできるように準備された形式で格納することができる。
【0217】
ビデオサーバシステム1420は、任意選択で、クライアントクオリファイア1460を更に含む。クライアントクオリファイア1460は、クライアント1410Aまたは1410Bなどのクライアントの能力をリモートで判定するように構成される。これらの能力には、クライアント1410A自体の能力と、クライアント1410Aとビデオサーバシステム1420との間の1つまたは複数の通信チャネルの能力との両方を含めることができる。例えば、クライアントクオリファイア1460は、ネットワーク1415を介して通信チャネルをテストするように構成されてもよい。
【0218】
クライアントクオリファイア1460は、クライアント1410Aの能力を手動または自動で判定する(例えば、発見する)ことができる。手動判定には、クライアント1410Aのユーザと通信すること、及びユーザに能力を提供するように求めることが含まれる。例えば、いくつかの実施形態では、クライアントクオリファイア1460は、クライアント1410Aのブラウザ内に画像、テキスト、及び/または同様のものを表示する構成となっている。一実施形態では、クライアント1410Aはブラウザを含むHMDである。別の実施形態では、クライアント1410Aは、ブラウザを有するゲームコンソールであり、ブラウザはHMDに表示させてもよい。表示されたオブジェクトは、ユーザがクライアント1410Aのオペレーティングシステム、プロセッサ、ビデオデコーダの種類、ネットワーク接続の種類、表示解像度などの情報を入力することを要求する。ユーザによって入力された情報は、クライアントクオリファイア1460に返信される。
【0219】
自動判定は、例えば、クライアント1410A上でエージェントを実行することによって、及び/またはテストビデオをクライアント1410Aに送信することによって、行うことができる。エージェントは、ウェブページに埋め込まれるか、またはアドオンとしてインストールされるジャバスクリプトなどのコンピューティング命令を含むことができる。エージェントは、クライアントクオリファイア1460によって任意選択で提供される。様々な実施形態において、エージェントは、クライアント1410Aの処理能力、クライアント1410Aのデコード能力及び表示能力、クライアント1410Aとビデオサーバシステム1420との間の通信チャネルの遅延時間の信頼性及び帯域幅、クライアント1410Aのディスプレイタイプ、クライアント1410A上に存在するファイアウォール、クライアント1410Aのハードウェア、クライアント1410Aで実行されているソフトウェア、クライアント1410A内のレジストリエントリ、及び/または同様のものを見出すことができる。
【0220】
クライアントクオリファイア1460は、ハードウェア、ファームウェア、及び/またはコンピュータ可読媒体に格納されたソフトウェアを含む。クライアントクオリファイア1460は、ビデオサーバシステム1420の1つまたは複数の他の要素とは別のコンピューティングデバイス上に任意選択で配置される。例えば、いくつかの実施形態では、クライアントクオリファイア1460は、クライアント1410とビデオサーバシステム1420の複数のインスタンスとの間の通信チャネルの特性を判定するように構成される。これらの実施形態では、クライアントクオリファイアによって見出された情報を使用して、ビデオサーバシステム1420のどのインスタンスが、クライアント1410のうちの1つへのストリーミングビデオの配信に最も適しているかを判定することができる。
【0221】
特定の実施形態は、ディスプレイ上の標的着地点を予測かつ最新の更新をすることにより、ユーザの眼(複数可)の運動が、更新された標的着地点におけるディスプレイ上の中心窩領域の提示と一致することを明示するために提供されているが、これらは、限定ではなく例として説明されている。本開示を読んだ当業者は、本開示の趣旨及び範囲に含まれる追加の実施形態を実現するであろう。
【0222】
本明細書で定義される様々な実施形態は、本明細書で開示される様々な特徴を使用する特定の実装例に組み合わされ得る、または組み立てられ得ることを、理解すべきである。したがって、提供される例は、様々な要素を組み合わせて、さらに多くの実装例を定義することにより可能である様々な実装例に限定されず、いくつかの可能な例であるに過ぎない。いくつかの例では、いくつかの実装例は、開示されたまたは同等の実装例の趣旨から逸脱することなく、より少ない要素を含んでいてもよい。
【0223】
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な一般消費者向け電気製品、小型コンピュータ、及びメインフレームコンピュータなどを含む様々なコンピュータシステム構成により実施され得る。本開示の実施形態はまた、有線ベースまたは無線のネットワークを介してリンクされるリモート処理デバイスによりタスクが行われる分散型コンピューティング環境においても、実施することができる。
【0224】
前述の実施形態を念頭に置いて、本開示の実施形態は、コンピュータシステムに格納されたデータを伴う様々なコンピュータ実装動作を用い得ることを、理解すべきである。これらの動作は、物理量の物理的操作を要する動作である。本開示の実施形態の一部を形成する、本明細書で説明される動作のうちのいずれも、有用な機械動作である。開示の実施形態はまた、これら動作を実行するためのデバイスまたは装置に関する。装置は、必要な目的のために特別に構築され得る、または装置は、コンピュータに格納されたコンピュータプログラムにより選択的に有効化または構成される汎用コンピュータであり得る。具体的には、様々な汎用機械を、本明細書の教示にしたがって書かれたコンピュータプログラムと共に使用することができる、または、必要な動作を実行するためにさらに特化した装置を構築するほうがより便利であり得る。
【0225】
開示は、コンピュータ可読媒体上のコンピュータ可読コードとして具体化することもできる。コンピュータ可読媒体は、データを記憶することができ、その後コンピュータシステムによって読み取ることができる任意のデータ記憶デバイスである。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ(NAS)、リードオンリメモリ、ランダムアクセスメモリ、CD-ROM、CD-R、CD-RW、磁気テープ、ならびに他の光学及び非光学データストレージデバイス(記憶デバイス)が含まれる。コンピュータ可読媒体には、コンピュータ可読コードが分散方式で格納かつ実行されるように、ネットワーク接続されたコンピュータシステム上に分散されたコンピュータ可読有形媒体が含まれ得る。
【0226】
以上のように方法及び動作を特定の順序で説明したが、オーバーレイ動作の処理が所望の方法で実行される限り、動作間に他の維持管理動作が実行されてもよく、または動作がわずかに異なる時間に起こるように調整されてもよく、またはシステム内に動作を分散することで、様々な処理関連間隔で処理動作が起こることを可能にしてもよいことを、理解すべきである。
【0227】
前述の開示は、理解を明確にするためにある程度詳細に説明されたが、添付の特許請求の範囲内で特定の変更及び修正を実施できることは明らかであろう。したがって、本実施形態は、限定ではなく例示としてみなされるべきであり、本開示の実施形態は、本明細書に提供される詳細に限定されるものではなく、添付の特許請求の範囲内及び均等物内で変更されてもよい。