(57)【要約】ヘッドマウントディスプレイ（ＨＭＤ）システム［１００］の中央処理装置（ＣＰＵ）［１０２］で実行されるアプリケーション［１０４］は、グラフィックス処理ユニット（ＧＰＵ）［１０６］用の複数のセットのフレーム描画コマンド［１２５］を生成する。フレーム描画コマンドの各セットについて、ＧＰＵは、対応するフレーム［１３０，１３１］を複数のフレームバッファ［１２０，１２２］のうちの１つにレンダリングする。周期的な優先割り込み点において、ＧＰＵは、複数のフレームバッファに格納された最新のフレーム番号を有するフレームを選択し、選択されたフレームと共に格納された姿勢情報と現在の姿勢［１２４］との間の差に基づいて電子表示の安定化ワープ［２３８］をフレームに適用する。
2019503615.tif 000002
【特許請求の範囲】
【請求項１】
ＨＭＤ（ヘッドマウントディスプレイ）システム［１００］で実施される方法であって、その方法は、
前記ＨＭＤシステムの第１の姿勢［１２４］に基づいて、表示用の複数のフレームのうちの第１のフレーム［１３１］を生成するステップと、
前記ＨＭＤシステムのＧＰＵ（グラフィックス処理ユニット）［１０６］において、前記複数のフレームのシーケンスにおける前記第１のフレームの位置を示す第１のフレーム番号［１３２］に基づいて、前記第１のフレーム［１３２］を選択するステップと、
前記ＧＰＵにおいて、前記第１の姿勢および前記ＨＭＤシステムの第２の姿勢に基づいて、選択された前記第１のフレームに第１のＥＤＳ（電子表示の安定化）ワープ［２３８］を適用するステップと
を含み、前記第２の姿勢は前記第１の姿勢の後に発生する、方法。
【請求項２】
前記複数のフレームのうちの前記第１のフレームを生成するステップは、前記ＨＭＤシステムのＣＰＵ（中央処理装置）［１０２］において１セットのコマンド［１２５］を生成することを含み、
前記第１のフレームを選択するステップは、前記ＧＰＵにおいて、前記ＣＰＵが前記１セットのコマンドを生成することとは非同期的に前記第１のフレームを選択することを含む、請求項１に記載の方法。
【請求項３】
前記第１のフレームを選択するステップは、前記第１のフレームに格納されたフレーム番号情報に基づいて前記第１のフレーム番号を識別することを含む、請求項１に記載の方法。
【請求項４】
前記第１のフレームを選択するステップは、前記第１のフレームがフレームバッファに完全にレンダリングされたという指示にさらに基づいて前記第１のフレームを選択することを含む、請求項１に記載の方法。
【請求項５】
前記第１のＥＤＳワープを適用するステップは、前記第１のフレームに格納された情報［１３３］に基づいて前記第１の姿勢を識別することを含む、請求項１に記載の方法。
【請求項６】
前記ＨＭＤシステムの第３の姿勢に基づいて、前記複数のフレームのうちの第２のフレーム［１３０］を生成するステップと、
前記ＧＰＵにおいて、前記複数のフレームのシーケンスにおける前記第２のフレームの位置を示す第２のフレーム番号に基づいて、前記第２のフレームを選択するステップと、
前記ＧＰＵにおいて、前記第３の姿勢および前記ＨＭＤシステムの第４の姿勢に基づいて、選択された前記第２のフレームに第２のＥＤＳワープを適用するステップと
をさらに含み、前記第４の姿勢は前記第３の姿勢の後に発生する、請求項１に記載の方法。
【請求項７】
前記第１のフレームは、前記ＨＭＤシステムの左眼用表示パネル［１１０］における表示用のフレームを含み、前記第２のフレームは、前記ＨＭＤシステムの右眼用表示パネル［１１２］における表示用のフレームを含む、請求項６に記載の方法。
【請求項８】
ＨＭＤ（ヘッドマウントディスプレイ）システム［１００］のＧＰＵ（グラフィックス処理ユニット）［１０６］において、ＨＭＤシステムのＣＰＵ（中央処理装置）［１０２］から受信したコマンド［１２５］に基づいて表示用の複数のフレームをレンダリングするステップと、
ＥＤＳ（電子表示の安定化）ワープ［２３８］の適用のために、前記複数のフレームをレンダリングすることとは非同期的に、前記複数のフレームのうちの第１のフレーム［１３１］を選択するステップと
を含み、前記第１のフレームを選択するステップは、フレームに格納されたフレーム番号［１３２］に基づいて前記第１のフレームを選択することを含み、前記フレーム番号はフレームのシーケンスにおける前記第１のフレームの順序を示す、方法。
【請求項９】
前記第１のフレームを選択するステップは、前記第１のフレームが前記ＨＭＤシステムのフレームバッファに完全にレンダリングされたという指示に基づいてフレームを選択することをさらに含む、請求項８に記載の方法。
【請求項１０】
前記第１のフレームに格納された姿勢情報に基づいて、前記第１のフレームに関連付けられた前記ＨＭＤシステムの第１の姿勢［１２４］を識別するステップと、
前記第１の姿勢に基づいて前記ＥＤＳワープを適用するステップと
をさらに含む、請求項８に記載の方法。
【請求項１１】
前記ＧＰＵにおいて前記ＨＭＤシステムの第２の姿勢を識別するステップをさらに含み、
前記ＥＤＳワープを適用するステップは、前記第１の姿勢と前記第２の姿勢との間の差に基づいて前記ＥＤＳワープを適用することを含む、請求項１０に記載の方法。
【請求項１２】
前記第２の姿勢を識別するステップは、前記第１の姿勢を識別した後に前記第２の姿勢を識別することを含む、請求項１１に記載の方法。
【請求項１３】
ＨＭＤ（ヘッドマウントディスプレイ）システム［１００］の第１の姿勢［１２４］に基づいて、表示用の複数のフレームのうちの第１のフレーム［１３１］を生成するための１セットのコマンド［１２５］を生成するＣＰＵ（中央処理装置）［１０２］と、
ＧＰＵ（グラフィックス処理ユニット）［１０６］と
を備えるＨＭＤシステムであって、前記ＧＰＵは、
前記複数のフレームのシーケンスにおける前記第１のフレームの位置を示す第１のフレーム番号［１３２］に基づいて前記第１のフレームを選択し、
前記第１の姿勢および前記ＨＭＤシステムの第２の姿勢に基づいて、選択された前記第１のフレームに第１のＥＤＳ（電子表示の安定化）ワープ［２３８］を適用する
ようになっており、前記第２の姿勢は前記第１の姿勢の後に発生する、ＨＭＤシステム。
【請求項１４】
前記ＧＰＵは、前記１セットのコマンドを生成する前記ＣＰＵとは非同期的に前記第１のフレームを選択するようになっている、請求項１３に記載のＨＭＤシステム。
【請求項１５】
前記ＧＰＵは、前記第１のフレームに格納されたフレーム番号情報に基づいて、前記第１のフレーム番号を識別するようになっている、請求項１３に記載のＨＭＤシステム。
【請求項１６】
前記ＧＰＵは、前記第１のフレーム番号に基づいて、かつ前記第１のフレームが前記ＨＭＤシステムのフレームバッファに完全にレンダリングされたという指示に基づいて、前記第１のフレームを選択するようになっている、請求項１３に記載のＨＭＤシステム。
【請求項１７】
前記ＧＰＵは、前記第１のフレームに格納された情報［１３３］に基づいて前記第１の姿勢を識別するようになっている、請求項１３に記載のＨＭＤシステム。
【請求項１８】
前記ＧＰＵは、
前記ＨＭＤシステムの第３の姿勢に基づいて、前記複数のフレームのうちの第２のフレーム［１３０］を生成し、
前記複数のフレームのシーケンスにおける前記第２のフレームの位置を示す第２のフレーム番号に基づいて前記第２のフレームを選択し、
前記第３の姿勢および前記ＨＭＤシステムの第４の姿勢に基づいて、選択された前記第２のフレームに第２のＥＤＳワープを適用する
ようになっており、前記第４の姿勢は前記第３の姿勢の後に発生する、請求項１３に記載のＨＭＤシステム。
【請求項１９】
左眼用表示パネル［１１０］と、
右眼用表示パネル［１１２］と
をさらに備え、前記第１のフレームは、前記ＨＭＤシステムの左眼用表示パネルにおける表示用のフレームを含み、前記第２のフレームは、前記ＨＭＤシステムの右眼用表示パネルにおける表示用のフレームを含む、請求項１８に記載のＨＭＤシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してヘッドマウントディスプレイシステムに関し、より詳細にはヘッドマウントディスプレイシステムにおける電子表示の安定化に関する。
【背景技術】
【０００２】
仮想現実（ＶＲ）システムおよび拡張現実（ＡＲ）システムは、コンピュータが生成した３次元（３Ｄ）画像を使用して、人工的または部分的に人工的な環境を作り出す。ＶＲシステムおよびＡＲシステムの主要な目的は、作成された環境において「プレゼンス（presence）」の感覚をユーザに与えることである。このプレゼンスの感覚は、ユーザの動きと一体化されたディスプレイ装置の使用によって促進される。例えば、いくつかのＶＲシステムおよびＡＲシステムは、別個の左眼のディスプレイおよび右眼のディスプレイを提供するヘッドマウントディスプレイ（ＨＭＤ）を使用する。ディスプレイは、表現された世界におけるシーンの立体的な、すなわち３Ｄの表現を共に提示し、提示されたシーンがユーザの現在の姿勢に基づいてシーンのユーザの相対的な視点（即ち、示されたシーンの基準座標フレームに対するユーザの頭部の位置および向き）を反映する。
【０００３】
ＨＭＤベースのＶＲシステムおよびＡＲシステムは、対応する検出された頭部の姿勢に基づいてレンダリングされ、かつ特定の期間にわたって持続する各表示フレームを表示フレームのシーケンスとして３Ｄ画像を表示する。しかしながら、表示フレームの処理の遅延により、フレームのレンダリングの開始と、結果的に生成されるレンダリングされたフレームの表示との間の時間に、ユーザの頭部が著しく回転しているか、さもなければ位置が変化している可能性がある。このため、特定の時点でＨＭＤに表示される画像は、ユーザの頭部の動きより遅れている可能性がある。シーン内でのユーザが知覚した方向とＨＭＤ上に提示されるシーンの視点の方向との間の不一致は、ユーザの方向感覚の喪失、またはしばしば「仮想現実酔い」と呼ばれることにつながる可能性がある。ユーザの不快感を低減または除去し、それにより向上したプレゼンスを提供するために、ＨＭＤベースのＶＲシステムおよびＡＲシステムは、動作から表示までにかかる時間（motion-to-photon latency）（即ち、ユーザの頭部／眼の動きと、結果的な新たな姿勢でシーンを表す光子がユーザの眼に当たる時期との間の遅延時間）を最小限にすることを探求している。
【０００４】
本開示は、添付の図面を参照することにより、その多くの特徴および利点が当業者にはよりよく理解され、かつ明らかとなるであろう。個々の図面において同様のまたは同一の構成については同じ参照符号が使用されている。
【図面の簡単な説明】
【０００５】
【図１】本開示の少なくとも１つの実施形態によるヘッドマウントディスプレイ（ＨＭＤ）システムのブロック図。
【図２】本開示の少なくとも１つの実施形態による、図１のＨＭＤシステムのグラフィックス処理ユニット（ＧＰＵ：graphics processing unit）による電子表示の安定化（ＥＤＳ：electronic display stabilization）のためのフレームの選択を示すブロック図。
【図３】本開示の少なくとも１つの実施形態による、ＧＰＵでのフレームレンダリングの完了に基づいて図１のＨＭＤシステムにおけるＥＤＳのためのフレームの選択を示すブロック図。
【図４】本開示の少なくとも１つの実施形態による、ＧＰＵに格納されたフレームのシーケンスから１つのフレームを選択することによって、ＨＭＤシステムのＧＰＵにおいてＥＤＳを実行する方法のフロー図。
【図５】本開示の少なくとも１つの実施形態による、図１のＨＭＤシステムによって使用されるＥＤＳ優先割り込み点（preemption points）の位置を示すブロック図。
【発明を実施するための形態】
【０００６】
図１〜図５は、ＥＤＳプロセスにおける中央処理装置（ＣＰＵ）との低レベルの関係を有するヘッドマウントディスプレイ（ＨＭＤ）システムにおいて電子表示の安定化（ＥＤＳ）を実施するための技術を示す。ＣＰＵで実行されるアプリケーションは、ＨＭＤシステムのグラフィックス処理ユニット（ＧＰＵ）用の複数のセットのフレーム描画コマンドを生成し、各セットのフレーム描画コマンドに対して、ＧＰＵは対応するフレームを複数のフレームバッファの１つにレンダリングする。各フレームは、経時的に生成されたフレームのシーケンスにおけるフレームの位置を示すフレーム番号を含むように、またはフレーム番号と関連付けられるように生成される。さらに、各フレームは、フレームが生成されたときのＨＭＤシステムの姿勢を示す姿勢情報を含むように、または姿勢情報と関連付けられるように生成される。周期的なＥＤＳ優先割り込み点において、ＧＰＵは、複数のフレームバッファに格納された最新のフレーム番号を有するフレームを選択し、ＨＭＤシステムの現在の姿勢を識別し、現在の姿勢と選択されたフレームに格納されている姿勢情報との間の差に基づいて本明細書でＥＤＳワープ（EDS warp）と呼ばれている修正をフレームに適用する。フレーム番号と姿勢情報はフレーム自体に格納されるため、ＥＤＳ優先割り込み点は、ＧＰＵにおける複数のセットのフレームコマンドの生成とは非同期的である。これにより、ＣＰＵおよびＧＰＵにおけるオーバーヘッドが低減され、フレームがディスプレイにスキャンアウトされる時間に近接してＥＤＳ優先割り込み点を配置することが可能となり、ＥＤＳプロセスの効率を向上させることができる。
【０００７】
図１は、本開示の少なくとも１つの実施形態による、現実世界または想像上の世界におけるＶＲまたはＡＲのプレゼンスを提供するためのＨＭＤシステム１００を示す。説明のために、ＨＭＤシステムは、ユーザの頭部の動きに連結されたＨＭＤ装置を含むか、またはＨＭＤ装置に組み込まれていることを想定している。例えば、ＨＭＤ装置は、ゴーグルまたは眼鏡のフォームファクタを有してもよく、装置はユーザの頭部に取り付けられ、かつ相対的に固定された位置にユーザの眼に近接して配置される。しかしながら、場合によっては、ユーザは、タブレットコンピュータまたは他のハンドヘルド装置をユーザの顔と対向して保持し、ユーザの頭部が動いても、ハンドヘルド装置のユーザの頭部に対する向きが相対的に固定されるように、ハンドヘルド装置の動きを制限してもよい。そのような場合、このように操作されるハンドヘルド装置は、ユーザの頭部に物理的な取り付けを介して「装着」されていなくても、ＨＭＤ装置の実施と見なすことができる。
【０００８】
図１に示された例において、ＨＭＤシステム１００は、ＣＰＵ１０２と、デジタル信号プロセッサ（ＤＳＰ）１０３と、慣性計測ユニット（ＩＭＵ）１０５と、ＧＰＵ１０６と、表示パネル１１０，１１２とを含む。ＣＰＵ１０２は、ＶＲアプリケーション１０４などのＶＲアプリケーションまたはＡＲアプリケーションを含むコンピュータプログラムとして編成された複数のセットの命令を実行するように構成されている。本明細書でさらに説明するように、ＶＲアプリケーション１０４は、概して、経時的にＨＭＤシステム１００の姿勢を識別し、これらの姿勢に基づいてユーザに表示するためのフレームを生成することによりＨＭＤシステム１００のユーザに仮想現実体験を提供するように構成されたプログラムである。従って、現実世界におけるユーザの動きがＶＲアプリケーション１０４によって生成された仮想現実における動きであるという印象がユーザに与えられる。
【０００９】
姿勢の識別をサポートするために、ＨＭＤシステム１００は、ＩＭＵ１０５およびＤＳＰ１０３を含む。ＩＭＵ１０５は、ＨＭＤシステム１００の動きを示す電気信号を生成する１つまたは複数の加速度計、ジャイロスコープ、磁力計、または他のセンサを含む。ＤＳＰ１０３は、ＩＭＵ１０５によって生成された電気信号をサンプリングし、フィルタリングし、処理して、ＨＭＤシステム１００の姿勢を示す、図１において姿勢１２４と指定された情報を生成するように構成された処理ユニットである。姿勢１２４は、ＨＭＤシステム１００の基準フレームにおける１セットの座標など、様々な任意のフォーマットで表現することができる。少なくとも１つの実施形態では、ＤＳＰ１０３は、姿勢１２４がＨＭＤシステム１００の比較的最近の姿勢を常に表すように姿勢１２４を定期的に更新する。さらに、ＤＳＰ１０３は、ＣＰＵ１０２の動作（ＶＲアプリケーション１０４の動作を含む）およびＧＰＵ１０６の動作とは非同期的に姿勢１２４を更新することができる。姿勢１２４は、ＤＳＰ１０３との同期することなしに、必要に応じてＣＰＵ１０２およびＧＰＵ１０６によってアクセスされることができるように、共有メモリ（図示せず）に格納することができ、それによって、ＨＭＤシステム１００におけるオーバーヘッドが低減される。
【００１０】
ＶＲアプリケーション１０４は、姿勢１２４および記憶された仮想現実環境ファイル、ユーザ入力情報、およびその他（図示せず）などの他の入力情報に基づいて、フレーム描画コマンド１２５のような複数のコマンドセットを周期的に生成する。各コマンドセットは、表示パネル１１０および１１２における表示用の対応するフレームを生成するためのものである。経時的に生成されたフレームは、フレームのシーケンスを構成し、各セットのコマンドは、シーケンス内の対応するフレームの番号を示す。従って、例えば、ＶＲアプリケーション１０４は、シーケンス内の第１のフレームがフレーム番号０を有し、シーケンス内の第２のフレームがフレーム番号１を有する、等々、５つのフレームのシーケンスに対するフレーム描画コマンドを生成することができる。ＶＲアプリケーション１０４は、フレーム描画コマンドの各セットにフレーム番号を含ませることに加えて、コマンドセット内に描画コマンドのセットを生成するために使用される姿勢１２４を含む。
【００１１】
一例を示すために、所与の時間Ｔにおいて、ＶＲアプリケーション１０４は、別のフレームが生成されるべきであることを識別する。これに応答して、ＶＲアプリケーション１０４は、姿勢１２４を読み取り、ＨＭＤシステム１００に対する最新の捕捉姿勢情報を識別する。ＶＲアプリケーション１０４は、姿勢１２４およびＶＲ環境ファイル（図示せず）などの他の入力情報に基づいて、対応するフレームを描画するためのフレーム描画コマンド１２５を生成する。ＶＲアプリケーション１０４は、コマンドの少なくとも１つに、生成されるべきフレームのフレーム番号と姿勢１２４とを含ませるようにフレーム描画コマンドを生成する。以下でさらに説明するように、この情報は、フレーム描画コマンド１２５の生成とは非同期的にフレームにＥＤＳワープを適用するためにＧＰＵ１０６によって使用することができ、それによって、ＧＰＵ１０６の動作とＣＰＵ１０２の動作との間の同期のオーバーヘッドが低減される。少なくとも１つの実施形態では、ＤＥＳデーモン（daemon）１０９は、「ヘッドマウントディスプレイの電子表示の安定化」の発明の名称で２０１５年６月１２日に出願された米国特許出願第６２／１７４，６０２号（弁護士整理番号Ｇ１５０１２−ＰＲ）に記載され、その全体が参照により本明細書に組み込まれる技術を使用して、ＥＤＳワープを生成し適用する。
【００１２】
例えば、一実施形態では、ＥＤＳデーモン１０９によって使用されるワープ処理は、姿勢情報が異なることによって示される頭部回転に基づく、フレームに格納された姿勢情報によって示され、かつＥＤＳデーモン１０９によって決定されるような更新された頭部の姿勢によって示されるような元の頭部姿勢からのホモグラフィ回転の決定、およびこのホモグラフィ回転のフレームへの（線形変換の形式での）適用によりワープされたフレームまたは修正されたフレームを生成することを含む。さらに、ＨＭＤシステム１００の接眼レンズ（図示せず）は、接眼レンズを通して屈折されたときに分離される光の異なる波長に起因して、色収差または色分解とともに、光学歪みを導入する可能性があるため、ＥＤＳデーモン１０９によって使用されるワープ処理によって、光学歪み、色収差、レンズのエッジに向かって暗くなること、他の光源からの複合テクスチャ等のうちの１つまたは複数を補償し得る。ホモグラフィ回転によって提供される一時的なワーピングは、歪み／色収差補正プロセスによって利用されるルックアップテーブル（ＬＵＴ）値にホモグラフィ回転を適用して補償歪み（または「プリディストーション」）を導入し、ホモグラフィ回転と他の補正／補償処理との両方を同時に実行するように、結果的に修正されたＬＵＴ値をフレームに適用することにより実施され得る。
【００１３】
ＧＰＵ１０６は、処理モジュール１０７およびフレームバッファ１２１および１２２を含む。処理モジュールは、複数セットのコマンドを実行するための１つまたは複数の命令パイプライン、計算ユニット、または他の処理回路を含む。図１の図示された例において、ＧＰＵ１０６は、本明細書では、デーモンと呼ばれる２つの異なるプロセスを実行する。特に、ＧＰＵ１０６は、フレーム描画デーモン１０８およびＥＤＳデーモン１０９を実行する。フレーム描画デーモン１０８は、ＣＰＵ１０２から複数セットのフレーム描画コマンドを受信し、各セットに基づいて、対応するフレームをフレームバッファ１２１および１２２のうちの１つにレンダリングするように構成されている。
【００１４】
少なくとも１つの実施形態では、フレーム描画デーモン１０８は、フレームを生成するときに、２つのフレームバッファ１２１，１２２を交互に切り替える。従って、フレーム描画デーモン１０８は、フレームバッファ１２１および１２２を二重フレームバッファとして使用して、一方のフレームバッファにレンダリングし、他方のフレームバッファが表示パネル１１０および１１２の一方または両方のためにスキャンされる。例によって説明すると、フレーム描画デーモン１０８は、フレーム１３０と指定されたシーケンス内の第１のフレームをフレームバッファ１２１にレンダリングすることができる。フレーム描画デーモン１０８は、次のセットのフレーム描画コマンドに基づいて、シーケンス内のフレーム１３１と指定された次のフレームをフレームバッファ１２２にレンダリングする。フレーム１３１がフレームバッファ１２２にレンダリングされている間、表示パネル１１０および１１２の一方または両方においてフレーム１３０を表示のためにスキャンすることができる。フレーム１３０がスキャンされた後、フレーム描画デーモン１０８は、シーケンス内の次のフレーム（図示せず）をフレームバッファ１２１にレンダリングし、フレームバッファ１２２においてフレーム１３１が表示のためにスキャンされる。
【００１５】
図１の図示された実施形態では、ＨＭＤシステム１００は１対のフレームバッファを使用しているが、他の実施形態では、ＨＭＤシステム１００は本明細書で説明する技術を引き続き採用しつつ、３つ以上のフレームバッファを含むことができる。さらに、いくつかの実施形態では、ＨＭＤシステム１００は、表示パネル１１０および１１２の各々に対する複数の独立したフレームバッファを使用するか、または本明細書に記載された技術を使用しつつ、中心窩適応画像化（foveated imaging）をサポートするために複数のセクションに分離された複数のフレームバッファを使用することができる。
【００１６】
フレーム描画デーモン１０８は、フレーム１３１の例によって示されるような、少なくとも３つのタイプの情報、すなわち、ＶＲアプリケーション１０４によって生成されたフレームのシーケンスにおけるフレームの順序を示すフレーム番号（例えば、フレーム番号１３２）、フレームがベースであった描画コマンドを生成するために使用される姿勢情報を示す姿勢情報（例えば、姿勢１３３）、および表示されるべきフレームに対する画素値を表す表示データ（例えば、表示データ１３４）を含むか、または少なくとも３つのタイプの情報に関連付けられるように各フレームをレンダリングする。フレーム番号は、連続番号、タイムスタンプ、またはフレームのシーケンスにおけるフレームの順序を示す他の識別子であってもよい。少なくとも１つの実施形態では、フレーム描画デーモン１０８は、フレーム番号および姿勢情報がフレームの「不可視（non-visible）」部分に格納されるように、すなわち表示パネル１１０および１１２によってスキャンアウトされないフレームバッファの記憶場所に格納され、従ってＨＭＤシステム１００のユーザは見ることができないように各フレームを生成する。他の実施形態では、フレーム番号および姿勢情報のうちの１つまたは複数は、可視であるがフレームの比較的目立たない部分、例えば、フレームのエッジの近くに格納される。さらに他の実施形態では、フレーム番号および姿勢情報の一方または両方が、適切な方法で（たとえば、テーブル、リンクされたリストなどを介して）フレームに関連付けられて、フレームの外部に格納されてもよい。
【００１７】
表示パネル１１０および１１２は、フレームバッファ１２１および１２２の１つを交互に周期的に選択し、選択されたバッファに格納されたフレームの可視部分をスキャンアウトし、フレームを表示パネルに表示するように構成される。少なくとも１つの実施形態では、表示パネル１１０および１１２は、各々ユーザの個々の眼に対する表示に対応している。例えば、表示パネル１１０は左眼用表示パネルであり、表示パネル１１２は右眼用表示パネルである。少なくとも１つの実施形態では、ＨＭＤシステム１００は、表示パネル１１０および１１２の各々に対して個々の複数の専用フレームバッファを含むことができる。
【００１８】
ＥＤＳデーモン１０９は、フレームバッファ１２１および１２２のうちの１つに格納された選択されたフレームに対してＥＤＳワープを周期的に適用するように構成される。ＥＤＳデーモンがＥＤＳワープの生成および適用を開始する時間は、本明細書ではＥＤＳ優先割り込み点として称される。少なくとも１つの実施形態では、複数のＥＤＳ優先割り込み点は、クロック信号によって示されるように、固定スケジュールに従って管理されるが、本明細書でさらに説明するように、固定スケジュールは、ＣＰＵ１０２による描画コマンドの生成およびフレーム描画デーモン１０８によるフレームのレンダリングとは非同期的である。
【００１９】
ＥＤＳ優先割り込み点の識別に応答して、ＥＤＳデーモン１０９は、フレームの対応する表示番号に基づいて、フレームバッファ１２１および１２２に格納された複数のフレームのうちの１つを選択する。少なくとも１つの実施形態では、ＥＤＳデーモン１０９は、対応するフレームバッファに完全にレンダリングされた最高のフレーム番号（即ち、フレームシーケンス内の最新のフレーム）を有するフレームを選択する。ＥＤＳデーモン１０９は、選択されたフレームに格納された姿勢情報を読み取り、かつ姿勢１２４を読み取って、ＨＭＤシステム１００の最新に識別された姿勢を決定する。フレーム姿勢情報と姿勢１２４との間の差は、フレームに対するフレーム描画コマンドが生成されたときのＨＭＤシステム１００の姿勢と、ＨＭＤシステム１００の最新に識別された姿勢との間の差を示す。この差に基づいて、ＥＤＳデーモン１０９は、ＥＤＳワープを識別する。ワープは、フレームがＨＭＤシステム１００の現在の姿勢をより近接的に反映するように、選択されたフレームに対する表示データの調整を行い、そのために画素位置の平行移動、画素強度または色の調整などを行うことができる。ＥＤＳデーモン１０９が選択されたフレームにＥＤＳワープを適用することにより、ユーザの動きに起因するジッタまたはその他の不快な影響（dissonant effects）が低減される。
【００２０】
上述したように、ＥＤＳデーモン１０９に対するＥＤＳ優先割り込み点は、ＣＰＵ１０２によるフレーム描画コマンドの生成とは非同期とすることができる。これにより、ＣＰＵ１０２とＧＰＵ１０６の同期動作におけるオーバーヘッドが低減され、処理速度および効率が向上し、さらにフレームが表示のためにスキャンされる時点まで、ＥＤＳワープが時間的により近接的に適用され、それによってＥＤＳプロセスの有効性が向上する。説明のために、従来のシステムでは、１セットのフレーム描画コマンドが完了しているというＣＰＵからの信号に応答して、格納されたフレームに対するＥＤＳワープがＧＰＵによって生成され、かつ適用される。しかしながら、（ユーザが姿勢を変化させるときの仮想環境の複雑さの変化を反映して）生成されるべきフレームの視覚的な複雑さが変化するため、複数のセットのフレーム描画コマンドの完了のタイミングが大幅に変化する。これは、ＥＤＳワープを生成するために使用される姿勢情報の差の相対量に変化を生じさせる可能性があり、その結果、ＥＤＳプロセスにおいて望ましくない変動を引き起こす可能性がある。ＥＤＳデーモン１０９によって差の相対量を非同期的に読み出すことができるように各フレームにフレーム番号および姿勢情報を配置することによって、ＨＭＤシステム１００は、これらの変動を低減し、それによってＥＤＳプロセスの有効性が向上する。
【００２１】
図２は、少なくとも１つの実施形態によるＨＭＤシステム１００の例示的な動作を示す。図示の例では、ＶＲアプリケーション１０４は、２つの異なるフレーム１３０およびフレーム１３１を生成するために複数のセットのフレーム描画コマンドセットを（異なる時間に）生成する。各フレームは、フレーム番号、姿勢情報、および描画データを含むように生成される。従って、フレーム１３０は、５のフレーム番号と、Ｔ１と指定された時間に識別された姿勢情報とを含む。従って、フレーム１３１は、（フレーム１３０の後に生成されたことを示す）６のフレーム番号と、Ｔ２と指定された時間（時間Ｔ１の後）に識別された姿勢情報とを含む。
【００２２】
ＥＤＳ優先割り込み点を識別することに応答して、ＥＤＳデーモン１０９は、フレームバッファ１２１および１２２に格納されたフレーム１３０および１３１を再検査して、最初に両方がそれぞれのフレームバッファに完全にレンダリングされていることを識別する。従って、ＥＤＳデーモン１０９は、フレーム１３０および１３１の両方を、ＥＤＳの選択に適格であると識別する。ＥＤＳデーモン１０９は、次に、フレーム１３１が最高のフレーム番号を有し、かつ従って最新のフレームであることを識別する。それに応答して、ＥＤＳデーモン１０９は、ＥＤＳワープの適用のためにフレーム１３１を選択する。
【００２３】
いくつかの実施形態では、ＥＤＳデーモン１０９は、最高のフレーム番号を有するフレーム以外のフレームを選択してもよい。例えば、少なくとも１つの実施形態では、ＥＤＳデーモン１０９は、後のフレームがフレームバッファの１つで完全にレンダリングされたとしても、第２のフレームごとまたは第４のフレームごとに選択する等の設定されたパターンに基づいてフレームを選択することができる。これは、シーケンスのフレームを通してＥＤＳプロセスがアニメーションの表示に悪影響を与えるのを防止するのに便利である。
【００２４】
ＥＤＳデーモン１０９は、フレーム１３１を選択したことに応答して、または同時に、姿勢１２４を読み取る。フレーム１３０および１３１に対するフレーム描画コマンドが生成されたことにより、姿勢情報が更新され、姿勢１２４は、時間Ｔ２および時間Ｔ１の後のＴ３と指定された時間に識別された姿勢情報を反映する。ＥＤＳデーモン１０９は、時間Ｔ３における姿勢と、フレーム１３１に記録された時間Ｔ２における姿勢との差に基づいて、データが時間Ｔ３における姿勢を反映するようにフレーム１３１の表示データに対する調整を行うＥＤＳワープ２３８を生成する。ＥＤＳデーモンは、ＥＤＳワープをフレーム１３１に適用することにより、表示されるべきデータを安定化し、仮想現実酔いまたはユーザ体験における他の影響を与える可能性を低減する。
【００２５】
上述したように、ＥＤＳプロセスが表示されたデータにエラーを導入するのを防止するために、ＥＤＳデーモン１０９は、フレームバッファ１２０および１２１のうちの１つに完全にレンダリングされたフレームのみを選択する。一例が、本開示の少なくとも１つの実施形態に従う図３に示されている。特に、図３の例では、フレーム１３１は、フレーム１３０のフレーム番号（７）よりも高いフレーム番号（８）を有している。しかしながら、フレーム１３１の表示データは不完全である（即ち、フレーム１３１に関する全ての表示データがフレーム描画デーモン１０８によってフレームバッファに完全にレンダリングされていない）。フレーム１３１が完全にレンダリングされていないときにＥＤＳワープをフレーム１３１に適用すると、フレームが表示のためにスキャンアウトされるときに、望ましくない視覚的アーチファクトが導入される可能性がある。従って、ＥＤＳデーモンはフレーム１３０を選択し、ＥＤＳワープ２３８を生成しかつ適用する。
【００２６】
図４は、本開示の少なくとも１つの実施形態に従って、ＧＰＵに格納されたシーケンスのフレームからフレームを選択することによって、ＨＭＤシステムのＧＰＵにおいてＥＤＳを実行する方法４００のフロー図を示す。説明の目的のために、方法４００は、図１のＨＭＤシステム１００での例示的な実施形態に関して説明される。ブロック４０２において、ＣＰＵ１０２は、姿勢１２４を読み取り、ＨＭＤシステム１００の最近の姿勢を識別する。ブロック４０４で、ブロック４０２で読み取られた姿勢および他の入力情報に基づいて、ＶＲアプリケーション１０４はフレームを描画するためのフレーム描画コマンド１２５を生成する。ＧＰＵ１０６は、フレーム描画コマンド１２５を受信し、コマンドに基づいて、フレーム描画デーモン１０８が対応するフレームを生成する。ブロック４０６において、フレーム描画デーモン１０８は、フレーム描画コマンド１２５によって示されるフレームのフレーム番号をフレームに格納する。さらに、ブロック４０８において、フレーム描画デーモン１０８は、ブロック４０２で識別され、かつフレーム描画コマンド１２５によって示されるような姿勢をフレームに格納する。フレーム描画デーモン１０８は、フレーム番号と姿勢を含むフレームをフレームバッファ１２０，１２１のうちの１つにレンダリングする。
【００２７】
ブロック４１０において、ＥＤＳデーモン１０９は、ＥＤＳ優先割り込み点を識別する。少なくとも１つの実施形態では、ＥＤＳ優先割り込み点のタイミングは、フレーム描画コマンド１２５の生成と、フレーム描画デーモン１０８によるフレームの対応するレンダリングとは非同期的である。ブロック４１２において、ＥＤＳ優先割り込み点の識別に応答して、ＥＤＳデーモン１０９は、フレームバッファ１２０，１２１に格納されたフレームを再検査し、フレームによって示される最高フレーム番号を有する完成フレーム（すなわち、フレームバッファに完全にレンダリングされたフレーム）を選択する。ブロック４１４において、ＥＤＳデーモン１０９は、選択されたフレームに格納された姿勢情報を読み取り、姿勢１２４を読み取って、ＨＭＤシステム１００に関して最新に識別された姿勢を識別する。ブロック４１６において、ブロック４１４において識別された２つの姿勢間の差に基づいて、ＥＤＳデーモン１０９は、１つまたは複数の既知のＥＤＳワープ技術に従ってＥＤＳワープを生成する。ブロック４１８において、ＥＤＳデーモン１０９は、生成されたＥＤＳワープを選択されたフレームに適用し、それによって、ＨＭＤシステム１００におけるフレームの表示を安定化させる。
【００２８】
いくつかの実施形態では、図１のＨＭＤシステム１００は、表示パネル１１０および１１２の各々に専用の表示バッファを使用し、各表示パネルに対してフレーム上でＥＤＳを実行することを交互に行う。しかしながら、これは、各表示パネルの最後のフレームのレンダリング後の長すぎる時間にＥＤＳ優先割り込み点が発生して、ジッタまたは他の望ましくない表示エラーを引き起こすことを避けるために、各表示パネルのＥＤＳ優先割り込み点の注意深いスケジューリングを必要とする可能性がある。この問題は、ＣＰＵ１０２で複数の描画コマンドセットを生成することに相応した変動から生じるレンダリング時間の変動によって悪化する可能性がある。従って、少なくとも１つの実施形態では、ＧＰＵ１０６は、表示パネルに関するＥＤＳ優先割り込み点がその表示パネルに関するレンダリング期間から時間内に離れた時点で発生するように表示パネルに関するＥＤＳ優先割り込み点を配置する。本開示の少なくとも１つの実施形態による一例が図５に示されている。
【００２９】
図５は、例５１５および例５１６と指定された、ＧＰＵ１０６におけるＥＤＳ優先割り込みの２つの事例を示す。例５１５の場合、ＧＰＵは、期間５０２中に左眼用表示パネル（表示パネル１１０）用のフレームバッファにフレームをレンダリングする。さらに、ＧＰＵ１０６は、期間５０２と重なる期間５０３中に右眼用表示パネル（表示パネル１１２）用のＥＤＳ優先割り込み点を配置する。同様に、期間５０４（期間５０２の直後）中に、ＧＰＵ１０６は右眼用表示パネル１１２用のフレームバッファにフレームをレンダリングし、かつ期間５０４と重なる期間５０５中に左眼用表示パネル１１０用の優先割り込み点を配置する。期間５０４に続く期間５０６中に、ＧＰＵ１０６が左眼用表示パネル１１０用のフレームバッファにフレームをレンダリングする。また、ＧＰＵ１０６は、期間５０６と重なる期間５０７中に、右眼用表示パネル１１２用の優先割り込み点を配置する。各ＥＤＳ優先割り込み点の間、ＧＰＵ１０６はその表示パネルに対する最新の完全にレンダリングされたフレームを使用して図１に関して上述したようなＥＤＳを実行する。従って、例えば、右眼ＥＤＳ優先割り込み期間５０７中に、ＧＰＵ１０６は、期間５０４中にレンダリングされた右眼フレームを使用してＥＤＳを実行する。
【００３０】
表示パネルに関するＥＤＳ優先割り込み点が、そのパネルに関して対応するフレームのレンダリング期間から幾分離れているようにスケジューリングすることにより、ＧＰＵ１０６は、ＣＰＵ１０２によって生成される複数のセットのフレーム描画コマンドのタイミングおよび複雑さの変動に起因するフレームレンダリング期間の変動を考慮することができる。一例が例５１６によって示され、左眼用表示パネル１１０に対するフレームレンダリング期間５０８は、図１のフレームレンダリング期間５０２と比較して比較的早く完了する。これにより、次に、右眼用表示パネル１１２に対する次のフレームレンダリング期間５０９が早期に開始され、右眼用ＥＤＳ優先割り込み期間５１０がフレームレンダリング期間５０８ではなく、フレームレンダリング期間５０９と重なるようになる。さらに、左眼用表示パネル１１０用のＥＤＳ優先割り込み点５１１は、フレームレンダリング期間５０９の後に発生し、かつフレームレンダリング期間と重ならない。しかしながら、ＥＤＳ優先割り込み点は、以前にレンダリングされた完成したフレームを使用するため、ＥＤＳ優先割り込み点は、ジッタの可能性が実質的に低減されるように、レンダリング時間に対して時間内に十分に近接して発生する。
【００３１】
少なくとも１つの実施形態では、ＧＰＵ１０６は、ＥＤＳ優先割り込み点が、ＥＤＳに使用されるフレームから時間的に離れすぎることとなる時期を識別することができる。その時期に応答して、ＧＰＵ１０６は、ＣＰＵ１０２と共に、または独立して、フレームレート（即ち、フレームをレンダリングおよび表示するレート）を遅くすることができる。これにより、ＥＤＳが各フレームの表示時間から時間的に離れすぎる可能性が低減され、ＥＤＳプロセスの有効性が向上し、それに相応してユーザ経験が向上する。
【００３２】
いくつかの実施形態では、前に説明した技術の特定の態様は、ソフトウェアを実行する処理システムの１つまたは複数のプロセッサによって実施されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体上に格納されているか、または他の方法で有形に具体化された１つまたは複数のセットの実行可能な命令を含む。ソフトウェアは、１つまたは複数のプロセッサによる実行時に、１つまたは複数のプロセッサを上述の技術の１つまたは複数の態様を実行するように操作する命令および特定のデータを含むことができる。非一時的コンピュータ可読記憶媒体には、例えば、磁気または光ディスク記憶装置、フラッシュメモリ、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）または他の不揮発性メモリデバイス（単数または複数）などのソリッドステートストレージデバイス、等が含まれる。非一時的なコンピュータ可読記憶媒体上に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、または１つまたは複数のプロセッサによって解釈または他の方法で実行可能な他の命令フォーマットであってもよい。
【００３３】
非一時的なコンピュータ可読記憶媒体は、コンピュータシステムに命令および／またはデータを提供するために使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体または記憶媒体の組み合わせを含み得る。このような記憶媒体には、限定はしないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、または磁気ハードディスクドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）またはキャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）またはフラッシュメモリ）、またはマイクロ電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれる。コンピュータ可読記憶媒体は、コンピューティングシステム（例えば、システムＲＡＭまたはＲＯＭ）に埋め込まれてもよく、コンピューティングシステム（例えば、磁気ハードディスクドライブ）に固定的に取り付けられてもよく、コンピューティングシステム（例えば、光学ディスクまたはユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）に取り外し可能に取り付けられてもよく、または有線または無線ネットワーク（例えば、ネットワークアクセス可能ストレージ（ＮＡＳ））を介してコンピュータシステムに接続されてもよい。
【００３４】
一般的な説明において上記で説明した動作または構成要素のすべてが必要であるとは限らず、特定の動作または装置の一部が必要でなくてもよく、また１つまたは複数のさらなる動作が実行されてもよく、またこれらの説明に構成要素が追加されてもよい。さらに、動作が列挙される順序は、必ずしもそれらが実施される順序ではない。また、これらの概念は、特定の実施形態を参照して説明されている。しかしながら、当業者であれば、以下の特許請求の範囲に記載された本開示の範囲から逸脱することなく、様々な修正および変更を行うことができることを理解する。従って、明細書および図面は、限定的な意味ではなく例示的あるものとして考慮されるべきであり、そのような変更のすべては、本開示の範囲内に含まれることが意図される。
【００３５】
効果、他の利点、および問題に対する解決策は、特定の実施形態に関して上述されている。しかしながら、効果、利点、問題の解決策、および効果、利点、または解決策を生じさせるか、または顕著になる可能性のある特徴（単数または複数）は、いずれかまたはすべての請求項の重要な、必須の、または不可欠な特徴と解釈されるべきではない。さらに、開示された主題は、本明細書の教示の効果を有する、当業者には明らかである、異なるが同等の方法で修正され、実施され得るので、上記で開示された特定の実施形態は、例示に過ぎない。以下の特許請求の範囲に記載されている以外の、本明細書に示された構成または設計の詳細に制限はない。従って、上記で開示された特定の実施形態は、変更または修正されてもよく、そのような変更形態は全て、開示される主題の範囲内にあると考えられることは明らかである。従って、本明細書で求められる保護は、以下の特許請求の範囲に記載されている。
【図１】
2019503615.tif 000003
【図２】
2019503615.tif 000004
【図３】
2019503615.tif 000005
【図４】
2019503615.tif 000006
【図５】
2019503615.tif 000007
【国際調査報告】
2019503615.tif 000008
2019503615.tif 000009
2019503615.tif 000010