(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2021-12-13
(45)【発行日】2022-01-13
(54)【発明の名称】ヘッドマウントディスプレイとコントローラとの電磁場を介したクロック同期
(51)【国際特許分類】
G06F 3/0346 20130101AFI20220105BHJP
G06F 3/01 20060101ALI20220105BHJP
G09G 5/00 20060101ALI20220105BHJP
G09G 5/36 20060101ALI20220105BHJP
G09G 5/12 20060101ALI20220105BHJP
A63F 13/30 20140101ALI20220105BHJP
A63F 13/23 20140101ALI20220105BHJP
【FI】
G06F3/0346 424
G06F3/01 510
G09G5/00 510A
G09G5/00 510H
G09G5/00 550C
G09G5/36 530Y
G09G5/00 530T
G09G5/12
A63F13/30
A63F13/23
(21)【出願番号】P 2020542152
(86)(22)【出願日】2018-12-28
(86)【国際出願番号】 US2018068008
(87)【国際公開番号】W WO2019152121
(87)【国際公開日】2019-08-08
【審査請求日】2020-10-05
(32)【優先日】2018-02-02
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】100105924
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】スタフォード、ジェフリー
(72)【発明者】
【氏名】松川 武夫
(72)【発明者】
【氏名】中村 勇一郎
【審査官】梅本 章子
(56)【参考文献】
【文献】特表2016-532178(JP,A)
【文献】特表2017-516185(JP,A)
【文献】米国特許出願公開第2010/0009752(US,A1)
【文献】米国特許出願公開第2018/0108179(US,A1)
【文献】米国特許出願公開第2011/267269(US,A1)
【文献】国際公開第2016/141373(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/0346
G06F 3/01
G09G 5/00
G09G 5/36
G09G 5/12
A63F 13/30
A63F 13/23
(57)【特許請求の範囲】
【請求項1】
インタラクティブアプリケーションを実行し、事前設定されたフレームレートで画像フレームを生成して送信するコンピューティングデバイスであって、前記画像フレームが、実行中の前記インタラクティブアプリケーションのアプリケーション状態に基づいて生成される、前記コンピューティングデバイスと、
前記コンピューティングデバイスから送信された前記画像フレームを受信し、ヘッドマウントディスプレイ(HMD)のディスプレイデバイスを介して前記画像フレームを提示する前記HMDであって、前記HMDは、磁気信号を放出する磁気エミッタを含み、前記磁気信号が、前記コンピューティングデバイスから受信した前記画像フレームに同期される同期符号化を有する、前記HMDと、
前記磁気信号を検出する磁気センサを含むコントローラデバイスであって、前記コントローラデバイスは、検出された前記磁気信号を処理して、前記コントローラデバイスの位置及び/または向きを識別する磁気位置データを判定し、前記コントローラデバイスは、検出された前記磁気信号を更に処理して、前記同期符号化を読み取り、前記コントローラデバイスは、前記同期符号化を使用して、前記磁気位置データに対応するタイミングデータを生成し、前記タイミングデータが、前記同期符号化に基づいて前記磁気位置データのタイミングを示し、前記コントローラデバイスは、前記磁気位置データ、及び対応する前記タイミングデータを前記コンピューティングデバイスに送信する、前記コントローラデバイスとを備え、
前記コンピューティングデバイスは、前記磁気位置データ、及び対応する前記タイミングデータを使用して、前記コントローラデバイスの前記位置及び/または向きを判定し、前記コンピューティングデバイスは、前記コントローラデバイスの前記位置及び/または向きを使用して、実行中の前記インタラクティブアプリケーションの前記アプリケーション状態を更新する、システム。
【請求項2】
前記画像フレームの前記送信が、前記事前設定されたフレームレートに従って、各画像フレームの開始を知らせるタイミング信号を含むビデオ信号の送信によって設定され、
前記磁気信号の前記同期符号化が、前記タイミング信号に同期される、請求項1に記載のシステム。
【請求項3】
前記タイミング信号が垂直同期信号である、請求項2に記載のシステム。
【請求項4】
前記磁気信号の前記同期符号化が、前記磁気信号の周波数または振幅の1つ以上の変調によって設定されている、請求項1に記載のシステム。
【請求項5】
前記変調が、前記タイミング信号に同期された前記磁気信号の変化の繰り返しパターンを設定する、請求項4に記載のシステム。
【請求項6】
対応する前記タイミングデータを生成することが、前記同期符号化を使用して、前記同期符号化からの前記コントローラデバイスのクロックのドリフトを修正することを含む、請求項1に記載のシステム。
【請求項7】
前記コントローラデバイスの前記位置及び/または向きが、前記HMDに対している、請求項1に記載のシステム。
【請求項8】
前記タイミングデータが、前記磁気位置データを前記画像フレームの前記生成に同期させることを可能にする、請求項1に記載のシステム。
【請求項9】
前記コントローラデバイスは、モーションデータのサンプルを生成する少なくとも1つのモーションセンサを含み、前記コントローラデバイスは、前記同期符号化を使用して、モーションセンサデータのサンプルごとに対応するタイムスタンプを生成し、前記コントローラデバイスは、前記モーションデータのサンプル、及び対応する前記タイムスタンプを前記コンピューティングデバイスに送信し、
前記コンピューティングデバイスは、前記モーションデータのサンプル、及び対応する前記タイムスタンプを使用して、前記コントローラデバイスの位置及び/または向きを判定し、前記コントローラデバイスの前記位置及び/または向きが、実行中の前記インタラクティブアプリケーションの前記アプリケーション状態を更新するために使用される、請求項1に記載のシステム。
【請求項10】
モーションセンサデータの所与のサンプルの対応する前記タイムスタンプを生成することが、前記同期符号化を使用して、前記同期符号化からの前記コントローラデバイスのクロックのドリフトを修正することを含む、請求項9に記載のシステム。
【請求項11】
方法であって、
コンピューティングデバイスによってインタラクティブアプリケーションを実行すること、及び前記コンピューティングデバイスによって、事前設定されたフレームレートで画像フレームを生成して送信することであって、前記画像フレームが、実行中の前記インタラクティブアプリケーションのアプリケーション状態に基づいて生成され、送信することと、
ヘッドマウントディスプレイ(HMD)によって、前記コンピューティングデバイスから送信された前記画像フレームを受信するとともに、前記HMDのディスプレイデバイスを介して前記画像フレームを提示すること、及び前記HMDの磁気エミッタによって、磁気信号を放出することであって、前記磁気信号が、前記コンピューティングデバイスから受信した前記画像フレームに同期される同期符号化を有し、放出することと、
磁気センサを含むコントローラデバイスによって、前記磁気信号を検出すること、及び前記コントローラデバイスによって、検出された前記磁気信号を処理して、前記コントローラデバイスの位置及び/または向きを識別する磁気位置データを判定することを含み、
前記コントローラデバイスは、検出された前記磁気信号を更に処理して、前記同期符号化を読み取り、前記コントローラデバイスは、前記同期符号化を使用して、前記磁気位置データに対応するタイミングデータを生成し、前記タイミングデータが、前記同期符号化に基づいて前記磁気位置データのタイミングを示し、前記コントローラデバイスは、前記磁気位置データ、及び対応する前記タイミングデータを前記コンピューティングデバイスに送信し、
前記コンピューティングデバイスは、前記磁気位置データ、及び対応する前記タイミングデータを使用して、前記コントローラデバイスの前記位置及び/または向きを判定し、前記コンピューティングデバイスは、前記コントローラデバイスの前記位置及び/または向きを使用して、実行中の前記インタラクティブアプリケーションの前記アプリケーション状態を更新する、方法。
【請求項12】
前記画像フレームの前記送信が、前記事前設定されたフレームレートに従って、各画像フレームの開始を知らせるタイミング信号を含むビデオ信号の送信によって設定され、
前記磁気信号の前記同期符号化が、前記タイミング信号に同期される、請求項11に記載の方法。
【請求項13】
前記タイミング信号が垂直同期信号である、請求項12に記載の方法。
【請求項14】
前記磁気信号の前記同期符号化が、前記磁気信号の周波数または振幅の1つ以上の変調によって設定されている、請求項11に記載の方法。
【請求項15】
前記変調が、前記タイミング信号に同期された前記磁気信号の変化の繰り返しパターンを設定する、請求項14に記載の方法。
【請求項16】
対応する前記タイミングデータを生成することが、前記同期符号化を使用して、前記同期符号化からの前記コントローラデバイスのクロックのドリフトを修正することを含む、請求項11に記載の方法。
【請求項17】
前記コントローラデバイスの前記位置及び/または向きが、前記HMDに対している、請求項11に記載の方法。
【請求項18】
前記タイミングデータが、前記磁気位置データを前記画像フレームの前記生成に同期させることを可能にする、請求項11に記載の方法。
【請求項19】
前記コントローラデバイスは、モーションデータのサンプルを生成する少なくとも1つのモーションセンサを含み、前記コントローラデバイスは、前記同期符号化を使用して、モーションセンサデータのサンプルごとに対応するタイムスタンプを生成し、前記コントローラデバイスは、前記モーションデータのサンプル、及び対応する前記タイムスタンプを前記コンピューティングデバイスに送信し、
前記コンピューティングデバイスは、前記モーションデータのサンプル、及び対応する前記タイムスタンプを使用して、前記コントローラデバイスの位置及び/または向きを判定し、前記コントローラデバイスの前記位置及び/または向きが、実行中の前記インタラクティブアプリケーションの前記アプリケーション状態を更新するために使用される、請求項11に記載の方法。
【請求項20】
モーションセンサデータの所与のサンプルの対応する前記タイムスタンプを生成することが、前記同期符号化を使用して、前記同期符号化からの前記コントローラデバイスのクロックのドリフトを修正することを含む、請求項19に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ヘッドマウントディスプレイとコントローラとの電磁場を介したクロック同期に関する。
【背景技術】
【0002】
テレビゲーム業界は、長年にわたり多くの変化を遂げてきた。コンピューティング能力の増大に伴い、ビデオゲームの開発者もまた、この向上したコンピューティング能力を活用するゲームソフトウェアを開発してきた。そのために、ビデオゲーム開発者は、高度な演算及び数学的手法を取り入れたゲームをコーディングして、非常に精緻で魅力のあるゲーム体験を生み出している。
【0003】
ゲームプラットフォームの例には、Sony Playstation(登録商標)、Sony Playstation2(登録商標)(PS2)、Sony Playstation3(登録商標)(PS3)、Sony Playstation4(登録商標)(PS4)があり、それぞれゲームコンソールの形で販売されている。よく知られているように、ゲームコンソールは、ディスプレイ(一般的にはテレビ)に接続し、手持ち型コントローラを介して、ユーザとのインタラクションを可能にするように設計されている。ゲームコンソールは、CPU、集約的なグラフィック演算を処理するためのグラフィックシンセサイザ、ジオメトリ変換を実行するためのベクトル処理部、ならびにその他の接続を提供するハードウェア、ファームウェア、及びソフトウェアを含む専用の処理ハードウェアが備わった設計になっている。更に、ゲームコンソールによってローカルでプレイするために、ゲームコンソールは、ゲームディスクを受け入れることができるよう、光ディスクリーダが備わった設計になっていてもよい。オンラインでゲームをプレイすることも可能であり、ユーザがインターネットを介して他のユーザとインタラクティブに対戦または試合を行うことができる。ゲームの複雑さがプレーヤを魅了し続ける中、ゲームメーカ及びハードウェアメーカは、更なるインタラクティビティとコンピュータプログラムとを可能にするための技術革新を続けている。
【0004】
コンピュータゲーム業界では、ユーザとゲームシステムとの間のインタラクションを増加させるゲームを開発する傾向が高まっている。インタラクティブな体験をより豊かにする実現法の一つは、プレーヤの動きを追跡し、その動きをゲームの入力として使用するために、ゲームシステムによって動きが追跡される無線式のゲームコントローラを使用することである。一般的に言えば、ジェスチャ入力は、コンピューティングシステム、ビデオゲームコンソール、スマート家電などの電子デバイスを、プレーヤによって行われて電子デバイスによって取り込まれた何らかのジェスチャに反応させることをいう。
【0005】
インタラクティブな体験をより没入できるものにするもう一つの実現法は、ヘッドマウントディスプレイ(HMD)を使用することである。ヘッドマウントディスプレイは、ユーザによって着用され、仮想空間の表示などの様々なグラフィックを提示するように構成され得る。ヘッドマウントディスプレイに提示されるグラフィックは、ユーザの視野の大部分または全体さえも覆うことができる。したがって、ヘッドマウントディスプレイは、ユーザの動きに応答するようにして、仮想環境の3次元リアルタイム表示をレンダリングするので、HMDは、視覚的に没入感のある仮想現実体験をユーザに提供することができる。HMDを着用しているユーザは、全方向に自由に移動できるため、HMDを介して全方向の仮想環境の表示を提供できる。
【0006】
こうした背景のもと、本開示の実施態様が生じる。
【発明の概要】
【0007】
本開示の実施態様は、ヘッドマウントディスプレイとコントローラとの電磁場(EM場)を介したクロック同期に関するデバイス、方法、及びシステムを含む。
【0008】
ある実施態様では、インタラクティブアプリケーションを実行し、事前設定されたフレームレートで画像フレームを生成して送信するコンピューティングデバイスであって、画像フレームが、実行中のインタラクティブアプリケーションのアプリケーション状態に基づいて生成される、コンピューティングデバイスと、コンピューティングデバイスから送信された画像フレームを受信し、HMDのディスプレイデバイスを介して画像フレームを提示するヘッドマウントディスプレイ(HMD)であって、HMDは、磁気信号を放出する磁気エミッタを含み、磁気信号が、コンピューティングデバイスから受信した画像フレームに同期される同期符号化を有する、HMDと、磁気信号を検出する磁気センサを含むコントローラデバイスであって、コントローラデバイスは、検出された磁気信号を処理して、コントローラデバイスの位置及び/または向きを識別する磁気位置データを判定し、コントローラデバイスは、検出された磁気信号を更に処理して、同期符号化を読み取り、コントローラデバイスは、同期符号化を使用して、磁気位置データに対応するタイミングデータを生成し、タイミングデータが、同期符号化に基づいて磁気位置データのタイミングを示し、コントローラデバイスは、磁気位置データ、及び対応するタイミングデータをコンピューティングデバイスに送信する、コントローラデバイスとを備え、コンピューティングデバイスは、磁気位置データ、及び対応するタイミングデータを使用して、コントローラデバイスの位置及び/または向きを判定し、コンピューティングデバイスは、コントローラデバイスの位置及び/または向きを使用して、実行中のインタラクティブアプリケーションのアプリケーション状態を更新する、システムが提供される。
【0009】
ある実施態様では、画像フレームの送信が、事前設定されたフレームレートに従って、各画像フレームの開始を知らせるタイミング信号を含むビデオ信号の送信によって設定され、磁気信号の同期符号化が、タイミング信号に同期される。
【0010】
ある実施態様では、タイミング信号が垂直同期信号である。
【0011】
ある実施態様では、磁気信号の同期符号化が、磁気信号の周波数または振幅の1つ以上の変調によって設定されている。
【0012】
ある実施態様では、変調が、タイミング信号に同期された磁気信号の変化の繰り返しパターンを設定する。
【0013】
ある実施態様では、対応するタイミングデータを生成することが、同期符号化を使用して、同期符号化からのコントローラデバイスのクロックのドリフトを修正することを含む。
【0014】
ある実施態様では、コントローラデバイスの位置及び/または向きが、HMDに対している。
【0015】
ある実施態様では、タイミングデータが、磁気位置データを画像フレームの生成に同期させることを可能にする。
【0016】
ある実施態様では、コントローラデバイスは、モーションデータのサンプルを生成する少なくとも1つのモーションセンサを含み、コントローラデバイスは、同期符号化を使用して、モーションセンサデータのサンプルごとに対応するタイムスタンプを生成し、コントローラデバイスは、モーションデータのサンプル、及び対応するタイムスタンプをコンピューティングデバイスに送信し、コンピューティングデバイスは、モーションデータのサンプル、及び対応するタイムスタンプを使用して、コントローラデバイスの位置及び/または向きを判定し、コントローラデバイスの位置及び/または向きが、実行中のインタラクティブアプリケーションのアプリケーション状態を更新するために使用される。
【0017】
ある実施態様では、モーションセンサデータの所与のサンプルの対応するタイムスタンプを生成することが、同期符号化を使用して、同期符号化からのコントローラデバイスのクロックのドリフトを修正することを含む。
【0018】
ある実施態様では、方法であって、コンピューティングデバイスによってインタラクティブアプリケーションを実行すること、及びコンピューティングデバイスによって、事前設定されたフレームレートで画像フレームを生成して送信することであって、画像フレームが、実行中のインタラクティブアプリケーションのアプリケーション状態に基づいて生成される、送信することと、ヘッドマウントディスプレイ(HMD)によって、コンピューティングデバイスから送信された画像フレームを受信するとともに、HMDのディスプレイデバイスを介して画像フレームを提示すること、及びHMDの磁気エミッタによって、磁気信号を放出することであって、磁気信号が、コンピューティングデバイスから受信した画像フレームに同期される同期符号化を有する、放出することと、磁気センサを含むコントローラデバイスによって、磁気信号を検出すること、及びコントローラデバイスによって、検出された磁気信号を処理して、コントローラデバイスの位置及び/または向きを識別する磁気位置データを判定することを含み、コントローラデバイスは、検出された磁気信号を更に処理して、同期符号化を読み取り、コントローラデバイスは、同期符号化を使用して、磁気位置データに対応するタイミングデータを生成し、タイミングデータが、同期符号化に基づいて磁気位置データのタイミングを示し、コントローラデバイスは、磁気位置データ、及び対応するタイミングデータをコンピューティングデバイスに送信し、コンピューティングデバイスは、磁気位置データ、及び対応するタイミングデータを使用して、コントローラデバイスの位置及び/または向きを判定し、コンピューティングデバイスは、コントローラデバイスの位置及び/または向きを使用して、実行中のインタラクティブアプリケーションのアプリケーション状態を更新する、方法が提供される。
【0019】
本開示の他の態様及び利点は、本開示の原理を一例として図で示す添付の図面と併せて、以下の詳細な説明から明らかになるだろう。
【図面の簡単な説明】
【0020】
本開示は、添付の図面と併せて以下の説明を参照することによって、よりよく理解され得る。
【0021】
【
図1】本開示の一実施態様による、ヘッドマウントディスプレイ(HMD)を介した仮想環境とのインタラクションのためのシステムを示す。
【0022】
【
図2】本開示の実施態様による、HMD102を通して視聴される仮想空間とインタラクトするためのコントローラデバイス104を示す。
【0023】
【
図3】本開示の実施態様による、磁気エミッタ260及び磁気センサ214を概念的に示す。
【0024】
【
図4】本開示の実施態様による、HMD102とコントローラデバイス104との間で位置/モーションデータを同期させるためのシステムを概念的に示す。
【0025】
【
図5】本開示の実施態様による、画像フレームを生成し、それらをHMDのユーザに提示するためのプロセスを概念的に示す。
【0026】
【
図6】本開示の実施態様による、同期のために離散的な周波数変調が適用された磁気信号を示す。
【0027】
【
図7】本開示の実施態様による、コンピュータ106、HMD102、及びコントローラデバイス104のクロック間のドリフトを概念的に示す。
【0028】
【
図8A-1】本開示の一実施態様による、ヘッドマウントディスプレイ(HMD)を図示する。
【
図8A-2】本開示の一実施態様による、ヘッドマウントディスプレイ(HMD)を図示する。
【0029】
【
図8B】一実施態様による、HMDユーザがクライアントシステムとインタフェースをとり、クライアントシステムが、セカンドスクリーンと呼ばれるセカンドスクリーンディスプレイにコンテンツを提供する一例を示す。
【0030】
【
図9】本開示の一実施態様による、実行中のビデオゲームに関連したHMDの機能を概念的に示す。
【0031】
【
図10】本開示の一実施態様によるヘッドマウントディスプレイの構成要素を示す。
【0032】
【
図11】本開示の種々の実施態様によるゲームシステム1600のブロック図である。
【発明を実施するための形態】
【0033】
本開示の以下の実施態様は、ヘッドマウントディスプレイとコントローラとの電磁場を介したクロック同期に関するデバイス、方法、及びシステムを提供する。ただし、本開示は、本明細書に記載されている具体的詳細の一部または全部なしで実施することができることは、当業者には明らかであろう。他の例では、本開示を不必要に不明瞭にしないために、周知のプロセス操作を詳細に記載していない。
【0034】
種々の実施態様において、方法、システム、画像取り込みオブジェクト、センサ、及び関連するインタフェースオブジェクト(例えば、グローブ、コントローラ、周辺デバイス、プロップ、スマートフォンなど)は、ディスプレイ画面上に実質的にリアルタイムでレンダリングされるように構成されたデータを処理するように構成される。概して、実施態様は、ヘッドマウントディスプレイ(HMD)であるディスプレイに関して記載されている。しかし、他の実施態様では、ディスプレイは、セカンドスクリーン、ポータブルデバイスのディスプレイ、コンピュータのディスプレイ、ディスプレイパネル、リモート接続された1人以上の(例えば、コンテンツを視聴している、またはインタラクティブな体験を共有している可能性がある)ユーザのディスプレイ、または同種のものであってもよい。「ディスプレイ」という用語は、一般に、ユーザの目で画像を見ることができるようにするデバイスとしてのディスプレイ画面の使用を含むものと理解されているが、本明細書で使用される「ディスプレイ」という用語は、ユーザが画像を見ることができるようにする任意のタイプのイメージングテクノロジ(例えば、網膜投影、ホログラフィック投影など)を、更に包含し得ることが理解されよう。ある実施態様では、HMD102は、そのような任意のテクノロジ(例えば、網膜投影機)を介して、仮想画像からの光がユーザの目に表示されるようにする投影デバイスを含む。
【0035】
ワイヤレスコントローラをサポートするHMDシステムが、電磁気学を用いて、HMDの基準から位置的にワイヤレスコントローラを追跡することができる。HMDは、位置的な追跡を受けてもよいが、全く異なる追跡システムを使用してもよい。例えば、HMDは、カメラベースのSLAMシステムを使用することがある。コントローラは、HMDに取り付けられた送信機から放出される電磁波の種々の周波数の振幅を測定することによって、HMDに対するコントローラの位置及び/または向きを追跡する。このシステムの1つの主要な問題は、コントローラとHMDとのリアルタイムクロック信号が異なる場合があることである。この差異(同期誤差)により、HMDが移動している(したがって、磁気送信源も移動している)とき、HMDに提示されるVRシーン/ARシーンに仮想コントローラをレンダリングしようとする際に、コントローラ追跡に誤差が生じるようになる。したがって、コントローラとHMDとの間のリアルタイムクロックの差異を同期させる/最小化する必要がある。
【0036】
一般的には、これらのデバイスは、無線伝送(例えば、WiFi(登録商標)またはブルートゥース)を介してホストコンピュータ(例えば、コンソール)に接続され、その通信に対して種々のレイテンシを有し得る。そのため、コントローラとHMDとの間で、無線伝送を介して、ホストコンピュータ経由で、リアルクロックを一定の精度に同期させることは困難である。
【0037】
現在の電磁追跡システムは、その磁場をほぼ瞬時に磁気受信機に送信することができる。代表的な磁気受信機は、100Khz超のレートで磁場のサンプルを読み取る。この機構は、上記の問題を解決するのに利用できる。特別な段階(HMD及びコントローラの起動時、またはホストによって指定された時間に1回)の間、HMDに搭載された電磁送信機を独自の方法で変調し/パルス出力させ、それによってHMDのリアルタイムクロック値を符号化してコントローラに信号で伝えることができる。コントローラの磁気センサは、電磁信号からのリアルタイムクロック値のデコード/復調/非パルス化を行うことができるため、コントローラのリアルタイムクロックをHMDのリアルタイムクロックと同期させるように、報告された信号自体のタイムスタンプを調整することができる。磁気受信機のサンプリングレートが非常に高いため、しかるべき同期の精度は10マイクロ秒をかなり下回る必要がある。
【0038】
図1は、本開示の実施態様による、ヘッドマウントディスプレイ(HMD)を介した仮想環境とのインタラクションのためのシステムを示す。HMDは、仮想現実(VR)ヘッドセット、拡張現実(AR)ヘッドセット、または複合現実ヘッドセット(VRとARの両方が混じり合ったもの)と呼ばれることもある。本明細書で使用するとき、「仮想現実」(VR)という用語は、一般に、仮想空間にいる感覚をユーザに提供するために、HMDの(ユーザによって制御される)動きにリアルタイムで応答するように、HMD(またはVRヘッドセット)を通して、仮想空間を視聴することを含む、仮想空間/仮想環境とのユーザインタラクションのことをいう。例えば、ユーザは、所与の方向を向いているときに仮想空間の3次元(3D)表示を見ることができ、ユーザが側方を向き、それによってHMDの向きを同じように変えると、仮想空間のその側方の表示がHMD上にレンダリングされる。
【0039】
図示の実施態様では、ヘッドマウントディスプレイ(HMD)102を装着したユーザ100が示されている。HMD102は、眼鏡、ゴーグル、またはヘルメットと同じようにして着用され、ビデオゲームまたは他のコンテンツをユーザ100に表示するように構成される。HMD102は、ユーザの目にごく近接して表示機構を提供することにより、ユーザに非常に没入感のある体験を提供する。したがって、HMD102は、ユーザの視野の大部分、または全体さえも占める表示領域をユーザの目のそれぞれに提供することができ、3次元的な奥行き及び遠近感を伴う視聴を提供することもできる。
【0040】
図示の実施態様では、HMD102は、有線接続によってコンピュータ106に接続されている。他の実施態様では、HMD102は、無線接続を介してコンピュータ106に接続される。場合によっては、コンピュータは、HMDの内部に配置され、直接接続されている。コンピュータ106は、ゲーム機、パーソナルコンピュータ、ラップトップ、タブレットコンピュータ、モバイルデバイス、携帯電話、タブレット、シンクライアント、セットトップボックス、メディアストリーミングデバイスなどを含むがこれらに限定されない、当技術分野で知られている任意の汎用または専用のコンピュータまたはコンピューティングデバイスであってもよい。ある実施態様では、コンピュータ106は、ビデオゲームを実行し、このビデオゲームからビデオ及びオーディオを出力して、HMD102によるレンダリングが行われるように構成され得る。ある実施態様では、コンピュータ106は、HMDを通して視聴することができる仮想空間/仮想環境を提供する他の任意のタイプのインタラクティブアプリケーションを実行するように構成されている。コンピュータ106は、ビデオ及びオーディオをビデオゲームからHMD102に(有線接続または無線接続によって)送信して、そこでレンダリングが行われるように構成されている。コンピュータ106は、HMD102へのデータ送信のための送信機、及びHMD102によって送信されたデータを受信するための受信機を含む送受信機を含み得る。
【0041】
ある実施態様では、HMD102は、例えば、HMD102とコンピュータ106の両方が接続されているネットワーク112を介してなど、代替の機構またはチャネルを介してコンピュータと通信する場合もある。
【0042】
ユーザ100は、コントローラデバイス104を操作して、ビデオゲームに入力を与えることができる。コントローラデバイス104は、ビデオゲームまたはインタラクティブアプリケーションへ入力を与えるためにユーザ100によって操作可能な任意のタイプのインタフェースオブジェクトであり得る。限定ではなく一例として、コントローラデバイス104は、例えば、ゲームコントローラ、プロップ、周辺機器、グローブ、スマートフォン、タブレットなど、仮想環境またはビデオゲームをインタフェースするための任意のタイプのモーション追跡型オブジェクトであり得る。ユーザがHMD102に表示される仮想現実シーンとインタフェースをとる方法は様々であってよく、コントローラデバイス104に加えて他のインタフェースデバイスを使用してもよい。例えば、様々な種類の片手用コントローラ、及び両手用コントローラを使用してもよい。ある実施態様では、コントローラに含まれるライトを追跡することによって、またはコントローラに関連する形状、センサ、及び慣性データを追跡することによって、コントローラを追跡することができる。これらの各種のコントローラ、または実行されて1つ以上のカメラで取り込まれる単純な手のジェスチャさえも使用することによって、HMD102上に提示された仮想現実環境をインタフェースすること、制御すること、操作すること、この仮想現実環境とインタラクトすること、及びこの仮想現実環境に参加することが可能になる。
【0043】
カメラ108は、ユーザ100が位置するインタラクティブ環境の画像を取り込むように構成され得る。こうした取り込まれた画像は、ユーザ100、HMD102、及びコントローラデバイス104の位置及び動きを判定するために分析され得る。ある実施態様では、コントローラデバイス104は、コントローラデバイスの位置及び向きの判定、ならびに動きの追跡を可能にするために、追跡され得るライト、及び/または慣性センサ(複数可)/モーションセンサ(複数可)を含む。更に、HMD102は、HMD102の位置及び向きの判定及び追跡を可能にするために、追跡され得る1つ以上のライト、及び慣性センサ/モーションセンサを含んでもよい。
【0044】
カメラ108は、インタラクティブ環境から音を取り込むために、1つ以上のマイクロフォンを含んでもよい。マイクロフォンアレイによって取り込まれた音は、音源の位置を特定するために処理され得る。特定された位置からの音は、この特定された位置からではない他の音を排除するために、選択的に利用されまたは処理され得る。更に、カメラ108は、複数の画像取込デバイス(例えば、立体視可能な一対のカメラ)、IRカメラ、深さカメラ、及びそれらの組み合わせを含むものとしてよい。
【0045】
カメラ108を介したHMD102及びコントローラデバイス104の追跡は、オクルージョン問題の影響を受ける可能性がある。例えば、コントローラデバイス104のカメラの視野が遮られるようにして、ユーザが、コントローラデバイス104を方向転換させるか、または違うやり方でコントローラデバイス104を操作する場合、コントローラデバイスの追跡が損なわれる。同様に、ユーザの動きによって、HMD102またはその一部のカメラの視野が何らかの形で遮られ、それによってHMD102の追跡に悪影響が及ぶ可能性がある。したがって、外部カメラに依存している視覚追跡システムで起こり得るオクルージョン問題の影響を受けない方法で、HMD102及びコントローラデバイス104を追跡することが望ましい。
【0046】
したがって、ある実施態様では、HMD102は、「インサイドアウト」追跡を実行するように構成され、すなわち、HMDは、HMDの外部にある感知ハードウェアに依存することなく、空間内でのHMDの位置及び向きを判定し、追跡することができる。例えば、ある実施態様では、HMD102自体が1つ以上の外向きカメラを含む。このような外向きカメラから取り込まれた画像は、HMDの追跡を可能にするために、例えば、自己位置推定及び環境地図作成の同時実行(SLAM)技術を用いて処理され得る。ある実施態様では、初期化プロセスの間に、そのようなカメラを介してローカル環境をマッピングするために、HMD102が使用され得る。例えば、そのような初期化プロセスの間に、ユーザは、ローカル環境全体にわたってHMD102を移動させるように要求されてもよく、その結果、インタラクティブな使用の際のHMDの追跡を容易にするように、そのような外向きカメラを介してローカル環境が取り込まれ、マッピングされてもよい。HMD102は、様々なモーションセンサ(例えば、加速度計、ジャイロスコープ、磁気計、慣性測定ユニット(IMU))を更に含んでもよく、そのようなモーションセンサからのデータを、外向きカメラからの取り込み画像データと組み合わせて使用して、HMDの追跡を可能にするように、センサフュージョン技術を適用してもよい。
【0047】
ある実施態様では、コントローラデバイス104は、HMD102に対して追跡される。例えば、ある実施態様では、HMD102は、磁場を放出する磁気源を含み、コントローラデバイス104は、磁場を検出する磁気センサを含み、磁気センサのデータは、HMD102に対して、そして更にはローカル環境の実空間において両方で、コントローラデバイス104の位置及び向きを判定し、追跡するために使用される。このような磁気追跡を用いる構成は、ユーザ100によって操作される際に、コントローラデバイス104がHMD102に近接していることが予想されるので、システムが磁場の干渉を受ける傾向が弱いという点で有利である。
【0048】
ある実施態様では、コントローラデバイス104は、HMDの外向きカメラを使用して、少なくとも部分的に、HMD102に対して追跡することもできる。そのような外向きカメラから取り込まれる画像は、インタフェースオブジェクト104を含むこともあり、そうした取り込み画像を分析して、少なくとも部分的に、HMD102に対するインタフェースオブジェクト104の位置/向きを判定することができる。
【0049】
ある実施態様では、コンピュータ106は、クラウドゲーム/アプリケーションプロバイダ114とネットワーク112を介して通信するシンクライアントとして機能する。そのような実施態様では、一般的に言えば、クラウドゲーム/アプリケーションプロバイダ114は、ユーザ102によってプレイされているビデオゲーム(またはインタラクトさせているアプリケーション)を維持し、実行する。コンピュータ106は、HMD102、コントローラデバイス104、及びカメラ108からの入力をクラウドゲームプロバイダに送信し、クラウドゲームプロバイダは、この入力を処理して、実行中のビデオゲームのゲーム状態に反映させる。実行中のビデオゲームからの出力、例えば、ビデオデータ、オーディオデータ、及び触覚フィードバックデータなどは、コンピュータ106に送信される。コンピュータ106は、このデータを更に処理した後に送信する場合もあれば、または関連デバイスに直接データ送信する場合もある。例えば、ビデオストリーム及びオーディオストリームはHMD102に提供されるのに対して、触覚/振動フィードバックコマンドはコントローラデバイス104に提供される。
【0050】
ある実施態様では、HMD102、コントローラデバイス104、及びカメラ108は、それ自体が、例えばクラウドゲームプロバイダ114と通信するためにネットワーク112に接続するネットワークデバイスであってもよい。ある実施態様では、コンピュータ106は、ビデオゲーム処理を実行するのではなく、ネットワークトラフィックの通過を促進するルータなどのローカルネットワークデバイスであってもよい。HMD102、コントローラデバイス104、及びカメラ108によるネットワークへの接続は、有線式であってもよいし、または無線式であってもよい。
【0051】
更に、本開示の実施態様は、ヘッドマウントディスプレイに関して記載され得るが、他の実施態様では、本実施態様に従って、ビデオをレンダリングし、及び/またはインタラクティブなシーンまたは仮想環境の表示を提供するように構成され得る、ポータブルデバイス画面(例えば、タブレット、スマートフォン、ラップトップなど)または他の任意のタイプのディスプレイを含むがこれに限定されない、非ヘッドマウントディスプレイを代わりに使ってもよいことが理解されよう。
【0052】
図2は、本開示の実施態様による、HMD102を通して視聴される仮想空間とインタラクトするためのコントローラデバイス104を示す。概して、コントローラデバイス104は、手持ち型であるように、及び/またはユーザの手200に固定されるように構成されている。ある実施態様では、コントローラデバイス104をユーザの手200に固定するためのストラップ(またはバンド、または他の取り付け機構)が提供される(図示せず)。ある実施態様では、そのようなストラップは、ユーザの手200の手のひら部分に巻き付き、それによってコントローラデバイス104をユーザの手のひらに対して固定するように構成されている。ある実施態様では、そのような手のひらストラップは、ストラップの一部分/一区間をコントローラデバイス104の側面に固定し/取り付けながら、使用時にユーザの手のひらを実質的に取り巻くように構成され、それによってコントローラデバイスをユーザの手に固定する。ある実施態様では、ストラップ機構は、コントローラをユーザの手のひらに固定する、ロックされた構成と、ストラップを緩める、及び/またはストラップの一部分をコントローラの本体から遠ざける、解放された構成との間でストラップを切り替えできるようにするロック機構を含む。したがって、ロック機構は、コントローラデバイスを、ユーザの手にしっかりと掴ませるか、またはユーザの手から部分的に解放させることができる。
【0053】
ある実施態様では、コントローラデバイス104は、コントローラデバイス104をユーザの手首に固定するためのリストストラップ250を含む。
【0054】
コントローラデバイス104は、コントローラデバイス104が配置されているローカル環境の3次元実空間内で追跡可能に構成されている。このために、コントローラデバイス104は、限定ではなく一例として、1つ以上の加速度計、磁気計、及びジャイロスコープを含む、種々のモーションセンサ/向きセンサ/慣性センサのうちのいずれかを含み得る。更に、コントローラデバイス104は、HMD102中に含まれる磁気エミッタ260によって放出される磁場の強度及び/または向きを検出するように構成された1つ以上の磁気センサ214(例えば、磁気計、ホール効果センサ、誘導センサなど)を含み得る。モーションセンサ/向きセンサ/慣性センサ及び磁気センサからのデータまたは情報は、コントローラデバイス104の位置及び向きを判定し、追跡するために、処理され得る。そのようなデータ処理は、コントローラデバイス104及び/またはコンピューティングデバイス106及び/またはHMD102によって実行され得る。
【0055】
図示の実施態様では、コントローラデバイス104は、ユーザの手200によって保持され、または把持されるように構成された主ハウジング212を含む。コントローラデバイス104は、更に、コントローラデバイス104を手に持つときに、ユーザの手200の親指202が自然に降りるであろう位置に配置された親指パッド218を含む。ある実施態様では、親指パッドは、タッチベースの入力を提供することができるタッチセンシティブ表面またはタッチパッドである。ある実施態様では、親指パッドは、方向入力を容易にする方向性パッドである。ある実施態様では、親指パッドは、クリック可能であるか、またはボタンと同じように押し込まれることが可能である。
【0056】
親指パッド218は、親指202の親指パッド218への近接を検出するように構成された近接センサ234を更に含む。その際、近接センサ234は、ユーザの親指202の屈曲量または伸展量を示してもよい。
【0057】
トリガ220は、コントローラデバイス104を操作する際に、ユーザの手200の人差し指204によって操作されるように構成されており、一方、トリガ222は、ユーザの手200の中指204によって操作されるように構成されている。トリガ220及び222は、更に、それぞれ近接センサ236及び238(
図2Bに示す)を含み、これらの近接センサ236及び238は、それぞれユーザの人差し指204及び中指206のトリガ220及び222への近接を検出するように構成されている。したがって、近接センサ236及び238は、それぞれ人差し指及び中指の屈曲量または伸展量を示す。すなわち、ユーザの人差し指204の屈曲が増加する(伸展が減少する)と、近接センサ236までのその近さが増加する。そして、ユーザの人差し指204の屈曲が減少する(伸展が増加する)と、近接センサ236までのその近さが減少する。同様に、ユーザの中指206の屈曲が増加する(伸展が減少する)と、近接センサ238までのその近さが増加する。そして、ユーザの中指206の屈曲が減少する(伸展が増加する)と、近接センサ238までのその近さが減少する。
【0058】
更に、コントローラデバイス104は、近接センサ240及び242(
図2Cに示す)を含み、これらの近接センサ240及び242は、それぞれユーザの薬指208及び小指210の近接を検出するように、ハウジング212の下部に沿った位置に配置される。したがって、近接センサ240及び242は、それぞれ薬指及び小指の屈曲量または伸展量を示す。すなわち、ユーザの薬指208の屈曲が増加する(伸展が減少する)と、近接センサ240までのその近さが増加する。そして、ユーザの薬指208の屈曲が減少する(伸展が増加する)と、近接センサ240までのその近さが減少する。同様に、ユーザの小指210の屈曲が増加する(伸展が減少する)と、近接センサ242までのその近さが増加する。そして、ユーザの小指210の屈曲が減少する(伸展が増加する)と、近接センサ242までのその近さが減少する。
【0059】
コントローラデバイス104は、近接センサ226、228、230、及び232を有するバンド224を更に含む。これらの近接センサは、これらの指が伸ばされたときに、人差し指、中指、薬指、及び小指の指先にそれぞれ近接するように、バンド224の構造によって配置される。つまり、ユーザの人差し指204の伸展が増加する(屈曲が減少する)と、近接センサ226までのその近さが増加する。そして、ユーザの人差し指204の伸展が減少する(屈曲が増加する)と、近接センサ226までのその近さが減少する。ユーザの中指206の伸展が増加する(屈曲が減少する)と、近接センサ228までのその近さが増加する。そして、ユーザの中指206の伸展が減少する(屈曲が増加する)と、近接センサ228までのその近さが減少する。ユーザの薬指208の伸展が増加する(屈曲が減少する)と、近接センサ230までのその近さが増加する。そして、ユーザの薬指208の伸展が減少する(屈曲が増加する)と、近接センサ230までのその近さが減少する。ユーザの小指210の伸展が増加する(屈曲が減少する)と、近接センサ232までのその近さが増加する。そして、ユーザの小指210の伸展が減少する(屈曲が増加する)と、近接センサ232までのその近さが減少する。
【0060】
上記の点から見て、コントローラデバイス104は、ユーザの人差し指、中指、薬指、及び小指の屈曲/伸展を検出するために、指ごとに2つの近接センサが使用されるように構成され得る。したがって、各指は対応する近接センサ対を有し、センサは、センサが割り当てられた所与の指の屈曲/伸展の平面に実質的に沿って整列しているが、指の可動域の両端に位置している。例えば、センサ226及び236は、ユーザの人差し指204を検出するように構成されており、ユーザの人差し指204の屈曲/伸展の平面に実質的に沿って整列している。更に、センサ226は、人差し指204の遠位端に、伸ばされたときに近接する(または接触する可能性がある)ように配置されるのに対して、センサ236は、人差し指204の近位端に、伸ばされたときに更に近づいているように配置される。他の指のセンサ対に対しても同様の配置及び位置調整が適用されることを理解されるであろう。
【0061】
したがって、ある実施態様では、伸ばされたときのユーザの指の遠位端及び近位端に対するセンサそれぞれの位置調整に基づいて、センサ226、228、230、及び232は遠位センサであるとされる一方で、センサ236、238、240、及び242は近位センサであるとされる。所与の指の近位センサ及び遠位センサの対は、所与の指の姿勢を判定するために合わせて利用される。所与の指の遠位センサ及び近位センサの近接感知範囲は、互いに重なり得ることが理解されよう。したがって、ある実施態様では、指の姿勢が(例えば、コントローラデバイス104の構造/形態によって可能にされる)最大限に屈曲した姿勢から最大限に伸展した姿勢に変化するとき、指は、最初に、(遠位センサの検出範囲内ではないので)近位センサのみで検出可能であり、次いで指が、依然として近位センサの検出範囲内にありながら、遠位センサの検出範囲内に入るときに、指は、近位センサ及び遠位センサの両方で検出可能であり、最後に指が、近位センサの検出範囲から離れたとき、指は遠位センサのみで検出可能であり得る。
【0062】
具体的に示していないが、ある実施態様では、コントローラデバイス104は、1つ以上のライトまたは照明オブジェクトを含んでもよく、これは、ローカル環境の取り込み画像において認識され、コントローラデバイス104の位置及び向きの追跡を可能にするために追跡され得る。限定ではなく一例として、1つ以上のライトを、コントローラデバイス104のバンド224、及び/またはコントローラデバイス104のハウジング212に沿って配置してもよい。
【0063】
図示のように、HMD102は、ローカル環境の画像を取り込むように構成された外向きカメラ262a及び262bを含み、そうした取り込まれた画像は、ローカル環境でのHMD102の位置/向きを判定するために処理されて分析される。上記のように、HMD102は、コントローラデバイス104の磁気センサ214によって感知される磁場を放出するように構成された磁気エミッタ260を含む。感知された磁場は、HMD102に対するコントローラデバイス104の位置/向きを判定するのに使用される。
【0064】
図3は、本開示の実施態様による、磁気エミッタ260及び磁気センサ214を概念的に示す。ある実施態様では、磁気エミッタ260は、3つの垂直な軸に沿って整列するように、互いに垂直な3つのエミッタコイルを含む。エミッタコイルは、同一点を中心とするように同心円状に配置され得る。エミッタコイルのそれぞれは、他のエミッタコイルとは異なる周波数でAC磁場を放出するように構成してもよい。
【0065】
ある実施態様では、磁気センサ214は、3つの垂直な軸に沿って整列するように、互いに垂直な3つのセンサコイルを含む。センサコイルは、同一点を中心とするように同心円状に配置され得る。センサコイルのそれぞれは、磁気エミッタ260によって生成された磁場を受け取るように構成され得る。概して、磁気エミッタ260によって生成された磁場は、磁気センサ214のセンサコイル内に電流を誘導し、この電流は、磁気エミッタ260に対する磁気センサ214の位置及び/または向き、そして更には、HMD102に対するコントローラデバイス104の位置及び/または向きを判定するために処理される。誘導電流は、放出された磁場の周波数によって生成される時間的に変化する磁束に合わせて時間的に変化する出力電圧を生成することが理解されよう。したがって、所与のセンサコイルにおける誘導電流の周波数を検出して、磁場をもたらしたエミッタコイルを特定することができる。
【0066】
上記の磁気エミッタ260及び磁気センサ214を使用することによって、6自由度追跡(6DOF)追跡を提供することができる。すなわち、磁気エミッタ260に対する磁気センサ214の3次元位置を判定して追跡することができ、磁気エミッタ260に対する磁気センサ214の3次元方位(例えば、ピッチ、ロール、及びヨー)を判定して追跡することができる。拡大解釈すれば、これによって、HMD102に対するコントローラデバイス104の6自由度の追跡が提供される。
【0067】
コントローラデバイス104などのインタフェースオブジェクトを追跡するための磁気追跡の仕組みの使用は有用であり、コントローラの外部カメラベースの追跡は、オクルージョン問題(例えば、ユーザが向きを変え、コントローラのカメラの視野を遮る)の影響を受ける。また、磁気エミッタ260がHMD102中に含まれていることによって、コントローラデバイス104を追跡するための追加の周辺デバイスが不要となる。
【0068】
しかしながら、コントローラデバイス104の追跡がHMD102を介して実行されており、ユーザ100が空間内で頭部を動かすときにHMD102自体が移動するため、問題が生じる。平均的なヒューマンユーザは、約350度/秒で頭部を極めて容易に回転させることができ、特定の状況では最大約1000度/秒で頭部を回転させることができる。そして、そのようなヒューマンユーザは、コントローラデバイス104を更に速く操作することができる。したがって、HMD102及びコントローラデバイス104からの位置/モーションデータがコンピュータ106に伝達され、(HMD102上への次の表示のために)HMD102に伝達される次の画像フレームが処理されてレンダリングされるのにかかる時間の間に、HMD102及び/またはコントローラデバイス104は移動している可能性がある。
【0069】
概して、所与の時点で、コントローラデバイス104は、磁気信号感知を介して位置/向きのサンプルを取得し、慣性測定ユニット(IMU)サンプルを取得する。その間、ユーザ100の頭部は動き得る。全ての信号は、将来的にHMDに表示されるときに正しい表示を示すように、HMD102が次のフレームをレンダリングすることになる位置を予測するカルマンフィルタによってフィルタ処理される。したがって、レンダリングされたフレームレート(例えば120Hz)に合っている最も正確なコントローラの位置を得るためには、コントローラデバイス104を追跡している間に、頭部がHMD102も動かしているという事実を考慮することが重要である。また、システムが、HMD102とコントローラデバイス104との間に正確な同期を取れていない場合、システムがコントローラの位置を得る際に、不一致が発生する。それらが同期していない場合、HMD102の表示におけるコントローラデバイス104のレンダリングは、ユーザ100が動き回るとき、不安定に揺れ動いて見える傾向がある。したがって、HMD102及びコントローラデバイス104からのモーションサンプルが、互いに一致し得るように、またはそれ以外の場合は互いに対して時間的に正確に配列され得るように、2つのシステムを同期させるための正確な方法を有することが重要である。これには、HMD102及びコントローラデバイス104のクロックを同期させること、及び/またはそれらの間のドリフトを修正することが必要とされ得る。
【0070】
ブルートゥース(登録商標)またはWiFi(登録商標)などの無線プロトコルは、過大なオーバーヘッド(例えば10msの遅延)を必要とし、データが十分に正確なタイミングで送信/受信されないため、HMD102とコントローラデバイス104との間の同期には適していないことが理解されるであろう。したがって、同期を達成するための他の方法が求められている。
【0071】
図4は、本開示の実施態様による、HMD102とコントローラデバイス104との間で位置/モーションデータを同期させるためのシステムを概念的に示す。図示の実施態様では、コンピュータ106は、インタラクティブアプリケーション(例えば、ビデオゲーム)を実行し、HMD102に送信される画像フレーム400を生成する。ある実施態様では、画像フレームの送信は、コンピュータ106とHMD102との間の有線接続を介して行われるのに対して、他の実施態様では、送信は無線接続を介して行われる。
【0072】
ある実施態様では、画像フレーム400の送信は、画像フレームが、HMD102のディスプレイを介した提示のために、一定のフレームレートで確実に提供されるように、同期接続を介して行われる。ある実施態様では、画像フレーム400の送信は、HMD102のディスプレイによるラスタ走査のためにデータを符号化するビデオ信号によって設定される。ある実施態様では、ビデオ信号は、HMD102のディスプレイのピクセルのパラメータ(例えば明度、輝度値/強度値など)を設定するデータ信号と、各フレーム、ライン、及びピクセルのデータがいつ開始し、いつ終了するかを設定するタイミング信号とを含む。タイミング信号は、図示の実施態様において概念的に示されている。垂直同期信号402は、各画像フレームの開始及び終了を識別する。水平同期信号404は、所与の画像フレームの各ラインの開始及び終了を識別する。そして、ピクセルクロック信号406は、各ピクセルの開始及び終了を識別し、ビデオ信号のデータ転送速度を設定する。
【0073】
画像フレーム400は、一定のフレームレート(例えば、120Hz、240Hzなど)で提供されることが理解されよう。したがって、垂直同期信号402は、フレームレートに合わせて周期的である。すなわち、垂直同期信号402は、フレームレートと同じ一定の周期的レート(または周波数)を有する。そのため、この垂直同期信号402は、システム内のデバイス間の同期を可能にする信頼できる信号として使用され得る。
【0074】
例えば、上記のように、HMD102の位置及び/または向きは、HMD102のIMU、及びHMD102の外向きカメラから取得され、及び/または処理される位置/モーションデータ408を使用して追跡され得る。この位置/モーションデータ408は、垂直同期信号402に基づいて同期させることができる。例えば、位置/モーションデータ408は、垂直同期信号402に基づいてタイムスタンプ付けされてもよく、その結果、位置/モーションデータ408は、垂直同期信号402と同期されるタイムスタンプに対応付けられる。
【0075】
例えば、垂直同期信号402は、既知である事前設定された周波数を有し、したがって、この周波数がコンピュータ106に同期されるクロックを設定する。例えば、垂直同期信号402の周波数が120Hzであることは、垂直同期信号402の120サイクルが、コンピュータ106によって判定される1秒の時間を規定することを意味する。HMD102は、それ自体のクロック(例えば、水晶振動子クロック)を有してもよく、HMD102のクロックと垂直同期信号402との間のドリフトが追跡され得る。位置/モーションデータ408には、HMD102のクロックに基づいて最初にタイムスタンプを付けることができるが、このタイムスタンプを調整して、HMD102のクロックと垂直同期信号402との間の識別されたドリフトを修正できる。このようにして、HMD102の位置/モーションデータ408を、コンピュータ106に同期させることができる。位置/モーションデータ408は(コンピュータ106のクロックに合わせて、本明細書で説明される垂直同期信号402を使用することによって)、正しくタイムスタンプ付けされているので、HMD位置/モーションデータ408は、非同期接続を介してコンピュータ106に送信され得ることが理解されよう。このことは、タイムスタンプが適切に同期されているために可能なことであり、たとえコンピュータ106によって同期的に受信されなくても、位置/モーションデータを利用して、HMD102の位置及び/または向きを正確に判定し、及び/または予測することができる。
【0076】
ある実施態様では、HMD102の磁気エミッタ260は、垂直同期信号402と同期し、その結果、コンピュータ106と同期するようにして符号化される磁気信号を(AC電磁場を生成することにより(概念的に参照番号410で示される))放出するように構成されている。磁気信号410の同期符号化を提供するために、様々な技法を使用できることが理解されよう。
【0077】
ある実施態様では、磁気エミッタ260は、垂直同期信号402に同期した周波数で磁気信号410を放出するように構成されている。例えば、磁気エミッタ260は、連続波(例えば、正弦波、方形波、三角波など)として磁気信号410を放出してもよく、磁気信号410の振幅の山と谷とが、垂直同期信号402と同期するように構成してもよい。限定ではなく一例として、磁気信号410は、フレームレートと同じか、またはフレームレートの倍数である周波数を有し得る。ある実施態様では、磁気信号410の同期を達成するために、垂直同期信号402が使用されて、磁気エミッタ260による磁気信号410の生成を駆動する。
【0078】
そのような実施態様では、磁気センサ214は、磁気信号410を検出し、コントローラデバイス104は、磁気信号410のピークを検出するように構成され得る。磁気信号410の検出されたピークは、上記のように同期され、垂直同期信号402との同期を確保するために、コントローラデバイス104によってクロック信号として利用され得る。単純な例では、磁気信号410が120Hzの周波数を有する場合、垂直同期信号402及びコンピュータ106に合わせて、連続して検出される毎120ピークが1秒の時間に等しくなる。存在する場合は、コントローラデバイス104のクロックと磁気信号410によって設定されたクロックとの間のドリフトを判定し、追跡することができる。
【0079】
コントローラデバイス104は、コントローラデバイス104のIMUからIMUデータ414を取得し、及び/または処理するように構成され、磁気センサ214から磁気データ416を取得し、及び/または処理するように構成されている。このデータは、最初は、コントローラデバイス104のクロックに基づいてタイムスタンプが付けられてもよいが、このタイムスタンプは、コントローラデバイス104のクロックと磁気信号410との間の識別されたドリフトを修正するために調整されてもよい。磁気信号410は、コンピュータ106から発信される垂直同期信号402に同期されるので、このようにして、コントローラデバイス104のコントローラ位置/モーションデータ412を、コンピュータ106に同期させることができる。位置/モーションデータ412は(コンピュータ106のクロックに合わせて、本明細書で説明される磁気信号410を使用することによって)、タイムスタンプデータ418で正しくタイムスタンプ付けされているので、コントローラ位置/モーションデータ412もまた、非同期接続を介してコンピュータ106に送信され得ることが理解されよう。このことは、タイムスタンプデータ418が適切に同期されているために可能なことであり、たとえコンピュータ106によって同期的に受信されなくても、位置/モーションデータを利用して、コントローラデバイス104の位置及び/または向きを正確に判定し、及び/または予測することができる。
【0080】
磁気信号410の振幅は距離とともに変化するが(ガウス指数減衰)、磁気信号410の周波数は距離とともに変化しないことが理解されるであろう。更に、上記のように、磁気エミッタ260は、それぞれが他のコイルの周波数とは異なる所与の周波数で磁気信号を生成する複数のコイル(例えば、3つのコイル)を含み得る。複数の周波数は、磁気センサ214によって検出され得、組み合わせて利用されて、よりロバストな同期を提供することができる。
【0081】
ある実施態様では、磁気信号410は、同期符号化のための搬送波として利用される。すなわち、磁気信号410は、HMD102クロックに合わせて(必ずしも垂直同期信号402に基づく必要はなく)所与の周波数を有するように生成されるが、垂直同期信号402に同期する更なる変調が適用される。したがって、磁気信号410は、変調された搬送波として機能し、この変調は、垂直同期信号402への同期を可能にする同期データを符号化する。ある実施態様では、変調は、基礎となる搬送波の周波数よりも大幅に低い周波数を有する。例えば、磁気信号410は、約20~200kHzの基礎となる周波数を有していてもよく、一方で、変調は、限定ではなく一例として、240Hzの周波数を有する(更にまた、240Hzの変調周波数は垂直同期信号402に特別に同期しているが、基礎となる20~200kHz周波数は同期していない)。
【0082】
様々な実施態様では、垂直同期信号402への同期を可能にするために、コントローラデバイス104によって検出され、復号化/復調/処理され得ることを条件に、任意のタイプの変調が同期符号化に適用され得る。ある実施態様では、変調は、垂直同期信号402に同期した周期的なデューティサイクルを有する。ある実施態様では、振幅を周期的に循環させること(例えば正弦波など)、振幅をパルス化すること(パルス及び/またはギャップを、垂直同期信号402に同期させてもよい)、振幅を周期的に増加または減少させることなどによって、振幅変調が適用される。例えば、図示の実施態様では、磁気信号410は、基礎となる振幅h1を有するが、垂直同期信号402に同期した規則的な速度で、周期的に振幅をh2にスパイクするように変調される。ある実施態様では、周波数を周期的に循環させること(例えば、正弦波など)、離散的な周波数値の間を周期的に変化させることなどによって、周波数変調が適用される。
【0083】
磁気信号410の振幅は、変調された場合でも、磁気センサ214からの磁気エミッタ260の距離の表示を提供し、その一方で、変調は、垂直同期信号402のタイミングを示すことが理解されよう。したがって、磁気信号410は、同期の目的で搬送波として使用される。このようにして、コントローラデバイス104を追跡するために使用される既存の磁気信号410は、適切な同期を可能にするためにも使用される。
【0084】
ある実施態様では、磁気信号410の符号化の検出は、IMUデータ414のサンプリングをトリガする。例えば、磁気信号410におけるピーク(例えば、振幅のスパイク)または他の変調イベントの検出は、コントローラデバイス104のIMUのサンプリングをトリガして、IMUデータ414及びその関連するタイムスタンプデータを生成するように構成されてもよい。このようにして、IMUのサンプリングは、上記のように垂直同期信号402に同期される符号化された磁気信号410に基づいて同期される。
【0085】
図5は、本開示の実施態様による、画像フレームを生成し、それらをHMDのユーザに提示するためのプロセスを概念的に示す。HMDモーション/入力データ408及びコントローラモーション/入力データ412が、コンピュータ106に提供される。これらのデータは、本開示に記載されるようにタイムスタンプ付けされ、それらのタイムスタンプが、垂直同期信号402に同期されるように調整される。動作500において、実行中のビデオゲームのゲーム状態(または、VRアプリケーションなど、実行中のインタラクティブアプリケーションのアプリケーション状態)が、HMDモーション/入力データ408及び/またはコントローラモーション/入力データ412に基づいて更新される。動作502において、更新されたゲーム/アプリケーション状態に基づいて、次の画像フレームがレンダリングされる。これには、生成されたフレームがHMD102のディスプレイにスキャンアウトされ、それによってユーザ100に見えるようになると予想される時間におけるHMD102及びコントローラデバイス104の将来の位置及び向きを予測するために、HMD位置/モーションデータ及びコントローラ位置/モーションデータへのカルマンフィルタ処理の適用が必要とされ得る。
【0086】
生成された画像フレームは、コンピュータ106のVSYNCである垂直同期信号402でスキャンアウトされる。画像フレームは、有線接続または無線接続を介して転送され、その後HMD102でスキャンされる。動作504において、HMD102ディスプレイは、それ自体のVSYNCに応じてスキャンアウトし、視聴のために画像フレームをユーザ100に提示する。
【0087】
これらのプロセスは全て時間がかかるため、フレームレンダリングは本質的に予測的なものであることが理解されるであろう。すなわち、フレームのレンダリングは、HMD102のディスプレイを通じて画像フレームが提示/スキャンアウトされる予定の時刻におけるHMD102及びコントローラデバイス104の予測された位置/向きに基づいている。この予測レンダリングは、画像フレームがHMD102でレンダリングされ、転送され、最終的にスキャンアウトされる間に、ユーザの頭部が動いている可能性があり、したがって、レンダリングされた画像フレームがユーザ100に見えるようになる頃には、ユーザの視界が変化しているために、重要である。したがって、HMD102及びコントローラデバイス104の予測された将来の位置及び向きに基づいて画像フレームを予測的にレンダリングすることにより、画像フレームが、視聴時のユーザの頭部の実際の位置とより良く一致するという点で、より良いユーザ体験が提供される。この予測レンダリングは、ユーザに仮想シーンが提示されたときに、その仮想シーンの知覚される待ち時間を削除するために重要である。
【0088】
HMD位置/モーションデータ408及びコントローラ位置/モーションデータ412に関連付けられるタイムスタンプデータは、時間の単位で具体的に表現される必要はないが、タイムスタンプデータは、それが関連付けられた位置データまたはモーションデータ(例えば、IMUデータ、磁気データ、画像ベースの追跡データなど)のタイミングを正確に判定できるものであれば、任意の単位のカウンタなど、任意の数値形式または数値スケールを有するものであってよいことが理解されるべきである。
【0089】
ある実施態様では、コンピュータ106は、システムの様々なデバイス間の既知のオフセットを使用して、HMD位置/モーションデータ408及びコントローラ位置/モーションデータ412を処理するように構成されている。例えば、HMD位置/モーションデータ408は、垂直同期信号402に同期してタイムスタンプ付けされる(例えば、垂直同期信号402からのHMD102クロックのドリフトを修正するように調整される)。しかしながら、タイムスタンプは、垂直同期信号402が生成され、HMD102に転送され、HMD102で処理される(例えば、スキャンインされ、同期のために適用される)ことに起因する遅延を必ずしも解決しない。この遅延は、一定であり、かつ事前設定されているため、コンピュータ106は、HMD位置/モーションデータ408のタイムスタンプを解釈する際に、この遅延をコンピュータ106の垂直同期信号402からの正規のオフセットとして考慮するように構成されてもよい。すなわち、タイムスタンプは、コンピュータ106によって、垂直同期信号402から事前設定された量だけオフセットされているものとして処理され得る。
【0090】
同様にして、コントローラ位置/モーションデータ412のタイムスタンプデータ418もまた、コンピュータ106からコントローラデバイス104へ同期情報を伝達する際の遅延を必ずしも解決しなくてもよい。すなわち、垂直同期信号402の生成、HMD102への転送、符号化された磁気信号410を生成するためのHMD102による処理、磁気信号410の感知及びコントローラデバイス104による復号化、ならびに同期のための復号化情報の適用に起因する累積的な遅延がある。この場合も先と同様に、この遅延は、一定であり、かつ事前設定されているため、コンピュータ106は、コントローラ位置/モーションデータ412のタイムスタンプデータ418を解釈する際に、この遅延をコンピュータ106の垂直同期信号402からの正規のオフセットとして考慮するように構成されてよい。すなわち、タイムスタンプは、コンピュータ106によって、この累積的な遅延を反映する事前設定された量だけ垂直同期信号402からオフセットされているものとして処理され得る。
【0091】
図6は、本開示の実施態様による、同期のために離散的な周波数変調が適用された磁気信号を示す。ある実施態様では、磁気信号は、基礎となる搬送波の事前設定された間隔に挿入された種々の周波数のラウンドロビンを採用している。図示の実施態様では、基礎となる搬送波は周波数fdを有する。搬送波は、互いに異なり、周波数fdとは異なる3つの異なる追加周波数に変調される。図示のように、これらの追加周波数は周波数fs1、fs2、及びfs3を含む。周波数fs1、fs2、及びfs3のタイミングは、垂直同期信号402に同期するように構成されている。互いに異なる複数の変調周波数を使用することによって、同期タイミングをより強固に確立することができる。
【0092】
図7は、本開示の実施態様による、コンピュータ106、HMD102、及びコントローラデバイス104のクロック間のドリフトを概念的に示す。図示のように、コンピュータ106は、CPU700、クロック702(例えば、水晶振動子クロック)、及びGPU704を含む。クロック702は、CPU700及びGPU704によって実行される様々な処理動作など、コンピュータ106の動作を同期させるためのクロック信号を提供する。説明のために、クロックからのクロック信号が10MHzの場合、(コンピュータ106のクロック信号に従って)1秒の時間の経過のうちに、クロック信号のサイクル数をカウントするカウンタは、1000万サイクルをカウントする。GPU704は、限定ではなく一例として、120HzのVSYNC信号を生成する。このVSYNC信号は、コンピュータのクロック702の信号に基づいており、それによってクロック702の信号に同期している。したがって、VSYNC信号は、1秒の時間のうちに120サイクルを示す。
【0093】
HMD102は、プロセス動作を実行するためのCPU706と、HMDクロック信号を生成するクロック708(例えば、水晶振動子クロック)とを含む。HMDクロック信号は、HMD102における動作のタイミングを管理する。HMDクロック信号が公称10MHzの周波数で生成されている場合、HMDクロック信号は、クロック性能のばらつきが原因で、コンピュータクロック信号と正確に一致しない場合がある。すなわち、時間の経過とともに、HMDクロック708は、コンピュータクロック702からドリフトする。したがって、一例として、図示の実施態様では、コンピュータクロック702の信号は、1秒の時間内で1000万サイクルを示すが、HMDクロック708の信号は、同じ期間にわたって10,000,100サイクルを示す場合がある。すなわち、HMDクロック708は、コンピュータクロック702よりもわずかに速く動作している。しかしながら、クロック間のこのドリフトは、HMD102でVSYNC信号を使用することによって解決され得る。例えば、HMD102上のクロックサイクルのカウンタは、VSYNC信号の120サイクルごとに10,000,100をカウントし、それによってVSYNC信号(そして更には、コンピュータのクロック信号)に対するHMDクロック信号のドリフト/誤差を識別することができる。IMU710からのサンプル、及びHMD102の画像取込デバイス712からの画像データ(またはそれから処理された位置/モーションデータ)は、最初はHMDクロック708の信号に基づいているタイムスタンプを有する。また一方、これらのタイムスタンプは、HMDクロック信号の識別されたドリフトに基づいて修正され得る。こういうわけで、位置/モーションデータが、処理のためにコンピュータ106に返信されるとき、そのタイムスタンプは、VSYNC信号及びコンピュータクロック702に同期される。限定ではなく一例として、1秒台で収集された位置/モーションデータのタイムスタンプには、最初はカウンタ値10,000,100がタイムスタンプ付けされている場合がある。しかし、これは、10,000,000の値に修正されることになる。
【0094】
HMD102の磁気エミッタ714は、高周波(例えば、20~200kHz)の磁気信号を放出するが、コンピュータ106から受信したVSYNC信号と同期して、より低い周波数で変調される(例えば、240Hz変調)。
【0095】
また、コントローラデバイス104は、処理動作のためのCPU716、IMU720、及び磁気センサ722の動作タイミングを含む、コントローラデバイス104における動作タイミングを管理するクロック718を含む。コントローラクロック718からのクロック信号は、コンピュータ106のクロック信号からドリフトする可能性がある。例えば、コンピュータのクロック信号に従って1秒の時間のうちに、公称20MHzの周波数のコントローラクロック信号が、9,999,900サイクルを示すことがある。したがって、コントローラクロック718は、コンピュータクロック702よりも遅く動作している。また一方、磁気センサ722は磁気エミッタ714から磁気信号を受信し、感知された磁気信号が復号化/復調されて、VSYNC信号に同期された240Hz変調を識別する。この情報を使用して、IMU720及び磁気センサ722からのサンプル(またはそれから処理された位置/モーションデータ)のタイムスタンプは、VSYNC信号、そして更にはコンピュータクロック702信号と同期するように、修正することができる。限定ではなく一例として、1秒台で収集された位置/モーションデータのタイムスタンプには、最初はカウンタ値9,999,900がタイムスタンプ付けされている場合がある。しかし、これは、10,000,000の値に修正されることになる。
【0096】
ある実施態様では、本システムは、任意選択で、光の速度に等しい磁気信号の速度を考慮に入れてもよい。すなわち、本システムでは、磁気信号がHMD102からコントローラデバイス104に伝わるのに必要な時間を考慮することができる。これは、HMD102とコントローラデバイス104との間の現在の距離を概算するために、HMD102及びコントローラデバイス104の前もって知られている位置を使用することを必要とし得ることが理解されよう。ユーザの頭から手までの短い距離(<2m)にわたっては、磁気信号を送信してから、磁気信号を受信するまでの時間差は非常に小さい(<7ns)ことが理解される。したがって、ある実施態様では、この差は、システムのパフォーマンスに大きな影響を与えず、ユーザに気づかれないため、安全に無視できるほど小さい場合がある。
【0097】
本開示の実施態様は、HMD及びコントローラデバイスを含むシステムに関連して説明してきたが、本開示の原理は、仮想画像を表示するデバイス(例えば、スマートフォン、タブレット、他のディスプレイなど)を、他の追跡デバイス(例えば、グローブ、ドローンなど)と共に含む任意のシステムに適用できることが理解されよう。
【0098】
図8A-1及び
図8A-2は、本開示の一実施態様による、ヘッドマウントディスプレイ(HMD)を図示する。
図8A-1は、具体的には、本開示の実施態様によるHMDの一例であるPlaystation(登録商標)VRヘッドセットを示す。図示のように、HMD102は、複数のライト1300A~1300Hを含む。これらのライトのそれぞれは、特定の形状を持つように構成され得、同一のまたは異なる色を有するように構成され得る。ライト1300A、1300B、1300C、及び1300Dは、HMD102の前面に配置されている。ライト1300E及び1300Fは、HMD102の側面に配置されている。また、ライト1300G及び1300Hは、HMD102の前面と側面とにまたがるように、HMD102の角に配置されている。ライトは、ユーザがHMD102を使用するインタラクティブ環境の取り込み画像で識別され得ることが理解されよう。ライトの識別及び追跡に基づいて、インタラクティブ環境におけるHMD102の位置及び向きを判定することができる。更に、画像取込デバイスに対するHMD102の特定の向きに応じて、ライトの一部が見える場合と見えない場合とがあることを理解されよう。また、画像取込デバイスに対するHMD102の向きに応じて、ライト(例えば、ライト1300G及び1300H)の異なる部分が、画像取り込みのために露出されてもよい。
【0099】
一実施態様では、ライトは、HMDの現在の状態を近くの他の者に示すように構成され得る。例えば、ライトの一部または全部を、特定の色の配置、強度の配置を有するように構成してもよく、点滅するように、特定のオン/オフ構成、またはHMD102の現在の状態を示す他の配置を有するように構成してもよい。一例として、ライトは、ビデオゲームのアクティブなゲームプレイ(一般に、アクティブなタイムライン中またはゲームのシーン内で発生するゲームプレイ)中に、メニューインタフェース内の移動またはゲーム設定の設定など、(その間にゲームのタイムラインまたはシーンが非アクティブであり、または一時停止され得る)ビデオゲームの他の非アクティブなゲームプレイの態様とは対照的に、異なる構成を表示するように構成されてもよい。ライトは、ゲームプレイの相対的な強度レベルを示すように構成することもできる。例えば、ゲームプレイの強度が増加するとき、ライトの強さ、または点滅の割合が大きくなるようにしてもよい。このようにして、ユーザの外部の者がHMD102上のライトを見て、ユーザが高度のゲームプレイに積極的に従事しており、その時に邪魔されたくないと望み得ることを理解することができる。
【0100】
HMD102は、1つ以上のマイクロフォンを更に含んでもよい。図示の実施態様では、HMD102は、HMD102の前面に画定されたマイクロフォン1304A及び1304Bと、HMD102の側面に画定されたマイクロフォン1304Cとを含む。マイクロフォンのアレイを利用することによって、マイクロフォンのそれぞれからの音を処理して、音源の位置を判定することができる。この情報は、不要な音源の排除、音源と視覚的な識別との関連付けなどを含む様々な形で利用することができる。
【0101】
また、HMD102は、1つ以上の画像取込デバイスを含んでもよい。図示の実施態様では、HMD102が、画像取込デバイス1302A及び1302Bを含むことを示す。立体視可能な一対の画像取込デバイスを利用することによって、環境の3次元(3D)画像及びビデオを、HMD102の視点から取り込むことができる。そのようなビデオをユーザに提示して、HMD102を装着している間、ユーザに「ビデオシースルー」機能を提供することができる。すなわち、ユーザは、厳密な意味でHMD102を透かして見ることはできないが、それにもかかわらず、画像取込デバイス1302A及び1302B(または、例えば、HMD102の外側本体に配置された1つ以上の外向き(例えば、前向き)カメラ)によって取り込まれたビデオは、あたかもHMD102を透かして見ているかのように、HMD102の外部の環境を見ることができるのと同等の機能を提供することができる。このようなビデオは、拡張現実体験を提供するように、仮想要素で拡張してもよく、または、他の形で、仮想要素と組み合わせたり、混合したりしてもよい。図示の実施態様では、2つのカメラをHMD102の前面に示したが、任意の方向に向けられてHMD102に備え付けられた、任意の数の外向きカメラがあり得ることを理解されるであろう。例えば、別の実施態様では、環境の追加のパノラマ画像を取り込むために、HMD102の側面に取り付けられたカメラがあってもよい。更に、ある実施態様では、そのような外向きカメラを使用して、他の周辺デバイス(例えば、コントローラなど)を追跡してもよい。すなわち、HMDに対する周辺デバイスの位置/向きを、HMD上の、そのような外向きカメラから取り込まれた画像において特定して追跡することができ、その後、ローカル環境におけるHMDの既知の位置/向きを使用して、周辺デバイスの真の位置/向きを判定することができる。
【0102】
図8Bは、HMD102のユーザ100がクライアントシステム106とインタフェースをとり、クライアントシステム106が、セカンドスクリーン1307と呼ばれるセカンドスクリーンディスプレイにコンテンツを提供する一例を示す。クライアントシステム106は、HMD102からセカンドスクリーン1307へのコンテンツの共有を処理するための統合された電子機器を含んでもよい。他の実施態様では、クライアントシステムと、HMD102及びセカンドスクリーン1307のそれぞれとの間でインタフェースをとる別個のデバイス、モジュール、コネクタを含んでもよい。この一般的な例では、ユーザ100はHMD102を着用しており、インタフェースオブジェクト104でもあり得るコントローラを使用して、ビデオゲームをプレイしている。ユーザ100によるインタラクティブプレイによって、ビデオゲームコンテンツ(VGC)が生成され、これはHMD102に対してインタラクティブに表示される。
【0103】
一実施態様では、HMD102に表示されているコンテンツは、セカンドスクリーン1307に共有される。一例では、セカンドスクリーン1307を見ている者が、ユーザ100によってHMD102中にインタラクティブに再生されているコンテンツを視聴することができる。別の実施態様では、別のユーザ(例えば、プレーヤ2)がクライアントシステム106とインタラクトして、セカンドスクリーンコンテンツ(SSC)を生成する場合がある。プレーヤがコントローラ104(または任意のタイプのユーザインタフェース、ジェスチャ、音声、もしくは入力)ともインタラクトすることによって生成されるセカンドスクリーンコンテンツは、クライアントシステム106にSSCとして生成され得、SSCは、HMD102から受信されるVGCと共にセカンドスクリーン1307上に表示され得る。
【0104】
したがって、HMDユーザと同じ場所にいるか、またはHMDユーザから離れている場合がある他のユーザによるインタラクティビティは、HMDユーザと、HMDユーザによって再生されたコンテンツをセカンドスクリーン1307上で視聴している場合があるユーザとの両方にとって、ソーシャルで、インタラクティブで、より没入感のあるものとすることができる。図示のように、クライアントシステム106は、インターネット1310に接続することができる。インターネットは、様々なコンテンツソース1320からのコンテンツへのアクセスをクライアントシステム106に提供することもできる。コンテンツソース1320は、インターネットを介してアクセス可能な任意のタイプのコンテンツを含んでもよい。
【0105】
このようなコンテンツは、限定されることなく、ビデオコンテンツ、映画コンテンツ、ストリーミングコンテンツ、ソーシャルメディアコンテンツ、ニュースコンテンツ、フレンドコンテンツ、広告コンテンツなどを含む場合がある。一実施態様では、クライアントシステム106は、HMDがゲームプレイ中のインタラクティビティに関連するマルチメディアコンテンツを提供されるように、HMDユーザ向けのコンテンツを同時に処理するのに使用され得る。その場合、クライアントシステム106は、ビデオゲームコンテンツと無関係であり得る他のコンテンツをセカンドスクリーンに提供することもできる。クライアントシステム106は、一実施態様では、コンテンツソース1320の1つから、またはローカルユーザもしくはリモートユーザから、セカンドスクリーンコンテンツを受信することができる。
【0106】
図9は、本開示の一実施態様による、実行中のビデオゲームまたは他のアプリケーションに関連したHMD102の機能を概念的に示す。実行中のビデオゲーム/アプリケーションは、ビデオゲーム/アプリケーションのゲーム/アプリケーション状態を更新するための入力を受け取るゲーム/アプリケーションエンジン1420によって設定される。ビデオゲームのゲーム状態は、例えば、オブジェクトの存在及び位置、仮想環境の状況、イベントのトリガ、ユーザプロファイル、表示の視点など、現在のゲームプレイの様々な態様を設定するビデオゲームの様々なパラメータの値によって、少なくとも部分的に設定することができる。
【0107】
図示の実施態様では、ゲームエンジンは、一例として、コントローラ入力1414、オーディオ入力1416、及びモーション入力1418を受け取る。コントローラ入力1414は、手持ち型ゲームコントローラ(例えば、Sony DUALSHOCK(登録商標)4ワイヤレスコントローラ、Sony PlayStation(登録商標)Moveモーションコントローラ)、または方向性インタフェースオブジェクト104などの、HMD102とは別のゲームコントローラの操作から設定され得る。一例として、コントローラ入力1414は、方向入力、ボタン押下、トリガ起動、動き、ジェスチャ、またはゲームコントローラの操作から処理される他の種類の入力を含み得る。ある実施態様では、ゲームコントローラの動きは、HMD102の外向きカメラ1411を介して追跡され、それによってHMD102に対するゲームコントローラの位置/向きが提供される。オーディオ入力1416は、HMD102のマイクロフォン1402から、または画像取込デバイス1413に含まれるマイクロフォンから、またはローカル環境内の他の場所から処理され得る。モーション入力1418は、HMD102に含まれるモーションセンサ1400から、及び/またはHMD102の画像を取り込むときに画像取込デバイス1413から、及び/またはHMD102の外向きカメラ1411から処理され得る。ゲームエンジン1420は、ビデオゲームのゲーム状態を更新するために、ゲームエンジンの構成に従って処理される入力を受け取る。ゲームエンジン1420は、ユーザに提示されるコンテンツを設定するために、ゲーム状態データを処理する、種々のレンダリングモジュールに、ゲーム状態データを出力する。
【0108】
図示の実施態様では、ビデオレンダリングモジュール1422は、HMD102上での提示のためにビデオストリームをレンダリングするように設定される。ビデオストリームは、ディスプレイ/投影機機構1410によって提示され、ユーザの目1406によって光学系1408を介して視聴され得る。オーディオレンダリングモジュール1404は、ユーザにより聴取されるオーディオストリームをレンダリングするように構成されている。一実施態様では、オーディオストリームは、HMD102に付随するスピーカ1404を通して出力される。スピーカ1404は、オーディオを提示することができるオープンエアスピーカ、ヘッドホン、または任意の他の種類のスピーカの形を取ることができることを理解されたい。
【0109】
一実施態様では、ユーザの視線の追跡を可能にするために、視線追跡カメラ1412がHMD102に含まれる。視線追跡カメラは、ユーザの目の画像を取り込み、それを解析してユーザの視線方向を判定する。一実施態様では、ユーザの視線方向に関する情報を利用して、ビデオレンダリングに影響を与えることができる。例えば、ユーザの目が特定の方向を見ていると判定された場合には、ユーザが見ている領域において、更なる細部を、または一層速い更新を提供するなどにより、その方向のビデオレンダリングを優先させ、または強調させることができる。ユーザの視線方向は、ヘッドマウントディスプレイに対して、ユーザが位置している実環境に対して、及び/またはヘッドマウントディスプレイ上でレンダリングされている仮想環境に対して設定され得ることを理解すべきである。
【0110】
概して、単独で考えられる場合、視線追跡カメラ1412によって取り込まれた画像の分析は、HMD102に対するユーザの視線方向を提供する。また一方、追跡されたHMD102の位置及び向きと組み合わせて考えられる場合、HMD102の位置及び向きは、ユーザの頭部の位置及び向きと同義であるので、ユーザの実世界の視線方向を判定することができる。すなわち、ユーザの実世界の視線方向は、ユーザの目の位置の動きを追跡すること、及びHMD102の位置及び向きを追跡することから判定することができる。仮想環境の表示がHMD102上にレンダリングされるとき、ユーザの実世界の視線方向を適用して、仮想環境におけるユーザの仮想世界の視線方向を判定することができる。
【0111】
更に、HMD102、またはユーザによって操作されるインタフェースオブジェクト104などの別のデバイスのいずれかに含まれる触覚フィードバックハードウェアに、触覚フィードバックモジュール1426が信号を提供するように構成されている。触覚フィードバックは、例えば、振動フィードバック、温度フィードバック、圧力フィードバックなどの様々な種類の触感の形を取り得る。インタフェースオブジェクト104は、そのような形の触覚フィードバックをレンダリングするための対応するハードウェアを含むことができる。
【0112】
図10を参照すると、本開示の一実施態様によるヘッドマウントディスプレイ102の構成要素を示す図が示されている。ヘッドマウントディスプレイ102は、プログラム命令を実行するためのプロセッサ1500を含む。メモリ1502が、記憶の目的で備わっており、メモリ1502は、揮発性メモリ及び不揮発性メモリの両方を含んでもよい。ユーザが見ることができる視覚インタフェースを提供するディスプレイ1504が含まれる。ヘッドマウントディスプレイ102の電源としてバッテリ1506が備わっている。モーション検出モジュール1508は、磁気計1510、加速度計1512、及びジャイロスコープ1514などの様々な種類の、動きに敏感なハードウェアのいずれかを含み得る。
【0113】
加速度計は、加速度と重力による反力とを測定するデバイスである。異なる方向の加速度の大きさと方向とを検出するために、単軸モデル及び多軸モデルを利用できる。加速度計は、傾き、振動、及び衝撃を感知するために使用される。一実施態様では、3つの加速度計1512が重力の方向を提供するために使用され、これは2つの角度(世界空間ピッチ及び世界空間ロール)の絶対基準を与える。
【0114】
磁気計は、ヘッドマウントディスプレイの近くの磁場の強さと方向を測定する。一実施態様では、3つの磁気計1510がヘッドマウントディスプレイ内で使用され、世界空間のヨー角の絶対基準を保証する。一実施態様では、磁気計は、±80マイクロテスラである地球磁場に及ぶように設計されている。磁気計は金属の影響を受け、実際のヨーに対して単調なヨー測定を提供する。環境中の金属が原因で磁場が歪み、それによってヨー測定において歪みが発生する場合がある。必要に応じて、ジャイロスコープまたはカメラなどの他のセンサからの情報を使用して、この歪みを較正することができる。一実施態様では、ヘッドマウントディスプレイ102の傾斜角及び方位角を得るために、加速度計1512が磁気計1510と共に使用される。
【0115】
ある実施態様では、ヘッドマウントディスプレイの磁気計は、他の近くのデバイスの電磁石が非アクティブであるときに読み取られるように構成されている。
【0116】
ジャイロスコープは、角運動量の原理に基づいて、向きを測定し、または向きを維持するためのデバイスである。一実施態様では、3つのジャイロスコープ1514が、慣性感知に基づいて、それぞれの軸(x、y、及びz)にわたる動きについての情報を提供する。ジャイロスコープは、高速回転を検出するのに有用である。ただし、ジャイロスコープは、絶対基準が存在しないと、時間の経過とともにドリフトしてしまう可能性がある。これには、定期的にジャイロスコープをリセットする必要があり、これは、オブジェクトの視覚追跡、加速度計、磁力計などに基づく位置/向きの判定など、他の入手可能な情報を使用して行うことができる。
【0117】
実環境の画像及び画像ストリームを取り込むために、カメラ1516が備わっている。後向きのカメラ(ユーザがヘッドマウントディスプレイ102のディスプレイを見ているときに、ユーザから離れる方向に向けられる)及び前向きのカメラ(ユーザがヘッドマウントディスプレイ102のディスプレイを見ているときに、ユーザに向けられる)を含む、複数のカメラをヘッドマウントディスプレイ102に含めることができる。更に、実際の環境におけるオブジェクトの立体情報を感知するために、深さカメラ1518がヘッドマウントディスプレイ102中に含まれてもよい。
【0118】
ヘッドマウントディスプレイ102は、オーディオ出力を提供するためのスピーカ1520を含む。また、周囲環境からの音、ユーザによって行われるスピーチなどを含む、実際の環境からのオーディオを取り込むために、マイクロフォン1522が含まれてもよい。ヘッドマウントディスプレイ102は、ユーザに触覚フィードバックを提供するための触覚フィードバックモジュール1524を含む。一実施態様では、触覚フィードバックモジュール1524は、ユーザに触覚フィードバックを提供するように、ヘッドマウントディスプレイ102の動き、及び/または振動を引き起こすことができる。
【0119】
LED1526は、ヘッドマウントディスプレイ102の状態の視覚的に示す指標として設けられている。例えば、LEDは、電池レベル、電源オンなどを示し得る。ヘッドマウントディスプレイ102がメモリカードに情報を読み出し、書き込むことを可能にするカードリーダ1528が備わっている。周辺デバイスの接続、または他のポータブルデバイス、コンピュータなどの他のデバイスへの接続を可能にするためのインタフェースの一例として、USBインタフェース1530が含まれる。ヘッドマウントディスプレイ102の様々な実施態様では、ヘッドマウントディスプレイ102の接続性を高めることを可能にするために、様々な種類のインタフェースのいずれかが含まれ得る。
【0120】
無線ネットワーキング技術によってインターネットまたはローカルエリアネットワークへの接続を可能にするために、WiFi(登録商標)モジュール1532が含まれる。また、ヘッドマウントディスプレイ102は、他のデバイスへの無線接続を可能にするためのブルートゥースモジュール1534を含む。他のデバイスへの接続のために、通信リンク1536がまた、含まれていてもよい。一実施態様では、通信リンク1536は、無線通信のために赤外線伝送を利用する。他の実施態様では、通信リンク1536は、他のデバイスとの通信のために、様々な無線または有線の伝送プロトコルのいずれかを利用することができる。
【0121】
ユーザに入力インタフェースを提供するために、入力ボタン/センサ1538が含まれる。ボタン、タッチパッド、ジョイスティック、トラックボールなど、様々な種類の入力インタフェースのいずれかを含めてもよい。超音波技術を介して他のデバイスとの通信を促進するために、超音波通信モジュール1540がヘッドマウントディスプレイ102に含まれ得る。
【0122】
ユーザからの生理学的データの検出を可能にするために、バイオセンサ1542が含まれる。一実施態様では、バイオセンサ1542は、ユーザの皮膚を通してユーザの生体電気信号を検出するための1つ以上の乾燥電極を含む。
【0123】
HMD上でのレンダリングのために、ビデオ入力1544が、一次処理コンピュータ(例えば、メインゲームコンソール)からビデオ信号を受信するように構成されている。ある実施態様では、ビデオ入力はHDMI(登録商標)入力である。
【0124】
上記のヘッドマウントディスプレイ102の構成要素は、ヘッドマウントディスプレイ102に含まれ得る単なる例示的な構成要素にすぎないものとして説明されている。本開示の様々な実施態様では、ヘッドマウントディスプレイ102は、上記の様々な構成要素の一部を含んでもよいし、または含まなくてもよい。ヘッドマウントディスプレイ102の実施態様は、本明細書に記載されている本開示の態様を容易にするために、本明細書には記載されていないが、当技術分野で知られている、他の構成要素を追加的に含んでもよい。
【0125】
図11は、本開示の種々の実施態様によるゲームシステム1600のブロック図である。ゲームシステム1600は、ネットワーク1615を介して1つまたは複数のクライアント1610にビデオストリームを提供するように構成される。ゲームシステム1600は、通常は、ビデオサーバシステム1620とオプションのゲームサーバ1625とを含む。ビデオサーバシステム1620は、ビデオストリームを最小限のサービス品質で1つまたは複数のクライアント1610に提供するように構成される。例えば、ビデオサーバシステム1620は、ビデオゲーム内の状態または視点を変更するゲームコマンドを受信し、この状態の変更を反映する更新されたビデオストリームを最小の遅延時間でクライアント1610に提供することができる。ビデオサーバシステム1620は、まだ定義されていないフォーマットを含む多種多様な代替ビデオフォーマットでビデオストリームを提供するように構成され得る。更に、ビデオストリームは、多種多様なフレームレートでユーザに提示するように構成されたビデオフレームを含むことができる。代表的なフレームレートは、毎秒30フレーム、毎秒60フレーム、及び毎秒120フレームである。しかし、本開示の代替の実施態様では、より高いまたはより低いフレームレートが含まれる。
【0126】
本明細書で個々に1610A、1610Bなどと呼ばれるクライアント1610は、ヘッドマウントディスプレイ、端末、パーソナルコンピュータ、ゲームコンソール、タブレットコンピュータ、電話、セットトップボックス、キオスク、無線装置、デジタルパッド、スタンドアロン装置、ハンドヘルドゲームプレイ装置などを含むことができる。通常、クライアント1610は、符号化されたビデオストリームを受信し、そのビデオストリームを復号し、結果として生じるビデオをユーザ、例えばゲームのプレーヤに提示するように構成される。通常、符号化されたビデオストリームを受信すること、及び/またはビデオストリームを復号することのプロセスには、個々のビデオフレームをクライアントの受信バッファに格納することが含まれる。ビデオストリームは、クライアント1610に一体化したディスプレイ上で、またはモニタもしくはテレビなどの別個の装置上でユーザに提示され得る。クライアント1610は、2人以上のゲームプレーヤをサポートするように任意選択で設定される。例えば、ゲームコンソールは、2人、3人、4人、またはそれ以上の同時プレーヤをサポートするように構成されてもよい。これらのプレーヤの各々は、別々のビデオストリームを受信することができ、あるいは単一のビデオストリームが、各プレーヤのために特別に生成された、例えば各プレーヤの視点に基づいて生成されたフレームの領域を含み得る。クライアント1610は、任意選択で地理的に分散している。ゲームシステム1600に含まれるクライアントの数は、1または2から数千、数万、またはそれ以上まで幅広く変わり得る。本明細書で使用するとき、「ゲームプレーヤ」という用語は、ゲームをプレイする者を指すのに使用され、「ゲームプレイデバイス」という用語は、ゲームをプレイするのに使用されるデバイスを指すのに使用される。ある実施態様では、ゲームプレイデバイスは、ゲーム体験をユーザに提供するために協働する複数のコンピューティングデバイスを指すことがある。例えば、ゲームコンソール及びHMDは、HMDを通して見たゲームを配信するために、ビデオサーバシステム1620と協働してもよい。一実施態様では、ゲームコンソールはビデオサーバシステム1620からビデオストリームを受信し、ゲームコンソールは、レンダリングのためにビデオストリームをHMDに転送するか、またはビデオストリームを更新して、レンダリングのためにHMDに転送する。
【0127】
クライアント1610は、ネットワーク1615を介してビデオストリームを受信するように構成されている。ネットワーク1615は、電話ネットワーク、インターネット、無線ネットワーク、電力線ネットワーク、ローカルエリアネットワーク、広域ネットワーク、プライベートネットワーク、及び/または同種のものを含む任意の種類の通信ネットワークであり得る。代表的な実施態様では、ビデオストリームは、TCP/IPまたはUDP/IPなどの標準プロトコルを介して通信される。あるいは、ビデオストリームは、プロプライエタリな規格を介して通信される。
【0128】
クライアント1610の代表的な例は、プロセッサ、不揮発性メモリ、ディスプレイ、復号化ロジック、ネットワーク通信機能、及び入力デバイスを含むパーソナルコンピュータである。復号化ロジックは、ハードウェア、ファームウェア、及び/またはコンピュータ可読媒体に記憶されたソフトウェアを含み得る。ビデオストリームを復号化(及び符号化)するためのシステムは当技術分野において周知であり、使用される特定の符号化方式に応じて変わる。
【0129】
クライアント1610は、受信したビデオを修正するように構成されたシステムを更に含むことができるが、必ずしもそうである必要はない。例えば、クライアントは、更なるレンダリングを実行して、1つのビデオ画像を別のビデオ画像上にオーバーレイするように、ビデオ画像をクロッピングするように、及び/または同様のことを行うように、構成され得る。例えば、クライアント1610は、Iフレーム、Pフレーム、及びBフレームなどの各種のビデオフレームを受信して、これらのフレームがユーザに表示するための画像に処理されるように構成され得る。ある実施態様では、クライアント1610のメンバは、ビデオストリームに対して更なるレンダリング、シェーディング、3-Dへの変換、または同様の動作を実行するように構成される。クライアント1610のメンバは、任意選択で、複数のオーディオストリームまたはビデオストリームを受信するように構成される。クライアント1610の入力デバイスは、例えば、片手ゲームコントローラ、両手ゲームコントローラ、ジェスチャ認識システム、視線認識システム、音声認識システム、キーボード、ジョイスティック、ポインティングデバイス、力フィードバック装置、モーション検知装置及び/または位置感知デバイス、マウス、タッチスクリーン、ニューラルインタフェース、カメラ、未開発の入力デバイス、及び/または同種のものを含み得る。
【0130】
クライアント1610によって受信されるビデオストリーム(及び任意選択でオーディオストリーム)は、ビデオサーバシステム1620によって生成されて提供される。本明細書の他の箇所で更に説明するように、このビデオストリームはビデオフレームを含む(オーディオストリームはオーディオフレームを含む)。ビデオフレームは、ユーザに表示される画像に有意義に寄与するように構成される(例えば、それらは適切なデータ構造内にピクセル情報を含む)。本明細書で使用するとき、「ビデオフレーム」という用語は、ユーザに示される画像を、例えば効果的にするのに寄与するように構成されている情報を主に含むフレームを指すために使用される。「ビデオフレーム」に関する本明細書の教示のほとんどは、「オーディオフレーム」に適用することもできる。
【0131】
クライアント1610は通常、ユーザから入力を受け取るように構成されている。これらの入力は、ビデオゲームの状態を変更するか、または別の方法でゲームプレイに影響を及ぼすように構成されたゲームコマンドを含み得る。ゲームコマンドは、入力デバイスを使用して受信することができ、及び/またはクライアント1610上で実行される命令をコンピュータで処理することによって自動的に生成することができる。受信したゲームコマンドは、クライアント1610からネットワーク1615を介して、ビデオサーバシステム1620及び/またはゲームサーバ1625に伝達される。例えば、ある実施態様では、ゲームコマンドはビデオサーバシステム1620を介してゲームサーバ1625に伝達される。ある実施態様では、ゲームコマンドの別個のコピーがクライアント1610からゲームサーバ1625及びビデオサーバシステム1620に伝達される。ゲームコマンドの通信は、任意選択でコマンドの識別情報に依存する。ゲームコマンドは、オーディオストリームまたはビデオストリームをクライアント1610Aに提供するために使用した異なる経路または通信チャネルを通じて、クライアント1610Aから任意選択で通信される。
【0132】
ゲームサーバ1625は、ビデオサーバシステム1620とは異なるエンティティによって任意選択で操作される。例えば、ゲームサーバ1625は、マルチプレーヤゲームのパブリッシャによって運営され得る。この例では、ビデオサーバシステム1620は、任意選択でゲームサーバ1625によってクライアントとして捉えられ、任意選択でゲームサーバ1625の視点から見れば、先行技術のゲームエンジンを実行する先行技術のクライアントであるように構成される。ビデオサーバシステム1620とゲームサーバ1625との間の通信は、任意選択でネットワーク1615を介して行われる。したがって、ゲームサーバ1625は、ゲーム状態情報を複数のクライアントに送信する従来技術のマルチプレーヤゲームサーバであり得、そのうちの1つがゲームサーバシステム1620である。ビデオサーバシステム1620は、同時にゲームサーバ1625の複数のインスタンスと通信するように構成されてもよい。例えば、ビデオサーバシステム1620は、複数の異なるビデオゲームを別々のユーザに提供するように構成することができる。これらの異なるビデオゲームのそれぞれは、異なるゲームサーバ1625によってサポートされてもよく、及び/または異なるエンティティによって発行されてもよい。ある実施態様では、ビデオサーバシステム1620のいくつかの地理的に分散したインスタンスは、ゲームビデオを複数の異なるユーザに提供するように構成される。ビデオサーバシステム1620のこれらのインスタンスのそれぞれは、ゲームサーバ1625の同じインスタンスと通信することができる。ビデオサーバシステム1620と1つまたは複数のゲームサーバ1625との間の通信は、専用の通信チャネルを介して任意選択で行われる。例えば、ビデオサーバシステム1620は、これら2つのシステム間の通信専用の高帯域幅チャネルを介して、ゲームサーバ1625に接続されてもよい。
【0133】
ビデオサーバシステム1620は、少なくともビデオソース1630、入出力デバイス1645、プロセッサ1650、及び非一時的記憶装置1655を含む。ビデオサーバシステム1620は、1つのコンピューティングデバイスを含むか、または複数のコンピューティングデバイスの間に分散され得る。これらのコンピューティングデバイスは、ローカルエリアネットワークなどの通信システムを介して、任意選択で接続される。
【0134】
ビデオソース1630は、ビデオストリーム、例えばストリーミングビデオまたは動画を形成する一連のビデオフレームを提供するように構成される。ある実施態様では、ビデオソース1630はビデオゲームエンジン及びレンダリングロジックを含む。ビデオゲームエンジンは、プレーヤからゲームコマンドを受け取り、受け取ったコマンドに基づいてビデオゲームの状態のコピーを維持するように構成される。このゲーム状態には、ゲーム環境におけるオブジェクトの位置、及び通常は視点が含まれる。またゲーム状態には、オブジェクトの特性、画像、色及び/またはテクスチャが含まれてもよい。ゲーム状態は、通常、ゲームルール、及び移動、ターン、攻撃、フォーカス設定、インタラクト、使用などのゲームコマンドに基づいて維持される。ゲームエンジンの一部は、任意選択でゲームサーバ1625内に配置される。ゲームサーバ1625は、地理的に分散したクライアントを使用して、複数のプレーヤから受信したゲームコマンドに基づき、ゲームの状態のコピーを維持することができる。これらの場合、ゲーム状態は、ゲームサーバ1625によってビデオソース1630に提供され、そこでゲーム状態のコピーが記憶され、レンダリングが実行される。ゲームサーバ1625は、ネットワーク1615を介してクライアント1610から直接ゲームコマンドを受信してもよく、及び/またはビデオサーバシステム1620を経由してゲームコマンドを受信してもよい。
【0135】
ビデオソース1630は、通常、レンダリングロジック、例えば、ハードウェア、ファームウェア、及び/または記憶装置1655などのコンピュータ可読媒体に格納されたソフトウェアを含む。このレンダリングロジックは、ゲーム状態に基づいて、ビデオストリームのビデオフレームを作成するように構成される。レンダリングロジックの全部または一部は、任意選択でグラフィック処理ユニット(GPU)内に配置される。レンダリングロジックは、通常、ゲーム状態及び視点に基づいて、オブジェクト間の3次元空間的関係を決定するため、及び/または適切なテクスチャなどを適用するために構成された処理段階を含む。レンダリングロジックは未処理のビデオを生成し、次いでこのビデオは、クライアント1610への通信に先立ち、通常、符号化される。例えば、未処理ビデオは、Adobe Flash(登録商標)規格、.wav、H.264、H.263、On2、VP6、VC-1、WMA、Huffyuv、Lagarith、MPG-x、Xvid、FFmpeg、x264、VP6-8、realvideo、mp3、または同種のものに従って符号化されてもよい。符号化プロセスは、リモートデバイス上のデコーダへの配信のために任意選択でパッケージ化されるビデオストリームを生成する。ビデオストリームは、フレームサイズ及びフレームレートによって特徴付けられる。代表的なフレームサイズは、800×600、1280×720(例えば、720p)、1024×768を含むが、他の任意のフレームサイズを使用することができる。フレームレートは、1秒あたりのビデオフレーム数である。ビデオストリームは、様々なタイプのビデオフレームを含み得る。例えば、H.264規格では、「P」フレーム及び「I」フレームを含む。Iフレームは、ディスプレイデバイス上の全てのマクロブロック/ピクセルをリフレッシュするための情報を含み、一方Pフレームはその部分セットをリフレッシュするための情報を含む。通常Pフレームは、Iフレームよりもデータサイズが小さい。本明細書で使用するとき、「フレームサイズ」という用語は、フレーム内のピクセル数を指すことを意味する。「フレームデータサイズ」という用語は、フレームを格納するのに必要なバイト数を指すのに使用される。
【0136】
代替の実施態様では、ビデオソース1630は、カメラなどのビデオ記録デバイスを含む。このカメラは、コンピュータゲームのビデオストリームに含めることができる遅延ビデオまたはライブビデオを生成するのに使用することができる。結果として生じるビデオストリームは、レンダリングされた画像と、スチルカメラまたはビデオカメラを使用して記録された画像との両方を任意選択で含む。ビデオソース1630はまた、ビデオストリームに含まれる以前に記録されたビデオを記憶するように構成された記憶デバイスを含んでもよい。ビデオソース1630はまた、例えば人などのオブジェクトのモーションまたは位置を検出するように構成されたモーション感知デバイスまたは位置感知デバイスと、検出されたモーション及び/または位置に基づいてゲーム状態を判定し、またはビデオを生成するように構成されるロジックとを含み得る。
【0137】
ビデオソース1630は、他のビデオ上に配置されるように構成されたオーバーレイを提供するように任意選択で構成される。例えば、このようなオーバーレイには、コマンドインタフェース、ログイン命令、ゲームプレーヤへのメッセージ、他のゲームプレーヤの画像、他のゲームプレーヤのビデオフィード(例えば、ウェブカメラビデオ)が含まれ得る。タッチスクリーンインタフェースまたは視線検出インタフェースを含むクライアント1610Aの実施態様では、オーバーレイはバーチャルキーボード、ジョイスティック、タッチパッド、及び/または同種のものを含み得る。オーバーレイの一例では、プレーヤの声がオーディオストリームにオーバーレイされる。ビデオソース1630は、任意選択で、1つまたは複数のオーディオソースを更に含む。
【0138】
ビデオサーバシステム1620が2人以上のプレーヤからの入力に基づいてゲーム状態を維持するように構成されている実施態様では、各プレーヤは表示の位置及び方向を含む異なる視点を有することができる。ビデオソース1630は、プレーヤらの視点に基づいて各プレーヤに別々のビデオストリームを提供するように任意選択で設定される。更に、ビデオソース1630は、異なるフレームサイズ、フレームデータサイズ、及び/または符号化をクライアント1610のそれぞれに提供するように設定してもよい。ビデオソース1630は、任意選択で、3-Dビデオを供給するように設定される。
【0139】
入出力デバイス1645は、ビデオサーバシステム1620が、ビデオ、コマンド、情報要求、ゲーム状態、視線情報、デバイスモーション、デバイス位置、ユーザモーション、クライアント識別情報、プレーヤ識別情報、ゲームコマンド、セキュリティ情報、オーディオ、及び/または同種のものなどの情報を送信し、及び/または受信するように構成されている。通常、入出力デバイス1645は、ネットワークカードまたはモデムなどの通信ハードウェアを含む。入出力デバイス1645は、ゲームサーバ1625、ネットワーク1615、及び/またはクライアント1610と通信するように構成される。
【0140】
プロセッサ1650は、本明細書で論じられるビデオサーバシステム1620の様々な構成要素内に含まれるロジック、例えばソフトウェアを実行するように構成される。例えば、ビデオソース1630、ゲームサーバ1625、及び/またはクライアント修飾子1660の機能を実行するために、プロセッサ1650は、ソフトウェア命令でプログラムされてもよい。ビデオサーバシステム1620は、任意選択でプロセッサ1650の複数のインスタンスを含む。プロセッサ1650はまた、ビデオサーバシステム1620によって受信されたコマンドを実行するために、または本明細書で論じられるゲームシステム1600の様々な要素の動作を調整するために、ソフトウェア命令でプログラムされてもよい。プロセッサ1650は、1つまたは複数のハードウェアデバイスを含むことができる。プロセッサ1650は電子的なプロセッサである。
【0141】
記憶装置1655は、非一時的なアナログ及び/またはデジタルの記憶デバイスを含む。例えば、記憶装置1655は、ビデオフレームを記憶するように構成されたアナログ記憶デバイスを含むことができる。記憶装置1655は、例えば、ハードドライブ、オプティカルドライブ、またはソリッドステートストレージといったコンピュータ可読デジタル記憶装置を含むことができる。記憶装置1615は、ビデオフレーム、アーティフィシャルフレーム、ビデオフレーム及びアーティフィシャルフレームの両方を含むビデオストリーム、オーディオフレーム、オーディオストリーム、及び/または同様のものを記憶するように(例えば、適切なデータ構造またはファイルシステムによって)構成される。記憶装置1655は、任意選択で、複数のデバイスの間に分散される。ある実施態様では、記憶装置1655は、本明細書の他の箇所で説明されているビデオソース1630のソフトウェア構成要素を格納するように構成される。これらの構成要素は、必要に応じてプロビジョニングできるように準備された形式で格納することができる。
【0142】
ビデオサーバシステム1620は、任意選択で、クライアント修飾子1660を更に含む。クライアント修飾子1660は、クライアント1610Aまたは1610Bなどのクライアントの能力をリモートで判定するように構成される。これらの能力には、クライアント1610A自体の能力と、クライアント1610Aとビデオサーバシステム1620との間の1つまたは複数の通信チャネルの能力との両方を含めることができる。例えば、クライアント修飾子1660は、ネットワーク1615を介して通信チャネルをテストするように構成されてもよい。
【0143】
クライアント修飾子1660は、クライアント1610Aの能力を手動または自動で判定する(例えば、発見する)ことができる。手動判定には、クライアント1610Aのユーザと通信すること、及びユーザに能力を提供するように求めることが含まれる。例えば、ある実施態様では、クライアント修飾子1660は、クライアント1610Aのブラウザ内に画像、テキスト、及び/または同様のものを表示する構成となっている。一実施態様では、クライアント1610Aはブラウザを含むHMDである。別の実施態様では、クライアント1610Aは、ブラウザを有したゲームコンソールであり、ブラウザはHMDに表示させてもよい。表示されたオブジェクトは、ユーザがクライアント1610Aのオペレーティングシステム、プロセッサ、ビデオデコーダの種類、ネットワーク接続の種類、表示解像度などの情報を入力することを要求する。ユーザによって入力された情報は、クライアント修飾子1660に返信される。
【0144】
自動判定は、例えば、クライアント1610A上でエージェントを実行することによって、及び/またはテストビデオをクライアント1610Aに送信することによって、行うことができる。エージェントは、ウェブページに埋め込まれるか、またはアドオンとしてインストールされるJava(登録商標)Scriptなどのコンピューティング命令を含むことができる。エージェントは、クライアント修飾子1660によって任意選択で提供される。様々な実施態様において、エージェントは、クライアント1610Aの処理能力、クライアント1610Aのデコード能力及び表示能力、クライアント1610Aとビデオサーバシステム1620との間の通信チャネルの遅延時間の信頼性及び帯域幅、クライアント1610Aのディスプレイタイプ、クライアント1610A上に存在するファイアウォール、クライアント1610Aのハードウェア、クライアント1610Aで実行されているソフトウェア、クライアント1610A内のレジストリエントリ、及び/または同様のものを見出すことができる。
【0145】
クライアント修飾子1660は、ハードウェア、ファームウェア、及び/またはコンピュータ可読媒体に格納されたソフトウェアを含む。クライアント修飾子1660は、ビデオサーバシステム1620の1つまたは複数の他の要素とは別のコンピューティングデバイス上に任意選択で配置される。例えば、ある実施態様では、クライアント修飾子1660は、クライアント1610とビデオサーバシステム1620の複数のインスタンスとの間の通信チャネルの特性を判定するように構成される。これらの実施態様では、クライアント修飾子によって見出された情報を使用して、ビデオサーバシステム1620のどのインスタンスが、クライアント1610のうちの1つへのストリーミングビデオの配信に最も適しているかを判定することができる。
【0146】
本開示の実施態様は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサを用いる家庭用電化製品またはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む様々なコンピュータシステム構成を用いて実施することができる。本開示は、有線ベースのネットワークまたは無線ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境において実施することもできる。
【0147】
上記の実施態様を考慮に入れて、本開示は、コンピュータシステムに格納されたデータを必要とする様々なコンピュータ実行動作を使用できることが理解されるべきである。これらの動作は、物理量の物理的処置を必要とする動作である。本開示の一部を形成する本明細書に記載されている動作のいずれも、有用な機械動作である。本開示はまた、これらの動作を実行するためのデバイスまたは装置に関する。装置は必要な目的のために特別に構成することができ、または装置は、コンピュータに記憶されたコンピュータプログラムによって選択的に起動されまたは構成される汎用コンピュータとすることができる。特に、本明細書の教示に従って書かれたコンピュータプログラムと共に、様々な汎用機械を使用することができ、または必要な動作を実行するために、より特殊化した装置を構築することによって、更に便利にすることができる。
【0148】
本開示は、コンピュータ可読媒体上のコンピュータ可読コードとして具体化することもできる。コンピュータ可読媒体は、データを記憶することができ、その後コンピュータシステムによって読み取ることができる任意のデータ記憶デバイスである。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ(NAS)、読み取り専用メモリ、ランダムアクセスメモリ、CD-ROM、CD-R、CD-RW、磁気テープ、ならびに他の光学式及び非光学式データ記憶デバイスが含まれる。コンピュータ可読媒体には、コンピュータ可読コードが分散方式で格納され実行されるように、ネットワーク結合コンピュータシステム上に分散されたコンピュータ可読有形媒体が含まれ得る。
【0149】
本方法動作を特定の順序で説明したが、他の維持管理動作が動作間で実行されてもよく、または動作がわずかに異なる時間で行われるように動作が調整されてもよく、またはオーバーレイ動作の処理が所望の方法で実行される限り、処理に関連する様々な間隔で処理操作の発生を可能にするシステムに分散されてもよいことが理解されるべきである。
【0150】
上記の開示は、理解を明確にするためにある程度詳細に説明したが、添付の特許請求の範囲内で、特定の変更及び修正を実施することができることは明らかであろう。したがって、本実施態様は、限定的ではなく例示的であると見なされるべきであり、本開示は、本明細書に示された詳細に限定されるべきではなく、本開示の範囲及び均等物の範囲内で変更することができる。