(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-21
(45)【発行日】2024-10-29
(54)【発明の名称】オブジェクトの選択の方法及びシステム
(51)【国際特許分類】
G06T 15/06 20110101AFI20241022BHJP
G06F 3/01 20060101ALI20241022BHJP
G06F 3/0346 20130101ALI20241022BHJP
【FI】
G06T15/06
G06F3/01 510
G06F3/0346 425
(21)【出願番号】P 2023536829
(86)(22)【出願日】2021-11-16
(86)【国際出願番号】 CN2021131024
(87)【国際公開番号】W WO2022127479
(87)【国際公開日】2022-06-23
【審査請求日】2023-07-25
(32)【優先日】2020-12-18
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ファン,スー ウエン
(72)【発明者】
【氏名】カーン,タスリム アルフィン
(72)【発明者】
【氏名】リ,ウエイ
【審査官】松永 隆志
(56)【参考文献】
【文献】米国特許出願公開第2019/0235641(US,A1)
【文献】特開2018-055644(JP,A)
【文献】国際公開第2020/066682(WO,A1)
【文献】米国特許出願公開第2020/0226814(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/06
G06F 3/01
G06F 3/0346
(57)【特許請求の範囲】
【請求項1】
オブジェクト又は位置を選択する方法であって、
少なくとも1つのセンサによって、第1ポジション及び第1方向を含む第1光線の第1原点と、第2ポジション及び第2方向を含む第2光線の第2原点とを取得すること
であり、前記第1原点及び前記第2原点は、ユーザの異なる身体部分に夫々関連する、ことと、
前記第1方向において前記第1ポジションで前記第1原点から投じられた前記第1光線と、
前記第1光線が投じられているときに前記第2方向において前記第2ポジションで前記第2原点から投じられた前記第2光線との交点を取得することと、
前記交点に基づいて、選択されたオブジェクト又は選択された位置を識別することと、
前記選択されたオブジェクト又は前記選択された位置の識別を出力することと
を有する方法。
【請求項2】
前記選択されたオブジェクト又は前記選択された位置は、3Dエクステンデッドリアリティ(XR)環境内にあり、前記方法は、
前記第1光線又は前記第2光線の少なくとも一方が交わる前記3D XR環境内の1つ以上の交差仮想オブジェクトを識別することと、
前記1つ以上の交差仮想オブジェクトを半透明にするよう前記1つ以上の交差仮想オブジェクトの不透明度を調整することと
を更に有する、
請求項1に記載の方法。
【請求項3】
前記第1光線と前記第2光線との前記交点を取得することは、前記第1光線と前記第2光線との実際の交差点を計算することを含む、
請求項1又は2に記載の方法。
【請求項4】
前記第1光線と前記第2光線との前記交点を取得することは、前記第1光線と前記第2光線との投影された交差点を計算することを含み、前記第1光線及び前記第2光線はスキューである、
請求項1乃至3のうちいずれか一項に記載の方法。
【請求項5】
前記投影された交差点を計算することは、
前記第1光線と前記第2光線との間の最短ベクトルを計算することと、
前記最短ベクトル沿いの点を前記投影された交差点として計算することと
を含む、
請求項4に記載の方法。
【請求項6】
前記最短ベクトルの大きさが事前定義された閾値内になると決定した後に前記最短ベクトル沿いの前記点を計算することを更に有する、
請求項5に記載の方法。
【請求項7】
前記事前定義された閾値は、前記第1光線の前記第1原点又は前記第2光線の前記第2原点の少なくとも一方と前記投影された交差点との間の距離に関連する、
請求項6に記載の方法。
【請求項8】
前記選択されたオブジェクト又は前記選択された位置を識別することは、
1つ以上の暫定的に選択されたオブジェクト又は選択された位置を前記交点に基づいて識別することと、
前記1つ以上の暫定的に選択されたオブジェクト又は選択された位置の中からの1つの選択されたオブジェクト又は選択された位置の確認を受け取ることと
を有する、
請求項1乃至7のうちいずれか一項に記載の方法。
【請求項9】
前記1つ以上の暫定的に選択されたオブジェクト又は選択された位置を識別することは、
前記交点で、調整可能な所定の半径を有する球を投影することと、
前記投影された球に一致する前記1つ以上の暫定的に選択されたオブジェクト又は選択された位置を識別することと
を有する、
請求項8に記載の方法。
【請求項10】
前記第1光線の前記第1原点は、前記少なくとも1つのセンサによって、
前記ユーザの第1身体部分の追跡された第1ポジション、向き又は姿勢に基づき取得され、
前記第2光線の前記第2原点は、少なくとも1つの同じ又は異なるセンサによって、前記ユーザの第2身体部分の追跡された第2ポジション、向き又は姿勢に基づき取得される、
請求項1乃至9のうちいずれか一項に記載の方法。
【請求項11】
前記選択されたオブジェクトは、3Dエクステンデッドリアリティ(XR)環境内でレンダリングされた仮想オブジェクトであるか、前記3D XR環境内の現実世界のオブジェクトであるか、又は物理環境内の現実世界のオブジェクトである、
請求項1乃至10のうちいずれか一項に記載の方法。
【請求項12】
前記少なくとも1つのセンサは、
ハンドヘルドデバイスのセンサ、
ウェアラブルデバイスのセンサ、
スマートデバイスのセンサ、又は
トラッキングシステムのセンサ
のうちの少なくとも1つを含む、
請求項1乃至11のうちいずれか一項に記載の方法。
【請求項13】
機械により実行可能な命令を記憶しているメモリへ結合される処理デバイスを有するコンピューティングシステムであって、
前記命令は、前記処理デバイスによって実行される場合に、前記コンピューティングシステムに、
少なくとも1つのセンサによって、第1ポジション及び第1方向を含む第1光線の第1原点と、第2ポジション及び第2方向を含む第2光線の第2原点とを取得すること
であり、前記第1原点及び前記第2原点は、ユーザの異なる身体部分に夫々関連する、ことと、
前記第1方向において前記第1ポジションで前記第1原点から投じられた前記第1光線と、前記第2方向において前記第2ポジションで前記第2原点から
、前記第1光線が投じられているときに投じられた前記第2光線との交点を取得することと、
前記交点に基づいて、選択されたオブジェクト又は選択された位置を識別することと、
前記選択されたオブジェクト又は前記選択された位置の識別を出力することと
を実行させる、コンピューティングシステム。
【請求項14】
前記選択されたオブジェクト又は前記選択された位置は、3Dエクステンデッドリアリティ(XR)環境内にあり、前記命令は更に、前記コンピューティングシステムに、
前記第1光線又は前記第2光線の少なくとも一方が交わる前記3D XR環境内の1つ以上の交差仮想オブジェクトを識別することと、
前記1つ以上の交差仮想オブジェクトを半透明にするよう前記1つ以上の交差仮想オブジェクトの不透明度を調整することと
を実行させる、
請求項13に記載のコンピューティングシステム。
【請求項15】
前記命令は、前記コンピューティングシステムに、前記第1光線と前記第2光線との実際の交差点を計算することによって前記第1光線と前記第2光線との前記交点を取得させる、
請求項13又は14に記載のコンピューティングシステム。
【請求項16】
前記命令は、前記コンピューティングシステムに、前記第1光線と前記第2光線との投影された交差点を計算することによって前記第1光線と前記第2光線との前記交点を取得させ、前記第1光線及び前記第2光線はスキューである、
請求項13乃至15のうちいずれか一項に記載のコンピューティングシステム。
【請求項17】
前記第1光線の前記第1原点は、前記少なくとも1つのセンサによって、
前記ユーザの第1身体部分の追跡された第1ポジション、向き又は姿勢に基づき取得され、
前記第2光線の前記第2原点は、少なくとも1つの同じ又は異なるセンサによって、前記ユーザの第2身体部分の追跡された第2ポジション、向き又は姿勢に基づき取得される、
請求項13乃至16のうちいずれか一項に記載のコンピューティングシステム。
【請求項18】
前記選択されたオブジェクトは、3Dエクステンデッドリアリティ(XR)環境内でレンダリングされた仮想オブジェクトであるか、前記3D XR環境内の現実世界のオブジェクトであるか、又は物理環境内の現実世界のオブジェクトである、
請求項13乃至17のうちいずれか一項に記載のコンピューティングシステム。
【請求項19】
前記コンピューティングシステムは、
ヘッドマウンテッドディスプレイ(HMD)デバイス、
ウェアラブルデバイス、
ハンドヘルドデバイス、
スマートデバイス、
トラッキングシステム、又は
デスクトップデバイス
のうちの1つである、
請求項13乃至18のうちいずれか一項に記載のコンピューティングシステム。
【請求項20】
機械により実行可能な命令を記憶しているコンピュータ可読媒体であって、
前記命令は、コンピューティングシステムの処理デバイスによって実行される場合に、前記コンピューティングシステムに、請求項1乃至12のうちいずれか一項に記載の方法を実行させる、
コンピュータ可読媒体。
【請求項21】
コンピュータによって実行される場合に、前記コンピュータに、請求項1乃至12のうちいずれか一項に記載の方法を実行させる命令を含むコンピュータプログラム。
【請求項22】
請求項1乃至12のうちいずれか一項に記載の方法を実行する手段を有するデータ処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、エクステンデッドリアリティ環境における遠位オブジェクトの選択を含む、人間と電子デバイスとの相互作用のための方法及びシステムに関係がある。
【背景技術】
【0002】
エクステンデッドリアリティ(XR)は、人間であるユーザが、仮想である(つまり、コンピューティングシステムによって生成され、ユーザの現実の物理環境を反映していない)少なくともいくつかの感覚入力(例えば、視覚表示、オーディオサウンド、触覚フィードバック、など)を供給される種々の技術をカバーするよう意図される包括的な用語である。XRは、仮想現実(VR)、拡張現実(AR)、及び複合現実(MR)を含む技術をカバーする。このように、XRは、仮想のコンポーネント及び現実世界のコンポーネントを有する環境とユーザが相互作用する技術(例えば、AR又はMR)に加えて、全体的にコンピュータにより生成されている環境とユーザが相互作用する技術(例えば、VR)をカバーする。仮想環境はシーンと呼ばれることがある。
【0003】
従来のデスクトップ又はタッチスクリーンシステムと比較したときのXRシステムの課題は、ユーザインタラクションのためのオブジェクト(仮想オブジェクトを含む)の位置がユーザの直ぐ近くにも単一の2D平面にも制限されず、むしろ、ユーザを囲む3D空間内に空間的に位置付けられることである。特に、オブジェクトは、ユーザのリーチ距離(又はモータ空間)の外にある距離に位置付けられる可能性がある。そのようなオブジェクトは遠位オブジェクトと呼ばれ得る。遠位オブジェクトとのインタラクションは、通常、遠位選択から始まり、XRにおけるインタラクションの基礎となる。
【0004】
XR遠位選択のための現在の技術には、レイキャスティングがある。XR遠位選択のためのレイキャスティングの使用は、通常、ユーザのスタンドポイントからXRシーン内に仮想光線を投影することを伴う(キャスティングとも呼ばれる)。投じられた仮想光線がシーン内の遠位オブジェクトと交わるとき、そのオブジェクトは、暫定的に選択されたと見なされてよく、オブジェクトの選択は、ボタン押下、ジェスチャ、所定の時間の暫定的な選択の維持、又は他の技術により確認される。
【0005】
オブジェクト選択のための既存のレイキャスティング法の欠点には、ユーザにより近い他の仮想オブジェクトによって対象の遠位オブジェクトが部分的又は完全に遮られることがあり、これにより、投じられた仮想光線が対象の遠位オブジェクトに届くことが困難又は不可能にあることがあるという課題がある。ユーザは、ユーザのスタンドポイントを変えることによってレイキャスティングの原点を変えるよう求められる場合があり、あるいは、ユーザは、最初に遮蔽オブジェクト選択して遮蔽オブジェクトを動かすよう求められる場合があり、いずれも、ユーザにとって退屈又は不満である可能性がある。いくつかの既存のXRシステムは、仮想光線が遮蔽仮想オブジェクトを通して投じられることを可能にすることによって、遮蔽オブジェクトの問題を解決しようと試みるかもしれない。しかし、そのような解決策は、光線が所望の対象オブジェクトを選択ために投じられるべき深さ(又は距離)に関する情報をシステムが有さないことがあるという問題につながる。通常、所望の対象オブジェクトが光線によって到達されるまで光線深さを変えるようユーザがコントローラをスクロールすることなど、追加の曖昧さ回避ステップが、光線の有限な深さを正確に選択するために必要とされる。これもユーザにとって退屈である可能性があり、種々の深さでの多種多様なオブジェクトの選択にとって実際的でない可能性がある。
【0006】
オブジェクト選択のための既存のレイキャスティング法のもう1つの欠点は、ユーザからある角度で光線が投じられる場合に、原点でのレイキャスティングの角度のわずかな変化が遠位位置でのポジションの大きい変化になり得ることである。これは、遠位オブジェクトを選択しようと試みるときに正確度の悪化及び精度の悪化につながる可能性がある。いくつかのレイキャスティング法は、投じられた光線の角度に対応する円錐を投影して、投影された円錐内の全てのオブジェクトを選択することによって、この課題に対処しようとする。先と同じく、追加の曖昧さ回避ステップが、特定の所望のオブジェクトを選択するために必要とされる。これは、特に、仮想オブジェクトがXR環境内で密に配置されている場合に、退屈であり非効率であり得る。
【0007】
同様の課題は、非XR環境(つまり、仮想オブジェクトがない物理環境)におけるオブジェクト選択を可能にするユーザインターフェースを提供する際に直面される。例えば、多くのユーザは、現在、コンピュータ対応可能な現実世界のオブジェクト(スマートオブジェクト又はスマートデバイスとも呼ばれる)を自宅に持っている。コンピュータ対応可能なオブジェクトを選択する(又は別なふうに相互作用する)典型的な方法には、オブジェクトを手動でアクティブ化すること(例えば、電源スイッチをオンすること)、ソフトウェアアプリケーションによりオブジェクトを選択すること、又はボイスコマンドを使用することがある。しかし、コンピュータ対応可能なオブジェクトの手動によるアクティブ化は、ユーザがオブジェクトの位置まで移動することを必要とすることがあり、これは時間がかかり及び/又は退屈である可能性あり、ソフトウェアアプリケーションによるオブジェクトの選択は、特定のソフトウェアメニューへのナビゲーションを必要とすることがあり、これも時間がかかり及び/又は退屈である可能性があり、ボイスコマンドの使用は、全ての環境で適切なわけでない可能性がある(例えば、ユーザは、聞かれたくないかもしれず、あるいは、ボイスコマンドが不明りょうになる騒々しい環境にいるかもしれない)。
【0008】
従って、XR環境におけるオブジェクトの選択を含む、オブジェクトのより正確かつ効率的な選択のための方法を及びシステムを適用することが有用であり得る。
【発明の概要】
【0009】
様々な例において、本開示は、オブジェクト又は位置のより正確かつ時間効率の良い選択を可能にする方法及びシステムについて記載する。開示されている方法及びシステムは、XR環境における又は物理環境におけるオブジェクトの選択を可能にする。開示されている方法及びシステムは、少なくとも2つの異なる原点からのレイキャスティングを使用することによって、非対象オブジェクトによる遮蔽の問題及び精度の欠如の問題を回避する。3D環境における光線の実際の交点(光線がスキューでない場合)又は投影された交点(光線がスキューである場合)が、選択されるオブジェクト又は位置を決定するために使用される。追加の曖昧さ回避ステップは、正確に選択されたオブジェクト又は位置を決定するために必要とされなくてもよい。選択は、暫定的な選択であってよく、更なるプロセス(例えば、確認ジェスチャ若しくは確認入力の受け取り、又はタイマの満了)が、オブジェクト又は位置の選択を確認するために使用されてもよい。これは、XR又は物理環境におけるオブジェクト又は位置のユーザ選択がより少ないユーザ入力により受け取られ得るので、ユーザインタラクションのより高速な処理を可能にするという技術的効果をもたらす。
【0010】
XR環境内で実装されるいくつかの例で、投じられた光線のより容易な視覚化を可能にするために、投じられた各光線の経路が交わる仮想オブジェクトは、より低い不透明度でレンダリングされてよい。仮想オブジェクトの不透明度は、光線方向の変化(例えば、ユーザが投じられた光線の原点を変える場合)に応答して動的に調整されてよい(例えば、半透明にされる)。選択された仮想オブジェクトのレンダリングも動的に調整されてよい(例えば、異なる色でレンダリングされる)。これは、XR環境が独自の方法でレンダリングされるという技術的効果をもたらし、これにより、ユーザは、如何なる遮蔽仮想オブジェクトにも関係なく、選択されたオブジェクト又は位置を視覚化することができる。
【0011】
本開示の例は、XRシステム(ARシステム、VRシステム及び/又はMRシステム)はもちろん、ハンドヘルドデバイス(例えば、スマートフォン、タブレット、など)、ウェアラブルデバイス(例えば、スマートグラス、スマートウォッチ、スマートリング、など)、及び/又はデスクトップコンピューティングシステムなどの非XRシステムでも実装されてよい。3D環境におけるオブジェクト又は位置の選択を伴う如何なるシステムも、本開示の例から恩恵を受け得る。
【0012】
いくつかの例で、本開示は、オブジェクトを選択する方法について記載する。方法は、少なくとも1つのセンサによって、第1ポジション及び第1方向を含む第1光線の第1原点と、第2ポジション及び第2方向を含む第2光線の第2原点とを取得することと、第1原点から投じられた第1光線と第2原点から投じられた第2光線との交点を決定することと、決定された交点に基づいて、選択されたオブジェクト又は選択された位置を識別することと、選択されたオブジェクト又は選択された位置の識別を出力することとを含む。
【0013】
上記の例のいずれかで、選択されたオブジェクト又は選択された位置は、エクステンデッドリアリティ(XR)環境内にあってよく、方法は、第1光線又は第2光線の少なくとも一方が交わるXR環境内の1つ以上の交差仮想オブジェクトを識別することと、1つ以上の交差仮想オブジェクトを半透明にするよう1つ以上の交差仮想オブジェクトの不透明度を調整することとを含んでもよい。
【0014】
上記の例のいずれかで、第1光線と第2光線との交点を決定することは、第1光線と第2光線との実際の交差点を計算することを含んでよい。
【0015】
上記の例のいずれかで、第1光線と第2光線との交点を決定することは、第1光線と第2光線との投影された交差点を計算することを含んでよく、第1光線及び第2光線はスキューである。
【0016】
上記の例のいずれかで、投影された交差点を計算することは、第1光線と第2光線との間の最短ベクトルを計算することと、最短ベクトル沿いの点を投影された交差点として計算することとを含んでよい。
【0017】
上記の例のいずれかで、方法は、最短ベクトルの大きさが事前定義された閾値内になると決定した後に最短ベクトル沿いの点を計算することを含んでよい。
【0018】
上記の例のいずれかで、選択されたオブジェクトを識別することは、決定された交点に基づいて、1つ以上の暫定的に選択されたオブジェクトを識別することと、1つ以上の暫定的に選択されたオブジェクトの中からの1つの選択されたオブジェクトの確認を受け取ることとを含んでよい。
【0019】
上記の例のいずれかで、1つ以上の暫定的に選択されたオブジェクトを識別することは、決定された交点から所定の半径を有する球を投影することと、投影された球に一致する1つ以上の暫定的に選択されたオブジェクトを識別することとを含んでよい。
【0020】
上記の例のいずれかで、第1原点は、少なくとも1つのセンサによって、ユーザの第1身体部分の追跡された第1ポジション、向き又は姿勢に基づき取得されてよく、第2原点は、少なくとも1つの同じ又は異なるセンサによって、ユーザの第2身体部分の追跡された第2ポジション、向き又は姿勢に基づき取得されてよい。
【0021】
上記の例のいずれかで、第1身体部分及び第2身体部分は夫々、ユーザの頭、第1の手、又は第2の手から選択されてよく、第1身体部分及び第2身体部分は、ユーザの異なる身体部分であってよい。
【0022】
上記の例のいずれかで、選択されたオブジェクトは、エクステンデッドリアリティ(XR)環境内でレンダリングされた仮想オブジェクトであってよく、あるいは、XR環境内の現実世界のオブジェクトであってよい。
【0023】
上記の例のいずれかで、選択されたオブジェクトは、物理環境内の現実世界のオブジェクトであってよい。
【0024】
上記の例のいずれかで、少なくとも1つのセンサは、ハンドヘルドデバイスのセンサ、ウェアラブルデバイスのセンサ、スマートデバイスのセンサ、又はトラッキングシステムのセンサ、のうちの少なくとも1つを含んでよい。
【0025】
いくつかの例で、本開示は、機械により実行可能な命令を記憶しているメモリへ結合される処理デバイスを含むコンピューティングシステムについて記載する。命令は、処理デバイスによって実行される場合に、コンピューティングシステムに、上記の方法のいずれかを実行させる。
【0026】
上記の例のいずれかで、コンピューティングシステムは、ヘッドマウンテッドディスプレイ(HMD)デバイス、ウェアラブルデバイス、ハンドヘルドデバイス、スマートデバイス、トラッキングシステム、又はデスクトップデバイスであってよい。
【0027】
いくつかの例で、本開示は、機械により実行可能な命令を記憶しているコンピュータ可読媒体について記載する。命令は、コンピューティングシステムの処理デバイスによって実行される場合に、コンピューティングシステムに、上記の方法のいずれかを実行することによってエクステンデッドリアリティ(XR)においてオブジェクトを選択させる。
【図面の簡単な説明】
【0028】
これより、例として、本願の例示的な実施形態を示す添付の図面を参照する。
【0029】
【
図1A】ユーザが例示的なXR環境と相互作用することを説明するブロック図である。
【
図1B】非XR環境内のユーザを表すブロック図である。
【
図2】本開示の例に従って、例示的なコンピューティングシステムのいくつかのコンポーネントを表すブロック図である。
【
図3】本開示の例に従って、例示的な遠位選択サブシステムのブロック図である。
【
図4】本開示の例に従って、オブジェクト又は位置の選択のための方法の例を表すフローチャートである。
【
図5】本開示の例に従って、第1光線と第2光線との交点を決定する方法の例を表すフローチャートである。
【
図6】XR環境における
図4の方法の実施例を表す。
【
図7A】物理環境における
図4の方法の他の実施例を表す。
【
図7B】物理環境における
図4の方法の他の実施例を表す。
【
図7C】物理環境における
図4の方法の他の実施例を表す。
【0030】
類似の参照番号は、類似したコンポーネントを表すために異なる図で使用されている場合がある。
【発明を実施するための形態】
【0031】
様々な例で、本開示は、エクステンデッドリアリティ(XR)環境及び非XR環境(つまり、仮想オブジェクトがない物理環境)におけるユーザインタラクションに関係がある方法及びシステムについて記載する。開示されている例は、XR環境における遠位オブジェクトの選択のために使用されてよい。開示されている例は、物理環境における現実世界のオブジェクトの選択のために使用されてよい。開示されている例は、XR又は物理環境における任意の3D位置の選択にも使用されてよい。本開示の例は、拡張現実(AR)システム、仮想現実(VR)システム、又は複合現実(MR)システムを含む適切なXRシステムで実装されてよい。本開示の例は、非XRコンピューティングシステムでも実装されてよい。適切なコンピューティングシステム(XR対応可能であってもなくてもよい)の例には、数ある中でも特に、ウェアラブルデバイス(例えば、ヘッドマウンテッドディスプレイ(HMD)デバイス、スマートグラス、スマートウォッチ、スマートリング、など)及び/又はハンドヘルドデバイス(例えば、スマートフォン、タブレット、など)がある。本開示の例は、デスクトップコンピューティングシステム、ラップトップコンピューティングシステム、ワークステーション、スマートアプライアンス、トラッキングシステム、及び他のコンピューティングシステムなどの非ウェアラブルシステムでも実装されてよい。
【0032】
本開示は、ヘッドトラッキングデバイス(例えば、HMDデバイス)及び/又はハンドトラッキングデバイス(例えば、ハンドヘルドコントローラ、ウェアラブルデバイス(例えば、スマートウォッチ若しくはスマートリング)、スマートフォン、又はモーショントラッキングカメラ)を含むXRシステムとの関連で例を記載する。しかし、本開示はそのような実施形態に制限されないことが理解されるべきである。例えば、(例えば、頭部追跡又は眼球追跡のための任意の技術を使用して)第1光線の原点及び方向を決定しかつ(例えば、手追跡のための任意の技術を使用して)第2光線の原点及び方向を決定することが可能な任意のシステム(XRアプリケーションを実行しないシステムを含む)が、本開示の例を実装するために使用されてもよい。
【0033】
図1Aは、ユーザ10がXR環境20(XRシーンとも呼ばれる)と相互作用する例を示す。この例で、XR環境20は、コンピューティングシステム100によって生成された仮想環境である。例えば、コンピューティングシステム100は、
図1に示されるようにHMDなどのウェアラブルデバイスであってよい。他の例では、XR環境20は、非ウェアラブルコンピューティングシステム100(例えば、デスクトップコンピューティングシステム)によって生成されてもよい。
【0034】
XR環境20は仮想又は部分的に仮想であることが留意されるべきである。つまり、XR環境20内のオブジェクト22は、ユーザ10の実際の物理環境にはない仮想オブジェクトを含み、現実世界のオブジェクトも含んでよい(例えば、XR環境20がAR環境である場合)。現実世界のオブジェクトであるオブジェクト22は、仮想オブジェクトである別のオブジェクト22の間に配置され、それによって遮られ、及び/又はオーバーレイされ得る。XR環境20は、コンピューティングシステム100へ結合されるか又はそれと相互作用するディスプレイ104を介してユーザ10に見られ得る。ディスプレイ104は、XR環境20の没入ビュー(例えば、40から100度までの視野(FOV)を提供する)、又はXR環境20のより制限されたビュー(例えば、ハンドヘルドデバイス104は、XR環境20の部分を表示する可動ビューポートを提供し得る)を提供してよい。ディスプレイ104は、例えば、高解像有機発光ダイオード(OLED)ディスプレイ又は液晶ディスプレイ(LCD)であってよい。いくつかの例で、ディスプレイ104は、立体グラフィクスを表示する能力を有してもよく(例えば、ディスプレイ104は、左右の目に別々の立体グラフィクスを表示する)、XR環境20は、没入3D環境であってよい。
【0035】
この簡略化された図において、XR環境20は、ユーザ10から遠位にある(つまり、ユーザ10の手の届かない)複数のオブジェクト22を含む。特に、ユーザが選択したい対象オブジェクト22aは、ユーザ10の視点から、別のオブジェクト22によって部分的又は完全に遮られ得る。ユーザ10は、XR環境20内のオブジェクト22を選択し及び/又はそれと相互作用し得る。例えば、ユーザ10は、仮想オブジェクトであるオブジェクト22を選択して、オブジェクト22を動かすか又はオブジェクトにコマンドを供給してもよい。ユーザ10はまた、XR環境20を介して、現実世界のオブジェクトであるオブジェクト22を選択し及び/又はそれと相互作用してもよい。例えば、現実世界のオブジェクトであるオブジェクト22は、XR環境20を介してユーザコマンドを受けることができるコンピュータ対応オブジェクト(例えば、インターネット・オブ・シングス(IoT)デバイス)であってよい。ユーザ10がXR環境20でコンピュータ対応可能な現実世界のオブジェクトを選択したとコンピューティングシステム100が決定する場合(以下で更に論じられる)に、コンピューティングシステム100は、ユーザ選択を示すコマンドをそのコンピュータ対応可能な現実世界のオブジェクトに送ってもよい。選択後、コンピュータ対応可能な現実世界のオブジェクトは、コンピューティングシステム100と通信して、ユーザ10がコンピュータ対応可能な現実世界のオブジェクトと更に相互作用することを可能にしてもよい(例えば、ディスプレイ104により、コンピュータ対応可能な現実世界のオブジェクトのための可能なコマンドのメニューをユーザ10に表示する)。ユーザ10は、コンピュータ対応可能ではないがコンピューティングシステム100によって検出可能である現実世界のオブジェクト(例えば、コンピュータビジョンを用いて検出されるオブジェクト、又は境界がコンピューティングシステム100で事前定義及びマッピングされているオブジェクト)も選択し得る。例えば、ユーザ10は、仮想オブジェクトを位置決め又は生成するための基準として現実世界のオブジェクトを選択したいと望むことがある。
【0036】
ユーザ10は、コンピューティングシステム100によって受け取られる入力を介して、XR環境20と相互作用してよい。例えば、ユーザ10は、ユーザ10のポジション及び/又は向きを変えることによって入力を供給し得る。本開示で、姿勢という用語は、ポジション及び向きの組み合わせを包含するために使用されることがある。コンピューティングシステム100がウェアラブルデバイスである場合に、ユーザ10のポジション、向き又は姿勢の変化は、コンピューティングシステム100のセンサ(例えば、加速度計、ジャイロスコープ、磁気探知機、慣性計測ユニット(IMU)など)によって検出されてよく、入力として感知されてよい。例えば、コンピューティングシステム100と一体化されたセンサは、3自由度(DOF)又は6DOFでユーザ10の頭部を追跡する能力を有し得る。
【0037】
いくつかの例で、コントローラ102(例えば、ハンドヘルドコントローラ)がコンピューティングシステム100へ結合されてよく、コントローラ102は、ユーザ10によって、(例えば、ボタン、ジョイスティック、又は他のメカニズムを使用して)入力を供給するために使用されてよい。任意のコントローラ102は、3DOF又は6DOFでユーザ10のポジション、向き又は姿勢(例えば、具体的には、ユーザの手のポジション、向き又は姿勢)を検出することができるセンサ(例えば、加速度計、ジャイロスコープ、磁気探知機、IMUなど)を含んでよく、この感知されたデータを通信してもよく、データは、コンピューティングシステム100によって入力として受信される。
【0038】
いくつかの例で、コントローラ102(XR環境20と相互作用するために設計されてよい)の代わりに、他のコンピュータ対応デバイス(例えば、スマートウォッチ若しくはスマートリングなどのウェアラブルデバイス、又はスマートフォンなどのハンドヘルドデバイス)が、ユーザの手のポジション、向き又は姿勢を検出するためにユーザ10の手に保持されるか又は手の近くに装着されてもよい。
【0039】
いくつかの例で、ユーザ10のポジション、向き又は姿勢の変化は、コンピューティングシステム100へ結合されている外部トラッキングシステム(例えば、赤外線トラッキングシステム、又はコンピュータビジョンに基づいたトラッキングシステム)によって検出されてもよい。外部トラッキングシステム(図示せず)は、例えば、アクティブ又はパッシブマーカ(例えば、ウェアラブルコンピューティングシステム100に取り付けられるか、ハンドヘルドコントローラ102に取り付けられるか、及び/又はユーザに直接取り付けられるマーカ)を用いて、あるいは、非マーカベースのコンピュータビジョンを用いて(例えば、ユーザ10を検出するための、機械学習に基づいたアルゴリズム(例えば、自己位置推定とマッピングの同時実行(SLAM)アルゴリズム、若しくはAzure Kinectで使用されるような訓練されたニューラルネットワーク)を使用する)、ユーザ10のポジション若しくは向き(例えば、3DOF)、又は姿勢(例えば、6DOF)を追跡し得る。外部トラッキングシステムは、ユーザ10の追跡されたポジション、向き又は姿勢に関するデータを通信してもよく、データは、コンピューティングシステム100によって入力として受信される。
【0040】
ユーザ10がXR環境20と相互作用することを可能にするために、様々な技術及びテクノロジが入力を受けるために使用されてよく、本開示は、上述されている例に制限されない。
【0041】
ユーザ10のポジション、向き又は姿勢の変化を表す入力に応答して、コンピューティングシステム100は、ユーザ10の変化したポジション、向き又は姿勢を反映するように、XR環境20内の仮想オブジェクトであるオブジェクト22をレンダリングし直してもよい。ユーザ10のポジション、向き又は姿勢を表す入力データは、ユーザ10のシームレスかつスムーズなXR体験を確かにするために、コンピューティングシステム100によって実時間で連続して受け取られてもよい。
【0042】
図1Bは、物理環境40(つまり、仮想オブジェクトがない)と相互作用するユーザ10の例を示す。この例で、物理環境40は、1つ以上の物理(又は現実世界の)オブジェクト42を含み、物理オブジェクト42は、コンピュータ対応可能な現実世界のオブジェクトを含んでもよい。
【0043】
示されている例では、コンピューティングシステム100はハンドヘルドコンピューティングシステム100(例えば、スマートフォン又はタブレット)であってよく、XR環境(例えば、AR環境)をレンダリングする能力を有しても有さなくてもよい。例えば、コンピューティングシステム100は、XR環境20でのユーザインタラクション及び物理環境40でのユーザインタラクションの両方をサポートすることが可能であってよく、XR環境20のビュー(例えば、ディスプレイ104(
図1Bに図示せず)を介する)及び物理環境40のビューを表示するのを切り替えることが可能であってよい。コンピューティングシステム100は、1つ以上の入出力(I/O)デバイス106とも通信してよく、I/Oデバイス106は、ウェアラブルデバイス(例えば、スマートウォッチ、スマートリング、スマートグラス、など)、又はハンドヘルドデバイス(例えば、上述されたコントローラ102)であってよい。I/Oデバイス106は、3DOF又は6DOFでのI/Oデバイス106の追跡を可能にするために、センサを含んでよく又はコンピューティングシステム100によって感知されてもよい。
【0044】
この簡略化された図において、物理環境40は、ユーザ10が選択したい対象オブジェクト42aを含む複数のオブジェクト42を含む。例えば、ユーザ10は、コンピュータ対応可能な現実世界のオブジェクト(例えば、スマートアプライアンス又はIoTデバイス)である対象オブジェクト42aを選択して、コマンドをそのオブジェクトに供給してよい。ユーザ10はまた、コンピュータ対応可能ではないがコンピューティングシステム100によって検出可能である対象オブジェクト42a(例えば、コンピュータビジョンを用いて検出されるオブジェクト、又は境界がコンピューティングシステム100によって事前定義及びマッピングされているオブジェクト)を選択してもよい。対象オブジェクト42aがコンピュータ対応オブジェクトである場合に、ユーザは、
図1Aを参照して上述されたのと同じように、コンピューティングシステム100からのコマンドを介して、対象オブジェクト42aを選択してそれと相互作用し得る。
【0045】
コンピューティングシステム100がウェアラブルデバイス又はハンドヘルドデバイスである場合に、ユーザ10のポジション、向き又は姿勢の変化は、コンピューティングシステム100のセンサ(例えば、加速度計、ジャイロスコープ、磁気探知機、慣性計測ユニット(IMU)など)によって検出されてよく、入力として感知されてよい。例えば、コンピューティングシステム100と一体化されたセンサは、3自由度(DOF)又は6DOFでユーザ10の頭部を追跡する能力を有し得る。
【0046】
いくつかの例で、I/Oデバイス106が、入力をコンピューティングシステム100へ供給し及び/又は出力をコンピューティングシステム100から受けるためにユーザ10によって使用されてもよい。任意のI/Oデバイス106は、3DOF又は6DOFでユーザ10のポジション、向き又は姿勢(例えば、具体的には、ユーザの手のポジション、向き又は姿勢)を検出することができるセンサ(例えば、加速度計、ジャイロスコープ、磁気探知機、IMUなど)を含んでよく、この感知されたデータを通信してもよく、データは、コンピューティングシステム100によって入力として受信される。
【0047】
いくつかの例で、ユーザ10のポジション、向き又は姿勢の変化は、コンピューティングシステム100へ結合されている外部トラッキングシステム(例えば、赤外線トラッキングシステム、又はコンピュータビジョンに基づいたトラッキングシステム)によって検出されてもよい。外部トラッキングシステム(図示せず)は、例えば、アクティブ又はパッシブマーカ(例えば、ウェアラブル若しくはハンドヘルドコンピューティングシステム100に取り付けられるか、ウェアラブル若しくはハンドヘルドI/Oデバイス106に取り付けられるか、及び/又はユーザに直接取り付けられるマーカ)を用いて、あるいは、非マーカベースのコンピュータビジョンを用いて(例えば、ユーザ10を検出するための、機械学習に基づいたアルゴリズム(例えば、自己位置推定とマッピングの同時実行(SLAM)アルゴリズム、若しくはAzure Kinectで使用されるような訓練されたニューラルネットワーク)を使用する)、ユーザ10のポジション若しくは向き(例えば、3DOF)、又は姿勢(例えば、6DOF)を追跡し得る。外部トラッキングシステムは、ユーザ10の追跡されたポジション、向き又は姿勢に関するデータを通信してもよく、データは、コンピューティングシステム100によって入力として受信される。ユーザ10が物理環境40と相互作用することを可能にするために、様々な技術及びテクノロジが入力を受けるために使用されてよく、本開示は、上述されている例に制限されない。
【0048】
図2は、本明細書で開示されている例を実施するために使用され得るコンピューティングシステム100のいくつかのコンポーネントを示すブロック図である。コンピューティングシステム100の例示的な実施形態が示されており以下で議論されるが、他の実施形態が、本明細書で開示されている例を実施するために使用されてもよく、示されているのとは異なるコンポーネントを含んでもよく。
図2は、各コンポーネントの単一インスタンスを示すが、示されている各コンポーネントの複数のインスタンスが存在してもよい。
【0049】
コンピューティングシステム100は、数ある中でもとりわけ、ウェアラブルデバイス(例えば、ヘッドマウンテッドディスプレイ(HMD)デバイス、スマートウォッチ、スマートリング、スマートグラス、など)、ハンドヘルドデバイス(例えば、スマートフォン、タブレット、など)、又は非ウェアラブルデバイス(例えば、デスクトップコンピューティングシステム、ラップトップコンピューティングシステム、ワークステーション、スマートアプライアンス、トラッキングシステム、など)であってよい。いくつかの例で、コンピューティングシステム100は、ウェアラブルデバイスと通信する非ウェアラブルデバイスであってよい。本開示の例は、例えば、レイキャスティングを実行することができる任意の適切なコンピューティングシステムで実施されてよい。
【0050】
コンピューティングシステム100は、プロセッサ、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、専用のロジック回路、専用の人工知能プロセッサユニット、又はそれらの組み合わせなどの1つ以上の処理デバイス202を含む。コンピューティングシステム100は、任意のコントローラ102、任意のI/Oデバイス106、などの入力デバイス、及びディスプレイ104などの出力デバイスとインターフェース接続する1つ以上の入出力(I/O)インターフェース204も含む。コンピューティングシステム100は、他の入力デバイス(例えば、ボタン、マイクロホン、タッチスクリーン、キーボード、など)及び他の出力デバイス(例えば、スピーカ、振動ユニット、など)を含んでもよい。任意のコントローラ102、任意のI/Oデバイス106、及びディスプレイ104は、
図2に表されているように、コンピューティングシステム100の外にあってもよい。他の例では、任意のコントローラ102、任意のI/Oデバイス106、及び/又はディスプレイ104は、コンピューティングシステム100と一体化されてもよい(例えば、コンピューティングシステム100は、内蔵ディスプレイ104を備えたHMDデバイスであってよく、あるいは、スマートグラス又はスマートウォッチなどのウェアラブルデバイスであってよい)。
【0051】
コンピューティングシステム100は、外部システム又はネットワーク(例えば、イントラネット、インターネット、P2Pネットワーク、WAN及び/又はLAN)との有線又は無線通信のために1つ以上の任意の通信インターフェース206を含んでもよい。通信インターフェース206は、イントラネットワーク及び/又はインターネットワーク通信のために有線リンク(例えば、1つ以上のケーブルを使用するEthernet、など)及び/又は無線リンク(例えば、1つ以上のアンテナを使用するWi-Fi、Bluetooth、など)を用いて通信を可能にし得る。通信インターフェース206は、コンピューティングシステム100が外部トラッキングシステムなどの外部システムと通信して、入力データ(例えば、ユーザ10の追跡されたポジション、向き又は姿勢を表すデータ)を受信することを可能にし得る。
【0052】
コンピューティングシステム100は1つ以上のメモリ208を含み、メモリ208には、揮発性又は不揮発性メモリ(例えば、フラッシュメモリ、ランダムアクセスメモリ(RAM)、及び/又はリードオンリーメモリ(ROM))が含まれ得る。非一時メモリ208は、本開示で記載されている例を実行するために、処理デバイス202によって実行される命令を記憶してよい。例えば、メモリ208は、遠位選択サブシステム300を実行するための命令を含んでよい。メモリ208は、例えば、オペレーティングシステムの実装、(適用可能である場合に)XR環境20のレンダリング、及び他のアプリケーション/機能のための、他のソフトウェア命令を含んでもよい。メモリ208は、(適用可能である場合に)レンダリングされるXR環境20を表し、ディスプレイ104を介して出力として供給されるデータなどの、データ210も含んでもよい。
【0053】
いくつかの例で、コンピューティングシステム100は、ソリッドステートドライブ、ハードディスクドライブ、磁気ディスクドライブ及び/又は光ディスクドライブなどの1つ以上の電子記憶ユニット(図示せず)も含んでよい。いくつかの例で、1つ以上のデータセット及び/又はモジュールは、外部メモリ(例えば、コンピューティングシステム100と有線又は無線通信する外部ドライブ又はクラウドストレージ)によって供給されてもよく、あるいは、一時又は非一時的なコンピュータ可読媒体によって供給されてもよい。非一時的なコンピュータ可読媒体の例には、RAM、ROM、消去可能なプログラム可能ROM(EPROM)、電気的消去可能なプログラム可能ROM(EEPROM)、フラッシュメモリ、CD-ROM、又は他の可搬型メモリストレージがある。
【0054】
コンピューティングシステム100は1つ以上のセンサ212を含んでもよく、センサ212には、数ある中でもとりわけ、加速度計、ジャイロスコープ、磁気探知機、IMU(加速度計、ジャイロスコープ及び/又は磁気探知機の組み合わせであってもよい)が含まれ得る。センサ212は、ユーザ10のポジション、向き又は姿勢を感知し、ユーザ10のポジション、向き又は姿勢を表すセンサデータを生成し得る。いくつかの例で、センサ212は、ユーザ10の目の回転を感知し、目の方向を(例えば、3DOFで)表すセンサデータを生成する眼球追跡ユニット(例えば、任意の眼球追跡センサ)も含んでよい。コンピューティングシステム100は、ユーザ10のポジション、向き又は姿勢を表すデータを生成するよう(例えば、通信インターフェース206を介して)グローバルナビゲーションシステムと通信し得る任意のグローバルポジショニングシステム(GPS)ユニット214も含んでよい。
【0055】
図3は、遠位選択サブシステム300のいくつかの例示的なサブシステムを表すブロック図である。この例で、遠位選択サブシステム300は、光線原点サブシステム302、任意のレイキャスティングサブシステム304、任意の不透明度サブシステム306、及び交点サブシステム308を用いて実施されてよい。
図3は、遠位選択サブシステム300内に別個のサブシステム302、304、306、及び308を表しているが、これは限定であるよう意図されない。本明細書で開示されている遠位選択サブシステム300の動作は、より多い又はより少ないサブシステムを用いて実施されてもよい。サブシステム302、304、306及び308のうちの特定の1つを用いて実行されるものとして記載される機能は、サブシステム302、304、306及び308のうちの異なる1つによって実行されてもよい。いくつかの例で、遠位選択サブシステム300は、如何なる別個のサブシステムも含まなくてもよい。代わりに、サブシステム302、304、306及び308の機能は、遠位選択サブシステム300の全体の機能と見なされてもよい。
【0056】
図4は、遠位選択サブシステム300を用いてコンピューティングシステム100によって(例えば、遠位選択サブシステム300の機能を実施するために処理デバイス202がメモリ208内の命令を実行することによる)実行され得る例示的な方法400を表すフローチャートである。理解を簡単にするために、
図3及び
図4は一緒に議論される。以下の議論から理解されるように、方法400は、XR環境20又は物理環境40におけるオブジェクト又は位置の選択を可能にし得る。
【0057】
遠位選択サブシステム300は、第1姿勢データの組及び第2姿勢データの組を受け取り、選択されたオブジェクト又は位置を表すデータを出力する。第1姿勢データの組は、ユーザ10の第1身体部分のポジション、向き又は姿勢を表してよく、第2姿勢データの組は、ユーザ10の第2身体部分のポジション、向き又は姿勢を表してよく、第1身体部分及び第2身体部分はユーザ10の異なる身体部分である。ユーザ10の様々な身体部分が、第1姿勢データの組及び第2姿勢データの組を生成するために追跡されてよい。数ある可能性の中でもとりわけ、第1身体部分はユーザ10の頭であってよくかつ第2身体部分はユーザ10の手であってよく、第1身体部分はユーザ10の第1の手であってよくかつ第2身体部分はユーザ10の第2の手であってよく、第1身体部分はユーザ10の目であってよくかつ第2身体部分はユーザ10の手であってよい。第1姿勢データ及び第2姿勢データと呼ばれているが、第1及び/又は第2姿勢データは夫々独立して、ポジションデータのみ(例えば、3DOF)、向きデータのみ(例えば、3DOF)、又はポジション及び向きの両方のデータ(例えば、6DOF)を表すことができる。
【0058】
ステップ402で、第1仮想光線及び第2仮想光線のキャスティング(又は投影)のための第1原点及び第2原点が決定される。簡単のために、以下の議論は、仮想光線を単に光線と呼ぶ。ステップ402は、光線原点サブシステム302を実行することによって実行されてよい。第1原点及び第2原点は夫々、第1姿勢データ及び第2姿勢データから計算されてよい。いくつかの既存のコンピューティングシステム100では(例えば、HMDデバイスなどのウェアラブルデバイスでは)、ユーザのビュー(例えば、ユーザの頭部のポジション、向き又は姿勢によって示される)の追跡が連続的に実行されてもよい。更に、ハンドヘルドコントローラ102を使用するか又はウェアラブルI/Oデバイス106と通信するいくつかの既存のコンピューティングシステム100では、コントローラ102又はI/Oデバイス106のポジション、向き又は姿勢が連続的に追跡されてもよい。同様に、いくつかのトラッキングシステム(例えば、赤外線トラッキングシステム又は任意のトラッキングシステム)が、ユーザ10の身体部分(例えば、ユーザ10の頭及び手)のポジション、向き又は姿勢を連続的に追跡してもよい。然るに、第1姿勢データの組及び第2姿勢データの組は、連続的に(例えば、10ミリ秒ごとなど、規則的かつ頻繁な時間インターバルで)更新され得る。第1姿勢データの組及び第2姿勢データの組は、任意の適切なフォーマットを有してよい。例えば、第1姿勢データの組及び第2姿勢データの組は夫々、未処理のセンサデータ(例えば、コンピューティングシステム100のセンサ212によって生成される)であってよく、あるいは、処理済みのデータ(例えば、共通基準枠にマッピングするために及び/又はノイズを除去するために、自己位置推定とマッピングの同時実行(SLAM)アルゴリズムなどのアルゴリズムによって処理されたセンサデータ)であってよい。
【0059】
第1姿勢データの組及び第2姿勢データの組は、異なるソースから(例えば、夫々、ウェアラブルコンピューティングシステム100及び/又はハンドヘルドコントローラの異なるセンサから、あるいは、コンピューティングシステム100及び/又はI/Oデバイス106の異なるセンサから)供給されてよい。例えば、第1姿勢データの組は、ユーザ10の頭部のポジション、向き又は姿勢を表してよく、ウェアラブルコンピューティングシステム100のIMU、コンピューティングシステム100の外部のウェアラブルセンサ、外部の頭部追跡システム、又はコンピューティングシステム100の任意のSLAM前処理ユニットによって供給されてよい。第2姿勢データの組は、ユーザ10の手のポジション、向き又は姿勢を表してよく、ハンドヘルドコントローラ102若しくはI/Oデバイス106のセンサ、外部の手追跡システム、又は他のウェアラブルデバイスによって供給されてよい。
【0060】
いくつかの例で、第2姿勢データの組は、HMDデバイス(コンピューティングシステム100であってもよい)によって供給されてもよい。例えば、ユーザ10の手がHMDデバイスのFOV内にある場合に、センサ(例えば、追跡可能なマーカが手に取り付けられている場合に、任意のセンサ)又はコンピュータビジョンアルゴリズムが、手のポジション、向き又は姿勢を検出し、それに応じて第2姿勢データを生成してよい。
【0061】
第1姿勢データの組及び第2姿勢データの組は、様々な方法でコンピューティングシステム100によって取得されてよく、一部の方法は本明細書で議論される。例えば、コンピューティングシステム100は、第1姿勢データの組としてユーザ10の手のポジション、向き又は姿勢を検出するよう内部センサを備えたハンドヘルドコンピューティングシステムであってよく、コンピューティングシステム100は、第2姿勢データの組としてユーザ10の頭部又はもう一方の手のポジション、向き又は姿勢を受け取るようウェアラブルI/Oデバイス106(内部センサを備える)と通信してよい。
【0062】
他の例では、コンピューティングシステム100は、第1姿勢データの組としてユーザ10の頭部又は手のポジション、向き又は姿勢を検出するよう内部センサを備えたウェアラブルコンピューティングシステム(例えば、スマートグラス又はスマートウォッチ)であってよく、第2姿勢データの組としてユーザ10のもう一方の手のポジション、向き又は姿勢を受け取るよう他のウェアラブルI/Oデバイス106(内部センサを備える)と通信してよい。
【0063】
他の例では、コンピューティングシステム100は、第1姿勢データの組としてユーザ10の頭部又は手のポジション、向き又は姿勢を検出するよう内部センサを備えたウェアラブルコンピューティングシステム(例えば、スマートグラス又はスマートウォッチ)であってよく、第2姿勢データの組として(コンピューティングシステム100のFOV内の)もう一方の手のポジション、向き又は姿勢を(例えば、コンピュータビジョンを使用して、又はユーザ10上のマーカを追跡することによって)検出してよい。
【0064】
他の例では、コンピューティングシステム100は、異なる入力モダリティを介して(例えば、マウス入力を介して及び眼球追跡入力を介して)第1姿勢データの組及び第2姿勢データの組を受け取ることができるデスクトップコンピューティングシステムであってよい。例において、コンピューティングシステム100は、第1姿勢データの組及び第2姿勢データの組を取得するためにユーザ10の異なる身体部分(例えば、頭部及び手)を(例えば、コンピュータビジョンを使用して、又は赤外線若しくは任意の追跡マーカを追跡することによって)検出及び追跡するようトラッキングシステムと通信するか又はトラッキングシステムを含むデスクトップコンピューティングシステムであってよい。
【0065】
多数の様々な技術が、ユーザ10の異なる身体部分の追跡データを取得するために使用されてよく、第1姿勢データの組及び第2姿勢データの組を取得するために使用されてよいことが理解されるべきである。
【0066】
光線原点サブシステム302は、第1姿勢データの組及び第2姿勢データの組を処理して、第1及び第2光線を投じる第1原点及び第2原点を生成する。本開示における原点という用語は、光線が投じられるポジション及び光線が投じられる方向の両方を指し得る。光線原点サブシステム302は、第1姿勢データの組及び第2姿勢データの組を各々の第1原点及び第2原点に変換するために任意の適切なアルゴリズムを実行してよい。例えば、光線原点サブシステム302は、第1又は第2姿勢データの各々の組の基準枠からXR環境20又は物理環境40の共通基準枠への直接マッピングを(例えば、変換行列を使用して)実行してもよい。
【0067】
第1原点は、6DOFで決定されてよく、[Vp,Vd]と表されてよく、Vpは、定義されている基準枠(例えば、XR環境20又は物理環境40に対して定義される)における第1原点のポジションを表す直交座標(x,y,z座標とも呼ばれる)を表し、Vdは、定義された基準枠において、第1光線が投じられるべき方向を表すオイラー角(方位角、仰角、及び傾きかくとも呼ばれる)又は四元数を表す。同様に、第2原点は、6DOFで決定されてよく、[Hp,Hd]と表されてよく、Hpは、定義されている基準枠(例えば、XR環境20又は物理環境40に対して定義される)における第2原点のポジションを表す直交座標(x,y,z座標とも呼ばれる)を表し、Hdは、定義された基準枠において、第2光線が投じられるべき方向を表すオイラー角又は四元数を表す。
【0068】
いくつかの例で、第1原点及び/又は第2原点は、3DOFで決定されてもよい(例えば、いくつかの例で、第1姿勢データの組又は第2姿勢データの組は、6DOFを計算するには不十分である場合がある)。第1原点が3DOFで決定される場合に、第1原点は固定位置にあると仮定されてよく(例えば、Vpは(0,0,0)に固定され得る)、Vdのみが計算される。同様に、第2原点が3DOFで決定される場合に、第2原点は、第1原点の固定位置とは異なる固定位置にあると仮定されてよく(例えば、Hpは(10,10,10)に固定され得る)、Hdのみが計算される。
【0069】
いくつかの例で、第1原点及び/又は第2原点は、遠位選択サブシステム300の外で計算されてもよい。かような場合に、ステップ402で第1原点及び第2原点を決定することは、遠位選択サブシステム300の外から第1原点及び第2原点を取得することを含んでもよい。例えば、コンピューティングシステム100がウェアラブルデバイス(例えば、HMDデバイス、スマートグラス、スマートウォッチ、若しくはスマートリング)であるか又はウェアラブルデバイスと通信する場合に、頭部又は手追跡ハードウェア及び/又はソフトウェアが、ウェアラブルデバイスの既存の機能の一部として実装されてもよく、遠位選択サブシステム300は、第1原点を直接(第1姿勢データの組から第1原点を決定する必要なしに)供給され得る。他の例では、ハンドヘルドコントローラ102又はI/Oデバイス106が使用される場合に、手追跡ハードウェア及び/又はソフトウェアが、コントローラ102又はI/Oデバイス106の既存の機能の一部として実装されてもよく、遠位選択サブシステム300は、第2原点を直接(第2姿勢データの組から第2原点を決定する必要なしに)供給され得る。他の例では、コンピューティングシステム100が物理環境40においてユーザ10を追跡するようトラッキングシステムを含むか又はそれと通信する場合に、トラッキングシステムは、既存の機能の一部としてトラッキングソフトウェアを実装してもよく、第1原点及び第2原点を遠位選択サブシステム300へ直接供給してよい。
【0070】
いくつかの例で、404で、第1光線及び第2光線が夫々、第1原点及び第2原点から投じられる。例えば、ステップ404は、レイキャスティングサブシステム304を実行することによって実行されてよい。レイキャスティングサブシステム304は、第1原点及び第2原点(夫々、[Vp,Vd]及び[Hp,Hd])を受け取り、第1原点及び第2原点から夫々投じられる第1光線及び第2光線の経路を計算する。レイキャスティングサブシステム304は、第1光線及び第2光線が(例えば、ブレゼンハムのアルゴリズムなどの任意の適切な3Dライン描画アルゴリズムを用いて)XR環境20で視覚的にレンダリングされることを可能にするためのデータ(例えば、各光線に沿った有限な点の組を表すデータ)を生成する。
【0071】
レイキャスティングサブシステム304は、任意の適切なレイキャスティングアルゴリズムを使用してよい。一般に、3D光線が、3Dライン式:
【数1】
を使用して所与のポジション及び方向から投じられ得る。ここで、(a,b,c)は、光線の点(Vp又はHpに対応)であり、ベクトルvは、方向ベクトル(Vd又はHdから計算)であり、tは、光線のスカラーパラメータであり、(x,y,z)は、光線上の点である。投じられた光線上のあらゆる(x,y,z)が、tの各々の値から計算され得、tは、ゼロから無限大までの如何なる値もとり得る。
【0072】
いくつかの例で、レイキャスティングサブシステム304は、ユーザ10が動く(例えば、頭及び手を動かす)につれて変化する第1光線及び第2光線のポジション及び方向をユーザ10が視覚化することができるように、XR環境20においてレンダリングされるように第1光線及び第2光線を連続的に投じるよう構成され得る。他の例では、ユーザ10からの任意のアクティブ化入力(例えば、ボタン押下又はボイスコマンド)が、レイキャスティングサブシステム304の動作を開始するために必要とされてもよい。
【0073】
ステップ404は、物理環境40でも光線を投じるよう実行されてもよい。例えば、コンピューティングシステム100は、ディスプレイ104を介して物理環境40のビューを供給してもよく、物理環境40において第1光線及び第2光線の視覚化をレンダリングして、ユーザ10が第1光線及び第2光線のポジション及び方向をより良く制御できるようにし得る。このようにして、物理環境40とのユーザインタラクションは、コンピューティングシステム100上でARディスプレイによって支援され得る。
【0074】
第1原点から投じられる第1光線は、Rvと表記されてよく、第2原点から投じられる第2光線は、Rhと表記されてよい。
【0075】
いくつかの例で、任意のステップ404が実行されない場合には、レイキャスティングサブシステム304は、遠位選択サブシステム300から省略又は無効化されてもよい。
【0076】
いくつかの例で、406で、交差しているオブジェクトの組が識別される。例えば、ステップ406は、不透明度サブシステム306を実行することによって実行されてよい。不透明度サブシステム306は、2つの投じられた光線Rv及びRhを受け、第1及び第2光線が交わるXR環境20又は物理環境40内の如何なるオブジェクトも識別する。
【0077】
不透明度サブシステム306は、光線とオブジェクトとの交点を決定する(例えば、光線を表す式がオブジェクトのいずれかの境界と交わるかどうかを計算する)ための任意の適切なアルゴリズムを使用してよい。レイキャスティングの分野で知られている技術が不透明度サブシステム306によって使用されてもよい(例えば、レイキャストヒット試験機能を使用する)。第1光線及び第2光線が交わる如何なるオブジェクトも、不透明度サブシステム306によって追跡され、交差オブジェクトのリストに加えられてよい。各交差オブジェクトは、例えば、オブジェクト識別子(ID)又はインスタンスIDによって、識別されてよい。第1光線若しくは第2光線のどちらか一方、又は両方の光線が交わるオブジェクトを識別する単一のリストが生成されてよい。代替的に、別々の第1リスト及び第2リストが生成されてもよく、それらは夫々、第1光線又は第2光線が交わるオブジェクトを識別する。
【0078】
例えば、交差オブジェクトリスト(例えば、アレイ形式)Iは、第1及び/又は第2光線が交わるオブジェクトの組を識別するように、生成されてよい。第1又は第2光線が交わっている各オブジェクトは、交差オブジェクトリストに加えられる。例えば、第1光線RvがオブジェクトO0及びO1と交差し、第2光線RhがオブジェクトO1及びO2と交差する場合に、交差オブジェクトリストはI=[O0,O1,O2]になる。オブジェクトが第1リスト及び第2リストで識別される順序は重要でないことがあり、オブジェクトがどの光線(又は両方の光線)によって交差されたかを識別することは不要であることがある。いくつかの例で、各光線が交わるオブジェクトは、例えば、交差仮想オブジェクトの不透明度が光線ごとに異なるように調整されることを可能にするために、別々に追跡されてもよい。
【0079】
いくつかの例で、ステップ406は省略されてもよい。例えば、方法400が物理環境40におけるオブジェクト選択のために実行されている場合に、物理環境40における現実世界のオブジェクトの不透明度は調整不可能であるから、第1光線及び第2光線が交わる全てのオブジェクトを識別することは不要であり得る。
【0080】
いくつかの例で、408で、交差オブジェクトの組内の各仮想オブジェクトの不透明度が調整される。例えば、ステップ408は、交差リストI内の各仮想オブジェクトの不透明度を変えるために不透明度サブシステム306を実行することによって実行されてよい。
【0081】
不透明度サブシステム306は、交差仮想オブジェクトが低い不透明度でXR環境20においてレンダリングされるように、交差オブジェクトの組内の(例えば、交差オブジェクトリスト内で識別される)各仮想オブジェクトの不透明度を調整する。ユーザ10は、このようにして、如何なる遮蔽仮想オブジェクトも通して第1光線及び第2光線の経路を見ることが可能であり得る。不透明度サブシステム306は、例えば、各交差仮想オブジェクトのアルファ値をセットされたアルファ値に変更することによって(例えば、アルファ値は0.0(つまり、完全に透明)から1.0(つまり、完全に不透明)の間にあり、通常、セットされたアルファ値は、交差仮想オブジェクトを半透明にするように1.0未満であるべきである)、交差オブジェクトの組に含まれているあらゆる仮想オブジェクトの不透明度を調整する。いくつかの例で、アルファ値は、ユーザ入力に応答して(例えば、ユーザは、ボタン又は他の入力メカニズムを用いて、投じられた光線の経路をより良く見るために、より低い不透明度を選択してよい)、不透明度サブシステム306によって動的に変更されてよい。
【0082】
いくつかの例で、不透明度サブシステム306は、交差オブジェクトの組の中のオブジェクトを連続的に更新するよう、かつ、ユーザ10が動く(例えば、頭及び手を動かす)につれて変化する第1光線及び第2光線の経路をユーザ10が視覚化することができるようにXR環境20内の交差仮想オブジェクトの不透明度を調整するよう構成されてよい。他の例では、ユーザ10からの任意のアクティブ化入力(例えば、ボタン押下又はボイスコマンド)が、不透明度サブシステム306の動作を開始するために必要とされてもよい。第1及び/又は第2原点が(例えば、ユーザの頭及び/又は手の動きにより)変更されて、これまで交差していた仮想オブジェクトがもはや交差しなくなった場合に、不透明度サブシステム306は、交差オブジェクトリストからその仮想オブジェクトを除き、その仮想オブジェクトの不透明度をその元の不透明度に戻るよう調整してよい。よって、XR環境20内の仮想オブジェクトの不透明度は、第1光線及び第2光線がどの仮想オブジェクトと交わっているかを示すよう、連続的に調整され得る。
【0083】
いくつかの例で、ステップ408は省略されてもよく、交差仮想オブジェクトの不透明度は調整されないことがある。例えば、他の視覚技術が、第1光線及び第2光線の位置をユーザ10に示すために使用されてもよい(仮想矢印のフローティング、平面としての第1光線及び第2光線のレンダリング、など)。XR環境20又は物理環境40内の対象オブジェクトの選択は、如何なる交差仮想オブジェクトの不透明度も識別及び調整することに必ずしも依存しない。
【0084】
いくつかの例で、ステップ406及び408が省略される場合に、不透明度サブシステム306は、遠位選択サブシステム300から省略又は無効化されてもよい。
【0085】
視覚化されるべき第1光線及び第2光線をレンダリングするためにレイキャスティングサブシステム304を実行することによって、及び/又は交差仮想オブジェクトの不透明度を減じるよう不透明度サブシステム306を実行することによって、遠位選択サブシステム300は、ユーザ10が選択すべき所望のオブジェクトをより明りょうに対象とすることを可能にする。ユーザ10は、第1光線及び第2光線が対象オブジェクトで交差するまで第1光線及び第2光線を制御するために(例えば、頭及び手のポジション、向き又は姿勢を変えることによって)第1姿勢データ及び第2姿勢データを調整することができる。
【0086】
410で、第1光線と第2光線との交点が決定される。例えば、ステップ410は、交点サブシステム308を実行することによって実行されてよい。決定された交点は、第1光線と第2光線との計算された実際の交点であってよく、あるいは、第1光線及び第2光線がスキューである(つまり、平行でないが交差しない)場合には、決定された交点は、第1光線と第2光線との計算された投影された交点であってよい。決定された交点は、XR環境20又は物理環境40の基準枠内の直交座標として識別されてよい。
【0087】
図5は、ステップ410を実行するための例示的なステップを表すフローチャートである。交点サブシステム308は、ステップ410を実行するために、例えば、
図5に表されている方法を実行してよい。
【0088】
502で、第1光線及び第2光線が平行であるかどうかが決定される。これは、様々な技術を用いて、例えば、方向ベクトルVd及びHdが互いのスカラー乗数であるかどうかを確認することによって、実行されてよい。第1光線及び第2光線が平行である場合に、交点は決定され得ず、方法は交点を決定せずに終了する。
図4に戻ると、交点がステップ410で見つけられない場合に、方法400は、第1原点及び第2原点を追跡し続けるようステップ402に戻ってよい。
【0089】
図5に戻ると、第1光線及び第2光線が平行でないと決定される場合に、次いで504で、第1光線と第2光線との間に実際の交差点があるかどうかが決定される。平行でなくスキューでない光線の任意の対の場合、1つの一意の交差点Pが存在すべきである。交差点は、標準の3Dライン交差アルゴリズムを用いて計算されてよい。例えば、交点サブシステム308は、次の式:
【数2】
を使用してもよい。ここで、Vp及びHpは、第1原点及び第2原点のポジションを表し、Vd及びHdは、第1原点及び第2原点の方向ベクトルを表し、Pは、第1光線と第2光線との交差点である。実際の交差点を決定した後、方法はステップ510へ進む。
【0090】
第1光線と第2光線との間の実際の交点が決定され得ない場合には、第1光線及び第2光線はスキューであり、方法はステップ506へ進む。
【0091】
506で、第1光線と第2光線との間の最も近い距離が計算され、その最も近い距離が事前定義された閾値内にあるかどうかが決定される。
【0092】
3D空間において2つの光線(又は2つのライン)の間の法線を計算するための如何なる標準アルゴリズムも、第1光線と第2光線との間の最も近い距離を計算するために使用されてよい。例えば、交点サブシステム308は、次の式:
【数3】
を使用してもよい。ここで、Vp及びHpは、第1原点及び第2原点のポジションを表し、Vd及びHdは、第1原点及び第2原点の方向ベクトルを表し、dは、第1光線と第2光線との間の最短ベクトルである。ベクトルdを計算した後、dの大きさが、第1光線と第2光線との間の最も近い距離を決定するために計算され得る。
【0093】
最も近い距離が所定の閾値内にある場合に、次いで、交点サブシステム308は、第1光線及び第2光線が交差していると見なされるほど十分に近いと決定し、方法はステップ508へ進む。
【0094】
最も近い距離が所定の閾値内にない場合に、次いで、交点サブシステム308は、第1光線及び第2光線が交差していると見なされるには離れすぎていると決定し、交点は決定され得ない。
図5の方法は、交点を決定せずに終了する。
図4に戻ると、交点がステップ410で見つけられない場合に、方法400は、第1原点及び第2原点を追跡し続けるようステップ402に戻ってよい。
【0095】
第1光線及び第2光線(スキューである)が交差していると見なされ得るかどうかを決定するための所定の閾値は、デフォルトで前もってセットされてよく、及び/又はユーザによって選択されてよい(例えば、ユーザは、密にポピュレートされたXR環境20又は物理環境40において、望まないオブジェクトを図らずも選択することを回避するために、閾値をより小さく調整したいと望むかもしれず、あるいは、ユーザは、対象オブジェクトのより容易な選択を可能にするために、閾値をより大きく調整したいと望むかもしれない)。
【0096】
いくつかの例で、第1光線及び第2光線が交差していると見なされ得るかどうかを決定するための所定の閾値は、第1光線及び第2光線の投影された交差点から第1原点及び第2原点までの距離に応じて、可変であってよい。光線がその原点からある角度で投じられる場合に、原点での角度の小さな変化は、原点から離れた距離での光線の大きい変位になる。従って、光線が原点からより遠くに投じられるほど、ユーザがある距離で光線のポジションを正確に制御することは難しくなる。所定の閾値は、この効果を考慮するよう、例えば、所定の閾値は、第1光線と第2光線との間の最も近い距離(つまり、投影された交差点)が第1原点及び第2原点の近くで(例えば、第1原点及び第2原点の夫々から1メートル半径内で)計算される場合にはより小さく、第1光線と第2光線との間の最も近い距離(つまり、投影された交差点)が第1原点及び第2原点から離れて(例えば、第1原点及び第2原点の夫々から10メートル半径よりも遠い)計算される場合にはより大きく、それ以外の場合(例えば、第1原点及び第2原点の夫々から1メートル半径の外であるが10メートル半径内にある)にはそれらの間の値になるように、所定の閾値を定義することによって、セットされてよい。所定の閾値は、第1光線と第2光線との間の最も近い距離(つまり、投影された交差点)から第1原点及び第2原点までの距離が大きくなるほど所定の閾値が徐々に(線形に)大きくなるように、式を用いて定義されてもよい。
【0097】
508で、第1光線と第2光線との間の最も近い距離が所定の閾値内にあると決定した後、投影された交差点が計算される。投影された交差点は、第1光線と第2光線との間の最短ベクトルに沿った任意の選択点として計算されてよい。例えば、投影された交差点は、第1光線と第2光線との間の最短ベクトルの中点として計算されてよい。投影された交差点を計算した後、方法はステップ510へ進む。
【0098】
510で、第1光線と第2光線との間の実際の交差点(ステップ504で計算される)、又は投影された交差点(ステップ508で計算される)が、決定された交点として使用される。
図4に戻ると、第1光線と第2光線との交点を決定すると、方法400はステップ412へ進む。
【0099】
412で、決定された交点に基づいて、XR環境20又は物理環境40内の暫定的に選択されたオブジェクトが識別される。例えば、ステップ412は、交点サブシステム308を実行することによって実行されてよい。
【0100】
決定された交点(第1光線と第2光線との実際の交差点、又は第1光線と第2光線との間の投影された交差点であってよい)は、XR環境20又は物理環境40の基準枠において3D直交座標によって定義されてよい。交点サブシステム308は、決定された交点に一致するオブジェクトがXR環境20又は物理環境40にあるかどうかを決定する。例えば、交点サブシステム308は、(例えば、ステップ406から)識別された交差オブジェクトの組の中で、決定された交点に一致する(例えば、包含しているか又は境を接している(つまり、接触している))オブジェクトを識別してよい。他の例では(例えば、ステップ406が省略された場合)、交点サブシステム308は、既知のオブジェクトのリスト(例えば、レンダリングされている仮想オブジェクトのリスト、コンピュータ対応可能な現実世界のオブジェクトのリスト、検出された現実世界のオブジェクトのリスト、又はそれらの組み合わせ)の中で、決定された交点に一致するオブジェクトを識別してよい。例えば、既知のオブジェクトのリスト内の各オブジェクトは、XR環境20又は物理環境40の基準枠において定義されているオブジェクト境界に関連してもよく、交点サブシステム308は、定義された境界が決定された交点を包含しているか又は接しているオブジェクトを識別してよい。他の例では、交点サブシステム308は、決定された交点の位置にオブジェクトがあるかどうかを検出してよい(例えば、交点サブシステム308は、コンピューティングシステム100のオブジェクト検出サブシステムと通信するか、又は外部トラッキングシステムと通信して、例えばコンピュータビジョンを用いて、決定された交点の位置にある任意のオブジェクトを検出し得る)。識別されたオブジェクトは、次いで、暫定的に選択されたオブジェクトとして識別される。1つよりも多い暫定的に選択されたオブジェクトが存在してもよい(例えば、交差オブジェクトの組内の1つよりも多いオブジェクトが決定された交点に接している場合があり、例えば、2つのオブジェクトが決定された交点で互いに接触している場合がある)。
【0101】
いくつかの例で、交点サブシステム308は、決定された交点から所定の又はユーザにより選択された半径を有している球を投影してもよい。ユーザは、投影された球の半径を動的に選択することが可能であり得る(例えば、コントローラ102のジョイスティックなどの任意の適切な手動入力メカニズムを用いる)。投影された球と一致している(例えば、少なくとも部分的にそれに包含されているか又は接している)XR環境20又は物理環境40内の如何なるオブジェクトも、暫定的に選択されたオブジェクトとして識別されてよい。1つよりも多い暫定的に選択されたオブジェクト(例えば、投影された球に少なくとも部分的に包含されているか又は接している1つより多いオブジェクト)が存在してもよい。
【0102】
XR環境20において暫定的に選択された仮想オブジェクトは、暫定的な選択を視覚的に示すようにレンダリングされてよい(例えば、異なる色でレンダリングされる)。いくつかの例で、ユーザ10は、暫定的に選択されたオブジェクトをユーザ10に示すよう、他の適切な出力(例えば、暫定的に選択されたオブジェクトのデバイス名などの識別子の表示又はオーディオ出力)を供給されてもよい。
【0103】
いくつかの例で、暫定的に選択されたオブジェクトは識別されなくてもよい(例えば、決定された交点はXR環境20又は物理環境40内の如何なるオブジェクトとも一致しない)。その場合に、方法400はステップ402に戻ってよい。代替的に、暫定的に選択されたオブジェクトが識別されていない場合に、決定された交点は、XR環境20又は物理環境40内の暫定的に選択された3D位置を識別するために使用されてもよい。ユーザは、例えば、XR環境20内の3D位置を、例えば仮想オブジェクトを置くための位置インジケータとして、選択してよい。他の例では、ユーザは、物理環境40内の3D位置を、コンピューティングシステム100によって制御される移動ロボットの動きを制御するための位置インジケータとして選択してよい。
【0104】
暫定的に選択された位置は、暫定的な選択を視覚的に示すようXR環境20内で(例えば、視覚矢印又は他のインジケータをレンダリングすることによって)レンダリングされてよい。いくつかの例で、物理環境40内の暫定的に選択された位置は、物理環境40のビューとオーバーレイされて、コンピューティングシステム100のディスプレイ104で(例えば、視覚矢印又は他のインジケータをレンダリングすることによって)示されてもよい。
【0105】
414で、選択されたオブジェクト又は位置の確認が受け取られる。1つよりも多い暫定的に選択されたオブジェクトが存在する例では、確認は、暫定的に選択されたオブジェクトのうちの特定の1つの選択を示すユーザ入力(例えば、手動入力、ボイスコマンド、眼球追跡入力、など)として受け取られてよい。1つの暫定的に選択されたオブジェクト又は位置が識別されている例では、選択されたオブジェクト又は位置の確認がユーザ入力(例えば、手動入力、ボイスコマンド、など)として受け取られてよく、あるいは、暫定的に選択されたオブジェクト又は位置が所定タイマ(例えば、1秒)の満了まで暫定的に選択されているとして維持されることによって(例えば、第1原点及び第2原点が実質的に変化しないことによって)受け取られてもよい。選択されたオブジェクト(例えば、オブジェクトID)又は位置(例えば、決定された交点に対応する3D直交座標)の識別は、遠位選択サブシステム300によって出力される。
【0106】
このように、方法400は、各々の第1原点及び第2原点から投じられた第1光線及び第2光線に基づいて、選択されたオブジェクト又は選択された位置の識別を可能にする。選択されたオブジェクト又は選択された位置の識別は、例えば、選択されたオブジェクト又は選択された位置との更なるユーザインタラクションを可能にするために、他のソフトウェアアプリケーション(例えば、XR環境20を生成するよう実行される他のアプリケーション、又は物理環境40内のコンピュータ対応可能な現実世界のオブジェクトを制御するよう実行される他のアプリケーション)によって使用されてもよい。
【0107】
方法400は、遠位選択サブシステム300を実行することによって実行されてよく、オクルージョン不変であると見なされ得るオブジェクト又は位置選択技術を提供する。オクルージョン不変とは、選択技術が、選択されるべき対象オブジェクト又は位置が他のオブジェクトによって遮られているか否かに応じて変わる必要がないことを意味する。さもなければ対象オブジェクト又は位置を遮ることになる如何なる仮想オブジェクトも、半透明にレンダリングされる。異なる第1原点及び第2原点から投じられた第1光線及び第2光線の使用は、夫々の光線が異なるユーザ制御モードに対応し得る(例えば、第1光線は、ユーザの頭に対応する第1原点から投じられてよく、第2光線は、ユーザの手に対応する第2原点から投じられてよい)ので、クロスモーダル光線と呼ばれ得る。選択されたオブジェクト又は位置を識別する交点を決定するための2つの個別的に制御可能な光線の使用は、いくつかの既存の仮想オブジェクト選択技術と比較して、より高速なオブジェクト又は位置選択を可能にし得る(例えば、追加の曖昧さ回避ステップを必要としない)。
【0108】
図6は、方法400がコンピューティングシステム100としてのHMFデバイスによって実行され、コンピューティングシステム100がハンドヘルドコントローラ102とインターフェース接続するXR環境20における方法400の実施例を表す。
図6は、ディスプレイ104を介してユーザ10へ感覚入力として供給される簡略化されたXR環境20を表す。
【0109】
この簡略化された例において、XR環境20は、遮蔽仮想オブジェクト22bによって(ユーザ10の視点から)遮られている対象オブジェクト22aを含むオブジェクト22を含む。
【0110】
この例で、第1原点[Vp,Vd]は、ユーザの頭の姿勢(例えば、ウェアラブルコンピューティングシステム100によって追跡される)に対応して決定され、第2原点[Hp,Hd]は、ユーザの手の姿勢(例えば、ハンドヘルドコントローラ102によって追跡される)に対応して決定される。第1光線及び第2光線は、各々の第1原点及び第2原点から投じられる。遮蔽仮想オブジェクト22bは、第1及び/又は第2光線によって交差されており、交差オブジェクトの組として識別される。遮蔽仮想オブジェクト22bの不透明度は、遮蔽仮想オブジェクト22bを半透明(
図6では破線によって示される)にするよう調整される。第1及び/又は第2光線が交差していない他の仮想オブジェクトは半透明にされないことに留意されたい。
【0111】
第1光線と第2光線との間の実際の交差点又は投影された交差点が決定され、これは、第1光線と第2光線との交点Pとして決定される。対象オブジェクト22aは第1光線と第2光線との決定された交点と一致するので、対象オブジェクト22aは暫定的に選択されたオブジェクトとして識別される。対象オブジェクト22aは、対象オブジェクト22aが暫定的に選択されていることを示すよう(例えば、
図6では異なる陰影で示されるように、相異なる色を使用して)レンダリングされてもよい。対象オブジェクト22aは、次いで、選択の確認を受け取った(例えば、対象オブジェクト22aがタイマの満了後に暫定的に選択されたままである)後に、選択されたオブジェクトとして識別される。
【0112】
図6は、コンピューティングシステム100としてのHMDデバイスと、ハンドヘルドコントローラ102とを使用して、本明細書で開示される方法及びシステムの実施例を表している。かような例は、頭部追跡が一般に既存のHDMデバイスによって実行され、手追跡(ハンドヘルドコントローラ102の使用有無によらない)も一般的に既存のXRシステムによって実行されるので、比較的に実施するのが簡単であり得る。しかし、上述されたように、本開示は、そのような実施に制限されない。いずれか2つの一致しないポジションが、第1原点及び第2原点を決定するために追跡されてよい。例えば、ユーザの左右の手が、第1原点及び第2原点を決定するために別々に追跡されてもよい。他の例では、2人の別のユーザの2つの身体部分、例えば、頭部及び手が、第1原点及び第2原点を決定するために追跡されてもよい。他の例では、1つのウェアラブルデバイス又は1つのハンドヘルドデバイス上で互いに分離している2つのポジションが、第1原点及び第2原点を決定するために別々に追跡されてもよい(3DOF)。ウェアラブルデバイス又は、ジョイスティック、スクロールホイール、タッチパッドなどのハンドヘルドデバイスでのモダリティは、2つの光線が交差し得るように、追跡される原点のレイキャスト方向の一方又は両方を独立して変更するために使用されてよい。他のそのような変形例も可能であり得る
。
【0113】
図7A~7Cは、物理環境40での方法400の実施例を表す。
【0114】
図7Aで、方法400は、コンピューティングシステム100としてのハンドヘルドデバイス(例えば、スマートフォン又はタブレット)によって実行され、コンピューティングシステム100はウェアラブルI/Oデバイス106(例えば、スマートウォッチ又はスマートリング)とインターフェース接続する。この簡略化された例で、物理環境は、対象オブジェクト42aを含むオブジェクト42を含む。
【0115】
この例で、第1原点[Vp,Vd]は、ユーザの右手の姿勢(例えば、ハンドヘルドコンピューティングシステム100によって追跡される)に対応して決定され、第2原点[Hp,Hd]は、ユーザの左手の姿勢(例えば、ウェアラブルI/Oデバイス106によって追跡される)に対応して決定される。他の例では、ウェアラブルI/Oデバイス106は、任意の他の身体部分に(例えば、手に、顔に、胸部に、臀部に、又は足に、など)身につけられてよく、第2原点は、その他の身体部分の姿勢に対応し得る。第1光線及び第2光線は、各々の第1原点及び第2原点から投じられる。コンピューティングシステム100は、物理環境40のビュー(例えば、コンピューティングシステム100のディスプレイ(図示せず)により出力される)に対するオーバーレイとして仮想的な第1光線及び第2光線の視覚化をレンダリングする。
【0116】
第1光線と第2光線との間の実際の交差点又は投影された交差点が決定され、これは、第1光線と第2光線との交点Pとして決定される。対象オブジェクト42aは第1光線と第2光線との決定された交点Pと一致するので、対象オブジェクト42aは暫定的に選択されたオブジェクトとして識別される。暫定的に選択された対象オブジェクト42aの識別は、コンピューティングシステム100によって出力されてよい(例えば、対象オブジェクト42aの識別(例えば、デバイス名)が、コンピューティングシステム100によって表示又は発話されてよい)。対象オブジェクト42aは、次いで、選択の確認を受け取った(例えば、対象オブジェクト42aがタイマの満了後に暫定的に選択されたままである)後に、選択されたオブジェクトとして識別される。
【0117】
図7Bで、方法400は、コンピューティングシステム100としての非ウェアラブル、非ハンドヘルドデバイス(例えば、デスクトップデバイス、スマートアプライアンス、又はワークステーション)によって実行され、コンピューティングシステム100は、物理環境40におけるユーザ10の追跡を可能にするよう外部トラッキングシステム44と通信する。外部トラッキングシステム44は、(例えば、コンピュータビジョン、追跡マーカ、又はそれらの組み合わせを使用して)ユーザ10の身体部分の検出及び追跡を可能にするために、例えば、光学カメラ、赤外線カメラ、レーダーユニット、LiDARユニット、などを含んでよい。
図7Bは、コンピューティングシステム100を、外部トラッキングシステム44とは別であるものとして表しているが、他の例では、コンピューティングシステム100は、トラッキングシステム44と一体化されてもよい。
【0118】
図7Aの例と同様に、物理環境は、対象オブジェクト42aを含むオブジェクト42を含む。コンピューティングシステム100は、FOV46内のオブジェクト42及びユーザを検出及び追跡することができる。この例で、第1原点[Vp,Vd]は、ユーザの頭の姿勢(例えば、トラッキングシステム44によって追跡される)に対応して決定され、第2原点[Hp,Hd]は、ユーザの手の姿勢(例えば、トラッキングシステム44によって追跡される)に対応して決定される。他の例では、トラッキングシステム44は、第1原点及び第2原点を決定するためにユーザ10の任意の他の2つの異なる身体部分を追跡してもよい。トラッキングシステム44は、第1及び第2姿勢データ、又は第1原点及び第2原点を、コンピューティングシステム100へ通信してよい。コンピューティングシステム100は、物理環境40のビュー(例えば、コンピューティングシステム100のディスプレイ(図示せず)により出力される)に対するオーバーレイとして仮想的な第1光線及び第2光線の視覚化をレンダリングする。
【0119】
第1光線と第2光線との間の実際の交差点又は投影された交差点が決定され、これは、第1光線と第2光線との交点Pとして決定される。対象オブジェクト42aは第1光線と第2光線との決定された交点Pと一致するので、対象オブジェクト42aは暫定的に選択されたオブジェクトとして識別される。暫定的に選択された対象オブジェクト42aの識別は、コンピューティングシステム100によって出力されてよい(例えば、対象オブジェクト42aの識別(例えば、デバイス名)が、コンピューティングシステム100によって表示又は発話されてよい)。対象オブジェクト42aは、次いで、選択の確認を受け取った(例えば、対象オブジェクト42aがタイマの満了後に暫定的に選択されたままである)後に、選択されたオブジェクトとして識別される。
【0120】
図7Cで、方法400は、コンピューティングシステム100としての非ウェアラブル、非ハンドヘルドデバイス(例えば、デスクトップデバイス、スマートアプライアンス、又はワークステーション)によって実行され、コンピューティングシステム100は、物理環境40におけるユーザ10の追跡を可能にするようセンサ(例えば、光学カメラ、赤外線カメラ、レーダーユニット、LiDARユニット)を含む。
【0121】
図7Cの例は、
図7Bの例に類似している。しかし、
図7Cの例では、コンピューティングシステム100自身が対象オブジェクト42aである。例えば、コンピューティングシステム100はスマートアプライアンス(例えば、スマートテレビ、スマート冷蔵庫、スマートスピーカ、など)であってよい。コンピューティングシステム100が、ユーザ10によって選択される対象オブジェクト42aとして自身を識別した後、コンピューティングシステム100は、ユーザ10がコンピューティングシステム100と相互作用することを可能にするよう更なる動作を実行してよい(例えば、選択メニューを表示する)。
【0122】
いくつかの例で、遠位選択サブシステム300は、デスクトップデバイスであるコンピューティングシステム100によって実行されてよい。デスクトップコンピューティングシステム100は、ディスプレイ104を供給する表示デバイス(例えば、HMDデバイスなどのウェアラブルデバイス)と(例えば、有線接続又は無線接続を介して)通信してよい。コンピューティングシステム100は、ハンドヘルドコントローラ102、I/Oデバイス106、又は外部トラッキングシステム44とも通信してよい。コンピューティングシステム100は、第1原点及び第2原点を決定するために使用され得るセンサデータをHMDデバイス、I/Oデバイス106、ハンドヘルドコントローラ102、及び/又は外部トラッキングシステム44から受信してよい。コンピューティングシステム100は、上述されたように、XR環境20をレンダリングするよう(例えば、任意の遮蔽仮想オブジェクトの不透明度を変更するよう)、又は物理環境40のビューを供給するよう、コマンドを表示デバイスに供給してよい。
【0123】
いくつかの例で、XR環境20は、非没入方法でレンダリングされてもよい。例えば、コンピューティングシステム100は、デスクトップディスプレイ104(例えば、コンピュータモニタ)に3D表示シーンとしてXR環境20をレンダリングするデスクトップデバイスであってよい。第1原点及び第2原点は、ユーザの頭の追跡(例えば、コンピューティングシステム100で実行される眼球追跡又は頭部追跡ソフトウェアを使用する)及び手で操作する入力デバイス(例えば、マウス)からの追跡入力に基づき決定されてよい。
【0124】
ユーザの頭及び/又は手の追跡のための、及び/又はXR環境20のレンダリングのための他のシステムは、本開示の範囲内で可能であり得る。
【0125】
様々な例で、本開示は、2つの投影光線を使用した3D環境(3D XR環境又は3D物理環境を含む)におけるオブジェクト又は位置の選択のためのシステム及び方法について記載している。3Dにおいて投じられた2つの光線の交点を使用することによって、XR環境又は物理環境におけるオブジェクト又は位置は、選択されたオブジェクト又は位置として識別され得る。開示されている方法及びシステムは、いくつかの既存の方法及びシステムと比較して、より速くかつより直感的なオブジェクト又は位置の選択を可能にし得る。
【0126】
XR環境における任意の遮蔽仮想オブジェクトの不透明度は、選択されるべき対象オブジェクト又は位置のより容易な視覚化を可能にするよう調整(例えば、半透明にレンダリング)されてよい。ユーザが遮蔽仮想オブジェクトを回避するために姿勢を変える必要がないので、これは対象オブジェクト又は位置のより容易な選択も可能にする。
【0127】
本開示は、実際の3D交差点を計算するための、及び投影された3D交差点を計算するためのいくつかの例示的なアルゴリズム及び式を記載している。様々な異なるアルゴリズムがそれらの計算に使用されてよいことが理解されるべきである。
【0128】
本明細書で記載される例は、数ある中でも特に、拡張現実(AR)、仮想現実(VR)及び/又はゲーム機アプリケーションに適用可能であり得る。本明細書で記載される例は、数ある中でも特に、スマートデバイス、IoTデバイス、及び/又はスマートアプライアンスとのインタラクションにも適用可能であり得る。
【0129】
本開示は、特定の順序でステップを含む方法及びプロセスについて記載しているが、方法及びプロセスの1つ以上のステップは、必要に応じて、省略又は変更されてよい。1つ以上のステップは、必要に応じて、それらが記載されているの順序以外の順序で行われてもよい。
【0130】
本開示は、少なくとも部分的に、方法に関して記載されているが、当業者は、本開示が、記載されている方法の側面及び特徴の少なくとも一部を実行するための、ハードウェアコンポーネント、ソフトウェア、又はそれらの任意の組み合わせによるものである様々なコンポーネントにも向けられていることを理解するだろう。従って、本開示の技術的解決法は、ソフトウェア製品の形で具現化されてよい。適切なソフトウェア製品は、例えば、DVD、CD-ROM、USBフラッシュディスク、リムーバブルハードディスク、又は他の記憶媒体を含む、事前記録された記憶デバイス又は他の類似した不揮発性の若しくは非一時的なコンピュータ可読媒体に記憶されてもよい。ソフトウェア製品には、本明細書で開示されている方法の例を処理デバイス(例えば、パーソナルコンピュータ、サーバ、又はネットワークデバイス)が実行する、そこに有形に記憶されている命令を含む。
【0131】
本開示は、特許請求の範囲の対象から逸脱せずに、他の具体的な形態で具現化されてもよい。記載されている例示的な実施形態は、全ての点で単に例示であって限定ではないと見なされるべきである。上記の実施形態のうちの1つ以上からの選択された特徴は、明示的に記載されていない代替の実施形態を形成するために組み合わされてもよく、そのような組み合わせに適した特徴は、本開示の範囲内で理解される。
【0132】
開示されている範囲内の全ての値及び部分範囲も開示されている。また、本明細書に開示及び図示されているシステム、デバイス、及びプロセスは、特定の数の要素/コンポーネントを有し得るが、システム、デバイス、及びアセンブリは、追加の又はより少ないそのような要素/コンポーネントを含むように修正することができる。例えば、開示されている要素/コンポーネントのいずれも単数であるとして言及される場合があるが、本明細書で開示されている実施形態は、複数のそのような要素/コンポーネントを含むように修正することができる。本明細書で記載されている主題は、技術における全ての適切な変更を網羅し包含することを意図している。
【0133】
[相互参照]
本願は、2020年12月18日付けで「METHODS AND SYSTEMS FOR SELECTION OF OBJECTS」との発明の名称で出願された米国特許出願第17/127,022号の優先権を主張するものであり、先の米国特許出願は、参照により本願に援用される。