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

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

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

特許7042286滑らかに変化するフォービエイテッドレンダリング
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-03-16
(45)【発行日】2022-03-25
(54)【発明の名称】滑らかに変化するフォービエイテッドレンダリング
(51)【国際特許分類】
   G06T 15/20 20110101AFI20220317BHJP
   G06T 19/00 20110101ALI20220317BHJP
   H04N 5/66 20060101ALI20220317BHJP
【FI】
G06T15/20
G06T19/00 A
H04N5/66 Z
【請求項の数】 27
(21)【出願番号】P 2019566902
(86)(22)【出願日】2018-06-05
(65)【公表番号】
(43)【公表日】2020-07-30
(86)【国際出願番号】 US2018036033
(87)【国際公開番号】W WO2018226676
(87)【国際公開日】2018-12-13
【審査請求日】2020-04-02
(31)【優先権主張番号】62/515,124
(32)【優先日】2017-06-05
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】バスタニ,ベナム
(72)【発明者】
【氏名】ファント,ブライアン
(72)【発明者】
【氏名】ビグノード,シルバイン
(72)【発明者】
【氏名】ジアン,ハオミャオ
【審査官】益戸 宏
(56)【参考文献】
【文献】国際公開第2017/074961(WO,A1)
【文献】国際公開第2015/154004(WO,A1)
【文献】米国特許出願公開第2008/0101711(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/00
G06T 19/00
H04N 5/66
H04N 13/00
(57)【特許請求の範囲】
【請求項1】
ユーザの瞳孔の位置に基づいて3Dシーンの注視点を特定するステップと、
前記注視点に基づいて前記3Dシーンをゆがませるステップと、
前記ゆがめられた3Dシーンを描画して、前記注視点からの距離が大きくなるにつれて精度レベルを下げて描画される第1画像を生成するステップと、
前記第1画像のゆがみを解消して第2画像を生成するステップとを含む、方法。
【請求項2】
前記第1画像の画素の数は、前記第2画像よりも少ない、請求項1に記載の方法。
【請求項3】
前記第1画像の画素の数は、前記第2画像の4分の1以下である、請求項2に記載の方法。
【請求項4】
前記3Dシーンをゆがませるステップは、前記注視点からの距離の非線形関数を用いて前記3Dシーンをゆがませるステップを含む、請求項1~3のいずれか1項に記載の方法。
【請求項5】
前記第2画像は、映像のフレームである、請求項1~4のいずれか1項に記載の方法。
【請求項6】
前記3Dシーンをゆがませるステップは、前記3Dシーンを不均一に変更するステップを含む、請求項1~5のいずれか1項に記載の方法。
【請求項7】
前記3Dシーンを前記不均一に変更するステップは、前記3Dシーンの異なる部分を異なる量だけ変更するステップを含む、請求項6に記載の方法。
【請求項8】
前記3Dシーンを前記不均一に変更するステップは、前記3Dシーンの異なる部分を異なる方向に変更するステップを含む、請求項6に記載の方法。
【請求項9】
前記3Dシーンをゆがませるステップは、前記3Dシーンの頂点を中間の圧縮された空間に変換するステップを含む、請求項1~8のいずれか1項に記載の方法。
【請求項10】
前記頂点を中間の圧縮された空間に変換するステップは、前記頂点の位置に非線形関数を適用するステップを含む、請求項9に記載の方法。
【請求項11】
前記頂点の前記位置に非線形関数を適用するステップは、前記頂点の各頂点の位置を、各頂点から前記注視点までの距離の平方根に基づいて修正するステップを含む、請求項10に記載の方法。
【請求項12】
前記頂点の前記位置に非線形関数を適用するステップは、前記頂点に対数変換または対数極座標変換を適用するステップを含む、請求項10に記載の方法。
【請求項13】
前記頂点を変換するステップは、
前記頂点の各々をビューポートに投影するステップと、
前記注視点を前記ビューポートに投影するステップと、
前記投影された頂点と前記投影された注視点との距離に基づいて、前記投影された頂点の座標を変換するステップと、
前記変換された頂点を前記3Dシーンに再投影するステップとを含む、請求項10に記載の方法。
【請求項14】
前記注視点に基づいて前記3Dシーンをゆがませるステップは、前記3Dシーンの横の次元が縦の次元とは異なる程度ゆがめられるよう、前記注視点からの垂直距離および前記注視点からの水平距離に基づいてワープ関数を使用するステップを含む、請求項1~13のいずれか1項に記載の方法。
【請求項15】
前記注視点に基づいて前記3Dシーンをゆがませるステップは、前記3Dシーンの前記注視点の一方側を他方側とは異なる量だけゆがませる非対称ワープ関数を使用するステップを含む、請求項1~14のいずれか1項に記載の方法。
【請求項16】
前記ゆがめられた3Dシーンを描画するステップは、ゆがませる時の三角形のエッジの歪みを推定することに基づいて前記第1画像の画素の誤り訂正値を算出するステップを含む、請求項1~15のいずれか1項に記載の方法。
【請求項17】
前記第1画像のゆがみを解消するステップは、前記第2画像の画素を生成しながら前記誤り訂正値を適用するステップを含む、請求項16に記載の方法。
【請求項18】
前記第1画像のゆがみを解消して第2画像を生成するステップは、前記第2画像のフォービアル(foveal)領域においてバイリニアフィルタリングを使用するステップを含む、請求項1~17のいずれか1項に記載の方法。
【請求項19】
前記注視点を特定するステップは、ユーザの目の位置を追跡することに基づいて前記注視点を特定するステップを含む、請求項1~18のいずれか1項に記載の方法。
【請求項20】
前記注視点を特定するステップは、HMDのレンズのプロパティに基づいて前記注視点を特定するステップを含む、請求項1~19のいずれか1項に記載の方法。
【請求項21】
システムであって、
少なくとも1つのプロセッサと、
命令を格納したメモリとを備え、前記命令は、前記少なくとも1つのプロセッサによって実行されると、前記システムに、
ユーザの瞳孔の位置に基づいて3Dシーンの注視点を特定させ、
前記注視点に基づいて前記3Dシーンをゆがませ、
前記ゆがめられた3Dシーンを描画させて、前記注視点からの距離が大きくなるにつれて精度レベルを下げて描画される第1画像を生成させ、
前記第1画像のゆがみを解消させて第2画像を生成させる、システム。
【請求項22】
GPU(Graphics Processing Unit)をさらに備え、前記システムに前記注視点に基づいて前記3Dシーンをゆがませる前記命令は、前記システムに前記GPUを用いて前記3Dシーンを中間の圧縮された空間に変換させる命令を含む、請求項21に記載のシステム。
【請求項23】
前記システムに前記注視点に基づいて前記3Dシーンをゆがませる前記命令は、前記GPUに前記3Dシーンの少なくとも一部をテッセレートさせる命令を含む、請求項22に記載のシステム。
【請求項24】
前記システムに前記ゆがめられた3Dシーンを描画させて第1画像を生成させる前記命令は、前記GPUにマルチサンプリングアンチエイリアシングを適用させる命令を含む、請求項22に記載のシステム。
【請求項25】
少なくとも1つのレンズを含むヘッドマウントディスプレイ装置をさらに備え、前記注視点は、前記レンズの他の部分よりも視力が高い部分に対応する、請求項2124のいずれか1項に記載のシステム。
【請求項26】
ヘッドマウントディスプレイ装置とカメラとをさらに備え、
前記メモリは、前記少なくとも1つのプロセッサによって実行されると、前記システムに、
前記カメラによって撮影された画像に基づいて前記ヘッドマウントディスプレイ装置の装着者の瞳孔の位置を特定させ、
前記瞳孔の位置に基づいて前記注視点を特定させる命令をさらに含む、請求項2125のいずれか1項に記載のシステム。
【請求項27】
請求項1~20のいずれか1項に記載の方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2017年6月5日に出願された米国出願第62/515,124号に基づく優先権を主張し、そのすべての開示内容を、引用により本明細書に援用する。
【背景技術】
【0002】
背景
仮想現実(VR)システムは、ユーザ用の没入型仮想環境を生成する。たとえば、没入型環境は、3次元(3D)であり得、ユーザがやり取りする複数の仮想オブジェクトを含み得る。拡張現実(AR)システムは、ユーザ用の拡張環境を生成する。たとえば、コンピュータによって生成された画像を実世界のユーザの視野に重畳することによって、拡張環境を生成できる。
【0003】
ユーザは、たとえば、ディスプレイ、眼鏡、またはゴーグルを備えるヘルメットまたはその他のヘッドマウント装置など、様々なディスプレイ装置を介して没入型仮想環境または拡張環境を体験することができ、当該ディスプレイ、眼鏡、またはゴーグルを通してディスプレイ装置を見る。
【発明の概要】
【0004】
概要
本明細書は、全体的に、フォービエイテッドレンダリングに関する。いくつかの実装形態では、フォービエイテッドレンダリングは、滑らかに変化する。
【0005】
一態様は、注視点に基づいて3Dシーンをゆがませるステップを含む方法である。また、この方法は、ゆがめられた3Dシーンを描画して第1画像を生成するステップと、第1画像のゆがみを解消(アンワープ)して第2画像を生成するステップとを含む。
【0006】
別の態様は、少なくとも1つのプロセッサと、命令を格納したメモリとを備えるシステムである。少なくとも1つのプロセッサによって命令が実行されると、当該命令は、システムに、注視点に基づいて3Dシーンをゆがませ、ゆがめられた3Dシーンを描画させて第1画像を生成させ、第1画像のゆがみを解消させて第2画像を生成させる。
【0007】
別の態様は、命令を格納した非一時的なコンピュータ読み取り可能な記憶媒体である。少なくとも1つのプロセッサによって命令が実行されると、当該命令は、コンピューティングシステムに、少なくとも、ヘッドマウントディスプレイ装置の装着者の瞳孔位置を特定させ、瞳孔位置に基づいて注視点を特定させる。また、命令は、コンピューティングシステムに、注視点に基づいて3Dシーンをゆがませ、ゆがめられた3Dシーンを描画させて第1画像を生成させる。また、命令は、コンピューティングシステムに、第1画像のゆがみを解消させて第2画像を生成させ、ヘッドマウントディスプレイ装置に、第2画像を表示させる。
【0008】
1つ以上の実装形態の詳細を、添付の図面および以下の説明において記載する。その他の特徴は、本明細書および図面から、ならびに請求の範囲から明らかになるだろう。
【図面の簡単な説明】
【0009】
図1】例示的な実装形態に係る、システムを示すブロック図である。
図2】本明細書に記載の実装形態に係る、滑らかに変化するフォービエイテッドレンダリングを有するヘッドマウントディスプレイを備えた拡張現実および/または仮想現実システムの例示的な実装形態である。
図3A】本明細書に記載の実装形態に係る、例示的なヘッドマウントディスプレイ装置およびコントローラを示す図である。
図3B】本明細書に記載の実装形態に係る、例示的なヘッドマウントディスプレイ装置およびコントローラを示す図である。
図3C】本明細書に記載の実装形態に係る、例示的なヘッドマウントディスプレイ装置およびコントローラを示す図である。
図4】本明細書に記載の実装形態に係る、滑らかに変化するフォービエイテッド画像を描画する例示的な方法400のフローチャートである。
図5A】本明細書に記載の実装形態に係る、例示的なワープ関数が画像をサンプリングする様子を示した概略図である。
図5B】本明細書に記載の実装形態に係る、例示的なワープ関数が画像をサンプリングする様子を示した概略図である。
図6】本明細書に記載の実装形態に係る、いくつかの例示的なワープ関数のプロットを有するグラフである。
図7A】本明細書に記載の実装形態に係る、ゆがめられたシーンの例示的な中間画像である。
図7B図7Aの画像に対応する、ゆがみが解消されたシーンの画像である。
図8】いくつかの実装形態に係る、フォービエイテッドレンダリング処理の概略図である。
図9】いくつかの実装形態に係る、フォービエイテッドレンダリング処理の概略図である。
図10】本明細書に記載の技術を実装するために用いることができるコンピュータデバイスおよびモバイルコンピュータデバイスの例である。
図11A】いくつかの実装形態に係る、シーンに含まれる例示的なフォービエイテッド画像である。
図11B】いくつかの実装形態に係る、シーンに含まれる例示的なフォービエイテッド画像である。
図11C】いくつかの実装形態に係る、シーンに含まれる例示的なフォービエイテッド画像である。
図12A】いくつかの実装形態に係る、シーンに含まれる例示的なフォービエイテッド画像である。
図12B】いくつかの実装形態に係る、シーンに含まれる例示的なフォービエイテッド画像である。
図12C】いくつかの実装形態に係る、シーンに含まれる例示的なフォービエイテッド画像である。
図12D】いくつかの実装形態に係る、シーンに含まれる例示的なフォービエイテッド画像である。
【発明を実施するための形態】
【0010】
詳細な説明
ここで、本開示の非限定例を詳細に説明し、その例を添付の図面に示す。これらの例を、添付の図面を参照することによって以下に説明する。添付の図面では、同一の構成要素に同じ参照番号を使用する。同じ参照番号が示された場合、対応する説明(複数可)は繰り返されず、関心のある読者は、当該同じ参照番号(複数可)を説明するために前に説明された図面(複数可)を参照されたい。
【0011】
VRシステムおよびARシステムの少なくともいくつかの実装形態は、ユーザが装着できるヘッドマウントディスプレイ装置(HMD)を備える。少なくともいくつかの実装形態では、HMDは、ユーザの目の各々にそれぞれ異なる画像および/または映像が表示されて奥行きが伝えられる立体視ディスプレイを備える。HMDは、ユーザの視野の一部(たとえば、AR)またはすべて(たとえば、VR)を覆う画像を表示してもよい。また、HMDは、ユーザの頭部および/または瞳孔位置の動きを追跡してもよい。ユーザの頭部が移動すると、HMDは、ARまたはVR環境内のユーザの変化する向きおよび/または位置に対応する更新画像を表示してもよい。
【0012】
HMDは、レンダリングエンジンによって生成された画像および/または映像を表示してもよい。レンダリングエンジンは、HMDのコンポーネントであってもよく、描画された画像をHMDに送信する別のコンピューティングデバイスのコンポーネントであってもよい。VRまたはARシステムにおいて表示するための画像を描画することは、非常に多くのリソースを必要とし得る。
【0013】
VRシステムおよびARシステム上の視覚体験を改善するためには、解像度がより高く、視力がより高く、動きから表示までの遅延時間(motion-to-photon latency)がより少ないディスプレイが必要である。動きから表示までの遅延時間とは、動作の検出と没入型仮想環境または拡張現実環境の更新との間の時間遅延を指す。すべてのこれらの要素は、より多くの数の画素をより少ない遅延時間で描画するために、より高い処理能力を有するシステムを必要とする。これに加えて、モバイルVRシステムおよびARシステムは、エネルギー利用を最小限に抑えつつ、これらの要件に合う必要がある。
【0014】
満足なVRまたはAR体験を生じさせるために、レンダリングエンジンは、ユーザの動きに一致するようにVRまたはAR環境が更新されるよう、動きから表示までの遅延時間を最小限に抑える必要があるだろう。実際、動きから表示までの遅延時間が多すぎる場合、VRシステムは、ユーザに動揺病を引き起こしてしまう可能性がある。
【0015】
いくつかの実装形態は、フォービエイテッドレンダリングエンジンを含む。当該フォービエイテッドレンダリングエンジンは、ユーザがどこを見ているかおよび/またはHMDのレンズの性能に基づいて大まかにユーザの視力に対応するよう、精度を変えて画像を描画する。たとえば、画像は、注視点ではより高精度で描画され、注視点からの距離が大きくなるにつれて精度レベルを次第に下げて描画されてもよい。いくつかの実装形態では、HMDは、ユーザがどこを見ているかに基づいて注視点を識別する瞳孔トラッカーを備える。この識別された注視点を用いてユーザの視野の中央部分を識別できる。この中央部分では、ユーザの視野のその他の部分(たとえば、ユーザの周辺視野内)よりもユーザの視力が高い。
【0016】
フォービエイテッドレンダリングエンジンは、ユーザの視野の中央部分内に表示しようとする部分はより高精度であり、ユーザの視野の周辺部分内に表示しようとする部分はより低精度の画像を生成してもよい。例として、より低精度の描画は、より高精度の描画よりも低解像度で行われてもよい。フォービエイテッドレンダリングエンジンの実装形態は、人間の視覚系の視力が、視線の中心から外れると劇的に落ちることを利用したものである。画像の一部を低精度で描画することによって、フォービエイテッドレンダリングエンジンは、より少ないプロセッササイクルとエネルギーとを利用して、画像をより素早く描画できるようになる。これらの低精度部分は注視点から離れた位置にあるので、注視点からの距離が大きくなるにつれてユーザの視力が下がるため、当該低精度は、ユーザに気づかれ難い。
【0017】
いくつかの実装形態では、画像の精度は、識別された注視点におけるより高精度から、画像の周辺領域におけるより低精度に滑らかに変化する。フォービエイテッドレンダリングエンジンによって生成された画像の精度が滑らかに変化するため、画像は、トンネルビジョン効果またはそれぞれ異なる精度レベルの領域間の知覚可能な境界もしくは遷移など、視覚的アーティファクトがない。
【0018】
いくつかの実装形態では、フォービエイテッドレンダリングエンジンは、注視点からの距離の非線形関数を用いて3次元(3D)シーンをゆがませることによってゆがめられたシーンを生成することにより、シーンからフォービエイテッド画像および/またはフォービエイテッド映像を生成する。いくつかの実装形態では、シーンをゆがませることは、シーンを不均一に(すなわち、シーンの部分のすべてが同じように変更されないよう)変更することを含む。いくつかの実装形態では、シーンをゆがませることは、3Dシーンに含まれる頂点と注視点との間の距離を変更することを含む。いくつかの実装形態では、シーンをゆがませることは、3Dシーンを圧縮された中間空間にマッピングすることを含む。圧縮された中間空間は、注視点に近いシーンの部分には、より大きい画面領域を割り当て、注視点から離れたシーンの部分には、より小さい画面領域を割り当ててもよい。
【0019】
非線形関数は、対数関数、近似的対数関数などであってもよい。3Dシーンは、頂点と面とによって規定されるポリゴンメッシュとして表される1つ以上のオブジェクトを含んでもよい。たとえば、レンダリングエンジンは、3Dシーンの各頂点から、投影面に対して垂直であり注視点を通過する線までの距離を算出してもよい。
【0020】
本明細書の例は、距離の関数を用いてゆがみ処理を実行するが、その他の実装形態は、その他の種類の関数を使用する。たとえば、いくつかの実装形態は、注視点からの垂直距離および/または水平距離のワープ関数を利用する。このように、ワープ関数は、シーンの横の次元と縦の次元とをそれぞれ異なる程度ゆがませることができる。これに加えて、いくつかの実装形態は、注視点の一方側を他方側とは異なる量だけゆがませる非対称ワープ関数を含む。たとえば、注視点の左側のシーンの部分のほとんどがユーザの鼻によって遮られるよう、右目の注視点の左側にあるシーンの部分を注視点の右側の部分よりも大幅にゆがめてもよく、注視点の右側のシーンの部分のほとんどがユーザの鼻によって遮られるよう、左目の注視点の右側にあるシーンの部分を注視点の左側の部分よりも大幅にゆがめてもよい。
【0021】
3Dシーンがゆがめられた後、レンダリングエンジンは、ゆがめられたシーンを様々なレンダリング技術を用いて描画して離散化し、ゆがめられた画像を生成できる。たとえば、標準GPU(Graphics Processor Unit)動作を用いて、ゆがめられたシーンから画像を描画できる。ゆがめられた画像は、所望の最終画像よりも少ない解像度で描画できる(たとえば、少ない画素を有する)。画素の各々を描画することは、GPUシェーダを用いたライティング値およびテクスチャ値の算出などの計算コストが高い様々な動作をGPUが実行することを伴ってもよい。画像を描画するのにかかる時間は描画される画素の数に応じて変化するので、ゆがめられた画像は、所望の最終画像を描画するよりも時間がかからない。たとえば、ゆがめられた画像の画素の数は、縦方向および横方向に、所望の最終画像の約半分であってもよく、所望の最終画像の4分の1の画素を有するゆがめられた画像がもたらされる。画素数を4分の1に減らすことによって、ゆがめられた画像のための描画時間を4分の1に減らすことにつながり得る。視野が余分に幅広い画像においてさらなる改善も可能である。
【0022】
いくつかの実装形態では、次に、ゆがめられた画像のゆがみを解消して、所望の最終画像を生成する。たとえば、画像のゆがみの解消は、前に実行された歪み処理の効果を打ち消してもよい。いくつかの実装形態では、画像のゆがみを解消することは、3Dシーンをゆがませるために用いられた関数の逆関数を画像の画素に適用することを含む。たとえば、当該関数の逆関数によって、3Dシーンの一部を表す画素が、当該部分がゆがめられる前の場所に戻されてもよい。
【0023】
ゆがみの解消は、ゆがめられた画像においてアンワープ関数によって特定された位置の画素の値に基づいて最終画像に含まれる画素の値を特定するためのGPU動作を用いて計算コストが低い方法で実現される。ゆがめられた画像のゆがみを解消するために必要な算出は、この技術を用いて回避される画素レンダリング計算よりも計算コストが低い(たとえば、所望の最終画像を生成するための画像のゆがみの解消には、所望の最終画像の画素の各々を描画するよりも少ないプロセッササイクルが使用される)。注視点により近い3Dシーンからの頂点に、注視点からより離れた頂点よりも画像空間の多くをワープ関数が割り当てるため、ゆがめられた画像に含まれる画素のより多くが、注視点近くの3Dシーンの一部を表すことになる。つまり、ゆがめられた画像は、注視点の周囲の領域を、注視点からさらに離れた位置にある領域よりも高い率でサンプリングする。この可変サンプリングによって、注視点の周辺の解像度をより高くし、それ以外の場所の解像度をより低くするよう、所望の最終画像を再構成できる。
【0024】
上述したように画像のゆがみを解消することに加えて、その他の非線形演算を画像に適用することも可能である。たとえば、非線形レンズ歪み補正を適用して最終画像を生成できる。いくつかの実装形態では、画素当たりの計算を追加することなく複数の演算を適用できるよう、ゆがみ解消処理と少なくとも1つのその他の非線形演算とを組み合わせて1つの演算にする。つまり、複数の非線形演算を1つの演算に組み合わせることによって、最終画像の各画素に適用される演算の数が減り、画像を描画する時間および/または画像を描画するために使用されるプロセッササイクル数が減る。
【0025】
特記されていない限り、本明細書に記載の技術を適用してフォービエイテッド画像および/またはフォービエイテッド映像を生成できる。生成された画像および/または映像は、コンピュータによって生成されたコンテンツ、現実シーンの標準的な写真および映像、ならびにそれらの組合せを含み得る。さらには、本明細書に記載の技術を適用して、ARまたはVR環境において使用するための一連の画像(または、映像)を生成できる。
【0026】
図1は、例示的な実装形態に係る、システム100を示すブロック図である。システム100は、システム100のユーザ用の拡張現実(AR)環境または仮想現実(VR)環境を生成する。いくつかの実装形態では、システム100は、コンピューティングデバイス102と、ヘッドマウントディスプレイ装置(HMD)104と、AR/VRコンテンツソース106とを備える。ネットワーク108も図示されており、これを介してコンピューティングデバイス102はAR/VRコンテンツソース106と通信を行ってもよい。
【0027】
いくつかの実装形態では、コンピューティングデバイス102は、VRコンテンツをユーザに提供または出力するように構成され得るモバイル機器(たとえば、スマートフォン)である。コンピューティングデバイス102は、メモリ110と、プロセッサアセンブリ112と、ディスプレイ装置114と、通信モジュール116と、センサシステム118とを備えてもよい。メモリ110は、AR/VRアプリケーション120と、フォービエイテッドレンダリングエンジン122と、アイトラッカー124と、AR/VRコンテンツ126とを含んでもよい。また、コンピューティングデバイス102は、ワイヤレス通信プロトコルを用いてコンピューティングデバイス102と通信を行うコントローラなど、様々なユーザ入力コンポーネント(図示せず)を含んでもよい。
【0028】
メモリ110は、1つ以上の非一時的なコンピュータ読み取り可能な記憶媒体を含み得る。メモリ110は、ユーザ用のAR/VR環境を生成するために使用できる命令とデータとを格納してもよい。
【0029】
プロセッサアセンブリ112は、画像および映像の描画などの様々なタスクを実行するための、メモリ110に格納された命令など、命令を実行可能な1つ以上のデバイスを含む。たとえば、プロセッサアセンブリ112は、CPU(Central Processing Unit)および/またはGPU(Graphics Processor Unit)を含んでもよい。たとえば、GPUが存在する場合、いくつかの映像レンダリングタスクをCPUから当該GPUに肩代わりさせて負担を低減してもよい。
【0030】
ディスプレイ装置114は、たとえば、LCD(Liquid Crystal Display)画面、OLED(Organic Light Emitting Diode)画面、タッチ画面、またはユーザに画像または情報を見せるためのその他の画面またはディスプレイを含んでもよい。いくつかの実装形態では、ディスプレイ装置114は、ユーザの目の一部に光を投影するように構成された光プロジェクタを含む。
【0031】
通信モジュール116は、AR/VRコンテンツソース106など、その他のコンピューティングデバイスと通信を行うための1つ以上のデバイスを含む。通信モジュール116は、無線または有線ネットワークを介して通信を行ってもよい。
【0032】
センサシステム118は、慣性計測装置(IMU:Inertial Motion Unit)128を含む様々なセンサを含んでもよい。また、センサシステム118の実装形態は、たとえば、光センサ、音声センサ、イメージセンサ、距離センサおよび/もしくは近接センサ、静電容量型センサなどの接触センサ、タイマ、ならびに/またはその他のセンサおよび/またはセンサの異なる組合せ(複数可)を含む、それぞれ異なる種類のセンサを含んでもよい。
【0033】
IMU128は、コンピューティングデバイス102および/またはHMD104の動作、動き、および/または加速度を検出する。IMU128は、たとえば、加速度計、ジャイロスコープ、磁力計、およびその他のこのようなセンサなど、様々な異なる種類のセンサを含んでもよい。IMU128に含まれるセンサが提供するデータに基づいて、HMD104の位置と向きとを検出および追跡してもよい。HMD104の検出された位置および向きによって、システムは、ユーザの視線方向と頭部の動きとを検出および追跡できる。
【0034】
AR/VRアプリケーション120は、ディスプレイ装置114、スピーカ(複数可)(図示せず)、および/またはその他の出力装置など、コンピューティングデバイス102の1つ以上の出力装置を介してAR/VRコンテンツをユーザに提示または提供してもよい。いくつかの実装形態では、AR/VRアプリケーション120は、メモリ110に格納された命令を含み、当該命令は、プロセッサアセンブリ112によって実行されると、プロセッサアセンブリ112に、本明細書に記載の動作を実行させる。たとえば、AR/VRアプリケーション120は、たとえば、AR/VRコンテンツ126および/またはAR/VRコンテンツソース106から受信したAR/VRコンテンツなど、AR/VRコンテンツに基づいて、AR/VR環境を生成してユーザに提示してもよい。AR/VRコンテンツ126は、ディスプレイ装置114上に表示するための画像または映像として描画され得る3Dシーンを含んでもよい。たとえば、3Dシーンは、ポリゴンメッシュとして表される1つ以上のオブジェクトを含み得る。ポリゴンメッシュは、色および画像など、様々な表面テクスチャと対応付けられてもよい。また、3Dシーンは、たとえば、3Dシーンを描画する際に使用される光源など、その他の情報を含んでもよい。
【0035】
AR/VRアプリケーション120は、フォービエイテッドレンダリングエンジン122を用いて、AR/VRコンテンツ126に基づいて、ディスプレイ装置114上に表示するための画像を生成してもよい。いくつかの実装形態では、フォービエイテッドレンダリングエンジン122は、メモリ110に格納された命令を含み、当該命令は、プロセッサアセンブリ112によって実行されると、プロセッサアセンブリ112に、本明細書に記載の動作を実行させる。たとえば、フォービエイテッドレンダリングエンジン122は、AR/VRコンテンツ126の3Dシーンに基づいて、フォービエイテッド画像を生成してもよい。フォービエイテッド画像は、視覚系の変化する視力(すなわち、ユーザの目の中心窩によって知覚されると予想される画像の一部の精度レベルは、ユーザの目のその他の領域によって知覚されると予想される画像の部分よりも高い)に近似するよう、精度レベルが変化する。少なくともいくつかの実装形態では、フォービエイテッドレンダリングエンジン122は、注視点からの距離が大きくなるにつれて精度が滑らかに低下する画像を生成する。
【0036】
たとえば、フォービエイテッド画像は、精度レベルを変えて3Dシーンを描画することによって生成された画像であってもよい。この画像は、2次元(2D)(たとえば、2Dアレイの画素)であってもよい。いくつかの実装形態では、この画像は、HMDの装着者が3D環境を知覚するよう奥行きを伝えるためにHMD104によって表示され得る立体視画像である。たとえば、立体視画像は、目ごとに画像の別々の部分を含んでもよい。これらの部分は、わずかに異なる物の見え方からの(たとえば、左目および右目の物の見え方からの)同じシーンを表してもよい。
【0037】
画像を描画することは、カメラ位置とビューポート(または、像面)とを特定することを含んでもよい。ビューポートを通して、3Dシーンの2D画像が描画されることになる。ビューポートとは、3Dシーンが見えるウィンドウのようなものである。ビューポートの寸法は、所望の2D画像の寸法に対応し、2D画像の各画素をビューポート上の位置にマッピングできる。次に、ビューポートの対応する位置において何がカメラで見えるかに基づいて、各画素の色値を特定してもよい。
【0038】
カメラの位置およびビューポートに基づいて、3Dシーンが画面領域座標に投影され得る(たとえば、画像内の縦の位置および横の位置に対応する2D座標)。たとえば、3Dシーンに含まれる各エンティティ(または、頂点などのエンティティの一部)は、エンティティからカメラまで延在する線分とビューポートとの交差に基づいて、ビューポート上の特定の位置にマッピングされてもよい。一部の3Dシーンでは、シーンのいくつかの部分がビューポートに交差しない場合がある。これらの部分は、描画された2D画像の一部とはならない。立体視画像では、ビューポートおよびカメラ位置は、左目用画像部分と右目用画像部分とでわずかに異なってもよい。
【0039】
フォービエイテッド画像は、少なくとも1つの注視点を含んでもよい。この注視点は、画像において、画像のその他の部分よりも精度レベルが高い点であってもよい。たとえば、より高精度レベルの部分は、より低精度レベルの部分の解像度よりも高い解像度で描画されてもよい。いくつかの実装形態では、注視点は、画像内の画面領域座標である。いくつかの実装形態では、注視点は、ユーザが見ている方向に基づいて特定される画像内の画面領域座標である。いくつかの実装形態では、注視点は、ユーザが通して見るレンズのプロパティに基づいて特定される画像内の画面領域座標である。いくつかの実装形態では、注視点は、3Dシーン内の3D座標である。これらの実装形態では、注視点は、画面領域座標に投影されてもよい。
【0040】
少なくともいくつかの実装形態では、フォービエイテッドレンダリングエンジン122は、アイトラッカー124に少なくとも一部基づいて、ユーザが見ている注視点を特定してもよい。いくつかの実装形態では、アイトラッカー124は、メモリ110に格納された命令を含み、当該命令は、プロセッサアセンブリ112によって実行されると、プロセッサアセンブリ112に、本明細書に記載の動作を実行させる。たとえば、アイトラッカー124は、ユーザの視線が向けられているディスプレイ装置114上の場所を特定してもよい。アイトラッカー124は、センサシステム118の撮像装置によって撮影された画像におけるユーザの瞳孔の位置を識別および追跡することに基づいてこの特定を行ってもよい。
【0041】
AR/VRアプリケーション120は、センサシステム118のIMU128および/またはその他のコンポーネントから受信した入力に基づいて、AR/VR環境を更新してもよい。たとえば、IMU128は、コンピューティングデバイス102および/またはディスプレイ装置114の動作、動き、および/または加速度を検出してもよい。IMU128は、たとえば、加速度計、ジャイロスコープ、磁力計、およびその他のこのようなセンサなど、様々な異なる種類のセンサを含んでもよい。HMD104の位置と向きとは、IMU128に含まれるセンサが提供するデータに基づいて検出および追跡されてもよい。HMD104の検出された位置および向きによって、ユーザの視線方向と頭部の動きとをシステムが検出および追跡できてもよい。検出された視線方向および頭部の動きに基づいて、AR/VRアプリケーション120は、AR/VR環境を更新して、変更されたユーザの向きおよび/または位置を環境内で反映してもよい。
【0042】
図1では、コンピューティングデバイス102とHMD104とは別個のデバイスと示されているが、いくつかの実装形態では、コンピューティングデバイス102は、HMD104を備えてもよい。図1に示すように、いくつかの実装形態では、コンピューティングデバイス102は、ケーブルを介してHMD104と通信を行う。たとえば、コンピューティングデバイス102は、音声信号および映像信号を、ユーザに表示するためにHMD104に送信してもよく、HMD104は、動作、位置、および/または向き情報をコンピューティングデバイス102に送信してもよい。いくつかの実装形態では、HMD104は、コンピューティングデバイス102が載置され得るチャンバを含む。いくつかの実装形態では、ユーザは、HMD104を装着したまま(たとえば、HMD104内のレンズまたは絞りを通して)コンピューティングデバイス102のディスプレイ装置114を見ることができる。たとえば、ディスプレイ装置114の画面を、HMDを通して見たときにユーザの左目でのみ見ることができる第1画像と、HMDを通して見たときにユーザの右目でのみ見ることができる第2画像とに分割することによって、コンピューティングデバイス102とHMD104とは、一体となって立体視ビューアとして機能できる。
【0043】
AR/VRコンテンツソース106は、AR/VRコンテンツを生成して出力してもよい。AR/VRコンテンツは、コンピューティングデバイス102など、1つ以上のコンピューティングデバイスにネットワーク108を介して配布または送られてもよい。例示的な実装形態では、AR/VRコンテンツは、3次元シーンおよび/または画像を含む。これに加えて、AR/VRコンテンツは、1つ以上のコンピューティングデバイスにストリーム配信または配布される音声信号/映像信号を含んでもよい。また、AR/VRコンテンツは、コンピューティングデバイス102上で動作して3Dシーン、音声信号、および/または映像信号を生成するAR/VRアプリケーションを含んでもよい。例示的な実装形態例によると、没入型マルチメディアまたはコンピュータによってシミュレーションされた生活とも称される仮想現実(VR)は、少なくともいくつかの場合、実世界または想像した世界もしくは環境における場所にある環境もしくは物理的存在を、程度を変えて再現または模擬してもよい。少なくともいくつかの場合、拡張現実(AR)は、コンピュータによって生成された画像を実世界のユーザの視野上に重ね合わせてもよい。
【0044】
ネットワーク108は、インターネット、ローカルエリアネットワーク(LAN)、ワイヤレスローカルエリアネットワーク(WLAN)、および/またはその他のネットワークであってもよい。コンピューティングデバイス102は、たとえば、音声信号/映像信号を受信してもよい。音声信号/映像信号は、例示的な実装形態例におけるVRコンテンツの一部として提供されてもよい。
【0045】
図2は、人PがHMD104を通してVR環境202を体験している物理空間200の三人称視点である。この例では、ユーザがHMD104を装着しながらディスプレイ装置114を見ることができるよう、コンピューティングデバイス102は、HMD104内に配置されている。VR環境202は、コンピューティングデバイス102によって生成されて、コンピューティングデバイス102のディスプレイ装置114上に表示される。
【0046】
VR環境は、フレーム204など、フォービエイテッドレンダリングエンジン122によって生成されるフォービエイテッドフレームを含む。フォービエイテッドフレームの精度レベルは、注視点206からの距離が大きくなるについて次第に下がっていく。フレーム204から分かるように、注視点206の近くの画質は、注視点から離れた(たとえば、フレーム204のエッジの近くの)画質よりも高い。フォービエイテッドフレームの一部はより低精度レベルで描画されるので、フォービエイテッドフレームの描画には、より高精度レベルでフレームをすべて描画するのに必要なプロセッササイクルよりも少ないプロセッササイクルを必要とする。これに加えて、より低精度レベルで描画されるフォービエイテッドフレームの領域は、人の周辺視野に表示されることになるので、人は、精度の低下に気づき難い。さらには、精度が滑らかに低下するため、フォービエイテッドフレーム204などのフォービエイテッドフレームは、境界アーティファクトまたは精度レベルが変化すると生じるその他のアーティファクトがない。
【0047】
図3Aおよび図3Bは、たとえば、図2においてユーザが装着しているHMD104など、例示的なHMD300の斜視図であり、図3Cは、HMD300とともに使用できる例示的な携帯電子機器302を示す図である。
【0048】
携帯電子機器302は、携帯電子機器302の内蔵コンポーネントが収容される筐体303と、筐体303の外面にある、ユーザが利用可能なユーザインタフェース304とを備えてもよい。ユーザインタフェース304は、ユーザのタッチ入力を受け付けるように構成されたタッチ面306を備えてもよい。また、ユーザインタフェース304は、たとえば、実行ボタン、つまみ、ジョイスティックなど、ユーザによる操作のためのその他のコンポーネントを含んでもよい。いくつかの実装形態では、ユーザインタフェース304の少なくとも一部がタッチスクリーンとして構成されてもよく、ユーザインタフェース304の当該一部は、ユーザインタフェースの項目をユーザに表示するように、また、タッチ面306上のユーザからのタッチ入力を受け付けるように構成される。また、携帯電子機器302は、たとえば、ユーザインタフェース304において受け付けたユーザ入力に応答して、たとえば、ビームまたは光線などの光を筐体303のポートを通して選択的に発するように構成された光源308を備えてもよい。
【0049】
HMD300は、フレーム320に連結された筐体310を備えてもよく、筐体310は、こちらもフレーム320に連結された、たとえばヘッドフォンに搭載されたスピーカを含む、音声出力装置330を有する。図3Bでは、筐体310の前方部分310aが、筐体310に収容された構成要素のうちのいくつかが見えるよう、筐体310のベース部310bから離れるように回転する。ディスプレイ340は、筐体310の前方部分310aの内部に面した側に搭載されてもよい。いくつかの実装形態では、ディスプレイ340は、図1のコンピューティングデバイス102など、前部310aとベース部310bとの間に挿入されて固定されるコンピューティングデバイスからのディスプレイ装置である。
【0050】
レンズ350は、筐体310内の、前方部分310aが筐体310のベース部310bに対して閉位置のときのディスプレイ340とユーザの目との間に搭載されてもよい。いくつかの実装形態では、HMD300は、様々なセンサを含む検知システム360、および、プロセッサ390とHMD300の操作を容易にするための様々な制御システム装置とを備える制御システム370を備えてもよい。
【0051】
いくつかの実装形態では、HMD300は、静止画および動画を撮影するためのカメラ380を備えてもよい。カメラ380が撮影した画像は、没入型環境に相対的な実世界もしくは物理環境におけるユーザおよび/もしくは携帯電子機器302の物理的な位置を追跡するのに役立てるために利用されてもよく、ならびに/または透過(pass through)モードでディスプレイ340上でユーザに表示されてもよく、実世界とコンピュータによって生成されたイメージからの画像の組合せを含む拡張現実環境を生成できるようになる。いくつかの実装形態では、透過モードを用いて、HMD300を外さないで、または、HMD300の設定を変更して筐体310をユーザの視線から外さないで、ユーザを一時的に没入型環境を離れてさせて実環境に戻すことができる。
【0052】
いくつかの実装形態では、検知システム360は、たとえば、加速度計、ジャイロスコープ、磁力計、およびその他のこのようなセンサなど、様々な異なる種類のセンサを含むIMU(Inertial Measurement Unit)362を含んでもよい。HMD300の位置および向きは、IMU362に含まれるセンサが提供するデータに基づいて検出および追跡されてもよい。HMD300の検出された位置および向きによって、システムは、ユーザの頭部の視線方向と動きとを検出および追跡でき得る。
【0053】
いくつかの実装形態では、HMD300は、ユーザの目線を検出および追跡するための視線トラッキングデバイス365を備えてもよい。視線トラッキングデバイス365は、たとえば、ユーザの目、または、瞳孔など、ユーザの目の特定部分の画像を撮影するための1つまたは複数のイメージセンサ365Aを備えて、ユーザの視線の方向および動きを検出および追跡してもよい。いくつかの実装形態では、HMD300は、検出された視線が、AR体験または没入型VR体験における対応するやり取りに変換されるユーザ入力として処理されるよう、構成されてもよい。いくつかの実装形態では、HMD300は、ARまたはVR環境のフォービエイテッドレンダリングにおいて使用するための注視点を、ユーザの検出された視線を用いて特定するように構成される。
【0054】
本明細書において説明したシステムおよび技術のさまざまな実装形態は、デジタル電子回路、集積回路、専用に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合せで実現できる。これらのさまざまな実装形態は、データおよび命令を送受信するために連結された特定用途プロセッサまたは汎用プロセッサであり得る少なくとも1つのプログラム可能なプロセッサと、ストレージシステムと、少なくとも1つの入力装置と、少なくとも1つの出力装置とを備えるプログラム可能なシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムでの実装を含み得る。
【0055】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる)は、プログラム可能なプロセッサ用の機械命令を含み、高レベルの手続き形言語および/もしくはオブジェクト指向プログラミング言語で、ならびに/またはアセンブリ言語/機械言語で実現できる。本明細書において使用するとき、用語「機械読み取り可能な媒体」および「コンピュータ読み取り可能な媒体」は、機械命令および/またはデータを、機械読み取り可能な信号として機械命令を受け付ける機械読み取り可能な媒体を含むプログラム可能なプロセッサに提供するために使用される任意のコンピュータプログラムプロダクト、装置、および/またはデバイス(たとえば、磁気ディスク、光学ディスク、メモリ、PLD(Programmable Logic Devices))を指す。用語「機械読み取り可能な信号」は、機械命令および/またはデータをプログラム可能なプロセッサに提供するために使用される任意の信号を指す。
【0056】
ユーザとのやり取りを可能にするために、本明細書に記載のシステムおよび技術は、ユーザに情報を表示するための表示装置(たとえば、LCD(Liquid Crystal Display)、OLED(Organic Light Emitting Diode)ディスプレイ、または別の種類のディスプレイ)と、ユーザがコンピュータに入力を行えるキーボードおよびポインティングデバイス(たとえば、マウスまたはトラックボール)とを備えたコンピュータ上に実装され得る。その他の種類のデバイスを使ってユーザとのやり取りを可能にすることもでき、たとえば、ユーザに提供されるフィードバックは、任意の形式の感覚フィードバック(たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であり得、ユーザからの入力は、音響入力、音声入力、触覚入力など、任意の形式で受け付けられ得る。
【0057】
本明細書に記載のシステムおよび技術は、バックエンドコンポーネント(たとえば、データサーバ)を備えるコンピュータシステム、ミドルウェアコンポーネント(たとえば、アプリケーションサーバ)を備えるコンピュータシステム、フロントエンドコンポーネント(たとえば、本明細書に記載のシステムおよび技術の実装形態とユーザがやり取りできるグラフィカルユーザーインターフェースまたはウェブブラウザを有するクライアントコンピュータ)を備えるコンピュータシステム、またはこのようなバックエンドコンポーネント、ミドルウェアコンポーネント、フロントエンドコンポーネントの任意の組み合わせで実現されてもよい。当該システムのコンポーネントは、デジタルデータ通信(たとえば、通信ネットワーク)の任意の形式または媒体によって相互接続されてもよい。通信ネットワークとして、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、およびインターネットなどが挙げられる。
【0058】
コンピュータシステムは、クライアントとサーバとを含み得る。クライアントとサーバとは、一般に、互いから離れており、通常、通信ネットワークを通じてやり取りを行う。クライアントとサーバとの関係は、それぞれのコンピュータ上で動作し、クライアントとサーバとの関係を互いに有するコンピュータプログラムによって成り立つ。
【0059】
本明細書に記載の実装形態に係る、滑らかに変化するフォービエイテッド画像を描画する方法400を、図4に示す。方法400は、フォービエイテッドレンダリングエンジン122の実装形態によって実行されてもよい。
【0060】
動作402において、3Dシーンを取り出す。上述したように、3Dシーンは、メッシュおよび光源を含む複数のオブジェクト含んでもよい。メッシュは、三角形など、頂点によって規定される多角形の面から形成されてもよい。頂点の各々は、たとえば、3次元空間にX座標、Y座標、およびZ座標を有してもよい。面は、3つ、または、いくつかの実装形態では、3つ以上の同一面上の頂点によって規定され得る。メッシュは、複数の面によって規定され得、当該複数の面のうちのいくつかは、頂点を共有してもよい。
【0061】
3Dシーンは、ローカルメモリから取り出されてもよく、または、AR/VRコンテンツソース106など、別のコンピューティングデバイスから取り出されてもよい。3Dシーンを取り出すと、メッシュの面の少なくとも一部の面がテッセレートされてもよい。たとえば、より大きなメッシュ面(たとえば、予め定められた閾値よりも大きな表面積を有するメッシュにおける面)がテッセレートされて当該面を複数のさらに小さい面に分割されてもよい。このテッセレーションによって、さらなる頂点とより短いエッジが面上に生じることになる。ワープ動作によって、直線を曲線に曲げられる可能性があるので、エッジが長すぎる場合、視覚的アーティファクトが生じる可能性がある。より大きな表面をテッセレートすることによって、エッジを曲げることが問題にならなくなる。これに加えて、いくつかの実装形態では、テッセレーションは、テッセレーションシェーダまたはジオメトリシェーダを用いてGPUによって行われる。
【0062】
いくつかの実装形態では、画素当たりの誤り訂正を適用して、三角形のエッジがゆがめられることによって生じた歪みに対処できる。たとえば、フォービエイテッドレンダリング時にエラー値を計算して、出力画素値のアルファチャンネルに格納できる。エラー値は、ベクトルの補間された位置を画素当たりの計算によって生成された値と比較することよって算出できる。次に、最終画像の生成時、誤り訂正を適用できる。
【0063】
動作404において、注視点を特定する。いくつかの実装形態では、注視点は、アイトラッカー124など、視線トラッキング技術を利用して特定される。ユーザの目が視野の周辺を移動すると、それに応じて注視点が移動する。いくつかの実装形態では、注視点は、HMD104のレンズに基づいて特定される。たとえば、注視点は、レンズが最も高い視力を提供する点であってもよい。いくつかの実装形態では、注視点は、レンズの他の部分よりも視力が高い部分に対応する。たとえば、注視点は、レンズの90%、レンズの95%、またはレンズの99%よりも視力が高いレンズの部分の中点として選択されてもよい。いくつかの実装形態では、ユーザの目の各々について別個の注視点が識別される。
【0064】
動作406において、画面領域から中間の圧縮された空間まで3Dシーンの頂点をゆがめる。いくつかの実装形態では、頂点をゆがませることは、非線形関数を用いて頂点の座標を画面領域から圧縮された空間に変換することを含む。いくつかの実装形態では、このゆがませることは、魚眼レンズを適用することに似た効果がある。少なくともいくつかの実装形態では、ワープ関数は、GPU頂点シェーダによって適用される。
【0065】
少なくともいくつかの実装形態では、ゆがませることは、各頂点を画面座標に投影することによって行われる。画面座標は、-1と1との間のX画面座標値およびY画面座標値によって規定されてもよい。次に、注視点を原点とする画面座標系を基準として、投影された座標を再算出する。投影された座標は、-1と1との間の座標値を引き続き有するよう、スケール変更される。次に、非線形ワープ(変換)関数に従って、投影された座標を変換する。次に、(すなわち、注視点とは反対の)画面の中心に換算して、変換された座標値を再算出し、-1と1との間の値を有するように再びスケール変更される。次に、頂点を3Dシーンに再投影する。
【0066】
非限定例として、同次座標の頂点(0,0.6,1,2)、(-0.6,0,1,2)、(0.6,0,1,2)によって記述された三角形を(ポストビューイング変換)考える。2D画面の座標は、(0,0.3)、(-0.3,0)、(0.3,0)である。注視点を(0.1,0)とする。(この例では、わかりやすくするために、注視点は、X軸上に置かれており、y座標の再変換は必要ない。)x間隔[-1,0.1]は、[-1,0]に再変換され、[0.1,1]は、[0,1]に再変換される。よって、再変換された頂点は、((0-0.1)/1.1,(-0.3-0.0)/1),((-0.3-0.1)/0.9,(0-0)/1),((0.3-0.1)/0.9,(0-0)/1)となる。これらを簡素化したものが、(-0.09,0.3)、(-0.36,0)、(0.22,0)である。たとえば、t(d)に対して√d(変換関数)を用いると、これらは、(-0.3,0.55)、(-0.6,0)、(0.47,0)となる。ここでも、これらの頂点は、次のように、画像の中心を原点とする座標系に再変換される:((-0.30+0.1)×1.1,(0.55+0)×1),((-0.6+0.1)×1.1,(0+0)×1),((0.47+0.1)×0.9,(0+0)×1)または(-0.22,0.55)、(-0.55,0)、(0.51,0)。最後に、次に、これらの頂点を、(-0.44,1.1,1,2)、(-1.11,0,1,2)、(1.03,0,1,2)のように3D同次座標に再投影する。
【0067】
図5Aおよび図5Bは、例示的なワープ関数が画像をサンプリングする様子を示す概略図である。図5Aでは、オーバーレイ500は、複数の円を含む。円の各々は、ゆがめられた画像を生成するためにサンプリングされる基礎となる画像空間(図示せず)の領域を表す。オーバーレイ500は、シーンの注視点を中心に位置決めされる。図5Aから分かるように、オーバーレイ500の中心に近いほど円が小さくなり、画素を生成するために使用される基礎となる画像空間の領域も同様に小さくなる。オーバーレイ500における円は、中心(注視点)から離れるにつれて大きくなり、ゆがめられた画像に含まれる1つの画素を生成するために基礎となる画像からサンプリングされる画素の数も同様に増える。図5Bのオーバーレイ502は、オーバーレイ500が円ではなく四角形状の領域を含むことを除いて、オーバーレイ500と同様である。ここでも、注視点から離れた領域ほど大きいため、これらの離れた領域に含まれる1つの画素を生成するためには、より多くの画素がサンプリングされる。
【0068】
いくつかの実装形態では、画面領域に頂点を投影して、投影された頂点のX座標およびY座標と注視点のX座標およびY座標との差分を特定する。本明細書における例では、投影された頂点のX座標と注視点のX座標との差を、X’と称する。同様に、投影された頂点のY座標と注視点のY座標との差を、Y’と称する。いくつかの実装形態において用いられる非線形ワープ関数の一例は、対数極座標変換である。Xデルタ、Yデルタである場合、その座標のゆがめられた座標を表すと、(ρ,θ)となる。
【0069】
【数1】
【0070】
この例では、対数極座標変換は、連続的であり、データ整理を含まない。データ整理は、中間の(ゆがめられた)座標を表すものを有限にサンプリングした結果である。その他のワープ関数を用いてもよい。いくつかの実装形態では、ワープ関数は、投影された頂点と注視点との間のラジアル距離に応じて変化する非線形変換である。図6は、いくつかの例示的なワープ関数のプロットを示すグラフ600を示す。プロットは、例示的なワープ関数の各々によって実行されるマッピングを示す。グラフ600のX軸は、圧縮されていない空間における注視点からの距離であり、グラフ600のY軸は、圧縮された(ゆがめられた)空間における注視点からの距離である。グラフ600は、プロット602aと、プロット604aと、プロット606aと、プロット608aと、プロット610aとを含む。プロット602aは、関数602bを表す。プロット604aは、関数604bを表す。プロット606aは、関数606bを表す。プロット608aは、関数608bを表す。プロット610aは、関数610bを表す。
【0071】
プロットの各々は、注視点からの距離に対する関数を表し、当該距離は、rとして表される。特定の頂点について、rは、下記の式を用いて算出され得る。
【0072】
【数2】
【0073】
いくつかの実装形態では、距離rは、画面領域への投影後の頂点の位置と(画面領域での)注視点との間の投影距離である。
【0074】
プロットの傾斜が45度よりも大きい場合、圧縮されていない画面領域は、圧縮された空間では膨張する。これらの領域は、最終画像において、より高解像度で描画されることになる。プロットの傾斜が45度よりも小さい場合、圧縮されていない画面領域は、圧縮された空間では縮小する。これらの領域は、最終画像において、より低解像度で描画されることになる。図6に示すプロットおよびワープ関数は、例である。いくつかの実装形態においてその他のワープ関数を用いてもよい。たとえば、いくつかの実装形態は、注視点(r)からの距離の様々な二次多項式または三次多項式をワープ関数として用いてもよい。これに加えて、いくつかの実装形態は、log(r+1)などの対数ワープ関数、または√rなどの根ワープ関数を用いる。
【0075】
これに加えて、いくつかの実装形態は、距離(r)ではなく、X(X’)における注視点からの距離およびY(Y’)における注視点からの距離のワープ関数を含む。これらの例では、縦の次元でワープは、横の次元とは異なるように実行され得る。これに加えて、いくつかの実装形態は、非対称ワープ関数を含む。たとえば、非対称ワープ関数を用いて、注視点よりも上にある頂点を注視点よりも下にある頂点とは異なるようにゆがませることができる。これに加えて、非対称ワープ関数を用いて、(たとえば、ユーザの鼻によって遮られる可能性のある領域をより大きくゆがませて、視野のその他の領域により多くの解像度を残しておくために)注視点の左側の頂点を、注視点の右側の頂点とは異なるようにゆがませることができる。
【0076】
ここで図4に戻ると、動作408において、ゆがめられた頂点に基づいて中間画像を描画する。いくつかの実装形態では、この中間画像は、所望の最終画像の解像度よりも低い解像度で描画される。いくつかの実装形態では、GPUの画素シェーダが、圧縮された(ゆがめられた)空間にメッシュの表面(たとえば、三角形)を描画する。3Dシーンによっては、画像を描画することは、表面の少なくとも一部にテクスチャマップとして画像を適用することを含んでもよい。この画像は、マルチサンプリングアンチエイリアシング(MSAA:Multi-Sample Anti-Aliasing)を用いて描画されてもよい。たとえば、いくつかの実装形態は、4xMSAAまたは8xMSAAを用いて画像を描画する。圧縮された(ゆがめられた)画像に対してMSAAが実行されるので、MSAAを実行するために必要なプロセッササイクルは、最終画像の画素の各々に対してMSAAを実行するために必要なプロセッササイクルよりも少ない。いくつかの実装形態では、MSAAは、GPUによって実行される。
【0077】
いくつかの実装形態では、中間の(ゆがめられた)画像の画素数は、所望の最終画像の約4分の1である。たとえば、中間画像は、縦の次元の所望の最終画像の画素数の半分の画素と、横の次元の所望の最終画像の画素数の半分の画素とを有してもよく、所望の最終画像の画素数の4分の1の画素数になる。描画される画素の数が減るので、中間画像を描画するのに必要な時間および/またはプロセッササイクルが減ることになる。この例では、フルサイズの最終画像を描画するのに必要な時間および/またはプロセッササイクルの約の4分の1の時間および/またはプロセッササイクルが中間画像を描画するのに必要になる。
【0078】
いくつかの実装形態では、中間画像に含まれる画素の数のフルサイズの最終画像に含まれる画素の数に対するその他の割合を用いる。たとえば、フルサイズの最終画像のアスペクト比のほうが幅広いとき、フルサイズの最終画像のより広い部分がユーザの周辺視野に含まれ、より低精度レベルで描画できるため、画素数をさらに低減することが可能である。いくつかの実装形態では、中間画像用の解像度を選択するために、最終画像の所望の解像度、最終画像のアスペクト比、注視点を特定するためにアイトラッカーを使用可能かどうか、HMDに含まれるレンズの視力プロファイル、および動作406において用いられるワープ関数を含む、様々な要因が用いられる。
【0079】
図7Aは、中間(ゆがめられた)画像700の例を示す図である。図7Bは、画像702においてゆがめられていない対応するシーンを示す図である。また、図7Bは、中間画像700をゆがませるための注視点704を含む。図7Aから分かるように、注視点(たとえば、ライオンの頭部)の近くのシーンの部分は、中間画像700の大部分を占めるようにゆがめられて(すなわち、より多くの画素/より高解像度で描画されて)おり、注視点よりも離れたシーンの部分(たとえば、カーテン)は、画像をあまり占めないようにゆがめられている(すなわち、より少ない画素/より低解像度で描画されている)。
【0080】
ここで図4に戻ると、動作410において、中間画像のゆがみを解消して最終フォービエイテッド画像を生成する。いくつかの実装形態では、最終フォービエイテッド画像に含まれる画素ごとの画素値は、中間画像における対応する位置において識別され得る。たとえば、動作406で用いられたワープ関数と同じワープ関数を最終フォービエイテッド画像に含まれる画素位置に適用して中間画像における画素値の対応する位置を識別できる。いくつかの実装形態では、最終フォービエイテッド画像が描画されると、GPUの画素シェーダがこのワープ関数を実行して中間画像から画素値を取り出す。いくつかの実装形態では、ゆがみ解消時、フォービアル(foveal)領域内でバイリニアフィルタリングが用いられる。
【0081】
方法400の実装方法は、ラップトップコンピュータ上で標準GPUを用いてリアルタイムでフォービエイテッド映像レンダリングを実行するために使用できる。このリアルタイム実行によって、応答性に優れたAR環境および/またはVR環境の生成が可能になる。
【0082】
いくつかの実装形態では、映像を描画するとき、最終画像の少なくとも周辺領域(たとえば、注視点からより遠い領域)においてテンポラルアンチエイリアシングが使用される。たとえば、テンポラルアンチエイリアシングの方法とは、前フレームとのアルファブレンディングを利用することである。いくつかの実装形態では、移動がないときはアンチエイリアシングがより滑らかになり、カメラが移動しているときは一時的なフェージングがより短くなるよう、現在のフレームと前フレームとの間の透明度は、カメラの移動量に従って変化する。
【0083】
図8は、いくつかの実装形態に係る、例示的なフォービエイテッドレンダリング処理800の概略図である。処理800は、たとえば、フォービエイテッドレンダリングエンジン122によって実行され、ARまたはVR環境用の画像または映像を生成してもよい。この処理への入力の1つは、入力3Dシーン802である。いくつかの実装形態では、頂点シェーダ、ジオメトリシェーダ、またはフラグメントシェーダなど、GPUのシェーダによって非線形ワープ関数が入力3Dシーン802の頂点に適用されて、(この例の画像の中心に示される)注視点を中心にゆがめられた3Dシーン804が生成される。いくつかの実装形態では、画素シェーダは、ゆがめられた3Dシーン804を低解像度で描画して中間(ゆがめられた)画像806を生成する。いくつかの実装形態では、アンフォービエイティング(un-foveating)シェーダ(たとえば、本明細書に記載のマッピングを行うように構成されたGPUの画素シェーダ)は、中間画像806を読み出してゆがみを解消し、フル解像度で最終画像808を生成する。いくつかの実装形態では、映像を生成するとき、テンポラルブレンディングを用いて、注視点からより遠い領域に前フレームを混ぜ合わせる。これに加えて、いくつかの実装形態では、バイリニアフィルタリングを用いて、最終画像808の注視点により近い部分を生成する。
【0084】
図9は、いくつかの実装形態に係る、例示的なフォービエイテッドレンダリング処理900の概略図である。処理900は、たとえば、フォービエイテッドレンダリングエンジン122によって実行され、ARまたはVR環境用の画像または映像を生成してもよい。この処理に対する入力のうちの1つは、出力3Dメッシュ902である。メッシュ902は、AR/VRアプリケーション120などのアプリケーションによって生成される3Dシーンのコンポーネントであってもよい。メッシュ902の頂点を変換してメッシュをゆがませて、ゆがめられたメッシュ904を生成する。たとえば、ユーザの視線に基づいて特定された注視点からの頂点の距離に基づく非線形ワープ関数を適用することによって、メッシュ902の頂点がゆがめられてもよい。次に、ゆがめられたメッシュ904を描画してより低解像度の中間画像906を生成する。次に、中間画像を逆にゆがめて(ゆがみを解消して)、描画されたメッシュの最終画像908を生成する。
【0085】
上記例の多くは、コンピュータによって生成された、3次元シーンからの画像/映像を描画することに関するが、いくつかの実装形態では、本明細書に記載の技術およびシステムは、現実シーンのフォービエイテッドバージョンの標準的な写真および映像を描画するために使用される。画像/映像が画面全体を覆うことになる場合、フォービエイテッド画像の画素ごとにソース画像における元の位置を計算する画素シェーダを用いて画像を描画できる。画像/映像が3Dシーンに統合されることになる場合、メッシュのテクスチャとして利用して画像/映像とともにメッシュワープ処理を用いることができる。動的画像または映像を描画するために、いくつかの実装形態は、バッファを用いて(たとえば、リモートソースまたはハードドライブからの)画像/映像データをキャッシュする。ハードドライブへのアクセスまたはリモートソースからのデータ受信に伴う遅延なく、バッファから画像/映像データを素早く取り出すことができるため、バッファによって、滑らかに描画できるようになる。
【0086】
図10は、本明細書に記載の技術とともに用いられ得るコンピュータデバイス1000およびモバイルコンピュータデバイス1050の例を示す図である。コンピューティングデバイス1000は、プロセッサ1002と、メモリ1004と、記憶装置1006と、メモリ1004および高速拡張ポート1010に接続された高速インタフェース1008と、低速バス1014および記憶装置1006に接続された低速インタフェース1012とを備える。構成要素1002、1004、1006、1008、1010、および1012の各々は、様々なバスを用いて互いに接続されており、共通のマザーボード上に実装されてもよく、またはその他の方法で適宜実装されてもよい。プロセッサ1002は、コンピューティングデバイス1000内で実行するための命令を処理することができ、命令は、高速インタフェース1008に連結されたディスプレイ1016など、外付けの入出力装置上のGUIのためのグラフィック情報を表示するためのメモリ1004に格納された命令または記憶装置1006上に格納された命令を含む。その他の実装形態では、複数のプロセッサおよび/または複数のバスが複数のメモリおよび複数種類のメモリとともに適宜利用されてもよい。また、(たとえば、サーババンク、ブレードサーバ群、または多重プロセッサシステムなどとしての)必要な動作の一部を各々が提供する複数のコンピューティングデバイス1000が接続されてもよい。
【0087】
メモリ1004は、コンピューティングデバイス1000内の情報を格納する。一実装形態では、メモリ1004は、1つまたは複数の揮発性記憶装置である。別の実装形態では、メモリ1004は、1つまたは複数の不揮発性記憶装置である。また、メモリ1004は、磁気ディスクまたは光ディスクなど、別の形態のコンピュータ読み取り可能な媒体であってもよい。
【0088】
記憶装置1006は、コンピューティングデバイス1000用の大容量ストレージを提供できる。一実装形態では、記憶装置1006は、フロッピー(登録商標)ディスク装置、ハードディスク装置、光ディスク装置、またはテープ装置、フラッシュメモリもしくは他の同様の固体メモリ装置、または、ストレージエリアネットワークもしくはその他の構成に含まれる装置を含む装置のアレイなど、コンピュータ読み取り可能な媒体であってもよく、または、当該コンピュータ読み取り可能な媒体を含んでもよい。情報担体にコンピュータプログラムプロダクトが有形に含まれ得る。また、このコンピュータプログラムプロダクトは、命令を含んでもよく、当該命令は、実行されると、上述した方法など、1つ以上の方法を実行する。情報担体は、メモリ1004、記憶装置1006、または、プロセッサ1002上のメモリなど、コンピュータ読み取り可能な媒体または機械読み取り可能な媒体である。
【0089】
高速コントローラ1008は、コンピューティングデバイス1000のための多くの帯域幅を必要とする動作を管理し、低速コントローラ1012は、より低帯域幅の多くを必要とする動作を管理する。このような機能の割振りは、例示に過ぎない。一実装形態では、高速コントローラ1008は、(たとえば、グラフィックスプロセッサまたはアクセラレータを通じて)メモリ1004、ディスプレイ1016に連結され、様々な拡張カード(図示せず)を受け付け得る高速拡張ポート1010に連結される。この実装形態では、低速コントローラ1012は、記憶装置1006および低速拡張ポート1014に連結される。様々な通信ポート(たとえば、USB、Bluetooth(登録商標)、Ethernet(登録商標)、無線Ethernet)を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナなどの1つ以上の入出力装置、または、スイッチもしくはルータなどのネットワーク装置に、たとえば、ネットワークアダプタを通じて連結されてもよい。
【0090】
コンピューティングデバイス1000は、図示したような複数の異なる形態で実現されてもよい。たとえば、標準的なサーバ1020として、または多くの場合、このようなサーバの群で実現されてもよい。または、ラックサーバシステム1024の一部として実現されてもよい。これに加えて、ラップトップコンピュータ1022など、パーソナルコンピュータで実現されてもよい。これに代えて、コンピューティングデバイス1000の構成要素は、デバイス1050など、モバイル機器(図示せず)に含まれるその他の構成要素と組み合わされてもよい。このようなデバイスの各々は、コンピューティングデバイス1000、1050のうちの1つ以上を含んでよく、互いに通信を行う複数のコンピューティングデバイス1000、1050によってシステム全体が構成されてもよい。
【0091】
コンピューティングデバイス1050は、特に、プロセッサ1052と、メモリ1064と、ディスプレイ1054などの入出力装置と、通信インタフェース1066と、送受信装置1068とを備える。デバイス1050には、追加ストレージを提供するためのマイクロドライブまたはその他の装置など、記憶装置が提供されてもよい。構成要素1050、1052、1064、1054、1066、および1068の各々は、様々なバスを用いて互いに接続されており、当該構成要素のうちのいくつかは、共通のマザーボード上に実装されてもよく、またはその他の方法で適宜実装されてもよい。
【0092】
プロセッサ1052は、メモリ1064に格納された命令を含む命令をコンピューティングデバイス1050内で実行できる。プロセッサは、別個の複数のアナログプロセッサおよびデジタルプロセッサを含むチップのチップセットとして実現されてもよい。プロセッサによって、たとえば、ユーザインタフェース、デバイス1050によって実行されるアプリケーション、およびデバイス1050による無線通信の制御など、デバイス1050のその他の構成要素間の協調が可能になってもよい。
【0093】
プロセッサ1052は、ディスプレイ1054に連結された制御インタフェース1058および表示インタフェース1056を通じてユーザと通信してもよい。ディスプレイ1054は、たとえば、TFT LCD(Thin-Film-Transistor Liquid Crystal Display)もしくはOLED(Organic Light Emitting Diode)ディスプレイ、またはその他の適切なディスプレイ技術であってもよい。表示インタフェース1056は、グラフィック情報およびその他の情報をユーザに提示するためのディスプレイ1054を駆動するための適切な回路を備えてもよい。制御インタフェース1058は、ユーザからコマンドを受信し、プロセッサ1052に実行を依頼するために当該コマンドを変換してもよい。これに加えて、デバイス1050のその他のデバイスとの近距離通信が可能になるよう、プロセッサ1052と通信する外部インタフェース1062が提供されてもよい。外部インタフェース1062によって、たとえば、いくつかの実装形態では有線通信、その他の実装形態では無線通信が可能になってもよく、また、複数のインタフェースが利用されてもよい。
【0094】
メモリ1064は、コンピューティングデバイス1050内の情報を格納する。メモリ1064は、1つまたは複数のコンピュータ読み取り可能な媒体、1つまたは複数の揮発性記憶装置、または、1つまたは複数の不揮発性記憶装置、のうちの1つ以上として実現され得る。また、拡張メモリ1074は、拡張インタフェース1072を通してデバイス1050に提供および接続されてもよい。拡張インタフェース1072は、たとえば、SIMM(Single In Line Memory Module)カードインタフェースを含んでもよい。このような拡張メモリ1074は、デバイス1050のための追加の記憶空間を提供してもよく、または、デバイス1050のためのアプリケーションまたはその他の情報も格納してもよい。具体的には、拡張メモリ1074は、上述した工程を実行または補助するための命令を含んでもよく、セキュアな情報も含んでもよい。よって、たとえば、拡張メモリ1074は、デバイス1050のためのセキュリティモジュールとして提供されてもよく、デバイス1050のセキュアな使用を可能にする命令がプログラムされていてもよい。これに加えて、ハッキングできない方法でSIMMカード上にID情報を置くなど、SIMMカードを介してセキュアなアプリケーションが追加情報とともに提供されてもよい。
【0095】
メモリは、たとえば、後述するフラッシュメモリおよび/またはNVRAMメモリを含んでもよい。一実装形態では、情報担体にコンピュータプログラムプロダクトが有形に含まれる。このコンピュータプログラムプロダクトは、命令を含み、当該命令は、実行されると、上述した方法など、1つ以上の方法を実行する。情報担体は、メモリ1064、拡張メモリ1074、またはプロセッサ1052上のメモリなど、コンピュータ読み取り可能な媒体または機械読み取り可能な媒体であり、たとえば、送受信装置1068または外部インタフェース1062を介して受信されてもよい。
【0096】
デバイス1050は、通信インタフェース1066を通して無線通信を行ってもよい。通信インタフェース1066は、必要であれば、デジタル信号処理回路を備えてもよい。通信インタフェース1066によって、とくに、GSM(登録商標)音声通話、SMS、EMS、もしくはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、またはGPRSなど、様々なモードまたはプロトコル下の通信が可能になってもよい。このような通信は、たとえば、無線周波数送受信装置1068を通して生じてもよい。これに加えて、Bluetooth、WiーFi、またはその他のこのような送受信装置(図示せず)を用いるなどして、近距離通信が生じてもよい。これに加えて、GPS(Global Positioning System)受信モジュール1070は、追加のナビゲーション関係または位置関係の無線データをデバイス1050に提供してもよい。追加のナビゲーション関係または位置関係の無線データは、デバイス1050上で実行するアプリケーションによって適宜利用され得てもよい。
【0097】
また、デバイス1050は、オーディオコーデック1060を用いて、音声による通信を行ってもよい。オーディオコーデック1060は、ユーザから音声情報を受け付け、使用可能なデジタル情報に変換してもよい。同様に、オーディオコーデック1060は、たとえば、デバイス1050のハンドセットにおいて、スピーカを通してなど、ユーザ用の音を生成してもよい。このような音は、音声電話通話からの音声を含んでもよく、録音音声(たとえば、音声メッセージ、音楽ファイルなど)を含んでもよく、デバイス1050上で動作するアプリケーションによって生成された音を含んでもよい。
【0098】
コンピューティングデバイス1050は、図示したような複数の異なる形態で実現されてもよい。たとえば、携帯電話1080として実現されてもよい。また、スマートフォン1082、携帯情報端末、または他の同様のモバイル機器の一部として実現されてもよい。
【0099】
本明細書において説明したシステムおよび技術のさまざまな実装形態は、デジタル電子回路、集積回路、専用に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合せで実現できる。これらのさまざまな実装形態は、ストレージシステム、少なくとも1つの入力装置、および少なくとも1つの出力装置とデータおよび命令を送受信するために連結された特定用途プロセッサまたは汎用プロセッサであり得る少なくとも1つのプログラム可能なプロセッサを備えるプログラム可能なシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムでの実現を含み得る。
【0100】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる)は、プログラム可能なプロセッサ用の機械命令を含み、高レベルの手続き形言語および/もしくはオブジェクト指向プログラミング言語で、ならびに/またはアセンブリ言語/機械言語で実現できる。本明細書において使用するとき、用語「機械読み取り可能な媒体」および「コンピュータ読み取り可能な媒体」は、機械読み取り可能な信号として機械命令を受け付ける機械読み取り可能な媒体を含むプログラム可能なプロセッサに機械命令および/またはデータを提供するために使用される任意のコンピュータプログラムプロダクト、装置、および/またはデバイス(たとえば、磁気ディスク、光学ディスク、メモリ、PLD(Programmable Logic Devices))を指す。用語「機械読み取り可能な信号」は、プログラム可能なプロセッサに機械命令および/またはデータを提供するために使用される任意の信号を指す。
【0101】
ユーザとのやり取りを可能にするために、本明細書に記載のシステムおよび技術は、ユーザに情報を表示するための表示装置(たとえば、LCD(Liquid Crystal Display)画面、OLED(Organic Light Emitting Diode))と、ユーザがコンピュータに入力を行えるキーボードおよびポインティングデバイス(たとえば、マウスまたはトラックボール)とを備えたコンピュータ上に実装され得る。その他の種類のデバイスを使ってユーザとのやり取りを可能にすることもでき、たとえば、ユーザに提供されるフィードバックは、任意の形式の感覚フィードバック(たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であり得、ユーザからの入力は、音響入力、音声入力、触覚入力など、任意の形式で受け付けられ得る。
【0102】
本明細書に記載のシステムおよび技術は、(たとえば、データサーバとしての)バックエンドコンポーネントを備えるコンピュータシステム、ミドルウェアコンポーネント(たとえば、アプリケーションサーバ)を備えるコンピュータシステム、フロントエンドコンポーネント(たとえば、本明細書に記載のシステムおよび技術の実装形態とユーザがやり取りできるグラフィカルユーザーインターフェースまたはウェブブラウザを有するクライアントコンピュータ)を備えるコンピュータシステム、または、このようなバックエンドコンポーネント、ミドルウェアコンポーネント、フロントエンドコンポーネントの任意の組み合わせを備えるコンピュータシステムで実現され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信(たとえば、通信ネットワーク)によって互いに接続され得る。通信ネットワークとして、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、インターネットなどが挙げられる。
【0103】
コンピュータシステムは、クライアントとサーバとを含み得る。クライアントおよびサーバは、一般に、互いから離れており、通常、通信ネットワークを通じてやり取りを行う。クライアントとサーバとの関係は、それぞれのコンピュータ上で動作し、クライアントとサーバとの関係を互いに有するコンピュータプログラムによって成り立つ。
【0104】
いくつかの実装形態では、図1に示すコンピューティングデバイスは、フレームレートを上げるおよび/または描画に必要なプロセッササイクルを減らすためにフォービエイテッドフレームを用いてARまたはVR環境を生成するための、仮想現実とインタフェース接続するセンサ(VRヘッドセット/HMD装置1090)を備え得る。たとえば、コンピューティングデバイス1020または図1に示すその他のコンピューティングデバイス上に含まれる1つ以上のセンサは、VRヘッドセット1090に入力を行うことができ、または、一般に、VR空間に入力を行うことができる。センサは、タッチ画面、加速度計、ジャイロスコープ、圧力センサ、生体センサ、温度センサ、温度センサ、および周辺光センサを含み得るが、これらに限定されない。コンピューティングデバイス1020は、これらのセンサを用いて、後にVR空間への入力として用いられ得る、VR空間におけるコンピューティングデバイスの絶対位置および/または検出された回転を特定することができる。たとえば、コンピューティングデバイス1020は、コントローラ、レーザーポインター、キーボード、武器など、仮想オブジェクトとしてVR空間に組み込まれてもよい。VR空間に組み込むときにコンピューティングデバイス/仮想オブジェクトをユーザが位置付けることによって、ユーザは、VR空間で仮想オブジェクトを特定の方法で見ことができるよう、コンピューティングデバイスを位置付けることができる。たとえば、仮想オブジェクトがレーザーポインターを表す場合、ユーザは、コンピューティングデバイスを実際のレーザーポインターであるかのように操作できる。ユーザは、コンピューティングデバイスを左右、上下、円を描いて動かすことなどができ、レーザーポインターを使用する場合と同様の方法で当該デバイスを使用できる。
【0105】
いくつかの実装形態では、コンピューティングデバイス1020上に備えられたまたは接続された1つ以上の入力装置をVR空間への入力装置として利用できる。入力装置は、タッチ画面、キーボード、1つ以上のボタン、トラックパッド、タッチパッド、ポインティングデバイス、マウス、トラックボール、ジョイスティック、カメラ、マイクロフォン、イヤホンもしくは入力機能付きのワイヤレスイヤホン、ゲームコントローラ、またはその他の接続可能な入力装置を含み得るが、これらに限定されない。コンピューティングデバイスがVR空間に組み込まれるときにコンピューティングデバイス1020上に備えられた入力装置とやり取りを行っているユーザは、VR空間で特定のアクションを起こさせることができる。
【0106】
いくつかの実装形態では、コンピューティングデバイス1020のタッチ画面をVR空間のタッチパッドとして描画できる。ユーザは、当該コンピューティングデバイス1020のタッチ画面とやり取りができる。このやり取りは、たとえば、VR空間で描画されたタッチパッド上の動きとして、VRヘッドセット1090において描画される。描画された動きは、VR空間の仮想オブジェクトを制御できる。
【0107】
いくつかの実装形態では、コンピューティングデバイス1020上に含まれた1つ以上の出力装置は、VR空間においてVRヘッドセット1090のユーザに出力および/またはフィードバックを提供できる。出力およびフィードバックは、視覚的、触覚的、または音声であり得る。出力および/またはフィードバックは、バイブレーション、点滅をオンオフさせること、および/または1つ以上のライトまたはストロボを点滅させること、アラームを鳴らすこと、チャイムを再生すること、曲を再生すること、および音声ファイルを再生することなどを含み得るが、これらに限定されない。出力装置は、バイブレーションモータ、振動コイル、圧電素子、静電デバイス、LED(Light Emitting Diode)、ストロボ、およびスピーカを含み得るが、これらに限定されない。
【0108】
いくつかの実装形態では、コンピューティングデバイス1020は、コンピュータによって生成された3D環境において、別のオブジェクトとして見えてもよい。ユーザによるコンピューティングデバイス1020とのやり取り(たとえば、タッチ画面を回転させる、振る、タッチする、タッチ画面の端から端まで指をスワイプすること)は、VR空間のオブジェクトとのやり取りとして解釈され得る。VR空間でのレーザーポインターの例では、コンピューティングデバイス1020は、コンピュータによって生成された3D環境において、仮想レーザーポインターとして見える。ユーザがコンピューティングデバイス1020を操作すると、VR空間のユーザは、レーザーポインターの動きが見える。ユーザは、コンピューティングデバイス1020上またはVRヘッドセット1090上のVR環境でのコンピューティングデバイス1020とのやり取りからフィードバックを受ける。
【0109】
いくつかの実装形態では、コンピューティングデバイス1020は、タッチ画面を備えてもよい。たとえば、ユーザは、タッチ画面上で起こる事を、VR空間内で起こる事と連動するよう真似できる特定のやり方でタッチ画面とやり取りできる。たとえば、ユーザは、ピンチするタイプの動作を使ってタッチ画面上に表示されたコンテンツをズームしてもよい。タッチ画面上のこのピンチするタイプの動作によって、VR空間で提供されている情報がズームされる。別の例では、コンピューティングデバイスは、コンピュータによって生成された3D環境において仮想ブックとして描画されてもよい。VR空間では、本のページをVR空間に表示することができ、ユーザの指をタッチ画面の端から端までスワイプさせることは、仮想ブックのページをめくる/フリップすることであると解釈され得る。各ページがめくられる/フリップされると、ページコンテンツの変化を見ることに加えて、本のページをめくる音など、音声フィードバックがユーザに提供されてもよい。
【0110】
いくつかの実装形態では、コンピューティングデバイスに加えて、1つ以上の入力装置(たとえば、マウス、キーボード)をコンピュータによって生成された3D環境に描画できる。描画された入力装置(たとえば、描画されたマウス、描画されたキーボード)は、VR空間に描画されると、VR空間のオブジェクトを制御するために利用され得る。
【0111】
コンピューティングデバイス1000は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、およびその他適切なコンピュータなど、様々な形態のデジタルコンピュータおよびデバイスを表すよう意図されるが、これらに限定されない。コンピューティングデバイス1050は、携帯情報端末、携帯電話、スマートフォン、およびその他同様のコンピューティングデバイスなど、様々な形態のモバイル機器を表すよう意図される。本明細書に示す構成要素、それらの接続および関係、ならびにそれらの機能は、例示に過ぎず、本明細書に記載および/またはクレームされた発明の実装形態を限定するものではない。
【0112】
図11A図11Cは、いくつかの実装形態に係る、シーンに含まれる例示的なフォービエイテッド画像を含む。たとえば、この画像は、フォービエイテッドレンダリングエンジン122の実施によって描画されてもよい。図11Aは、画像の中心近くに注視点1102を有するフォービエイテッド画像1100を含む。図11Bは、画像の左側近くに注視点1106を有するフォービエイテッド画像1104を含む。図11Cは、画像の右側近くに注視点1110を有するフォービエイテッド画像1108を含む。
【0113】
図12A図12Dは、いくつかの実装形態に係る、シーンに含まれる例示的なフォービエイテッド画像を含む。たとえば、画像は、フォービエイテッドレンダリングエンジン122の実施によって描画されてもよい。図12Aは、画像の中心近くに注視点1202を有するフォービエイテッド画像1200を含む。図12Bは、画像の左側近くに注視点1206を有するフォービエイテッド画像1204を含む。図12Cは、画像の左下近くに注視点1210を有するフォービエイテッド画像1208を含む。図12Dは、画像の左下近くに注視点1214を有するフォービエイテッド画像1212を含む。
【0114】
図11A図11Cおよび図12A図12Dに示す画像は、静止画像、動的に生成された画像、映像のフレームから生成することができ、または、VR環境内で生成された画像のシーケンスの一部として生成できる。
【0115】
いくつかの実施形態を説明したが、本明細書の趣旨および範囲から逸脱することなく、様々な変更がなされてもよいことが理解されるだろう。
【0116】
これに加えて、図示した論理フローは、所望の結果を実現するために、図示した特定の順序またはシーケンス順である必要はない。これに加えて、記載のフローにその他のステップが提供されてもよく、ステップが排除されてもよく、記載のシステムにその他の構成要素が追加または削除されてもよい。したがって、その他の実施形態が、添付の特許請求の範囲に含まれる。
【0117】
本明細書に記載したように、上述の実装形態の特定の特徴を例示したが、当業者であれば、多くの変形例、代替例、変更例、および均等物を思いつくであろう。そのため、当然ながら、特許請求の範囲は、実装形態の範囲に含まれるこのような変形例および変更例のすべてを包含するものとする。これらは、ほんの一例として提示されたものであり、限定ではなく、形式および詳細についてさまざまな変更がなされ得ることを理解されたい。本明細書に記載の装置および/または方法のいずれの部分も、相互に排他的な組み合わせを除く、あらゆる組合せに組み合わされ得る。本明細書に記載の実装形態は、記載されたそれぞれ異なる実装形態の機能、構成要素、および/または特徴のさまざまな組合せおよび/または部分的な組合せを含み得る。
【0118】
以下に、いくつかの例を記載する。
(例1)注視点に基づいて3Dシーンをゆがませるステップと、ゆがめられた3Dシーンを描画して第1画像を生成するステップと、第1画像のゆがみを解消して第2画像を生成するステップとを含む、方法。
【0119】
(例2)第1画像の画素の数は、第2画像よりも少ない、例1の方法。
(例3)第1画像の画素の数は、第2画像の4分の1以下である、例2の方法。
【0120】
(例4)3Dシーンをゆがませるステップは、注視点からの距離の非線形関数を用いて3Dシーンをゆがませるステップを含む、先行する例に記載の方法。
【0121】
(例5)第2画像は、映像のフレームである、先行する例に記載の方法。
(例6)3Dシーンをゆがませるステップは、3Dシーンを不均一に変更するステップを含む、先行する例に記載の方法。
【0122】
(例7)3Dシーンを不均一に変更するステップは、3Dシーンの異なる部分を異なる量だけ変更するステップを含む、例6の方法。
【0123】
(例8)3Dシーンを不均一に変更するステップは、3Dシーンの異なる部分を異なる方向に変更するステップを含む、例6の方法。
【0124】
(例9)3Dシーンをゆがませるステップは、3Dシーンの頂点を中間の圧縮された空間に変換するステップを含む、先行する例に記載の方法。
【0125】
(例10)頂点を中間の圧縮された空間に変換するステップは、頂点の位置に非線形関数を適用するステップを含む、例9の方法。
【0126】
(例11)頂点の位置に非線形関数を適用するステップは、頂点の各頂点の位置を、各頂点から注視点までの距離の平方根に基づいて修正するステップを含む、例10の方法。
【0127】
(例12)頂点の位置に非線形関数を適用するステップは、頂点に対数変換または対数極座標変換を適用するステップを含む、例10の方法。
【0128】
(例13)頂点を変換するステップは、頂点の各々をビューポートに投影するステップと、注視点をビューポートに投影するステップと、投影された頂点と投影された注視点との距離に基づいて、投影された頂点の座標を変換するステップと、変換された頂点を3Dシーンに再投影するステップとを含む、例10の方法。
【0129】
(例14)注視点に基づいて3Dシーンをゆがませるステップは、3Dシーンの横の次元が縦の次元とは異なる程度ゆがめられるよう、注視点からの垂直距離および注視点からの水平距離に基づいてワープ関数を使用するステップを含む、先行する例に記載の方法。
【0130】
(例15)注視点に基づいて3Dシーンをゆがませるステップは、3Dシーンの注視点の一方側を他方側とは異なる量だけゆがませる非対称ワープ関数を使用するステップを含む、先行する例に記載の方法。
【0131】
(例16)ゆがめられた3Dシーンを描画するステップは、ゆがませる時の三角形のエッジの歪みを推定することに基づいて第1画像の画素の誤り訂正値を算出するステップを含む、先行する例に記載の方法。
【0132】
(例17)第1画像のゆがみを解消するステップは、第2画像の画素を生成しながら誤り訂正値を適用するステップを含む、例16の方法。
【0133】
(例18)第1画像のゆがみを解消して第2画像を生成するステップは、第2画像のフォービアル(foveal)領域においてバイリニアフィルタリングを使用するステップを含む、先行する例に記載の方法。
【0134】
(例19)注視点を特定するステップをさらに含む、先行する例に記載の方法。
(例20)注視点を特定するステップは、ユーザの目の位置を追跡することに基づいて注視点を特定するステップを含む、例19の方法。
【0135】
(例21)注視点を特定するステップは、HMDのレンズのプロパティに基づいて注視点を特定するステップを含む、例19または20の方法。
【0136】
(例22)システムであって、少なくとも1つのプロセッサと、命令を格納したメモリとを備え、命令は、少なくとも1つのプロセッサによって実行されると、システムに、注視点に基づいて3Dシーンをゆがませ、ゆがめられた3Dシーンを描画させて第1画像を生成させ、第1画像のゆがみを解消させて第2画像を生成させる、システム。
【0137】
(例23)GPU(Graphics Processing Unit)をさらに備え、システムに注視点に基づいて3Dシーンをゆがませる命令は、システムにGPUを用いて3Dシーンを中間の圧縮された空間に変換させる命令を含む、例22のシステム。
【0138】
(例24)システムに注視点に基づいて3Dシーンをゆがませる命令は、GPUに3Dシーンの少なくとも一部をテッセレートさせる命令を含む、例23のシステム。
【0139】
(例25)システムにゆがめられた3Dシーンを描画させて第1画像を生成させる命令は、GPUにマルチサンプリングアンチエイリアシングを適用させる命令を含む、例23のシステム。
【0140】
(例26)少なくとも1つのレンズを含むヘッドマウントディスプレイ装置をさらに備え、注視点は、レンズの他の部分よりも視力が高い部分に対応する、例22~25のいずれか1つに記載のシステム。
【0141】
(例27)ヘッドマウントディスプレイ装置とカメラとをさらに備え、メモリは、少なくとも1つのプロセッサによって実行されると、システムに、カメラによって撮影された画像に基づいてヘッドマウントディスプレイ装置の装着者の瞳孔の位置を特定させ、瞳孔の位置に基づいて注視点を特定させる命令をさらに含む、例22~26のいずれか1つに記載のシステム。
【0142】
(例28)命令を格納した非一時的なコンピュータ読み取り可能な記憶媒体であって、命令は、少なくとも1つのプロセッサによって実行されると、コンピューティングシステムに、少なくとも、ヘッドマウントディスプレイ装置の装着者の瞳孔位置を特定させ、瞳孔位置に基づいて注視点を特定させ、注視点に基づいて3Dシーンをゆがませ、ゆがめられた3Dシーンを描画させて第1画像を生成させ、第1画像のゆがみを解消させて第2画像を生成させ、ヘッドマウントディスプレイ装置に第2画像を表示させる、非一時的なコンピュータ読み取り可能な記憶媒体。
【0143】
(例29)コンピューティングシステムに注視点に基づいて3Dシーンをゆがませるように構成された命令は、コンピューティングシステムに、3Dシーンの頂点を画面座標に投影させ、注視点を画面座標に投影させ、投影された頂点と投影された注視点との距離に基づいて、投影された頂点の座標を変換させ、変換された頂点を3Dシーンに再投影させる命令を含む、例28の非一時的なコンピュータ読み取り可能な記憶媒体。
【0144】
(例30)命令は、コンピューティングシステムに対数変換または対数極座標変換を投影された頂点に適用させるように構成される、例29の非一時的なコンピュータ読み取り可能な記憶媒体。
【0145】
(例31)3Dシーンは、3Dシーンからなるシーケンスからのものであり、命令は、さらに、コンピューティングシステムに、注視点からの距離に基づいて第2画像の一部に一時的にエイリアスを生じさせる、例28~30のいずれか1つに記載のシステム。
図1
図2
図3A
図3B
図3C
図4
図5A
図5B
図6
図7A
図7B
図8
図9
図10
図11A
図11B
図11C
図12A
図12B
図12C
図12D