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

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

▶ オキュラス ブイアール,エルエルシーの特許一覧

特表2022-532826優先運動モデルを有する多層人工現実コントローラ姿勢追跡アーキテクチャ
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-07-20
(54)【発明の名称】優先運動モデルを有する多層人工現実コントローラ姿勢追跡アーキテクチャ
(51)【国際特許分類】
   G06F 3/01 20060101AFI20220712BHJP
   G06T 19/00 20110101ALI20220712BHJP
【FI】
G06F3/01 570
G06T19/00 300B
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021554613
(86)(22)【出願日】2020-05-19
(85)【翻訳文提出日】2021-11-09
(86)【国際出願番号】 US2020033652
(87)【国際公開番号】W WO2020236843
(87)【国際公開日】2020-11-26
(31)【優先権主張番号】16/417,244
(32)【優先日】2019-05-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
(71)【出願人】
【識別番号】515046968
【氏名又は名称】メタ プラットフォームズ テクノロジーズ, リミテッド ライアビリティ カンパニー
【氏名又は名称原語表記】META PLATFORMS TECHNOLOGIES, LLC
(74)【代理人】
【識別番号】110002974
【氏名又は名称】特許業務法人World IP
(72)【発明者】
【氏名】リンデ, オスカー
(72)【発明者】
【氏名】ヤン, チョンユアン
【テーマコード(参考)】
5B050
5E555
【Fターム(参考)】
5B050AA08
5B050BA09
5B050CA07
5B050CA08
5B050DA04
5B050EA07
5B050FA02
5E555AA63
5E555BA38
5E555BB38
5E555BC08
5E555BE17
5E555CA10
5E555CA21
5E555CA29
5E555CA42
5E555CA44
5E555CB19
5E555CB21
5E555CB66
5E555CC05
5E555DA08
5E555DB32
5E555DB53
5E555DC19
5E555DC21
5E555DC84
5E555DD06
5E555EA20
5E555EA22
5E555FA00
(57)【要約】
2つの構成要素、視界(FOV)追跡器および非FOV追跡器を有するハンドヘルドコントローラ追跡サブシステムを含む人工現実システムが記載され、非FOV追跡器は1つまたは複数のコントローラが視界内で追跡可能でないときに特殊な運動モデルを適用する。詳細には、通常の動作条件下で、FOV追跡器はヘッドマウントディスプレイ(HMD)に関する状態データおよびコントローラのコントローラ状態データ(速度、加速度など)を受信して、コントローラの推定姿勢を計算する。コントローラが追跡可能である場合(たとえば、視界内で塞がれずに)、次いで、FOV追跡器によって計算された姿勢が使用され、非FOV追跡器はバイパスされる。コントローラが視界内で追跡可能でなく、コントローラ状態データが1つまたは複数のコーナー追跡ケースのための起動条件を満たす場合、次いで、非FOV追跡器は、特殊な運動モデルのうちの1つまたは複数を適用して、コントローラのコントローラ姿勢を計算する。
【選択図】図1A
【特許請求の範囲】
【請求項1】
物理的環境を表す画像データを取り込むように構成された画像取込みデバイスと、
人工現実コンテンツを出力するように構成されたヘッドマウントディスプレイ(HMD)と、
コントローラ状態データに少なくとも部分的に基づいて、ハンドヘルドコントローラの位置および向きを表すコントローラ姿勢を特定するように構成された姿勢追跡器であって、前記ハンドヘルドコントローラに関する様々な運動挙動に関連付けられた複数の運動モデルを有する非FOV追跡器を含み、前記複数の運動モデルの各々が1つまたは複数のそれぞれの起動条件に関連付けられ、前記非FOV追跡器が、前記ハンドヘルドコントローラが前記画像データ内で追跡可能でないこと、および前記複数の運動モデルのうちの1つが起動されたとの判定に応答して、前記複数の運動モデルのうちの1つに従って前記コントローラ状態データを特定するように構成される、姿勢追跡器と、
前記コントローラ姿勢に従って前記人工現実コンテンツおよび少なくとも1つのグラフィカルオブジェクトを前記HMDに表示するためにレンダリングするように構成されたレンダリングエンジンと
を備える、人工現実システム。
【請求項2】
前記複数の運動モデルがサブサンプションアーキテクチャで構成され、前記非FOV追跡器が、
2つ以上の運動モデルが起動されたとの判定に応答して、前記複数の運動モデルのうちの2つ以上について前記運動モデルを並行して評価し、
最も高い優先度を有する評価された前記運動モデルに少なくとも部分的に基づいて、前記コントローラ状態データを特定する
ように構成されている、請求項1に記載の人工現実システム。
【請求項3】
前記姿勢追跡器が、前記画像データに少なくとも部分的に基づいて、画像ベースのコントローラ状態データを特定するように構成されたFOV追跡器をさらに備え、
前記画像ベースのコントローラ状態データが、前記非FOV追跡器への入力として提供され、
前記非FOV追跡器が、前記複数の運動モデルのどれも起動されていないとの判定に応答して、前記画像ベースのコントローラ状態データに基づいて前記コントローラ状態データを特定する、
請求項1に記載の人工現実システム。
【請求項4】
前記非FOV追跡器が、前記運動モデルに関連付けられた前記1つまたは複数のそれぞれの起動条件が、前記ハンドヘルドコントローラに関する運動挙動を示すコントローラ測定データに少なくとも部分的に基づいて満たされると判定したことに応答して、前記複数の運動モデルのうちの1つの運動モデルを起動するようにさらに構成されている、請求項1に記載の人工現実システム。
【請求項5】
前記ハンドヘルドコントローラが前記画像データ内で追跡可能でないとの前記判定が、
前記画像データ内で検出可能な前記ハンドヘルドコントローラのエミッタの数が、所定のまたは構成可能なしきい値よりも小さいとの判定か、または
前記ハンドヘルドコントローラの前記位置が信用できないとの判定
を含む、請求項1に記載の人工現実システム。
【請求項6】
前記1つまたは複数のそれぞれの起動条件が、前記ハンドヘルドコントローラが前記視界内にないことの指示、および前記ハンドヘルドコントローラが前記HMDのしきい値距離内で動いているとの判定を含み、
前記1つまたは複数のそれぞれの起動条件に関連付けられた前記複数の運動モデルのうちの前記1つが、仮想の肘に関連付けられた第2の位置の周りの前記ハンドヘルドコントローラに関連付けられた第1の位置の旋回に従って、前記コントローラ状態データを特定するように構成されている、
請求項1に記載の人工現実システム。
【請求項7】
第2のハンドヘルドコントローラをさらに備え、
前記ハンドヘルドコントローラが、前記第2のハンドヘルドコントローラによって前記視界内で塞がれており、
前記起動条件が、前記ハンドヘルドコントローラと前記第2のハンドヘルドコントローラとの間の距離がしきい値を下回り、前記ハンドヘルドコントローラの加速度が前記第2のハンドヘルドコントローラの加速度と同期していないとの判定を含み、
前記運動モデルが、前記コントローラ状態データの1つまたは複数の位置の値を、仮想胴体の位置に対する固定位置として特定するように構成されている、
請求項1に記載の人工現実システム。
【請求項8】
第2のハンドヘルドコントローラをさらに備え、
前記ハンドヘルドコントローラが、前記第2のハンドヘルドコントローラによって前記視界内で塞がれており、
前記起動条件が、前記ハンドヘルドコントローラと前記第2のハンドヘルドコントローラとの間の距離がしきい値を下回り、前記ハンドヘルドコントローラの加速度が前記第2のハンドヘルドコントローラの加速度と実質的に同期しているとの判定を含み、
前記運動モデルが、前記コントローラ状態データの1つまたは複数の位置の値を、前記第2のハンドヘルドコントローラの第2の位置に対する固定位置内に特定するように構成されている、
請求項1に記載の人工現実システム。
【請求項9】
前記ハンドヘルドコントローラが慣性測定ユニット(IMU)をさらに備え、
前記起動条件が、前記IMUによって提供された直近の絶対値が第1のしきい値を下回り、前記IMUによって提供された複数のバッファリングされた値の中の分散が第2のしきい値を下回るとの判定を含み、
前記運動モデルが、前記コントローラ状態データの1つまたは複数の位置の値を、世界基準フレームに対する固定位置内にあるように特定するように構成されている、
請求項1に記載の人工現実システム。
【請求項10】
前記姿勢追跡器が、前記画像データおよび前記ハンドヘルドコントローラに関する前記コントローラ状態データから、前記ハンドヘルドコントローラが前記視界内に再び入ったことを判定するように構成され、
前記姿勢追跡器が、複数の表示フレームにわたって、前記ハンドヘルドコントローラが前記視界の外にある間に特定された第1のコントローラ姿勢、および前記ハンドヘルドコントローラが前記視界に再び入った後に特定された第2のコントローラ状態データに基づいて、前記コントローラ姿勢を補間するように構成されている、
請求項1に記載の人工現実システム。
【請求項11】
前記画像取込みデバイスが前記HMDと一体化されている、請求項1に記載の人工現実システム。
【請求項12】
前記画像データが赤外線画像データを含む、請求項1に記載の人工現実システム。
【請求項13】
ヘッドマウントディスプレイ(HMD)を含む人工現実システムの画像取込みデバイスにより、物理的環境を表す画像データを取得することと、
前記人工現実システムの非FOV追跡器により、ハンドヘルドコントローラに関する様々な運動挙動に関連付けられた複数の運動モデルのうちの1つの運動モデルに従って、前記ハンドヘルドコントローラに関するコントローラ状態データを特定することであって、前記複数の運動モデルの各々が1つまたは複数のそれぞれの起動条件に関連付けられ、前記運動モデルに従って前記コントローラ状態データを前記特定することが、前記ハンドヘルドコントローラが前記画像データ内で追跡可能でないこと、および前記ハンドヘルドコントローラに関する運動挙動を示すコントローラ測定データが前記運動モデルに関連付けられた前記1つまたは複数の起動条件を満たすと判定したことに応答する、前記ハンドヘルドコントローラに関するコントローラ状態データを特定することと、
前記人工現実システムにより、前記コントローラ状態データに少なくとも部分的に基づいて、前記ハンドヘルドコントローラの位置および向きを表すコントローラ姿勢を特定することと、
前記人工現実システムにより、前記コントローラ姿勢に従って人工現実コンテンツおよび少なくとも1つのグラフィカルオブジェクトを前記HMDに表示するためにレンダリングすることと
を含む、方法。
【請求項14】
前記複数の運動モデルがサブサンプションアーキテクチャで構成され、前記方法が、
前記1つまたは複数のそれぞれの起動条件が満たされた複数のモデルのうちの2つ以上について前記運動モデルを並行して評価することと、
最も高い優先度を有する評価された前記運動モデルに少なくとも部分的に基づいて、前記コントローラ状態データを特定することと
をさらに含む、請求項13に記載の方法。
【請求項15】
前記人工現実システムのFOV追跡器により、前記画像データに少なくとも部分的に基づいて、前記ハンドヘルドコントローラに関する画像ベースのコントローラ状態データを特定することと、
前記非FOV追跡器への入力として前記画像ベースのコントローラ状態データを提供することと
をさらに含み、
前記非FOV追跡器が、前記複数の運動モデルのどれも起動されていないと判定したことに応答して、前記画像ベースのコントローラ状態データに少なくとも部分的に基づいて、前記コントローラ状態データを特定する、
請求項13に記載の方法。
【請求項16】
前記ハンドヘルドコントローラに関する前記運動挙動を示す前記コントローラ測定データが、前記運動モデルに関連付けられた前記1つまたは複数の起動条件を満たすと前記判定したことが、前記ハンドヘルドコントローラが前記視界内で追跡可能でなく、前記ハンドヘルドコントローラが前記HMDのしきい値距離内で動いていると判定することを含み、
前記方法が、前記1つまたは複数のそれぞれの起動条件に関連付けられた前記運動モデルを評価することをさらに含み、前記運動モデルが、仮想の肘の第2の位置の周りの前記ハンドヘルドコントローラの第1の位置の旋回に従って、前記コントローラ状態データを特定するように構成される、
請求項13に記載の方法。
【請求項17】
前記ハンドヘルドコントローラが、第2のハンドヘルドコントローラによって前記視界内で塞がれており、
前記ハンドヘルドコントローラに関する前記運動挙動を示す前記コントローラ測定データが、前記運動モデルに関連付けられた前記1つまたは複数の起動条件を満たすと前記判定したことが、前記ハンドヘルドコントローラと前記第2のハンドヘルドコントローラとの間の距離がしきい値を下回ると判定することと、前記ハンドヘルドコントローラの加速度が前記第2のハンドヘルドコントローラの加速度と同期していないと判定することとを含み、
前記方法が、前記1つまたは複数のそれぞれの起動条件に関連付けられた前記運動モデルを評価することをさらに含み、前記運動モデルが、仮想胴体の位置に対する固定位置として前記コントローラ状態データの1つまたは複数の位置の値を特定するように構成される、
請求項13に記載の方法。
【請求項18】
前記ハンドヘルドコントローラが、第2のハンドヘルドコントローラによって前記視界内で塞がれており、
前記ハンドヘルドコントローラに関する前記運動挙動を示す前記コントローラ測定データが、前記運動モデルに関連付けられた前記1つまたは複数の起動条件を満たすと判定することが、前記ハンドヘルドコントローラと前記第2のハンドヘルドコントローラとの間の距離がしきい値を下回り、前記ハンドヘルドコントローラの加速度が前記第2のハンドヘルドコントローラの加速度と同期していると判定することを含み、
前記方法が、前記1つまたは複数のそれぞれの起動条件に関連付けられた前記運動モデルを評価することをさらに含み、前記運動モデルが、前記第2のハンドヘルドコントローラの第2の位置に対する固定位置内に前記コントローラ状態データの1つまたは複数の位置の値を特定するように構成される、
請求項13に記載の方法。
【請求項19】
前記ハンドヘルドコントローラに関する前記運動挙動を示す前記コントローラ測定データが、前記運動モデルに関連付けられた前記1つまたは複数の起動条件を満たすと判定することが、前記ハンドヘルドコントローラの慣性測定ユニット(IMU)によって提供された直近の絶対値が第1のしきい値を下回り、IMUによって提供された複数のバッファリングされた値の分散が第2のしきい値を下回ると判定することを含み、
前記方法が、前記1つまたは複数のそれぞれの起動条件に関連付けられた前記運動モデルを評価することをさらに含み、前記運動モデルが、世界基準フレーム内の固定位置内に前記コントローラ状態データの1つまたは複数の位置の値を特定するように構成される、
請求項13に記載の方法。
【請求項20】
実行されると、ヘッドマウントディスプレイ(HMD)を含む人工現実システムの1つまたは複数のプロセッサに、
画像取込みデバイスを介して物理的環境を表す画像データを取得することと、
ハンドヘルドコントローラに関する様々な運動挙動に関連付けられた複数の運動モデルのうちの1つの運動モデルに従って、前記ハンドヘルドコントローラに関するコントローラ状態データを特定することであって、前記複数の運動モデルの各々が1つまたは複数のそれぞれの起動条件に関連付けられ、前記運動モデルに従う前記コントローラ状態データの前記特定が、前記ハンドヘルドコントローラが前記画像データ内で追跡可能でないこと、および前記ハンドヘルドコントローラに関する運動挙動を示すコントローラ測定データが前記運動モデルに関連付けられた前記1つまたは複数の起動条件を満たすとの判定に応答する、前記ハンドヘルドコントローラに関するコントローラ状態データを特定することと、
前記コントローラ状態データに少なくとも部分的に基づいて、前記ハンドヘルドコントローラの位置および向きを表すコントローラ姿勢を特定することと、
前記コントローラ姿勢に従って人工現実コンテンツおよび少なくとも1つのグラフィカルオブジェクトを前記HMDに表示するためにレンダリングすることと
を行わせる命令を含む、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、それらの内容がすべての目的のために全体として参照により本明細書に組み込まれる、2019年5月20日に出願された米国特許出願第16/417,244号の優先権を主張する。
【0002】
本開示は、一般に、仮想現実システム、混合現実システム、および/または拡張現実システムなどの人工現実システムに関し、より詳細には、人工現実システム用のコントローラを追跡することに関する。
【背景技術】
【0003】
人工現実システムは、コンピュータゲーム、健康と安全、産業、および教育などの多くの分野の用途でますます広く普及している。いくつかの例として、人工現実システムは、モバイルデバイス、ゲームコンソール、パーソナルコンピュータ、映画館、およびテーマパークに組み込まれている。一般に、人工現実は、たとえば、仮想現実(VR)、拡張現実(AR)、混合現実(MR)、ハイブリッド現実、またはそれらの何らかの組合せおよび/もしくは派生物を含む場合がある、ユーザへの提示の前に何らかの方式で調整されている現実の一形態である。
【0004】
典型的な人工現実システムは、ユーザにコンテンツをレンダリングおよび表示するための1つまたは複数のデバイスを含む。一例として、人工現実システムは、ユーザが装着し、ユーザに人工現実コンテンツを出力するように構成されたヘッドマウントディスプレイ(HMD)を組み込むことができる。人工現実コンテンツは、取り込まれたコンテンツ(たとえば、実世界の映像および/または画像)と組み合わされた完全生成コンテンツまたは生成コンテンツを含んでもよい。操作中、ユーザは、ハンドヘルドコントローラを利用して、アプリケーションと対話するか、または人工現実システムと対話することができる。人工現実コンテンツ内のグラフィカル要素の外観は、ハンドヘルドコントローラの位置および向きに基づいて決定されてもよい。
【発明の概要】
【0005】
一般に、本開示は人工現実(AR)システムを記載し、より具体的には、ヘッドマウントディスプレイ(HMD)、1つまたは複数のハンドヘルドコントローラ、ならびに1つまたは複数のハンドヘルドコントローラの姿勢を特定および追跡するセンサまたはカメラを含む、ARシステム用のコントローラ追跡サブシステムを記載する。
【0006】
センサまたはカメラを使用してハンドヘルドコントローラの姿勢を追跡する従来のARシステムに関する技術上の問題は、ハンドヘルドコントローラがセンサまたはカメラの視界(FOV)から離れる可能性があり、あるいは視界内にあるが、ユーザの手もしくは他の身体の一部、第2のハンドヘルドコントローラ、または物理的環境内の他のオブジェクトによってなど別のオブジェクトによって塞がれる可能性があることである。ARシステムは、このように、ハンドヘルドコントローラに関する正確な姿勢を特定することができず、それにより、ARシステムの操作に伴うユーザの不満および失望につながる可能性がある。
【0007】
前述の技術上の問題に対する技術的解決策として、いくつかの態様は、ハンドヘルドコントローラがARシステムのセンサまたはカメラの視界内で追跡可能であるとき、ARシステムのセンサまたはカメラによって提供された画像に基づいてハンドヘルドコントローラの姿勢を特定することができ、またハンドヘルドコントローラがセンサもしくはカメラの視界内で追跡可能でないとき、またはハンドヘルドコントローラが視界内の別のオブジェクトによって塞がれている場合、他の利用可能なデータおよび運動モデルを使用してハンドヘルドコントローラの姿勢を特定することができる、コントローラ追跡サブシステムを含む。
【0008】
たとえば、コントローラ追跡サブシステムは、2つの構成要素である、FOV追跡構成要素(集団追跡構成要素とも呼ばれる)と、コントローラのうちの1つまたは複数がARシステムのセンサおよびカメラの視界内で容易に追跡可能でないときに特殊な運動モデルを適用する非FOV追跡構成要素(「コーナーケース」追跡構成要素とも呼ばれる)とを有することができる。詳細には、通常の動作条件下で、FOV追跡構成要素は、HMD状態データおよびコントローラ測定データ(速度、加速度など)を受信して、ハンドヘルドコントローラに関する画像ベースのコントローラ状態データを計算する。ハンドヘルドコントローラが追跡可能である(たとえば、視界内にある、塞がれていない、かつ静止していない)場合、画像ベースのコントローラ状態データはコントローラ姿勢を特定するために使用され、非FOV追跡構成要素はバイパスされる。ハンドヘルドコントローラが視界内で追跡可能でなく、ハンドヘルドコントローラ測定データが1つまたは複数の追跡コーナーケースのための起動条件を満たす場合、非FOV追跡構成要素は、1つまたは複数の起動された特殊な運動モデルを適用して、ハンドヘルドコントローラのうちの1つまたは複数に関するモデルベースのコントローラ状態データを計算する。モデルベースのコントローラ状態データは、次いで、コントローラ姿勢を特定するために使用される。
【0009】
例示的なコーナーケースには、HMDの近くのHMDにくっつけられていないコントローラ、くっつけられていないハンドオーバーハンド、くっつけられたハンドオーバーハンド、信用できないコントローラの位置、および静止しているコントローラが含まれる。コーナーケースの各々は、起動条件に関連付けられた運動モデルが評価されるかどうかを判定する起動条件および停止条件を有することができる。コーナーケースのための挙動は、有限状態機械(FSM)、およびハンドヘルドコントローラに関するモデルベースのコントローラ状態を特定するために使用され得る制約付き運動モデルを含むことができる。2つ以上のコーナーケースのための挙動は、表示フレーム生成サイクルの間に実現することができる。最も高い優先度の挙動に関連付けられた起動されたモデルの評価から得られた結果のモデルベースのコントローラ状態データは、ハンドヘルドコントローラの姿勢を特定するために使用することができる。
【0010】
上述された態様および以下に記載されるさらなる態様は、従来の人工現実システムの実装形態に対する技術的な改善点を提供することができ、ハンドヘルドコントローラがARシステムのセンサおよび/もしくはカメラの視界内にない場合、またはハンドヘルドコントローラが塞がれているときに、ARシステムがハンドヘルドコントローラの姿勢を特定することを可能にすることなどの、1つまたは複数の実際的な用途を提供することができる。結果として得られたコントローラ姿勢は、コントローラがARシステムのセンサおよび/またはカメラの視界内で追跡可能でないときに人工現実システムによって人工現実コンテンツのより正確なレンダリングを提供するために使用することができる。
【0011】
1つまたは複数の例示的な態様では、人工現実システムは、物理的環境を表す画像データを取り込むように構成された画像取込みデバイスと、人工現実コンテンツを出力するように構成されたヘッドマウントディスプレイ(HMD)と、コントローラ状態データに少なくとも部分的に基づいて、ハンドヘルドコントローラの位置および向きを表すコントローラ姿勢を特定するように構成された姿勢追跡器であって、ハンドヘルドコントローラに関する様々な運動挙動に関連付けられた複数の運動モデルを有する非FOV追跡器を含み、複数の運動モデルの各々が1つまたは複数のそれぞれの起動条件に関連付けられ、非FOV追跡器が、ハンドヘルドコントローラが画像データ内で追跡可能でないこと、および複数の運動モデルのうちの1つが起動されたとの判定に応答して、複数の運動モデルのうちの1つに従ってコントローラ状態データを特定するように構成される、姿勢追跡器と、コントローラ姿勢に従って人工現実コンテンツおよび少なくとも1つのグラフィカルオブジェクトをHMDに表示するためにレンダリングするように構成されたレンダリングエンジンとを含む。
【0012】
1つまたは複数のさらなる例示的な態様では、方法は、ヘッドマウントディスプレイ(HMD)を含む人工現実システムの画像取込みデバイスにより、物理的環境を表す画像データを取得することと、人工現実システムの非FOV追跡器により、ハンドヘルドコントローラに関する様々な運動挙動に関連付けられた複数の運動モデルのうちの1つの運動モデルに従って、ハンドヘルドコントローラに関するコントローラ状態データを特定することであって、複数の運動モデルの各々が1つまたは複数のそれぞれの起動条件に関連付けられ、運動モデルに従ってコントローラ状態データを特定することが、ハンドヘルドコントローラが画像データ内で追跡可能でないこと、およびハンドヘルドコントローラに関する運動挙動を示すコントローラ測定データが運動モデルに関連付けられた1つまたは複数の起動条件を満たすと判定したことに応答する、ハンドヘルドコントローラに関するコントローラ状態データを特定することと、人工現実システムにより、コントローラ状態データに少なくとも部分的に基づいて、ハンドヘルドコントローラの位置および向きを表すコントローラ姿勢を特定することと、人工現実システムにより、コントローラ姿勢に従って人工現実コンテンツおよび少なくとも1つのグラフィカルオブジェクトをHMDに表示するためにレンダリングすることとを含む。
【0013】
1つまたは複数のさらなる例示的な態様では、非一時的コンピュータ可読媒体は、実行されると、画像取込みデバイスを介して物理的環境を表す画像データを取得することと、ハンドヘルドコントローラに関する様々な運動挙動に関連付けられた複数の運動モデルのうちの1つの運動モデルに従って、ハンドヘルドコントローラに関するコントローラ状態データを特定することであって、複数の運動モデルの各々が1つまたは複数のそれぞれの起動条件に関連付けられ、運動モデルに従ってコントローラ状態データを特定することが、ハンドヘルドコントローラが画像データ内で追跡可能でないこと、およびハンドヘルドコントローラに関する運動挙動を示すコントローラ測定データが運動モデルに関連付けられた1つまたは複数の起動条件を満たすとの判定に応答する、ハンドヘルドコントローラに関するコントローラ状態データを特定することと、コントローラ状態データに少なくとも部分的に基づいて、ハンドヘルドコントローラの位置および向きを表すコントローラ姿勢を特定することと、コントローラ姿勢に従って人工現実コンテンツおよび少なくとも1つのグラフィカルオブジェクトをHMDに表示するためにレンダリングすることとを人工現実システムの1つまたは複数のプロセッサに行わせる命令を含む。
【0014】
本開示の技法の1つまたは複数の例の詳細は、添付の図面および以下の説明に記載される。技法の他の特徴、目的、および利点は、説明および図面から、かつ特許請求の範囲から明らかになる。
【図面の簡単な説明】
【0015】
図1A】本開示の技法により、人工現実システムの画像取込みデバイスの視界内で追跡可能でない1つまたは複数のハンドヘルドコントローラに対して姿勢追跡を実行する例示的な人工現実システムを描写する図である。
図1B】本開示の技法により、人工現実システムの画像取込みデバイスの視界内で追跡可能でない1つまたは複数のハンドヘルドコントローラに対して姿勢追跡を実行する別の例示的な人工現実システムを描写する図である。
図2】本開示の技法に従って動作する例示的なHMDを描写する図である。
図3】本開示の技法により、ハンドヘルドコントローラに対する姿勢追跡が、図1A図1Bの人工現実システムのHMDの例示的なインスタンスによって実行される例を描写するブロック図である。
図4】ハンドヘルドコントローラに対する姿勢追跡が、図1A図1Bの人工現実システムのコンソールおよびHMDの例示的なインスタンスによって実行される例示的な実装形態を示すブロック図である。
図5】本開示の態様による、例示的な非FOV追跡器の構成要素を示すブロック図である。
図6】本開示の態様による、いくつかの場合において、視界内で追跡可能でないハンドヘルドコントローラのコントローラ姿勢を特定するための方法の例示的な動作を示すフローチャートである。
図7】本開示の態様による、挙動を起動し、起動された挙動に関連付けられた運動モデルを評価するための方法の例示的な動作を示すフローチャートである。
図8】本開示の態様による、挙動を起動し、起動された挙動に関連付けられた運動モデルを評価するための方法の例示的な動作を示すフローチャートである。
図9】本開示の態様による、挙動を起動し、起動された挙動に関連付けられた運動モデルを評価するための方法の例示的な動作を示すフローチャートである。
図10】本開示の態様による、挙動を起動し、起動された挙動に関連付けられた運動モデルを評価するための方法の例示的な動作を示すフローチャートである。
図11】本開示の態様による、ハンドヘルドコントローラが視界内に再び入ったときにジッタを削減するための方法の例示的な動作を示すフローチャートである。
図12A-12B】例示的な物理的環境および例示的な物理的環境に基づく例示的な人工現実コンテンツを示す図である。
図13A-13B】例示的な物理的環境および例示的な物理的環境に基づく例示的な人工現実コンテンツを示す図である。
図14A-14B】例示的な物理的環境および例示的な物理的環境に基づく例示的な人工現実コンテンツを示す図である。
図15A-15B】例示的な物理的環境および例示的な物理的環境に基づく例示的な人工現実コンテンツを示す図である。
【発明を実施するための形態】
【0016】
図および説明の全体を通して、同様の参照文字は同様の要素を指す。
【0017】
図1Aは、本開示の技法により、人工現実システムの画像取込みデバイスの視界内で追跡可能でない1つまたは複数のハンドヘルドコントローラ114に対して姿勢追跡を実行する例示的な人工現実システム10を描写する図である。いくつかの例示的な実装形態では、人工現実システム10は、ユーザ110によって操作される1つまたは複数のハンドヘルドコントローラ114の1つまたは複数の検出された姿勢に基づいて、グラフィカル要素を生成し、ユーザ110にレンダリングする。すなわち、本明細書に記載されたように、人工現実システム10は、コントローラ114の特定の運動、構成、位置、および/または向きなどの、ユーザ110によって操作されるコントローラ114の姿勢に基づいて、1つまたは複数のグラフィカル要素126、136を提示する。
【0018】
図1Aの例では、人工現実システム10はヘッドマウントデバイス(HMD)112を含む。図示されたように、HMD112は、通常、ユーザ110によって装着され、人工現実コンテンツ122をユーザ110に提示するための電子ディスプレイおよび光学アセンブリを含む。加えて、HMD112は、HMD112の運動を追跡するための1つまたは複数の運動センサ(たとえば、加速度計)を含み、周囲の物理的環境の画像データを取り込むための1つまたは複数の画像取込みデバイス138、たとえば、カメラ、赤外線(IR)検出器、ドップラーレーダー、ラインスキャナなどを含んでもよい。
【0019】
いくつかの例示的な実装形態では、HMD112は、スタンドアロンのモバイル人工現実システムとして動作する。他の実装形態では、人工現実システム10は、場合によっては、HMD112に加えて、またはその代わりに、コンソール106および/または1つもしくは複数の外部センサ90を含むことができる。図1Aに示された例では、コンソール106は、ゲームコンソール、ワークステーション、デスクトップコンピュータ、またはラップトップなどの、単一のコンピューティングデバイスとして図示されている。他の例では、コンソール106は、分散コンピューティングネットワーク、データセンタ、またはクラウドコンピューティングシステムなどの、複数のコンピューティングデバイスにわたって分散されてもよい。コンソール106、HMD112、およびセンサ90は、この例に示されたように、ネットワーク104を介して通信可能に結合されてもよく、ネットワーク104は、WiFi、メッシュネットワーク、または短距離無線通信媒体などの、有線または無線のネットワークであってもよい。
【0020】
一般に、人工現実システム10は、実世界の3D物理的環境から取り込まれた情報を使用して、ユーザ110に表示するために人工現実コンテンツ122をレンダリングする。図1Aの例では、ユーザ110は、HMD112および/またはコンソール116上で実行される人工現実アプリケーションによって構築されレンダリングされた人工現実コンテンツ122を視る。一例として、人工現実コンテンツ122は、その中でユーザ110が1つまたは複数の仮想オブジェクト128A、128Bとともにアバター120としてレンダリングされる、消費者ゲームアプリケーションであってもよい。いくつかの例では、人工現実コンテンツ122は、実世界の画像と仮想オブジェクトの混合、たとえば、混合現実および/または拡張現実を含んでもよい。他の例では、人工現実コンテンツ122は、たとえば、ビデオ会議アプリケーション、ナビゲーションアプリケーション、教育アプリケーション、訓練またはシミュレーションのアプリケーション、または人工現実を実装する他のタイプのアプリケーションであってもよい。
【0021】
動作中、人工現実アプリケーションは、基準フレーム、通常、HMD112の視点用の姿勢情報を追跡および計算することにより、ユーザ110に表示するための人工現実コンテンツ122を構築する。基準フレームとしてHMD112を使用して、かつHMD112の現在の推定姿勢および1つまたは複数のコントローラ114の現在の推定姿勢により判定される現在の視界130に基づいて、人工現実アプリケーションは、いくつかの例では、ユーザ110の実世界の3D物理的環境の上に少なくとも部分的に重ね合わされ得る3D人工現実コンテンツをレンダリングする。このプロセスの間、人工現実アプリケーションは、移動情報およびユーザコマンドなどのHMD112および1つまたは複数のコントローラ114から受信された検知データ、ならびにいくつかの例では、外部カメラなどの任意の外部センサ90からのデータを使用して、ユーザ110による運動および/または1つもしくは複数のコントローラ114の運動などの実世界の物理的環境内の3D情報を取り込む。検知データに基づいて、人工現実アプリケーションは、HMD112の基準フレーム用の現在の姿勢、1つまたは複数のコントローラ114の現在の姿勢を特定し、HMD112およびコントローラ114の現在の姿勢に従って、人工現実コンテンツ122をレンダリングする。本開示の技法によれば、人工現実システム10は、1つまたは複数のコントローラ114がセンサまたはカメラの視界内で追跡可能であるとき、人工現実システム10のセンサまたはカメラからのデータに基づいて、1つまたは複数のコントローラ114の姿勢を特定することができ、人工現実システム10は、1つまたは複数のコントローラ114がセンサまたはカメラの視界内で追跡可能でないとき、運動モデルおよび利用可能なコントローラ測定データを使用することができる。
【0022】
より具体的には、本明細書にさらに記載されるように、HMD112の画像取込みデバイス138は、画像取込みデバイス138の視界130内にある実世界の物理的環境内のオブジェクトを表す画像データを取り込む。これらのオブジェクトは1つまたは複数のコントローラ114を含むことができる。視界130は、通常、HMD112の視点と対応する。図1Aの示された例などのいくつがの例では、人工現実アプリケーションは、視界130内にあるユーザ110の手132の部分を人工現実コンテンツ122内の仮想の手136としてレンダリングする。仮想の手136は、手132が保持するコントローラ114の姿勢に従ってレンダリングすることができる。さらに、人工現実アプリケーションは、1つまたは複数のコントローラ114の姿勢に基づいて、仮想の剣126などの仮想オブジェクトをレンダリングすることができる。
【0023】
したがって、本開示の技法は、人工現実システムがコンテンツをレンダリングおよび表示するコンピュータ関連分野に対する具体的な技術的改善点を提供する。たとえば、本明細書に記載された人工現実システムは、コントローラ114が人工現実システム10のセンサおよび/またはカメラの視界内で追跡可能であるかどうかにかかわらず、コントローラ114に関して特定された姿勢に基づいて人工現実コンテンツ上に重ね合わされたグラフィカル要素を生成およびレンダリングすることにより、人工現実アプリケーションのユーザ110などのユーザに高品質の人工現実体験を提供することができる。
【0024】
図1Bは、本開示の技法により、人工現実システム20の画像取込みデバイスの視界内で追跡可能でない1つまたは複数のハンドヘルドコントローラに対して姿勢追跡を実行する別の例示的な人工現実システム20を描写する図である。図1Aの人工現実システム10と同様に、いくつかの例では、図1Bの人工現実システム20は、1つまたは複数のコントローラ114に関して特定された姿勢に基づいて、人工現実環境内でユーザが対話および操作するためのグラフィカル要素を提示および制御することができる。
【0025】
図1Bの例では、人工現実システム20は、外部カメラ102Aおよび102B(まとめて、「外部カメラ102」)と、HMD112A~112C(まとめて、「HMD112」)と、コントローラ114A、114B、および114C(まとめて、「コントローラ114」)と、センサ90とを含む。図1Bに示されたように、人工現実システム20は、HMD112および/またはコンソール106上で実行される人工現実アプリケーションが、ユーザ110A~110C(まとめて、「ユーザ110」)の各々に、それぞれのユーザのための対応する基準フレームの現在の視点に基づいて人工現実コンテンツを提示する、マルチユーザ環境を表す。すなわち、この例では、人工現実アプリケーションは、HMD112およびそれぞれのコントローラ114の各々のための基準フレームに関する姿勢情報を追跡および計算することによって人工コンテンツを構築する。人工現実システム20は、カメラ102、HMD112、およびコントローラ114から受信されたデータを使用して、HMD112の対応する基準フレーム内のコントローラ114に関する更新された姿勢情報を計算する際に使用するために、ユーザ110による運動などの実世界の環境内の3D情報、および/またはコントローラ114に関する追跡情報を取り込む。一例として、人工現実アプリケーションは、HMD112Cに関して特定された現在の視点に基づいて、仮想オブジェクト128A~128C(まとめて、「仮想オブジェクト128」)を有する人工現実コンテンツ122を、実世界のオブジェクト108A~108C(まとめて、「実世界のオブジェクト108」)上に空間的に重ね合わされるようにレンダリングすることができる。さらに、HMD112Cの視点から、人工現実システム20は、ユーザ110A、110Bに関する推定姿勢に基づいて、それぞれ、アバター120A、120Bをレンダリングする。さらに、人工現実システム20は、人工現実システム20によって特定されたコントローラ114の姿勢に基づいて、グラフィカルオブジェクトをレンダリングすることができる。
【0026】
HMD112の各々は、人工現実システム20内で並行して動作する。図1Bの例では、ユーザ110の各々は、人工現実アプリケーション内の「プレーヤ」または「参加者」であってもよく、ユーザ110のいずれも、人工現実アプリケーション内の「見物人」または「観察者」であってもよい。HMD112Cは、ユーザ110Cの手132Cが保持するコントローラ114Cを追跡し、手132Cが保持するコントローラ114Cが視界130内にあるときに、人工現実コンテンツ122内の仮想の手136として手132Cをレンダリングすることにより、図1AのHMD112と実質的に同様に動作することができる。HMD112Cはまた、コントローラ114Cが視界130内にあるときにコントローラ114Cの特定された姿勢に基づいて、剣126などの仮想オブジェクトをレンダリングすることができる。コントローラ114Cは、Bluetoothなどの短距離無線通信の近距離通信を使用して、有線通信リンクを使用して、または他のタイプの通信リンクを使用して、HMD112Cと通信することができる。
【0027】
HMD112AおよびHMD112Bも、図1AのHMD112と実質的に同様に動作することができる。HMD112Bは、ユーザ110Bが保持するコントローラ114Aおよび144Bからユーザ入力を受信することができる。
【0028】
図1Bに示されたように、HMD112Cのカメラ138を介して取り込まれた画像データに加えて、またはその代わりに、外部カメラ102からの入力データは、コントローラ114の特定の運動、構成、位置、および/または向きを追跡および検出するために使用されてもよい。
【0029】
図2は、本開示の技法に従って動作するように構成された例示的なHMD112およびコントローラ114を描写する図である。図2のHMD112は、図1Aおよび図1BのHMD112のいずれかの例であってもよい。HMD112は、本明細書に記載された技法を実施するように構成されたスタンドアロンのモバイル人工現実システムとして動作することができるか、または図1A図1Bの人工現実システム10、20などの人工現実システムの一部であってもよい。
【0030】
この例では、HMD112は、前面剛体、およびHMD112をユーザに固定するバンドを含む。加えて、HMD112は、人工現実コンテンツをユーザに提示するように構成された内向電子ディスプレイ203を含む。電子ディスプレイ203は、液晶ディスプレイ(LCD)、量子ドットディスプレイ、ドットマトリクスディスプレイ、発光ダイオード(LED)ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、陰極線管(CRT)ディスプレイ、電子インク、またはモノクロ、カラー、もしくは視覚出力を生成することが可能な任意の他のタイプのディスプレイなどの、任意の適切な表示技術であってもよい。いくつかの例では、電子ディスプレイは、ユーザの各眼に別々の画像を提供するための立体視ディスプレイである。いくつかの例では、HMD112およびユーザの現在の視点に従って人工現実コンテンツをレンダリングするためにHMD112の位置および向きを追跡するとき、HMD112の前面剛体に対するディスプレイ203の既知の向きおよび位置は、ローカル原点とも呼ばれる基準フレームとして使用される。基準フレームはまた、HMD112に対するコントローラ114の位置および向きを追跡する際に使用されてもよい。他の例では、HMD112は、眼鏡またはゴーグルなどの他のウェアラブルヘッドマウントディスプレイの形態を取ることができる。
【0031】
図2にさらに示されたように、この例では、HMD112は、HMD112の現在の加速度を示すデータを出力する1つもしくは複数の加速度計(慣性測定ユニットもしくは「IMU」とも呼ばれる)、HMD112の場所を示すデータを出力するGPSセンサ、様々なオブジェクトからのHMD112の距離を示すデータを出力するレーダーもしくはソナー、または物理的環境内のHMD112もしくは他のオブジェクトの場所もしくは向きの指示を提供する他のセンサなどの、1つまたは複数の運動センサ206をさらに含む。その上、HMD112は、物理的環境を表す画像データを出力するように構成された、ビデオカメラ、スチルカメラ、IRスキャナ、UVスキャナ、レーザースキャナ、ドップラーレーダースキャナ、深度スキャナなどの、統合された画像取込みデバイス138Aおよび138B(まとめて、「画像取込みデバイス138」)を含んでもよい。いくつかの態様では、画像取込みデバイス138は、電磁スペクトル(たとえば、IR光)の可視スペクトルおよび不可視スペクトルから画像データを取り込むことができる。画像取込みデバイス138は、可視スペクトルから画像データを取り込む1つまたは複数の画像取込みデバイス、および不可視スペクトルから画像データを取り込む1つまたは複数の別個の画像取込みデバイスを含んでもよく、またはこれらは、同じ1つまたは複数の画像取込みデバイスに組み合わされてもよい。より具体的には、画像取込みデバイス138は、通常、HMD112の視点に対応する、画像取込みデバイス138の視界130A、130B内にある物理的環境内のオブジェクトを表す画像データを取り込む。HMD112は内部制御ユニット210を含み、内部制御ユニット210は、内部電源、ならびにプログラム可能動作を実行して、検知データを処理し、ディスプレイ203に人工現実コンテンツを提示するための動作環境を提供する、1つまたは複数のプロセッサ、メモリ、およびハードウェアを有する1つまたは複数のプリント基板を含んでもよい。
【0032】
コントローラ114は、人工現実システム10、20と対話する際に使用するためのハンドヘルドコントローラであり得る。コントローラ114は、可視スペクトルまたは不可視スペクトル内で光を放射する1つまたは複数のエミッタ208を含むことができる。いくつかの例示的な実装形態では、コントローラ114は10個以上のエミッタ208を含むことができる。いくつかの態様では、エミッタ208はIRエミッタであり得る。エミッタ208は、コントローラ114の姿勢を特定するために人工現実システム10、20によって使用され得るパターン(「集団」とも呼ばれる)で配列することができる。コントローラ114は、人工現実システム10、20が使用するための入力を提供することができる、ボタン、ダイヤルなどのユーザインターフェース機構を含むことができる。
【0033】
一例では、本明細書に記載された技法によれば、制御ユニット210は、検知された画像データに基づいて、コントローラ114の姿勢を特定するように構成される。画像取込みデバイス138の視界内にあるとき、人工現実システムは、画像データ内のコントローラ14のエミッタ208のパターンを検出し、パターンを使用してコントローラ114の姿勢を特定することができる。コントローラ114が画像取込みデバイス138の視界内で追跡可能でないか、または視界130A、130B内で塞がれているとき、人工現実システムは、以下にさらに記載されるように、特定のケースに固有の運動モデルとともにコントローラ114から取得された測定値を使用して、コントローラ114の姿勢を特定することができる。たとえば、画像データ内で検出可能なコントローラ114のエミッタが3つよりも少ない場合、コントローラ114は、画像データ内で追跡可能でないと判定されてもよい。制御ユニット210は、コントローラ114の推定姿勢の特定に基づいて、仮想オブジェクトおよび他の人工現実コンテンツをレンダリングすることができる。
【0034】
図3は、ハンドヘルドコントローラに対する姿勢追跡が、図1A図1Bの人工現実システム10、20の例示的なインスタンスによって実行される例を示すブロック図である。図3の例では、HMD112は、HMD112および/またはコントローラ114から受信された運動データおよび画像データなどの検知データに基づいて、本明細書に記載された技法に従って、HMD112およびコントローラ114に対する姿勢追跡およびレンダリングを実行する。
【0035】
この例では、HMD112は、いくつかの例では、オペレーティングシステム305を実行するためのコンピュータプラットフォームを提供する1つまたは複数のプロセッサ302およびメモリ304を含み、オペレーティングシステム305は、たとえば、組込み型のリアルタイムマルチタスキングオペレーティングシステム、または他のタイプのオペレーティングシステムであってもよい。次に、オペレーティングシステム305は、1つまたは複数のソフトウェア構成要素317を実行するためのマルチタスキング動作環境を提供する。プロセッサ302は、1つまたは複数のI/Oインターフェース315に結合され、I/Oインターフェース315は、同様のI/Oインターフェース319を介してコントローラ114と、かつキーボード、ゲームコントローラ、ディスプレイデバイス、画像取込みデバイス、他のHMDなどの他のデバイスと通信するためのI/Oインターフェースを提供する。その上、1つまたは複数のI/Oインターフェース315、319は、ネットワーク104などのネットワークと通信するための1つまたは複数の有線または無線のネットワークインターフェースコントローラ(NIC)を含んでもよい。さらに、プロセッサ302は、電子ディスプレイ203、運動センサ206、および画像取込みデバイス138に結合される。いくつかの例では、プロセッサ302およびメモリ304は、別個で個別の構成要素であってもよい。他の例では、メモリ304は、単一の集積回路内でプロセッサ302と併置されたオンチップメモリであってもよい。
【0036】
HMD112のソフトウェアアプリケーション317は、人工現実アプリケーション全体を提供するように動作する。この例では、ソフトウェアアプリケーション317は、アプリケーションエンジン340と、レンダリングエンジン322と、姿勢追跡器326とを含む。
【0037】
一般に、アプリケーションエンジン340は、人工現実アプリケーション、たとえば、テレビ会議アプリケーション、ゲームアプリケーション、ナビゲーションアプリケーション、教育アプリケーション、訓練またはシミュレーションのアプリケーションなどを提供および提示する機能を含む。アプリケーションエンジン340は、たとえば、HMD112上に人工現実アプリケーションを実装するための1つまたは複数のソフトウェアパッケージ、ソフトウェアライブラリ、ハードウェアドライバ、および/またはアプリケーションプログラミングインターフェース(API)を含んでもよい。アプリケーションエンジン340による制御に応答して、レンダリングエンジン322は、HMD112のアプリケーションエンジン340がユーザに表示するための3D人工現実コンテンツを生成する。
【0038】
アプリケーションエンジン340およびレンダリングエンジン322は、姿勢追跡器326によって特定された基準フレーム、通常、HMD112の視点内のコントローラ114およびHMD112に関する現在の姿勢情報に従って、ユーザ110に表示するための人工現実コンテンツを構築する。現在の視点に基づいて、レンダリングエンジン322は3D人工現実コンテンツを構築し、3D人工現実コンテンツは、いくつかの場合では、ユーザ110の実世界の3D環境の上に少なくとも部分的に重ね合わされてもよい。このプロセスの間、姿勢追跡器326は、移動情報およびユーザコマンドなどのHMD112から受信された検知データおよびコントローラ114から受信されたコントローラ測定データ、ならびにいくつかの例では、外部カメラなどの任意の外部センサ90(図1A図1B)からのデータに対して動作して、ユーザ110による運動、コントローラ114の位置および場所、ならびに/またはユーザ110に関する特徴追跡情報などの、実世界の環境内の3D情報を取り込む。検知データに基づいて、姿勢追跡器326は、HMD112の基準フレーム内のHMD112およびコントローラ114の現在の姿勢を特定し、現在の姿勢に従って、ユーザ110に表示するための人工現実コンテンツを構築する。
【0039】
姿勢追跡器326は、FOV追跡器342および非FOV追跡器344を含む。FOV追跡器342は、画像取込みデバイス138を介して取得された画像データおよびコントローラ114の測定データに対して動作して、コントローラ114が画像取込みデバイス138の視界内で追跡可能であるときにコントローラ114の推定姿勢を計算するために使用され得る画像ベースのコントローラ状態データを特定する。コントローラ114は、コントローラ114が視界内にあり、他のオブジェクトによって塞がれておらず、かつ静止していないときに、視界内で追跡可能であると見なすことができる。
【0040】
非FOV追跡器342は、コントローラ114およびHMD112から取得された測定値に対して動作して、コントローラ114が画像取込みデバイス138の視界内で追跡可能でなく、測定値および他の利用可能なデータがコントローラ114および/またはHMD112の測位の特定のケースのための起動条件を満たすときに、コントローラ114の姿勢を特定する。
【0041】
姿勢追跡器326、FOV追跡器342、および非FOV追跡器344の動作に関するさらなる詳細は、図5図11に関して以下に提供される。
【0042】
コントローラ114は、人工現実システム10、20とのユーザ対話のために提供するハンドヘルドコントローラであり得る。いくつかの態様では、コントローラ114は、エミッタ208と、運動センサ306と、I/Oインターフェース319とを含む。エミッタ208は、可視スペクトルまたは不可視スペクトル内で光を放射および/または反射することができる。たとえば、エミッタ208はIRスペクトル内で光を放射することができる。
【0043】
運動センサ206は、コントローラ114の現在の加速度を示すデータを出力する1つもしくは複数の加速度計(慣性測定ユニットもしくは「IMU」とも呼ばれる)、コントローラ114の場所を示すデータを出力するGPSセンサ、様々なオブジェクトからのコントローラ114の距離を示すデータを出力するレーダーもしくはソナー、または物理的環境内のコントローラ114もしくは他のオブジェクトの場所もしくは向きの指示を提供する他のセンサなどのセンサを含むことができる。
【0044】
図4は、ハンドヘルドコントローラに対する姿勢追跡が、図1A図1Bの人工現実システム10、20のコンソール106およびHMD112の例示的なインスタンスによって実行される例示的な実装形態を示すブロック図である。図4の例では、コンソール106は、HMD112および/またはコントローラ114から受信された運動データならびにHMD112および/または外部センサから受信された画像データなどの検知データに基づいて、本明細書に記載された技法に従って、HMD112に対する姿勢追跡およびレンダリングを実行する。
【0045】
この例では、図3と同様に、HMD112は、いくつかの例では、オペレーティングシステム305を実行するためのコンピュータプラットフォームを提供する1つまたは複数のプロセッサ302およびメモリ304を含み、オペレーティングシステム305は、たとえば、組込み型のリアルタイムマルチタスキングオペレーティングシステム、または他のタイプのオペレーティングシステムであってもよい。次に、オペレーティングシステム305は、1つまたは複数のソフトウェア構成要素317を実行するためのマルチタスキング動作環境を提供する。その上、プロセッサ302は、電子ディスプレイ203、運動センサ206、および画像取込みデバイス138に結合される。
【0046】
一般に、コンソール106は、カメラ102(図1B)および/またはHMD112から受信された画像および追跡情報、ならびにコントローラ114からの測定データを処理して、HMD112およびコントローラ114に対する姿勢追跡およびコンテンツレンダリングを実行するコンピューティングデバイスである。いくつかの例では、コンソール106は、ワークステーション、デスクトップコンピュータ、ラップトップ、またはゲームシステムなどの単一のコンピューティングデバイスである。いくつかの例では、プロセッサ412および/またはメモリ414などのコンソール106の少なくとも一部分は、クラウドコンピューティングシステム、データセンタにわたって、またはインターネット、別の公的もしくは専用の通信ネットワーク、たとえば、ブロードバンド、セルラー、Wi-Fi、ならびに/もしくはコンピューティングシステム、サーバ、およびコンピューティングデバイスの間でデータを送信するための他のタイプの通信ネットワークなどのネットワークにわたって分散されてもよい。
【0047】
図4の例では、コンソール106は、いくつかの例では、オペレーティングシステム416を実行するためのコンピュータプラットフォームを提供する1つまたは複数のプロセッサ412およびメモリ414を含み、オペレーティングシステム416は、たとえば、組込み型のリアルタイムマルチタスキングオペレーティングシステム、または他のタイプのオペレーティングシステムであってもよい。次に、オペレーティングシステム416は、1つまたは複数のソフトウェア構成要素417を実行するためのマルチタスキング動作環境を提供する。プロセッサ412は1つまたは複数のI/Oインターフェース415に結合され、I/Oインターフェース415は、キーボード、ゲームコントローラ、ディスプレイデバイス、画像取込みデバイス、HMDなどの外部デバイスと通信するためのI/Oインターフェースを提供する。その上、1つまたは複数のI/Oインターフェース415は、ネットワーク104などのネットワークと通信するための1つまたは複数の有線または無線のネットワークインターフェースコントローラ(NIC)を含んでもよい。プロセッサ302、412の各々は、マルチコアプロセッサ、コントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または等価の個別論理回路もしくは集積論理回路のうちの任意の1つまたは複数を備えることができる。メモリ304、414は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、およびフラッシュメモリなどの、データおよび実行可能ソフトウェア命令を記憶するための任意の形態のメモリを備えることができる。
【0048】
コンソール106のソフトウェアアプリケーション417は、人工現実アプリケーション全体を提供するように動作する。この例では、ソフトウェアアプリケーション417は、アプリケーションエンジン420と、レンダリングエンジン422と、姿勢追跡器426とを含む。
【0049】
一般に、アプリケーションエンジン420は、人工現実アプリケーション、たとえば、テレビ会議アプリケーション、ゲームアプリケーション、ナビゲーションアプリケーション、教育アプリケーション、訓練またはシミュレーションのアプリケーションなどを提供および提示する機能を含む。アプリケーションエンジン420は、たとえば、コンソール106上に人工現実アプリケーションを実装するための1つまたは複数のソフトウェアパッケージ、ソフトウェアライブラリ、ハードウェアドライバ、および/またはアプリケーションプログラムインターフェース(API)を含んでもよい。アプリケーションエンジン420による制御に応答して、レンダリングエンジン422は、HMD112のアプリケーションエンジン340によってユーザに表示するための3D人工現実コンテンツを生成する。
【0050】
アプリケーションエンジン420およびレンダリングエンジン422は、姿勢追跡器426によって特定された基準フレーム、通常、HMD112の視点内のHMD112およびコントローラ114に関する現在の姿勢情報に従って、ユーザ110に表示するための人工現実コンテンツを構築する。現在の視点に基づいて、レンダリングエンジン422は3D人工現実コンテンツを構築し、3D人工現実コンテンツは、いくつかの場合では、ユーザ110の実世界の3D環境の上に少なくとも部分的に重ね合わされてもよい。このプロセスの間、姿勢追跡器426は、HMD112上のセンサからの画像データ、コントローラ114からの運動センサデータ、およびいくつかの例では、外部カメラなどの任意の外部センサ90(図1A図1B)からのデータなどHMD112およびコントローラ114から受信した検知データに対して動作して、ユーザ110による運動、コントローラ114の運動、および/またはユーザ110に関する特徴追跡情報などの、実世界の環境内の3D情報を取り込む。検知データに基づいて、姿勢追跡器426は、HMD112の基準フレーム内のHMD112およびコントローラ114の現在の姿勢を特定し、現在の姿勢に従って、ユーザ110に表示するために、1つまたは複数のI/Oインターフェース315、415を介してHMD112に通信するための人工現実コンテンツを構築する。
【0051】
図3に関して上述された姿勢追跡器326と同様に、姿勢追跡器426は、FOV追跡器442および非FOV追跡器444を含む。FOV追跡器442は、画像取込みデバイス138または外部カメラ102を介して取得された画像データに対して動作して、コントローラ114が画像取込みデバイス138、102の視界内で追跡可能であるときに、コントローラ114に関する画像ベースのコントローラ状態データを特定する。コントローラ114は、コントローラ114が視界内にあり、他のオブジェクトによって塞がれておらず、かつ静止していないときに、視界内で追跡可能であると見なすことができる。
【0052】
非FOV追跡器442は、コントローラ114およびHMD112から取得された測定値に対して動作して、コントローラ114が画像取込みデバイス138、102の視界内で追跡可能でなく、測定値および他の利用可能なデータがコントローラ114および/またはHMD112の測位の特定のケースのための起動条件を満たすときに、コントローラ114に関するモデルベースのコントローラ状態データを特定する。
【0053】
姿勢追跡器426、FOV追跡器442、および非FOV追跡器444の動作に関するさらなる詳細は、図5図11に関して以下に提供される。
【0054】
図5は、本開示の態様による、例示的な非FOV追跡器344(および444)の構成要素を示すブロック図である。いくつかの態様では、非FOV追跡器344は、コントローラ114がカメラ138の視界内で追跡可能でなく、コントローラ114の状態が追跡コーナーケースに関連付けられた1つまたは複数の起動条件を満たすことができることを利用可能なデータが示すと判定したことに応答して、非FOV追跡器344によって実行される動作に対応する複数の挙動502A~N(挙動502と総称される)を含む。そのようなコーナーケースの例には、コントローラ114が静止していること、コントローラの位置が信用できず、視界の外にあり、HMDに近接していること、視界内にあるが、別のオブジェクトによって塞がれ、他のオブジェクトにくっつけられていること、視界内にあるが、別のオブジェクトによって塞がれ、他のオブジェクトにくっつけられていないことが含まれる。いくつかの態様では、塞いでいるオブジェクトは第2のハンドヘルドコントローラであり得る。他のコーナーケースが可能であり、本発明の主題の範囲内にある。
【0055】
非FOV追跡器344は、コントローラ114から取得されたコントローラ測定値510を入力として受信することができる。コントローラ測定値510は、コントローラ114内の運動センサ206からの値を含むことができる。たとえば、コントローラ測定値は、直線加速度および角加速度、直線速度および角速度、ならびにコントローラ114から受信されるか、またはコントローラ114から受信されたデータから導出された他の運動関連データを含むことができる。入力されたコントローラ測定値510はまた、レーダー追跡または近距離通信距離追跡を使用して取得された距離測定値などの、HMD112によって生成された非画像ベースのコントローラ測定値を含んでもよい。
【0056】
さらに、非FOV追跡器344は、HMD112から取得されたHMD状態データ512を受信することができる。HMD状態データは、HMD112の現在の姿勢を含むことができ、HMD112とコントローラ114との間の位置関係を特定するために使用することができる。
【0057】
各挙動502は、挙動502に関連付けられた1つまたは複数の起動条件および1つまたは複数の停止条件を有することができる。起動条件は、挙動に関連付けられた追跡コーナーケースが現在存在するかどうかを判定するために、コントローラ測定値510およびHMD状態512に適用され得る規則、論理、発見的方法、および/またはパラメータ値を含むことができる。起動条件が満たされた場合、挙動502のための満たされた起動条件に関連付けられた運動モデル506、および起動条件に関連付けられた運動モデル506が起動される。
【0058】
反対に、挙動502に関連付けられた1つまたは複数の停止条件は、挙動に関連付けられたコーナーケースがもはや存在しないかどうかを判定するために、コントローラ測定値510およびHMD状態512に適用され得る規則、論理、発見的方法、および/またはパラメータ値を含むことができる。挙動502に関連付けられた停止条件が満たされた場合、挙動502および挙動502に関連付けられた運動モデル506が停止させられる。
【0059】
いくつかの態様では、挙動条件が満たされたことに応答して挙動およびその関連付けられた運動モデルが起動されると、挙動および関連付けられた運動モデルは、挙動および関連付けられた運動モデルのための停止条件が満たされるまで、起動状態に留まる。他の態様では、停止条件は任意選択であってもよく、挙動およびその関連付けられた運動モデルは、起動条件が満たされたままである限り起動され、起動条件がもはや満たされなくなると停止させられる。
【0060】
さらに、非FOV追跡器344は、FOV追跡器342から画像ベースのコントローラ状態データ514を受信することができる。画像ベースのコントローラ状態データ514は、HMD状態データ512、コントローラ測定データ510、および画像取込みデバイス138からの画像データ518を使用して、コントローラ114の姿勢を特定しようと試みた結果としてFOV追跡器342によって生成された出力データであり得る。
【0061】
各挙動502は、関連付けられた運動モデル506を有することができる。挙動用の運動モデル506は、コントローラ114用のモデルベースのコントローラ状態データ516A~N(まとめて、「モデルベースのコントローラ状態データ516」)がどのように特定されるかを規定する。たとえば、挙動502用の運動モデル506は、コントローラ測定データ510、HMD状態データ512、およびコントローラ状態データ514を利用して、モデルベースのコントローラ状態データ516を特定することができる。
【0062】
各挙動502は、関連付けられた有限状態機械(FSM)504を有することができる。挙動502に関連付けられたFSM504は、状態情報(起動、停止、など)、1つの状態から別の状態への遷移、および挙動に関連付けられた他の状態情報を記録することができる。挙動用のFSM504は、表示フレーム間の状態情報を保存することができ、モデルベースのコントローラ状態データ516を特定するために、挙動502に関連付けられた運動モデル506によって使用することができる。
【0063】
いくつかの態様では、挙動502A~Nは優先度に関連付けられる。挙動の優先度は様々な方法で特定することができる。たとえば、優先度は、コーナーケースの発生の可能性、コーナーケースが発生した場合のユーザ体験の荒廃、コーナーケースが問題として報告された回数などに基づいて特定することができる。
【0064】
いくつかの実装形態では、挙動502A~Nはサブサンプションアーキテクチャで編成することができる。サブサンプションアーキテクチャでは、コーナーケース用の挙動502A~Nは、各挙動に優先度を付けるそれぞれのレイヤ内で編成される。図5に示された例では、最下層の挙動502Nが最も高い優先度の挙動である。最上層にある挙動502Aは最も低い優先度の挙動である。モデルベースのコントローラ状態データ516の候補バージョンは、各起動された挙動に関連付けられた運動モデル506によって特定することができる。より高い(より低い優先度の)レイヤの運動モデル506に従って特定された候補のモデルベースのコントローラ状態データ516は、無視されるか、ブロックされるか、またはサブサンプションアーキテクチャでより低い(より高い優先度の)レイヤの挙動502によって特定された候補のモデルベースのコントローラ状態データ516によって置き換えることができる。
【0065】
いくつかの実装形態では、起動された挙動502は互いに並行して評価することができる。各起動された挙動502は、その関連付けられた運動モデル506、ならびに入力されたコントローラ測定データ510、HMD状態データ512、および画像ベースのコントローラ状態データ514に基づいて、モデルベースのコントローラ状態データ516の候補バージョンを特定することができる。起動された挙動502の中で最も高い優先度を有するレイヤ内の運動モデル506によって特定されたモデルベースのコントローラ状態データ516の候補バージョンは、非FOV追跡器344によって出力されるコントローラ状態データ520の最終バージョンとして使用することができる。
【0066】
挙動が起動されていない場合、非FOV追跡器344はパススルーとして機能し、FOV追跡器342によって特定され、非FOV追跡器344に入力として提供された画像ベースのコントローラ状態データ514は、非FOV追跡器344の出力されるコントローラ状態データ520として使用される。
【0067】
上記から理解されるように、コントローラ状態データ520は、最も高い優先度の起動された挙動に関連付けられた運動モデル506に基づいて特定される。挙動が起動されていない場合、コントローラ状態データ520は、画像ベースのコントローラ状態データ514に基づく。非FOV追跡器344によって出力されたコントローラ状態データ520は、コントローラ114のコントローラ姿勢を特定するために姿勢追跡器326によって使用することができる。
【0068】
いくつかの場合では、挙動502用の運動モデル506は、コントローラ測定データ510、HMD状態データ512、およびコントローラ状態データ514から利用可能な情報以外の情報を利用することができる。構成データ522はそのようなデータを記憶し提供することができる。たとえば、以下に記載されるように、いくつかの運動モデルは、モデルベースのコントローラ状態データ516用の位置データを特定するために、腕の平均長または頭部に対する胴体の平均位置を使用することができる。腕の平均長または頭部に対する胴体の平均位置は、運動モデル506によって使用するために構成データ516内に記憶することができる。
【0069】
図6は、本開示の態様による、いくつかの場合において、視界内で追跡可能でないハンドヘルドコントローラのコントローラ姿勢を特定するための方法の例示的な動作を示すフローチャート600である。フローチャート600に記載された例示的な動作は、周期的に、またはイベントに応答して実行することができる。たとえば、例示的な動作は、表示フレーム生成イベントに対する応答の一部として実行することができ、イベントは、人工現実システムに、HMD112上の表示用の表示フレームをレンダリングさせる。
【0070】
FOV追跡器は、HMD112の1つまたは複数の画像取込みデバイス138からの画像データ、およびコントローラ114からのコントローラ測定データを受信することができる(602)。さらに、画像データは、HMD112に外付けしたカメラまたはセンサによって提供される画像データを含むことができる。FOV追跡器は、画像データおよびコントローラ測定データを使用して、画像ベースのコントローラ状態データを特定することができる(604)。
【0071】
FOV追跡器は、コントローラ114が画像データ内で追跡可能であるかどうかを判定することができる(606)。いくつかの態様では、FOV追跡器は、コントローラ114の少なくとも3つのエミッタ208が画像データ内で検出可能であり、コントローラが静止していないとコントローラ測定データが示す場合、コントローラ114が画像データ内で追跡可能であると判定することができる。いくつかの態様では、FOV追跡器は、センサフュージョンを使用して、コントローラ114が画像データ内で追跡可能であるかどうかを判定することができる。
【0072】
コントローラ114が画像データ内で追跡可能であるとFOV追跡器が判定した場合(606のYES分岐)、コントローラ姿勢は、FOV追跡器によって特定された画像ベースのコントローラ状態データに基づいて特定することができる(610)。コントローラ114が画像データ内で追跡可能でないとFOV追跡器が判定した場合(606のNO分岐)、非FOV追跡器は、任意の非FOV挙動が起動されているかどうか、または非FOV起動条件が挙動に対して満たされているかどうかを判定する(608)。非FOV追跡器は、コントローラ測定データ、HMD状態データ、および/または画像ベースのコントローラ状態データに基づいて、任意の挙動起動条件が満たされているかどうかを判定することができる。起動条件が満たされておらず、挙動が現在起動されていない場合(608のNO分岐)、次いで、コントローラ姿勢は、FOV追跡器によって特定された画像ベースのコントローラ状態データに基づいて特定することができる(610)。
【0073】
少なくとも1つの挙動が起動されているか、または少なくとも1つの起動条件が満たされている場合(608のYES分岐)、非FOV追跡器は、起動された各挙動に関連付けられた運動モデルを評価することにより、候補のモデルベースのコントローラ状態データを特定することができる(612)。運動モデルは、必要に応じて、入力されたコントローラ測定データ、HMD状態データ、および画像ベースのコントローラ状態値にアクセスして、挙動に関連付けられた候補のモデルベースのコントローラ状態データを特定することができる。コントローラ姿勢は、次いで、最も高い優先度の挙動に関連付けられた運動モデルによって生成された候補のモデルベースのコントローラ状態データに基づいて特定することができる(614)。
【0074】
姿勢追跡器は、コントローラが画像データ内で追跡可能である場合、または運動モデルが起動されていない場合、FOV追跡器によって特定された画像ベースのコントローラ状態データに基づいてコントローラ姿勢を特定することができる。姿勢追跡器は、コントローラが画像データ内で(コントローラ姿勢を特定するために)追跡可能でなく、運動モデルが起動されている場合、非FOV追跡器によって特定されたモデルベースのコントローラ状態データに基づいてコントローラ姿勢を特定することができる。レンダリングエンジンは、特定されたコントローラ姿勢およびHMD姿勢に基づいて、人工現実コンテンツをレンダリングすることができる(616)。
【0075】
図7図10は、本開示の態様による、挙動を起動し、起動された挙動に関連付けられた運動モデルを評価するための例示的な方法の動作を示すフローチャートである。
【0076】
図7は、コントローラがHMDの近くにあるが、HMDにくっつけられていないコーナーケースにおいてコントローラ姿勢を特定するための方法の例示的な動作を示すフローチャートである。このケースのための起動条件は、コントローラがARシステムの画像取込みデバイスの視界内で追跡可能でないと判定することを含む(704のNO分岐)。上述されたように、いくつかの態様では、コントローラが任意のカメラもしくはセンサの視界内に位置していない場合、コントローラが別のオブジェクトによって視界内で塞がれている場合、コントローラの位置が信用できない場合、またはコントローラが静止している場合、コントローラは視界内で追跡可能でない。図7のコーナーケースのためのさらなる起動条件は、コントローラとHMDとの間の距離が、事前定義されるかまたは構成可能なしきい値よりも小さいことである(706のNO分岐)。両方の起動条件が満たされた場合、コーナーケースに関連付けられた挙動および運動モデルが起動される。コントローラがARシステムの画像取込みデバイスの視界内で追跡可能である場合(704のYES分岐)、またはコントローラとHMDとの間の距離が構成可能なしきい値よりも大きい場合(706のYES分岐)、このコーナーケースのための起動条件は満たされず、方法は終了する。
【0077】
コーナーケースの挙動に関連付けられた運動モデルは、挙動が仮想の手またはコントローラに関連付けられた他のオブジェクトを仮想の肘の位置の周りに旋回させるために、候補のモデルベースのコントローラ状態データ内の位置の値を設定する(708)。仮想世界空間内の仮想の肘の位置は、構成データに記憶された事前定義されるかまたは構成可能な前腕の長さ、ならびに最新の既知のコントローラ位置およびヘッドセット位置に基づいて特定することができる。このケースにおける運動モデルは、「コントローラオンスティック」モデルと呼ぶことができ、ここで、スティックはユーザの腕を表す仮想の腕であり、仮想の肘はスティックの一方の端部にあり、コントローラの位置に関連付けられた仮想の手はスティックの他方の端部にある。
【0078】
いくつかの態様では、コーナーケースのための停止条件は、コントローラが視界内で追跡可能になったときにコントローラに対する追跡を再び取得することを含むことができる。
【0079】
図12Aおよび図12Bは、図7を参照して上述されたコーナーケースの例示的な物理的環境を示す。図12Aは、HMD112を装着し、HMD112のしきい値距離1202内で手132にコントローラ114を保持するユーザの正面図である。図12Bはユーザの側面図である。図12Bにおいて見ることができるように、コントローラ114はHMD112上のカメラの視界130内にない。この例では、ユーザは、同じ仮想環境内の別のユーザの注意を迎えるかまたは引き付けるために、自分の腕を振っている可能性がある。仮想の手および腕は、運動モデルに基づいて振るように見えるようにレンダリングされてもよい。振る運動は、仮想の手を肘の周りに旋回させることによってレンダリングすることができる。
【0080】
図8は、第1のコントローラが視界内にあるが、第2のコントローラによって塞がれており、第1のコントローラが第2のコントローラに「くっつけられて」いないコーナーケースにおいてコントローラ姿勢を特定するための方法の例示的な動作を示すフローチャートである。このケースのための起動条件は、第1のコントローラが視界内にないと判定することを含む(804のNO分岐)。コーナーケースのためのさらなる起動条件は、第1のコントローラと第2のコントローラとの間の距離が、事前定義されるかまたは構成可能なしきい値よりも小さいことである(806のYES分岐)。またさらなる起動条件は、第1のコントローラの加速度値(コントローラ測定データから特定された)が第2のコントローラの加速度値と同期していないことである(808のYES分岐)。上記の起動条件のすべてが満たされた場合、コーナーケースに関連付けられた運動モデルおよび挙動が起動される。コントローラがARシステムの画像取込みデバイスの視界内で追跡可能である場合(804のYES分岐)、第1のコントローラと第2のコントローラとの間の距離が構成可能なしきい値よりも大きい場合(806のNO分岐)、または第1のコントローラの加速度値が第2のコントローラの加速度値と同期している場合(808のNO分岐)、このコーナーケースのための起動条件は満たされず、次いで方法は終了する。
【0081】
コーナーケースの挙動に関連付けられた運動モデルは、第1のコントローラに関する候補のモデルベースのコントローラ状態データ内の位置の値を、ユーザの仮想胴体の位置に固定する(810)。仮想胴体の位置は、胴体とHMDとの間の平均距離、HMDの姿勢、およびコントローラの向きを提供する構成データに基づいて特定することができる。
【0082】
いくつかの態様では、コーナーケースのための停止条件は、仮想(第2の)コントローラがカメラもしくはセンサの視界から離れること、または塞がれた(第1の)コントローラが視界内で追跡可能になることを含むことができる。
【0083】
図13Aおよび図13Bは、図8を参照して上述されたコーナーケースの場合の例示的な物理的環境および例示的な人工現実コンテンツを示す。図13Aは、HMD112を装着し、手132Aにコントローラ114Aを保持し、手132Bにコントローラ114Bを保持するユーザの正面図である。コントローラ114Bは、手132Aおよび/またはコントローラ114Aによって塞がれている。この例では、ユーザは仮想腕時計1302上のメニューと対話することができる。ユーザがメニューを操作するために自分の手を動かすにつれて、第1のコントローラ114Aおよび第2のコントローラ114Bは、異なる加速度値を経験し、したがって互いにくっつけられていない。
【0084】
図13Bは、図13Aに示された例のための例示的な人工現実コンテンツ122を示す。このコーナーケースの挙動用の運動モデルは、コントローラ114Bが塞がれ、コントローラ114Aと同期して動いていないときに、仮想の手1324Bが仮想胴体1304から固定距離にレンダリングされるようにする。
【0085】
図9は、第1のコントローラが視界内にあるが、第2のコントローラによって塞がれ、第2のコントローラにくっつけられている追跡コーナーケースにおいてコントローラ姿勢を特定するための方法の例示的な動作を示すフローチャートである。このケースのための起動条件は、第1のコントローラが視界内で追跡可能でないと判定することを含む(904のNO分岐)。コーナーケースのためのさらなる起動条件は、第1のコントローラと第2のコントローラとの間の距離が、事前定義されるかまたは構成可能なしきい値よりも小さいことである(906のYES分岐)。またさらなる起動条件は、第1のコントローラの加速度値(コントローラ測定データから特定された)が第2のコントローラの加速度値と同期していることである(908のYES分岐)。上記の起動条件のすべてが満たされた場合、コーナーケースのための運動モデルおよび挙動が起動される。コントローラがARシステムの画像取込みデバイスの視界内で追跡可能である場合(904のYES分岐)、第1のコントローラと第2のコントローラとの間の距離が構成可能なしきい値よりも大きい場合(906のNO分岐)、または第1のコントローラの加速度値が第2のコントローラの加速度値と同期していない場合(908のNO分岐)、このコーナーケースのための起動条件は満たされず、次いで方法は終了する。
【0086】
コーナーケースの挙動に関連付けられた運動モデルは、第1のコントローラに関する候補のモデルベースのコントローラ状態データ内の位置の値を、第2のコントローラの位置に対する固定位置に設定する(910)。
【0087】
いくつかの態様では、コーナーケースのための停止条件は、仮想(第2の)コントローラがカメラもしくはセンサの視界から離れること、または塞がれた(第1の)コントローラが視界内で追跡可能になること、または第1のコントローラの加速度値と第2のコントローラの加速度値がもはや同期していないを含むことができる。
【0088】
図14Aおよび図14Bは、図9を参照して上述されたコーナーケースの例示的な物理的環境および例示的な人工現実コンテンツを示す。図14Aは、HMD112を装着し、手132Aにコントローラ114Aを保持し、手132Bにコントローラ114Bを保持するユーザの側面図である。コントローラ114Bは、手132Aおよび/またはコントローラ114Aによって塞がれている場合がある。人工現実コンテンツは、ユーザが両手のグリップを使用して標的に向かって仮想銃を撃つシューティングゲームを含んでもよい。ユーザの手が両方とも同じオブジェクト(すなわち、銃)を握っており、したがって互いにくっつけられていると判定されるので、ユーザが標的を狙うために自分の手を動かすにつれて、第1のコントローラ114Aおよび第2のコントローラ114Bは実質的に同じ加速度値を生成する。
【0089】
図14Bは、図14Aに示された例のための例示的な人工現実コンテンツ122を示す。この例では、ユーザは仮想標的1404に仮想銃1402を向けている。このコーナーケースの挙動用の運動モデルは、仮想の手1424Aが仮想の手1424Bの位置に対する固定位置にレンダリングされるようにする。
【0090】
図10は、コントローラの位置が信用できないか、または視界内で静止しているコーナーケースにおいてコントローラ姿勢を特定するための方法の例示的な動作を示すフローチャートである。適度に信用できる位置の判定を可能にするにはコントローラがカメラから離れすぎた位置にある場合、コントローラの位置は信用できなくなる可能性がある。さらに、コントローラが静止している(たとえば、卓上または他の静止位置に配置された)場合、コントローラの位置は信用できなくなる可能性がある。この場合、運動センサデバイスからのノイズは、コントローラが実際には静止しているべきときに動いているように見せる可能性がある。どちらの場合にも、ユーザは、ジッタ(コントローラに関連付けられた仮想オブジェクトの位置が実際の場所の近くで振動する)またはフライアウェイゼンスナップ(コントローラに関連付けられた仮想オブジェクトが飛び去り、次いで実際の場所にすばやくジャンプする)を見るかもしれない。このケースのための起動条件は、コントローラの運動センサからの加速度値の直近のセットの絶対値が、事前定義されるかまたは構成可能なしきい値よりも小さいと判定することを含む(1004のYES分岐)。コーナーケースのためのさらなる起動条件は、運動センサの値のバッファリングされたセットの分散が、事前定義されるかまたは構成可能なしきい値よりも小さいことである(1006のYES分岐)。上記の起動条件の両方が満たされた場合、「静止中のコントローラ」コーナーケースのための運動モデルおよび挙動が起動される。コントローラの運動センサからの加速度値の直近のセットが、事前定義されるかもしくは構成可能なしきい値よりも大きい(1004のNO分岐)か、または運動センサの値のバッファリングされたセットの分散が、事前定義されるかもしくは構成可能なしきい値よりも大きい(1006のNO分岐)場合、このコーナーケースのための起動条件は満たされず、次いで方法は終了する。
【0091】
コーナーケースの挙動に関連付けられた運動モデルは、コントローラに関する候補のモデルベースのコントローラ状態データ内の位置の値を、世界基準フレーム内の固定位置に固定する(1008)。
【0092】
いくつかの態様では、コーナーケースのための停止条件は、バッファリングされた運動センサのサンプルの分散が、所定のもしくは構成可能なしきい値を超えること、または直近の運動センサの値のサンプルの絶対値が、所定のもしくは構成可能なしきい値を超えることを含むことができる。
【0093】
図11は、本開示の態様による、ハンドヘルドコントローラが視界内に再び入ったときにジッタを削減するための方法の例示的な動作を示すフローチャートである。姿勢追跡器は、コントローラが前の表示フレームの間に視界内で追跡可能であったかどうかを判定することができる(1104)。コントローラが前の表示フレームの間に視界内で追跡可能であった場合(1104のYES分岐)、コントローラは視界に再び入っていない。したがって、ジッタ削減動作は必要でなく、方法は終了する。
【0094】
コントローラが前の表示フレームの間に視界内で追跡可能でなかった場合(1104のNO分岐)、姿勢追跡器は、コントローラが現在の表示フレームに関して視界内で追跡可能であるかどうかを判定することができる(1106)。コントローラが前の表示フレーム内で追跡可能でなく、コントローラが現在の表示フレーム内で追跡可能でない場合、ジッタ削減動作は必要でなく、方法は終了する(1106のNO分岐)。コントローラが前の表示フレーム内で追跡可能でなく、コントローラが現在の表示フレーム内で追跡可能である場合、コントローラは視界に再び入っている(1106のYES分岐)。姿勢追跡器は、その位置がコントローラに対して決定された仮想オブジェクトが「ジャンプ」位置に見えることを防止するために、補間を使用して一連の表示フレームのためのコントローラ姿勢を特定することができる(1108)。詳細には、姿勢追跡器は、コントローラが視界の外側にあったときに非FOV追跡器によって特定されたコントローラの位置と、コントローラが視界に再び入ったときにFOV追跡器によって特定されたコントローラの位置との間を補間することにより、コントローラ姿勢を特定することができる。
【0095】
図15Aおよび図15Bは、図11の方法によって実行される補間の一例を示す。図15Aは、第1のコントローラ114AがHMD112のカメラまたはセンサの視界130内にない物理的環境の初期状態を示す。一例として、HMD112のユーザは、人工現実システム上に提供された仮想ボクシングゲームに参加している場合がある。
【0096】
図15Bは、第1のコントローラ114AがHMD112の視界130に再び入った物理的環境の後続状態を示す。たとえば、ユーザは、コントローラ114を保持する手で「パンチ」を実行することができる。図15Bに示された例では、非FOV追跡器は、コントローラ114Aの位置をP1に特定しており、FOV追跡器はコントローラ114Aの位置をP2に特定する。補間がない場合、手132Aを表す仮想の手の経路は、後続の表示フレーム内のP3に進む前に、P1からP2にジャンプするように見える可能性がある。図11に上述された方法を使用して、姿勢追跡器は、一連の表示フレームにわたって視界130の外から視界130の中までの仮想の手の遷移を円滑化するP1とP3との間の経路を補間することができる。図15Bに示された例では、補間されていない経路がポイントP1、P2、およびP3を接続する実線によって表されている。補間された経路は、P1とP2を接続する破線によって表されている。補間の速度および持続期間は、人工現実コンテンツ内の活動の測定または推定に基づいて特定することができる。
【0097】
本開示の様々な態様の上記の説明は、人工現実システムのコンテキストで提示されている。本明細書に記載された技法は、画像または他のセンサデータを使用して、カメラまたはセンサの視界の中および外を移動することができるオブジェクトの位置を特定する他のタイプのシステムにおいても実施することができる。
【0098】
本開示に記載された技法は、少なくとも部分的に、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せに実装されてもよい。たとえば、記載された技法の様々な態様は、1つまたは複数のマイクロプロセッサ、DSP、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または任意の他の等価の集積論理回路もしくは個別論理回路、ならびにそのような構成要素の任意の組合せを含む、1つまたは複数のプロセッサ内に実装されてもよい。「プロセッサ」または「処理回路」という用語は、概して、単独の、もしくは他の論理回路と組み合わせる前述の論理回路、または任意の他の等価の回路のいずれかを指すことができる。ハードウェアを備える制御ユニットはまた、本開示の技法のうちの1つまたは複数を実行することができる。
【0099】
そのようなハードウェア、ソフトウェア、およびファームウェアは、本開示に記載された様々な動作および機能をサポートするために、同じデバイス内または別個のデバイス内に実装されてもよい。加えて、記載されたユニット、モジュール、または構成要素のいずれかは、個別だが相互動作可能な論理デバイスと一緒に、または別々に実装されてもよい。モジュールまたはユニットとしての様々な特徴の描写は、様々な機能的態様を強調するものであり、必ずしも、そのようなモジュールまたはユニットが別個のハードウェアまたはソフトウェアの構成要素によって実現されるべきであることを意味しない。むしろ、1つまたは複数のモジュールまたはユニットに関連付けられた機能は、別個のハードウェアもしくはソフトウェアの構成要素によって実行されるか、または共通もしくは別個のハードウェアもしくはソフトウェアの構成要素内に統合されてもよい。
【0100】
本開示に記載された技法はまた、命令を含むコンピュータ可読記憶媒体などのコンピュータ可読媒体内で具現化または符号化されてもよい。コンピュータ可読記憶媒体内で具現化または符号化された命令は、たとえば、命令が実行されたときに、プログラマブルプロセッサまたは他のプロセッサに方法を実行させることができる。コンピュータ可読記憶媒体には、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリ、ハードディスク、CD-ROM、フロッピーディスク、カセット、磁気媒体、光学媒体、または他のコンピュータ可読媒体が含まれてもよい。
【0101】
本明細書において様々な例として記載されたように、本開示の技法は、人工現実システムを含むか、または人工現実システムと連携して実装されてもよい。記載されたように、人工現実は、たとえば、仮想現実(VR)、拡張現実(AR)、混合現実(MR)、ハイブリッド現実、またはそれらの何らかの組合せおよび/もしくは派生物を含む場合がある、ユーザへの提示の前に何らかの方式で調整されている現実の一形態である。人工現実コンテンツは、取り込まれたコンテンツ(たとえば、実世界の写真)と組み合わされた完全生成コンテンツまたは生成コンテンツを含んでもよい。人工現実コンテンツは、映像、音声、触覚フィードバック、またはそれらの任意の組合せを含んでもよく、それらのいずれかは、単一のチャネルまたは複数のチャネル(視聴者への3次元効果を生成する立体ビデオなどの)で提示されてもよい。さらに、いくつかの実施形態では、人工現実は、たとえば、人工現実でコンテンツを作成するために使用され、かつ/または人工現実で使用される(たとえば、人工現実内で活動を実行する)アプリケーション、製品、アクセサリ、サービス、またはそれらの任意の組合せと関連付けられてもよい。人工現実コンテンツを提供する人工現実システムは、ホストコンピュータシステムに接続されたヘッドマウントディスプレイ(HMD)、スタンドアロンのHMD、モバイルデバイスもしくはコンピューティングシステム、または1人もしくは複数の視聴者に人工現実コンテンツを提供することが可能な任意の他のハードウェアプラットフォームを含む、様々なプラットフォーム上に実装されてもよい。
図1A
図1B
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12A-12B】
図13A-13B】
図14A-14B】
図15A-15B】
【国際調査報告】