特定の実施形態を詳細に示す図面に移る前に、本開示は、明細書に記載されるかまたは図面に例示される、詳細もしくは方法論に限定されないことが理解されるべきである。また、本明細書で使用する専門用語は、単に説明のためのものであって限定とみなされるべきでないことが理解されるべきである。
ARおよびVRシステムは、仮想環境(例えば、シミュレーション環境)を表すため、HMD(頭部装着型ディスプレイ(HWD)と呼ばれることもある)を使用して、画像をユーザに提示することができる。そのシステムは、仮想環境に対するユーザ体験を没入型にするために有用であり得る。HMDは、画像が現実的な奥行きを伴って知覚されるように、画像を提示することができる。例えば、HMDは、左目画像および右目画像を順次または同時に提示して、ユーザが3D環境を知覚できるようにすることなどによって、立体的に見えるよう画像を提示するのに使用することができる。例えば、VRシステムは、仮想環境に関する表示データを生成し、ユーザと仮想環境との相互作用に応答して表示データを更新するアプリケーションの動作に基づいて、画像を生成することができる。かかる相互作用は、VRシステムの動きセンサによって検出される実世界における移動、ならびに仮想環境に提示されたアイテムとの相互作用を含むことができる。VRシステムは、実世界で歩くことによって移動し、手を移動させているユーザを検出することができ、またかかる情報の検出に基づいて、表示データを生成し更新することができる。VRシステムは、表示データをユーザに提示するためにユーザが装着することができるHMD(例えば、ヘッドセット)、ならびにユーザが仮想環境と相互作用する際にユーザが操作することができる手持ちコントローラなどの、1つまたは複数のハンドデバイスを含むことができる。HMDおよびハンドデバイスはそれぞれ、ユーザの頭および手の移動に関する、速度または加速度データなどの動きデータを生成することができる、動きセンサを含んでもよい。
HMDを装着すると、実世界環境内の障害物をユーザが見ることを妨げる場合がある。例えば、ユーザは、障害物もしくは境界に不意にぶつかったり、足を踏み入れたり、つまずいたりする場合がある。ユーザがかかる衝突を回避する助けとするため、セーフティオーバーレイ(safety overlay)などの警告をユーザに提示することができる。しかしながら、警告の早すぎるまたは頻繁すぎる表示は、没入感を失わせる恐れがあり、また衝突の確率が低いときに警告が提示された場合、警告の重大度を識別するのが困難になる恐れがある。例えば、実世界の壁の表現がHMDを介した視界にだんだんと現れ、ユーザが没入することを期待する仮想環境に取って代わると、没入感が失われることがある。同様に、警告の遅すぎる表示は、ユーザが適時に反応して衝突を回避するのを困難にすることがある。いくつかの例では、ユーザは、実世界の障害物(没入感を低減する恐れがある)から差し込まれてもよい仮想境界を描画するなどによって、ユーザの好みに基づいて障害物の境界を手動で設定するが、一部のユーザは、没入感を失うようなら警告システムをオフにしてしまうことがある。ARおよびVRシステムは繋がれていなくてもよいので、ユーザは、より大きい移動の自由度を有することができるようになるが、衝突の確率も増加することがある。
本発明の解決策の特定の態様によるシステムおよび方法は、頭、手、またはそれらの任意の組み合わせの移動に対応する動きデータを、ユーザが移動している実世界に存在する障害物に関する情報と併せて使用して、ユーザが実世界環境内を移動している間、仮想環境でHMDによって表示される障害物衝突警告を生成することができるため、没入感を有効に維持するとともに有用な適時の警告を提供することができる。いくつかの実施形態では、システムは、ユーザが壁などの実世界の障害物に近付いているときにユーザに注意喚起する、視覚的合図をVRディスプレイ内で提供することができる。システムは、頭の移動と関連付けられた速度および手の移動と関連付けられた速度などの動きパラメータ、ならびに実世界の障害物所在位置に関する所定のまたはユーザ定義データに基づいて、視覚的合図を生成することができる。頭の位置はユーザの全体位置をより正確に反映する可能性があるので、システムは、頭の動きを手の動きよりも重要視するなど、頭および手に関して異なる推定を使用することができる。システムは、人間の到達範囲のP95またP99など、人間の到達範囲の予想プロファイルに基づいて位置推定を限定し、視覚的合図を起動させるために頭の移動の最小距離を使用することができる。
システムは、ユーザの視野内における障害物の範囲を表す角度に変換することができ、ユーザの移動方向に基づいて位置決めすることができる、障害物に対するユーザの推定位置に基づいて、スコア(例えば、危険スコア)を決定することができる。
システムは、注意喚起機能と、視覚的合図によって生じる恐れがあるユーザの没入体験の破壊を最小限に抑える必要性とのバランスを取る形で、視覚的合図を選択的に提示することができる。例えば、システムは、合図がなければ気づくことが困難であろう、ユーザの横または後ろにある障害物についてユーザに注意喚起する助けとなる、周辺的な視覚的合図を提供しながら、ユーザの目の前に監視者がいることの視覚的な影響を最小限に抑えることができる。システムは、周辺情報のコントラストを増加させて、ユーザがより簡単に認識できるようにすることができる。システムは、ユーザが移動していないときは、視覚的合図を次第に暗くして、最小限の合図(例えば、頭またはコントローラの周囲の小さいインジケータ)にすることができる。
システムは、障害物からのバッファとして作用するように、最小半径を頭および手に割り当てることができる。頭の半径は手の半径よりも比較的大きいものであり得る。バッファは、視覚的合図が十分な空間で提示されることを担保することができ、それによって例えば、視覚的合図が最大不透明度で表示される前に、ユーザの手が物理的障害物に触れることがなくなる。
システムは、速度データ(例えば、手に関する)を平滑化して、誤検出を回避することができる。例えば、システムは、所定の期間(例えば、0.15秒)にわたる速度の時間平均を取ることができ、それによって、速度は速いが持続時間が短い、したがって、実際の距離(例えば、コントローラのフリック)が短い、移動が、視覚的合図を誘発する誤検出をもたらす確率を低減することができる。
システムは、プレイ空間のサイズ、最近行われた移動、アプリケーション固有の挙動、ユーザ固有の訓練モデル、およびシステムの成否を示すフィードバックなどの様々な要因に基づいて、注意喚起表示の規模の誘因となる条件を動的に見積もることができる。システムは、移動する障害物を検出するなど、速度情報を計算するため、奥行きマッピングを使用することができる。
次に図1を参照すると、システム100は、複数のセンサ104a...nと、処理回路116と、1つまたは複数のディスプレイ164とを含むことができる。システム100は、図2を参照して記載するHMDシステム200を使用して実現することができる。システム100は、図4を参照して記載するコンピューティング環境を使用して実現することができる。システム100は、ARおよびVRシステムの特徴を組み込み、またかかる特徴を実現するのに使用することができる。処理回路116の少なくとも一部は、グラフィックス処理装置(GPU)を使用して実現することができる。処理回路116の機能は、複数の処理装置を使用して分散された形で実行することができる。
処理回路116は、1つまたは複数の回路、プロセッサ、および/またはハードウェア構成要素を含んでもよい。処理回路116は、本明細書に記載する動作のいずれかを実施する、任意の論理、機能、または命令を実装してもよい。処理回路116は、回路、プロセッサ、またはハードウェア構成要素のいずれかによって実行可能な、任意のタイプおよび形態の実行可能命令を含むことができる。実行可能命令は、アプリケーション、プログラム、サービス、タスク、スクリプト、ライブラリプロセス、および/またはファームウェアを含む、任意のタイプのものであってもよい。画像レンダラー160、警告生成器148、障害物追跡装置140、対象物検出器136、動き検出器120、および衝突検出器132を含むがそれらに限定されない、処理回路116の構成要素はいずれも、それぞれの機能および動作を実施する、ハードウェア、回路、および実行可能命令の任意の組み合わせまたは構成であってもよい。処理回路116の少なくともいくつかの部分は、センサ104によって実行される画像処理を実施するのに使用されてもよい。
センサ104a...nは、ビデオカメラを含む、画像取込みデバイスまたはカメラであることができる。センサ104a...nは、システム100のSWAPを低減する助けとすることができる、比較的低品質の(例えば、鮮鋭度、解像度、またはダイナミックレンジが比較的低い)画像を生成するカメラであってもよい。例えば、センサ104a...nは、数百ピクセル×数百ピクセル程度の解像度を有する画像を生成することができる。同時に、本明細書に記載するようなシステム100によって実行されるプロセスは、奥行き特性を含む所望の品質特性を有するユーザに対して表される表示画像を生成するのに使用することができる。
センサ104a...n(本明細書では概してセンサ104と呼ばれる)は、任意のタイプの1つまたは複数のカメラを含むことができる。カメラは、可視光カメラ(例えば、カラーおよび白黒)、赤外線カメラ、またはそれらの組み合わせであることができる。センサ104a...nはそれぞれ、本明細書では概してレンズ108と呼ばれる、1つまたは複数のレンズ108a...jを含むことができる。いくつかの実施形態では、センサ104はレンズ108ごとにカメラを含むことができる。いくつかの実施形態では、センサ104は、複数のレンズ108a...jを有する単一のカメラを含む。いくつかの実施形態では、センサ104は、複数のレンズ108をそれぞれ備えた複数のカメラを含むことができる。センサ104の1つまたは複数のカメラは、所定の解像度で、ならびに/あるいは所定の視野を有するように選択もしくは設計することができる。いくつかの実施形態では、1つまたは複数のカメラは、HMDの視野などにおいて、対象物を検出し追跡するための、解像度および視野を有するように選択および/または設計される。1つまたは複数のカメラは、画像取込みデバイスによって撮影される場面または環境における対象物の追跡、および本明細書に記載する衝突検出技術の実施など、複数の目的に使用されてもよい。
センサ104およびレンズ108の1つまたは複数のカメラは、HMDのユーザまたは装着者の左目の視界およびユーザまたは装着者の右目の視界に対応するように、HMD上に装着、統合、組み込み、または配置されてもよい。例えば、HMDは、装着者の左目またはその周囲に対応してHMDの左側に正面を向いて装着された第1のレンズを有する第1のカメラと、装着者の右目またはその周囲に対応してHMDの右側に正面を向いて装着された第2のレンズを有する第2のカメラとを含んでもよい。左側カメラおよび右側カメラは、立体画像を取り込むための正面を向いた一対のカメラを形成してもよい。いくつかの実施形態では、HMDは、第1と第2のカメラとの間にある第3のカメラであって、HMDの上部に向けられ、第1、第2、および第3のカメラの間で三角形を形成する、第3のカメラなど、1つまたは複数の追加のカメラを有してもよい。この第3のカメラは、本発明の解決策の奥行きバッファ生成技術を実施する際の三角測量技術に、ならびに対象物追跡のために、使用されてもよい。
システム100は、第1のレンズ108aを含む第1のセンサ(例えば、画像取込みデバイス)104aであって、第1の視界の第1の画像112aを取り込むように配置された第1のセンサ104aと、第2のレンズ108bを含む第2のセンサ104bであって、第2の視界の第2の画像112bを取り込むように配置された第2のセンサ104bとを含むことができる。第1の視界および第2の視界は、異なる視点に対応して、奥行き情報を第1の画像112aおよび第2の画像112bから抽出することができるようにしてもよい。例えば、第1の視界は左目の視界に対応してもよく、第2の視界は右目の視界に対応してもよい。システム100は、第3のレンズ108cを含む第3のセンサ104cであって、第3の視界の第3の画像112cを取り込むように配置された第3のセンサ104cを含むことができる。図2を参照して記載するように、第3の視界は、第1のレンズ108aと第2のレンズ108bとの間の軸線から離間された上側視界に対応してもよく、第1のレンズ108aと第2のレンズ108bとの間の軸線に実質的に平行な縁部(例えば、テーブルの縁部)など、第1のセンサ104aおよび第2のセンサ104bでは対処するのが困難なことがある奥行き情報を、システム100がより有効に扱えるようにすることができる。
センサ104a...nによって取り込まれた画像の光は、1つまたは複数のレンズ108a...jを通して受け取ることができる。センサ104a...nは、1つまたは複数のレンズ108a...jを介して受け取った光を検出し、受け取った光に基づいて画像112a...kを生成することができる、電荷結合素子(CCD)または相補型金属酸化膜半導体(CMOS)回路を含むがそれらに限定されない、センサ回路を含むことができる。例えば、センサ104a...nは、センサ回路を使用して、第1の視界に対応する第1の画像112aおよび第2の視界に対応する第2の画像112bを生成することができる。1つまたは複数のセンサ104a...nは、画像112a...kを処理回路116に提供することができる。1つまたは複数のセンサ104a...nは、画像112a...kに対して画像処理が実行されるときに画像112a...kの同期を容易にすることができる、画像112a...kに対応するタイムスタンプを提供することができる。
センサ104は、HMDのユーザ(例えば、装着者)の両目または頭の位置、向き、もしくは注視方向などの情報を提供することができる、視線追跡センサ104または頭追跡センサ104を含むことができる。いくつかの実施形態では、センサ104は、頭追跡動作のために画像を提供するように構成されたインサイドアウト追跡カメラである。センサ104は、ユーザの片目もしくは両目の位置または向きのうち少なくとも1つに対応するデータなどの視線追跡データを提供する、視線追跡センサ104であることができる。いくつかの実施形態では、センサ104は、目に向かって光(例えば、赤外光)を放射し、放射光の反射を検出することなどによって、目の動きを光学的に測定することができる。センサ104は、(例えば、HMD外の環境の画像を取り込むセンサ104と比較して)ユーザの目に向かう方向に配向することができる。例えば、センサ104は、ユーザの目に向かって配向されて、ユーザの目に関するセンサデータを検出することができる、少なくとも1つの第4のセンサ104d(例えば、図2に示される)を含むことができる。いくつかの実施形態では、頭追跡センサ104は、(例えば、HMDの)頭の位置、速度、または加速度のうち少なくとも1つを含む動きデータを生成する。
センサ104は、ユーザの1つもしくは複数の手の位置または向きなどの情報を提供することができる、手追跡センサ104を含むことができる。手追跡センサ104は、(例えば、図2を参照して記載するような、手によって操作されるハンドデバイス224の)それぞれの手の位置、速度、または加速度のうち少なくとも1つを含む、動きデータを生成することができる。頭追跡センサ104および手追跡センサ104は、慣性計測装置(IMU)、加速度計、ジャイロスコープ、磁力計(例えば、磁気コンパス)、またはそれらの任意の組み合わせなど、様々な位置センサのいずれかを含むことができる。センサ104は、脚センサまたは胴体センサなど、様々な身体位置センサを含むことができる。
センサ104は、センサ104周囲の環境の画像112を取り込むことができる。例えば、センサ104は、HMDのユーザの視野内または視野周囲の環境の画像112を取り込むことができる。画像112は、環境から取り込まれた光のパラメータ(例えば、色、明るさ、強度)を表す、色またはグレースケールアレイまたはピクセル行列など、環境の表現であることができる。環境は、自然および人工両方の構造物、地形、あるいは空、雲、道路、建物、通り、歩行者、または自転車走行者を含む他の対象物を含む、屋内または屋外環境であることができる。環境は、センサによって取り込まれた画像112によって表すことができる、1つまたは複数の対象物(例えば、実世界対象物)を含むことができる。
処理回路116は動き検出器120を含むことができる。動き検出器120は、センサ104から受信したセンサデータに基づいて、ユーザの頭もしくは手の移動を検出し監視するなどの機能を実施する、任意の機能、動作、ルーチン、論理、または命令を含むことができる。例えば、動き検出器120は、(頭または1つもしくは複数の手の)速度または加速度のうち少なくとも1つを含むセンサデータを受信し、受信したセンサデータに基づいて動きデータを生成することができる。動き検出器120は、センサデータに応答して、位置または向きのうち少なくとも1つを含む、動きデータを生成することができる。いくつかの実施形態では、センサ104は、センサ104の処理ハードウェアを使用して動きデータを生成し、動きデータを処理回路116に提供するなど、動き検出器120を少なくとも部分的に実現することができる。
動き検出器120は、特定の基準系で動きデータを生成することができる。例えば、動き検出器120は、センサ104から受信したセンサデータから向きデータを取得し、向きデータを使用して、センサデータをシミュレーション生成器152で使用される基準系に変換して、どの画像レンダラー160が表示画像を生成するかに基づいて仮想環境を生成することができる。HMDは、ユーザがHMDを使用しながらシミュレーション環境をどのように知覚するかに対応するベースライン基準系を表すことがあるので、動き検出器120は、センサデータを、HMDの位置または向きのうち少なくとも1つに対応する基準系に変換することができる。
いくつかの実施形態では、動き検出器120は手追跡装置124を含む。手追跡装置124は、ユーザの1つまたは複数の手に関するセンサデータを、1つまたは複数の対応する手追跡センサ104から受信し、受信したセンサデータに基づいて、1つまたは複数の手の位置、速度、または加速度のうち少なくとも1つを含む動きデータを生成することができる。例えば、手追跡装置124は、ハンドデバイス224と結合された手追跡センサ104からセンサデータを受信して、ハンドデバイス224(およびしたがってユーザの手)の動きを示す動きデータを決定することができる。手追跡装置124は、位置、向き、速度、もしくは加速度データ(またはそれらの組み合わせ)のログを維持して、ユーザの1つまたは複数の手を追跡することができる。手追跡装置124は、いくつかの実施形態では、加速度計、位置センサ、および/または速度センサを含む。
いくつかの実施形態では、動き検出器120は頭追跡装置128を含む。頭追跡装置128は、ユーザの頭に関するセンサデータを、1つまたは複数の対応する頭追跡センサ104から受信し、受信したセンサデータに基づいて、頭の位置、速度、または加速度のうち少なくとも1つを含む動きデータを生成することができる。例えば、頭追跡装置128は、HMDと結合された頭追跡センサ104からセンサデータを受信して、HMD(およびしたがってユーザの頭)の動きを示す動きデータを決定することができる。頭追跡装置128は、位置、向き、速度、もしくは加速度データ(またはそれらの組み合わせ)のログを維持して、ユーザの頭を追跡することができる。頭追跡装置128は、いくつかの実施形態では、加速度計、位置センサ、および/または速度センサを含む。
処理回路116は衝突検出器132を含むことができる。衝突検出器132は、ユーザとユーザの周囲の実世界環境内にある1つまたは複数の障害物との、衝突までの距離、衝突までの時間、または衝突の確率を決定するなどの機能を実施する、任意の機能、動作、ルーチン、論理、または命令を含むことができる。衝突検出器132は、動き検出器120によって生成される動きデータを、障害物追跡装置140によって提供される障害物に関する情報とともに使用して、ユーザと1つまたは複数の障害物との間で起こり得る衝突に関する情報を決定することができる。衝突検出器132は、衝突までの距離、衝突までの時間、または衝突の確率などのパラメータを含む、起こり得る衝突の指示を生成することができる。
衝突までの距離を決定するため、衝突検出器132は、動き検出器120から受信した動きデータに基づいて、ユーザの位置を決定し、ユーザの位置を1つまたは複数の障害物の位置と比較することができる。ユーザの位置は、ユーザの頭の位置、ユーザの1つもしくは複数の手の位置、あるいは、体形のモデルを取得し、頭および手の位置をモデルに登録することなどによって、頭および手の位置を組み合わせることによって衝突検出器132が決定することができる、ユーザの身体に関する補間された位置のうち、少なくとも1つを含むことができる。衝突検出器132は、位置を減算することによってユーザの位置を1つまたは複数の障害物の位置と比較することによって、衝突までの距離を決定することができる。
いくつかの実施形態では、衝突検出器132は、最小半径を頭の位置に適用することによって、頭の位置を決定することができる。これは、1つまたは複数の障害物に突き当たる、プレイ空間(例えば、仮想環境)の縁部を規定するのを容易にし、衝突までの距離がゼロまで減少すると衝突検出器132が決定する前に、ユーザの身体が1つまたは複数の障害物に接触する状況を回避することができる。いくつかの実施形態では、最小半径は、10センチメートル以上、50センチメートル以下である。いくつかの実施形態では、最小半径は、20センチメートル以上、40センチメートル以下である。いくつかの実施形態では、最小半径は、25センチメートル以上、35センチメートル以下である。最小半径は、人体の幅またはHMDのサイズと同程度のサイズであることができる。
衝突検出器132は、1つまたは複数の手の位置に最小半径を適用することによって、片手または両手の位置を決定することができ、それによって同様に、衝突までの距離がゼロまで減少すると衝突検出器132が決定する前に、ユーザの手が1つまたは複数の障害物に接触する確率を低減することができる。1つまたは複数の手の位置に適用される最小半径は、頭の位置に適用される最小半径よりも小さい値であり得る。
いくつかの実施形態では、衝突検出器132は、頭の位置、および1つまたは複数の手の到達範囲に関する所定の特性に基づいて、1つまたは複数の手の位置を限定する。例えば、衝突検出器132は、予想最大距離に対する1つまたは複数の手の位置および頭の位置の間の差を比較し、差が予想最大距離よりも大きいことに応答して、予想最大距離に基づいて1つまたは複数の手の位置を修正することができる(例えば、頭の位置に対する1つまたは複数の手の向きベクトルを決定し、予想最大距離以下である向きベクトルに沿って、1つまたは複数の手の位置から頭の位置までの距離を低減することによる)。いくつかの実施形態では、予想最大距離は、人間の到達範囲の95パーセンタイルまたは99パーセンタイルを示す値など、人体のモデルに対応する。いくつかの実施形態では、予想最大距離は1メートルである。
衝突検出器132は、ユーザに関するユーザプロファイルに基づいて最大距離を決定することができる。例えば、ユーザプロファイルは、身長、到達範囲、または標的警告表示率など、ユーザに関するユーザプロファイルデータを含んでもよい。処理回路116は、HMDまたはVRシステムのユーザインターフェースを介して(例えば、処理回路116によって操作されるアプリケーションを介して)、ユーザプロファイルデータを要求することができる。処理回路116は、位置センサ104または動き検出器120を使用してユーザの移動範囲を検出することなどによって、HMDまたはVRシステムの使用を監視して、ユーザプロファイルデータを検出することができる。いくつかの実施形態では、処理回路116は、手を伸ばす動きなどの移動を実施するようにユーザに要求する命令を、HMDまたはVRシステムを介して提供することなどによって、HMDもしくはVRシステム(または、HMDもしくはVRシステムによって操作される1つもしくは複数のアプリケーション)の初期化プロセスに応答して、ユーザプロファイルデータを要求または検出する。
衝突検出器132は、衝突までの距離、および動きデータの速度データまたは加速度データのうち少なくとも1つを使用して、衝突までの時間を決定することができる。例えば、衝突検出器132は、衝突までの距離を速度で割って、衝突までの時間を決定することができる。
いくつかの実施形態では、衝突検出器132は、所定の持続時間にわたって動きデータを平滑化する。動きデータを平滑化する(例えば、速度もしくは加速度データを平滑化する)ことによって、衝突検出器132は、他の場合では、ハンドデバイス224の高速フリックなど、短い、迅速な、またはインパルスのような移動によってもたらされるであろう、警告生成器148による誤認警告の誘発の確率を低減することができる。衝突検出器132は、所定の持続時間にわたる動きデータの平均値を決定することができ、平均値を使用して衝突までの時間を決定することができる。いくつかの実施形態では、所定の持続時間は1秒未満である。いくつかの実施形態では、所定の持続時間は、0.05秒以上、0.50秒以下である。いくつかの実施形態では、所定の持続時間は、0.1秒以上、0.3秒以下である。いくつかの実施形態では、所定の持続時間0.15秒である。衝突検出器132は、衝突検出器132が動きデータを処理する現在時間から逆算した所定の持続時間にわたって動きデータをサンプリングする(例えば、動きデータの過去0.15秒をサンプリングする)ことによって、動きデータを平滑化することができる。いくつかの例では、動きデータの平滑化はレイテンシをもたらすが、しかしながら、レイテンシ効果は、推定時間(例えば、衝突検出もしくは警告生成が行われる時間、または衝突検出が起こる割合)を増加させることによって、緩和またはオフセットすることができる。
衝突検出器132は、衝突までの距離、衝突の時間、および動きデータなどのパラメータを使用して、衝突の確率を決定することができる。例えば、衝突検出器132は、衝突までの距離もしくは衝突の時間が減少(または増加)するにつれて、比較的高い(または低い)衝突の確率を生成することができる。衝突検出器132は、速度もしくは加速度の方向に応じて、比較的高い(または低い)衝突の確率を生成することができ、例えば、速度が、ユーザが1つもしくは複数の障害物に向かって(またはそこから離れて)移動していることを示している場合、あるいは加速度が、1つまたは複数の障害物に向かう移動の割合が増加している(または減少している)ことを示している場合、衝突の確率は比較的高い(または低い)ものであり得る。
いくつかの実施形態では、衝突検出器132は速度データを衝突データとして提供する。例えば、本明細書に更に記載するように、警告生成器148は、速度データを速度閾値と比較し、速度閾値を超える速度データに応答して警告を生成することができる。
処理回路116は対象物検出器136を含むことができる。対象物検出器136は、実世界環境における障害物およびその位置または移動を検出するなどの機能を実施するのに、任意の機能、動作、ルーチン、論理、または命令を含むことができる。対象物検出器136は、画像112をセンサ104から受信することができる。対象物検出器136は、画像112または画像112の部分を処理して、画像112によって表される1つまたは複数の対象物を検出することができる。例えば、対象物検出器136は、ピクセルまたはピクセル群を処理して、ピクセルもしくはピクセル群の間の色、形状、エッジ、コントラスト、およびピクセル間の空間的関係を示すことによるなど、ピクセルもしくはピクセル群などの画像112の要素を処理することによって、画像112によって表される対象物を検出または識別することができる。対象物検出器136は、空間フィルタ、セグメント化、または対象物を検出するように訓練された機械学習モデルを実行することによって、対象物を検出することができる。対象物検出器136は、エッジを表すピクセル群などの候補対象物を画像112から識別し、候補対象物を1つまたは複数のテンプレート対象物(例えば、対象物データベースにおけるテンプレート対象物もしくはその特徴)と比較し、テンプレート対象物と一致する候補対象物に基づいて、画像112の対象物を特定することができる。対象物検出器136は、様々な対象物認識アルゴリズムまたはモデルを適用して、対象物を識別することができる。対象物は、実世界のまたはシミュレートした対象物であることができる。
いくつかの実施形態では、対象物検出器136は、画像112における対象物のタイプ、分類、または他の識別子を具体的に識別しない。対象物検出器136は、対象物がセンサ104によって検出されていることの指示をセンサ104から受信することができる。例えば、対象物検出器136は、特定の画像112が対象物を表すことの指示を受信することができる(その場合、対象物検出器136は、画像112を処理して、対象物に対応する1つまたは複数のピクセルを処理することができる)。いくつかの実施形態では、指示は、対象物に対応する1つまたは複数のピクセルを含むことができる。
いくつかの実施形態では、対象物検出器136は、様々な対象物、建物、構造、道路、または他の屋内および屋内の特徴の所在位置データを含むことができる、対象物データベースを使用して対象物を検出する。例えば、対象物検出器136は、対象物データベースと通信して、対象物または対象物の特徴を位置データにマッピングすることができる。対象物データベースはまた、タイプ、分類、形状、色、サイズ、または対象物に関する他の特徴に関する情報など、対象物に関する意味情報または文字情報を維持してもよい。対象物検出器136は、HMDまたはVRシステムの位置に関するデータを(例えば、図2を参照して記載した位置センサ220から)受信し、データを使用して、1つまたは複数の候補対象物を対象物データベースから取得することができる。対象物検出器136は、センサデータを、1つまたは複数の候補対象物に関する対象物データベースによって維持された1つまたは複数の候補対象物および情報と比較して(例えば、センサデータを対象物データベースから受信した情報と一致させることによって)、対象物を識別することができる。いくつかの実施形態では、対象物データベースは、障害物追跡装置140を参照して記載した、障害物のデータベースからのデータを含み、対象物検出器136は、検出された対象物を使用して、障害物のデータベースにおける障害物の所在位置を更新することができる。
対象物検出器136は、画像112、または画像が対象物を表すことの指示など、センサ104から受信した情報を使用して、対象物の位置を決定することができる。例えば、対象物検出器136は、対象物に対応する1つまたは複数のピクセルを識別することができる。いくつかの実施形態では、対象物検出器136は、対象物に対応する1つまたは複数のピクセルを対象物の位置として割り当てることなどによって、対象物の位置を画像112の画像空間内の位置として決定する。いくつかの実施形態では、対象物検出器136は、奥行き情報を使用して対象物の位置を決定することなどによって、対象物の位置を三次元空間(例えば、実世界空間、ARまたはVR空間、HMDまたはVRシステムの周囲の環境における空間)内の位置として決定する。
処理回路116は障害物追跡装置140を含むことができる。障害物追跡装置140は、1つまたは複数の障害物の位置および動きを追跡するなどの機能を実施するのに、任意の機能、動作、ルーチン、論理、または命令を含むことができる。いくつかの実施形態では、障害物追跡装置140は、障害物および障害物と関連付けられた所在位置のデータベースを維持する。いくつかの実施形態では、障害物追跡装置140は、対象物検出器136から障害物位置データを受信する。
いくつかの実施形態では、障害物追跡装置140は、プレイ空間内の障害物に関するデータベースを維持する。データベースは、ハンドデバイス224の操作(例えば、壁、ドア、床、天井、もしくはプレイ空間内の対象物の描画)を介して提供されるユーザ入力など、障害物所在位置を示すユーザ入力に基づいて生成することができる。
障害物追跡装置140は奥行きマッパー144を含むことができる。奥行きマッパー144は、障害物追跡装置140が追跡した1つまたは複数の障害物に関する奥行き情報を生成するなどの機能を実施するのに、任意の機能、動作、ルーチン、論理、または命令を含むことができる。奥行きマッパー144は、画像112をセンサ104から受信し、画像112を使用して、奥行きマップ(例えば、奥行きバッファ)など、環境内の1つまたは複数の障害物に関する奥行き情報を生成することができる。奥行きマッパー144は、画像112a...kを取り込むのに使用される画像取込みデバイス104a...nに関する情報に基づいて、奥行き情報を生成することができる。例えば、奥行きマッパー144は、第1の画像112aを取り込むのに用いられた第1のレンズ108aと、第2の画像112bを取り込むのに用いられた第2のレンズ108bとの間のベースライン距離と、第1のレンズ108aの焦点距離とに基づいて、奥行きマップを生成することができる。奥行きマッパー144は、第1の画像112aの少なくとも1つの対応するピクセルに奥行き値を割り当てることによって、第1の奥行きマップを、また第2の画像112bの少なくとも1つの対応するピクセルに奥行き値を割り当てることによって、第2の奥行きマップを生成することができる。例えば、奥行きマッパー144は、第1の画像112aのピクセルに対応するピクセルのマトリックスとして第1の奥行きマップを生成することができ、第1の奥行きバッファピクセルはそれぞれ割り当てられた奥行き値を有する。奥行きマッパー144は、画像112a...kよりも低い解像度を有するように、奥行きマップを生成することができる。
処理回路116は警告生成器148を含むことができる。警告生成器148は、衝突検出器132から受信した動きデータおよび衝突データに応答して、1つまたは複数の障害物との起こり得る衝突に関する警告を生成するなどの機能を実施するのに、任意の機能、動作、ルーチン、論理、または命令を含むことができる。例えば、警告生成器148は、起こり得る衝突をHMDのユーザに警告するため、1つもしくは複数の障害物のアイコン、ラベル、または表現を選択的に生成することができる。例えば、警告生成器148は、1つまたは複数の障害物を表すグリッド状要素(例えば、グリッド状の壁)を示す、表示データを生成することができる。警告生成器148は、ユーザの移動の方向に対する1つまたは複数の障害物の実世界位置に対応するように、警告を生成することができる。
警告生成器148は、要因の様々な組み合わせを評価することによって、警告を生成することができる。例えば、警告生成器148は、ユーザが比較的速く移動していることを動きデータが示している場合であっても、ユーザが障害物から離れているときは、警告を生成せず、ユーザが移動していないことを動きデータが示している場合であっても、ユーザが障害物に近いときは、少なくとも最小限の警告を生成することができる。
いくつかの実施形態では、警告生成器148は、衝突データに基づいて、警告の1つまたは複数のパラメータ(例えば、警告がどのように表示されるべきかのパラメータ)を決定する。例えば、警告生成器148は、様々なフィルタ、機能、閾値、または他のプロセスに基づいた警告ポリシーを衝突データに適用して、警告を表示するか、またどのように表示するかを決定することができる。1つまたは複数のパラメータは、規模(例えば、明るさ、強度)、位置、コントラスト、色、頻度、または間欠性を含むことができる。例えば、警告生成器148は、衝突までの時間が減少するにつれて強度が増加する関数などの関数を、衝突検出器132から受信した衝突までの時間に適用して、衝突までの時間に基づいて警告の強度を決定することができる。
いくつかの実施形態では、警告生成器148は、衝突データに関する閾値を使用して、衝突データに基づいて、警告をいつどのように誘発し生成するかを決定する。例えば、警告生成器148は、衝突までの距離を閾値距離と比較し、距離が閾値距離よりも短いことに応答して警告を生成することができる。警告生成器148は、衝突までの時間を閾値時間と比較し、衝突までの時間が閾値時間よりも短いことに応答して警告を生成することができる。警告生成器148は、衝突の確率を閾値衝突確率と比較し、衝突の確率が閾値衝突確率よりも高いことに応答して警告を生成することができる。閾値は、所定のものであるか、ユーザ定義のものであるか、または本明細書に記載する様々な換算係数に応答して調節することができる。
いくつかの実施形態では、警告生成器148は、ユーザの1つまたは複数の手に関する動きデータよりも、ユーザの頭に関する動きデータの方により大きい重みを割り当てる。例えば、警告生成器148は、ユーザの頭に関する動きデータに対して、ユーザの1つまたは複数の手に関する動きデータに割り当てられる第2の重みよりも大きい、第1の重みを割り当てることができる。頭および手は一般的に異なる重みで移動し、頭の位置はユーザの位置をより一貫して表すことがあるので、ユーザの頭に関する動きデータに対するより大きい重みは、没入感を維持しながら適切な警告を提供するバランスを取る助けとなり得る。重みは、衝突データが最小閾値(例えば、それを上回ると警告が生成される最小閾値)と比較された場合に、衝突データ(例えば、衝突の確率)を増加させるか、または衝突データが最大閾値(例えば、それを下回ると警告が生成される最大閾値)と比較された場合に、衝突データ(例えば、衝突までの時間、衝突までの距離)を減少させるために適用することができる。重みは、それぞれの閾値を調節するために適用することができる。重みは、警告生成器148を、頭の動きよりも1つまたは複数の手の動きに対して低感度にするために、割り当てることができる。
いくつかの実施形態では、警告生成器148は、頭に関する衝突までの距離を1つまたは複数の手に関する衝突までの距離と比較して評価するときに、異なる閾値を適用する。例えば、警告生成器148は、頭よりも1つまたは複数の手の方が1つまたは複数の障害物に近い場合に警告を誘発するように、1つまたは複数の手の衝突までの距離に対して、頭の衝突までの距離よりも低い閾値を使用してもよい。
いくつかの実施形態では、警告生成器148は、頭に関する移動に基づいて(例えば、頭の速度にはかかわらず)警告を誘発するのに、最小起動距離を使用する。例えば、警告生成器148は、(例えば、過去の1秒、2秒、もしくは3秒など、過去のある期間中の)頭の移動距離を測定し、距離を最小起動距離と比較し、距離が最小起動距離を超えなければ警告を生成しないことができる。これは、ユーザが急であるが短い移動を行う場合に有用であり得る。いくつかの実施形態では、最小起動距離はHMDの後方の方がユーザの前方よりも長く、そのことは、ユーザの頭が前傾している(それにより、頭の位置が検出される地点は、ユーザの頭の後ろ側よりもユーザの頭の前側に近い)などの要因を考慮し得る。
警告生成器148は、閾値とは無関係に、または少なくとも1つの閾値が満たされたことに応答して、最小警告インジケータを生成することができる。例えば、動き検出器120が、ユーザが移動していないことを示す動きデータを提供した場合、警告生成器148は最小インジケータ(例えば、HMDまたはハンドデバイス224の周りに)を提供することができる。これにより、警告生成器148が、警告を維持しながら没入感の損失を回避することができるようになる。
警告生成器148は、様々な換算係数に基づいて衝突データまたは1つもしくは複数のパラメータを見積もることができる。例えば、警告生成器148は、プレイ空間もしくは環境のサイズ測定基準、ユーザが行った1つもしくは複数の以前の移動に関する動き測定基準、シミュレーション生成器152が仮想環境を生成するのに使用するアプリケーション、またはユーザモデルもしくはユーザプロファイルなどの、換算係数を使用することができる。
例えば、警告生成器148は、プレイ空間(例えば、ユーザがHMDを操作している部屋などの実世界環境)のサイズ測定基準を決定することができる。警告生成器148は、壁、床、および天井などの障害物を含む1つまたは複数の障害物に関して、障害物追跡装置140によって維持される境界に基づいて、サイズ測定基準を決定することができる。警告生成器148は、サイズ測定基準が減少するにつれて、速度または加速度データの影響を減少させることができ(例えば、より小さい空間内では、ユーザは周囲をより意識することがある)、またサイズ測定基準が増加するにつれて、速度または加速度データの影響を増加させることができる(例えば、より大きい空間内では、ユーザは周囲を意識しにくいことがあり、より大きい動きをすることがある)。例えば、警告生成器148は、サイズ測定基準が増加するにつれて、速度または加速度データにより大きい重みを割り当てることができる。
警告生成器148は、ユーザが実施した最近の動きに関する動き測定基準を決定することができる。例えば、警告生成器148は、過去のある期間中(例えば、過去の1秒、過去の2秒、過去の3秒)の速度データを監視し、速度データを速度閾値と比較することができる。速度閾値を超える速度データの瞬間値または平滑化された値に応答して、警告生成器148は、ユーザが比較的大きい移動を実施していると判定し、警告生成器148が警告を生成する感度を増加する(例えば、速度データを評価するのに使用される閾値を減少させる)ことができる。例えば、警告生成器148が過去のその期間中に大きな速度の増加を検出した場合、警告生成器148は、速度データを評価するのに使用される速度閾値、または衝突までの距離もしくは衝突までの時間データを評価するのに使用される距離閾値もしくは衝突までの時間閾値を減少させる。いくつかの実施形態では、警告生成器148は、動き測定基準を決定する際、1つまたは複数の手に関する動きデータよりも、頭に関する動きデータの方により大きい重みを割り当てる。
警告生成器148は、アプリケーションが仮想環境を生成するように操作されるのに基づいて、衝突データを評価するのに使用される閾値を調節することができる。例えば、アプリケーションは、予想移動に関するアプリケーションデータが、アプリケーションの使用中に実施されるべきであることを示してもよい。アプリケーションデータは、任意の数のユーザによるアプリケーションの使用に関する履歴データに基づいてもよく、例えば、シミュレーション生成器152は、動き検出器120を使用してアプリケーションの使用中の動きデータを監視することができ、また動きデータの統計的尺度(例えば、平均速度、中央値速度、速度の標準偏差、もしくは加速度に関する類似の尺度)を決定するのに使用することができる、動きデータのログを維持することができる。
いくつかの実施形態では、アプリケーションデータは予想移動の平均速度を示す。警告生成器148は、換算係数を平均速度に適用する(例えば、閾値を平均速度の二倍に設定する)こと、あるいは、平均速度および1つまたは複数の障害物までの実際の距離に基づいた衝突までの時間が閾値時間未満のとき、警告が誘発されるように閾値を構成する(例えば、現在位置から平均速度で2秒間移動したユーザが、1つまたは複数の障害物に接触するであろう場合、警告を誘発する)ことなどによって、平均速度に基づいて衝突データを評価するのに使用される閾値を決定することができる。
いくつかの実施形態では、アプリケーションデータはアプリケーションに対する速度の格付けを示す。例えば、警告生成器148は、警告生成器148が予想平均速度または特定の閾値にマッピングすることができる、複数の速度の格付けを使用してもよい。速度の格付けは、ユーザ定義のものであってもよく、例えば、アプリケーションの開発者が速度の格付けをアプリケーションに割り当てることができる。
警告生成器148は、HMDの特定のユーザに対して警告を誘発することに関するユーザモデルを維持することができる。警告生成器148は、(例えば、ユーザによって実施される様々な起動、初期化、またはログイン手順に基づいて)ユーザのユーザ識別子を識別し、ユーザモデルをユーザ識別子にマッピングすることができる。ユーザモデルは、警告生成器148が識別されたユーザに対する警告の誘発をカスタマイズできるようにすることができる。例えば、警告生成器148は、ユーザモデルを使用して、上述のアプリケーションデータを含む、操作されているアプリケーション、ならびに識別されたユーザの移動によって誘発される警告の頻度または規模の指示などの要因に基づいて、警告をカスタマイズすることができ、それによって、警告生成器148が没入感と警告とのバランスを維持できるようにすることができる。
処理回路116は、どのように警告を生成するかを決定するように、ユーザモデルを操作することができる。ユーザモデルは、警告の誘発と関連付けられた閾値および警告のパラメータなど、警告生成と関連付けられた要因を出力するように訓練することができる、様々な教師なしまたは教師あり機械学習モデルのいずれかを含むことができる。例えば、ユーザモデルは、衝突データを(例えば、検出された衝突イベントとともに)セグメント化またはクラスタ化して、警告の誘発に関する閾値を識別するように、衝突データを使用して訓練された、教師なし機械学習モデルを含むことができる。ユーザモデルは、ユーザならびに他のユーザに関するデータを使用して訓練することができる。ユーザモデルは、衝突データおよびいつ衝突が起こるかの指示、いつユーザが警告システムを停止させるかの指示(没入感の喪失を示してもよい)、あるいは警告を含む(例えば、閾値よりも多いピクセル数または高いピクセル強度の警告に関する表示データを含む)表示画像と警告を含まない表示画像との比などの目標性能特性に基づいて、閾値を生成するように衝突データを使用して訓練される、教師あり機械学習モデルを含むことができる。いくつかの実施形態では、警告生成器148は、操作されているアプリケーション、アプリケーションの操作中に検出される動きデータ、警告生成器148が警告を誘発するタイムスタンプ、警告生成器148が警告を誘発するタイムスタンプに対応する衝突データ、または警告を誘発するのに使用される閾値のうち少なくとも1つを示す、データ構造を維持する。警告生成器148は、データ構造のエントリをユーザモデルへの入力として提供して、ユーザモデルを訓練することができる。例えば、警告生成器148は、没入感と警告とのバランス目標を達成する(例えば、表示画像の合計と比較して、警告が存在する表示画像に基づいた特定の警告頻度を達成する)ために、特定の閾値に基づいて、ユーザモデルによってデータ構造の入力をクラスタ化させることができる。
いくつかの実施形態では、警告生成器148は、HMDの画像空間内で警告を選択的に生成する。例えば、警告生成器148は、警告がディスプレイ164の周辺またはディスプレイ164の視野(FOV)の周辺でより目立つようにして、あるいは警告が、警告生成器148を誘発して警告を生成させる1つまたは複数の障害物の部分上に焦点を合わせるようにして、警告を生成することができる。例えば、警告生成器148は、ディスプレイ164を使用して表示される画像の縁部(または縁部部分)に対応する周辺を識別することができる。周辺は、ディスプレイ164を使用して表示される画像の縁部からの多数のピクセル、または縁部から中心までのピクセルの一部に対応することができる。周辺は、水平縁部、垂直縁部、またはディスプレイ164が湾曲または曲線縁部を有する特定の縁部部分を含む、水平縁部と垂直縁部との任意の組み合わせを含むことができる。その結果、警告生成器148は、警告が没入感を損なう程度を限定し、警告を誘発する1つまたは複数の障害物を強調し、警告に方向性を持たせることができる。
警告生成器148は、様々な手法のいずれかでHMDのFOVを決定することができる。例えば、警告生成器148は、FOVに関するデータについてHMDに問い合わせることができる。警告生成器148は、HMDによって表示される画像の解像度(例えば、画像レンダラー160の動作に基づく)、またはディスプレイ164のサイズのうち少なくとも1つを識別して、FOVを決定することができる。
いくつかの実施形態では、警告生成器148は、衝突検出器132から受信した衝突データを処理して、FOVにある1つまたは複数の障害物の範囲を決定する。例えば、警告生成器148は、ピクセルごとにまたはピクセル群単位で衝突データを評価することなどによって、単一の障害物単位で警告を生成するか否かを決定するのではなく、より粒度の細かい単位で衝突データを評価することができる。例えば、警告生成器148は、1つまたは複数の障害物のうち選択された障害物に対応する、1つまたは複数のピクセルの複数のサブセットを識別することができる。警告生成器148は、1つまたは複数のピクセルの各サブセットに対応する衝突データを識別し、各サブセットを評価して、サブセットに対応する衝突データが、警告を生成すべきであることを示しているか否かを決定する(例えば、ピクセルの特定のサブセットに関して、ピクセルのサブセットが対応する閾値を満たしているか否かを決定する)ことができる。サブセットに関して警告を生成するとの決定に応答して、警告生成器148は、ピクセルのサブセットを障害物の範囲として割り当てることができる。
いくつかの実施形態では、警告生成器148は、(例えば、動き検出器120によって決定されるような)ユーザの位置と障害物の位置との間の距離を使用して、距離が減少するにつれて角度が増加するように、障害物に対応する角度範囲を決定する。例えば、警告生成器148は、ユーザのFOV内における障害物の外観の角度サイズに対応する、角度範囲を決定することができる。警告生成器148は、ユーザの位置と障害物の位置との間の距離に基づいて、障害物を表す各ピクセルに対する重みを割り当てることができる(例えば、距離が減少するにつれて重みが大きくなる)。
警告生成器148は常に(例えば、警告が誘発されるべきと決定されたときに)FOV内に警告を示すことができるので、ユーザが後ろ向きまたは横向きに近づいていることがある障害物に関して、ユーザに警告が提示されるように担保することができる。例えば、警告を誘発するという決定に応答して、警告生成器148は、ユーザの方向(例えば、センサ104から受信したセンサデータまたは動き検出器120から受信した動きデータに基づく)を、警告を誘発した障害物に向かう方向と比較することができる。移動の方向と障害物に向かう方向との間の角度がFOVの範囲(例えば、FOVの中心からFOVの縁部までの角度)よりも大きいことに応答して、警告生成器148は、FOVの縁部に警告を提示するように決定することができる。例えば、ユーザが前方に向いているかまたは前方に移動しているが、ユーザの左後ろに障害物がある場合、(ユーザのまたはFOVの中心から反時計方向に測定して)ユーザの方向からFOVの左縁部までの角度が70~85度であるが、ユーザの方向から障害物に向かう方向までの角度が150~175度であるなど、ユーザの方向と障害物に向かう方向との間の角度はFOVの範囲よりも大きいことがある。警告生成器148は、ユーザの後方にある障害物に関して、FOVの左縁部に沿って警告を提示するように決定することができる。いくつかの実施形態では、警告は、音声警告、あるいはハンドデバイスを保持している手が対象物と衝突しようとしている場合はハンドデバイス224の振動、または頭が対象物に衝突しようとしている場合はHMDの振動など、触覚による警告である。
警告生成器148は、ユーザが警告に気づきやすいようにFOVの周辺に警告を表示する様々な表示効果を画像レンダラー160に適用させるため、警告とともに画像レンダラー160に命令を提供することができる。例えば、画像レンダラー160は、警告の見た目を光らせるなど、FOVの周辺の警告と関連付けられた強度またはコントラストのうち少なくとも1つを増加させることができる。
いくつかの実施形態では、警告生成器148は、奥行きマッパー144からの奥行きマップデータを使用して、1つまたは複数の障害物の表現を含むように警告を生成する。例えば、警告生成器148は、奥行きマップデータを使用して、実世界環境内で移動しているかもしれない対象物を含む1つまたは複数の障害物の位置を監視することができる。警告生成器148は、奥行きマップデータを周期的にサンプリングして、ユーザと1つまたは複数の障害物との間の相対距離が変化したときの衝突までの距離データとして、奥行きマップデータを使用し、奥行きマップデータを評価して、警告を生成するか否かを決定する(ならびに警告のパラメータを決定する)ことができる。
いくつかの実施形態では、警告生成器148(または画像レンダラー160)は、奥行きマップデータを使用して、1つまたは複数の障害物に関する表示データを生成する。例えば、警告生成器148は、奥行きマップデータを使用して、1つまたは複数の障害物を表示するのに使用するピクセルを決定することができる。いくつかの実施形態では、警告生成器148は、仮想環境を表示するのに使用されるのとは異なる方式で、1つまたは複数の障害物に関する表示データを生成して、実世界の障害物を仮想環境の対象物と区別する助けとする。警告生成器148は、本明細書に記載するような周辺の換算係数(例えば、HMDのFOVの周辺で相対的に高い強度)を、奥行きマップデータを使用して生成される1つまたは複数の障害物に関する表示データに適用することができる。
処理回路116はシミュレーション生成器152を含むことができる。シミュレーション生成器152は、ゲーム、トレーナー、もしくはシミュレータなどのアプリケーションを操作する、ユーザ入力データを受信する、ユーザ入力データに基づいてアプリケーションの動作を更新する、ならびに表示データを画像レンダラー160に提供して、画像レンダラー160が表示画像を描画して仮想環境を表示できるようにするなどの機能を実施するため、任意の機能、動作、ルーチン、論理、または命令を含むことができる。シミュレーション生成器152は、センサデータをセンサ104から、またはユーザの頭もしくは手の移動に関するデータなどの動きデータを動き検出器120から受信し、センサデータまたは動きデータを処理してユーザ入力データを識別し、識別されたユーザ入力データに基づいてアプリケーションの動作を更新することができる。例えば、シミュレーション生成器152は、動き検出器120を使用して、振る、押す、または引くなどのユーザの手の移動を検出し、移動をアプリケーションに対するユーザ入力として使用することができる。
シミュレーション生成器152は、表示データに対応する奥行きバッファ情報を生成して、画像レンダラー160に3D画像データを描画させることができる。シミュレーション生成器152は、1つまたは複数の障害物に関して、奥行きマップデータを奥行きマッパー144から受信して、奥行きマップデータを使用してアプリケーションを操作するかまたは表示データを生成することができる。
処理回路116は画像レンダラー160を含むことができる。画像レンダラー160は3D画像レンダラーであることができる。画像レンダラー160は、画像関連入力データを使用して、表示画像または提示画像を処理、生成、および描画して、HMDを介してなどにより、1つまたは複数のディスプレイデバイスに表示または提示させてもよい。画像レンダラー160は、ディスプレイ164に表示し、場面または視界を3D形式で表す、場面または視界の2D画像を生成または作成することができる。画像レンダラー160は、シミュレーション生成器152から受信される表示データ(例えば、シミュレーション生成器152から受信される奥行きバッファ)、ならびに警告生成器148から受信される表示データ(例えば、警告をどこにどのように表示するかを示す表示データ)に基づいて、ディスプレイ164に表示する画像を生成することができる。描画される表示または提示データは、場面または視界内の3D対象物の幾何学モデルを含むことができる。画像レンダラー160は、描画される表示または画像データのピクセル値を決定、演算、または計算して、センサ104が取り込んだ画像112に対する3D表示データなど、所望のまたは所定の3D画像を提供してもよい。
画像レンダラー160は、時間および/または空間パラメータに基づいて、表示データのフレームを1つまたは複数のディスプレイ164に描画することができる。画像レンダラー160は、画像がセンサ104によって取り込まれた時間、または表示データのフレームがシミュレーション生成器152から受信された時間に対応するなどして、画像データのフレームを時間的に順次、描画することができる。画像レンダラー160は、センサ104によって示されるようなHMDの位置および向きなど、位置および/または向きの変化に基づいて、表示データのフレームを描画することができる。画像レンダラー160は、左目の視界の次に右目の視界を表示するかまたはその逆など、左目の視界および右目の視界に基づいて表示データのフレームを描画することができる。
画像レンダラー160は、センサ104の移動に関する動きデータを使用して、表示画像を生成することができる。例えば、センサ104は、(例えば、図2のHMDシステム200を参照して記載したような)センサ104を含むHMDを装着しているユーザの頭の移動によって、位置または向きのうち少なくとも1つを変更してもよい。処理回路116は、位置センサ(例えば、図2を参照して記載した位置センサ220)からセンサデータを受信することができる。
画像レンダラー160は処理回路116の一部として示されているが、画像レンダラーは、例えばHMD内の、ディスプレイデバイスなど、別個のデバイスまたは構成要素の他の処理回路の一部として形成されてもよい。
システム100は1つまたは複数のディスプレイ164を含むことができる。1つまたは複数のディスプレイ164は、任意のタイプおよび形態の電子ビジュアルディスプレイであることができる。ディスプレイは、所定の解像度およびリフレッシュレートおよびサイズを有するか、またはそれらを備えるように選択されてもよい。1つまたは複数のディスプレイは、LCD、LED、ELED、またはOLEDベースのディスプレイなど、任意のタイプの技術によるものであり得る。1つまたは複数のディスプレイの形状因子は、ディスプレイが眼鏡またはゴーグルのフレーム内のレンズである、眼鏡またはゴーグルとしてHMD内に収まるようなものであってもよい。ディスプレイ164は、処理回路116もしくは画像レンダラー160、シミュレーション生成器152、またはセンサ104のリフレッシュレートまたはフレームレートと同じかあるいは異なる、リフレッシュレートを有してもよい。
次に図2を参照すると、いくつかの実現例では、HMDシステム200を使用してシステム100を実現することができる。HMDシステム200は、HMD本体202と、左側センサ104a(例えば、左側画像取込みデバイス)と、右側センサ104b(例えば、右側画像取込みデバイス)と、ディスプレイ164とを含むことができる。HMD本体202は、眼鏡またはヘッドセットなどの様々な形状因子を有することができる。センサ104a、104bは、HMD本体202に装着または統合することができる。左側センサ104aは、第1の視界(例えば、左目の視界)に対応する第1の画像を取り込むことができ、右側センサ104bは、第2の視界(例えば、右目の視界)に対応する画像を取り込むことができる。いくつかの実施形態では、HMDシステム200は画像取込みデバイスを含まない。HMDシステム200は、ディスプレイ164を介して仮想環境を提示するなど、VRの機能性を実現するのに使用することができる。
HMDシステム200は、上側センサ104c(例えば、上側画像取込みデバイス)を含むことができる。上側センサ104cは、第1の視界または第2の視界とは異なる第3の視界に対応する画像を取り込むことができる。例えば、上側センサ104cは、左側センサ104aと右側センサ104bとの間であって、左側センサ104aと右側センサ104bとの間のベースラインの上方に位置付けることができる。これにより、上側センサ104cが、左側および右側センサ104a、104bによって取り込まれる画像からは容易に抽出して利用できないことがある、奥行き情報を有する画像を取り込めるようにすることができる。例えば、縁部(例えば、テーブルの縁部)が左側および右側センサ104a、104bの間のベースラインに対して平行である、左側および右側センサ104a、104bによって取り込まれた画像から、奥行き情報を効率的に抽出するのは困難なことがある。上側センサ104cは、ベースラインから離隔されており、異なる視点を有するように第3の画像を取り込むことができ、したがって、左側および右側センサ104a、104bとは異なる奥行き情報を、第3の画像から抽出できるようにすることができる。
HMDシステム200は、センサデータを位置センサ104(例えば、頭追跡センサ)から受信して、HMDの移動を検出し、HMDの移動に基づいて、障害物との起こり得る衝突に関する警告を生成することを含む、図1を参照して記載した機能の少なくとも一部を実施することができる、処理回路116を含むことができる。
HMDシステム200は通信回路204を含むことができる。通信回路204は、クライアントデバイス208またはサーバ212のうち少なくとも1つに電子通信信号を送信し、またそこから電子通信信号を受信するのに使用することができる。通信回路204は、様々なシステム、デバイス、またはネットワークとのデータ通信を実施する、有線または無線インターフェース(例えば、ジャック、アンテナ、送信機、受信機、送受信機、電線端子)を含むことができる。例えば、通信回路204は、イーサネットベースの通信ネットワークを介してデータを送受信する、イーサネットカードおよびポートを含むことができる。通信回路204は、ローカルエリアネットワーク(例えば、建物LAN)、広域ネットワーク(例えば、インターネット、セルラーネットワーク)を介して通信する、ならびに/あるいは直接通信(例えば、NFC、ブルートゥース)を実施することができる。通信回路204は有線および/または無線通信を実施することができる。例えば、通信回路204は、1つまたは複数の無線送受信機(例えば、Wi-Fi送受信機、ブルートゥース送受信機、NFC送受信機、セルラー送受信機)を含むことができる。例えば、通信回路204は、クライアントデバイス208またはサーバ212のうち少なくとも1つと、有線または無線接続を確立することができる。通信回路204は、クライアントデバイス208とUSB接続を確立することができる。
HMDシステム200は異なるアーキテクチャを使用して配備することができる。いくつかの実施形態では、HMD(例えば、HMD本体202、およびHMD本体202に取り付けられた構成要素)は、処理回路116を備え、内蔵型の携帯ユニットである。いくつかの実施形態では、HMDは、ステージングデバイス、移動電話、もしくはウェアラブルコンピューティングデバイスの形態などの、処理回路またはその部分を有する、任意のタイプの携帯もしくは移動コンピューティングデバイスまたはコンパニオンデバイスと協働あるいは連携して働く、処理回路116の部分を有する。いくつかの実施形態では、HMDは、デスクトップコンピューティングデバイスの処理回路またはその部分と協働あるいは連携して働く、処理回路116の部分を有する。いくつかの実施形態では、HMDは、データセンタまたはクラウドコンピューティング環境において遠隔で配備されてもよい、サーバコンピューティングデバイスの処理回路またはその部分と協働あるいは連携して働く、処理回路116の部分を有する。上述の実施形態のいずれにおいても、HMD、またはHMDと連携して働く任意のコンピューティングデバイスは、本明細書に記載する機能性および動作のいずれかを実施する際に、1つまたは複数のサーバと通信してもよい。
クライアントデバイス208は、移動もしくは携帯デバイス(電話、タブレット、ラップトップなど)、あるいはデスクトップまたはパーソナルコンピューティング(PC)デバイスなど、任意の形状因子の任意のタイプおよび任意の形態の汎用もしくは専用コンピューティングデバイスであり得る。いくつかの実施形態では、クライアントデバイスは、処理回路またはその部分を有してもよい、ステージングデバイスの形態などの専用デバイスであることができる。専用デバイスは、任意のタイプおよび形態の付属品取付具を介してクライアントデバイス208を衣類または身体に取り付けることなどによって、HMDを装着している間、ユーザによって携行されるように設計されてもよい。クライアントデバイス208は、図1および図3に関連して記載する、画像および描画処理パイプラインの任意の部分を実施するのに使用されてもよい。HMDは、仮想環境の表示画像を生成する、および表示画像をディスプレイ164に描画するなど、画像および描画処理パイプラインのいくつかまたは他の部分を実施してもよい。HMDは、クライアントデバイス208とデータを送受信して、HMDのものよりも高度な仕様を有することがある、クライアントデバイス208のコンピューティング能力および資源を活用することができる。
サーバ212は、アプリケーション、機能性、またはサービスを、1つもしくは複数のクライアントデバイス208、またはクライアントとして作用するデバイスに提供する、任意のタイプの形態のコンピューティングデバイスであることができる。いくつかの実施形態では、サーバ212はクライアントデバイス208であることができる。サーバ212は、1つまたは複数のネットワークを介してアクセス可能な、データセンタまたはクラウドコンピューティング環境に配備することができる。HMDおよび/またはクライアントデバイス208は、サーバ212のコンピューティング能力および資源を使用し活用することができる。HMDおよび/またはクライアントデバイス208は、図1および図3に関連して記載する、画像および描画処理パイプラインの任意の部分を実現することができる。サーバ212は、図1および図3に関連して記載する、画像および描画処理パイプラインの任意の部分を、また場合によっては、クライアントデバイス208もしくはHMDによって実施されない画像および描画処理パイプラインの任意の部分を実現することができる。サーバ212は、HMDおよび/またはクライアントデバイス208のアプリケーション、ソフトウェア、実行可能命令、および/またはデータに対する任意の更新を用いて、HMDおよび/またはクライアントデバイス208を更新するのに使用されてもよい。
システム200は位置センサ220を含むことができる。位置センサ220は、本体202の位置または向きのうち少なくとも1つを出力することができる。画像取込みデバイス104a、104b、104cは、(例えば、位置センサ220に対する所定の所在位置で)本体202に固定することができるので、位置センサ220は、画像取込みデバイス104a、104b、104cを介して検出される障害物の奥行きマッピングに使用することができる、各センサ104a、104b、104cの位置または向きのうち少なくとも1つを出力することができる。位置センサ220は、慣性計測装置(IMU)、加速度計、ジャイロスコープ、または磁力計(例えば、磁気コンパス)のうち少なくとも1つを含むことができる。
ディスプレイデバイス200は少なくとも1つのハンドデバイス224を含むことができる。ハンドデバイス224は、ユーザの1つまたは複数の手によって保持されるようにサイズおよび形状を決めることができる。ハンドデバイス224は、ユーザ制御デバイスとして動作することができ、例えば、ハンドデバイス224は、ユーザが操作してユーザ入力を生成することができる、様々なユーザインターフェース要素(例えば、ボタン、スイッチ、トグルなど)を含むことができる。例えば、ハンドデバイス224を、HMDシステム200によるアプリケーションの操作に基づいて、ディスプレイ164を介して提示されている仮想環境と相互作用するためのコントローラとして使用することができる。ハンドデバイス224は、様々な有線もしくは無線接続を使用して、通信回路204、クライアントデバイス208、および/またはサーバ212と通信することができる。ハンドデバイス224は、位置センサ220に類似するものであることができる、1つまたは複数の位置センサ228を含むことができる。例えば、処理回路116がセンサデータを使用して、ユーザの1つまたは複数の手の移動を検出して、HMD200の周りの実世界環境における、ユーザの1つまたは複数の手と障害物との起こり得る衝突に関する警告を生成するか否かを決定するために、位置センサ228は、ハンドデバイス224の位置、速度、加速度、または向きのうち少なくとも1つを含むセンサデータを出力することができる、慣性計測装置(IMU)、加速度計、ジャイロスコープ、または磁力計(例えば、磁気コンパス)のうち少なくとも1つを含むことができる。
次に図3を参照すると、動的な障害物衝突警告を生成する方法が示される。いくつかの実施形態では、方法300は、次のステップのうち1つまたは複数を含むことができる。方法300は、仮想環境をHMDのユーザに対して提示するのに使用される、HMDの周りの実世界環境における1つまたは複数の障害物を識別することを含むことができる(305)。方法300は、1つまたは複数の障害物の所在位置を検出することを含むことができる(310)。方法300は、ユーザの頭に関する頭の動きデータを検出することを含むことができる(315)。方法300は、ユーザの1つまたは複数の手に関する手の動きデータを検出することを含むことができる(320)。方法は、障害物所在位置および動きデータに基づいて、ユーザと1つまたは複数の障害物との間の起こり得る衝突を検出することを含むことができる(325)。方法は、起こり得る衝突に関する警告を表示するか、またどのように表示するかを決定する警告ポリシーに基づいて、起こり得る衝突を評価することを含むことができる(330)。方法は、HMDを使用して提示することができる、警告を表す表示データを生成することを含むことができる(335)。方法300は、システム100、処理回路116、およびシステム200を含む、本明細書に記載する様々なデバイスおよびシステムを使用して実行することができる。
305で、HMDの周りの実世界環境における1つまたは複数の障害物が識別される。HMDは、VRシステムを実現するのに使用することができるので、HMDのユーザは、HMDが仮想またはシミュレーション環境をユーザに提示している間、HMDによって少なくとも部分的に妨げられる、実世界環境の視界を有してもよい。いくつかの実施形態では、HMDまたはVRシステムは、実世界環境における障害物のデータベースを維持し、そこから1つまたは複数の障害物を識別することができる。データベースは、障害物を示すユーザ入力に応答して投入されてもよい。いくつかの実施形態では、1つまたは複数の障害物を識別することは、VRシステムを介してユーザからの1つまたは複数の障害物に関するデータを要求することを含む。例えば、VRシステムは、1つまたは複数の障害物に対応する境界を示すため、HMDと関連付けられたハンドデバイス(例えば、手持ちコントローラ)を操作するようにユーザに要求する命令を、ユーザに提供することができる。障害物は、障害物が実質的に基準系内で検索され、HMDの向きが変化すると異なる基準系に変換されるように、障害物が識別されたHMDの向きに対応する基準系に登録することができる。
いくつかの実施形態では、実世界環境の画像の取込みに基づいて、1つまたは複数の障害物が識別される。例えば、HMDと関連付けられた1つまたは複数の画像取込みデバイスは、実世界環境の画像を検出することができる。画像は、1つまたは複数の障害物に対応する対象物を検出するのに、様々な対象物認識技術を使用して処理することができる。いくつかの実施形態では、検出された対象物を使用して、障害物のデータベースを更新することができる。実世界環境の画像を使用して障害物を検出するのに応答して、奥行きマッピングを障害物に適用して、(例えば、HMDの左目および右目画像取込みデバイスを使用して、またはHMDとは別個の、3Dカメラなどの画像取込みデバイスを使用して)HMDに対する障害物の距離を決定することができる。
310で、1つまたは複数の障害物の所在位置が検出される。1つまたは複数の障害物の所在位置は、HMDの位置センサからの位置データ、または1つもしくは複数のハンドデバイスの位置センサからの位置データのうち少なくとも1つに基づいて決定することができる位置など、ユーザの位置に対して検出することができる。ユーザの位置または向きのうち少なくとも1つに基づいて、障害物データベースに維持されるような(または奥行きマッピングを介して決定されるような)1つまたは複数の障害物の所在位置を調節することによって、1つまたは複数の障害物の所在位置を検出することができる。例えば、ユーザの位置または向きのうち少なくとも1つを、(例えば、VRシステムの位置センサからのセンサデータに基づいて、したがってユーザの移動を考慮に入れて)周期的にサンプリングし、1つまたは複数の障害物の所在位置の基準系と比較して、ユーザに対する障害物の所在位置を決定することができる。
315で、ユーザの頭の移動に関する頭の動きデータが検出される。頭の動きは、ユーザが装着しているHMDに結合されてもよい、1つまたは複数の頭追跡センサからのセンサデータをサンプリングすることによって、検出することができる。頭の動きデータを処理して、ユーザの頭または頭の移動の、位置、速度、加速度、もしくは向き(例えば、方向)のうち少なくとも1つを決定することができる。いくつかの実施形態では、バッファが頭の動きデータに適用されてもよい。例えば、ユーザの頭または身体のサイズを示すバッファが、頭の位置に適用されてもよく、それにより、頭の位置に応答して実施される衝突検出および警告生成プロセスが、頭または身体のサイズを考慮することができる。
320で、ユーザの1つまたは複数の手の移動に関する手の動きデータが検出される。手の動きデータは、ユーザが操作しているハンドデバイスに結合されてもよい、1つまたは複数の手追跡センサからのセンサデータをサンプリングすることによって、検出することができる。手の動きデータを処理して、ユーザの1つもしくは複数の手の、または1つもしくは複数の手の移動の、位置、速度、加速度、もしくは向き(例えば、方向)のうち少なくとも1つを決定することができる。いくつかの実施形態では、バッファが手の動きデータに適用されてもよい。例えば、ユーザの1つまたは複数の手のサイズを示すバッファが、1つまたは複数の手の位置に適用されてもよく、それにより、1つまたは複数の手の位置に応答して実施される衝突検出および警告生成プロセスが、1つまたは複数の手のサイズを考慮することができる。いくつかの実施形態では、1つまたは複数の手の位置は、頭の位置からの閾値距離未満に修正されてもよい。例えば、ユーザの予想到達範囲に基づいた換算係数(例えば、到達範囲の95パーセンタイルまたは99パーセンタイル)が、1つまたは複数の手の位置に適用されてもよい。手の動きデータは、頭の動きデータの検出のサンプリングレートと同じまたは異なるサンプリングレートで検出されてもよい。
325で、ユーザと実世界環境の1つまたは複数の障害物との間の起こり得る衝突を検出することができる。起こり得る衝突は、動きデータと1つまたは複数の障害物の所在位置とに基づいて検出されてもよい。起こり得る衝突は、スケジュールまたは周期的基準などの様々な誘発条件に応答して(例えば、起こり得る衝突を10ミリ秒ごとに検出する)、あるいは少なくともユーザの移動の閾値量(例えば、1メートル超移動する、1秒ごとに0.5メートル超移動する)に応答して、検出することができる。例えば、起こり得る衝突は、ユーザの位置、移動の方向、または移動レート(例えば、速度、加速度)を、1つまたは複数の障害物の所在位置と比較することによって、検出することができる。
いくつかの実施形態では、手の動きデータおよび頭の動きデータは、起こり得る衝突を検出するのに独立して評価される。例えば、起こり得る衝突は、頭が1つまたは複数の障害物と衝突すると予想されない場合であっても、1つまたは複数の手が1つまたは複数の障害物と衝突すると予想される場合に、検出することができる(その逆もまた真である)。
いくつかの実施形態では、衝突までの距離、衝突までの時間、または衝突の確率のうち少なくとも1つが、動きデータに基づいて決定される。衝突までの距離は、ユーザの位置を1つまたは複数の障害物の所在位置と比較することによって、決定することができる。衝突までの時間は、速度データを衝突までの距離に適用することによって決定することができる。衝突の確率は、衝突までの距離、衝突までの時間、およびユーザが1つもしくが複数の障害物に向かって移動している、または1つもしくは複数の障害物から離れて移動していることを動きデータが示すか否かなどの要因を評価することによって、決定することができる。
いくつかの実施形態では、動きデータは、起こり得る衝突を決定する前に平滑化される。例えば、過去の速度または加速度データサンプルのセットを監視することができる。過去のセットは、ある数のデータサンプル(例えば、10個のデータサンプル)、またはある持続時間(例えば、データサンプルの0.15秒)に対応するある数のデータサンプルを含むことができる。動きデータを平滑化するのに使用されるデータサンプルの数は、処理要件または警告が誘発される頻度などの要因に基づいて、動的に調節することができる。動きデータは、データサンプルの数にわたって動きデータを平均化することによって、または各データサンプル間の変化率を閾値変化率未満に減少させることによって平滑化することができる(例えば、第1の時点における速度が毎秒1メートル、第2の時点における速度が毎秒1.5メートルである場合、第2の時点におけるデータサンプルに使用される値が毎秒1.25メートルであるように、0.25メートル毎秒毎秒などの閾値変化率以下であるように0.5メートル毎秒毎秒の変化率を減少させる)。
330で、警告ポリシーに基づいて起こり得る衝突を評価することによって警告が生成される。衝突データは、生成されている衝突データに応答して、または衝突データの生成頻度未満の評価率で評価することができる。衝突データは、閾値移動量よりも大きいユーザの移動の検出に応答して評価することができる。
警告を、様々なフィルタ、機能、または他のプロセスを衝突データに適用することに基づいて生成して、警告を表示するか、またどのように表示するかを決定することができる。警告は、(例えば、フィルタ、機能、または他のプロセスを適用する前もしくは適用した後に)衝突データをそれぞれの閾値と比較したことに基づいて、生成することができる。規模(例えば、明るさ、強度)、位置、コントラスト、色、頻度、または間欠性などの警告のパラメータは、衝突データに基づいて決定することができる。例えば、衝突までの時間が減少するにつれて、警告の強度は増加し得る。
いくつかの実施形態では、1つまたは複数の手に関する衝突データは、頭に関する衝突データに対して独立してまたは別個に評価される。例えば、頭に関する衝突データと比較して、異なる重みを1つまたは複数の手に関する衝突データに適用することができる。いくつかの実施形態では、ユーザの1つまたは複数の手に関するデータよりも、ユーザの頭に関するデータの方により大きい重みが割り当てられる。最小起動距離は、頭の移動に基づいて警告を誘発するのに使用することができる。
警告は、警告ポリシーを満たす、1つもしくは複数の手に関する衝突データまたは頭に関する衝突データのうち少なくとも1つに応答して、生成されてもよい。いくつかの実施形態では、警告ポリシーは、それぞれの閾値または他の警告条件をそれぞれ満たす、1つもしくは複数の手に関する衝突データ、および頭に関する衝突データに応答して、警告を誘発する。
いくつかの実施形態では、衝突データまたは警告のパラメータは、HMDが動作している実世界環境のサイズ測定基準、実施された最近の動きに関する動き測定基準、仮想環境を生成するのに操作されているアプリケーション、または特定のユーザの移動に関するモデルなどの要因に基づいて見積もることができる。サイズ測定基準は、壁、床、および天井など、1つもしくは複数の障害物または実世界環境に関する境界に基づいて決定することができる。サイズ測定基準は、ユーザが実世界環境の部屋または他の領域の間を移動する際に、奥行きマップデータを使用することなどによって、ユーザが実世界環境内で動くにつれて動的に更新することができる。動き測定基準は、過去の期間(例えば、過去の2秒)にわたって動きデータを監視し、動きデータを速度閾値または加速度閾値などの動き閾値と比較することによって、決定することができる。動き閾値を超える動きデータに応答して、警告生成を動きデータに対してより高感度にすることができるように、警告を誘発するか否かを決定するのに警告ポリシーによって使用される閾値を減少させることができる。いくつかの実施形態では、ユーザの全体位置が変化しない(例えば、ユーザの足が数センチメートルまたは30センチメートル(数インチまたは1フィート)を超えて移動しない)場合であっても、手が素早く移動する場合があるので、動き測定基準を頭の移動に選択的に適用するか、または規模をより大きくして頭の移動に適用することができる。アプリケーションは、アプリケーション使用中の移動の予想速度、または予想速度にマッピングすることができる速度格付けを示すことができる。モデルは、操作されているアプリケーション、アプリケーションの動作中の動きデータ検出、警告が誘発されるタイムスタンプ、警告が誘発されるタイムスタンプに対応する衝突データ、または警告を誘発するのに使用される閾値などの情報を使用し、この情報をユーザにマッピングして、ユーザに対する警告生成をどのように制御するかを決定することができる。
いくつかの実施形態では、警告生成は警告率に基づいて制御される。例えば、警告率は、表示画像の合計数に対する、警告が表示される表示画像のフレームの数(または、最小限の警告が頻繁にまたは常に表示される場合など、閾値の規模よりも大きい規模で警告が表示されるとき)に対応することができる。警告率は没入感の喪失率を示すことができる。警告を生成するか否か、または警告と関連付けられたパラメータを決定するのに使用される関数もしくは閾値は、目標範囲内の警告率を維持するように調節することができる。例えば、特定の期間にわたる警告率(例えば、過去の秒数もしくは分数、過去のアプリケーション使用、過去のHMD使用)を監視し、最小閾値もしくは最大閾値のうち少なくとも1つと比較することができ、警告率が最小閾値もしくは最大閾値のうち少なくとも1つの外にないことに応答して、警告を誘発するか否かを決定するのに使用される閾値を、警告率が適切に増加または減少するように調節することができる。いくつかの実施形態では、警告を誘発するか否かを決定するのに使用される閾値は、警告が表示されたときにユーザが適時に反応して衝突を回避するのが困難なことがある地点まで、閾値が調節されないことを担保することができる、絶対限界を有する。
警告はユーザモデルに応答して生成することができる。ユーザモデルは、衝突データ、ならびにいつ衝突が起こるかの指示もしくは没入感がいつ失われるかに関する要因に基づいて、警告を生成するかまたは警告の生成を誘発するように訓練された、機械学習モデルを含むことができる。衝突データはユーザモデルを更新するのに使用することができる。衝突データをユーザモデルに提供して、ユーザモデルに、衝突データに基づいて警告を生成するのに使用される閾値またはパラメータを生成させることができる。
いくつかの実施形態では、警告は、警告を誘発する1つまたは複数の障害物の部分の所在位置を、HMDのディスプレイのピクセルにマッピングすることによって生成される。例えば、1つまたは複数の障害物の部分の所在位置は、周期的に(例えば、ユーザが移動している間)サンプリングし更新することができ、HMDによって表示される画像空間内のピクセルは、ユーザの方向またはHMDのFOVおよび所在位置に基づいて識別することができる。いくつかの実施形態では、ピクセルの角度範囲は、FOV内の1つまたは複数の障害物を表すのに使用され、角度範囲は、ユーザと1つまたは複数の障害物との間の距離に基づいて見積もることができる。いくつかの実施形態では、1つまたは複数の障害物はFOVの外に位置することがあり、その場合、警告はFOVの縁部または縁部部分に沿って提示することができる。
335で、起こり得る衝突に関する警告を表す表示データが生成される。警告は、HMDのユーザに起こり得る衝突を警告するため、1つもしくは複数の障害物のアイコン、ラベル、または表現を使用して生成することができる。例えば、警告は、1つまたは複数の障害物を表すグリッド状要素(例えば、グリッド状の壁)を示す、表示データを含むように生成することができる。警告が、ユーザが知覚する仮想環境内の実世界所在位置を示すことができるように、警告は、ユーザの移動方向に対する、1つまたは複数の障害物の実世界所在位置に対応するように生成することができる。上述したように、1つまたは複数の障害物がユーザの横または後ろにある場合など、警告は、HMDのFOVの縁部または縁部部分に生成することができる。警告は、HMDによって表示される各画像とともに表示することができ、またはHMDによって表示される画像とは異なるフレームレートで表示することができる。警告は、1つまたは複数の障害物に関する奥行きマップデータを使用して表示することができる。警告は、HMDを使用して表示される仮想環境内のオーバーレイとして提示することができる。いくつかの実施形態では、警告は、音声警告、あるいはハンドデバイスを保持している手が対象物と衝突しようとしている場合はハンドデバイスの振動、または頭が対象物に衝突しようとしている場合は頭部装着型ディスプレイの振動など、触覚による警告である。
方法300またはステップまたはその動作は、様々な条件に基づいて実施することができる。方法300は、HMDに対する1つまたは複数の障害物の所在位置を校正するためなど、HMDまたはVRシステムが、初期化、再起動、またはセットアップモードであることの検出に応答して実施することができる。いくつかの実施形態では、方法300は、動きデータを周期的に検出し、動きデータに基づいて起こり得る衝突が起こることがあるか否かを決定するためなど、周期的基準で実施される。方法300は、起こり得る衝突を検出するかまたは警告をリフレッシュする命令を示す(例えば、他の場合は警告が誘発されない場合であっても、1つもしくは複数の障害物の所在位置の部分的または完全な指示を提示する)ユーザ入力など、ユーザ入力に応答して実施することができる。
本明細書に記載する様々な動作は、コンピュータシステム上で実現することができる。図4は、本開示を実現するのに使用可能な、代表的なサーバシステム400およびクライアントコンピュータシステム414のブロック図を示している。サーバシステム400または類似のシステムは、本明細書に記載のサービスもしくはサーバまたはその部分を実現することができる。クライアントコンピュータシステム414または類似のシステムは、本明細書に記載するクライアントを実現することができる。システム100、200および本明細書に記載する他のものはそれぞれ、システム400、414の特徴を組み込むことができる。
サーバシステム400は、いくつかのモジュール402(例えば、ブレードサーバにおけるブレード)を組み込むモジュール設計を有することができる。2つのモジュール402が示されているが、任意の数を提供することができる。各モジュール402は、処理装置404およびローカル記憶装置406を含むことができる。
処理装置404は、1つもしくは複数のコアを有することができる単一のプロセッサ、または複数のプロセッサを含むことができる。処理装置404は、汎用の一次プロセッサ、ならびにグラフィックスプロセッサ、デジタル信号プロセッサなど、1つまたは複数の専用コプロセッサを含むことができる。特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)など、カスタマイズされた回路を使用して、一部または全ての処理装置404を実現することができる。かかる集積回路は、回路自体に格納された命令を実行する。処理装置404は、ローカル記憶装置406に格納された命令を実行することができる。任意のタイプのプロセッサを任意の組み合わせで、処理装置404に含めることができる。
ローカル記憶装置406は、揮発性記憶媒体(例えば、従来のDRAM、SRAM、SDRAMなど)および/または不揮発性記憶媒体(例えば、磁気もしくは光学ディスク、フラッシュメモリなど)を含むことができる。ローカル記憶装置406に組み込まれる記憶媒体は、所望に応じて、固定、取外し可能、またはアップグレード可能であることができる。ローカル記憶装置406は、システムメモリ、読出し専用メモリ(ROM)、および恒久的記憶デバイスなどの様々なサブユニットへと、物理的または論理的に分割することができる。システムメモリは、ダイナミックランダムアクセスメモリなど、読出し書込みメモリデバイスまたは揮発性読出し書込みメモリであることができる。システムメモリは、処理装置404が実行時に必要とする命令およびデータの一部または全てを格納することができる。ROMは、処理装置404によって必要とされる静的データおよび命令を格納することができる。恒久的記憶デバイスは、モジュール402の電源が切られたときであっても命令およびデータを格納することができる、不揮発性の読出し書込みメモリデバイスであることができる。「記憶媒体」という用語は、本明細書で使用するとき、データを(上書き、電気的外乱、電力損失などは受けるが)無期限に格納することができ、無線でもしくは有線接続を通じて伝播する搬送波および一時的な電子信号を含まない、任意の媒体を含む。
ローカル記憶装置406は、システム100の機能などの様々なサーバ機能を実現するオペレーティングシステムおよび/またはプログラム、あるいは本明細書に記載の他の任意のシステム、あるいはシステム100または本明細書に記載の他の任意のシステムと関連付けられた他の任意のサーバなど、処理装置404によって実行される1つまたは複数のソフトウェアプログラムを格納することができる。
「ソフトウェア」は、一般に、処理装置404によって実行されると、サーバシステム400(もしくはその部分)に様々な動作を実施させることによって、ソフトウェアプログラムの動作を実行し実施する1つまたは複数の特定の機械命令を定義する、命令のシーケンスを指す。命令は、処理装置404によって実行するために揮発性ワーキングメモリに読み込むことができる、読出し専用メモリに常駐するファームウェア、および/または不揮発性記憶媒体に格納されるプログラムコードとして格納することができる。ソフトウェアは、単一のプログラム、または別個のプログラムの集合体、または所望に応じて相互作用するプログラムモジュールとして実現することができる。ローカル記憶装置406(または後述する非ローカル記憶装置)から、処理装置404は、上述の様々な動作を実行するために、実行するプログラム命令および処理するデータを取得することができる。
いくつかのサーバシステム400では、複数のモジュール402は、バスまたは他の相互接続408を介して相互接続して、モジュール402とサーバシステム400の他の構成要素との間の通信をサポートするローカルエリアネットワークを形成することができる。相互接続408は、サーバラック、ハブ、ルータなどを含む様々な技術を使用して実現することができる。
広域ネットワーク(WAN)インターフェース410は、ローカルエリアネットワーク(相互接続408)とインターネットなどのより大規模なネットワークとの間のデータ通信能力を提供することができる。有線(例えば、イーサネット、IEEE 802.3規格)および/または無線技術(例えば、Wi-Fi、IEEE 802.11規格)を含む、従来のまたは他の活動技術を使用することができる。
ローカル記憶装置406は、処理装置404のためのワーキングメモリを提供して、処理されるプログラムおよび/またはデータに対する高速アクセスを提供するとともに、相互接続408におけるトラフィックを低減することができる。大量データのための記憶装置を、相互接続408に接続することができる1つまたは複数の大容量記憶装置サブシステム412によって、ローカルエリアネットワークに提供することができる。大容量記憶装置サブシステム412は、磁気、光学、半導体、または他のデータ記憶媒体に基づくことができる。ダイレクトアタッチドストレージ、ストレージエリアネットワーク、ネットワークアタッチドストレージなどを使用することができる。サービスもしくはサーバによって作成、消費、または維持されるものとして本明細書に記載される、任意のデータストアまたは他のデータの集合体を、大容量記憶装置サブシステム412に格納することができる。追加のデータ記憶資源が、WANインターフェース410を介して(場合によってはレイテンシを増加して)アクセス可能であってもよい。
サーバシステム400は、WANインターフェース410を介して受信される要求に応答して動作することができる。例えば、モジュール402の1つは、受信した要求に応答して、監督機能を実現し、離散的タスクを他のモジュール402に割り当てることができる。従来の作業割当て技術を使用することができる。要求が処理されると、WANインターフェース410を介して要求側に結果を返すことができる。かかる動作は一般に自動化することができる。WANインターフェース410は、複数のサーバシステム400を互いに接続して、多量の活動を管理することができるスケーラブルシステムを提供することができる。動的資源割当ておよび再割当てを含む、サーバシステムおよびサーバファーム(協働するサーバシステムの集合体)を管理する従来のまたは他の技術を使用することができる。
サーバシステム400は、インターネットなどの広域ネットワークを介して、様々なユーザ所有またはユーザ操作のデバイスと相互作用することができる。ユーザ操作のデバイスの一例が、クライアントコンピューティングシステム414として図4に示されている。クライアントコンピューティングシステム414は、例えば、スマートフォン、他の移動電話、タブレットコンピュータ、ウェアラブルコンピューティングデバイス(例えば、スマートウォッチ、眼鏡)、デスクトップコンピュータ、ラップトップコンピュータなどのコンシューマデバイスとして実現することができる。
例えば、クライアントコンピューティングシステム414は、WANインターフェース410を介して通信することができる。クライアントコンピューティングシステム414は、処理装置416、記憶デバイス418、ネットワークインターフェース420、ユーザ入力デバイス422、およびユーザ出力デバイス424など、従来のコンピュータ構成要素を含むことができる。クライアントコンピューティングシステム414は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、他のモバイルコンピューティングデバイス、ウェアラブルコンピューティングデバイスなど、様々な形状因子で実現されるコンピューティングデバイスであることができる。
プロセッサ416および記憶デバイス418は、上述の処理装置404およびローカル記憶装置406と同様のものであることができる。好適なデバイスは、クライアントコンピューティングシステム414に対して求められる要件に基づいて選択することができ、例えば、クライアントコンピューティングシステム414は、処理能力が限定された「シン」クライアントとして、または高出力コンピューティングデバイスとして実現することができる。クライアントコンピューティングシステム414は、メッセージにアクセスする、メッセージに対するアクションを実施する、および上述した他の相互作用など、メッセージ管理サービスのサーバシステム400との様々な相互作用を可能にする、処理装置416によって実行可能なプログラムコードを備えることができる。いくつかのクライアントコンピューティングシステム414はまた、メッセージ管理サービスとは独立して、メッセージングサービスと相互作用することができる。
ネットワークインターフェース420は、サーバシステム400のWANインターフェース410も接続される、広域ネットワーク(例えば、インターネット)に対する接続を提供することができる。ネットワークインターフェース420は、有線インターフェース(例えば、イーサネット)、および/またはWi-Fi、ブルートゥース、またはセルラーデータネットワーク規格(例えば、3G、4G、LTEなど)などの様々なRFデータ通信規格を実現する無線インターフェースを含むことができる。
ユーザ入力デバイス422は、ユーザがクライアントコンピューティングシステム414に信号を提供するのに用いることができる、任意のデバイス(または複数のデバイス)を含むことができ、クライアントコンピューティングシステム414は、特定のユーザ要求または情報を示すものとして信号を解釈することができる。ユーザ入力デバイス422は、キーボード、タッチパッド、タッチスクリーン、マウスもしくは他のポインティングディバイス、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、マイクロフォンなどのいずれかまたは全てを含むことができる。
ユーザ出力デバイス424は、クライアントコンピューティングシステム414がユーザに情報を提供するのに用いることができる、任意のデバイスを含むことができる。例えば、ユーザ出力デバイス424は、クライアントコンピューティングシステム414によって生成されるか該システムに送達される画像を表示する、ディスプレイを含むことができる。ディスプレイは、例えば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)を含む発光ダイオード(LED)、投影システム、陰極線管(CRT)などの様々な画像生成技術を、サポート電子部品(例えば、デジタルアナログもしくはアナログデジタル変換器、信号プロセッサなど)とともに組み込むことができる。入力および出力両方のデバイスとして機能する、タッチスクリーンなどのデバイスを使用することができる。出力デバイス424は、ディスプレイに加えてまたはディスプレイの代わりに提供することができる。例としては、インジケータ光、スピーカー、触覚「ディスプレイ」デバイス、プリンタなどが挙げられる。
いくつかの実現例としては、コンピュータプログラム命令をコンピュータ可読記憶媒体に格納する、マイクロプロセッサ、記憶装置、およびメモリなどの電子構成要素が挙げられる。本明細書に記載する特徴の多くは、コンピュータ可読記憶媒体として符号化されたプログラム命令のセットとして指定される、プロセスとして実現することができる。これらのプログラム命令は、1つまたは複数の処理装置によって実行されると、プログラム命令に示されている様々な動作を処理装置に実施させる。プログラム命令またはコンピュータコードの例としては、コンパイラによって作成されるものなどの機械コード、およびインタープリタを使用してコンピュータ、電子構成要素、またはマイクロプロセッサによって実行される、より高次のコードを含むファイルが挙げられる。好適なプログラミングを通して、処理装置404および416は、サーバシステム400およびクライアントコンピューティングシステム414に対して、サーバまたはクライアントによって実施されるものとして本明細書に記載する機能性、またはメッセージ管理サービスと関連付けられた他の機能性のいずれかを含む、様々な機能性を提供することができる。
サーバシステム400およびクライアントコンピューティングシステム414は例示であり、変形および修正が可能であることが認識されるであろう。本開示と関連して使用されるコンピュータシステムは、本明細書には具体的に記載しない他の能力を有することができる。更に、サーバシステム400およびクライアントコンピューティングシステム414について、特定のブロックを参照して記載しているが、該ブロックは説明の便宜上定義されているものであり、構成部品の特定の物理的配置を示唆しようとするものではないことが理解されるべきである。例えば、異なるブロックを、同じ設備に、同じサーバラックに、または同じマザーボード上に配置することができるが、必ずしもそうでなくてもよい。更に、ブロックは必ずしも物理的に別個の構成要素に対応していなくてもよい。ブロックは、例えば、プロセッサをプログラミングするか、または適切な制御回路を提供することによって、様々な動作を実施するように構成することができ、様々なブロックは、初期の構成がどのように得られるかに応じて再構成可能であってもなくてもよい。本開示の実現例は、回路およびソフトウェアの任意の組み合わせを使用して実現される電子デバイスを含む、様々な装置で実現することができる。
いくつかの例示的な実現例について記載してきたが、上記は例示であって限定ではなく、例として提示されていることが明白である。特に、本明細書に提示する例の多くには、方法行為またはシステム要素の特定の組み合わせが関与するが、それらの行為および要素は、同じ目的を遂行するために他の形で組み合わせることができる。1つの実現例に関連して考察される行為、要素、および特徴は、他の実現例における類似の役割から除外されないものとする。
本明細書に開示する実施形態と関連して記載される、様々なプロセス、動作、例示の論理、論理ブロック、モジュール、および回路を実現するのに使用される、ハードウェアおよびデータ処理構成要素は、汎用シングルもしくはマルチチッププロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他のプログラマブル論理デバイス、離散的ゲートもしくはトランジスタ論理、離散的ハードウェア構成要素、または本明細書に記載の機能を実施するように設計された上記のものの任意の組み合わせを用いて、実現または実施されてもよい。汎用プロセッサは、マイクロプロセッサ、または任意の従来のプロセッサ、コントローラ、マイクロコントローラ、もしくは状態機械であってもよい。プロセッサはまた、DSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアと連動した1つもしくは複数のマイクロプロセッサ、または他の任意のかかる構成など、コンピューティングデバイスの組み合わせとして実現されてもよい。いくつかの実施形態では、特定のプロセスおよび方法は、所与の機能に特異的な回路によって実施されてもよい。メモリ(例えば、メモリ、メモリユニット、記憶デバイスなど)は、本開示に記載する様々なプロセス、レイヤ、およびモジュールを完成させるかもしくは容易にする、データおよび/またはコンピュータコードを格納する、1つまたは複数のデバイス(例えば、RAM、ROM、フラッシュメモリ、ハードディスク記憶装置など)を含んでもよい。メモリは、揮発性メモリもしくは不揮発性メモリであるかまたはそれらを含んでもよく、本開示に記載する様々なアクティビティおよび情報構造をサポートする、データベース構成要素、オブジェクトコード構成要素、スクリプト構成要素、または他の任意のタイプの情報構造を含んでもよい。例示的実施形態によれば、メモリは、処理回路を介してプロセッサに通信可能に接続され、本明細書に記載の1つもしくは複数のプロセスを(例えば、処理回路および/またはプロセッサによって)実行するためのコンピュータコードを含む。
本開示は、様々な動作を遂行するための任意のコンピュータ可読媒体上における、方法、システム、およびプログラム製品を想到する。本開示の実施形態は、既存のコンピュータプロセッサを使用して、またはこの目的もしくは別の目的のために組み込まれる、適切なシステムのための専用コンピュータプロセッサによって、または配線接続システムによって、実現されてもよい。本開示の範囲内の実施形態は、機械実行可能命令もしくはデータ構造を保持するかまたは有する、機械可読媒体を備えるプログラム製品を含む。かかる機械可読媒体は、汎用もしくは専用コンピュータ、またはプロセッサを有する他の機械によってアクセスすることができる、任意の利用可能な媒体であることができる。例として、かかる機械可読媒体は、RAM、ROM、EPROM、EEPROM、または他の光学ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、あるいは機械実行可能命令またはデータ構造の形態で所望のプログラムコードを保持または格納するのに使用することができ、汎用もしくは専用コンピュータまたはプロセッサを有する他の機械でアクセスすることができる、他の任意の媒体を含むことができる。上記のものの組み合わせはまた、機械可読媒体の範囲に含まれる。機械実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理機械に、特定の機能または機能群を実施させる、命令およびデータを含む。
本明細書で使用する用語および専門用語は、説明のためのものであって限定とみなされるべきではない。本明細書における、「~を含む」、「~を備える」、「~を有する」、「~を含有する」、「~を伴う」、「~によって特徴付けられる」、「~を特徴とする」およびそれらの変形の使用は、該用語とともに列挙される項目、それらの等価物、および追加の項目、ならびに排他的に該用語とともに列挙される項目から成る代替実現例を網羅することを意味する。一実現例では、本明細書に記載するシステムおよび方法は、記載する要素、行為、または構成要素のうちの1つ、2つ以上の各組み合わせ、または全てから成る。
単数形で言及される本明細書のシステムおよび方法の実現例または要素または行為に対する任意の言及は、複数のこれらの要素を含む実現例も包含することができ、本明細書の任意の実現例または要素または行為に対する複数形での任意の言及は、単一の要素のみを含む実現例も包含することができる。単数形または複数形での言及は、本明細書に開示されるシステムもしくは方法、それらの構成要素、行為、または要素を、単数または複数の構成に限定しようとするものではない。任意の情報、行為、または要素に基づいた任意の行為または要素に対する言及は、行為または要素が、任意の情報、行為、または要素に少なくとも部分的に基づく場合の実現例を含むことができる。
本明細書に開示する任意の実現例は、他の任意の実現例または実施形態と組み合わせることができ、「ある実現例」、「いくつかの実現例」、「一実現例」などに対する言及は、必ずしも相互に排他的ではなく、実現例と関連して記載する特定の特徴、構造、または特性が、少なくとも1つの実現例または実施形態に含まれ得ることを示すものとする。かかる用語は、本明細書で使用するとき、必ずしも全てが同じ実現例を指すものではない。任意の実現例は、本明細書に開示する態様および実現例と一致する任意の手法で、他の任意の実現例と包括的または排他的に組み合わせることができる。
図面、詳細な説明、または任意の請求項における技術的特徴に参照符号が付される場合、参照符号は、図面、詳細な説明、および任意の請求項の了解度を向上するために含まれるものである。したがって、参照符号が存在してもしなくても、任意の請求項要素の範囲に対する限定的影響を何ら有さない。
本明細書に記載するシステムおよび方法は、それらの特性から逸脱することなく、他の特定の形態で具体化されてもよい。更に、相対的平行、垂直、鉛直、または他の位置付けもしくは向きの説明は、純粋に鉛直、平行、または垂直な位置付けから±10%または±10度の変動を含む。「約」、「およそ」、「実質的に」、または他の程度を表す用語に対する言及は、別段の明示がない限り、所与の測定値、単位、または範囲から±10%の変動を含む。結合された要素は、直接または介在要素を用いて、互いに電気的、機械的、または物理的に結合することができる。本明細書に記載するシステムおよび方法の範囲は、したがって、上述の記載ではなく添付の請求項によって示され、請求項の等価物の意味および範囲内にある変更は包含される。
「結合された」という用語およびその変形は、2つの部材を直接または間接的に互いに接合することを含む。かかる接合は、不動(例えば、恒久的もしくは固定)または可動(例えば、除去可能もしくは解放可能)であってもよい。かかる接合は、互いに直接結合された2つの部材によって、別個の介在部材および互いに結合された任意の追加の中間部材を使用して互いに結合された2つの部材によって、あるいは2つの部材の一方とともに単一の単位体として一体的に形成された介在部材を使用して互いに結合された2つの部材によって、達成されてもよい。「結合された」またはその変形が、追加の用語によって修正された場合(例えば、直接結合された)、上述の「結合された」の包括的定義は、追加の用語の平易な言葉の意味によって修正され(例えば、「直接結合された」は、任意の別個の介在部材を有さない2つの部材の接合を意味する)、それによって上述の「結合された」の包括的定義よりも狭い定義になる。かかる結合は機械的、電気的、または流体的であってもよい。
「または」に対する言及は包括的と解釈することができるので、「または」を使用して記載されるいずれの用語も、記載される用語の1つ、2つ以上、および全てのいずれかを示すことができる。「『A』および『B』のうち少なくとも1つ」は、「A」のみ、「B」のみ、ならびに「A」および「B」の両方を含むことができる。「備える」または他のオープンな用語と併せて使用されるかかる言及は、追加の項目を含むことができる。
様々な要素のサイズ、寸法、構造、形状、および比率、パラメータの値、取付け構造、材料使用、色、向きにおける変形例など、記載される要素および行為の修正は、本明細書に開示する主題の教示および利点から実質的に逸脱することなく行うことができる。例えば、一体的に形成されるものとして示される要素は、複数の部分または要素で構築することができ、要素の位置を反転させるかまたは別の形で変動させることができ、離散的要素または位置の性質もしくは数を改変または変動させることができる。他の置換、修正、変更、および省略も、本開示の範囲から逸脱することなく、開示の要素および動作の設計、動作条件、および配置に対して行うことができる。
本明細書における要素の位置に対する言及(例えば、「上部」、「底部」、「上方」、「下方」)は単に、図面における様々な要素の向きを説明するために使用されるものである。様々な要素の向きは、他の例示的実施形態によって異なってもよく、かかる変形は本開示に包含されるものとする。