特許第6648385号(P6648385)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特許6648385グラフィックス処理ユニットにおける電子表示の安定化
<>
  • 特許6648385-グラフィックス処理ユニットにおける電子表示の安定化 図000002
  • 特許6648385-グラフィックス処理ユニットにおける電子表示の安定化 図000003
  • 特許6648385-グラフィックス処理ユニットにおける電子表示の安定化 図000004
  • 特許6648385-グラフィックス処理ユニットにおける電子表示の安定化 図000005
  • 特許6648385-グラフィックス処理ユニットにおける電子表示の安定化 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6648385
(24)【登録日】2020年1月20日
(45)【発行日】2020年2月14日
(54)【発明の名称】グラフィックス処理ユニットにおける電子表示の安定化
(51)【国際特許分類】
   H04N 5/64 20060101AFI20200203BHJP
   G09G 5/00 20060101ALI20200203BHJP
   G09G 5/36 20060101ALI20200203BHJP
   G09G 5/39 20060101ALI20200203BHJP
   G06F 3/0481 20130101ALI20200203BHJP
【FI】
   H04N5/64 511A
   G09G5/00 510G
   G09G5/00 550C
   G09G5/00 550M
   G09G5/36 510V
   G09G5/36 530D
   G09G5/00 X
   G06F3/0481 150
