IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ バルブ コーポレーションの特許一覧

特許7566906ヘッドマウントディスプレイとホストコンピュータとの間の分割レンダリング
<>
  • 特許-ヘッドマウントディスプレイとホストコンピュータとの間の分割レンダリング 図1
  • 特許-ヘッドマウントディスプレイとホストコンピュータとの間の分割レンダリング 図2
  • 特許-ヘッドマウントディスプレイとホストコンピュータとの間の分割レンダリング 図3
  • 特許-ヘッドマウントディスプレイとホストコンピュータとの間の分割レンダリング 図4
  • 特許-ヘッドマウントディスプレイとホストコンピュータとの間の分割レンダリング 図5
  • 特許-ヘッドマウントディスプレイとホストコンピュータとの間の分割レンダリング 図6
  • 特許-ヘッドマウントディスプレイとホストコンピュータとの間の分割レンダリング 図7
  • 特許-ヘッドマウントディスプレイとホストコンピュータとの間の分割レンダリング 図8A
  • 特許-ヘッドマウントディスプレイとホストコンピュータとの間の分割レンダリング 図8B
  • 特許-ヘッドマウントディスプレイとホストコンピュータとの間の分割レンダリング 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-04
(45)【発行日】2024-10-15
(54)【発明の名称】ヘッドマウントディスプレイとホストコンピュータとの間の分割レンダリング
(51)【国際特許分類】
   G09G 5/00 20060101AFI20241007BHJP
   G09G 5/377 20060101ALI20241007BHJP
   H04N 5/64 20060101ALI20241007BHJP
