(57)【要約】  ヘッドマウントディスプレイ（ＨＭＤ）のディスプレイパネル（複数可）にレンダリングされたパネルマスク（複数可）は、必要に応じて、望ましくない視覚的アーチファクトを視界から隠すために、サイズを動的に調整（増加および減少）する。例えば、フレームが再投影を使用してＨＭＤのディスプレイパネル上にレンダリングされている場合、パネルマスクの少なくとも一部分に関連付けられたサイズ値は、ＨＭＤの回転に基づいて調整され、パネルマスクの少なくとも一部分のサイズを、現在のサイズから調整されたサイズに増加または減少させて、パネルマスクは、パネルマスクの少なくとも一部分が調整されたサイズでレンダリングされて、望ましくない視覚的アーチファクトを隠すようにレンダリングする。パネルマスクの一部分のサイズは、その後、再投影が停止した場合、および／または頭部回転が停止または減速した場合、一定期間にわたって減少させる。【選択図】図１Ａ
2021531493.tif 000002
【特許請求の範囲】
【請求項１】
ヘッドマウントディスプレイ（ＨＭＤ）であって、
左ディスプレイパネルと、右ディスプレイパネルと、を含む、一対のディスプレイパネルと、
１つ以上のプロセッサと、
前記ＨＭＤの回転運動を示す回転データを、もう１つのプロセッサに提供する頭部追跡モジュールと、
ロジックであって、
前記一対のディスプレイパネル上にレンダリングされた、一連のフレームのうちのあるフレームが、アプリケーションから受信された、以前にレンダリングされた実際のフレームに関連付けられた画素データから導出された、再投影されたフレームであることを判定することであって、前記フレームは、前記左ディスプレイパネルの周辺における左パネルマスクおよび前記右ディスプレイパネルの周辺における右パネルマスクとともにレンダリングされている、判定することと、
前記頭部追跡モジュールによって提供された前記回転データに基づいて、前記フレームをレンダリングしてから一定期間にわたって前記ＨＭＤが回転した回転量を判定することと、
前記回転データに基づいて、前記ＨＭＤが回転した方向を判定することと、
前記ＨＭＤが回転した前記方向に各々対応する前記左パネルマスクの一部分および前記右パネルマスクの一部分を判定することと、
前記ＨＭＤの前記回転量に基づいて、前記左パネルマスクの前記一部分に対する第１の目標サイズ値と、前記右パネルマスクの前記一部分に対する第２の目標サイズ値と、を決定することと、
前記第１の目標サイズ値が、前記左パネルマスクの前記一部分に対する第１の既存のサイズ値と等しくないと判定することと、
前記第２の目標サイズ値が、前記右パネルマスクの前記一部分に対する第２の既存のサイズ値と等しくないと判定することと、
前記一連のフレームのうちの次のフレームを、前記左ディスプレイパネルの周辺における前記左パネルマスクおよび前記右ディスプレイパネルの周辺における前記右パネルマスクとともに、前記一対のディスプレイパネル上にレンダリングすることであって、前記左パネルマスクの前記一部分は、前記第１の目標サイズ値に対応する第１の調整されたサイズでレンダリングされ、前記右パネルマスクの前記一部分は、前記第２の目標サイズ値に対応する第２の調整されたサイズでレンダリングされる、レンダリングすることと、を行うように構成されたロジックと、を備える、ＨＭＤ。
【請求項２】
前記次のフレームは、前記アプリケーションから受信された実際のフレームであり、前記ロジックは、
前記次のフレームをレンダリングした後、前記一対のディスプレイパネル上にレンダリングされる、前記一連のフレームのうちの１つ以上の将来のフレームが、いかなる再投影されたフレームも含んでいないと判定することと、
前記左パネルマスクの前記一部分および前記右パネルマスクの前記一部分の各々に対するサイズ値を、ある期間にわたって前記第１および第２の目標サイズ値から最小サイズ値までデクリメントし、前記左パネルマスクの前記一部分および前記右パネルマスクの前記一部分のサイズを前記期間にわたって最小サイズまで減少させることと、を行うようにさらに構成されている、請求項１に記載のＨＭＤ。
【請求項３】
前記左パネルマスクの前記一部分は、前記ＨＭＤが回転した前記方向に前記左ディスプレイパネルの前縁でレンダリングされている一部分に対応し、前記右パネルマスクの前記一部分は、前記ＨＭＤが回転した前記方向に前記右ディスプレイパネルの前縁でレンダリングされている一部分に対応する、請求項１に記載のＨＭＤ。
【請求項４】
方法であって、
１つ以上のプロセッサによって、一連のフレームが再投影を使用してヘッドマウントディスプレイ（ＨＭＤ）のディスプレイパネル上にレンダリングされていると判定することであって、前記再投影は、前記ディスプレイパネル上にすでにレンダリングされている、アプリケーションから受信された、実際のフレームに関連付けられた画素データから、再投影されたフレームを生成する、判定することと、
前記ＨＭＤの頭部追跡モジュールによって提供される回転データに少なくとも部分的に基づいて、パネルマスクの少なくとも一部分に対する目標サイズ値を決定することと、
前記パネルマスクの少なくとも前記一部分に関連付けられたサイズ値が、前記目標サイズ値未満である既存のサイズ値に設定されていると判定することと、
前記サイズ値を前記既存のサイズ値から前記目標サイズ値に調整して、前記パネルマスクの少なくとも前記一部分のサイズを現在のサイズから増加されたサイズに増加させることと、
前記一連のフレームのうちのあるフレームを、前記ディスプレイパネルの周辺にレンダリングされた前記パネルマスクとともに前記ディスプレイパネル上にレンダリングすることであって、前記パネルマスクの少なくとも前記一部分は、前記目標サイズ値に応じて前記増加されたサイズでレンダリングされる、レンダリングすることと、を含む、方法。
【請求項５】
前記フレームをレンダリングした後、前記一連のフレームが前記再投影されたフレームなしでレンダリングされていると判定することであって、それは前記再投影の使用が停止したことを示す、判定することと、
前記サイズ値をある期間にわたって前記目標サイズ値から前記目標サイズ値未満であるより小さいサイズ値までデクリメントし、前記パネルマスクの少なくとも前記一部分のサイズを前記期間にわたって前記増加されたサイズから減少されたサイズまで減少させることと、をさらに含む、請求項４に記載の方法。
【請求項６】
前記フレームをレンダリングした後、
前記パネルマスクの少なくとも前記一部分のサイズを増加させて、所定数のフレームが連続してレンダリングされていると判定することをさらに含み、
前記期間にわたる前記サイズ値のデクリメントは、前記パネルマスクの少なくとも前記一部分のサイズを増加させることなく、前記所定数のフレームが連続してレンダリングされていると判定したことに少なくとも部分的に基づく、請求項５に記載の方法。
【請求項７】
前記ＨＭＤの前記頭部追跡モジュールによって提供される前記回転データに少なくとも部分的に基づいて、前記パネルマスクの少なくとも前記一部分に対して前記目標サイズ値を決定することは、
前記回転データに基づいて、前記一連のフレームのうちのあるレンダリングされたフレームが最後にレンダリングされてからの前記ＨＭＤの回転量を判定することと、
前記回転量に基づいて、前記パネルマスクの少なくとも前記一部分に対する前記目標サイズ値を判定することと、を含む、請求項４に記載の方法。
【請求項８】
前記レンダリングされたフレームが最後にレンダリングされてからの前記ＨＭＤの前記回転量が、閾値量以上であると判定することをさらに含み、
前記パネルマスクの少なくとも前記一部分に対する前記目標サイズ値を判定することは、前記パネルマスクの少なくとも前記一部分に対する前記目標サイズ値として最大サイズ値を選択することを含む、請求項７に記載の方法。
【請求項９】
前記回転データに基づいて、前記一連のフレームのうちのあるレンダリングされたフレームが最後にレンダリングされてから前記ＨＭＤが回転した方向を判定することと、
前記パネルマスクの少なくとも前記一部分が、前記ＨＭＤが回転した前記方向に対応していると判定することと、をさらに含み、
前記パネルマスクの少なくとも前記一部分に関連付けられた前記サイズ値を調整することは、前記パネルマスクの少なくとも前記一部分が、前記ＨＭＤが回転した前記方向に対応していると判定したことに少なくとも部分的に基づく、請求項４に記載の方法。
【請求項１０】
前記パネルマスクの少なくとも前記一部分は、前記ＨＭＤが回転した前記方向に、前記ディスプレイパネルの前縁でレンダリングされている前記パネルマスクの一部分に対応する、請求項９に記載の方法。
【請求項１１】
前記パネルマスクの少なくとも前記一部分に関連付けられた前記サイズ値は、最小サイズ値と最大サイズ値との間で調整可能であり、前記最小サイズ値は、前記パネルマスクの少なくとも前記一部分の完全縮小状態に対応し、かつ前記最大サイズ値は、前記パネルマスクの少なくとも前記一部分の完全拡大状態に対応する、請求項４に記載の方法。
【請求項１２】
前記ディスプレイパネル上にレンダリングされた前記フレームは、前記再投影されたフレームのうちのある再投影されたフレームのレンダリング後にレンダリングされた第１の実際のフレームである、請求項４に記載の方法。
【請求項１３】
前記ディスプレイパネルは、一対のディスプレイパネルのうちの第１のディスプレイパネルであり、前記一対のディスプレイパネルは、前記第１のディスプレイパネルと第２のディスプレイパネルとを含み、前記方法は、前記一対のディスプレイパネルのうちの前記第２のディスプレイパネルに対して、
前記回転データに少なくとも部分的に基づいて、第２のパネルマスクの少なくとも一部分に対する第２の目標サイズ値を決定することと、
前記第２のパネルマスクの少なくとも前記一部分に関連付けられた第２のサイズ値が、前記第２の目標サイズ値未満である第２の既存のサイズ値に設定されていると判定することと、
前記第２のサイズ値を前記第２の既存のサイズ値から前記第２の目標サイズ値に調整して、前記第２のパネルマスクの少なくとも前記一部分のサイズを第２の現在のサイズから第２の増加されたサイズに増加させることと、
前記一連のフレームのうちの前記フレームを、前記第２のディスプレイパネルの周辺にレンダリングされた前記第２のパネルマスクとともに前記第２のディスプレイパネル上にレンダリングすることであって、前記第２のパネルマスクの少なくとも前記一部分は、前記第２の目標サイズ値に応じて前記第２の増加されたサイズでレンダリングされる、レンダリングすることと、をさらに含む、請求項４に記載の方法。
【請求項１４】
ヘッドマウントディスプレイ（ＨＭＤ）であって、
ディスプレイパネルと、
１つ以上のプロセッサと、
ロジックであって、
一連のフレームが、再投影を使用して前記ディスプレイパネル上にレンダリングされていると判定することであって、前記再投影は、前記ディスプレイパネル上にすでにレンダリングされている、アプリケーションから受信された、実際のフレームに関連付けられた画素データから、再投影されたフレームを生成する、判定することと、
前記一連のフレームが再投影を使用してレンダリングされているかどうかに少なくとも部分的に基づいて、パネルマスクの少なくとも一部分に対する目標サイズ値を決定することと、
前記パネルマスクの少なくとも前記一部分に関連付けられたサイズ値が、前記目標サイズ値と等しくない既存のサイズ値に設定されていると判定することと、
前記サイズ値を前記既存のサイズ値から前記目標サイズ値に調整して、前記パネルマスクの少なくとも前記一部分のサイズを現在のサイズから調整されたサイズに増加または減少させることと、
前記一連のフレームのうちのあるフレームを、前記ディスプレイパネルの周辺にレンダリングされた前記パネルマスクとともに前記ディスプレイパネル上にレンダリングすることであって、前記パネルマスクの少なくとも前記一部分は、前記目標サイズ値に応じて前記調製されたサイズでレンダリングされる、レンダリングすることと、を行うように構成されたロジックと、を備える、ＨＭＤ。
【請求項１５】
前記一連のフレームが前記再投影を使用して前記ディスプレイパネル上にレンダリングされているかどうかを判定することは、前記一連のフレームが前記再投影を使用して前記ディスプレイパネル上にレンダリングされていると判定することを含み、前記ロジックは、
前記フレームをレンダリングした後、前記一連のフレームが前記再投影されたフレームなしでレンダリングされていると判定することであって、それは前記再投影の使用が停止したことを示す、判定することと、
前記サイズ値をある期間にわたって前記目標サイズ値から前記目標サイズ値未満であるより小さいサイズ値までデクリメントし、前記パネルマスクの少なくとも前記一部分のサイズを前記期間にわたって前記調整されたサイズから減少されたサイズまで減少させることと、を行うようにさらに構成されている、請求項１４に記載のＨＭＤ。
【請求項１６】
前記ＨＭＤの回転運動を示す回転データを、もう１つのプロセッサに提供するための頭部追跡モジュールをさらに備え、前記目標サイズ値を決定することは、
前記回転データに基づいて、前記一連のフレームのうちのあるレンダリングされたフレームが最後にレンダリングされてからの前記ＨＭＤの回転量を判定することと、
前記回転量に基づいて、前記パネルマスクの少なくとも前記一部分に対する前記目標サイズ値を決定することと、をさらに含む、請求項１４に記載のＨＭＤ。
【請求項１７】
前記ロジックは、
前記回転データに基づいて、前記レンダリングされたフレームが最後にレンダリングされてから前記ＨＭＤが回転した方向を判定し、
前記パネルマスクの少なくとも前記一部分が、前記ＨＭＤが回転した前記方向に対応していると判定するようにさらに構成され、
前記パネルマスクの少なくとも前記一部分に関連付けられた前記サイズ値を調整することは、前記パネルマスクの少なくとも前記一部分が、前記ＨＭＤが回転した前記方向に対応していると判定したことに少なくとも部分的に基づく、請求項１６に記載のＨＭＤ。
【請求項１８】
前記サイズ値が前記目標サイズ値と等しくない前記既存のサイズ値に設定されていると判定することは、前記目標サイズ値が前記既存のサイズ値よりも大きいと判定することを含み、
前記サイズ値を前記既存のサイズ値から前記目標サイズ値に調整することは、前記パネルマスクの少なくとも前記一部分のサイズを前記現在のサイズから増加されたサイズに増加させる、請求項１４に記載のＨＭＤ。
【請求項１９】
前記ディスプレイパネル上にレンダリングされた前記フレームは、前記再投影されたフレームのうちのある再投影されたフレームのレンダリング後にレンダリングされた第１の実際のフレームである、請求項１４に記載のＨＭＤ。
【請求項２０】
前記一連のフレームが前記再投影を使用して前記ディスプレイパネル上にレンダリングされているかどうかを判定することは、前記一連のフレームが前記再投影を使用して前記ディスプレイパネル上にレンダリングされていないと判定することを含み、
前記パネルマスクの少なくとも前記一部分に対する前記目標サイズ値を決定することは、前記パネルマスクの少なくとも前記一部分に対する前記目標サイズ値として最小サイズ値を選択することを含む、請求項１４に記載のＨＭＤ。
【発明の詳細な説明】
【技術分野】
【０００１】
[関連出願の相互参照]    
これは、２０１８年７月１１日に提出された「ダイナミックパネルマスキング」と題する米国特許出願第１６／０３３，１６２号の優先権を主張するＰＣＴ出願であり、参照によりその全体が本明細書に組み込まれる。
【背景技術】
【０００２】
バーチャルリアリティ（ＶＲ）システムは、ビデオゲーム業界の内外の両方で使用されている。ＶＲヘッドセットに内蔵されているようなＶＲシステム用ディスプレイは、通常、ＶＲアプリケーションに好適である最小リフレッシュレートで動作する。例えば、９０ヘルツ（Ｈｚ）はＶＲディスプレイの一般的なリフレッシュレートである。「ライブレンダリング」シナリオでは、ビデオゲームなどのグラフィックベースのアプリケーションは、ディスプレイのリフレッシュレートに適合するフレームレートでレンダリングするためのフレームを出力する。つまり、アプリケーションから受信された新しいフレーム（本明細書では「実際のフレーム」と称する）は、画面が更新されるたびに表示される。このようなライブレンダリングシナリオは、アプリケーションが「フレームレートに達した」と称されることがよくある。
【０００３】
実際には、さまざまな理由でアプリケーションは常にフレームレートに達するとは限らない。例えば、アプリケーションがフレームを断続的にドロップする場合があり、および／またはアプリケーションが一時的により遅いレートでフレームを出力する場合がある（例えば、理想的なフレームレートが９０フレーム／秒の場合は４５フレーム／秒）。アプリケーションがフレームレートに達していない状況では、「回転のみの再投影」と呼ばれる技術を使用して、ユーザの頭部回転を考慮するように、欠落しているフレームを再投影されたフレームで置き換えることができ、それによってユーザにはアプリケーションがフレームレートに達しているかのように見える。例えば、再投影しない場合、アプリケーションからのフレームレートが不足すると、ゲーム内でスタッタまたはヒッチが発生する場合がある。ユーザが仮想環境に完全に没入しているＶＲアプリケーションでは、アプリケーションがフレームレートに達せず、欠落したフレームを補うための再投影がない場合、ユーザは不快になる可能性がある。したがって、再投影は、アプリケーションがフレームレートに達していないときにユーザ体験をより良好にする技術である。アプリケーションが理想的なフレームレートの半分でフレームを出力している例を検討する（例えば、９０フレーム／秒が理想的なフレームレートである場合は、４５フレーム／秒）。この例では、直近でレンダリングされた実際のフレームの画素データを使用して、シーンを変換する再投影されたフレームを作成し（例えば、回転および再投影の計算を通して）、再投影されたシーンをユーザの現在の頭の配向に適合させることで、１つおきにフレームを再投影させることができる。これにより、フレームレートに達しないアプリケーションを補うために再投影されたフレームが使用されているときでも、ユーザの頭部が回転した場合に、予想通りにシーンが動いているようにユーザには見える。
【０００４】
回転のみの再投影はゲーム内のスタッタまたはヒッチを防止するが、少なくとも低持続性ディスプレイを使用するＶＲシステム（例えば、ディスプレイがフレーム時間のうちのごくわずかな間照光されている場合）では、頭部回転中にそれ自体の望ましくない視覚的アーチファクトを生成する。例えば、回転のみの再投影では、ユーザが頭部を回転させているときに、頭部回転方向の各ディスプレイパネルの前縁にストロボフラッシュが現れる可能性がある。このストロボフラッシュが頭部回転中に発生するのは、ディスプレイパネルの前縁の画素が、すべてのフレームを、実際のフレームの有効な画素と次の再投影されたフレームの黒一色の画素との間で切り替えるためである。頭部回転中に、再投影されたフレーム内で黒い画素が発生するのは、再投影されたフレームのために、ディスプレイパネルの前縁の画素に使用するための、以前にレンダリングされた実際のフレームから利用可能な画素データがないためである。したがって、再投影が使用されている間にユーザが頭部を回転させると、ユーザの頭部回転方向のディスプレイパネルの前縁が、すべてのフレームを黒い画素と照光された画素との間で切り替え、それによってディスプレイパネルの前縁に望ましくないストロボアーチファクトが発生する。
【０００５】
本明細書では、これらのシステムおよび他のシステムを改善および強化するための技術的解決法を提供する。
【図面の簡単な説明】
【０００６】
詳細な説明を、添付の図面を参照して説明する。図では、参照番号の左端の数字は、参照番号が最初に現れる図を指す。異なる図における同じ参照番号の使用は、類似または同一の構成要素または機能を示す。
【０００７】
【図１Ａ】ヘッドマウントディスプレイ（ＨＭＤ）の例示的な左右のディスプレイパネルを例解する図であり、フレームが再投影を使用して処理されている間、頭部回転中に動的に拡大されたパネルマスクとともにフレームがレンダリングされ、頭部の回転方向は、右方向（または正のＸ方向）である。
【図１Ｂ】図１ＡのＨＭＤの例示的な左右のディスプレイパネルを例解する図であり、フレームが再投影を使用して処理されている間、頭部回転中に動的に拡大されたパネルマスクとともにフレームがレンダリングされ、頭部の回転方向は、左方向（または負のＸ方向）である。
【図２】パネルマスクの完全縮小状態とパネルマスクの完全拡大状態との違いを示すＨＭＤの例示的な左右ディスプレイパネルを例解する図である。
【図３】パネルマスクの完全縮小状態とパネルマスクの完全拡大状態との違いを示すＨＭＤの例示的な左右ディスプレイパネルを例解する別の図である。
【図４】本明細書に開示の実施形態による、ＨＭＤのディスプレイパネル上のパネルマスクの一部分を動的にサイズ変更するための例示的なプロセスのフロー図である。
【図５】本明細書に開示の実施形態による、ＨＭＤのディスプレイパネル上のパネルマスクの一部分を動的にサイズ変更するためのより詳細な例示的なプロセスのフロー図である。
【図６】ＶＲヘッドセットなどのウェアラブルデバイスの例示的な構成要素を例解しており、本明細書に開示の技術を実装することができる。
【発明を実施するための形態】
【０００８】
本明細書では、とりわけ、ヘッドマウントディスプレイ（ＨＭＤ）のディスプレイパネルの周辺にレンダリングされるパネルマスクのサイズを動的に調整（増加および減少）して、必要に応じて、望ましくない視覚的アーチファクトを視界から隠すための技術について説明する。ＨＭＤは、ユーザが仮想現実（ＶＲ）環境または拡張現実（ＡＲ）環境に没入する目的で、ユーザによって着用され得る。ＨＭＤの１つ以上のディスプレイパネルは、アプリケーション（例えば、ビデオゲーム）によって出力されたフレームに基づいて画像をレンダリングし、これらの画像は、ＨＭＤに含まれる光学系を通してユーザに表示され、ユーザは、ユーザがＶＲまたはＡＲ環境に没入しているかのように画像を知覚する。
【０００９】
パネルマスク（複数可）は、ＨＭＤのディスプレイパネル（複数可）の周辺にレンダリングされ、ディスプレイパネル（複数可）に提示される画像の周囲に境界を提供することができる。パネルマスクは、額縁のように画像をフレーム化する。いくつかの実施形態では、パネルマスク（複数可）の内縁をぼかして（例えば、かすかな飾り模様を使用して）、パネルマスクを、ユーザの顔に近い（またはその上に配設される）近視野オブジェクトとしてユーザに見せることができ、遠視野オブジェクトに焦点を合わせたときに見られる顔の特徴（例えば、目の間の鼻梁）によく似ている。
【００１０】
言及されるように、ＨＭＤは、「再投影」と呼ばれる技術を利用して、フレームレートに達していないアプリケーションを補うことができる。再投影中に、ＨＭＤを装着しているユーザは頭部を回転させることがあり、これによって、言及されるように、現在パネルマスクで覆われていないディスプレイパネル（複数可）の前縁に望ましくないストロボアーチファクトが現れる可能性がある。したがって、ＨＭＤは、再投影が使用されているか否かを検出することができ、パネルマスクの少なくとも一部分は、再投影が使用されているか否かに基づいてサイズを動的に調整することができる。例えば、再投影が進行中の場合、パネルマスクの一部分は、再投影中のＨＭＤの回転量に応じて、適切な量だけ調整され得る（例えば、ディスプレイパネルの中心から離れて縮小するか、またはディスプレイパネルの中心に向かって拡大する）。これにより、頭部の動きと連動する再投影中に現れ得るストロボフラッシュなどの望ましくない視覚的アーチファクトを覆う（または隠す）ことができる。例えば、フレームが再投影されている間にユーザが頭部を右方向に回転させると、ディスプレイパネル（複数可）の前（例えば、右）縁にあるパネルマスクの部分のサイズが増加され、望ましくないストロボアーチファクトをパネルマスクで確実に覆うことができ、それによって、ユーザにはディスプレイパネルの画像領域にストロボフラッシュが見えなくなる。その後、ユーザが頭部回転を遅くするか、もしくは停止した場合、またはアプリケーションが再びフレームレートに達した場合（つまり、再投影の使用が停止した場合）、パネルマスクのこの拡大部分のサイズは、時間の経過とともに調整されて完全に縮小した状態に戻され得、それによって、より大きいシーンがディスプレイパネルの画像領域にレンダリングされるようになる。頭部回転と再投影との連動に基づいて、パネルマスクの少なくとも一部分を動的に拡大および縮小するこの技術により、ＨＭＤのユーザは、頭部回転中の再投影によって生じる望ましくないストロボアーチファクトに気付かないため、より良い視聴体験が可能になる。パネルマスクは、ストロボアーチファクトが存在するときは拡大してそれを塞ぎ、また、パネルマスクは、ストロボアーチファクトがなくなると縮小して、ディスプレイパネルの画像領域により大きいシーンを表示する。
【００１１】
本明細書に記載の実施形態による、パネルマスクの一部分のサイズを動的に調整するための例示的なプロセスは、１つ以上のプロセッサによって、一連のフレームが、再投影を使用してＨＭＤのディスプレイパネル上にレンダリングされているかどうかを判定することと、一連のフレームが再投影を使用してレンダリングされているかどうかに少なくとも部分的に基づいて、パネルマスクの少なくとも一部分に対する目標サイズ値を決定することと、パネルマスクの少なくとも一部分に関連付けられたサイズ値が目標サイズ値と等しくない既存のサイズ値に設定されていると判定することと、サイズ値を既存のサイズ値から目標サイズ値に調整して、パネルマスクの少なくとも一部分のサイズを現在のサイズから調整されたサイズに増減することと、一連のフレームのうちのあるフレームを、ディスプレイパネルの周辺にレンダリングされたパネルマスクとともに、ディスプレイパネル上にレンダリングすることと、を含み、パネルマスクの少なくとも一部分は、目標サイズ値に応じた調製されたサイズでレンダリングされている。サイズ調整がパネルマスクの一部分のサイズを増加させることである場合、再投影の使用が停止するか、および／または頭部回転が遅くなるかもしくは完全に停止すると、パネルマスクの一部分のサイズは、その後サイズが減少され得る。例えば、再投影の使用が停止した場合、パネルマスクの一部分のサイズは、最小サイズまたは他の目標値まで、ある期間にわたって徐々に減少され得る。このように、完全縮小状態に戻るパネルマスクの縮小は、ユーザにとって視覚的に気を散らすものではない。
【００１２】
また、本明細書に開示される技術およびプロセスを実施するように構成されたＨＭＤを含むシステム、ならびに本明細書に開示される技術およびプロセスを実施するためのコンピュータ実行可能命令を格納する非一時的なコンピュータ可読媒体も、本明細書に開示される。本明細書に開示される技術およびシステムは、例として、ビデオゲームアプリケーション、特にＶＲゲームアプリケーションの文脈で考察されているが、本明細書に記載の技術およびシステムは、ＨＭＤが使用される、非ＶＲアプリケーション（例えば、ＡＲアプリケーション）、および／または産業機械アプリケーション、防衛アプリケーション、ロボットアプリケーションなどの非ゲームアプリケーションを含むが、これらに限定されない他のアプリケーションにも利益を提供し得ることを理解されたい。
【００１３】
図１Ａは、一対のディスプレイパネルを構成する左ディスプレイパネル１０２（Ｌ）と右ディスプレイパネル１０２（Ｒ）とを含む例示的なヘッドマウントディスプレイ（ＨＭＤ）１００を例解する図である。例示的なＨＭＤ１００は、２つのディスプレイパネル１０２（Ｌ）および１０２（Ｒ）を含むが、ＨＭＤ１００は、単一のディスプレイパネル１０２、または３つ以上のディスプレイパネル１０２を含み得ることを理解されたい。したがって、本明細書で使用される「ディスプレイパネル１０２」は、図１Ａに示すように、２パネルＨＭＤ１００のディスプレイパネル１０２（Ｌ）または１０２（Ｒ）のいずれかを指す場合があり、または、任意の数のディスプレイパネル（例えば、単一パネルＨＭＤ１００またはマルチパネルＨＭＤ１００）を伴うＨＭＤ１００の単一ディスプレイパネル１０２を指す場合がある。
【００１４】
ディスプレイパネル（複数可）１０２は、ディスプレイパネル（複数可）１０２上での画像フレーム（本明細書では「フレーム」と称する）の提示中に発光要素を利用して光を放出する発光ディスプレイなどの任意の好適なタイプのディスプレイを表し得る。一例として、左右のディスプレイパネル１０２（Ｌ）および１０２（Ｒ）は、液晶ディスプレイ（ＬＣＤ）、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、無機発光ダイオード（ＩＬＥＤ）ディスプレイ、またはＨＭＤアプリケーションに対して好適なディスプレイ技術を利用する他の任意の好適なタイプのディスプレイを含み得る。
【００１５】
ＨＭＤ１００は、ＶＲゲームシステムで使用するためなど、ＶＲシステムで使用するためのＶＲヘッドセットを表し得る。しかしながら、ＨＭＤ１００は、追加的に、または代替的に、ＡＲアプリケーションで使用するためのＡＲヘッドセットとして実装され得る。ＡＲでは、ユーザは、実世界環境に重ね合わされた仮想オブジェクトを見るが、ＶＲでは、ユーザは、実世界環境を見ることはなく、ＨＭＤ１００のディスプレイパネル１０２および光学系（例えば、レンズ）を介して知覚されるような仮想環境に完全に没入する。本明細書で説明する例は、主にＶＲベースのＨＭＤ１００に関係するが、ＨＭＤ１００は、ＶＲアプリケーションでの実装に限定されないことを理解されたい。
【００１６】
一般に、ＨＭＤ１００自体などのコンピューティングデバイス、またはＨＭＤ１００に関連付けられ、かつ結合されたコンピューティングデバイス（例えば、パーソナルコンピュータ（ＰＣ）、ゲームコンソールなど）上で実行されるアプリケーションは、ＨＭＤ１００のディスプレイパネル（複数可）１０２上に最終的にレンダリングされる一連のフレーム１０６を出力するように構成され得る。フレーム１０６の画像データは、パネルマスク１１０によって覆われていないディスプレイパネル（複数可）１０２の画像領域１０８内に提示される。図１Ａは、左ディスプレイパネル１０２（Ｌ）の中央および左パネルマスク１１０（Ｌ）の内側にある左画像領域１０８（Ｌ）と、右ディスプレイパネル１０２（Ｒ）の中央および右パネルマスク１１０（Ｒ）の内側にある右画像領域１０８（Ｒ）と、を示している。
【００１７】
一連のフレーム１０６は、ビデオゲームアプリケーション、または任意の他のタイプのグラフィックスベースのアプリケーションから出力され得る。アプリケーションは、所望の視覚効果を伴うディスプレイパネル（複数可）１０２上の（画像領域１０８内）画像上に作成するために組み合わされる画素ごとの値（例えば、色値）を出力するグラフィックスパイプラインにおいて実行され得る。実行時に、ＨＭＤ１００のヘッド追跡モジュールは、ＨＭＤ１００の位置および姿勢に関するデータを生成することができ、そのデータはアプリケーションに提供され、ユーザ１０４の頭部位置／姿勢に応じて、一連のフレーム１０６内の次のフレーム１０６をどのようにレンダリングするかについてアプリケーションに通知される。これにより、自分はオブジェクト（静的オブジェクトおよび移動オブジェクトの両方）を含む仮想環境を見回しているとユーザ１０４に思わせるように、ディスプレイパネル（複数可）１０２上の画像領域（複数可）１０８内に画像をレンダリングすることが可能になり、これらのオブジェクトは、ユーザ１０４の頭部の動きに合わせて、予想通りにシーン内を移動する。
【００１８】
言及されるように、左パネルマスク１１０（Ｌ）は、左ディスプレイパネル１０２（Ｌ）の周辺にレンダリングされ、右パネルマスク１１０（Ｒ）は、右ディスプレイパネル１０２（Ｒ）の周辺にレンダリングされる。本明細書で使用される場合、「パネルマスク１１０」は、図１Ａに示すように、パネルマスク１１０（Ｌ）または１１０（Ｒ）のいずれかを指し得る。しかしながら、単一パネルＨＭＤ１００は、単一のディスプレイパネル１０２の画像領域１０８を取り囲む単一のパネルマスク１１０を含み得る。起動時に、ＨＭＤ１００は、パネルマスク（複数可）１１０のメッシュを計算することができ、これは、ディスプレイパネル（複数可）１０２の周辺でパネルマスク１１０を完全縮小状態でレンダリングするために使用され、これは、サイズが動的に調整可能なパネルマスク（複数可）１１０の部分が、最初は最小サイズでレンダリングされて、画像領域（複数可）１０８内により大きいシーンを表示することを意味する。一般に、パネルマスク（複数可）１１０は、各フレームとともに持続的にレンダリングされ得るが、パネルマスク（複数可）１１０の個々の部分のサイズは、必要に応じて、望ましくない視覚的アーチファクトを隠すためにフレームのうちの特定のフレームにおいて調整され得る。いくつかの実施形態では、パネルマスク（複数可）１１０は、ディスプレイパネル（複数可）１０２の周辺において複数の黒色画素として実装され得、黒色画素は、フレームをレンダリングする前にフレームバッファに追加され得る。パネルマスク（複数可）１１０は、図では、ほぼ円形の画像領域１０８を囲むほぼ環状のパネルマスクとして図示されているが、パネルマスク（複数可）１１０を、画像領域１０８を取り囲む正方形、長方形、または他の幾何学的形状のフレームとしてレンダリングするなどして、他の形状を使用してパネルマスク（複数可）１１０を実装し得ることを理解されたい。いくつかの実施形態では、パネルマスク（複数可）１１０は、赤、緑、および青のカラーチャネルに対応する３つの別個のパネルマスクとして実装され得、３つのパネルマスク１１０の各別個のパネルマスク１１０は、ＨＭＤ１００に含まれる光学系の既知の色歪みに基づいて成形され、ディスプレイパネル１０２の外縁またはその近くで発生し得るカラーフリンジの影響を軽減する。例えば、ユーザ１０４がＨＭＤ１００内のレンズを通して見るとき、レンズが画像をある程度歪めることにより、いくらかの自然な空間的（放射状）歪みがあり得る（ＶＲヘッドセットにおける「ピンクッション」効果として知られている）。また、いくらかの色歪み（例えば、赤、緑、青（ＲＧＢ）の分離）が発生する場合もある。ユーザ１０４の目がたまたま、ユーザ１０４が実際にディスプレイパネル１０２の縁を見ることができるほどレンズアセンブリに十分に近い場合、ユーザ１０２は、ＲＧＢを分離する色歪みに起因するシアンのフリンジをパネルの縁上に見ることがあり、この場合、赤色の画素が（ディスプレイパネル１０２の中心に向かって）最も色彩的に歪んでおり、続いて、緑色の画素の歪みはそれより少なく、青色の画素の歪みは最も少ない（例えば、青は歪みが最も少なく、パネルの縁の最も近くに残ったままで、シアンのフリンジ効果を引き起こす）。このカラーフリンジは、それが見え得るユーザにとって、非常に気を散らすものとなり得る（ＨＭＤ１００に使用される発泡樹脂の厚さ、ユーザの顔の空間的形状などに応じて、ユーザ１０４にはカラーフリンジが見える場合と見えない場合がある）。したがって、各ディスプレイパネル１０２上の３パネルマスク実装の別個のパネルマスクは、カラーフリンジ効果を軽減するために、赤、緑、および青を独立してマスキングすることができる。
【００１９】
図１Ａは、左パネルマスク１１０（Ｌ）を比較的暗いグレー領域として示し、右パネルマスク１１０（Ｒ）を比較的明るいグレー領域として示している。これは、該当する図において２つのパネルマスクを互いに区別するためだけのものであり、パネルマスク１１０（Ｌ）および１１０（Ｒ）の対は、ディスプレイパネル１０２（Ｌ）および１０２（Ｒ）の両方に均一な色（例えば、黒色画素）でレンダリングされ得ることを理解されたい。このようにして、ユーザ１０４は、２つのパネルマスク１１０（Ｌ）および１１０（Ｒ）を、２つの画像領域１０８（Ｌ）および１０８（Ｒ）を取り囲む単一のパネルマスクとして知覚し、それは、人間が近い視野では各眼球を取り囲む眼窩と鼻梁とを伴う環境を知覚するのと同様である。言及されるように、各パネルマスク１１０（Ｌ）および１１０（Ｒ）の内縁１１２は、鮮明な内縁１１２よりも人間にとってなじみのある近視野の顔の特徴に似せるために、（例えば、かすかな飾り模様を使用して）わずかにぼやけさせることができる。
【００２０】
さらに、パネルマスク１１０（Ｌ）および１１０（Ｒ）の各々の個々の部分のサイズは、動的に調整可能であり、必要に応じて、パネルマスク１１０の部分を拡大および縮小して、一連のフレーム１０６の各フレーム１０６に合わせて画像領域１０８をより多くまたはより少なく覆う。例えば、パネルマスク（複数可）１１０の一部分のサイズは、ディスプレイパネル（複数可）１０２の中心に向かって内側に拡大させることによって増加させることができ、これにより、頭部回転と連動した再投影中にディスプレイパネル（複数可）１０２のその部分に現れる望ましくない視覚的アーチファクトを覆う（または隠す）ことが可能になる。
【００２１】
言及されるように、ＶＲシステムで使用されるディスプレイは、通常、ＶＲアプリケーションに好適である最小リフレッシュレートで動作する。したがって、ＨＭＤ１００のディスプレイパネル（複数可）１０２は、ＶＲディスプレイの一般的なリフレッシュレートである、例えば、９０Ｈｚのリフレッシュレートで動作し得る。９０Ｈｚが例示的なリフレッシュレートとして使用されるが、ディスプレイパネル（複数可）１０２は、本明細書に開示される技術およびシステムの基本的な特性を変更することなく、他の異なるリフレッシュレートで動作し得ることを理解されたい。「ライブレンダリング」シナリオでは、一連のフレーム１０６を出力するアプリケーションは、ディスプレイパネル（複数可）１０２のリフレッシュレートと一致するフレームレートで実際のフレーム１０６（Ａ）を出力することができる（例えば、実際のフレーム１０６（Ａ）は、９０フレーム／秒で出力される）。しかしながら、アプリケーションがフレームレートに達していない（すなわち、実際のフレーム１０６（Ａ）を９０フレーム／秒未満ほどで出力する）場合、ＨＭＤ１００は、再投影（例えば、回転のみの再投影）を採用して、欠落している実際のフレーム１０６（Ａ）を再投影されたフレーム１０６（Ｒ）で置き換えるように構成され得、ＨＭＤ１００は、ユーザ１０４の頭部回転を考慮する方法でそうすることができ、ユーザ１０４には、アプリケーションがフレームレートに達しており、ユーザ１０４の頭部が回転した場合に予想通りにシーンがディスプレイパネル１０２の辺りで動いているように見える。図１Ａは、この再投影シナリオを例解しており、一連のフレーム１０６は、実際のフレーム１０６（Ａ）（１）、続いて再投影されたフレーム１０６（Ｒ）（２）、続いて別の実際のフレーム１０６（Ａ）（３）などを含む。例えば、図１Ａの例では、アプリケーションは、理想的なフレームレートの半分で（例えば、９０フレーム／秒が理想的なフレームレートである場合は、４５フレーム／秒のフレームレートで）フレームを出力することができる。この場合、連続する実際のフレーム１０６（Ａ）間における１つおきのフレームは、再投影されたフレーム１０６（Ｒ）である。再投影されたフレーム１０６（Ｒ）は、最近レンダリングされた実際のフレーム１０６（Ａ）（例えば、直近にレンダリングされた実際のフレーム１０６（Ａ））からの画素データを使用して生成され、ユーザ１０４の頭部回転を考慮する方法で（例えば、回転および再投影の計算を通して）変換されるシーンが作成される。実際のフレーム１０６（Ａ）（１）が図１Ａの再投影されたフレーム１０６（Ｒ）（２）の前にレンダリングされると仮定すると、再投影されたフレーム１０６（Ｒ）（２）は、以前にレンダリングされた実際のフレーム１０６（Ａ）（１）に関連付けられた画素データから導出することができる。この場合、以前にレンダリングされた実際のフレーム１０６（Ａ）（１）のシーンが回転および再投影されて、自分の頭部を動かした場合にユーザ１０４が予想する通りに、再投影されたフレーム１０６（Ｒ）（２）が作成される。
【００２２】
一連のフレーム１０６が再投影を使用してＨＭＤ１００のディスプレイパネル（複数可）１０２上にレンダリングされているとき、およびユーザ１０４が自分の頭部を回転させているとき、頭部回転方向の各ディスプレイパネル１０２の前縁にストロボフラッシュが現れることがある。例えば、図１Ａでは、ユーザ１０４は、自分の頭部を右（すなわち、正のＸ）の回転方向に回転させているように示されている。このシナリオでは、前述のストロボフラッシュは、再投影中に発生することがあり、各ディスプレイパネル１０２（Ｌ）および１０２（Ｒ）の右縁（すなわち、回転方向の前縁）に現れることがあるが、それは、ユーザ１０６が右方向に回転したので、再投影されたフレーム１０６（Ｒ）（２）に対して各ディスプレイパネル１０２（Ｌ）および１０２（Ｒ）の右縁における画素をレンダリングするために利用可能な画素データが、以前にレンダリングされた実際のフレーム１０６（Ａ）（１）にはないからである。したがって、ＨＭＤ１００は、この望ましくない視覚的アーチファクトを覆う（または隠す）ために、各パネルマスク１１０の右部分のサイズを動的に増加させるように構成され得る。各パネルマスク１１０の右部分のサイズを変更しなければ、このストロボアーチファクトは、ディスプレイパネル（複数可）１０２の画像領域（複数可）１０８内に見える場合がある。
【００２３】
例解的な実施例では、ＨＭＤ１００は、一連のフレーム１０６が再投影を使用してＨＭＤ１００のディスプレイパネル（複数可）１０２上にレンダリングされているかどうかを判定するように構成されたロジック（例えば、ソフトウェア、ハードウェア、および／またはファームウェアなど）を含み得る。すなわち、ロジックは、一連のフレーム１０６内の１つ以上のフレーム１０６が、ディスプレイパネル（複数可）１０２上にすでにレンダリングされたアプリケーションから受信された実際のフレーム１０６（Ａ）に関連付けられた画素データから生成された再投影されたフレーム１０６（Ｒ）であるかどうかを判定することができる。いくつかの実施形態では、ロジックは、再投影されたフレーム１０６（Ｒ）（２）をレンダリングするときにこの判定を行うことができる。他の実施形態では、ロジックは、実際のフレーム１０６（Ａ）（１）をレンダリングした後、ただし、再投影されたフレーム１０６（Ｒ）（２）をレンダリングする前に、この判定を行うことができる。いずれにせよ、再投影が使用されている場合、ロジックは、ＨＭＤ１００が回転したことを示すＨＭＤ１００の頭部追跡モジュールによって提供される回転データに少なくとも部分的に基づいて（例えば、時間ｔ１と時間ｔ２との間に）、パネルマスク（複数可）１１０の各調整可能部分の目標サイズ値を決定するように構成することもできる。パネルマスク（複数可）１１０の所与の一部分の目標サイズ値がその部分の既存のサイズ値と等しくない場合、ロジックは、パネルマスク（複数可）１１０の少なくとも一部分に関連付けられたサイズ値を既存のサイズ値から目標サイズ値に調整して、パネルマスク１１０の少なくとも一部分のサイズを現在のサイズから調整されたサイズに増加させ、かつ、ディスプレイパネル（複数可）１０２の周辺にレンダリングされたパネルマスク（複数可）１１０とともに、ディスプレイパネル（複数可）１０２上の一連のフレーム１０６のうちのあるフレーム（例えば、実際のフレーム１０６（Ａ）（３））をレンダリングすることによって、応答することができ、その場合、パネルマスク（複数可）１１０の少なくとも一部分は、調整されたサイズでレンダリングされる。左パネルマスク１１０（Ｌ）および右パネルマスク１１０（Ｒ）が各々、左、右、上、および下の部分に分割されている例を検討する。図１Ａは、左パネルマスク１１０（Ｌ）の右部分および右パネルマスク１１０（Ｒ）の右部分（各部分は右回転方向に対応する）のサイズが、現在のサイズから増加されたサイズに増加されたことを示している。これは、図１Ａにおいて、左パネルマスク１１０（Ｌ）の内縁１１２（Ｌ）が左ディスプレイパネル１０２（Ｌ）の中心に向かって内側（すなわち、破線から実線）に移動すること、および右パネルマスク１１０（Ｒ）の内縁１１２（Ｒ）が右ディスプレイパネル１０２（Ｒ）の中心に向かって内側（すなわち、破線から実線）に移動することによって示されている。言い換えれば、各パネルマスク１１０の右部分は、内側に引っ張られて、各パネルマスク１１０の右部分のサイズを拡大させ、その結果、ディスプレイパネル（複数可）１０２の右縁／右側上の画像領域１０８のより大きい部分がパネルマスク（複数可）１１０によって覆われる。これらの「内側」調整は、パネルマスク（複数可）１１０の該当部分の目標サイズ値が既存のサイズ値よりも大きい場合に発生する。
【００２４】
図１Ｂは、図１ＡのＨＭＤ１００の例示的な左右のディスプレイパネル１０２を例解する図であり、フレーム１０６が再投影を使用して処理されている間、頭部回転中に動的に拡大されたパネルマスク（複数可）１１０を伴ってフレーム１０６（例えば、実際のフレーム１０６（Ａ）（３））がレンダリングされており、頭部回転の方向は、図１Ｂにおける左方向（または負のＸ）であり、図１Ａに示す回転方向とは逆である。図１Ｂのシナリオでは、ＨＭＤ１００のロジックは、図１Ａのシナリオでの応答の方法と同様に応答するように構成されているが、各パネルマスク１１０の異なる部分（すなわち、左部分）が、ＨＭＤ１００によって検出された異なる回転方向に応じてサイズ変更される点が異なる。例えば、再投影中に左方向（すなわち、負のＸ）回転がある場合、各パネルマスク１１０の左部分が内側に引っ張られて、パネルマスク１１０の左部分のサイズを拡大させ、その結果、ディスプレイパネル（複数可）１０２の左縁／左側上の画像領域１０８のより大きい部分がパネルマスク（複数可）１１０によって覆われる。
【００２５】
同様に、頭部の上方向または下方向の回転は、各パネルマスク１１０の上部分および下部分のサイズをそれぞれ動的に増加させることができ（例えば、ディスプレイパネル（複数可）１０２の中心に向かって内側に拡大させることによって）、その結果、ディスプレイパネル（複数可）１０２の上縁／上側、下縁／下側上の画像領域１０８のより大きい部分がパネルマスク（複数可）１１０によって覆われることが理解され得る。ＨＭＤ１００の回転方向性がＸ成分とＹ成分の両方を有するベクトルである場合、これにより、パネルマスク１１０の隣接部分のサイズを同時に拡大できることが理解され得る。例えば、ユーザ１０４が図１Ａおよび図１Ｂに示す参照座標系の正のＸＹ象限に向かって頭部を斜めに回転させた場合、パネルマスク（複数可）１１０の右部分および上部分の両方のサイズを同時に拡大させることができ、それによって、パネルマスク１１０の２つの隣接する部分が同時にディスプレイパネル１０２の中心に向かって内側に拡大する。いくつかの実装形態では、パネルマスク（複数可）１１０全体（すなわち、すべての部分）のサイズを拡大させることができ、それによって、画像領域（複数可）１０８のより大きい部分が拡大されたパネルマスク（複数可）１１０によって覆われるので、画像領域（複数可）１０８が縮小する（または小さくなる）ことも理解され得る。続いて、パネルマスク（複数可）１１０全体がより小さいサイズに縮小すると、画像領域（複数可）１０８のより少ない部分が縮小したパネルマスク１１０によって覆われるので、画像領域（複数可）１０８は拡張して、画像領域（複数可）１０８の最大サイズに戻り得る。
【００２６】
図２は、ＨＭＤ１００の例示的な左右のディスプレイパネル１０２を例解する図であり、図２の上部のパネルマスク（複数可）１１０の完全縮小状態と図２の下部のパネルマスク（複数可）１１０の完全拡大状態との違いを示している。言及されるように、各ディスプレイパネル１０２のパネルマスク１１０の個々の部分は、必要に応じてサイズを動的に調整して、各ディスプレイパネル１０２の画像領域１０８をより多くまたはより少なく覆うことができる。これらのサイズ調整には、制限または限度がある場合がある。例えば、パネルマスク１１０の個々の部分は、最大サイズまで増加させ得るが、それを超えることはなく、かつ最小サイズまで減少させ得るが、それを下回ることはない。この意味で、パネルマスク１１０は、各フレームで持続的にレンダリングすることができ、そのサイズは、最小サイズ値（例えば、「０」）から最大サイズ値（例えば、「１」）の範囲の値に基づいて制御可能である。言い換えれば、パネルマスク１１０の個々の部分のサイズ値は、最小サイズ値（例えば、「０」）から最大サイズ値（例えば、「１」）で固定されるが、これら２つの限度を含む、これら２つの限度間の任意の数に調整可能である。これについての１つの考え方は、パーセンテージ調整である（例えば、０は０％、０．４は４０％、０．６は６０％、１は１００％など）。上記のように、このサイズ調整は、パネルマスク１１０の個々の部分に対して独立して制御することができる。
【００２７】
例えば、左パネルマスク１１０（Ｌ）を、左部分１１０（Ｌ）（１）と、上部分１１０（Ｌ）（２）と、右部分１１０（Ｌ）（３）と、下部分１１０（Ｌ）（４）とを含む４つの部分に分割することを検討する。同様に、右パネルマスク１１０（Ｒ）は、左部分１１０（Ｒ）（１）と、上部分１１０（Ｒ）（２）と、右部分１１０（Ｒ）（３）と、下部分１１０（Ｒ）（４）とを含む４つの部分に分割することができる。パネルマスク１１０のこれらの部分の各々は、図２の上部の完全縮小状態に対応する最小サイズ値（例えば、「０」に設定されたサイズ値）と図２の下部の完全拡大状態に対応する最大サイズ値（例えば、「１」に設定されたサイズ値）の間でサイズを調整することができる。したがって、パネルマスク１１０の個々の部分のサイズを制御するために、各パネルマスク１１０に対して少なくとも４つの動的に調整可能なサイズ値があり得る。パネルマスク１１０の内縁１１２（パネルマスク１１０の各部分にある）は、サイズ値を最小サイズ値と最大サイズ値の間の値（例えば、「０」〜「１」のサイズ値）に設定することによって、最小範囲（図２の上部に示す）から最大範囲（図２の下部に示す）の間で移動することができる。再投影が使用されているか、および／または頭部回転が存在するかどうかに関係なく、パネルマスク（複数可）１１０を最小サイズで（すなわち、完全縮小状態で）持続的にレンダリングするのには理由があり得る。例えば、いくつかのＨＭＤ１００は、ディスプレイパネル１０２の外縁またはその近くでカラーフリンジを呈することがあり、ユーザ１０４の気を散らさないように、そのような視覚的アーチファクトを覆う（または隠す）ことが望ましい場合がある。一方、パネルマスク（複数可）１１０は、ユーザ１０４が着用しているときのＨＭＤ１００の回転速度に実際的な制限があり、かつユーザ１０４が自分の頭部を高速で回転させているときの知覚可能な視覚要素には実際的な制限があるため、最大サイズ値を超えてサイズを拡大する必要がある。例えば、平均的なユーザ１０４が特定の閾値角速度を超えて自分の頭部を回転させることは事実上不可能であり、したがって、この点では、パネルマスク１１０を、ディスプレイパネル１０２全体を覆うために拡大させる必要はない。パネルマスクの拡大は、望ましくない視覚的アーチファクトを覆うのに十分なだけ視野を「取り入れる」ことができる。さらに、もしユーザ１０４がこの閾値角速度を超えて自分の頭部を回転させることができたとしても、視野が急速に変化しているときに目がこれらの視覚要素を追跡することは到底できないので、ユーザ１０４は、そうした高速回転で現れる望ましくない視覚的アーチファクトを識別することができないであろう。
【００２８】
図３は、ＨＭＤ１００の例示的な左右のディスプレイパネル１０２（Ｌ）および１０２（Ｒ）を例解する別の図であり、パネルマスク１１０（Ｌ）および１１０（Ｒ）の完全縮小状態とパネルマスク１１０（Ｌ）および１１０（Ｒ）の完全拡大状態との違いを示している。図３では、完全縮小状態は、パネルマスク１１０の内縁１１２が完全縮小状態にある場所を表す破線によって示されている。パネルマスク１１０の各部分（例えば、上、下、左、および右）のサイズ値（ＳＶ）をゼロ（例えば、ＳＶ＝０）に設定して、パネルマスク１１０のその部分の内縁１１２を、ディスプレイパネル１０２の中心から外側に移動させることができ、それによって、パネルマスク１１０の部分がその最小サイズに減少される。パネルマスク１１０の個々の部分は、ＨＭＤ１００の起動時にそれらのサイズ値をゼロに設定することができる。図３では、パネルマスク（複数可）１１０の完全拡張状態は、パネルマスク１１０の内縁１１２が完全拡張状態にある場所を表す実線によって示されている。パネルマスク１１０の各部分のサイズ値（ＳＶ）を１（例えば、ＳＶ＝１）に設定して、パネルマスク１１０のその部分の内縁１１２を、ディスプレイパネル１０２の中心へと内側に移動させることができ、それによって、パネルマスク１１０の部分がその最大サイズに増加される。言及されるように、パネルマスク１１０の個々の部分は、各部分のサイズ値を最小サイズ値（例えば、「０」）と最大サイズ値（例えば、「１」）の間の中間値に設定することによって、最小サイズと最大サイズの間の中間サイズに調整することができる。
【００２９】
本明細書に記載のプロセスは、ロジックフローグラフ内のブロックの集合として例解され、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせ（つまり、ロジック）に実装することができる一連の動作を表す。ソフトウェアの文脈において、ブロックは、１つ以上のプロセッサによって実行されると、列挙された動作を実行するコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行するかまたは特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。動作が説明される順序は、限定として解釈されることを意図するものではなく、説明される任意の数のブロックは、プロセスを実装するために任意の順序で、および／または並列に組み合わせることができる。
【００３０】
図４は、本明細書に開示の実施形態による、ＨＭＤ１００のディスプレイパネル１０２上のパネルマスク１１０の一部分を動的にサイズ変更するための例示的なプロセス４００のフロー図である。考察目的で、プロセス４００を前の図を参照して説明する。
【００３１】
４０２において、ＨＭＤ１００のロジックは、パネルマスク（複数可）１１０の少なくとも一部分（複数可）に対する目標サイズ値（複数可）を決定することができる。所与のフレーム１０６に対して、ＨＭＤ１００のロジックは、例えば、左パネルマスク１１０（Ｌ）の左部分１１０（Ｌ）（１）、上部分１１０（Ｌ）（２）、右部分１１０（Ｌ）（３）、および下部分１１０（Ｌ）（４）に対応する４つの目標サイズ値を決定することができ、同様に、右パネルマスク１１０（Ｒ）の左部分１１０（Ｒ）（１）、上部分１１０（Ｒ）（２）、右部分１１０（Ｒ）（３）、および下部分１１０（Ｒ）（４）に対応する４つの目標サイズ値を決定することができる。したがって、所与のフレーム１０６に対して左パネルマスク１１０（Ｌ）および右パネルマスク１１０をレンダリングする２パネルＨＭＤ１００に対して、ブロック４０２で合計８つの目標サイズ値を決定することができる。ブロック４０２での目標サイズ値（複数可）の決定は、一連のフレーム１０６をレンダリングするために再投影が現在使用されているか否かに依存し得る。再投影が進行中の場合（例えば、所与のフレーム１０６が、再投影を使用してレンダリングされている一連のフレーム１０６の一部分である場合）、目標サイズ値（複数可）は、ＨＭＤ１００の頭部追跡モジュールによって提供される回転データに少なくとも部分的に基づいて決定され得る。再投影が進行中でない場合、目標サイズ値（複数可）は、ブロック４０２でゼロの値（複数可）に設定され得る。言及されるように、パネルマスク１１０の個々の部分の目標サイズ値は、最小サイズ値（例えば、「０」）から最大サイズ値（例えば、「１」）で固定され得、それによって、これらの２つの限度を含む、これら２つの限度間（例えば、「０」〜「１」）の任意の値に設定され得る。特に、再投影が進行している間、目標サイズ値は、ＨＭＤ１００が回転した量に対応する値として計算され得る。例えば、ＨＭＤ１００のより多い回転量は、最大サイズ値（例えば、「１」）に近い目標サイズ値に対応し、ＨＭＤ１００のより少ない回転量は、最小サイズ値（例えば、「０」）に近い目標サイズ値に対応する。
【００３２】
４０４では、ＨＭＤ１００のロジックは、目標サイズ値が既存のサイズ値に等しくないと仮定して、パネルマスク１１０の少なくとも一部分に関連付けられたサイズ値を、既存のサイズ値からブロック４０２で決定された目標サイズ値に調整することができる。すなわち、目標サイズ値が既存のサイズ値に等しい場合、ロジックは、ブロック４０４でサイズ調整を行わなくてもよい。したがって、再投影が進行中である場合、かつパネルマスクの部分に関連付けられたサイズ値が目標サイズ値未満である既存のサイズ値に設定されているとロジックが判定した場合、ブロック４０４での調整により、パネルマスク１１０の少なくとも一部分のサイズが、現在のサイズから増加されたサイズに増加することがある。再投影が進行中でない（ブロック４０２で目標サイズ値がゼロになる）場合、かつ既存のサイズ値が現在ゼロ以外である場合、または再投影が進行中で、ゼロ以外の目標サイズ値が既存のサイズ値未満である場合、ブロック４０４での調整により、パネルマスク１１０の少なくとも一部分のサイズが、現在のサイズから減少されたサイズに減少することがある。ブロック４０４での減少されたサイズへの下方サイズ調整は、現在のサイズ値からより小さな目標値（例えば、最小値またはそれ以外の目標値）への少量（例えば、フレームごとのラープ値０．００５）の低速補間であり得る。いくつかの実施形態では、ブロック４０４での下方サイズ調整は、現在のフレーム１０６に先行する所定数の連続するフレーム１０６にわたってパネルマスク１１０の一部分のサイズが増加しなかったことをさらに条件とする。例えば、パネルマスク１１０の一部分のサイズが最後の１０個の連続するフレームで増加しなかった場合、そのサイズは、減少されたサイズに下方調整され得る。あるいは、この連続するフレーム基準が満たされない場合、ブロック４０４でサイズ値を調整しなくてもよい。
【００３３】
４０６において、ＨＭＤ１００のロジックは、一連のフレーム１０６のうちのあるフレーム１０６を、ディスプレイパネル１０２の周辺にレンダリングされたパネルマスク１１０とともに、ディスプレイパネル１０２上にレンダリングすることができ、その場合、パネルマスク１１０の少なくとも一部分は、目標サイズ値に応じたサイズ（例えば、調整されたサイズ）でレンダリングされる。
【００３４】
プロセス４００は、パネルマスク１１０が拡大して、望ましくない視覚的アーチファクトが他の方法で現れるディスプレイパネル１０２の領域を覆うことにより、頭部回転と連動する再投影中に発生し得る望ましくない視覚的アーチファクトを隠すことを可能にする。これは、限定ではなく例として、図１Ａおよび図１Ｂに示されており、各ディスプレイパネル１０２上のパネルマスク１１０の一部分のサイズが現在のサイズから増加されたサイズに増加され、ディスプレイパネル（複数可）１０２上にフレーム１０６とともにレンダリングされる。
【００３５】
図５は、本明細書に開示の実施形態による、ＨＭＤ１００のディスプレイパネル１０２上のパネルマスク１１０の一部分を動的にサイズ変更するためのより詳細な例示的なプロセス５００のフロー図である。考察目的で、プロセス５００を前の図を参照して説明する。
【００３６】
５０２において、一連のフレーム１０６のうちのあるフレーム１０６は、ＨＭＤ１００のディスプレイパネル（複数可）１０２上にレンダリングするために処理される。この時点で、フレーム１０６とともにディスプレイパネル（複数可）１０２上にレンダリングされるパネルマスク（複数可）１１０は、パネルマスク（複数可）１１０の個々の部分が完全縮小状態、完全拡張状態、またはその間のどこにあるかを規定する既存のサイズ値に設定されたパネルマスク（複数可）１１０のそれらの部分に関連付けられたサイズ値を有し得る。パネルマスク（複数可）１１０が以前に増加されたサイズに拡大されていない場合、各部分の既存のサイズ値は、完全縮小状態に対応する最小サイズ値（例えば、サイズ値ゼロ）に設定され得る。
【００３７】
５０４では、ＨＭＤ１００のロジックは、一連のフレーム１０６のうちのある直近にレンダリングされたフレーム１０６が、アプリケーションから受信された、以前にレンダリングされた実際のフレーム１０６（Ａ）に関連付けられた画素データから導出された再投影されたフレーム１０６（Ｒ）であるかどうかを判定し得る。別の言い方をすれば、ＨＭＤ１００のロジックは、再投影が現在発生しているかどうかを判定する。５０４で、一連のフレーム１０６が再投影を使用してＨＭＤ１００のディスプレイパネル（複数可）１０２上にレンダリングされていると判定された場合、プロセス５００は、ブロック５０４からブロック５０６への「ＹＥＳ」ルートをたどることができる。
【００３８】
５０６では、ＨＭＤ１００のロジックは、ＨＭＤ１００の頭部追跡モジュールによって提供される回転データに少なくとも部分的に基づいて、パネルマスク１１０の個々の部分の目標サイズ値を決定することができる。例えば、ＨＭＤ１００の回転に基づいて、方向ごとに０．０〜１．０に固定された４つの目標サイズ値を決定することができる。すなわち、パネルマスク１１０の左部分に対して０〜１（両端を含む）の第１の目標サイズ値を決定することができ、パネルマスク１１０の上部分に対して０〜１（両端を含む）の第２の目標サイズ値を決定することができ、パネルマスク１１０の右部分に対して０〜１（両端を含む）の第３の目標サイズ値を決定することができ、パネルマスク１１０の下部分に対して０〜１（両端を含む）の第４の目標サイズ値を決定することができる。これは、各パネルマスク１１０に対して行うことができ、左右のパネルマスク１１０（Ｌ）および１１０（Ｒ）に対して、ブロック５０６で合計８つの目標サイズ値を決定できることを意味する。概して、ＨＭＤ１００の回転の方向および量は、パネルマスク１１０の部分およびパネルマスク１１０のその部分の目標サイズ値をそれぞれ規定する。
【００３９】
サブブロック５０８に示すように、ＨＭＤ１００のロジックは、ＨＭＤ１００の頭部追跡モジュールによって提供される回転データに基づいて、一連のフレーム１０６のうちのあるレンダリングされたフレーム１０６が最後にレンダリングされてから一定期間にわたり、方向ごとのＨＭＤ１００の回転量（例えば、左、右、上、および下方向の回転量）を判定することができる。ブロック５０８での判定に、任意の測定単位における回転量を判定する任意の好適な方法を利用することができる。例えば、フレーム間の回転角度数を、回転量として判定することができる。いくつかの実施形態では、ブロック５０８で判定される回転量は、角速度の形であり得る。ＨＭＤ１００の回転の方向性は、正または負の水平および垂直方向、または他の好適な形態の方向測定を参照して判定することができ、ＨＭＤ１００の回転の方向性は、成分方向（例えば、ＸＹ平面における左、右、上、および／または下方向）に分解することができる）。したがって、ブロック５０６のロジックは、ＨＭＤ１００が回転した方向に対応するパネルマスク（複数可）１１０の複数の部分のうちの部分（複数可）を判定することを含み得る。一般に、ＨＭＤ１００の回転量が大きいほど、目標サイズ値が大きくなるので、回転量が大きいほど、ディスプレイパネル１０２上の画像領域１０８のより多くの部分がパネルマスク１１０によって覆われる。この意味で、パネルマスク１１０の部分の最大サイズ値に対応する閾値回転量が存在し得、ＨＭＤ１００の回転量がこの閾値量以上である場合、最大サイズ値は、ブロック５０６で目標サイズ値として選択され得る。ＨＭＤ１００の回転量がこの閾値量よりも少ない場合、目標サイズ値は、最大サイズ値未満であるものとして判定される。いくつかの実施形態では、目標サイズ値は、前のフレーム１０６および現在のフレーム１０６に使用される再投影変換の相対的な差に基づいて決定することができる。すなわち、ＨＭＤ１００の回転量を判定する代わりに、またはそれに加えて、前のフレーム１０６および現在のフレーム１０６の間に使用された再投影変換間の相対差を使用して、再投影変換間の差が大きいほど、ディスプレイパネルのより多くの部分が望ましくない視覚的アーチファクト（例えば、黒色の画素と照光された／有効な画素との間のストロボフラッシュ）を呈するという考えに基づいて、目標サイズ値の計算を駆動することができる。
【００４０】
５０４で、一連のフレーム１０６が再投影を使用してＨＭＤ１００のディスプレイパネル（複数可）１０２上にレンダリングされていないと判定された場合、プロセス５００は、ブロック５０４からブロック５１０への「ＮＯ」ルートをたどることができる。前の反復の後、ブロック５０４でのこの判定は、再投影が停止したという判定であり得る。例えば、フレーム１０６をレンダリングし、５０２で次のフレームの処理に進んだ後、ＨＭＤ１００のロジックは、一連のフレーム１０６が再投影なしで（例えば、再投影されたフレーム１０６（Ｒ）なしで）レンダリングされていると判定することができ、それは再投影の使用が停止したことを示す。別の言い方をすれば、ディスプレイパネル１０２上にレンダリングされる１つ以上の将来のフレームは、いかなる再投影されたフレーム１０２（Ｒ）も含まない場合があり、それは、再投影の使用が停止したか、または別の理由で再投影が現在発生していないことを示す。これは、アプリケーションが以前にフレームレートに達しなかった後、フレームレートに達した場合に発生することがある。
【００４１】
５１０では、ＨＭＤ１００のロジックは、パネルマスク１１０の個々の部分の目標サイズ値をゼロ（または最小サイズ値）に設定することができる。例えば、パネルマスク１１０の左、上、右、および下部分に対応する４つの目標サイズ値が、ブロック５１０でゼロに設定され得る。
【００４２】
５１２では、ブロック５０６／５０８またはブロック５１０のいずれかに続いて、ＨＭＤ１００のロジックは、パネルマスク１１０の個々の部分ごとに、目標サイズ値がパネルマスク１１０の部分の既存のサイズ値よりも大きいかどうかを判定することができる。ブロック５１２で、目標サイズ値が既存のサイズ値よりも大きいと判定された場合、プロセス５００は、ブロック５１２からブロック５１４への「ＹＥＳ」ルートをたどることができる。
【００４３】
５１４では、ＨＭＤ１００のロジックは、パネルマスク１１０の部分に関連付けられたサイズ値を、既存のサイズ値から目標サイズ値に調整（または変更）して、パネルマスク１１０の部分のサイズを、現在のサイズから増加されたサイズに増加させることができる。示されるように、サイズを増加させるためのこの調整は、既存のサイズ値よりも大きい目標サイズ値に基づくことができ、それは、パネルマスク１１０の部分を、画像領域１０８のより多くの部分を覆うために内側に引き入れることを示す。いくつかの実施形態では、ブロック５１４でのサイズ調整は、急な視野変化を軽減するために一時的に平滑化される。
【００４４】
５１６では、ＨＭＤ１００のロジックは、ディスプレイパネル（複数可）１０２の周辺にレンダリングされたパネルマスク（複数可）１１０とともに、ディスプレイパネル（複数可）１０２上のフレーム１０６をレンダリングすることができ、その場合、パネルマスクの少なくとも一部分は、目標サイズ値に応じたサイズでレンダリングされ、ブロック５１８では、一連のフレーム１０６内の次のフレーム１０６は、次のフレームのためにブロック５０２から反復することによって処理され得る。ブロック５１４に続いて、パネルマスク１１０はブロック５１６で、既存のサイズ値から目標サイズ値への増加により、増加されたサイズでレンダリングされ得る。一対のディスプレイパネル（例えば、左ディスプレイパネル１０２（Ｌ）および右ディスプレイパネル１０２（Ｒ））を伴うＨＭＤ１００の場合、図５のアルゴリズムは、各パネルマスク１１０（Ｌ）および１１０（Ｒ）に対して独立して実行され得ることも理解されたい。実際には、各マスクの同じ部分は、図１Ａおよび図１Ｂの例に図示するように、各ディスプレイパネル１０２上のパネルマスク１１０の前縁部分が各ディスプレイパネル１０２の中心に向かって内側に拡大するときのように、再投影中の特定のＨＭＤ１００の回転に応答して、同一または同様の方法で調整され得る。さらに、新たに決定された目標サイズ値に応じてパネルマスク１１０がレンダリングされるフレーム１０６は、実際のフレーム１０６（Ａ）または再投影されたフレーム１０６（Ｒ）であり得る。少なくとも１つの例では、再投影が発生しているというブロック５０４での判定は、以前にレンダリングされた再投影されたフレーム１０６（Ｒ）に基づく。したがって、後続のフレームは、アプリケーションから受信された実際のフレーム１０６（Ａ）であり得、その場合、パネルマスク１１０は、計算された目標サイズ値に応じて、実際のフレーム１０６（Ａ）とともにブロック５１６でレンダリングされる。別の言い方をすれば、再投影が最初に検出されているとき、サイズが調整されたパネルマスク１１０とともにレンダリングされた最初のフレーム１０６は次のフレームであってもよく、それはアプリケーションから受信された実際のフレーム１０６（Ａ）であり得る。しかしながら、いくつかの実施形態では、例えば、複数の再投影されたフレーム１０６（Ｒ）が連続する実際のフレーム１０６（Ａ）の間にレンダリングされる場合（例えば、アプリケーションが、３０フレーム／秒でフレームを出力しているとすると、２つの再投影されたフレーム１０６（Ｒ）は、実際のフレーム１０６（Ａ）ごとにレンダリングされる）、増加されたサイズのパネルマスク１１０とともにレンダリングされる最初のフレーム１０６は、次の再投影されたフレーム１０６（Ｒ）であり得る。
【００４５】
再びブロック５１２を参照すると、ブロック５１２で、目標サイズ値が既存のサイズ値よりも大きくないと判定された場合、プロセス５００は、ブロック５１２からブロック５２０への「ＮＯ」ルートをたどることができる。５２０では、ＨＭＤ１００のロジックは、（パネルマスク１１０の個々の部分の）目標サイズ値が既存のサイズ値未満であるかどうかを判定することができる。ブロック５２０での答えが「ｎｏ」である場合、プロセス５００は、目標サイズ値が既存のサイズ値に等しいという判定に基づいて、ブロック５２０からブロック５２２への「ＮＯ」ルートをたどることができる。５２２では、パネルマスク１１０の所与の部分のサイズ値に対していかなる調整も行われず、フレームはブロック５１６で、パネルマスク１１０の部分のサイズに対する調整なしでレンダリングされる。換言すれば、パネルマスク１１０が、覆うべき部分をすでに覆っていると判定された場合、調整は行われない。その一方で、ブロック５２０で、パネルマスク１１０の一部分の目標サイズ値が既存のサイズ値未満であると判定された場合、プロセス５００は、ブロック５２０からブロック５２４への「ＹＥＳ」ルートをたどることができる。
【００４６】
５２４では、ＨＭＤ１００のロジックは、パネルマスク１１０の該当部分のサイズを増加させることなく、所定数のフレーム１０６（例えば、Ｎフレーム、ここで、Ｎは５、１０などに等しい）が連続してレンダリングされたかどうかを判定し得る。最後のＮ個の連続するフレーム１０６にわたってパネルマスク１１０の該当部分のサイズが増加した場合、プロセス５００は、ブロック５２４からブロック５２２への「ＮＯ」ルートをたどることができ、その場合、パネルマスク１１０のその部分に対して、およびパネルマスク１１０の該当部分のサイズを調整せずにフレームがレンダリングされるブロック５１６に対して、いかなる調整も行われない。これは、パネルマスク１１０を縮小して画像領域１０８の以前に覆われていた部分を見えるようにする前に、再投影が停止したことをある程度確信することが有益であり得るという考えに基づくことができる。この確信は、パネルマスク１１０の該当部分のサイズを増加させることなくレンダリングされる特定数の連続するフレーム１０６（Ａ）に基づくことができる。したがって、最後のＮ個の連続するフレーム１０６にわたってパネルマスク１１０の該当部分のサイズにいかなる増加もなかった場合、プロセス５００は、ブロック５２４からブロック５２６への「ＹＥＳ」ルートをたどることができる。
【００４７】
５２６で、サイズ値は、より小さな目標値（例えば、目標サイズ値、またはそうでなければ、パネルマスク１１０の完全縮小状態に対応する「０」の最小サイズ値）に向かってデクリメント（例えば、徐々に下方調整）され得る。これにより、パネルマスク１１０の一部分のサイズを、ある期間（例えば、約２秒間）にわたって、既存のサイズ値から既存のサイズ値未満である目標サイズ値までデクリメントすることが可能になり得、それによって、パネルマスク１１０の一部分のサイズは、その期間にわたって現在のサイズからより小さなサイズへ減少する。したがって、複数のフレームにわたる、ブロック５２６でのデクリメントは、最終的に、パネルマスク１１０の以前に拡大された部分のサイズを減少させることになる。頭部の回転が遅くなる、および／または再投影が停止すると、パネルマスク１１０の以前に拡大された部分は、プロセス５００の複数の反復にわたって最終的に最小サイズに減少し得る。これにより、人間の目には認識されない速度でパネルマスク１１０の縮小速度を制御することが可能になる。このように、パネルマスク１１０の縮小は、ユーザ１０４の気を散らすものであってはならない。いくつかの実施形態では、ブロック５２６でのデクリメント動作は、既存のサイズ値を、比較的少量（例えば、フレームあたり０．００５のラープ値）だけより小さな目標値にデクリメントする低速補間ステップである。言い換えれば、ロジックは、パネルマスク１１０の部分が最大縮小速度よりも速く縮小することを回避するように構成され得、つまり、ユーザ１０４の頭部回転が突然大幅に遅くなった場合、パネルマスク１１０の部分のサイズを決定された目標サイズ値まで減少させる代わりに、既存のサイズ値を、目標サイズ値よりも大きく、かつ既存のサイズ値未満である中間サイズ値にデクリメントすることができる。いくつかの実施形態では、目標サイズ値がより小さいサイズ値と既存のサイズ値との間にある場合、ブロック５２６でのデクリメントは、目標サイズ値までデクリメントする。既存のサイズ値をデクリメントした（例えば、既存のサイズ値を特定のパーセンテージ（例えば、５％）小さくした）後、プロセス５００は、ブロック５２６からブロック５１６に進み、フレーム１０６が、パネルマスクとともにディスプレイパネル１０２上にレンダリングされ、その場合、サイズをデクリメントしたパネルマスク１１０の部分は、パネルマスク１１０の部分の以前のサイズと比較して、減少されたサイズでレンダリングされる。
【００４８】
プロセス５００のその後の反復時に、ブロック５０４で、一連のフレーム１０６をレンダリングするために再投影がまだ使用されているか、または再投影が停止したかを判定することができ、それは、パネルマスク１１０の個々の部分を、前のサイズ調整と比較して動的に増加、減少、または変更されないままにするかどうかを規定することが理解され得る。一般に、パネルマスク１１０の適切な部分は、さらなるＨＭＤ１００の回転と連動した再投影中にサイズが増加し、ＨＭＤ１００の回転が遅くなる、および／または再投影が停止すると、パネルマスク１１０の部分のサイズが減少し、ディスプレイパネル１０２上でより多くの画像領域１０８が表示され得る。
【００４９】
図６は、本明細書に開示の実施形態による、ＶＲヘッドセットなどのＨＭＤ６００の例示的な構成要素が内蔵され得ることを例解する。ＨＭＤ６００は、前の図で参照したＨＭＤ１００と同一または同様であり得、したがって、図６に示すＨＭＤ６００の構成要素は、ＨＭＤ１００に実装され得る。ＨＭＤ６００は、ユーザ１０４によって（例えば、ユーザ１０４の頭部に）着用されるスタンドアロンデバイスとして実装され得る。いくつかの実施形態では、ＨＭＤ６００は、ユーザ１０４が、ユーザ１０４の頭部の周りに適合するようにサイズ調整される固定機構（例えば、調整可能バンド）を使用して、ＨＭＤ６００を自分の頭部に固定することを可能にすることなどによって、ヘッドマウント可能であり得る。いくつかの実施形態では、ＨＭＤ６００は、ニアアイまたはニアツーアイディスプレイ（複数可）を含む仮想現実（ＶＲ）または拡張現実（ＡＲ）ヘッドセットを備える。したがって、「ウェアラブルデバイス」、「ウェアラブル電子デバイス」、「ＶＲヘッドセット」、「ＡＲヘッドセット」、および「ヘッドマウントディスプレイ（ＨＭＤ）」という用語は、本明細書では互換的に使用されて、図６のデバイス６００を指すことができる。しかしながら、これらのタイプのデバイスは、ＨＭＤ６００の単なる例であることを理解されたく、またＨＭＤ６００は、他の様々な形状因子で実装され得ることを理解されたい。
【００５０】
例解された実装形態では、ＨＭＤ６００は、１つ以上のプロセッサ６０２およびメモリ６０４（例えば、コンピュータ可読媒体６０４）を含む。いくつかの実装形態では、プロセッサ（複数可）６０２は、中央処理装置（ＣＰＵ）、グラフィック処理装置（ＧＰＵ）、ＣＰＵとＧＰＵの双方、マイクロプロセッサ、デジタルシグナルプロセッサ、または当該技術分野で知られている他の処理装置もしくは構成要素を含み得る。代替的にまたは追加的に、本明細書で説明される機能は、少なくとも部分的に、１つ以上のハードウェアロジック構成要素によって実行され得る。例えば、限定されるものではないが、使用することができるハードウェアロジック構成要素の例解的なタイプは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、特定用途向け標準製品（ＡＳＳＰ）、システムオンチップ・システム（ＳＯＣ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）などを含む。さらに、プロセッサ（複数可）６０２の各々は、プログラムモジュール、プログラムデータ、および／または１つ以上のオペレーティングシステムも記憶することができる独自のローカルメモリを有し得る。
【００５１】
メモリ６０４は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶のための任意の方法または技術で実装される、揮発性および不揮発性メモリ、着脱可能媒体および着脱不能媒体を含み得る。そのようなメモリは、これらに限定されるものではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、ＲＡＩＤストレージシステム、または所望の情報を記憶するために使用することができ、かつコンピューティングデバイスからアクセスすることができる任意の他の媒体を含む。メモリ６０４は、コンピュータ可読記憶媒体（「ＣＲＳＭ」）として実装することができ、これは、メモリ６０２に記憶された命令を実行するためにプロセッサ（複数可）６０２によってアクセス可能な任意の利用可能な物理媒体とすることができる。１つの基本的な実装形態では、ＣＲＳＭは、ランダムアクセスメモリ（「ＲＡＭ」）およびフラッシュメモリを含み得る。他の実装形態では、ＣＲＳＭは、読み取り専用メモリ（「ＲＯＭ」）、電気的に消去可能なプログラム可能な読み取り専用メモリ（「ＥＥＰＲＯＭ」）、または所望の情報を記憶するために使用することができ、かつプロセッサ（複数可）６０２によってアクセスすることができる任意の他の有形媒体を含み得るが、これらに限定されない。
【００５２】
一般に、ＨＭＤ６００は、本明細書に記載の技術、機能、および／または動作を実施するように構成されたロジック（例えば、ソフトウェア、ハードウェア、および／またはファームウェアなど）を含み得る。コンピュータ可読媒体６０４は、命令、データ記憶などのような様々なモジュールを含むものとして示され、これらのモジュールは、本明細書に記載の技術、機能、および／または動作を実行するためにプロセッサ（複数可）６０２上で実行するように構成され得る。コンピュータ可読媒体６０４に記憶され、かつプロセッサ（複数可）６０２上で実行可能なものとして、いくつかの例示的な機能モジュールを示しているが、同じ機能は、代替的に、ハードウェア、ファームウェア内に、またはシステムオンチップ（ＳＯＣ）および／または他のロジックとして実装されてもよい。
【００５３】
オペレーティングシステムモジュール６０６は、他のモジュールの便宜のために、ＨＭＤ６００内でＨＭＤ６００に結合されるハードウェアを管理するように構成され得る。加えて、場合によっては、ＨＭＤ６００は、メモリ６０４に格納されているか、または他の方法でＨＭＤ６００にアクセス可能な１つ以上のアプリケーション６０８を含み得る。この実装形態では、アプリケーション（複数可）６０８は、ゲームアプリケーション６１０を含む。ただし、ＨＭＤ６００は、任意の数またはタイプのアプリケーションを含み得、ここに示す特定の例に限定されない。ゲームアプリケーション６１０は、ユーザ１０４によってプレイ可能なビデオベースのインタラクティブゲーム（例えば、ＶＲゲーム）のゲームプレイを開始し、ＨＭＤ１００のディスプレイパネルにレンダリングされるフレーム（例えば、実際のフレーム１０６（Ａ））を出力するように構成され得る。合成器６１１は、後期レンダリング動作として、各フレームとともにパネルマスク１１０をレンダリングし、動的に調整するように構成され得る。したがって、合成器６１１は、ＨＭＤ１００の関連付けられたロジックとともに、本明細書に開示の動的パネルマスク調整技術を実行することができる。
【００５４】
一般に、ＨＭＤ６００は、入力デバイス６１２と出力デバイス６１４とを有する。入力デバイス６１２は、制御ボタンを含み得る。いくつかの実装形態では、１つ以上のマイクロフォンが、ユーザ音声入力などのオーディオ入力を受信するための入力デバイス６１２として機能し得る。いくつかの実装形態では、１つ以上のカメラまたは他のタイプのセンサ（例えば、慣性測定ユニット（ＩＭＵ））が、ユーザ１０４の手および／または頭部の動きなどのジェスチャ入力を受信するための入力デバイス６１２として機能し得る。いくつかの実施形態では、追加の入力デバイス６１２が、キーボード、キーパッド、マウス、タッチスクリーン、ジョイスティックなどの形態で提供され得る。他の実施形態では、ＨＭＤ６００は、キーボード、キーパッド、または他の同様の形態の機械的入力を省略してもよい。代わりに、ＨＭＤ６００は、入力デバイス６１２の比較的単純な形態、ネットワークインターフェース（無線または有線ベース）、電力、および処理／メモリ機能を実装し得る。例えば、１つ以上の入力構成要素の限定されたセット（例えば、環境設定を開始する、電源をオン／オフするなどのための専用ボタン）を採用して、ＨＭＤ６００をその後使用可能にすることができる。一実装形態では、入力デバイス（複数可）６１２は、音量を増加／減少させるための基本的な音量制御ボタン（複数可）、ならびに電源ボタンおよびリセットボタンなどの制御機構を含み得る。
【００５５】
出力デバイス６１４は、前の図を参照して説明したディスプレイパネル（複数可）１０２と同じまたは類似し得るディスプレイ（複数可）６１６を含み得る。出力デバイス６１４は、光要素（例えば、ＬＥＤ）、触覚感覚を生み出すためのバイブレータ、スピーカ（複数可）（例えば、ヘッドホン）などをさらに含み得るが、これらに限定されない。例えば、電源がオンになっているときなどの状態を示すための単純な光要素（例えば、ＬＥＤ）も存在し得る。
【００５６】
ＨＭＤ６００は、ネットワークへの無線接続を容易にするために、アンテナ６２０に結合された無線ユニット６１８をさらに含み得る。無線ユニット６１８は、Ｗｉ−Ｆｉ、Ｂｌｕｅｔｏｏｔｈ、無線周波数（ＲＦ）などのような様々な無線技術のうちの１つ以上を実装することができる。ＨＭＤ６００は、ネットワーク、接続された周辺機器（ＰＣ，ゲームコンソールなどを含む）、または他の無線ネットワークと通信するプラグインネットワークデバイスへの有線接続を容易にするための物理ポートをさらに含み得ることを理解されたい。
【００５７】
ＨＭＤ６００は、１つ以上の光学要素を使用して、電子ディスプレイ（複数可）６１６からユーザの目（複数可）に光を向ける光学サブシステム６２２をさらに含み得る。光学サブシステム６２２は、アパーチャ、レンズ（例えば、フレネルレンズ、凸レンズ、凹レンズなど）、フィルタなどを含むがこれらに限定されない、異なる光学要素の様々なタイプおよび組み合わせを含み得る。いくつかの実施形態では、光学サブシステム６２２内の１つ以上の光学要素は、反射防止コーティングなどの１つ以上のコーティングを有し得る。光学サブシステム６２２による画像光の拡大は、電子ディスプレイ（複数可）６１６が、より大型のディスプレイよりも物理的により小型で、軽量で、より少ない電力を消費することを可能にする。さらに、画像光の拡大は、表示されたコンテンツ（例えば、画像）の視野（ＦＯＶ）を増加させ得る。例えば、表示されたコンテンツのＦＯＶは、表示されたコンテンツが、ユーザのＦＯＶのほぼすべて（例えば、対角１２０〜１５０度）、場合によってはすべてを使用して提示されるようなものである。ＡＲアプリケーションは、より狭いＦＯＶ（例えば、約４０度のＦＯＶ）を有していてもよい。光学サブシステム６２２は、樽型歪み、ピンクッション歪み、縦色収差、横色収差、球面収差、コマ収差、像面湾曲、非点収差など、これらに限定されないが、１つ以上の光学誤差を補正するように設計され得る。いくつかの実施形態では、表示のために電子ディスプレイ（複数可）６１６に提供されるコンテンツは事前に歪められており、光学サブシステム６２２は、コンテンツに基づいて生成された電子ディスプレイ（複数可）６１６からの画像光を受け取るときにその歪みを補正する。
【００５８】
ＨＭＤ６００は、動き、位置、および配向データを生成するために使用されるセンサなどの、１つ以上のセンサ６２４をさらに含み得る。これらのセンサ６２４は、ジャイロスコープ、加速度計、磁力計、ビデオカメラ、カラーセンサ、もしくは他の動き、位置、および配向センサであり得るか、またはそれらを含み得る。センサ６２４はまた、動き、位置、および配向データを生成するためにカメラまたはカラーセンサによって外部から見ることができる一連の能動または受動マーカなどのセンサのサブ部分を含み得る。例えば、ＶＲヘッドセットは、その外部に、外部カメラで見たとき、または光（例えば、赤外光または可視光）で照らしたときに、反射器またはライト（例えば、赤外光または可視光）などの複数のマーカを含み得、動き、位置、および配向データを生成するために、ソフトウェアによる解釈のための１つ以上の基準点を提供し得る。ＨＭＤ６００は、ＨＭＤ６００の環境内の基地局によって投射または送信される光（例えば、赤外光または可視光）に対して感応性である光センサを含み得る。
【００５９】
一例では、センサ（複数可）６２４は、慣性測定ユニット（ＩＭＵ）６２６を含み得る。ＩＭＵ６２６は、加速度計、ジャイロスコープ、磁力計、および／または動きの検出、ＩＭＵ６２６に関連する誤差の補正、もしくはそれらのいくつかの組み合わせに好適な他のセンサから受信した測定信号に基づいて較正データを生成する電子デバイスであり得る。測定信号に基づいて、ＩＭＵ６２６などのそのような動きベースのセンサは、ＨＭＤ６００の初期位置に対するＨＭＤ６００の推定位置を示す較正データを生成することができる。例えば、複数の加速度計が並進運動（前方／後方、上／下、左／右）を測定し、複数のジャイロスコープが回転運動（例えば、ピッチ、ヨー、ロール）を測定してもよい。ＩＭＵ６２６は、例えば、測定信号を迅速にサンプリングし、サンプリングされたデータからＨＭＤ６００の推定位置を計算することができる。例えば、ＩＭＵ６２６は、経時的に加速度計から受信した測定信号を統合して速度ベクトルを推定し、経時的に速度ベクトルを統合して、ＨＭＤ６００上の基準点の推定位置を判定することができる。基準点は、ウェアラブルデバイス７０２の位置を説明するために使用することができる点である。基準点は、一般に、空間内の点として定義され得るが、様々な実施形態では、基準点は、ＨＭＤ６００内の点（例えば、ＩＭＵ６２６の中心）として定義される。代替的に、ＩＭＵ６２６は、サンプリングされた測定信号を外部コンソール（または他のコンピューティングデバイス）に提供し、外部コンソールが較正データを判定する。
【００６０】
センサ６２４は、センサデータを高速で提供するために、比較的高い周波数で動作することができる。例えば、センサデータは、１０００Ｈｚの速度（または１ミリ秒ごとに１つのセンサ読み取り）で生成され得る。このようにして、１秒間に１０００回の読み取りが行われる。センサがこの速度で（またはそれ以上の速度で）これだけのデータを生成する場合、動きを予測するために使用されるデータセットは、数十ミリ秒ほどの比較的短い期間でも非常に大きくなる。
【００６１】
言及されるように、いくつかの実施形態では、センサ６２４は、３Ｄ空間におけるＨＭＤ６００の位置および／または配向、姿勢などを追跡する目的で、ＨＭＤ６００の環境内の基地局によって放出される光に対して感応性である光センサを含み得る。位置および／または配向の計算は、光パルスのタイミング特性、およびセンサ６２４によって検出される光の有無に基づくことができる。
【００６２】
ＨＭＤ６００は、視線追跡モジュール６２８をさらに含み得る。ＨＭＤ６００内のカメラまたは他の光学センサは、ユーザの目の画像情報を捕捉することができ、視線追跡モジュール６２８は、捕捉された情報を使用して、ねじれおよび回転の大きさ（つまり、ロール、ピッチ、ヨー）ならびに各目の注視方向を含む、瞳孔間距離、眼間距離、（例えば、歪み調整の目的で）ＨＭＤ６００に対する各目の３次元（３Ｄ）位置を判定することができる。一例では、赤外光は、ＨＭＤ６００内で放出され、各目から反射される。反射光は、ＨＭＤ６００のカメラによって受容または検出され、分析されて、各目によって反射された赤外光の変化から眼球回転を抽出する。ユーザ１０４の目を追跡するための多くの方法は、視線追跡モジュール６２８によって使用することができる。したがって、視線追跡モジュール６２８は、各目の最大６自由度（すなわち、３Ｄ位置、ロール、ピッチ、およびヨー）を追跡することができ、追跡された量の少なくともサブセットを、ユーザ１０４の２つの目から組み合わせて、注視点（つまり、ユーザが見ている仮想シーン内の３Ｄ地点または位置）を推定することができる。例えば、視線追跡モジュール６２８は、過去の測定値からの情報、ユーザ１０４の頭部の位置を識別する測定値、および電子ディスプレイ（複数可）６１６によって提示されるシーンを記述する３Ｄ情報を統合することができる。したがって、ユーザ１０４の目の位置および配向の情報は、ユーザ１０４が見ているＨＭＤ６００によって提示される仮想シーンにおける注視点を判定するために使用される。
【００６３】
ＨＭＤ６００は、頭部追跡モジュール６３０をさらに含み得る。頭部追跡モジュール６３０は、上記のように、センサ６２４のうちの１つ以上を利用して、ユーザ１０４の頭部回転を含む頭部の動きを追跡することができる。例えば、頭部追跡モジュール６３０は、ＨＭＤ６００の最大６自由度（すなわち、３Ｄ位置、ロール、ピッチ、およびヨー）を追跡することができる。これらの計算は、一連のフレーム１０６のフレーム１０６ごとに行うことができるので、アプリケーション６０８は、頭部の位置および配向に応じて、次のフレーム１０６で（再投影されたフレーム１０６（Ｒ）の場合でも）シーンをレンダリングする方法を決定することができる。いくつかの実施形態では、頭部追跡モジュール６３０は、現在および／または過去のデータに基づいて、ＨＭＤ６００の将来の位置および／または配向を予測するように構成されている。これは、ユーザ１０４がディスプレイ（複数可）６１６上の光（ひいては、画像）を実際に見る前に、アプリケーションがフレーム１０６をレンダリングするように求められるためである。したがって、次のフレーム１０６は、フレーム１０６をレンダリングする前のおよそ２５〜３０ミリ秒（ｍｓ）などのより早い時点で行われた、頭部の位置および／または配向のこの将来の予測に基づいて、レンダリングすることができる。頭部追跡モジュール６３０によって提供される回転データを使用して、任意の好適な測定単位で、ＨＭＤ６００の回転方向およびＨＭＤ６００の回転量の両方を判定することができる。例えば、回転方向は、左、右、上、および下に対応する正または負の水平方向および正または負の垂直方向の観点で単純化されて出力され得る。回転量は、度、ラジアンなどの単位で表すことができる。角速度を計算して、ＨＭＤ６００の回転速度を判定することができる。
【００６４】
主題は構造的特徴に特有の言語で説明されているが、添付の特許請求の範囲に定義された主題は、必ずしも説明された特定の特徴に限定されるものではないことを理解されたい。むしろ、特定の特徴は、特許請求の範囲を実装する例解的な形態として開示されている。
【図１Ａ】
2021531493.tif 000003
【図１Ｂ】
2021531493.tif 000004
【図２】
2021531493.tif 000005
【図３】
2021531493.tif 000006
【図４】
2021531493.tif 000007
【図５】
2021531493.tif 000008
【図６】
2021531493.tif 000009
【国際調査報告】
2021531493.tif 000010