【請求項の数】17
【全頁数】14
(21)【出願番号】特願2018-534591(P2018-534591)
(86)(22)【出願日】2016年12月19日
(65)【公表番号】特表2019-503615(P2019-503615A)
(43)【公表日】2019年2月7日
(86)【国際出願番号】US2016067517
(87)【国際公開番号】WO2017139026
(87)【国際公開日】20170817
【審査請求日】2018年6月29日
(31)【優先権主張番号】15/018,941
(32)【優先日】2016年2月9日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】ベイツ、ジョン ポール
(72)【発明者】
【氏名】コッケビス、エバンゲロス
【審査官】 大室 秀明
(56)【参考文献】
【文献】 特開2004−109994(JP,A)
【文献】 特開2016−019199(JP,A)
【文献】 特開2007−213407(JP,A)
【文献】 特開2010−039556(JP,A)
【文献】 米国特許出願公開第2015/0310665(US,A1)
【文献】 ANTONOV Michael,Asynchronous Timewarp Examined,[オンライン],米国,2015年 3月 2日,[検索日: 2019.04.03],インターネット,URL,https://developer3.oculus.com/blog/asynchronous-timewarp-examined/
(58)【調査した分野】(Int.Cl.,DB名)
G02B27/00−27/64
G06F 1/00
G06F 1/16−1/18
G06F 3/01
G06F 3/048−3/0489
G06T 1/00
G06T11/60−13/80
G06T17/05
G06T19/00−19/20
G09F 9/00
G09G 5/00−5/36
G09G 5/377−5/42
H04N 5/64−5/655
(57)【特許請求の範囲】
【請求項1】
HMD(ヘッドマウントディスプレイ)システム[100]で実施される方法であって、その方法は、
前記HMDシステムのCPU(中央処理装置)[102]において、第1のフレーム[131]を生成するための1セットのコマンド[125]を生成するステップと、
前記HMDシステムの第1の姿勢[124]および前記CPUからの前記1セットのコマンドに基づいて、表示用の複数のフレームのうちの前記第1のフレーム[131]を生成するステップと、
前記HMDシステムのGPU(グラフィックス処理ユニット)[106]において、前記CPUが前記1セットのコマンドを生成することとは非同期的に、前記複数のフレームのシーケンスにおける前記第1のフレームの位置を示す第1のフレーム番号[132]に基づいて、前記第1のフレーム[13]を選択するステップと、
前記GPUにおいて、前記第1の姿勢および前記HMDシステムの第2の姿勢に基づいて、選択された前記第1のフレームに第1のEDS(電子表示の安定化)ワープ[238]を適用するステップと
を含み、前記第2の姿勢は前記第1の姿勢の後に発生する、方法。
【請求項2】
前記第1のフレームを選択するステップは、前記第1のフレームに格納されたフレーム番号情報に基づいて前記第1のフレーム番号を識別することを含む、請求項1に記載の方法。
【請求項3】
前記第1のフレームを選択するステップは、前記第1のフレームがフレームバッファに完全にレンダリングされたという指示にさらに基づいて前記第1のフレームを選択することを含む、請求項1に記載の方法。
【請求項4】
前記第1のEDSワープを適用するステップは、前記第1のフレームに格納された情報[133]に基づいて前記第1の姿勢を識別することを含む、請求項1に記載の方法。
【請求項5】
前記HMDシステムの第3の姿勢に基づいて、前記複数のフレームのうちの第2のフレーム[130]を生成するステップと、
前記GPUにおいて、前記複数のフレームのシーケンスにおける前記第2のフレームの位置を示す第2のフレーム番号に基づいて、前記第2のフレームを選択するステップと、
前記GPUにおいて、前記第3の姿勢および前記HMDシステムの第4の姿勢に基づいて、選択された前記第2のフレームに第2のEDSワープを適用するステップと
をさらに含み、前記第4の姿勢は前記第3の姿勢の後に発生し、前記第3の姿勢は、前記第2の姿勢の後に発生する、請求項1に記載の方法。
【請求項6】
前記第1のフレームは、前記HMDシステムの左眼用表示パネル[110]における表示用のフレームを含み、前記第2のフレームは、前記HMDシステムの右眼用表示パネル[112]における表示用のフレームを含む、請求項に記載の方法。
【請求項7】
HMD(ヘッドマウントディスプレイ)システム[100]のGPU(グラフィックス処理ユニット)[106]において、HMDシステムのCPU(中央処理装置)[102]から受信したコマンド[125]に基づいて表示用の複数のフレームをレンダリングするステップと、
EDS(電子表示の安定化)ワープ[238]の適用のために、前記複数のフレームをレンダリングすることとは非同期的に、前記複数のフレームのうちの第1のフレーム[131]を選択するステップと
を含み、前記第1のフレームを選択するステップは、フレームに格納されたフレーム番号[132]に基づいて前記第1のフレームを選択することを含み、前記フレーム番号はフレームのシーケンスにおける前記第1のフレームの順序を示す、方法。
【請求項8】
前記第1のフレームを選択するステップは、前記第1のフレームが前記HMDシステムのフレームバッファに完全にレンダリングされたという指示に基づいてフレームを選択することをさらに含む、請求項に記載の方法。
【請求項9】
前記第1のフレームに格納された姿勢情報に基づいて、前記第1のフレームに関連付けられた前記HMDシステムの第1の姿勢[124]を識別するステップと、
前記第1の姿勢に基づいて前記EDSワープを適用するステップと
をさらに含む、請求項に記載の方法。
【請求項10】
前記GPUにおいて前記HMDシステムの第2の姿勢を識別するステップをさらに含み、
前記EDSワープを適用するステップは、前記第1の姿勢と前記第2の姿勢との間の差に基づいて前記EDSワープを適用することを含む、請求項に記載の方法。
【請求項11】
前記第2の姿勢を識別するステップは、前記第1の姿勢を識別した後に前記第2の姿勢を識別することを含む、請求項10に記載の方法。
【請求項12】
HMD(ヘッドマウントディスプレイ)システム[100]の第1の姿勢[124]に基づいて、表示用の複数のフレームのうちの第1のフレーム[131]を生成するための1セットのコマンド[125]を生成するCPU(中央処理装置)[102]と、
GPU(グラフィックス処理ユニット)[106]と
を備えるHMDシステムであって、前記GPUは、
前記CPUが前記1セットのコマンドを生成するのとは非同期的に、前記複数のフレームのシーケンスにおける前記第1のフレームの位置を示す第1のフレーム番号[132]に基づいて前記第1のフレーム[131]を選択し、
前記第1の姿勢および前記HMDシステムの第2の姿勢に基づいて、選択された前記第1のフレームに第1のEDS(電子表示の安定化)ワープ[238]を適用するようになっており、前記第2の姿勢は前記第1の姿勢の後に発生する、HMDシステム。
【請求項13】
前記GPUは、前記第1のフレームに格納されたフレーム番号情報に基づいて、前記第1のフレーム番号を識別するようになっている、請求項12に記載のHMDシステム。
【請求項14】
前記GPUは、前記第1のフレーム番号に基づいて、かつ前記第1のフレームが前記HMDシステムのフレームバッファに完全にレンダリングされたという指示に基づいて、前記第1のフレームを選択するようになっている、請求項12に記載のHMDシステム。
【請求項15】
前記GPUは、前記第1のフレームに格納された情報[133]に基づいて前記第1の姿勢を識別するようになっている、請求項12に記載のHMDシステム。
【請求項16】
前記GPUは、
前記HMDシステムの第3の姿勢に基づいて、前記複数のフレームのうちの第2のフレーム[130]を生成し、
前記複数のフレームのシーケンスにおける前記第2のフレームの位置を示す第2のフレーム番号に基づいて前記第2のフレームを選択し、
前記第3の姿勢および前記HMDシステムの第4の姿勢に基づいて、選択された前記第2のフレームに第2のEDSワープを適用するようになっており、前記第4の姿勢は前記第3の姿勢の後に発生し、前記第3の姿勢は、前記第2の姿勢の後に発生する、請求項12に記載のHMDシステム。
【請求項17】
左眼用表示パネル[110]と、
右眼用表示パネル[112]と
をさらに備え、前記第1のフレームは、前記HMDシステムの左眼用表示パネルにおける表示用のフレームを含み、前記第2のフレームは、前記HMDシステムの右眼用表示パネルにおける表示用のフレームを含む、請求項16に記載のHMDシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概してヘッドマウントディスプレイシステムに関し、より詳細にはヘッドマウントディスプレイシステムにおける電子表示の安定化に関する。
【背景技術】
【0002】
仮想現実(VR)システムおよび拡張現実(AR)システムは、コンピュータが生成した3次元(3D)画像を使用して、人工的または部分的に人工的な環境を作り出す。VRシステムおよびARシステムの主要な目的は、作成された環境において「プレゼンス(presence)」の感覚をユーザに与えることである。このプレゼンスの感覚は、ユーザの動きと一体化されたディスプレイ装置の使用によって促進される。例えば、いくつかのVRシステムおよびARシステムは、別個の左眼のディスプレイおよび右眼のディスプレイを提供するヘッドマウントディスプレイ(HMD)を使用する。ディスプレイは、表現された世界におけるシーンの立体的な、すなわち3Dの表現を共に提示し、提示されたシーンがユーザの現在の姿勢に基づいてシーンのユーザの相対的な視点(即ち、示されたシーンの基準座標フレームに対するユーザの頭部の位置および向き)を反映する。
【0003】
HMDベースのVRシステムおよびARシステムは、対応する検出された頭部の姿勢に基づいてレンダリングされ、かつ特定の期間にわたって持続する各表示フレームを表示フレームのシーケンスとして3D画像を表示する。しかしながら、表示フレームの処理の遅延により、フレームのレンダリングの開始と、結果的に生成されるレンダリングされたフレームの表示との間の時間に、ユーザの頭部が著しく回転しているか、さもなければ位置が変化している可能性がある。このため、特定の時点でHMDに表示される画像は、ユーザの頭部の動きより遅れている可能性がある。シーン内でのユーザが知覚した方向とHMD上に提示されるシーンの視点の方向との間の不一致は、ユーザの方向感覚の喪失、またはしばしば「仮想現実酔い」と呼ばれることにつながる可能性がある。ユーザの不快感を低減または除去し、それにより向上したプレゼンスを提供するために、HMDベースのVRシステムおよびARシステムは、動作から表示までにかかる時間(motion-to-photon latency)(即ち、ユーザの頭部/眼の動きと、結果的な新たな姿勢でシーンを表す光子がユーザの眼に当たる時期との間の遅延時間)を最小限にすることを探求している。
【0004】
本開示は、添付の図面を参照することにより、その多くの特徴および利点が当業者にはよりよく理解され、かつ明らかとなるであろう。個々の図面において同様のまたは同一の構成については同じ参照符号が使用されている。
【図面の簡単な説明】
【0005】
図1】本開示の少なくとも1つの実施形態によるヘッドマウントディスプレイ(HMD)システムのブロック図。
図2】本開示の少なくとも1つの実施形態による、図1のHMDシステムのグラフィックス処理ユニット(GPU:graphics processing unit)による電子表示の安定化(EDS:electronic display stabilization)のためのフレームの選択を示すブロック図。
図3】本開示の少なくとも1つの実施形態による、GPUでのフレームレンダリングの完了に基づいて図1のHMDシステムにおけるEDSのためのフレームの選択を示すブロック図。
図4】本開示の少なくとも1つの実施形態による、GPUに格納されたフレームのシーケンスから1つのフレームを選択することによって、HMDシステムのGPUにおいてEDSを実行する方法のフロー図。
図5】本開示の少なくとも1つの実施形態による、図1のHMDシステムによって使用されるEDS優先割り込み点(preemption points)の位置を示すブロック図。
【発明を実施するための形態】
【0006】
図1図5は、EDSプロセスにおける中央処理装置(CPU)との低レベルの関係を有するヘッドマウントディスプレイ(HMD)システムにおいて電子表示の安定化(EDS)を実施するための技術を示す。CPUで実行されるアプリケーションは、HMDシステムのグラフィックス処理ユニット(GPU)用の複数のセットのフレーム描画コマンドを生成し、各セットのフレーム描画コマンドに対して、GPUは対応するフレームを複数のフレームバッファの1つにレンダリングする。各フレームは、経時的に生成されたフレームのシーケンスにおけるフレームの位置を示すフレーム番号を含むように、またはフレーム番号と関連付けられるように生成される。さらに、各フレームは、フレームが生成されたときのHMDシステムの姿勢を示す姿勢情報を含むように、または姿勢情報と関連付けられるように生成される。周期的なEDS優先割り込み点において、GPUは、複数のフレームバッファに格納された最新のフレーム番号を有するフレームを選択し、HMDシステムの現在の姿勢を識別し、現在の姿勢と選択されたフレームに格納されている姿勢情報との間の差に基づいて本明細書でEDSワープ(EDS warp)と呼ばれている修正をフレームに適用する。フレーム番号と姿勢情報はフレーム自体に格納されるため、EDS優先割り込み点は、GPUにおける複数のセットのフレームコマンドの生成とは非同期的である。これにより、CPUおよびGPUにおけるオーバーヘッドが低減され、フレームがディスプレイにスキャンアウトされる時間に近接してEDS優先割り込み点を配置することが可能となり、EDSプロセスの効率を向上させることができる。
【0007】
図1は、本開示の少なくとも1つの実施形態による、現実世界または想像上の世界におけるVRまたはARのプレゼンスを提供するためのHMDシステム100を示す。説明のために、HMDシステムは、ユーザの頭部の動きに連結されたHMD装置を含むか、またはHMD装置に組み込まれていることを想定している。例えば、HMD装置は、ゴーグルまたは眼鏡のフォームファクタを有してもよく、装置はユーザの頭部に取り付けられ、かつ相対的に固定された位置にユーザの眼に近接して配置される。しかしながら、場合によっては、ユーザは、タブレットコンピュータまたは他のハンドヘルド装置をユーザの顔と対向して保持し、ユーザの頭部が動いても、ハンドヘルド装置のユーザの頭部に対する向きが相対的に固定されるように、ハンドヘルド装置の動きを制限してもよい。そのような場合、このように操作されるハンドヘルド装置は、ユーザの頭部に物理的な取り付けを介して「装着」されていなくても、HMD装置の実施と見なすことができる。
【0008】
図1に示された例において、HMDシステム100は、CPU102と、デジタル信号プロセッサ(DSP)103と、慣性計測ユニット(IMU)105と、GPU106と、表示パネル110,112とを含む。CPU102は、VRアプリケーション104などのVRアプリケーションまたはARアプリケーションを含むコンピュータプログラムとして編成された複数のセットの命令を実行するように構成されている。本明細書でさらに説明するように、VRアプリケーション104は、概して、経時的にHMDシステム100の姿勢を識別し、これらの姿勢に基づいてユーザに表示するためのフレームを生成することによりHMDシステム100のユーザに仮想現実体験を提供するように構成されたプログラムである。従って、現実世界におけるユーザの動きがVRアプリケーション104によって生成された仮想現実における動きであるという印象がユーザに与えられる。
【0009】
姿勢の識別をサポートするために、HMDシステム100は、IMU105およびDSP103を含む。IMU105は、HMDシステム100の動きを示す電気信号を生成する1つまたは複数の加速度計、ジャイロスコープ、磁力計、または他のセンサを含む。DSP103は、IMU105によって生成された電気信号をサンプリングし、フィルタリングし、処理して、HMDシステム100の姿勢を示す、図1において姿勢124と指定された情報を生成するように構成された処理ユニットである。姿勢124は、HMDシステム100の基準フレームにおける1セットの座標など、様々な任意のフォーマットで表現することができる。少なくとも1つの実施形態では、DSP103は、姿勢124がHMDシステム100の比較的最近の姿勢を常に表すように姿勢124を定期的に更新する。さらに、DSP103は、CPU102の動作(VRアプリケーション104の動作を含む)およびGPU106の動作とは非同期的に姿勢124を更新することができる。姿勢124は、DSP103との同期することなしに、必要に応じてCPU102およびGPU106によってアクセスされることができるように、共有メモリ(図示せず)に格納することができ、それによって、HMDシステム100におけるオーバーヘッドが低減される。
【0010】
VRアプリケーション104は、姿勢124および記憶された仮想現実環境ファイル、ユーザ入力情報、およびその他(図示せず)などの他の入力情報に基づいて、フレーム描画コマンド125のような複数のコマンドセットを周期的に生成する。各コマンドセットは、表示パネル110および112における表示用の対応するフレームを生成するためのものである。経時的に生成されたフレームは、フレームのシーケンスを構成し、各セットのコマンドは、シーケンス内の対応するフレームの番号を示す。従って、例えば、VRアプリケーション104は、シーケンス内の第1のフレームがフレーム番号0を有し、シーケンス内の第2のフレームがフレーム番号1を有する、等々、5つのフレームのシーケンスに対するフレーム描画コマンドを生成することができる。VRアプリケーション104は、フレーム描画コマンドの各セットにフレーム番号を含ませることに加えて、コマンドセット内に描画コマンドのセットを生成するために使用される姿勢124を含む。
【0011】
一例を示すために、所与の時間Tにおいて、VRアプリケーション104は、別のフレームが生成されるべきであることを識別する。これに応答して、VRアプリケーション104は、姿勢124を読み取り、HMDシステム100に対する最新の捕捉姿勢情報を識別する。VRアプリケーション104は、姿勢124およびVR環境ファイル(図示せず)などの他の入力情報に基づいて、対応するフレームを描画するためのフレーム描画コマンド125を生成する。VRアプリケーション104は、コマンドの少なくとも1つに、生成されるべきフレームのフレーム番号と姿勢124とを含ませるようにフレーム描画コマンドを生成する。以下でさらに説明するように、この情報は、フレーム描画コマンド125の生成とは非同期的にフレームにEDSワープを適用するためにGPU106によって使用することができ、それによって、GPU106の動作とCPU102の動作との間の同期のオーバーヘッドが低減される。少なくとも1つの実施形態では、DESデーモン(daemon)109は、「ヘッドマウントディスプレイの電子表示の安定化」の発明の名称で2015年6月12日に出願された米国特許出願第62/174,602号(弁護士整理番号G15012−PR)に記載され、その全体が参照により本明細書に組み込まれる技術を使用して、EDSワープを生成し適用する。
【0012】
例えば、一実施形態では、EDSデーモン109によって使用されるワープ処理は、姿勢情報が異なることによって示される頭部回転に基づく、フレームに格納された姿勢情報によって示され、かつEDSデーモン109によって決定されるような更新された頭部の姿勢によって示されるような元の頭部姿勢からのホモグラフィ回転の決定、およびこのホモグラフィ回転のフレームへの(線形変換の形式での)適用によりワープされたフレームまたは修正されたフレームを生成することを含む。さらに、HMDシステム100の接眼レンズ(図示せず)は、接眼レンズを通して屈折されたときに分離される光の異なる波長に起因して、色収差または色分解とともに、光学歪みを導入する可能性があるため、EDSデーモン109によって使用されるワープ処理によって、光学歪み、色収差、レンズのエッジに向かって暗くなること、他の光源からの複合テクスチャ等のうちの1つまたは複数を補償し得る。ホモグラフィ回転によって提供される一時的なワーピングは、歪み/色収差補正プロセスによって利用されるルックアップテーブル(LUT)値にホモグラフィ回転を適用して補償歪み(または「プリディストーション」)を導入し、ホモグラフィ回転と他の補正/補償処理との両方を同時に実行するように、結果的に修正されたLUT値をフレームに適用することにより実施され得る。
【0013】
GPU106は、処理モジュール107およびフレームバッファ121および122を含む。処理モジュールは、複数セットのコマンドを実行するための1つまたは複数の命令パイプライン、計算ユニット、または他の処理回路を含む。図1の図示された例において、GPU106は、本明細書では、デーモンと呼ばれる2つの異なるプロセスを実行する。特に、GPU106は、フレーム描画デーモン108およびEDSデーモン109を実行する。フレーム描画デーモン108は、CPU102から複数セットのフレーム描画コマンドを受信し、各セットに基づいて、対応するフレームをフレームバッファ121および122のうちの1つにレンダリングするように構成されている。
【0014】
少なくとも1つの実施形態では、フレーム描画デーモン108は、フレームを生成するときに、2つのフレームバッファ121,122を交互に切り替える。従って、フレーム描画デーモン108は、フレームバッファ121および122を二重フレームバッファとして使用して、一方のフレームバッファにレンダリングし、他方のフレームバッファが表示パネル110および112の一方または両方のためにスキャンされる。例によって説明すると、フレーム描画デーモン108は、フレーム130と指定されたシーケンス内の第1のフレームをフレームバッファ121にレンダリングすることができる。フレーム描画デーモン108は、次のセットのフレーム描画コマンドに基づいて、シーケンス内のフレーム131と指定された次のフレームをフレームバッファ122にレンダリングする。フレーム131がフレームバッファ122にレンダリングされている間、表示パネル110および112の一方または両方においてフレーム130を表示のためにスキャンすることができる。フレーム130がスキャンされた後、フレーム描画デーモン108は、シーケンス内の次のフレーム(図示せず)をフレームバッファ121にレンダリングし、フレームバッファ122においてフレーム131が表示のためにスキャンされる。
【0015】
図1の図示された実施形態では、HMDシステム100は1対のフレームバッファを使用しているが、他の実施形態では、HMDシステム100は本明細書で説明する技術を引き続き採用しつつ、3つ以上のフレームバッファを含むことができる。さらに、いくつかの実施形態では、HMDシステム100は、表示パネル110および112の各々に対する複数の独立したフレームバッファを使用するか、または本明細書に記載された技術を使用しつつ、中心窩適応画像化(foveated imaging)をサポートするために複数のセクションに分離された複数のフレームバッファを使用することができる。
【0016】
フレーム描画デーモン108は、フレーム131の例によって示されるような、少なくとも3つのタイプの情報、すなわち、VRアプリケーション104によって生成されたフレームのシーケンスにおけるフレームの順序を示すフレーム番号(例えば、フレーム番号132)、フレームがベースであった描画コマンドを生成するために使用される姿勢情報を示す姿勢情報(例えば、姿勢133)、および表示されるべきフレームに対する画素値を表す表示データ(例えば、表示データ134)を含むか、または少なくとも3つのタイプの情報に関連付けられるように各フレームをレンダリングする。フレーム番号は、連続番号、タイムスタンプ、またはフレームのシーケンスにおけるフレームの順序を示す他の識別子であってもよい。少なくとも1つの実施形態では、フレーム描画デーモン108は、フレーム番号および姿勢情報がフレームの「不可視(non-visible)」部分に格納されるように、すなわち表示パネル110および112によってスキャンアウトされないフレームバッファの記憶場所に格納され、従ってHMDシステム100のユーザは見ることができないように各フレームを生成する。他の実施形態では、フレーム番号および姿勢情報のうちの1つまたは複数は、可視であるがフレームの比較的目立たない部分、例えば、フレームのエッジの近くに格納される。さらに他の実施形態では、フレーム番号および姿勢情報の一方または両方が、適切な方法で(たとえば、テーブル、リンクされたリストなどを介して)フレームに関連付けられて、フレームの外部に格納されてもよい。
【0017】
表示パネル110および112は、フレームバッファ121および122の1つを交互に周期的に選択し、選択されたバッファに格納されたフレームの可視部分をスキャンアウトし、フレームを表示パネルに表示するように構成される。少なくとも1つの実施形態では、表示パネル110および112は、各々ユーザの個々の眼に対する表示に対応している。例えば、表示パネル110は左眼用表示パネルであり、表示パネル112は右眼用表示パネルである。少なくとも1つの実施形態では、HMDシステム100は、表示パネル110および112の各々に対して個々の複数の専用フレームバッファを含むことができる。
【0018】
EDSデーモン109は、フレームバッファ121および122のうちの1つに格納された選択されたフレームに対してEDSワープを周期的に適用するように構成される。EDSデーモンがEDSワープの生成および適用を開始する時間は、本明細書ではEDS優先割り込み点として称される。少なくとも1つの実施形態では、複数のEDS優先割り込み点は、クロック信号によって示されるように、固定スケジュールに従って管理されるが、本明細書でさらに説明するように、固定スケジュールは、CPU102による描画コマンドの生成およびフレーム描画デーモン108によるフレームのレンダリングとは非同期的である。
【0019】
EDS優先割り込み点の識別に応答して、EDSデーモン109は、フレームの対応する表示番号に基づいて、フレームバッファ121および122に格納された複数のフレームのうちの1つを選択する。少なくとも1つの実施形態では、EDSデーモン109は、対応するフレームバッファに完全にレンダリングされた最高のフレーム番号(即ち、フレームシーケンス内の最新のフレーム)を有するフレームを選択する。EDSデーモン109は、選択されたフレームに格納された姿勢情報を読み取り、かつ姿勢124を読み取って、HMDシステム100の最新に識別された姿勢を決定する。フレーム姿勢情報と姿勢124との間の差は、フレームに対するフレーム描画コマンドが生成されたときのHMDシステム100の姿勢と、HMDシステム100の最新に識別された姿勢との間の差を示す。この差に基づいて、EDSデーモン109は、EDSワープを識別する。ワープは、フレームがHMDシステム100の現在の姿勢をより近接的に反映するように、選択されたフレームに対する表示データの調整を行い、そのために画素位置の平行移動、画素強度または色の調整などを行うことができる。EDSデーモン109が選択されたフレームにEDSワープを適用することにより、ユーザの動きに起因するジッタまたはその他の不快な影響(dissonant effects)が低減される。
【0020】
上述したように、EDSデーモン109に対するEDS優先割り込み点は、CPU102によるフレーム描画コマンドの生成とは非同期とすることができる。これにより、CPU102とGPU106の同期動作におけるオーバーヘッドが低減され、処理速度および効率が向上し、さらにフレームが表示のためにスキャンされる時点まで、EDSワープが時間的により近接的に適用され、それによってEDSプロセスの有効性が向上する。説明のために、従来のシステムでは、1セットのフレーム描画コマンドが完了しているというCPUからの信号に応答して、格納されたフレームに対するEDSワープがGPUによって生成され、かつ適用される。しかしながら、(ユーザが姿勢を変化させるときの仮想環境の複雑さの変化を反映して)生成されるべきフレームの視覚的な複雑さが変化するため、複数のセットのフレーム描画コマンドの完了のタイミングが大幅に変化する。これは、EDSワープを生成するために使用される姿勢情報の差の相対量に変化を生じさせる可能性があり、その結果、EDSプロセスにおいて望ましくない変動を引き起こす可能性がある。EDSデーモン109によって差の相対量を非同期的に読み出すことができるように各フレームにフレーム番号および姿勢情報を配置することによって、HMDシステム100は、これらの変動を低減し、それによってEDSプロセスの有効性が向上する。
【0021】
図2は、少なくとも1つの実施形態によるHMDシステム100の例示的な動作を示す。図示の例では、VRアプリケーション104は、2つの異なるフレーム130およびフレーム131を生成するために複数のセットのフレーム描画コマンドセットを(異なる時間に)生成する。各フレームは、フレーム番号、姿勢情報、および描画データを含むように生成される。従って、フレーム130は、5のフレーム番号と、T1と指定された時間に識別された姿勢情報とを含む。従って、フレーム131は、(フレーム130の後に生成されたことを示す)6のフレーム番号と、T2と指定された時間(時間T1の後)に識別された姿勢情報とを含む。
【0022】
EDS優先割り込み点を識別することに応答して、EDSデーモン109は、フレームバッファ121および122に格納されたフレーム130および131を再検査して、最初に両方がそれぞれのフレームバッファに完全にレンダリングされていることを識別する。従って、EDSデーモン109は、フレーム130および131の両方を、EDSの選択に適格であると識別する。EDSデーモン109は、次に、フレーム131が最高のフレーム番号を有し、かつ従って最新のフレームであることを識別する。それに応答して、EDSデーモン109は、EDSワープの適用のためにフレーム131を選択する。
【0023】
いくつかの実施形態では、EDSデーモン109は、最高のフレーム番号を有するフレーム以外のフレームを選択してもよい。例えば、少なくとも1つの実施形態では、EDSデーモン109は、後のフレームがフレームバッファの1つで完全にレンダリングされたとしても、第2のフレームごとまたは第4のフレームごとに選択する等の設定されたパターンに基づいてフレームを選択することができる。これは、シーケンスのフレームを通してEDSプロセスがアニメーションの表示に悪影響を与えるのを防止するのに便利である。
【0024】
EDSデーモン109は、フレーム131を選択したことに応答して、または同時に、姿勢124を読み取る。フレーム130および131に対するフレーム描画コマンドが生成されたことにより、姿勢情報が更新され、姿勢124は、時間T2および時間T1の後のT3と指定された時間に識別された姿勢情報を反映する。EDSデーモン109は、時間T3における姿勢と、フレーム131に記録された時間T2における姿勢との差に基づいて、データが時間T3における姿勢を反映するようにフレーム131の表示データに対する調整を行うEDSワープ238を生成する。EDSデーモンは、EDSワープをフレーム131に適用することにより、表示されるべきデータを安定化し、仮想現実酔いまたはユーザ体験における他の影響を与える可能性を低減する。
【0025】
上述したように、EDSプロセスが表示されたデータにエラーを導入するのを防止するために、EDSデーモン109は、フレームバッファ120および121のうちの1つに完全にレンダリングされたフレームのみを選択する。一例が、本開示の少なくとも1つの実施形態に従う図3に示されている。特に、図3の例では、フレーム131は、フレーム130のフレーム番号(7)よりも高いフレーム番号(8)を有している。しかしながら、フレーム131の表示データは不完全である(即ち、フレーム131に関する全ての表示データがフレーム描画デーモン108によってフレームバッファに完全にレンダリングされていない)。フレーム131が完全にレンダリングされていないときにEDSワープをフレーム131に適用すると、フレームが表示のためにスキャンアウトされるときに、望ましくない視覚的アーチファクトが導入される可能性がある。従って、EDSデーモンはフレーム130を選択し、EDSワープ238を生成しかつ適用する。
【0026】
図4は、本開示の少なくとも1つの実施形態に従って、GPUに格納されたシーケンスのフレームからフレームを選択することによって、HMDシステムのGPUにおいてEDSを実行する方法400のフロー図を示す。説明の目的のために、方法400は、図1のHMDシステム100での例示的な実施形態に関して説明される。ブロック402において、CPU102は、姿勢124を読み取り、HMDシステム100の最近の姿勢を識別する。ブロック404で、ブロック402で読み取られた姿勢および他の入力情報に基づいて、VRアプリケーション104はフレームを描画するためのフレーム描画コマンド125を生成する。GPU106は、フレーム描画コマンド125を受信し、コマンドに基づいて、フレーム描画デーモン108が対応するフレームを生成する。ブロック406において、フレーム描画デーモン108は、フレーム描画コマンド125によって示されるフレームのフレーム番号をフレームに格納する。さらに、ブロック408において、フレーム描画デーモン108は、ブロック402で識別され、かつフレーム描画コマンド125によって示されるような姿勢をフレームに格納する。フレーム描画デーモン108は、フレーム番号と姿勢を含むフレームをフレームバッファ120,121のうちの1つにレンダリングする。
【0027】
ブロック410において、EDSデーモン109は、EDS優先割り込み点を識別する。少なくとも1つの実施形態では、EDS優先割り込み点のタイミングは、フレーム描画コマンド125の生成と、フレーム描画デーモン108によるフレームの対応するレンダリングとは非同期的である。ブロック412において、EDS優先割り込み点の識別に応答して、EDSデーモン109は、フレームバッファ120,121に格納されたフレームを再検査し、フレームによって示される最高フレーム番号を有する完成フレーム(すなわち、フレームバッファに完全にレンダリングされたフレーム)を選択する。ブロック414において、EDSデーモン109は、選択されたフレームに格納された姿勢情報を読み取り、姿勢124を読み取って、HMDシステム100に関して最新に識別された姿勢を識別する。ブロック416において、ブロック414において識別された2つの姿勢間の差に基づいて、EDSデーモン109は、1つまたは複数の既知のEDSワープ技術に従ってEDSワープを生成する。ブロック418において、EDSデーモン109は、生成されたEDSワープを選択されたフレームに適用し、それによって、HMDシステム100におけるフレームの表示を安定化させる。
【0028】
いくつかの実施形態では、図1のHMDシステム100は、表示パネル110および112の各々に専用の表示バッファを使用し、各表示パネルに対してフレーム上でEDSを実行することを交互に行う。しかしながら、これは、各表示パネルの最後のフレームのレンダリング後の長すぎる時間にEDS優先割り込み点が発生して、ジッタまたは他の望ましくない表示エラーを引き起こすことを避けるために、各表示パネルのEDS優先割り込み点の注意深いスケジューリングを必要とする可能性がある。この問題は、CPU102で複数の描画コマンドセットを生成することに相応した変動から生じるレンダリング時間の変動によって悪化する可能性がある。従って、少なくとも1つの実施形態では、GPU106は、表示パネルに関するEDS優先割り込み点がその表示パネルに関するレンダリング期間から時間内に離れた時点で発生するように表示パネルに関するEDS優先割り込み点を配置する。本開示の少なくとも1つの実施形態による一例が図5に示されている。
【0029】
図5は、例515および例516と指定された、GPU106におけるEDS優先割り込みの2つの事例を示す。例515の場合、GPUは、期間502中に左眼用表示パネル(表示パネル110)用のフレームバッファにフレームをレンダリングする。さらに、GPU106は、期間502と重なる期間503中に右眼用表示パネル(表示パネル112)用のEDS優先割り込み点を配置する。同様に、期間504(期間502の直後)中に、GPU106は右眼用表示パネル112用のフレームバッファにフレームをレンダリングし、かつ期間504と重なる期間505中に左眼用表示パネル110用の優先割り込み点を配置する。期間504に続く期間506中に、GPU106が左眼用表示パネル110用のフレームバッファにフレームをレンダリングする。また、GPU106は、期間506と重なる期間507中に、右眼用表示パネル112用の優先割り込み点を配置する。各EDS優先割り込み点の間、GPU106はその表示パネルに対する最新の完全にレンダリングされたフレームを使用して図1に関して上述したようなEDSを実行する。従って、例えば、右眼EDS優先割り込み期間507中に、GPU106は、期間504中にレンダリングされた右眼フレームを使用してEDSを実行する。
【0030】
表示パネルに関するEDS優先割り込み点が、そのパネルに関して対応するフレームのレンダリング期間から幾分離れているようにスケジューリングすることにより、GPU106は、CPU102によって生成される複数のセットのフレーム描画コマンドのタイミングおよび複雑さの変動に起因するフレームレンダリング期間の変動を考慮することができる。一例が例516によって示され、左眼用表示パネル110に対するフレームレンダリング期間508は、図1のフレームレンダリング期間502と比較して比較的早く完了する。これにより、次に、右眼用表示パネル112に対する次のフレームレンダリング期間509が早期に開始され、右眼用EDS優先割り込み期間510がフレームレンダリング期間508ではなく、フレームレンダリング期間509と重なるようになる。さらに、左眼用表示パネル110用のEDS優先割り込み点511は、フレームレンダリング期間509の後に発生し、かつフレームレンダリング期間と重ならない。しかしながら、EDS優先割り込み点は、以前にレンダリングされた完成したフレームを使用するため、EDS優先割り込み点は、ジッタの可能性が実質的に低減されるように、レンダリング時間に対して時間内に十分に近接して発生する。
【0031】
少なくとも1つの実施形態では、GPU106は、EDS優先割り込み点が、EDSに使用されるフレームから時間的に離れすぎることとなる時期を識別することができる。その時期に応答して、GPU106は、CPU102と共に、または独立して、フレームレート(即ち、フレームをレンダリングおよび表示するレート)を遅くすることができる。これにより、EDSが各フレームの表示時間から時間的に離れすぎる可能性が低減され、EDSプロセスの有効性が向上し、それに相応してユーザ経験が向上する。
【0032】
いくつかの実施形態では、前に説明した技術の特定の態様は、ソフトウェアを実行する処理システムの1つまたは複数のプロセッサによって実施されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体上に格納されているか、または他の方法で有形に具体化された1つまたは複数のセットの実行可能な命令を含む。ソフトウェアは、1つまたは複数のプロセッサによる実行時に、1つまたは複数のプロセッサを上述の技術の1つまたは複数の態様を実行するように操作する命令および特定のデータを含むことができる。非一時的コンピュータ可読記憶媒体には、例えば、磁気または光ディスク記憶装置、フラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)または他の不揮発性メモリデバイス(単数または複数)などのソリッドステートストレージデバイス、等が含まれる。非一時的なコンピュータ可読記憶媒体上に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、または1つまたは複数のプロセッサによって解釈または他の方法で実行可能な他の命令フォーマットであってもよい。
【0033】
非一時的なコンピュータ可読記憶媒体は、コンピュータシステムに命令および/またはデータを提供するために使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体または記憶媒体の組み合わせを含み得る。このような記憶媒体には、限定はしないが、光媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、または磁気ハードディスクドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)またはキャッシュ)、不揮発性メモリ(例えば、読み出し専用メモリ(ROM)またはフラッシュメモリ)、またはマイクロ電気機械システム(MEMS)ベースの記憶媒体が含まれる。コンピュータ可読記憶媒体は、コンピューティングシステム(例えば、システムRAMまたはROM)に埋め込まれてもよく、コンピューティングシステム(例えば、磁気ハードディスクドライブ)に固定的に取り付けられてもよく、コンピューティングシステム(例えば、光学ディスクまたはユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)に取り外し可能に取り付けられてもよく、または有線または無線ネットワーク(例えば、ネットワークアクセス可能ストレージ(NAS))を介してコンピュータシステムに接続されてもよい。
【0034】
一般的な説明において上記で説明した動作または構成要素のすべてが必要であるとは限らず、特定の動作または装置の一部が必要でなくてもよく、また1つまたは複数のさらなる動作が実行されてもよく、またこれらの説明に構成要素が追加されてもよい。さらに、動作が列挙される順序は、必ずしもそれらが実施される順序ではない。また、これらの概念は、特定の実施形態を参照して説明されている。しかしながら、当業者であれば、以下の特許請求の範囲に記載された本開示の範囲から逸脱することなく、様々な修正および変更を行うことができることを理解する。従って、明細書および図面は、限定的な意味ではなく例示的あるものとして考慮されるべきであり、そのような変更のすべては、本開示の範囲内に含まれることが意図される。
【0035】
効果、他の利点、および問題に対する解決策は、特定の実施形態に関して上述されている。しかしながら、効果、利点、問題の解決策、および効果、利点、または解決策を生じさせるか、または顕著になる可能性のある特徴(単数または複数)は、いずれかまたはすべての請求項の重要な、必須の、または不可欠な特徴と解釈されるべきではない。さらに、開示された主題は、本明細書の教示の効果を有する、当業者には明らかである、異なるが同等の方法で修正され、実施され得るので、上記で開示された特定の実施形態は、例示に過ぎない。以下の特許請求の範囲に記載されている以外の、本明細書に示された構成または設計の詳細に制限はない。従って、上記で開示された特定の実施形態は、変更または修正されてもよく、そのような変更形態は全て、開示される主題の範囲内にあると考えられることは明らかである。従って、本明細書で求められる保護は、以下の特許請求の範囲に記載されている。
図1
図2
図3
図4
図5