【FI】
G09G5/00 550C
G09G5/00 555D
G09G5/00 555G
G09G5/377 100
H04N5/64 511A
【請求項の数】 19
(21)【出願番号】P 2022534368
(86)(22)【出願日】2020-12-15
(65)【公表番号】
(43)【公表日】2023-02-21
(86)【国際出願番号】 US2020065126
(87)【国際公開番号】W WO2021126854
(87)【国際公開日】2021-06-24
【審査請求日】2023-12-05
(31)【優先権主張番号】16/717,940
(32)【優先日】2019-12-17
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】517160525
【氏名又は名称】バルブ コーポレーション
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】マライカ、ヤッサー
【審査官】公文代 康祐
(56)【参考文献】
【文献】米国特許出願公開第2018/0286053(US,A1)
【文献】特開2019-028368(JP,A)
【文献】特開2011-172161(JP,A)
【文献】特開2018-028900(JP,A)
【文献】特開2019-079339(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G09G 5/00-5/42
H04N 5/64-5/655
(57)【特許請求の範囲】
【請求項1】
ヘッドマウントディスプレイ(HMD)であって、
発光素子のアレイを有する1つ以上のディスプレイパネルと、
頭部追跡システムと、
プロセッサと、
前記プロセッサによって実行されると、前記HMDに、
前記HMDに通信可能に結合されたホストコンピュータに、前記頭部追跡システムによって生成された第1の頭部追跡データを送信することと、
前記ホストコンピュータから、かつ前記第1の頭部追跡データに少なくとも部分的に基づいて、
前記ホストコンピュータ上で実行されるアプリケーションによってあるフレームレートでレンダリングされた第1のフレームに関連付けられたピクセルデータおよび
前記ピクセルデータに加え、余分なデータを受信することであって、前記余分なデータが、
前記アプリケーションによって前記ピクセルデータを生成するために使用された、前記HMDの予測姿勢を示す姿勢データと、
前記第1のフレームに関連付けられた深度データと、を含む、受信することと、
前記頭部追跡システムによって生成された第2の頭部追跡データに少なくとも部分的に基づいて、前記発光素子が前記第1のフレームのために点灯する時間に前記HMDがとるであろう、更新された姿勢を決定することと、
前記深度データに少なくとも部分的に基づいて、前記ピクセルデータを前景ピクセルと背景ピクセルとに分類することと、
前記深度データおよび前記予測姿勢と前記更新された姿勢との間の比較に少なくとも部分的に基づいて、前記ピクセルデータに再投影調整を適用して、前記第1のフレームに関連付けられた修正されたピクセルデータを取得することと、ここで、前記深度データに少なくとも部分的に基づいて前記ピクセルデータに再投影調整を適用することは、
前記再投影調整が前記前景ピクセルに適用される第1のレートに少なくとも部分的に基づいて前記前景ピクセルを修正することと、
前記再投影調整が前記背景ピクセルに適用される第2のレートに少なくとも部分的に基づいて前記背景ピクセルを修正することであって、ここで前記第2のレートは前記第1のレートよりも低く、そして前記フレームレートよりも低い、修正することであって、
前記修正されたピクセルデータに少なくとも部分的に基づいて、第1の画像を前記1つ以上のディスプレイパネル上に提示することと、を行わせる、コンピュータ実行可能命令を記憶するメモリと、を備える、HMD。
【請求項2】
前記ホストコンピュータが、前記HMDに無線で結合され、
前記第1の頭部追跡データが、前記ホストコンピュータに無線で送信され、
前記ピクセルデータおよび前記余分なデータが、前記ホストコンピュータから無線で受信される、請求項1に記載のHMD。
【請求項3】
前記コンピュータ実行可能命令が、前記プロセッサによって実行されると、前記HMDに、
前記ホストコンピュータより第2のフレームに関連付けられた第2のピクセルデータと第2の深度データとを受信することと、
前記第2の深度データに少なくとも部分的に基づいて、前記第2のピクセルデータを第2の前景ピクセルと第2の背景ピクセルとして分類することと、
前記第2の深度データに少なくとも部分的に基づいて、前記第2のフレームに関連付けられた第2の修正されたピクセルデータを得るために、第2の再投影調整を前記第2のピクセルデータに適用することと、ここで、前記第2の深度データに少なくとも部分的に基づいて、前記第2の再投影調整を前記第2のピクセルデータに適用することが、
前記第1のレートに少なくとも部分的に基づいて、前記第2の前景ピクセルを修正することと、
前記第2のレートに少なくとも部分的に基づいて、前記第2の背景ピクセルの修正を控えることと、を含み、
前記第2の修正されたピクセルデータに少なくとも部分的に基づいて、前記以上のディスプレイパネルに第2のイメージを表示すること、
をさらに行わせる、請求項1に記載のHMD。
【請求項4】
前記コンピュータ実行可能命令が、前記プロセッサによって実行されると、前記HMDに、
前記HMDに通信可能に結合された少なくとも1つのハンドヘルドコントローラから、手部追跡データを受信することと、
前記手部追跡データに少なくとも部分的に基づいて、前記ピクセルデータを修正して、前記ピクセルデータによって表されるシーン上にオーバーレイされた1つ以上の仮想手部を含ませ、前記第1のフレームに関連付けられた前記修正されたピクセルデータを取得することと、をさらに行わせる、請求項1に記載のHMD。
【請求項5】
発光素子のアレイを有する1つ以上のディスプレイパネルを含むヘッドマウントディスプレイ(HMD)によって実装される方法であって、前記方法が、
ホストコンピュータに、前記HMDの頭部追跡システムによって生成された第1の頭部追跡データを送信することと、
前記ホストコンピュータから、かつ前記第1の頭部追跡データに少なくとも部分的に基づいて、
前記ホストコンピュータ上で実行されるアプリケーションによってあるフレームレートでレンダリングされた第1のフレームに関連付けられたピクセルデータおよび
余分なデータを受信することであって、前記余分なデータが、
前記アプリケーションによって前記ピクセルデータを生成するために使用された、前記HMDの予測姿勢を示す姿勢データと、
前記第1のフレームに関連付けられた深度データと、を含む、受信することと、
前記頭部追跡システムによって生成された第2の頭部追跡データに少なくとも部分的に基づいて、前記発光素子が前記第1のフレームのために点灯する時間に前記HMDがとるであろう、更新された姿勢を決定することと、
前記深度データに少なくとも部分的に基づいて、前記ピクセルデータを前景ピクセルと背景ピクセルとに分類することと、
前記深度データおよび前記予測姿勢と前記更新された姿勢との間の比較に少なくとも部分的に基づいて、前記ピクセルデータに再投影調整を適用して、前記第1のフレームに関連付けられた修正されたピクセルデータを取得することと、ここで、前記深度データに少なくとも部分的に基づいて前記ピクセルデータに再投影調整を適用することは、
前記再投影調整が前記前景ピクセルに適用される第1のレートに少なくとも部分的に基づいて前記前景ピクセルを修正することと、
前記再投影調整が前記背景ピクセルに適用される第2のレートに少なくとも部分的に基づいて前記背景ピクセルを修正することであって、ここで前記第2のレートは前記第1のレートよりも低く、そして前記フレームレートよりも低い、修正することであって、
前記修正されたピクセルデータに少なくとも部分的に基づいて、第1の画像を前記1つ以上のディスプレイパネル上に提示することと、を含む、方法。
【請求項6】
前記ホストコンピュータが、前記HMDに無線で結合され、
前記第1の頭部追跡データが、前記ホストコンピュータに無線で送信され、
前記ピクセルデータおよび前記余分なデータが、前記ホストコンピュータから無線で受信される、請求項5に記載の方法。
【請求項7】
前記方法が、
前記ホストコンピュータから、第2のフレームに関連付けられた第2のピクセルデータ及び第2の深度データを受信することと、
前記第2の深度データに少なくとも部分的に基づいて、前記第2のピクセルデータを第2の前景ピクセルと第2の背景ピクセルとして分類することと、
前記第2の深度データに少なくとも部分的に基づいて、前記第2のフレームに関連付けられた第2の修正されたピクセルデータを得るために、第2の再投影調整を前記第2のピクセルデータに適用することと、ここで、前記第2の再投影調整を前記第2のピクセルデータに適用することが、
前記第1のレートに少なくとも部分的に基づいて、前記第2の前景ピクセルを修正することと、
前記第2のレートに少なくとも部分的に基づいて、前記第2の背景ピクセルの修正を控えることと、を含み、
前記修正された第2のピクセルデータに少なくとも部分的に基づいて、前記以上のディスプレイパネルに第2のイメージを表示すること、
をさらに含む、請求項5に記載の方法。
【請求項8】
前記HMDに通信可能に結合された少なくとも1つのハンドヘルドコントローラから、手部追跡データを受信することと、
前記手部追跡データに少なくとも部分的に基づいて、前記ピクセルデータを修正して、前記ピクセルデータによって表されるシーン上にオーバーレイされた1つ以上の仮想手部を含ませ、前記第1のフレームに関連付けられた前記修正されたピクセルデータを取得することと、をさらに含む、請求項5に記載の方法。
【請求項9】
1つ以上のディスプレイパネルを備えるヘッドマウントディスプレイ(HMD)によって実装される方法であって、前記方法が、
ホストコンピュータに、前記HMDの頭部追跡システムによって生成された、頭部追跡データを送信することと、
前記ホストコンピュータから、かつ前記頭部追跡データに少なくとも部分的に基づいて、前記ホストコンピュータ上で実行されるアプリケーションによって、あるフレームレートでレンダリングされる第1のフレームに関連付けられたピクセルデータと深度データとを受信することと、
前記深度データに少なくとも部分的に基づいて、前記ピクセルデータを前景ピクセルと背景ピクセルとに分類することと、
前記深度データに少なくとも部分的に基づいて、前記ピクセルデータに再投影調整を適用して、前記第1のフレームに関連付けられた修正されたピクセルデータを取得することと、ここで、前記深度データに少なくとも部分的に基づいて前記ピクセルデータに前記再投影調整を適用することは、
前記前景ピクセルに前記再投影調整が適用される第1のレートに少なくとも部分的に基づいて前記前景ピクセルを修正することと、
前記背景ピクセルに前記再投影調整が適用される第2のレートに少なくとも部分的に基づいて前記背景ピクセルを修正することと、ここで、前記第2のレートは、前記第1のレートよりも低く、そして前記フレームレートよりも低い、修正することであって、
前記修正されたピクセルデータに少なくとも部分的に基づいて、第1の画像を前記1つ以上のディスプレイパネル上に提示すること、を含む、方法。
【請求項10】
前記ピクセルデータと前記深度データとは、前記ホストコンピュータから無線で受信される、請求項9記載の方法。
【請求項11】
前記ホストコンピュータから、第2のフレームに関連付けられた第2のピクセルデータと第2の深度データを受信することと、
前記第2の深度データに少なくとも部分的に基づいて、前記第2のピクセルデータを、第2の前景ピクセルと第2の背景ピクセルとに分類することと、
前記第2の深度データに少なくとも部分的に基づいて、前記第2のピクセルデータに第2の再投影調整を適用して、前記第2のフレームに関連付けられた第2の修正されたピクセルデータを取得することと、ここで前記第2のピクセルデータに第2の再投影調整を適用することは、
前記第1のレートに少なくとも部分的に基づいて前記第2の前景ピクセルを修正することと、
前記第2のレートに少なくとも部分的に基づいて前記第2の背景ピクセルの修正を控えることを含む、取得することと、
前記第2の修正されたピクセルデータに少なくとも部分的に基づいて、第2の画像を前記1つ以上のディスプレイパネル上に提示すること、を更に含む請求項9記載の方法。
【請求項12】
前記HMDに通信可能に接続された少なくとも一台のハンドヘルドコントローラから手部追跡データを受信することと、
前記手部追跡データに少なくとも部分的に基づいて、前記ピクセルデータを修正して、前記ピクセルデータによって表されるシーン上にオーバレイされた1つ以上の仮想手部を含ませ、前記第1のフレームに関連付けられた前記修正されたピクセルデータを取得すること、を更に含む請求項9記載の方法。
【請求項13】
前記頭部追跡データは、第1の頭部追跡データであって、
前記ホストコンピュータから、かつ前記第1の頭部追跡データに少なくとも部分的に基づいて、前記アプリケーションによって前記ピクセルデータを生成するために使用された、前記HMDの予測姿勢を示す姿勢データを受信することと、
前記頭部追跡システムによって生成された第2の頭部追跡データに少なくとも部分的に基づいて、前記1つ以上のディスプレイパネルの発光素子が前記第1のフレームのために点灯する時間に前記HMDがとるであろう、更新された姿勢を決定することとを含み、
前記ピクセルデータに前記再投影調整を適用することは、少なくとも部分的に、前記予測姿勢と前記更新された姿勢との間の比較に更に基づく、請求項に記載の方法。
【請求項14】
前記アプリケーションは、ビデオゲームを備える、請求項1に記載の方法。
【請求項15】
前記深度データに少なくとも部分的に基づいて前記ピクセルデータを分類することは、前記ピクセルデータを、前記前景ピクセル、前記背景ピクセル、及び前記前景ピクセルと前記背景ピクセルとの間の中間層ピクセルに分類することを含み、
前記深度データに少なくとも部分的に基づいて前記ピクセルデータに前記再投影調整を適用することは、前記再投影調整が前記中間層ピクセルに適用される第3のレートに少なくとも部分的に基づいて前記中間層ピクセルを修正することを更に含み、ここで、前記第3のレートは、前記第1のレート及び前記第2のレートとは異なる、請求項9に記載の方法。
【請求項16】
前記修正されたピクセルデータをフレームバッファに出力することを更に含み、
前記修正されたピクセルデータに少なくとも部分的に基づいて、前記1つ以上のディスプレイパネルに前記第1の画像を表示することは、
前記修正されたピクセルデータを前記1つ以上のディスプレイパネルにスキャンアウトすることと、
前記1つ以上のディスプレイパネルの発光素子を点灯させることとを含む、請求項9に記載の方法。
【請求項17】
前記深度データに少なくとも部分的に基づいて前記ピクセルデータを分類することは、前記ピクセルデータを、前記前景ピクセル、前記背景ピクセル、及び前記前景ピクセルと前記背景ピクセルとの間の中間層ピクセルに分類することを含み、
前記深度データに少なくとも部分的に基づいて前記ピクセルデータに前記再投影調整を適用することは、前記再投影調整が前記中間層ピクセルに適用される第3のレートに少なくとも部分的に基づいて前記中間層ピクセルを修正することを更に含み、ここで、前記第3のレートは、前記第1のレート及び前記第2のレートとは異なる、請求項1に記載のHMD。
【請求項18】
前記コンピュータ実行可能命令は、前記プロセッサによって実行されると、更に前記HMDに、
前記修正されたピクセルデータをフレームバッファに出力させ、
ここで、前記修正されたピクセルデータに少なくとも部分的に基づいて、1つ以上のディスプレイパネルに前記第1の画像を表示することは、
前記修正されたピクセルデータを、前記1つ以上のディスプレイパネルにスキャンアウトすることと、
前記1つ以上のディスプレイパネルの前記発光素子を点灯させることを含む、
請求項1に記載のHMD。
【請求項19】
前記深度データに少なくとも部分的に基づいて前記ピクセルデータを分類することは、前記ピクセルデータを、前記前景ピクセル、前記背景ピクセル、及び前記前景ピクセルと前記背景ピクセルとの間の中間層ピクセルに分類することを含み、
前記深度データに少なくとも部分的に基づいて前記ピクセルデータに前記再投影調整を適用することは、前記再投影調整が前記中間層ピクセルに適用される第3のレートに少なくとも部分的に基づいて前記中間層ピクセルを修正することを更に含み、ここで、前記第3のレートは、前記第1のレート及び前記第2のレートとは異なる、請求項5に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本書は、参照によりその全体が本明細書に組み込まれる、2019年12月17日に出願された「SPLIT RENDERING BETWEEN A HEAD-MOUNTED DISPLAY (HMD) AND A HOST COMPUTER」と題する米国特許出願第16/717,940号の優先権を主張するPCT出願である。
【背景技術】
【0002】
仮想現実(VR)システムは、ビデオゲーム業界の内部および外部の両方で使用されている。従来のVRシステムのセットアップには、有線データ接続を介してホストコンピュータに物理的にテザリングされるVRヘッドセットが含まれる。この従来のセットアップでは、ホストコンピュータは、ビデオゲームなどのグラフィックスベースのアプリケーションを実行する。ビデオゲームでは、グラフィックスレンダリング動作の全部でないにしても、そのほとんどがホストコンピュータによって処理され、VRヘッドセットは、ホストコンピュータから受信されたピクセルデータを表示するだけである。このセットアップは、ホストコンピュータの高演算容量および有線接続の低レイテンシを活用して、ヘッドセットのグラフィックス処理能力に関して「シンクライアント」デバイスのように機能する軽量なVRヘッドセットに高品質の画像を表示する。しかしながら、そのようなVRヘッドセットは、ホストコンピュータに物理的に接続されているため、ユーザのモビリティは、VRヘッドセットを使用している間に制限される。さらに、このようなVRシステムのセットアップおよび取り外しは、ケーブルの接続および切り離しの要求から必要以上に困難である。
【0003】
スペクトルの反対側では、オールインワン(またはスタンドアロン)VRヘッドセットは、別個の機械を介さずに、画像を表示するためのグラフィックス処理動作の全体を実行する。スタンドアロンVRヘッドセットは、ホストコンピュータにテザリングされる必要がないため、より高いモビリティをユーザに提供するが、快適であり、かつ高品質のグラフィックスをレンダリングすることができるオールインワンVRヘッドセットを製造することは困難だと言える。例えば、高品質のグラフィックスをレンダリングするために、計算集約的で高消費電力のグラフィックス処理動作を実行することを任務とするスタンドアロンVRヘッドセットは、非常に速く熱くなる傾向があり、それらはまた、煩雑かつ/または重く、長時間装着することを不快にする傾向がある。これらの欠点を軽減するために、いくつかのスタンドアロンVRヘッドセットは、より低解像度、より低ダイナミックレンジ、および/または限定された基本的なテクスチャのセットでグラフィックスをレンダリングする、より低品質のグラフィックス処理コンポーネントを使用することによって、快適さのための品質に引き換え、これにより、ヘッドセットに搭載されているグラフィックス処理動作が計算集約的になりにくくなり、高温になりすぎず、したがって装着がより快適になる軽量のヘッドセットを可能にする。しかしながら、VRで高品質のグラフィックスを体験したいユーザは、品質と快適さとの両方を提供することができない、今日のスタンドアロンVRヘッドセットに不満を抱いている。
【0004】
本明細書では、これらのシステムおよび他のシステムを改善および強化するための技術的解決法を提供する。
【図面の簡単な説明】
【0005】
詳細な説明を、添付の図面を参照して説明する。各図において、参照番号の左端数字は、参照番号が最初に現れる図を識別する。異なる図における同じ参照番号の使用は、類似または同一の構成要素または特徴を示す。
【0006】
図1】本明細書に開示される実施形態による、ヘッドマウントディスプレイ(HMD)とホストコンピュータとの間でフレームのレンダリングワークロードを分割するための例示的な技法を示す図である。
図2】本明細書に開示される実施形態による、個々のフレームのそれぞれのレンダリングワークロードを示す2つの例示的なタイムラインを示す図であり、それぞれのレンダリングワークロードは、ホストコンピュータとHMDとの間で分割されている。
図3】本明細書に開示される実施形態による、HMDとホストコンピュータとの間でフレームのレンダリングワークロードを分割することによってフレームをレンダリングするための例示的なプロセスのフロー図を示す。
図4】本明細書に開示される実施形態による、ホストコンピュータによって生成された動きベクトルデータに基づいて、HMDに再投影調整を適用するための例示的なプロセスのフロー図を示す。
図5】本明細書に開示される実施形態による、ホストコンピュータ上で実行しているアプリケーションによって生成された余分なピクセルデータに基づいて、再投影調整を適用するための例示的なプロセスのフロー図を示す。
図6】本明細書に開示される実施形態による、ホストコンピュータ上で実行しているアプリケーションによって生成された深度データに基づいて、再投影調整を適用するための例示的なプロセスのフロー図を示す。
図7】本明細書に開示される実施形態による、HMDがハンドヘルドコントローラから直接手部追跡データを受信し、手部追跡データを使用してアプリケーションレンダリングシーン上に仮想手部をオーバーレイするための例示的なプロセスのフロー図を示す。
図8A】本明細書に開示される実施形態による、HMDとホストコンピュータとの間でフレームのレンダリングワークロードを分割するシステムの代替的なセットアップを示す。
図8B】本明細書に開示される実施形態による、HMDとホストコンピュータとの間でフレームのレンダリングワークロードを分割するシステムの代替的なセットアップを示す。
図9】本明細書に開示される技法を実装することができる、HMD(例えば、VRヘッドセット)などのウェアラブルデバイスの例示的な構成要素を示す。
【発明を実施するための形態】
【0007】
ヘッドマウントディスプレイ(HMD)は、ユーザが仮想現実(VR)環境または拡張現実(AR)環境に没入する目的で、ユーザによって装着され得る。HMDの1つ以上のディスプレイパネルは、アプリケーション(例えば、ビデオゲーム)によって生成されたデータに基づいて画像を提示する。アプリケーションは、HMDに通信可能に結合されたホストコンピュータ上で実行され、アプリケーションは、一連のフレームの個々のフレームについてのピクセルデータを生成する。ピクセルデータは、HMDに送信され、HMDに含まれる光学系を通してユーザによって視認される画像を提示し、これにより、ユーザに、ユーザがVRまたはAR環境に没入しているかのように画像を知覚させる。
【0008】
本明細書に記載されるのは、とりわけ、ホストコンピュータがレンダリングワークロードの第1の部分を実行し、HMDがレンダリングワークロードの第2の部分を実行するように、HMDとホストコンピュータとの間で個々のフレームのレンダリングワークロードを分割するための技法およびシステムである。所与のフレームについて、HMDは、頭部追跡データをホストコンピュータに送信するように構成され、ホストコンピュータは、頭部追跡データを使用して、フレームのピクセルデータおよびピクセルデータに加え、余分なデータを生成するように構成されている。余分なデータには、限定されないが、姿勢データ、深度データ、動きベクトルデータ、視差オクルージョンデータ、および/または余分なピクセルデータを含めることができる。例えば、ホストコンピュータは、頭部追跡データを使用して、HMDのディスプレイパネルの発光素子がフレームのために点灯する時間にHMDがとるであろう、予測姿勢を示す姿勢データを生成し得る。ホストコンピュータは、追加的または代替的に、姿勢データに少なくとも部分的に基づいて深度データおよび/または余分なピクセルデータを生成することをアプリケーションに指示し得る。ホストコンピュータはまた、レンダリングされているシーン内の頭部追跡データおよび/または移動に少なくとも部分的に基づいて、動きベクトルデータを生成し得る。この余分なデータの一部またはすべては、ホストコンピュータからHMDに送信され得、HMDは、ピクセルデータに再投影調整を適用することなどによって、ピクセルデータを修正する目的で、それが受信する余分なデータの少なくとも一部を使用し得る。「再投影」とは、HMDの元の姿勢予測におけるわずかな不正確さを補償し、および/または、わずかに不正確な元の姿勢予測と同じ効果を有する、フレームレートに達していないアプリケーションを補償し得る、技法である。例えば、HMDの姿勢の更新された予測を考慮した様式でアプリケーションレンダリングされたフレームを変換することによって(例えば、回転および再投影の計算を通して)、アプリケーションレンダリングされたフレームのピクセルデータを使用して再投影されたフレームを生成することができる。したがって、再投影調整(および場合によっては他の調整)を適用して得られた修正されたピクセルデータは、所与のフレームのためのHMDのディスプレイパネルに画像を提示するために使用され得、このプロセスは、一連のフレームについて反復し得る。
【0009】
いくつかの実施形態では、フレームをレンダリングするために生成、送信、および/または利用される余分なデータ(ピクセルデータも)は、フレームごとに異なり得る。例えば、ホストコンピュータは、個々のフレームについて、レンダリングワークロードの第1の部分の一部として生成されることになる余分なデータのタイプおよび/または範囲、および/またはHMDに送信されることになる余分なデータのタイプおよび/または範囲を動的に決定し得る。一方、HMDは、個々のフレームについて、レンダリングワークロードの第2の部分の一部として利用するために、ホストコンピュータから受信した余分なデータのタイプおよび/または範囲を動的に決定し得る。
【0010】
ホストコンピュータとHMDとの間で所与のフレームのレンダリングワークロードを分割することは、ホストコンピュータおよびHMDが互いに無線で接続され得るシステムを実装することを可能にし、ホストコンピュータ上で完全に頼りになる今日の高レイテンシ無線通信プロトコルおよびHMDでは現在実行不可能であるものを実装することを可能にする。レンダリングワークロードを分割することは、ホストコンピュータの高演算能力が依然として本明細書に開示されるシステムに活用され得るため、長期間にわたって装着することも快適であるHMDに高品質のVRまたはAR体験を提供することを可能にする。さらに、本明細書に開示されるHMDは、ホストコンピュータから物理的にテザリングされていない状態であることが可能であり、かつそのままであることが可能であり、テザリングされたHMDと比較して、ユーザがHMDなどを誤って取り外すことなどを心配することなく、HMDを装着しながら空間を歩き回ることが可能であるという点で、ユーザにより大きなモビリティを提供する。高忠実度、高解像度のVRグラフィックスに対するユーザの要求を考えると、これらの要求に従う無線VRシステムは、無線で転送されるデータの量が多いために、無線通信リンクを介したデータ転送においてより高いレイテンシにさらされる傾向がある。これは、所与のフレームをレンダリングするためにアプリケーションによって使用されるHMDの姿勢予測が、それ自体が有線接続のより高いデータ転送速度に有用であり得る従来の物理的にテザリングされたHMDの姿勢予測と比較して、本明細書に開示されるシステムにおいてさらに前もって行われることを意味する。フレームの点灯時間よりもさらに前もって行われる姿勢予測は、物理的にテザリングされたHMDの後期姿勢予測と比較して、姿勢予測により多くの誤差があることを意味し、これは、次いで、本明細書に開示されるHMDが、適切な画像がHMD上に表示されるように、ホストコンピュータから受信されたピクセルデータを修正する(例えば、ホストコンピュータから受信されたピクセルデータの誤差を訂正する)ために、計算集約的なグラフィックス処理動作を実行するようにタスクされることを意味する。一般に、ホストコンピュータから受信した余分なデータで武装したHMDは、ホストコンピュータとHMDとの間の無線通信リンクを介した比較的低いデータ転送速度を説明し、かつ受信したピクセルデータを、HMDのディスプレイパネル上に提示された結果として得られる画像の品質を改善する方法で修正するために、より良好な位置にある。加えて、本明細書に記載の分割レンダリング技法およびシステムは、ホストコンピュータおよびHMDのそれぞれの上で異なるレンダリング頻度(またはフレームレート)を可能にすることができる。
【0011】
したがって、開示されたHMDは、今日のHMDの比較的低いレイテンシの有線接続と比較して、無線接続の比較的高いレイテンシにかかわらず、ホストコンピュータとHMDとの間で無線でデータを転送することを可能にする、所与のフレームのレンダリングワークロードの一部分を実行するように構成されている。HMDは、ホストコンピュータによって生成されたデータの誤差を修正するために使用されるHMDに搭載されたグラフィックス処理ロジックを使用して、無線通信リンクのより高いレイテンシを補償することができる。加えて、この搭載されたグラフィックス処理ロジックは、おそらく限られた使用シナリオにおいて、HMDをスタンドアロンデバイスとして使用することを可能にする。例えば、本明細書に開示されるHMDは、スタンドアロンモードで使用されて、それらの画像内のより基本的なグラフィックスをレンダリングするビデオゲームをプレイすることができ、それによって、フレームをレンダリングするための計算集約的ではないグラフィックス処理動作を必要とする。別の例として、本明細書に開示されるHMDは、全てホストコンピュータに依存することなく、HMD上でムービーおよび/またはビデオクリップを再生するためにスタンドアロンモードで使用することができる。しかしながら、本明細書に開示されるHMDのユーザが、より豊富なグラフィックスでビデオゲームをプレイしたい場合、ユーザは、有線または無線通信リンクのいずれかを介してHMDをホストコンピュータに接続することによって、ホストコンピュータの追加のグラフィックス処理能力を活用するために、接続された態様でHMDを動作させ得る。有線通信リンクは、ホストコンピュータの追加の電力容量を活用することによって(例えば、HMDがバッテリ電力を使い果たさないように)、より豊富なグラフィックスでビデオゲームを長期間プレイすることを望むユーザによって依然として利用され得る。例えば、今日のオールインワンシステムと比較して、ユーザは、ホストコンピュータとHMDとの間の利用可能な無線接続によって可能になるモビリティの増加と共に、接続されたホストコンピュータによって提供される高忠実度グラフィックス経験から利益を得ることができる。
【0012】
本明細書には、本明細書に開示される技術およびプロセスを実装するためのコンピュータ実行可能命令を記憶する非一時的コンピュータ可読媒体もまた、開示される。本明細書に開示される技術およびシステムは、例として、ビデオゲームアプリケーション、特にVRゲームアプリケーションの文脈で議論されているが、本明細書に説明される技術およびシステムは、非限定的に、非VRアプリケーション(例えば、ARアプリケーション)、および/または産業機械アプリケーション、防衛アプリケーション、ロボットアプリケーションなどの非ゲームアプリケーションを含む、他のアプリケーションに利益を提供し得ることを理解されたい。
【0013】
図1は、ヘッドマウントディスプレイ(HMD)とホストコンピュータとの間でフレームのレンダリングワークロード100を分割するための例示的な技法を示す図である。図1は、ユーザ104によって装着されたヘッドマウントディスプレイ(HMD)102を、ホストコンピュータ106と共に描写している。図1は、例えば、バックパック内で運ばれるラップトップ106(1)、または例えば、ユーザ104の世帯に位置し得るパーソナルコンピュータ(PC)106(N)の形態でのホストコンピュータ106の例示的な実装形態を描写している。しかしながら、これらの例示的なタイプのホストコンピュータ106は、本開示に非限定的であることを理解されたい。例えば、ホストコンピュータ106は、これらに限定されないが、PC、ラップトップコンピュータ、デスクトップコンピュータ、ポータブルデジタルアシスタント(PDA)、モバイルフォン、タブレットコンピュータ、セットトップボックス、ゲームコンソール、サーバコンピュータ、ウェアラブルコンピュータ(例えば、スマートウォッチなど)、またはデータを送受信することができる任意の他の電子デバイスを含む、任意のタイプおよび/または任意の数のコンピューティングデバイスとして実装することができる。ホストコンピュータ106は、HMD102を装着するユーザ104の世帯など、HMD102と同じ環境に配置され得る。代替的に、ホストコンピュータ106は、HMD102の地理的位置に関して遠隔地理的位置に位置するサーバコンピュータの形態でホストコンピュータ106など、HMD102に関して遠隔に位置することができる。リモートホストコンピュータ106の実装形態では、ホストコンピュータ106は、インターネットなどの広域ネットワークを介してHMD102に通信可能に結合され得る。ローカルホストコンピュータ106の実装形態では、ホストコンピュータ106は、HMD102と環境(例えば、世帯)内に配置され得、それによって、ホストコンピュータ106およびHMD102は、直接的に、または仲介ネットワークデバイスを介してローカルエリアネットワーク(LAN)を通して通信可能に一緒に結合され得る。
【0014】
図1に示すように、所与のフレームについて、ホストコンピュータ106は、第1の部分レンダリングワークロード100(1)(例えば、所与のフレームについてのレンダリングワークロード100の第1の部分)を実行するように構成され、HMD102は、第2の部分レンダリングワークロード100(2)(例えば、所与のフレームについてのレンダリングワークロード100の第2の部分)を実行するように構成されている。このようにして、HMD102およびホストコンピュータ106は、共に通信可能に結合され、HMD102のディスプレイパネル108上に対応する画像を提示するために最終的に使用されるピクセルデータを生成することによって、所与のフレームをレンダリングするために協働的に共に働くように構成されている。
【0015】
図1の例のHMD102は、ディスプレイパネルのステレオ対のうちの左ディスプレイパネルおよび右ディスプレイパネルなどの、単一のディスプレイパネル108または複数のディスプレイパネル108を含み得る。HMD102の1つ以上のディスプレイパネル108は、HMD102を装着しているユーザ104によって視認可能である一連の画像フレーム(以下、「フレーム」と呼ぶ)を提示するために使用され得る。HMD102は、任意の数のディスプレイパネル108(例えば、3つ以上のディスプレイパネル、一対のディスプレイパネル、または単一のディスプレイパネル)を含み得ることを理解されたい。したがって、「ディスプレイパネル」という用語は、本明細書の単数形に使用される際、2パネルHMD102の一対のディスプレイパネルのいずれかのディスプレイパネル108を指し得るか、または任意の数のディスプレイパネル(例えば、単一パネルHMD102またはマルチパネルHMD102)を有するHMD102の単一のディスプレイパネル108を指し得る。2パネルHMD102では、ステレオフレームバッファは、例えば、HMD102の両方のディスプレイパネル上で2160×1200ピクセル(例えば、ディスプレイパネル当たり1080×1200ピクセル)をレンダリングし得る。
【0016】
HMD102のディスプレイパネル108は、ディスプレイパネル108上でのフレームの提示中に発光素子(例えば、発光ダイオード(LED))を利用して光を放出する発光ディスプレイなど、任意の適切なタイプのディスプレイ技術を利用して、光を放出し得る。一実施例として、HMD102のディスプレイパネル108は、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、無機発光ダイオード(ILED)ディスプレイ、またはHMDアプリケーションのための任意の他の適切なタイプのディスプレイ技術を含み得る。
【0017】
HMD102のディスプレイパネル108は、固定リフレッシュレートまたはリフレッシュレートの範囲にわたって動的に変化する可変リフレッシュレートであり得る90ヘルツ(Hz)リフレッシュレートなどの任意の適切なリフレッシュレートで動作し得る。ディスプレイの「リフレッシュレート」は、ディスプレイが画面を再描画する1秒当たりの回数である。1秒当たりに表示されるフレームの数は、固定リフレッシュレートをした場合、ディスプレイのリフレッシュレートによって制限され得る。したがって、一連のフレームは、一連のフレームのうちの1つのフレームが画面の更新ごとに表示されるように、処理され(例えば、レンダリングされ)、ディスプレイ上に画像として表示され得る。すなわち、ディスプレイパネル108上に一連の画像を提示するために、ディスプレイパネル108は、一連のフレーム内で、ディスプレイのリフレッシュレートでフレーム間に遷移し得、画面のリフレッシュごとにピクセルを点灯させる。いくつかの実施形態では、フレームレートは、抑制されることができ、および/またはアプリケーションは、ターゲットフレームレートに到達することができず、(再投影に基づく)ファントムフレームは、適用によりレンダリングされたフレーム間に挿入することができる。
【0018】
HMD102のディスプレイシステムは、グローバルフラッシュタイプのディスプレイ駆動方式、ローリングバンドタイプのディスプレイ駆動方式、または任意の他の適切なタイプのディスプレイ駆動方式など、任意の適切なタイプのディスプレイ駆動方式を実装し得る。グローバルフラッシュタイプのディスプレイ駆動方式では、ディスプレイの発光素子アレイは、画面のリフレッシュの度に同時に点灯し、それによってリフレッシュレートでグローバルに点滅する。ローリングバンドタイプのディスプレイ駆動方式では、ディスプレイの発光素子の個々のサブセットは、点灯期間中に点灯のローリングバンド内で独立して順次点灯することができる。これらのタイプのディスプレイ駆動方式は、発光素子が個々にアドレス指定可能であることによって可能にされ得る。ディスプレイパネル108上のピクセルアレイおよび発光素子アレイが行および列に配置されている場合(ただし、1個の発光素子対応ごとに1ピクセルであるとは限らない)、発光素子の個々の行および/または個々の列は、順番にアドレス指定され得、および/または発光素子の連続する行の個々のグループおよび/または連続する列の個々のグループは、ローリングバンドタイプのディスプレイ駆動方式のために順番にアドレス指定され得る。
【0019】
一般に、本明細書で使用される場合、「ピクセルを点灯させる」とは、そのピクセルに対応する発光素子を点灯させることを意味する。例えば、LCDは、バックライトの発光素子を点灯させて、ディスプレイの対応するピクセルを点灯させる。さらに、本明細書で使用される場合、「ピクセルのサブセット」は、個々のピクセルまたは複数のピクセル(例えば、ピクセルのグループ)を含み得る。ディスプレイパネル108を駆動するために、HMD102は、とりわけ、ディスプレイコントローラ、ディスプレイ駆動回路、およびディスプレイパネル108を駆動するための類似の電子機器を含み得る。ディスプレイ駆動回路は、ディスプレイパネル108の発光素子アレイに、柔軟な印刷回路上の金属トレースなどの導電路を介して結合され得る。一例では、ディスプレイコントローラは、ディスプレイ駆動回路に通信可能に結合され、信号、情報、および/またはデータをディスプレイ駆動回路に提供するように構成されてもよい。ディスプレイ駆動回路によって受信された信号、情報、および/またはデータは、ディスプレイ駆動回路に特定の方法で発光素子を点灯させ得る。すなわち、ディスプレイコントローラは、どの発光素子を点灯させるか、いつ発光素子を点灯させるか、および発光素子によって発光される光出力のレベルについて決定してもよく、その目的を達成するために、適切な信号、情報、および/またはデータをディスプレイ駆動回路に伝達してもよい。
【0020】
例示された実装形態では、HMD102は、1つ以上のプロセッサ110およびメモリ112(例えば、コンピュータ可読媒体112)を含む。いくつかの実装形態では、プロセッサ110は、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)114、CPUおよびGPU114の両方、マイクロプロセッサ、デジタルシグナルプロセッサ、または当該技術分野で既知の他の処理ユニットもしくは構成要素を含み得る。代替的にまたは追加的に、本明細書に記載されている機能性は、1つ以上のハードウェアロジックコンポーネントによって、少なくとも部分的に実行され得る。例えば、非限定的に、使用され得るハードウェアロジックコンポーネントの例示的なタイプとしては、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップシステム(SOC)、複合プログラマブル論理デバイス(CPLD)などが挙げられる。加えて、プロセッサ110の各々は、プログラムモジュール、プログラムデータ、および/または1つ以上のオペレーティングシステムも記憶し得る、その独自のローカルメモリを保有し得る。
【0021】
メモリ112は、揮発性および不揮発性メモリ、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装された取り外し可能および取り外し不可能な媒体が挙げられ得る。そのようなメモリとしては、限定されるものではないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多目的ディスク(DVD)もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、RAIDストレージシステム、または所望の情報を記憶するために使用され得、コンピューティングデバイスによってアクセスされ得る、任意の他の媒体が挙げられる。メモリ112は、コンピュータ可読記憶媒体(「CRSM」)として実装され得、それは、メモリ112上に記憶された命令を実行するために、プロセッサ110によってアクセス可能である任意の利用可能な物理媒体であってもよい。1つの基本的な実装形態では、CRSMは、ランダムアクセスメモリ(「RAM」)およびフラッシュメモリを含み得る。他の実装形態では、CRSMには、読み出し専用メモリ(「ROM」)、電気的に消去可能なプログラマブル読み出し専用メモリ(「EEPROM」)、または所望の情報を記憶するために使用され得、プロセッサ110によってアクセスされ得る、任意の他の有形媒体が含まれ得るが、これらに限定されない。
【0022】
一般に、HMD102は、本明細書に説明される技術、機能、および/または動作を実装するように構成されるロジック(例えば、ソフトウェア、ハードウェア、および/またはファームウェアなど)を含み得る。コンピュータ可読媒体112は、命令、データストアなどの、様々なモジュールを含むものとして示され、これらのモジュールは、本明細書に説明される技術、機能、および/または動作を実施するためにプロセッサ110上で実行するように構成され得る。コンピュータ可読媒体112に記憶され、かつプロセッサ110上で実行可能なものとして、コンポジタ116の形態の例示的な機能モジュールが示されているが、同じ機能が、代替的に、ハードウェア、ファームウェア内に、またはシステムオンチップ(SOC)および/もしくは他のロジックとして実装されてもよい。さらに、追加のまたは異なる機能モジュールが、コンピュータ可読媒体112に記憶され、かつプロセッサ110上で実行可能であり得る。コンポジタ116は、第2の部分レンダリングワークロード100(2)の一部としてホストコンピュータ106から受信したピクセルデータを修正し、かつ対応する画像がHMD102のディスプレイパネル108上に提示され得るように、修正されたピクセルデータをフレームバッファ(例えば、ステレオフレームバッファ)に出力するように構成されている。
【0023】
HMD102は、頭部追跡システム118および通信インターフェース120をさらに含み得る。頭部追跡システム118は、1つ以上のセンサ(例えば、HMD102上に搭載された赤外線(IR)光センサ)および1つ以上の追跡ビーコン(例えば、HMD102と環境内に配置されたIR光エミッタ)を利用して、ユーザ104の頭部の動きまたは移動(頭部の回転を含む)を追跡し得る。この例示的な頭部追跡システム118は、非限定的であり、他のタイプの頭部追跡システム118(例えば、カメラベース、慣性測定ユニット(IMU)ベースなど)を利用することができる。頭部追跡システム118は、フレームがレンダリングされているときに、ランタイム中に通信インターフェース120を介してホストコンピュータ106に送信することができる頭部追跡データ122を生成するように構成されている。
【0024】
HMD102の通信インターフェース120は、有線および/または無線コンポーネント(例えば、チップ、ポートなど)を含んで、直接的にもまたは無線アクセスポイント(WAP)などの1つ以上の中間デバイスを介して、ホストコンピュータ106との間で有線および/または無線データ送信/受信を容易にし得る。例えば、通信インターフェース120は、ホストコンピュータ106および/または別のデバイスとの無線接続を容易にするためにアンテナに結合された無線ユニットを含み得る。そのような無線ユニットは、Wi-Fi、Bluetooth(登録商標)、無線周波数(RF)などの1つ以上の種々の無線技術を実装し得る。通信インターフェース120は、ホストコンピュータ106および/または別のデバイス(例えば、他の無線ネットワークと通信するプラグインネットワークデバイス)との有線接続を容易にするための1つ以上の物理ポートをさらに含み得る。
【0025】
例示された実装形態では、ホストコンピュータ106は、1つ以上のプロセッサ124およびメモリ126(例えば、コンピュータ可読媒体126)を含む。いくつかの実装形態では、プロセッサ124は、CPU、GPU128、CPUおよびGPU128の両方、マイクロプロセッサ、デジタルシグナルプロセッサ、または当該技術分野で既知の他の処理ユニットもしくはコンポーネントを含み得る。代替的にまたは追加的に、本明細書に記載されている機能性は、1つ以上のハードウェアロジックコンポーネントによって、少なくとも部分的に実行することができる。例えば、非限定的に、使用することができる例示的なタイプのハードウェアロジックコンポーネントとしては、FPGA、ASIC、ASSP、SOC、CPLDなどが挙げられる。加えて、プロセッサ124の各々は、プログラムモジュール、プログラムデータ、および/または1つ以上のオペレーティングシステムも記憶し得る、その独自のローカルメモリを保有し得る。
【0026】
メモリ126は、揮発性および不揮発性メモリ、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装された取り外し可能および取り外し不可能な媒体が挙げられ得る。そのようなメモリは、これらに限定されるものではないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD-ROM、DVD、もしくは他の光メモリ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、RAIDストレージシステム、または所望の情報を記憶するために使用することができ、かつコンピューティングデバイスからアクセスすることができる任意の他の媒体を含む。メモリ126は、CRSMとして実装され得、それは、メモリ126上に記憶された命令を実行するために、プロセッサ124によってアクセス可能である任意の利用可能な物理媒体であってもよい。1つの基本的な実装形態では、CRSMには、RAMおよびフラッシュメモリを含み得る。他の実装形態では、CRSMには、ROM、EEPROM、または所望の情報を記憶するために使用され得、プロセッサ124によってアクセスされ得る、任意の他の有形媒体が含まれ得るが、これらに限定されない。
【0027】
一般に、ホストコンピュータ106は、本明細書に説明される技術、機能、および/または動作を実装するように構成されるロジック(例えば、ソフトウェア、ハードウェア、および/またはファームウェアなど)を含み得る。コンピュータ可読媒体126は、命令、データストアなどの、様々なモジュールを含むものとして示され、これらのモジュールは、本明細書に説明される技術、機能、および/または動作を実施するためにプロセッサ124上で実行するように構成され得る。ビデオゲーム130(1)などのアプリケーション130、およびレンダリングコンポーネント132の形態の例示的な機能モジュールが、コンピュータ可読媒体126に記憶され、プロセッサ124上で実行可能であるように示される。いくつかの実施形態では、レンダリングコンポーネント132の機能は、ハードウェア、ファームウェア、またはシステムオンチップ(SOC)、および/または他のロジックとして、代替的に実装されてもよい。さらに、追加のまたは異なる機能モジュールが、コンピュータ可読媒体126に記憶され、かつプロセッサ124上で実行可能であり得る。
【0028】
ホストコンピュータ106は、有線および/または無線コンポーネント(例えば、チップ、ポートなど)を含んで、直接的に、またはWAPなどの1つ以上の中間デバイスを介して、HMD102との有線および/または無線データ送受信を容易にする通信インターフェース134をさらに含み得る。例えば、通信インターフェース134は、HMD102および/または別のデバイスとの無線接続を容易にするためにアンテナに結合された無線ユニットを含み得る。そのような無線ユニットは、Wi-Fi、Bluetooth(登録商標)、RFなどの1つ以上の種々の無線技術を実装し得る。通信インターフェース134は、HMD102および/または別のデバイス(例えば、他の無線ネットワークと通信するプラグインネットワークデバイス)との有線接続を容易にするための1つ以上の物理ポートをさらに含み得る。
【0029】
HMD102は、VRゲームシステムで使用するためなど、VRシステムで使用するためのVRヘッドセットを表し得、その場合、ビデオゲーム130(1)は、VRビデオゲーム130(1)を表し得ることを理解されたい。しかしながら、HMD102は、追加的に、または代替的に、ARアプリケーションで使用するためのARヘッドセット、またはゲーム関連ではない(例えば、産業アプリケーション)VRおよび/またはARアプリケーションで使用可能なヘッドセットとして実装され得る。ARでは、ユーザ104は、実世界環境上に重ね合わされた仮想オブジェクトを見るが、VRでは、ユーザ104は、典型的には実世界環境を見ることはなく、HMD102のディスプレイパネル108および光学系(例えば、レンズ)を介して知覚されるような仮想環境に完全に没入する。一部のVRシステムでは、ユーザ104の現実世界の環境のパススルー画像は、仮想画像と併せて表示されて、VRシステム内に拡張VR環境を作成し得、それによって、VR環境は、現実世界の画像で拡張される(例えば、仮想世界上にオーバーレイされる)ことを理解されたい。本明細書で説明する例は、主にVRベースのHMD102に関係するが、HMD102は、VRアプリケーションでの実装形態に限定されないことを理解されたい。
【0030】
一般に、ホストコンピュータ106上で実行するアプリケーション130は、グラフィックスベースのアプリケーション130(例えば、ビデオゲーム130(1))であり得る。アプリケーション130は、一連のフレームに関するピクセルデータを生成するように構成され、ピクセルデータは、最終的に、HMD102のディスプレイパネル108上に対応する画像を提示するために使用される。ランタイム中、所与のフレームについて、レンダリングコンポーネント132は、フレームのための予測「点灯時間」を決定し得る。フレームのためのこの予測「点灯時間」は、HMD102のディスプレイパネル108の発光素子がフレームのために点灯する時間を表す。この予測は、とりわけ、ホストコンピュータ106とHMD102との間の無線通信リンクの固有のレイテンシ、ならびにフレームバッファからのピクセルの予測されるレンダリング時間および/または既知のスキャンアウト時間を考慮することができる。言い換えれば、無線通信リンクについての予測は、有線通信リンクについての予測とは異なり得る。例えば、レンダリングコンポーネント132は、有線通信リンクの場合、将来の第1の時間量である点灯時間を予測し得る(例えば、将来の約22ミリ秒)が、一方で、レンダリングコンポーネント132は、無線通信リンクの場合、無線接続に対して有線接続を介してデータを転送するときのレイテンシの固有の違いに起因して、将来の第2の、より大きな時間量である点灯時間を予測し得る(例えば、将来の約44ミリ秒)。
【0031】
ホストコンピュータ106はまた、HMD102から、HMD102の頭部追跡システム118によって生成された頭部追跡データ122(例えば、第1の頭部追跡データ122)を受信し得る。この頭部追跡データ122は、ターゲットフレームレートおよび/またはHMD102のリフレッシュレートに対応する周波数などの任意の適切な周波数、または1000Hz(または1ミリ秒ごとの1つのセンサの読み取り)などの異なる(例えば、より速い)周波数で生成および/または送信され得る。レンダリングコンポーネント132は、頭部追跡データ122に少なくとも部分的に基づいて、HMD102が予測点灯時間に存在する予測姿勢を決定するように構成されている。次いで、レンダリングコンポーネント132は、予測姿勢に基づいてフレームをレンダリングする(例えば、フレームについてピクセルデータを生成する)ために、予測姿勢を示す姿勢データを実行アプリケーション130に提供し得、レンダリングコンポーネント132は、アプリケーション130から、フレームと関連付けられたピクセルデータ136を取得し得る。このピクセルデータ136は、HMD102のディスプレイパネル108のピクセルアレイに対応し得る。例えば、姿勢データに基づいてアプリケーション130によって出力されるピクセルデータ136は、HMD102のディスプレイパネル108上のピクセルアレイについてピクセルごとの値(例えば、色値)の二次元アレイを含み得る。例示的な例では、ディスプレイパネル108のステレオ対は、HMD102の両方のディスプレイパネル上の2160×1200ピクセル(例えば、ディスプレイパネル当たり1080×1200ピクセル)のアレイを含み得る。この例示的な実施例では、ピクセルデータ136は、2160×1200ピクセル値(または2,592,000ピクセル値)を含み得る。いくつかの実施形態では、ピクセルデータ136は、色およびアルファ値の単一のセットによって表される各ピクセルのデータを含み得る(例えば、赤チャネルの1つの色値、緑チャネルの1つの色値、青チャネルの1つの色値、および1つ以上のアルファチャネルの1つ以上の値)。
【0032】
ホストコンピュータ106のロジックはまた、ピクセルデータ136と共に(または、それに加え、)余分なデータ138を生成し得、この余分なデータ138の少なくとも一部は、第2の部分レンダリングワークロード100(2)におけるHMD102を支援するためにHMD102に送信され得る。例えば、余分なデータ138は、ピクセルデータ136と共にパッケージ化され、HMD102に送信され得、余分なデータ138の少なくとも一部は、HMD102のロジックによって使用されて、HMD102のディスプレイパネル108上のフレームに対応する画像を提示する目的でピクセルデータ136を修正することができる。余分なデータ138は、限定されないが、レンダリングコンポーネント132によって生成された姿勢データ、深度データ、動きベクトルデータ、視差オクルージョンデータ、および/または余分なピクセルデータを含み得る。例えば、フレームをレンダリングするために姿勢データを実行アプリケーション130に提供することにおいて、レンダリングコンポーネント132は、さらに、アプリケーション130に、フレームおよび/または余分なピクセルデータ(本明細書で「境界外ピクセルデータ」または「追加ピクセルデータ」と呼ばれることがある)について深度データ(例えば、Zバッファデータ)を生成するように指示し得、それに応答して、レンダリングコンポーネント132は、アプリケーション130から、フレームに関連付けられた深度データおよび/または余分なピクセルデータを取得し得る。追加的または代替的に、レンダリングコンポーネント132は、HMD102から受信された頭部追跡データ122に少なくとも部分的に基づいて、動きベクトルデータを生成し得る。例えば、動きベクトルデータは、2つの異なる時点で生成された頭部追跡データの比較(例えば、数ミリ秒で区切られた頭部追跡データの比較)に基づいて生成され得る。HMD102(例えば、コンポジタ116)のロジックは、ホストコンピュータ106とHMD102との間の無線接続の固有のレイテンシを説明したレンダリングコンポーネント132によって事前に行われた姿勢予測の誤差を訂正するために、ピクセルデータ136を修正する目的のために、余分なデータ138の一部または全部を利用することができる。例えば、コンポジタ116は、ホストコンピュータ106から受信された余分なデータ138に少なくとも部分的に基づいて、再投影調整を適用し得る。第2の部分レンダリングワークロード100(2)の一部としてコンポジタ116によって行われる他の調整は、限定されないが、幾何学的歪み、色収差、再投影などのための調整を含み得る。余分なデータ138が第2の部分レンダリングワークロード100(2)の一部として利用することができる方法は、以下の図を参照してより詳細に以下で説明される。
【0033】
図2は、本明細書に開示される実施形態による、個々のフレームのそれぞれのレンダリングワークロードを示す2つの例示的なタイムライン200(1)および200(2)を示す図であり、それぞれのレンダリングワークロードは、ホストコンピュータ106とHMD102との間で分割されている。図2の例は、ホストコンピュータ106と関連付けられた第1のタイムライン200(1)に関して、フレーム「F」、フレーム「F+1」、およびフレーム「F+2」の3つの例示的なフレームを示している。この第1のタイムライン200(1)は、ホストコンピュータ106のGPU128を使用して、ホストコンピュータ106上のアプリケーション130を実行することによって、フレームをどのように直列にレンダリングすることができるかを示す。ここで、アプリケーション130は、フレームFを、第1の部分レンダリングワークロード100(1)(a)の一部としてレンダリングし、次いで、フレームF+1を、第2の部分レンダリングワークロード100(1)(b)の一部としてレンダリングし、次いで、フレームF+2を、第3の部分レンダリングワークロード100(1)(c)の一部として、第1のタイムライン200(1)上で、左から右に、順番に、レンダリングする。第1のタイムライン200(1)上の楕円は、アプリケーション130が実行を続けるにつれて、任意の数のフレームに対してこれが継続され得ることを示す。第1のタイムライン200(1)はまた、水平タイムライン200(1)に直交するように配向された垂直線によって、アプリケーション130がターゲットフレームレート(例えば、垂直線が約11.11ミリ秒で分離される90Hzのフレームレート)をターゲットにしていることを暗示する。図2の例では、ホストコンピュータ106上で実行されるアプリケーション130は、たまたま3つの例示的な一連のフレームにわたってターゲットフレームレートに到達しているが、アプリケーション130は、場合によっては(例えば、多数の移動オブジェクトまたは複雑なテクスチャを有するシーンの場合)、所与のフレーム202をレンダリングするために割り当てられた時間よりも長く時間をかけてもよいため、常にそうではない場合がある。このシナリオは、アプリケーション130がターゲットフレームレートに到達することができなかったと呼ぶこともある。
【0034】
HMD102に関連付けられた図2の第2のタイムライン200(2)は、個々のフレームについてのHMD102のコンポジタ116の部分レンダリングワークロード100(2)(a)、100(2)(b)、および100(2)(c)を示す。所与のフレームについてのHMD102のコンポジタ116の個々のレンダリングワークロード100(2)は、HMD102のディスプレイパネル108上に最終画像が提示される前に、ホストコンピュータ106上で実行するアプリケーション130によって生成されるピクセルデータ136に適用される調整を表し得る。そのような調整は、HMD102上に最終画像をレンダリングする前に、ホストコンピュータ106から受信されたピクセルデータ136に適用される、幾何学的歪み、色収差、再投影などのための調整を含み得るが、これらに限定されない。これらの調整のうちの少なくともいくつかは、本明細書に記載されるように、姿勢データ、深度データ、余分なピクセルデータ、視差オクルージョンデータ、および/または動きベクトルデータなどの、ホストコンピュータ106から受信された余分なデータ138を利用し得る。したがって、図2に示されるフレームは、ビデオゲームアプリケーション130(1)または任意の他のタイプのグラフィックスベースアプリケーションを表し得るアプリケーション130から出力されるという意味で「実際の」フレームを表すことを意味する。対照的に、アプリケーション130が所与のフレームのターゲットフレームレートに到達することができなかった場合、またはフレームレートがHMD102のディスプレイパネル108のリフレッシュレートよりも低いレートに抑制された場合、HMD102のコンポジタ116は、先行フレームについて先行受信されたピクセルデータ136を使用して、(例えば、再投影を使用して)先行フレームの姿勢予測およびHMD102によって行われた更新された姿勢の予測に基づいて「ファントム」フレームを生成し得る。いずれにせよ、部分レンダリングワークロード100(2)の結果は、フレームバッファ(例えば、ステレオフレームバッファ)に出力され得る修正されたピクセルデータの生成である。「実際の」フレームと「ファントム」フレームとの間のこの区別は、実際のフレームがHMD102上で調整されないことを暗示するものではなく、この意味で、HMD側で生成されたフレームはすべて、効果的に合成される(すなわち、ホストコンピュータ106上で実行されるアプリケーション130によって出力される元のフレームと同じではない)。
【0035】
図2の第2のタイムライン200(2)はまた、各フレームのスキャンアウト時間202(a)、202(b)、および202(c)、ならびに各フレームの点灯時間204(a)、204(b)、および204(c)を示す。所与のフレームのためのスキャンアウト時間202の間に、(修正されたピクセルデータの)ピクセル値のサブセットは、ディスプレイポート(例えば、高解像度マルチメディアインターフェース(HDMI(登録商標)))を介してディスプレイパネル108にスキャンアウトされ、所与のフレームのための点灯時間204の間に、ディスプレイパネル108の発光素子は、ディスプレイパネル108のピクセルを点灯させるために点灯される。図2は、LCDパネルと共に使用されて、HMD102のリフレッシュレートでディスプレイパネル108の発光素子から光を同時に放出し得る、グローバルフラッシュタイプのディスプレイ駆動方式の例を示している。例示的な例では、HMD102が90Hzのリフレッシュレートで動作している場合、各フレームの点灯時間204は、およそ11.11ミリ秒で分離され得る。
【0036】
図2は、ホストコンピュータ106およびHMD102のそれぞれのレンダリングサイクルが同期されているように見える(それらは同期することができる)ことを描写しているが、本明細書に記載の技法およびシステムは、2つのデバイス間のフレームの同期を必要としないことを理解されたい。一般に、HMD102のコンポジタ116は、データ(例えば、ピクセルデータ136および余分なデータ138)がホストコンピュータ106から受信されるとすぐに、および/またはHMD102が、ホストコンピュータ106のアプリケーション130がフレームを見逃した可能性があること、またはパケットがトランジット中にドロップされた可能性があることなどを決定するとすぐに、所与のフレームのそのレンダリングワークロード100(2)を開始し得る。無線通信リンクの様々な条件、それぞれのデバイス上の処理負荷、および/または他の要因により、ホストコンピュータ106およびHMD102のそれぞれのレンダリングサイクルは、時には、互いに対して同期ずれ/非同期化され得る。したがって、ホストコンピュータ106およびHMD102は、所与のフレームのレンダリングワークロードを、それぞれのデバイス上で実行される部分ワークロードに分割することによって、協働的な方法で協働するように構成されているが、デバイスがワークロードのそれぞれの部分を実行するために互いに独立して動作し得ることを理解することができる。
【0037】
本明細書に記載のプロセスは、ロジックフローグラフ内のブロックの集合として例解され、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせ(つまり、ロジック)に実装することができる一連の動作を表す。ソフトウェアの文脈では、ブロックは、コンピュータ実行可能命令を表し、コンピュータ実行可能命令は、1つ以上のプロセッサによって実行されると、列挙された動作を実行する。一般に、コンピュータ実行可能命令は、特定の機能を実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が記載される順序は、限定として解釈されることを意図するものではなく、任意のいくつかの記載されたブロックは、プロセスを実装するために任意の順序でおよび/または並行して組み合わされ得る。
【0038】
図3は、本明細書に開示される実施形態による、HMD102とホストコンピュータ106との間でフレームのレンダリングワークロード100を分割することによってフレームをレンダリングするための例示的なプロセス300のフロー図を示している。考察目的で、前図を参照してプロセス300を説明する。
【0039】
302において、HMD102は、HMD102に通信可能に結合されたホストコンピュータ106に、HMD102の頭部追跡システム118によって生成された第1の頭部追跡データ122を送信し得る。ホストコンピュータ106およびHMD102が通信可能に結合される方法は、実装形態によって異なり得る。ホストコンピュータ106がHMD102に無線で結合される実装形態では、第1の頭部追跡データ122は、HMD102からホストコンピュータ106に(例えば、WiFi、Bluetooth(登録商標)、またはプロプライエタリプロトコルを含む任意の適切な無線通信プロトコルを使用して)無線で送信され得る。ホストコンピュータ106が有線接続(例えば、データケーブル)を介してHMD102に結合される実装形態では、第1の頭部追跡データ122は、HMD102からデータケーブルなどの有線接続を介してホストコンピュータ106に送信され得る。さらに、ホストコンピュータ106がHMD102に関して遠隔地理的位置に位置する場合、第1の頭部追跡データ122は、ブロック302において、HMD102からインターネットなどの広域ネットワークを介してホストコンピュータ106に送信され得る。
【0040】
304において、ホストコンピュータ106は、HMD102から、第1の頭部追跡データ122を受信し得る。ブロック302に関して言及されたように、第1の頭部追跡データ122は、実装形態に応じて、無線で、有線接続を介して、広域ネットワークを介してなど、様々な方法で受信され得る。ホストコンピュータ106が第1の頭部追跡データ122を受信するこの時点で、ホストコンピュータ106は、HMD102上に表示されるビジュアルビデオゲームコンテンツを作成する目的で、一連のフレームの第1のフレームをレンダリングすることを任務とするビデオゲーム130(1)などのアプリケーション130を実行し得る。
【0041】
306において、ホストコンピュータ106(例えば、レンダリングコンポーネント132)のロジックは、HMD102のディスプレイパネル108の発光素子が第1のフレームのために点灯する時間を表す予測点灯時間を決定し得る。すなわち、ホストコンピュータ106のロジックは、第1のフレームのために提示される画像に関連付けられた光子が実際にユーザの104の目に到達するであろう時間を決定し得る。レンダリングコンポーネント132は、アプリケーション130がピクセルデータ136を生成するのに要する時間、ピクセルデータ136がホストコンピュータ106からHMD102に送信されるのに要する時間、および対応する画像がHMD102のディスプレイパネル108上に最終的に提示される前に、ピクセルデータ136がHMD102上で修正およびスキャンアウトされるのに要する時間、を考慮しなければならないため、この予測点灯時間は、将来(例えば、将来の約44ミリ秒)の時間である。
【0042】
308において、ホストコンピュータ106(例えば、レンダリングコンポーネント132)のロジックは、ブロック304において受信された第1の頭部追跡データ122に少なくとも部分的に基づいて、HMD102がブロック306において決定された予測点灯時間にとるであろう、予測姿勢を決定し得る。例えば、HMD102の頭部追跡システム118は、HMD102の最大6自由度(例えば、3D位置、ロール、ピッチ、およびヨー)を追跡するように構成され得、これは、HMD102の予測姿勢(例えば、HMD102の将来の姿勢に起因する予測頭部移動を考慮する)を決定するために、頭部追跡データ122としてホストコンピュータ106に送信され得る。
【0043】
310において、ホストコンピュータ106(例えば、レンダリングコンポーネント132)のロジックは、第1のフレームをレンダリングする目的でホストコンピュータ106上で実行するアプリケーション130に、ブロック308において決定された予測姿勢を示す姿勢データを提供し得る。例えば、アプリケーション130は、レンダリングコンポーネント132から姿勢データを受信するための関数を呼び出し得、レンダリングコンポーネント132は、アプリケーション106に、シーンのレンダリングに使用される仮想カメラ姿勢に対応する姿勢データにしたがって、アプリケーション130が第1のフレームをレンダリングすることができるように、要求された姿勢データ(第1のフレームのためのターゲット点灯時間に予測され、HMD102から受信される頭部追跡データ122に少なくとも部分的に基づいて予測される)を提供し得る。いくつかの実施形態では、レンダリングコンポーネント132は、フレームのためのピクセルデータ136だけでなく、深度データおよび/または余分なピクセルデータなどの余分なデータを生成するようにアプリケーション130に指示し得る。
【0044】
312において、ホストコンピュータ106(例えば、レンダリングコンポーネント132)のロジックは、アプリケーション130から、第1のフレームに関連付けられたデータ(例えば、ピクセルデータ136)を取得(または受信)し得る。ピクセルデータ136は、本明細書で説明されるように、HMD102のディスプレイパネル108のピクセルアレイ内の個々のピクセルのためのピクセル値を含み得る。述べたように、レンダリングコンポーネント132が、ピクセルデータ136に加え、余分なデータ138を生成するようにアプリケーション130に要求した実施形態では、レンダリングコンポーネント132は、ブロック312において、ディスプレイパネル108のピクセルアレイの境界の外側の余分なピクセル値を含む深度データ(例えば、Zバッファデータ)および/または余分なピクセルデータなどの余分なデータ138を取得(または受信)し得る。例えば、ディスプレイパネル108が2160×1200ピクセルアレイを有する場合、ピクセルデータ136は、ピクセルの2160×1200アレイ内のピクセル値に対応し得、一方で、余分なピクセルデータは、2160×1200アレイの境界の外側にあるピクセルに対応し得る。したがって、ピクセルデータ136および余分なピクセルデータは、例えば、2400×1400ピクセルのより大きなアレイなどのより多くの数のピクセル値を構成し得る。
【0045】
314において、ホストコンピュータ106(例えば、レンダリングコンポーネント132)のロジックは、第1のフレームと関連付けられた画像をレンダリングする目的でHMD102に送信するデータを圧縮および/またはシリアライズし得る。このデータは、余分なデータ138がアプリケーション130によって、レンダリングコンポーネント132によって、および/またはホストコンピュータ106の任意の他のコンポーネントによって生成されたかどうかにかかわらず、生成されたピクセルデータ136および任意の余分なデータ138を含み得る。ブロック314における圧縮は、事後に歪んだ画像とは対照的に、事前に歪んだ画像に対して最適化され得る。例えば、レンダリングワークロードの全体がホストコンピュータ上で実行されるシステムでは、ヘッドセットに送信されるピクセルデータの任意の圧縮は、ステレオ圧縮アーチファクトを軽減する圧縮アルゴリズムを利用し得る。プロセス300において、アプリケーション130によって生成されたピクセルデータ136は、「事前に歪んでおり」、すなわち、再投影調整、幾何学的歪み調整、色収差調整などの調整が圧縮後に適用されることになるため、ブロック314において利用される圧縮アルゴリズムは、ステレオ圧縮アーチファクトを考慮する必要がない場合がある。いくつかの実施形態では、アプリケーション130によって出力されるピクセルデータ136は、前景ピクセルおよび背景ピクセル(および潜在的に中間ピクセル層)に分類されてもよく、異なる圧縮アルゴリズムまたはスキームが、異なるピクセル層に使用されてもよい。すなわち、前景ピクセルは、背景ピクセルが圧縮されるのとは異なる方法で(例えば、異なる圧縮アルゴリズムを使用して)圧縮することができる。
【0046】
316において、ホストコンピュータ106は、ピクセルデータ136および余分なデータ138を含むデータをHMD102に送信し得る。ブロック316において送信された余分なデータ138は、これらに限定されないが、第1の頭部追跡データ122に基づいて生成され、かつアプリケーション130によって使用されて、第1のフレームのためのピクセルデータ136を生成する姿勢データ138(1)、アプリケーション130によって生成された深度データ138(2)、アプリケーション130によって生成された余分なピクセルデータ138(3)、頭部追跡データ122に基づいて、および/またはレンダリングされているシーン内の仮想オブジェクトの移動に基づいて、レンダリングコンポーネント132によって生成された動きベクトルデータ138(4)、視差オクルージョンデータ138(5)、および/またはキューブマップデータ(例えば、HMD102が、任意のデータを有しない暗いピクセルを提示することに加えて、他のオプションを有するように、迅速な大規模な頭部移動のために)を含み得る。繰り返すが、ピクセルデータ136および余分なデータ138は、実装形態に応じて、無線で、有線接続を介して、広域ネットワークを介してなど、様々な方法でHMD102に送信され得る。
【0047】
318において、HMD102は、ホストコンピュータ106から、第1のフレームと関連付けられたピクセルデータ136、およびピクセルデータ136に加え、余分なデータ138を受信し得る。繰り返すが、ピクセルデータ136および余分なデータ138は、実装形態に応じて、無線で、有線接続を介して、広域ネットワークなどを介して、様々な方法でホストコンピュータ106から受信され得る。さらに、圧縮され、かつシリアライズされたデータがブロック318においてホストコンピュータ106から受信されると、ブロック318においてデータは、シリアライズ解除され、解凍され得る。
【0048】
320において、HMD102のロジック(例えば、コンポジタ116)は、HMD102の頭部追跡システム118によって生成された第2の頭部追跡データ122に少なくとも部分的に基づいて、HMD102が第1のフレームのための点灯時間にとるであろう、更新された姿勢を決定し得、これは、HMD102のディスプレイパネル108の発光素子が第1のフレームのために点灯する時間を表す。ブロック320における決定は、第1のフレームのための点灯時間に時間的に近いため、ブロック320における姿勢予測は、点灯時間のさらに前にあったブロック308において決定された姿勢予測よりも正確である(例えば、誤差が少ない)。いくつかの実施形態では、ブロック320におけるHMD102の更新された姿勢の決定は、ホストコンピュータ106から受信された、またはHMD102上でローカルに生成された動きベクトルデータ138(4)に少なくとも部分的に基づいてもよい。例えば、頭部追跡データ122から生成された動きベクトルデータ138(4)は、ユーザ104の予測頭部移動を示し得、HMD102のコンポジタ116は、とりわけ、動きベクトルデータ138(4)を使用して、HMD102の更新された姿勢の予測を、改善された精度で行い得る。
【0049】
322において、HMD102(例えば、コンポジタ116)のロジックは、ホストコンピュータ106から受信されたピクセルデータ136を修正して、修正されたピクセルデータを取得し得る。ブロック322のサブブロックによって示されるように、ピクセルデータ136のこの修正は、様々なサブ操作を伴い得る。
【0050】
サブブロック324において、HMD102のロジック(例えば、コンポジタ116)は、ピクセルデータ136に再投影調整を適用して、第1のフレームに関連付けられた修正されたピクセルデータを取得し得る。サブブロック324において適用される再投影調整は、ホストコンピュータ106から受信された余分なデータ138に少なくとも部分的に基づいてもよい。例えば、ブロック308において決定された(および姿勢データ138(1)で示された)元の予測姿勢と、ブロック320において決定された更新された姿勢との比較は、比較姿勢の間のデルタ(または差異)を明らかにし得、再投影調整は、このデルタを補償するための回転計算を含み得る(例えば、2つの姿勢決定の間のデルタに応じて、ピクセルデータ136を一方向にまたは別の方向にシフトおよび/または回転させることによって)。
【0051】
いくつかの実施形態では、ホストコンピュータ106から受信された余分なデータ138は、第1のフレームに関連付けられた深度データ138(2)を含み、サブブロック324において適用された再投影調整は、深度データ138(2)に少なくとも部分的に基づいてもよい。例えば、深度バッファ(またはZバッファ)からなどの深度データ138(2)は、シーン内の閉塞されたオブジェクトを示し得る。したがって、深度データ138(2)は、とりわけ、シーン内のオブジェクトの視差を調整するために使用され得る(例えば、世界空間で遠く離れている船は、クローズアップオブジェクトが同じ頭部の移動で動くほど頭部の移動で動かない場合がある)。シーン内の仮想オブジェクトに対応するピクセルの深度を知ることは、サブブロック324におけるHMD102への再投影中にそのような視差を調整する方法を知ることに役立つ。HMD側で深度データ138(2)を使用する他の方法は、以下でより詳細に説明される。いくつかの実施形態では、ホストコンピュータ106から受信された余分なデータ138は、第1のフレームに関連付けられた余分なデータ138(3)を含み、サブブロック324において適用された再投影調整は、余分なデータ138(3)に少なくとも部分的に基づいてもよい。例えば、急速/大規模な頭部の移動が発生している場合、HMD102によって決定されるように、ピクセルデータ136のピクセル値の少なくとも一部は、余分なピクセルデータ138(3)の余分なピクセル値で置き換えられて、ユーザ104の現在の頭部の移動に対応するシーンの一部分をレンダリングし得る。いくつかの実施形態では、ホストコンピュータ106から受信された余分なデータ138は、第1のフレームに関連付けられた動きベクトルデータ138(4)を含み、サブブロック324において適用される再投影調整は、動きベクトルデータ138(4)に少なくとも部分的に基づいてもよい。
【0052】
サブブロック326において、HMD102(例えば、コンポジタ116)のロジックは、ピクセルデータ136に幾何学的歪み調整を適用して、ブロック322において第1のフレームと関連付けられた修正されたピクセルデータを取得し得る。幾何学的歪み調整は、HMD102のニアアイ光学サブシステム(例えば、レンズおよび他の光学系)の歪みを補償し得る。同様の理由で、サブブロック328において、HMD102(例えば、コンポジタ116)のロジックは、ピクセルデータ136に色収差調整を適用して、ブロック322において第1のフレームに関連付けられた修正されたピクセルデータを取得し得る。
【0053】
サブブロック330において、ピクセルデータ136は、ピクセルデータ136によって表されるシーン上に1つ以上の仮想手部を重ねることによって修正されて、ブロック322において第1のフレームに関連付けられた修正されたピクセルデータを取得し得る。例えば、HMD102は、HMD102とほぼ同様に、3D空間における移動および位置が追跡される1つ以上のハンドヘルドコントローラに通信可能に結合され得、HMD102は、ハンドヘルドコントローラから(例えば、ハンドヘルドコントローラからHMD102への直接無線データ伝送を介して)手部追跡データを受信し得る。手部追跡データは、HMD102(例えば、コンポジタ116)のロジックによって処理されて、シーン上の仮想手部をレンダリングすることができ、仮想手部は、シーンのコンテンツ上にオーバーレイされる。
【0054】
サブブロック332において、HMD102のロジック(例えば、コンポジタ116)は、修正されたピクセルデータをフレームバッファに出力し得る。繰り返すが、一対のディスプレイパネル108を有するHMD102に関して、この修正されたピクセルデータは、一対のディスプレイパネル108上に表示される一対の画像を表すフレームに対応し得、それに応じて、ステレオフレームバッファに出力され得る。
【0055】
334において、HMD102のロジックは、ブロック332においてフレームバッファに出力された修正されたピクセルデータに基づいて、第1の画像をHMD102のディスプレイパネル108上に提示させ得る。これは、修正されたピクセルデータをHMD102のディスプレイパネル108にスキャンアウトし、ディスプレイパネル108の発光素子を点灯させて、ディスプレイパネル108上のピクセルを点灯させることを含み得る。
【0056】
図4は、本明細書に開示される実施形態による、ホストコンピュータ106によって生成された動きベクトルデータ138(4)に基づいて、HMD102に再投影調整を適用するための例示的なプロセス400のフロー図を示している。考察目的で、前図を参照してプロセス400を説明する。
【0057】
402において、HMD102は、頭部追跡データ122をホストコンピュータ106に送信し得る。この頭部追跡データ122は、アプリケーション130のターゲットフレームレートに対応する周波数および/またはHMD102のリフレッシュレートなどの任意の適切な周波数、または異なる(例えば、より速い)周波数で生成および/または送信され得、頭部追跡データ122は、HMD102を装着しているユーザ104の頭部の移動を示し得る。したがって、ホストコンピュータ106は、ブロック402において、時間、tで生成された第1の頭部追跡データ122、時間、tで生成された第2の頭部追跡データ122などの、経時的な頭部追跡データ122の複数のインスタンスを受信し得る。さらに、ホストコンピュータ106は、いつでも利用可能な頭部追跡データ122の複数のインスタンスを有するように、経時的に受信した頭部追跡データ122の履歴を維持し得る。ホストコンピュータ106は、少なくともいくつかの過去の頭部追跡データ122を保持しながら、メモリリソースを節約するために、所定の年数よりも古い頭部追跡データ122を破棄することができる。
【0058】
404において、ホストコンピュータ106(例えば、レンダリングコンポーネント132)のロジックは、HMD102から受信された頭部追跡データ122に少なくとも部分的に基づいて、動きベクトルデータ138(4)を生成し得る。例えば、ホストコンピュータ106は、第1の頭部追跡データ122を受信し得、第1の頭部追跡データ122を受信する前に第2の頭部追跡データ122を受信し得、これらの頭部追跡データ122の組の間で比較を行い、動きベクトルデータ138(4)を生成することができる。いくつかの実施形態では、動きベクトルデータ138(4)は、追加的に、または代替的に、アプリケーションによってレンダリングされた複数のフレームに関連付けられたピクセルデータから生成することができる。例えば、アプリケーション130によって以前にレンダリングされた一対のフレームは、ホストコンピュータ106のGPU128への入力として提供され得、GPU128のデコーダが、例えば、一対のフレームにおける類似性(例えば、類似の色値、類似の輝度値など)を探し、一対のフレームにおける類似性の対応する位置に動きベクトルをマッピングすることなどによって、入力フレームに少なくとも部分的に基づいて動きベクトルデータ138(4)を生成し得る。いくつかの実施形態では、ホストコンピュータ106のロジックは、シーン内の仮想オブジェクトの動きではなく、頭部の移動に起因する動きで残されるように、シーン内の仮想オブジェクトの移動に関する動きをフィルタリングするように構成され得る。
【0059】
406において、HMD102は、ホストコンピュータ106から動きベクトルデータ138(4)を受信し得る。例えば、この動きベクトルデータ138(4)は、画像をHMD102上に提示する所与のフレームについてのピクセルデータ136と共に(例えば、それと共にパッケージされて)余分なデータ138として送信され得る。したがって、ブロック406において、またはわずかに異なる(例えば、より早いまたはより遅い)時間で、HMD102は、所与のフレームについてのピクセルデータ136を受信し得る。
【0060】
408において、HMD102(例えば、コンポジタ116)のロジックは、ブロック406において受信された動きベクトルデータ138(4)に少なくとも部分的に基づいて、ピクセルデータ136に再投影調整を適用して、所与のフレームに関連付けられた修正されたピクセルデータ410を取得し得る。動きベクトルデータ138(4)は、本明細書で説明されるように、元の予測姿勢およびHMD102の更新された姿勢の決定を示す姿勢データに加えて考慮され得る。したがって、動きベクトルデータ138(4)は、HMD102の姿勢を予測し、それによって再投影調整(例えば、ピクセルデータ136を一方向にまたは別の方向にシフトおよび/または回転するための回転計算)を適用する目的で、姿勢データ138(1)に補完的であり得る。代替的に、動きベクトルデータ138(4)は、例えば、動きベクトルデータ138(4)を、レンダリングするシーンの画面空間に対応する動きベクトルフィールドに変換し、それらのピクセル値に対応する動きベクトルの大きさおよび方向に基づいてピクセル値をシフトすることによって、ピクセルデータ136に直接適用され得る。
【0061】
図5は、本明細書に開示される実施形態による、ホストコンピュータ106上で実行しているアプリケーション130によって生成された余分なピクセルデータ138(3)に基づいて、再投影調整を適用するための例示的なプロセス500のフロー図を示している。考察目的で、前図を参照してプロセス500を説明する。
【0062】
502において、HMD102は、頭部追跡データ122をホストコンピュータ106に送信し得る。この頭部追跡データ122は、アプリケーション130のターゲットフレームレートに対応する周波数および/またはHMD102のリフレッシュレートなどの任意の適切な周波数、または異なる(例えば、より速い)周波数で生成および/または送信され得、頭部追跡データ122は、HMD102を装着しているユーザ104の頭部の移動を示し得る。
【0063】
504において、ホストコンピュータ106(例えば、レンダリングコンポーネント132)のロジックは、ビデオゲーム130(1)などのホストコンピュータ106上で実行されるアプリケーション130に、HMD102のディスプレイパネル108上のピクセルアレイに対応するピクセルデータ136に加え、余分なピクセルデータ138(3)を生成するように指示し得る。例えば、ディスプレイパネル108が2160×1200ピクセルアレイを有する場合、ピクセルデータ136は、ピクセルの2160×1200アレイ内のピクセル値に対応し得、一方で、余分なピクセルデータ138(3)は、2160×1200アレイの境界の外側にあるピクセルに対応し得る。したがって、ブロック504において要求されるピクセルデータ136および余分なピクセルデータ138(3)は、例えば、2400×1400ピクセルのより大きなアレイなどのより多くの数のピクセル値を構成し得る。ブロック504において余分なピクセルデータ138(3)を生成するようにアプリケーション130に指示する決定は、ブロック504のサブブロックによって示されるように、所与のフレームのための動的決定であり得る。
【0064】
サブブロック506において、ホストコンピュータ106(例えば、レンダリングコンポーネント132)のロジックは、閾値移動量を超えるHMD102の移動量を示す、ブロック502において受信された頭部追跡データ122に少なくとも部分的に基づいて、(例えば、アプリケーション130に生成するように指示することによって)余分なピクセルデータ138(3)を生成することを決定し得る。例えば、頭部追跡データ122の2つのインスタンスは、ある期間(例えば、数ミリ秒の期間)にわたるHMD102の移動量を決定するために比較され得、その移動量が閾値移動量よりも大きい場合、レンダリングコンポーネント132は、所与のフレームについて余分なピクセルデータ138(3)を生成すると決定し得る。一方、HMD102の移動量が閾値移動量以下である場合、レンダリングコンポーネント132は、所与のフレームについて余分なピクセルデータ138(3)を生成しないことを決定し得る。これは、図5のサブブロック506の右側に示されており、レンダリングコンポーネント132は、アプリケーション130に、ピクセルデータ136のみをレンダリングするように(および、HMDの移動量が閾値移動量以下である場合、任意の余分なピクセルデータ138(3)をレンダリングしないように、かつHMDの移動量が閾値移動量を上回る場合、アプリケーション130に、ピクセルデータ136および余分なピクセルデータ138(3)をレンダリングするように指示するように構成されている。これは、現在頭部の動きがほとんどない場合、余分なピクセルデータ138(3)が使用される可能性が低いと決定することによってリソースを節約することを可能にし、現在大量のおよび/または急速な頭部の移動があるインスタンスのために余分なピクセルデータ138(3)の生成を確保することを可能にする。
【0065】
サブブロック508において、ホストコンピュータ106(例えば、レンダリングコンポーネント132)のロジックは、ブロック502において受信された頭部追跡データ122によって示されるHMD102の移動量に少なくとも部分的に基づいて、余分なピクセルデータ138(3)内のある数の余分なピクセル値をレンダリングすることを(例えば、アプリケーション130にレンダリングするように指示することによって)決定し得る。これは、図5のサブブロック508の右側に図示されており、レンダリングコンポーネント132は、HMDの移動量が第1のより少ない移動量である場合に、アプリケーション130に、余分なピクセルデータ138(3)内の第1の数の余分なピクセル値をレンダリングするように指示し、HMDの移動量が第2のより多い移動量である場合に、アプリケーション130に、余分なピクセルデータ138(3)内の第2のより多い数の余分なピクセル値をレンダリングするように指示するように構成されている。例えば、頭部の移動がより少ない場合には、レンダリングコンポーネント132は、合計2300×1300ピクセルをレンダリングするようにアプリケーション130に指示し得、頭部の移動がより多い場合には、レンダリングコンポーネント132は、合計2500×1500ピクセル(すなわち、ピクセルデータ136の固定数の「画面上」ピクセル値について、より多くの余分なピクセル値)をレンダリングするようにアプリケーション130に指示し得る。言い換えれば、余分なピクセルのバッファは、頭部の移動の程度に基づいて拡張または縮小し得る。これはまた、十分な量の余分なピクセルデータ138(3)を生成することによって、ホストコンピュータ106上のリソースを節約する技法であるが、余分な量の余分なピクセルデータ138(3)は生成しない。
【0066】
サブブロック510において、ホストコンピュータ106(例えば、レンダリングコンポーネント132)のロジックは、アプリケーション130に知られているおよび/またはアプリケーション130によって生成された動きベクトルデータ138(4)または予測データのうちの少なくとも1つに少なくとも部分的に基づいて、(例えば、アプリケーション130に生成するように指示することによって)特定の余分なピクセルデータ138(3)を生成することを決定し得る。例えば、動きベクトルデータ138(4)が、HMD102のディスプレイパネル108の前面側を見ているビューを参照して、上向きおよび左向きの方向での頭部の移動を示す場合、レンダリングコンポーネント132は、アプリケーション130に、ピクセルデータ136の最上位ピクセルの上方に、およびピクセルデータ136の最左端ピクセルの左側に、余分なピクセルデータ138(3)を生成し、かつホストコンピュータ106のリソースを保存するピクセルデータ136の最右端ピクセルおよび最下位ピクセルの右側または下方にそれぞれ余分なピクセルデータ138(3)を生成するのを控えるように指示することを決定し得る。言い換えれば、ユーザ104が自分の頭部を右および/または下に移動させる可能性が低い場合、シーン内の最右端ピクセルの右側におよびシーン内の最下位ピクセルの下方の余分なピクセルは、ユーザ104がそれらのピクセルを見る必要がある可能性が低いためにレンダリングされる必要はない。同様に、動きベクトルデータ138(4)が、HMD102のディスプレイパネル108の前面側を見ているビューを参照して、下向きおよび右向きの方向での頭部の移動を示す場合、レンダリングコンポーネント132は、アプリケーション130に、ピクセルデータ136の最下位ピクセルの下方に、およびピクセルデータ136の最右端ピクセルの右側に、余分なピクセルデータ138(3)を生成し、かつホストコンピュータ106のリソースを保存するピクセルデータ136の最左端ピクセルおよび最上位ピクセルの左側または上方にそれぞれ余分なピクセルデータ138(3)を生成するのを控えるように指示することを決定し得る。これは、図5のサブブロック510の右側に図示的に示されている。
【0067】
いくつかの実施形態では、ブロック510において、どの「境界外」ピクセルをレンダリングするかの決定は、アプリケーション130から取得された予測データから決定され得る。例えば、実行アプリケーション130から取得された情報に基づいて、レンダリングコンポーネント132が、ある爆発が画面の左側で間もなく発生することを知っている(または高い可能性で予測する)場合、レンダリングコンポーネント132は、高い可能性で、左向きの方向(すなわち、その爆発に向かって)の将来の頭部の移動を予測することができる。したがって、所与のフレームについて、レンダリングコンポーネント132は、サブブロック510において、ユーザ104が爆発を見ることに反応して、予測されるように、自分の頭部を左に移動させる場合、境界外ピクセルが、そのフレームについて画像を提示するために利用され得るように、左向きの頭部の移動を見込んで、シーン内の最左端ピクセルを超えて「境界外」ピクセルをレンダリングするようにアプリケーション130に指示し得る。
【0068】
サブブロック512において、ホストコンピュータ106(例えば、レンダリングコンポーネント132)のロジックは、第1の解像度でピクセルデータ136を生成し(例えば、アプリケーション130に生成するように指示することによって)、第1の解像度よりも低い第2の解像度で余分なピクセルデータ138(3)を生成することを決定し得る。これは、大規模または急速な頭部の移動がある場合に、余分なピクセルデータ138(3)が再投影されたフレームを作成するために使用されること、そうでなければ使用されない場合があること、ならびに余分なピクセルデータ138(3)が大規模または急速な頭部の移動の間に使用されるため、ユーザ104の目の前のシーンが動いているときに、より低い解像度がユーザ104によって気づかれる可能性が低いこと、が予想されるリソースを節約するためのさらに別の技法である。言い換えれば、期待しない頭部の移動がある場合には、余分なピクセルデータ138(3)内の「境界外」のピクセルが使用されることが期待されるが、そうでなければ破棄され、これは、余分なピクセルデータ138(3)に基づいて画像の提示中に頭部の移動が生じる可能性が高く、ユーザは、目がシーンを追跡するのに忙しく、かつシーン内の細かい詳細が頭部の移動の間にしばしば気づかれないため、頭部の移動の間に低解像度の画像を許容することができることを意味する。
【0069】
514において、レンダリングコンポーネント132がアプリケーション130から余分なピクセルデータ138(3)を取得した後、HMD102は、ホストコンピュータ106から余分なピクセルデータ138(3)を受信し得る。例えば、この余分なピクセルデータ138(3)は、画像をHMD102上に提示する所与のフレームについてのピクセルデータ136と共に(例えば、それと共にパッケージされて)余分なデータ138として送信され得る。したがって、ブロック514において、またはわずかに異なる(例えば、より早いまたはより遅い)時間で、HMD102は、所与のフレームについてのピクセルデータ136を受信し得る。
【0070】
516において、HMD102(例えば、コンポジタ116)のロジックは、ブロック514において受信された余分なピクセルデータ138(3)に少なくとも部分的に基づいて、ピクセルデータ136に再投影調整を適用して、所与のフレームに関連付けられた修正されたピクセルデータ518を取得し得る。余分なピクセルデータ138(3)は、HMD102のディスプレイパネル108のピクセルアレイの境界の外側の余分なピクセル値を含み得、ピクセルデータ136に含まれるピクセル値の少なくとも一部を、余分なピクセルデータ138(3)に含まれる余分なピクセル値の少なくとも一部と置き換えることによって、再投影に使用され得る。例えば、再投影調整がピクセルデータ136を左向きにシフトさせる場合、ピクセルデータ136の最右端ピクセルの右側の余分なピクセルデータ138(3)が修正されたピクセルデータ518に出力され得る。これらの「境界外」ピクセル値(例えば、ディスプレイパネル108に対応するピクセルの左端、右端、上端、および/または下端を超えるピクセル値)は、暗いピクセルを表示する代わりに、コンテンツが最終画像に表示されることを可能にする。これは、実際に最終画像に表示されるピクセル数よりも多くのピクセルがレンダリングされることを意味するが、この冗長性測定は、例えば、HMD102とホストコンピュータ106との間の無線通信リンク内のレイテンシを補償する。とはいっても、プロセス500を参照して説明されるリソース節約技法は、データ転送のレイテンシを考慮してとられる冗長対策にかかわらず、コンピューティングデバイスのパフォーマンスを改善し得る。
【0071】
図6は、本明細書に開示される実施形態による、ホストコンピュータ106上で実行しているアプリケーション130によって生成された深さデータ138(2)に基づいて、再投影調整を適用するための例示的なプロセス600のフロー図を示している。考察目的で、前図を参照してプロセス600を説明する。
【0072】
602において、HMD102は、頭部追跡データ122をホストコンピュータ106に送信し得る。この頭部追跡データ122は、アプリケーション130のターゲットフレームレートに対応する周波数および/またはHMD102のリフレッシュレートなどの任意の適切な周波数、または異なる(例えば、より速い)周波数で生成および/または送信され得、頭部追跡データ122は、HMD102を装着しているユーザ104の頭部の移動を示し得る。
【0073】
604において、レンダリングコンポーネント132は、アプリケーション130に、所与のフレームと関連付けられた深さデータ138(2)を生成するように指示し得、レンダリングコンポーネント132は、それをアプリケーション130から取得し得る。深度データ138(2)(または、Zバッファデータ)は、シーン内の閉塞されたオブジェクトを示してもよく、世界空間内のユーザの位置に対するそれらの深度を示してもよい。
【0074】
606において、HMD102は、ホストコンピュータ106から深度データ138(2)を受信し得る。例えば、この深度データ138(2)は、画像がHMD102上に提示される所与のフレームについてのピクセルデータ136と共に(例えば、それと共にパッケージされて)余分なデータ138として送信され得る。したがって、ブロック606において、またはわずかに異なる(例えば、より早いまたはより遅い)時間で、HMD102は、所与のフレームについてのピクセルデータ136を受信し得る。
【0075】
608において、HMD102(例えば、コンポジタ116)のロジックは、ブロック606において受信された深度データ138(2)に少なくとも部分的に基づいて、ピクセルデータ136に再投影調整を適用して、所与のフレームに関連付けられた修正されたピクセルデータ610を取得し得る。ブロック608のサブブロックによって示されるように、深度データ138(2)に基づくピクセルデータ136の修正は、サブ操作を伴い得る。
【0076】
サブブロック612において、HMD102(例えば、コンポジタ116)のロジックは、深度データ138(2)に少なくとも部分的に基づいて、ピクセルデータ136に含まれるピクセル値の第1のサブセットを前景ピクセル614として、ピクセルデータ136に含まれるピクセル値の第2のサブセットを背景ピクセル616として分類し得る。ブロック612において、1つ以上の中間層が、前景と背景との間の中間層などのピクセルを分類するために使用され得る。したがって、ピクセルデータ136に含まれるピクセルは、任意の適切な粒度で複数の層に分類され得る。
【0077】
サブブロック618において、ブロック608における再投影調整の適用は、前景ピクセル614として分類されるピクセル値の第1のサブセットを修正することと、背景ピクセル616として分類されるピクセル値の第2のサブセットを修正することを控えることと、を含み得る。言い換えれば、HMD102のコンポジタ116は、所与のピクセルに対して、そのピクセルが分類される層(例えば、前景対背景)に応じて、異なる調整を適用してもよく、または調整を適用しなくてもよい。これは、背景コンテンツ内のわずかな不正確さがユーザ104によってどれだけ気づかれないかを見て、背景ピクセル616に再投影調整を適用する際にコンピューティングリソースを無駄にしないようにするためのさらに別のリソース節約技法である。プロセス600で説明されるこの技法は、深度データ138(2)から決定されるように、分類されたピクセルの異なる層に対して再投影調整が適用される異なる更新レートを定義することによって可能にされ得る。例えば、シーンの背景のオブジェクトに対応する背景ピクセルは、シーンの前景のオブジェクトに対応する前景ピクセルよりも少ない頻度で(再投影のために)更新され得る。例えば、HMD102(例えば、コンポジタ116)のロジックは、30Hzで背景ピクセル616に再投影調整を行い、一方で、90Hzなどのより高い周波数で前景ピクセル614に再投影調整を行い得る。90Hzのフレームレートについては、これは、前景ピクセル614が、毎フレームでの再投影調整のために修正される一方で、背景ピクセル616は、一連のフレームでの3番目のフレームごとに再投影調整のために修正されることを意味し、これは、2つの連続するフレームが、リソースを節約するために、背景ピクセルに対する再投影調整を含まないことを意味する。これは、背景ピクセル616に対する再投影調整の概念に少なくとも部分的に基づいており、HMD102の元の姿勢予測における同一の誤差を考慮すると、前景ピクセル614に対する再投影調整よりも小規模な調整であることが期待される。
【0078】
図7は、本明細書に開示される実施形態による、HMD102がハンドヘルドコントローラから直接手部追跡データを受信し、手部追跡データを使用してアプリケーションレンダリングシーン上に仮想手部をオーバーレイするための例示的なプロセス700のフロー図を示している。考察目的で、前図を参照してプロセス700を説明する。
【0079】
702において、HMD102は、HMD102に通信可能に結合されている少なくとも1つのハンドヘルドコントローラ704から、手部追跡データ706を受信し得る。ハンドヘルドコントローラ704は、HMD102の移動および/または位置を追跡することができるのとほぼ同様に、3D空間における移動および/または位置が追跡されるハンドヘルドVRコントローラなどのビデオゲームコントローラを表し得る。ハンドヘルドコントローラ704が、ホストコンピュータ106でシーン上に仮想手部をオーバーレイするために、ホストコンピュータ106に手部追跡データ706を送信する代わりに、ハンドヘルドコントローラ704に、手部追跡データ706がHMD102によって受信される前に、手部追跡データ706をホストコンピュータ106に送信することなく、ハンドヘルドコントローラ704の移動および/または位置を示す手部追跡データ706を直接的にHMD102に送信させることによって、レイテンシ低減措置を取ることができる。手部追跡データ706は、ハンドヘルドコントローラ704に取り付けられた追跡センサによって生成されたデータ、および場合によってはハンドヘルドコントローラ704に対する指部の位置/距離を示すためにハンドヘルドコントローラ704の近接センサ(例えば、静電容量センサ)によって生成された近接センサデータを含み得る。
【0080】
708において、HMD102(例えば、コンポジタ116)のロジックは、手部追跡データ706に少なくとも部分的に基づいて、所与のフレームについてのピクセルデータ136を修正して、ピクセルデータ136によって表されるシーン712上にオーバーレイされた1つ以上の仮想手部710を含んで、所与のフレームと関連付けられた修正されたピクセルデータを取得し得る。例えば、サブブロック714において、HMD102のコンポジタ116は、アプリケーション130によって生成されたピクセル値をコンポジタ116によって生成されたピクセル値と置き換えて、仮想手部710を提示することによって、アプリケーション130によってレンダリングされたシーン上の710上に1つ以上の仮想手部をオーバーレイし得る。したがって、HMD102は、HMD102がハンドヘルドコントローラ704から直接的に受信する手部追跡データ706に基づいて、シーン712上で仮想手部710をレンダリングすることができる。これは、データがホストコンピュータ106に、次いでホストコンピュータ106からHMD102に送信される必要がない場合、ハンドヘルドコントローラ704の姿勢予測は、遠くまで前もって行われる必要がないため、仮想手部710のレンダリングの再投影調整を最小限に抑えることを可能にし得る。
【0081】
図8Aおよび8Bは、本明細書に開示される実施形態による、HMD102とホストコンピュータ106との間のフレームのレンダリングワークロード100を分割するシステムの2つの代替的なセットアップを示している。簡単に図1を参照すると、例示的な実装形態は、ホストコンピュータ106が、ユーザ104によって装着されるHMD102と環境内に配置される。例えば、ホストコンピュータ106は、ホストコンピュータ106がHMD102と同じ部屋または異なる部屋に位置しているかどうかにかかわらず、ユーザ104がハウス内でHMD102を使用している間、ユーザ104のハウス内に位置し得る。代替的に、モバイルコンピューティングデバイス(例えば、タブレットまたはラップトップ)の形態のホストコンピュータ106は、ユーザ104の背面のバックパック内で運ばれてもよく、それによって、より大きなモビリティを可能にする。例えば、ユーザ104は、そのようなシステムを使用しながら、公共の公園内に位置することができる。
【0082】
図8Aは、ホストコンピュータ106が、HMD102に対して地理的に離れた場所に位置する1つ以上のサーバコンピュータを表す、代替の実装形態を示している。この場合、HMD102は、無線AP(WAP)、基地局などのアクセスポイント(AP)800を介してホストコンピュータ106に通信可能に結合され得る。例示的な例では、データは、ホストコンピュータ106とHMD102との間で、AP800を介して、例えばインターネットを介してデータをストリーミングすることによって、交換される(例えば、ストリーミングされる)。
【0083】
図8Bは、ホストコンピュータ106が、ラップトップまたはタブレットコンピュータなどの中間コンピューティングデバイス802を介してHMD102に通信可能に結合される、さらに別の代替の実装形態を示している。図8Aと8Bとの間の差異は、図8AのAP800が、レンダリングを行わないデータルーティングデバイスとして単純に作用し得、一方で、図8Bの中間コンピューティングデバイス802は、レンダリングワークロード100の一部分を実行し得る。すなわち、ホストコンピュータ106とHMD102との間でレンダリングワークロード100を分岐させる代わりに、レンダリングワークロード100は、ホストコンピュータ106、中間コンピューティングデバイス802、およびHMD102といった3つのデバイスなどの3つ以上のデバイスの間で区分けされ得る。図8Bのシナリオにおいて、ホストコンピュータ106は、本明細書に記載されるように、ピクセルデータ136を生成し得、中間コンピューティングデバイス802は、ピクセルデータ136を修正するためのレンダリング動作の第1のセットを実行し得、HMD102は、修正されたピクセルデータを修正するためのレンダリング動作の最終セットを実行し得る。
【0084】
図9は、本明細書に開示される実施形態による、HMD102(例えば、VRヘッドセット)などのウェアラブルデバイス、および本明細書に開示される技法が実装され得るホストコンピュータ106の例示的な構成要素を示している。HMD102は、動作中にホストコンピュータ106に通信可能に結合される接続デバイスとして、および/またはスタンドアロンデバイスとして実装され得る。いずれかの動作モードでは、HMD102は、ユーザ104によって(例えば、ユーザ104の頭部に)装着されることになる。いくつかの実施形態では、HMD102は、ユーザ104が、ユーザ104の頭部の周囲に収まるようにサイズ決めされる固設機構(例えば、調整可能バンド)を使用して、HMD102をユーザの頭部に固設することを可能にすることなどによって、頭部に装着可能であり得る。いくつかの実施形態では、HMD102は、ニアアイまたはニアツーアイディスプレイを含む仮想現実(VR)または拡張現実(AR)ヘッドセットを含む。したがって、「ウェアラブルデバイス」、「ウェアラブル電子デバイス」、「VRヘッドセット」、「ARヘッドセット」、および「ヘッドマウントディスプレイ(HMD)」という用語は、本明細書では互換的に使用されて、図9のデバイス102を指し得る。しかしながら、これらのタイプのデバイスは、HMD102の単なる例であることを理解されたい、HMD102は、様々な他のフォームファクタで実装され得ることを理解されたい。図9に示される構成要素の一部または全部が、HMD102上に実装され得ることも理解されたい。したがって、いくつかの実施形態では、HMD102に実装されているものとして示される構成要素のサブセットは、ホストコンピュータ106またはHMD102から分離された別のコンピューティングデバイスに実装され得る。
【0085】
例示された実装形態では、HMD102は、1つ以上のGPU114を含み得る前述のプロセッサ110と、プロセッサ110、ディスプレイパネル108、頭部追跡システム118、および通信インターフェース120によって実行可能であるコンポジタ116を記憶するメモリ112と、を含む。
【0086】
コンピュータ可読媒体112に記憶され、かつプロセッサ110上で実行可能なものとして、追加的な機能モジュールが示されているが、同じ機能が、代替的に、ハードウェア、ファームウェア内に、またはSOCおよび/もしくは他のロジックとして実装されてもよい。例えば、オペレーティングシステムモジュール900は、他のモジュールの便宜のために、HMD102内でハードウェアを管理し、HMD102に結合されるように構成され得る。加えて、いくつかの事例では、HMD102は、メモリ112に記憶されているか、またはさもなければHMD102にアクセス可能な1つ以上のアプリケーション902を含み得る。例えば、アプリケーション902は、これらに限定されないが、ビデオゲームアプリケーション(例えば、処理の計算集約性が低いグラフィックスを有する基本的なビデオゲーム)、ビデオプレイバックアプリケーション(例えば、HMD102および/またはクラウドに記憶されたビデオコンテンツライブラリにアクセスするアプリケーション)などを含み得る。HMD102は、任意の数またはタイプのアプリケーション902を含み得、本明細書に記載される特定の例に限定されない。
【0087】
一般的に、HMD102は、入力デバイス904および出力デバイス906を有する。入力デバイス904は、制御ボタンを含み得る。いくつかの実装形態では、1つ以上のマイクロフォンが、ユーザ音声入力などのオーディオ入力を受信するための入力デバイス904として機能し得る。いくつかの実装形態では、1つ以上のカメラまたは他のタイプのセンサ(例えば、慣性測定ユニット(IMU))が、ユーザ104の手および/または頭部の動きなどの、ジェスチャ入力を受信するための入力デバイス904として機能し得る。いくつかの実施形態において、追加の入力デバイス904が、キーボード、キーパッド、マウス、タッチスクリーン、ジョイスティックなどの形態で提供され得る。他の実施形態において、HMD102は、キーボード、キーパッド、または他の同様の形態の機械的入力を省略してもよい。代わりに、HMD102は、入力デバイス904の比較的単純な形態、ネットワークインターフェース(無線または有線ベース)、電源、および処理/メモリ機能で実装され得る。例えば、1つ以上の入力部品の限定されたセット(例えば、構成を開始する、電源をオン/オフするなどのための専用ボタン)が用いられ得、HMD102は、その後に使用され得る。一実装形態では、入力デバイス904は、音量を増加/減少させるための基本的な音量制御ボタン、ならびに電源およびリセットボタンなどの制御機構を含み得る。
【0088】
出力デバイス906は、ディスプレイパネル108を含み得、これは、本明細書に記載されるように、1つまたは複数のディスプレイパネル108(例えば、ディスプレイパネル108のステレオ対)を含み得る。出力デバイス906は、非限定的に、発光素子(例えば、LED)、触覚感覚を生み出すためのバイブレータ、スピーカ(例えば、ヘッドフォン)などをさらに含み得る。例えば、電源がオンであるときなどの状態を示すための単純な発光素子(例えば、LED)も存在し得る。
【0089】
HMD102は、ネットワークおよび/またはホストコンピュータ106などの第2のデバイスへの無線接続を容易にするために、アンテナ910に結合された無線ユニット908を含むが、これらに限定されない、通信インターフェース120をさらに含み得る。無線ユニット908は、Wi-Fi、Bluetooth(登録商標)、無線周波数(RF)などの、様々な無線技術のうちの1つ以上を実装し得る。HMD102は、ホストコンピュータ106などのネットワークおよび/または第2のデバイスへの有線接続を容易にする物理ポートをさらに含み得ることを理解されたい。
【0090】
HMD102は、1つ以上の光学要素を使用して、ディスプレイパネル108からユーザの眼に光を向ける光学サブシステム912をさらに含み得る。光学サブシステム912は、非限定的に、アパーチャ、レンズ(例えば、フレネルレンズ、凸レンズ、凹レンズなど)、フィルタなどを含む、異なる光学素子の様々なタイプおよび組み合わせを含み得る。いくつかの実施形態では、光学サブシステム912内の1つ以上の光学要素は、反射防止コーティングなどの1つ以上のコーティングを有し得る。光学サブシステム912による画像光の拡大は、ディスプレイパネル108が、より大型のディスプレイよりも物理的により小型で、軽量で、より低消費電力であることを可能にする。加えて、画像光の拡大は、表示されたコンテンツ(例えば、画像)の視野(FOV)を増加させ得る。例えば、表示されたコンテンツのFOVは、表示されたコンテンツが、ユーザのFOVのほぼすべて(例えば、対角120~150度)、場合によってはすべてを使用して提示されるようなものである。ARアプリケーションは、より狭いFOV(例えば、約40度のFOV)を有していてもよい。光学サブシステム912は、非限定的に、樽型歪み、ピンクッション歪み、長手方向色収差、横収差、球面収差、像面湾曲、非点収差などの、1つ以上の光学誤差を補正するように設計され得る。いくつかの実施形態では、表示のためにディスプレイパネル108に提供されるコンテンツは、事前に歪められており(本明細書に記載された、適用された幾何学的歪み調整および/または色収差調整)、光学サブシステム912は、コンテンツに基づいて生成された、ディスプレイパネル108からの画像光を受光する場合にその歪みを補正する。
【0091】
HMD102は、動き、位置、および方向データを生成するために使用されるセンサなどの、1つ以上のセンサ914をさらに含み得る。これらのセンサ914は、ジャイロスコープ、加速度計、磁力計、ビデオカメラ、カラーセンサ、または他の動き、位置、および方向センサであり得るか、またはそれらを含み得る。センサ914はまた、動き、位置、および方向データを生成するためにカメラまたはカラーセンサによって外部から視認され得る一連の能動または受動マーカなどの、センサのサブ部分を含み得る。例えば、VRヘッドセットは、その外部に、外部カメラで見た場合、または光(例えば、赤外光または可視光)で照らした場合に、反射器または光(例えば、赤外光または可視光)などの複数のマーカを含み得、動き、位置、および方向データを生成するために、ソフトウェアによる解釈のための1つ以上の基準点を提供し得る。HMD102は、HMD102の環境内の基地局によって投影または散布される光(例えば、赤外光または可視光)に対して感応性である光センサを含み得る。
【0092】
一例では、センサ914は、慣性測定ユニット(IMU)916を含み得る。IMU916は、加速度計、ジャイロスコープ、磁力計、および/または動きの検出、IMU916と関連付けられた誤差の補正、もしくはそれらのいくつかの組み合わせに適切な他のセンサから受信された測定信号に基づいて、較正データを生成する電子デバイスであり得る。測定信号に基づいて、IMU916のような、そのような動きベースのセンサは、HMD102の初期位置に対するHMD102の推定された位置を示す較正データを生成し得る。例えば、複数の加速度計が並進運動(前方/後方、上/下、左/右)を測定し、複数のジャイロスコープが回転運動(例えば、ピッチ、ヨー、およびロール)を測定してもよい。IMU916は、例えば、測定信号を迅速にサンプリングし、サンプリングされたデータからHMD102の推定された位置を計算し得る。例えば、IMU916は、経時的に加速度計から受信された測定信号を統合して速度ベクトルを推定し得、経時的に速度ベクトルを統合して、HMD102上の基準点の推定された位置を決定する。基準点は、HMD102の位置を説明するために使用され得る点である。基準点は、一般的に、空間内の点として定義され得るが、様々な実施形態では、基準点は、HMD102内の点(例えば、IMU916の中心)として定義される。代替的に、IMU916は、サンプリングされた測定信号を外部コンソール(または他のコンピューティングデバイス)に提供し、外部コンソールが較正データを決定する。
【0093】
センサ914は、センサデータを高レートで提供するために、比較的高い周波数で動作し得る。例えば、センサデータは、1000Hzのレート(または1ミリ秒ごとに1つのセンサの読み取り)で生成され得る。このようにして、1秒間に1000回の読み取りが行われる。センサがこの速度で(またはそれ以上の速度で)これだけのデータを生成する場合、動きを予測するために使用されるデータセットは、数十ミリ秒ほどの比較的短い期間でも非常に大きくなる。
【0094】
言及されるように、いくつかの実施形態では、センサ914は、3D空間内のHMD102の位置および/または方向、姿勢などを追跡する目的で、HMD102の環境内の基地局によって放出される光に対して感応性である光センサを含み得る。位置および/または方向の計算は、光パルスのタイミング特性、およびセンサ914によって検出される光の有無に基づき得る。
【0095】
HMD102は、眼追跡データを生成する眼追跡システム918をさらに含み得る。眼追跡システム918は、限定されないが、ユーザの眼の画像データ(または情報)を捕捉するためにHMD102の内部のカメラまたは他の光学センサを含み得、眼追跡システム918は、捕捉されたデータ/情報を使用して、ねじれおよび回転の大きさ(すなわち、ロール、ピッチ、およびヨー)ならびに各眼の注視方向を含む、動きベクトル、瞳孔間距離、眼間距離、HMD102に対する各眼の三次元(3D)位置を決定し得る。一例では、赤外光が、HMD102内で放出され、各眼から反射される。反射光は、眼追跡システム918のカメラによって受光または検出され、各眼によって反射された赤外光の変化から眼の回転を抽出するために分析される。ユーザ104の眼を追跡するための多くの方法が、眼追跡システム918によって使用され得る。したがって、眼追跡システム918は、各眼の最大6自由度(すなわち、3D位置、ロール、ピッチ、およびヨー)を追跡し得、追跡された量の少なくともサブセットが、注視点(すなわち、ユーザが見ている仮想シーン内の3D場所または位置)を推定するためにユーザ104の2つの眼から組み合わせられ得、その注視点は、ユーザ104が、ディスプレイパネル108のピクセルの個々のサブセット(例えば、行)または連続サブセットのグループ(例えば、連続行のグループ)に関してどこを見ているかを予測するためにディスプレイパネル108の位置にマッピングされ得る。例えば、眼追跡システム918は、過去の測定値からの情報、ユーザ104の頭部の位置を識別する測定値、およびディスプレイパネル108によって提示されるシーンを記述する3D情報を統合し得る。したがって、ユーザ104の眼の位置および方向の情報は、ユーザ104が見ている、HMD102によって提示された仮想シーン内の注視点を決定し、その注視点を、HMD102のディスプレイパネル108上の位置にマッピングするために使用される。
【0096】
HMD102は、頭部追跡システム118をさらに含み得る。頭部追跡システム118は、上記のように、センサ914のうちの1つ以上を利用して、ユーザ104の頭部の回転を含む頭部の動きを追跡し得る。例えば、頭部追跡システム118は、HMD102の最大6自由度(すなわち、3D位置、ロール、ピッチ、およびヨー)を追跡し得る。これらの計算は、一連のフレームの各フレームで行われ得るため、アプリケーション130は、頭部の位置および方向に応じて、次のフレーム内でシーンをどのようにレンダリングするかを決定することができる。いくつかの実施形態では、頭部追跡システム118は、現在および/または過去のデータに基づいて、および/またはディスプレイシステム内のピクセルの個々のサブセットの既知/暗黙のスキャンアウトレイテンシに基づいて、HMD102の将来の姿勢(位置および/または方向)を予測するために使用可能な頭部追跡データ122を生成するように構成されている。これは、ユーザ104がディスプレイパネル108上で光(したがって、画像)を実際に見る前に、アプリケーション130がフレームをレンダリングするように求められるためである。したがって、次のフレームは、より早い時点で行われた、頭部の位置および/または配向のこの将来の予測に基づいて、レンダリングすることができる。頭部追跡システム118によって提供される回転データは、任意の適切な測定単位で、HMD102の回転方向およびHMD102の回転量の両方を決定するために使用され得る。例えば、回転方向は、左、右、上、および下に対応する正または負の水平方向および正または負の垂直方向の観点で単純化されて出力され得る。回転量は、度、ラジアンなどの単位であり得る。角速度が、HMD102の回転速度を決定するために計算されてもよい。
【0097】
例示された実装形態では、ホストコンピュータは、1つ以上のGPU128を含み得る前述のプロセッサ124、ならびにプロセッサ128によって実行可能なアプリケーション130およびレンダリングコンポーネント132を記憶するメモリ126、ならびに通信インターフェース134を含み得る。
【0098】
メモリ126には、他のモジュールの便益のために、ホストコンピュータ106内でハードウェアを管理し、ホストコンピュータ106に結合されるように構成されたオペレーティングシステム920が含まれ得る。ホストコンピュータ106はまた、メモリ126内にインストールされたビデオゲームクライアント922も有し得る。このビデオゲームクライアント922は、ビデオゲーム(またはビデオゲームプログラム)などのプログラムを起動および実行するように構成されている実行可能クライアントアプリケーションを表し得る。言い替えると、ビデオゲームクライアント922には、HMD102およびホストコンピュータ106を含むシステム上でビデオゲームをプレイするために使用可能なゲームソフトウェアが含まれ得る。ビデオゲームクライアント922がインストールされた状態で、ホストコンピュータ106は、コンピュータネットワーク(例えば、インターネット)経由で遠隔システムからビデオゲームを受信(例えば、ダウンロード、ストリーミングなど)し、ビデオゲームクライアント922を介してビデオゲームを実行するための能力を有し得る。この目的のために、ホストコンピュータ106上でのダウンロードおよび実行のために別々に購入することができる直接購入モデル、サブスクリプションベースモデル、ビデオゲームがある期間のレンタルまたはリースされるコンテンツ配信モデルなどの任意のタイプのコンテンツ配信モデルを利用することができる。したがって、ホストコンピュータ106は、ビデオゲームライブラリ924内に、ビデオゲーム130(1)など1つ以上のビデオゲームを含み得る。これらのビデオゲームは、ビデオゲームクライアント922をロードすることによって、取り出され、そして実行され得る。一例では、ユーザ104は、ビデオゲームクライアント922をロードし、ビデオゲーム130(1)を選択してビデオゲーム130(1)の実行を開始することによって、購入してビデオゲームライブラリ924にダウンロードした複数のビデオゲームのうちの1つをプレイすることを選択し得る。ビデオゲームクライアント922は、ユーザが資格情報(例えば、ユーザアカウント、パスワードなど)を使用してビデオゲームサービスにログインすることを可能にし得る。
【0099】
ホストコンピュータ106は、ネットワークおよび/またはHMD102などの第2のデバイスへの無線接続を容易にするために、アンテナ928に結合された無線ユニット926を含むが、これらに限定されない、通信インターフェース134をさらに含み得る。無線ユニット926は、Wi-Fi、Bluetooth(登録商標)、無線周波数(RF)などの、様々な無線技術のうちの1つ以上を実装し得る。ホストコンピュータ106は、ネットワークおよび/またはHMD102などの第2のデバイスへの有線接続を容易にする物理ポートをさらに含み得ることを理解されたい。
【0100】
一般的に、ホストコンピュータ106は、入力デバイス930および出力デバイス932を有する。入力デバイス930は、キーボード、キーパッド、マウス、タッチスクリーン、ジョイスティック、制御ボタン、マイク、カメラなどを含み得る。出力デバイス932は、非限定的に、ディスプレイ、発光素子(例えば、LED)、触覚感覚を生み出すためのバイブレータ、スピーカ(例えば、ヘッドフォン)などを含み得る。
【0101】
本主題は、構造的特徴に固有の言語で説明されているが、添付の特許請求の範囲で定義された主題が必ずしも説明された特定の特徴に限定されないことを理解されたい。むしろ、特定の特徴は、特許請求の範囲を実装する例示的な形態として開示される。
以下に、本出願の当初の特許請求の範囲に記載された発明を付記する。
[1]
ヘッドマウントディスプレイ(HMD)であって、
発光素子のアレイを有する1つ以上のディスプレイパネルと、
頭部追跡システムと、
プロセッサと、
前記プロセッサによって実行されると、前記HMDに、
前記HMDに通信可能に結合されたホストコンピュータに、前記頭部追跡システムによって生成された第1の頭部追跡データを送信することと、
前記ホストコンピュータから、かつ前記第1の頭部追跡データに少なくとも部分的に基づいて、第1のフレームに関連付けられたピクセルデータおよび前記ピクセルデータに加え、余分なデータを受信することであって、前記余分なデータが、
前記ホストコンピュータ上で実行されるアプリケーションによって前記ピクセルデータを生成するために使用された、前記HMDの予測姿勢を示す姿勢データと、
前記第1のフレームに関連付けられた深度データと、を含む、受信することと、
前記頭部追跡システムによって生成された第2の頭部追跡データに少なくとも部分的に基づいて、前記発光素子が前記第1のフレームのために点灯する時間に前記HMDがとるであろう、更新された姿勢を決定することと、
前記深度データおよび前記予測姿勢と前記更新された姿勢との間の比較に少なくとも部分的に基づいて、前記ピクセルデータに再投影調整を適用して、前記第1のフレームに関連付けられた修正されたピクセルデータを取得することと、
前記修正されたピクセルデータに少なくとも部分的に基づいて、第1の画像を前記1つ以上のディスプレイパネル上に提示することと、を行わせる、コンピュータ実行可能命令を記憶するメモリと、を備える、HMD。
[2]
前記ホストコンピュータが、前記HMDに無線で結合され、
前記第1の頭部追跡データが、前記ホストコンピュータに無線で送信され、
前記ピクセルデータおよび前記余分なデータが、前記ホストコンピュータから無線で受信される、[1]に記載のHMD。
[3]
前記ピクセルデータが、前記1つ以上のディスプレイパネルのピクセルアレイに対応するピクセル値を含み、前記コンピュータ実行可能命令が、前記プロセッサによって実行されると、前記HMDに、
前記深度データに少なくとも部分的に基づいて、前記ピクセル値の第1のサブセットを前景ピクセルとして、前記ピクセル値の第2のサブセットを背景ピクセルとして分類すること、をさらに行わせ、
前記深度データに少なくとも部分的に基づいて、前記再投影調整を前記ピクセルデータに適用することが、
前記ピクセル値の前記第1のサブセットを修正することと、
前記ピクセル値の前記第2のサブセットの修正を控えることと、を含む、[1]に記載のHMD。
[4]
前記ピクセルデータが、前記1つ以上のディスプレイパネルのピクセルアレイに対応するピクセル値を含み、
前記余分なデータが、前記1つ以上のディスプレイパネルの前記ピクセルアレイの境界の外側の余分なピクセル値を含む余分なピクセルデータをさらに含み、
前記再投影調整を前記ピクセルデータに適用することが、前記ピクセル値の少なくとも一部を前記余分なピクセル値の少なくとも一部で置き換えることを含む、[1]に記載のHMD。
[5]
前記余分なデータが、前記第1の頭部追跡データに少なくとも部分的に基づいて、前記ホストコンピュータによって生成された動きベクトルデータをさらに含み、
前記再投影調整を前記ピクセルデータに適用することが、前記動きベクトルデータに少なくとも部分的に基づいている、[1]に記載のHMD。
[6]
前記コンピュータ実行可能命令が、前記プロセッサによって実行されると、前記HMDに、
前記HMDに通信可能に結合された少なくとも1つのハンドヘルドコントローラから、手部追跡データを受信することと、
前記手部追跡データに少なくとも部分的に基づいて、前記ピクセルデータを修正して、前記ピクセルデータによって表されるシーン上にオーバーレイされた1つ以上の仮想手部を含ませ、前記第1のフレームに関連付けられた前記修正されたピクセルデータを取得することと、をさらに行わせる、[1]に記載のHMD。
[7]
発光素子のアレイを有する1つ以上のディスプレイパネルを含むヘッドマウントディスプレイ(HMD)によって実装される方法であって、前記方法が、
ホストコンピュータに、前記HMDの頭部追跡システムによって生成された第1の頭部追跡データを送信することと、
前記ホストコンピュータから、かつ前記第1の頭部追跡データに少なくとも部分的に基づいて、第1のフレームに関連付けられたピクセルデータおよび余分なデータを受信することであって、前記余分なデータが、
前記ホストコンピュータ上で実行されるアプリケーションによって前記ピクセルデータを生成するために使用された、前記HMDの予測姿勢を示す姿勢データと、
前記第1のフレームに関連付けられた深度データと、を含む、受信することと、
前記頭部追跡システムによって生成された第2の頭部追跡データに少なくとも部分的に基づいて、前記発光素子が前記第1のフレームのために点灯する時間に前記HMDがとるであろう、更新された姿勢を決定することと、
前記深度データおよび前記予測姿勢と前記更新された姿勢との間の比較に少なくとも部分的に基づいて、前記ピクセルデータに再投影調整を適用して、前記第1のフレームに関連付けられた修正されたピクセルデータを取得することと、
前記修正されたピクセルデータに少なくとも部分的に基づいて、第1の画像を前記1つ以上のディスプレイパネル上に提示することと、を含む、方法。
[8]
前記ホストコンピュータが、前記HMDに無線で結合され、
前記第1の頭部追跡データが、前記ホストコンピュータに無線で送信され、
前記ピクセルデータおよび前記余分なデータが、前記ホストコンピュータから無線で受信される、[7]に記載の方法。
[9]
前記ピクセルデータが、前記1つ以上のディスプレイパネルのピクセルアレイに対応するピクセル値を含み、前記方法が、
前記深度データに少なくとも部分的に基づいて、前記ピクセル値の第1のサブセットを前景ピクセルとして、前記ピクセル値の第2のサブセットを背景ピクセルとして分類すること、をさらに含み、
前記再投影調整を前記ピクセルデータに前記適用することが、
前記ピクセル値の前記第1のサブセットを修正することと、
前記ピクセル値の前記第2のサブセットの修正を控えることと、を含む、[7]に記載の方法。
[10]
前記ピクセルデータが、前記1つ以上のディスプレイパネルのピクセルアレイに対応するピクセル値を含み、
前記余分なデータが、前記1つ以上のディスプレイパネルの前記ピクセルアレイの境界の外側の余分なピクセル値を含む余分なピクセルデータをさらに含み、
前記再投影調整を前記ピクセルデータに前記適用することが、前記ピクセル値の少なくとも一部を前記余分なピクセル値の少なくとも一部で置き換えることを含む、[7]に記載の方法。
[11]
前記余分なデータが、前記第1の頭部追跡データに少なくとも部分的に基づいて生成された動きベクトルデータをさらに含み、
前記再投影調整を前記ピクセルデータに前記適用することが、前記動きベクトルデータに少なくとも部分的に基づいている、[7]に記載の方法。
[12]
前記HMDに通信可能に結合された少なくとも1つのハンドヘルドコントローラから、手部追跡データを受信することと、
前記手部追跡データに少なくとも部分的に基づいて、前記ピクセルデータを修正して、前記ピクセルデータによって表されるシーン上にオーバーレイされた1つ以上の仮想手部を含ませ、前記第1のフレームに関連付けられた前記修正されたピクセルデータを取得することと、をさらに含む、[7]に記載の方法。
[13]
ホストコンピュータであって、
プロセッサと、
前記プロセッサによって実行されると、前記ホストコンピュータに、
ヘッドマウントディスプレイ(HMD)から、前記HMDの頭部追跡システムによって生成された第1の頭部追跡データを受信することと、
前記HMDの1つ以上のディスプレイパネルの発光素子が一連のフレームのうちの第1のフレームのために点灯する時間を表す予測点灯時間を決定することと、
前記第1の頭部追跡データに少なくとも部分的に基づいて、前記HMDが前記予測点灯時間にとるであろう、予測姿勢を決定することと、
前記第1のフレームをレンダリングするためのアプリケーションに前記予測姿勢を示す姿勢データを提供することであって、前記アプリケーションが、前記ホストコンピュータ上で実行する、提供することと、
前記アプリケーションから、前記第1のフレームに関連付けられたピクセルデータを取得することと、
前記第1の頭部追跡データおよび前記頭部追跡システムによって生成された第2の頭部追跡データに少なくとも部分的に基づいて、動きベクトルデータを生成することであって、前記第2の頭部追跡データが、前記第1の頭部追跡データの前に前記HMDから受信されている、生成することと、
前記HMDに、前記ピクセルデータおよび余分なデータを送信することであって、前記余分なデータが、少なくとも前記姿勢データおよび前記動きベクトルデータを含む、送信することと、を行わせる、コンピュータ実行可能命令を記憶するメモリと、を備える、ホストコンピュータ。
[14]
前記HMDが、前記ホストコンピュータに無線で結合され、
前記第1の頭部追跡データが、前記HMDから無線で受信され、
前記ピクセルデータおよび前記余分なデータが、前記HMDに無線で送信される、[13]に記載のホストコンピュータ。
[15]
前記コンピュータ実行可能命令が、前記プロセッサによって実行されると、前記ホストコンピュータに、
前記アプリケーションから、前記第1のフレームに関連付けられた深度データを受信すること、を行わせ、
前記余分なデータが、前記深度データをさらに含む、[13]に記載のホストコンピュータ。
[16]
前記ピクセルデータが、前記HMDの前記1つ以上のディスプレイパネルのピクセルアレイに対応するピクセル値を含み、前記コンピュータ実行可能命令が、前記プロセッサによって実行されると、前記ホストコンピュータに、
前記アプリケーションから、前記HMDの前記1つ以上のディスプレイパネルの前記ピクセルアレイの境界の外側の余分なピクセル値を含む余分なピクセルデータを受信すること、をさらに行わせ、
前記余分なデータが、前記余分なピクセルデータをさらに含む、[13]に記載のホストコンピュータ。
[17]
前記コンピュータ実行可能命令が、前記プロセッサによって実行されると、前記ホストコンピュータに、前記ピクセルデータを第1の解像度で生成し、前記余分なピクセルデータを前記第1の解像度よりも低い第2の解像度で生成するように前記アプリケーションに指示すること、をさらに行わせる、[16]に記載のホストコンピュータ。
[18]
前記コンピュータ実行可能命令が、前記プロセッサによって実行されると、前記ホストコンピュータに、閾値移動量を超える前記HMDの移動量を示す前記第1の頭部追跡データに少なくとも部分的に基づいて前記余分なピクセルデータを生成するように前記アプリケーションに指示すること、をさらに行わせる、[16]に記載のホストコンピュータ。
[19]
前記コンピュータ実行可能命令が、前記プロセッサによって実行されると、前記ホストコンピュータに、前記第1の頭部追跡データによって示された前記HMDの移動量に少なくとも部分的に基づいて、前記余分なピクセルデータ内のある数の前記余分なピクセル値をレンダリングするように前記アプリケーションに指示すること、をさらに行わせる、[16]に記載のホストコンピュータ。
[20]
前記コンピュータ実行可能命令が、前記プロセッサによって実行されると、前記ホストコンピュータに、
前記アプリケーションによって生成された前記動きベクトルデータまたは予測データのうちの少なくとも1つに少なくとも部分的に基づいて、前記余分なピクセルデータを生成するように前記アプリケーションに指示すること、をさらに行わせる、[16]に記載のホストコンピュータ。
図1
図2
図3
図4
図5
図6
図7
図8A
図8B
図9