(57)【要約】  模擬現実のビューベースのブレークポイントのためのシステム及び方法が記載される。いくつかの実装形態は、１つ以上の動きセンサを使用して取り込まれる動きデータにアクセスすることと、少なくとも動きデータに基づいて、ヘッドマウントディスプレイを使用して提示される模擬現実環境内のビューを決定することと、ビューがブレークポイントに関連付けられた一連のビューの一部であることを検出することと、ビューが一連のビューの一部であることに少なくとも基づいて、ブレークポイントをトリガすることと、ブレークポイントがトリガされたことに応じて、ブレークポイントに関連付けられたデバッグ動作を実施することと、デバッグ動作を実施している間、模擬現実環境内の少なくとも１つの仮想オブジェクトの状態が進展しヘッドマウントディスプレイによって表示され続けることを可能にするために、模擬現実環境の模擬プロセスの実行を継続することと、を含む方法において具現化することができる。
2021524109.tif 000002
【特許請求の範囲】
【請求項１】
ディスプレイと、
前記ディスプレイに取り付けられた１つ以上の動きセンサと、
処理装置であって、
前記１つ以上の動きセンサを使用して取り込まれる動きデータにアクセスし、
少なくとも前記動きデータに基づいて、前記ディスプレイを使用して提示される模擬現実環境内のビューを決定し、
前記ビューがブレークポイントに関連付けられているかどうかを検出し、
前記ビューが前記ブレークポイントに関連付けられていることを検出したことに少なくとも基づいて、前記ブレークポイントをトリガし、前記ブレークポイントに関連付けられたデバッグ動作を実施し、
前記デバッグ動作を実施している間、前記模擬現実環境内の少なくとも１つの仮想オブジェクトの状態を前記ディスプレイによって表示し続け、前記１つ以上の動きセンサを使用して受信される入力に応答することを可能にするために、前記模擬現実環境の模擬プロセスの実行を継続するように構成された処理装置と、
を備えるシステム。
【請求項２】
前記ビューが前記模擬現実環境内の位置からの視線ベクトルに対応しており、前記ブレークポイントが、前記模擬現実環境内の領域及び中央視線ベクトルに対する角度範囲に対応する、一連のビューに関連付けられており、前記処理装置が、
前記ビューの前記位置が前記一連のビューの前記領域内であるかどうかを判定し、
前記ビューの前記視線ベクトルと前記一連のビューの前記中央視線ベクトルとの間の角度を測定し、かつ
前記角度が前記一連のビューの前記角度範囲内であるかどうかを判定することにより、前記ビューが前記ブレークポイントに関連付けられていることを検出するように構成されている、請求項１に記載のシステム。
【請求項３】
前記ビューが前記模擬現実環境内の視線に対応しており、前記ブレークポイントが、前記模擬現実環境内の領域を通る一連の視線に対応する一連のビューに関連付けられており、前記処理装置が、
前記ビューの前記視線が前記一連のビューの前記領域を通るかどうかを判定することにより、前記ビューが前記ブレークポイントに関連付けられていることを検出するように構成されている、請求項１に記載のシステム。
【請求項４】
前記ビューが前記模擬現実環境内の焦点に対応しており、前記ブレークポイントが、前記模擬現実環境内の領域に対応する一連のビューに関連付けられており、前記処理装置が、
前記ビューの前記焦点が前記一連のビューの前記領域内であるかどうかを判定することにより、前記ビューが前記ブレークポイントに関連付けられていることを検出するように構成されている、請求項１に記載のシステム。
【請求項５】
前記ブレークポイントが複数のトリガ条件を有し、前記処理装置が、
前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスのコードラインに到達し、同時に前記ビューが前記ブレークポイントに関連付けられていることに少なくとも基づいて、前記ブレークポイントをトリガするように構成されている、請求項１から４のいずれか一項に記載のシステム。
【請求項６】
前記ブレークポイントが複数のトリガ条件を有し、前記処理装置が、
前記模擬現実環境内の仮想オブジェクトの状態の条件が満たされ、同時に前記ビューが前記ブレークポイントに関連付けられていることに少なくとも基づいて、前記ブレークポイントをトリガするように構成されている、請求項１から５のいずれか一項に記載のシステム。
【請求項７】
前記ブレークポイントが複数のトリガ条件を有し、前記処理装置が、
前記ディスプレイのユーザによる動作を検出し、同時に前記ビューが前記ブレークポイントに関連付けられていることに少なくとも基づいて、前記ブレークポイントをトリガするように構成されている、請求項１から６のいずれか一項に記載のシステム。
【請求項８】
前記処理装置が、
前記ブレークポイントがトリガされたことに応じて、少なくとも前記ビューに基づくレイキャスティングにより、前記模擬現実環境内のデバッグされる１つ以上のオブジェクトを特定し、
特定された前記１つ以上のオブジェクトに関連付けられた１つ以上のプロセスに関する前記デバッグ動作を実施するように構成されている、請求項１から７のいずれか一項に記載のシステム。
【請求項９】
前記デバッグ動作が、前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を一時停止することを含む、請求項１から８のいずれか一項に記載のシステム。
【請求項１０】
前記処理装置が、
一時停止される前記プロセスに関連付けられた前記オブジェクトの視覚表現を生成し、
前記プロセスが一時停止されている間、前記ディスプレイを使用して、前記模擬現実環境内の前記視覚表現の提示を継続するように構成されている、請求項９に記載のシステム。
【請求項１１】
前記デバッグ動作が、前記ディスプレイを使用して、前記ディスプレイのユーザが前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を制御することを可能にするデバッグ制御インタフェースを、前記模擬現実環境内に提示することを含む、請求項１から１０のいずれか一項に記載のシステム。
【請求項１２】
前記デバッグ制御インタフェースが、ユーザが一時停止、再開、ステップイン、ステップオーバー、及びステップアウトからなる一連の機能から少なくとも１つの機能を選択することを可能にする、請求項１１に記載のシステム。
【請求項１３】
前記デバッグ動作が、前記ディスプレイを使用して、前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスのコードを、前記模擬現実環境内に提示することを含む、請求項１から１２のいずれか一項に記載のシステム。
【請求項１４】
前記デバッグ動作が、前記ディスプレイを使用して、前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの状態変数の値を、前記模擬現実環境内に提示することを含む、請求項１から１３のいずれか一項に記載のシステム。
【請求項１５】
前記デバッグ動作が、前記模擬現実環境内の仮想オブジェクトの１つ以上のパラメータのログを生成することを含む、請求項１から１４のいずれか一項に記載のシステム。
【請求項１６】
前記ディスプレイがヘッドマウントディスプレイである、請求項１から１５のいずれか一項に記載のシステム。
【請求項１７】
１つ以上の動きセンサを使用して取り込まれる動きデータにアクセスすることと、
少なくとも前記動きデータに基づいて、ディスプレイを使用して提示される模擬現実環境内のビューを決定することと、
前記ビューがブレークポイントに関連付けられているかどうかを検出することと、
前記ビューが前記ブレークポイントに関連付けられていることを検出したことに少なくとも基づいて、前記ブレークポイントをトリガすることと、
前記ブレークポイントがトリガされたことに応じて、前記ブレークポイントに関連付けられたデバッグ動作を実施することと、
前記デバッグ動作を実施している間、前記模擬現実環境内の少なくとも１つの仮想オブジェクトの状態が進展し前記ディスプレイによって表示され続けることを可能にするために、前記模擬現実環境の模擬プロセスの実行を継続することと、
を含む方法。
【請求項１８】
前記ビューが前記模擬現実環境内の位置からの視線ベクトルに対応しており、前記ブレークポイントが、前記模擬現実環境内の領域及び中央視線ベクトルに対する角度範囲に対応する、一連のビューに関連付けられており、前記ビューが前記ブレークポイントに関連付けられていることを検出することが、
前記ビューの前記位置が前記一連のビューの前記領域内であるかどうかを判定することと、
前記ビューの前記視線ベクトルと前記一連のビューの前記中央視線ベクトルとの間の角度を測定することと、
前記角度が前記一連のビューの前記角度範囲内であるかどうかを判定することとを含む、請求項１７に記載の方法。
【請求項１９】
前記ビューが前記模擬現実環境内の視線に対応しており、前記ブレークポイントが、前記模擬現実環境内の領域を通る一連の視線に対応する一連のビューに関連付けられており、前記ビューが前記ブレークポイントに関連付けられていることを検出することが、
前記ビューの前記視線が前記一連のビューの前記領域を通るかどうかを判定することを含む、請求項１７に記載の方法。
【請求項２０】
前記ビューが前記模擬現実環境内の焦点に対応しており、前記ブレークポイントが、前記模擬現実環境内の領域に対応する一連のビューに関連付けられており、前記ビューが前記ブレークポイントに関連付けられていることを検出することが、
前記ビューの前記焦点が前記一連のビューの前記領域内であるかどうかを判定することを含む、請求項１７に記載の方法。
【請求項２１】
前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスのコードラインに到達し、同時に前記ビューが前記ブレークポイントに関連付けられていることに少なくとも基づいて、前記ブレークポイントをトリガすることを含む、請求項１７から２０のいずれか一項に記載の方法。
【請求項２２】
前記模擬現実環境内の仮想オブジェクトの状態の条件が満たされ、同時に前記ビューが前記ブレークポイントに関連付けられていることに少なくとも基づいて、前記ブレークポイントをトリガすることを含む、請求項１７から２１のいずれか一項に記載の方法。
【請求項２３】
前記ディスプレイのユーザによる動作を検出し、同時に前記ビューが前記ブレークポイントに関連付けられていることに少なくとも基づいて、前記ブレークポイントをトリガすることを含む、請求項１７から２２のいずれか一項に記載の方法。
【請求項２４】
前記ブレークポイントがトリガされたことに応じて、少なくとも前記ビューに基づくレイキャスティングにより、前記模擬現実環境内のデバッグされる１つ以上のオブジェクトを特定することと、
特定された前記１つ以上のオブジェクトに関連付けられた１つ以上のプロセスに関する前記デバッグ動作を実施することと、
を含む、請求項１７から２３のいずれか一項に記載の方法。
【請求項２５】
前記デバッグ動作が、前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を一時停止することを含む、請求項１７から２４のいずれか一項に記載の方法。
【請求項２６】
前記処理装置が、
一時停止される前記プロセスに関連付けられた前記オブジェクトの視覚表現を生成し、
前記プロセスが一時停止されている間に、前記ディスプレイを使用して、前記模擬現実環境内の前記視覚表現の提示を継続するように構成されている、請求項２５に記載の方法。
【請求項２７】
前記デバッグ動作が、前記ディスプレイを使用して、前記ディスプレイのユーザが前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を制御することを可能にするデバッグ制御インタフェースを、前記模擬現実環境内に提示することを含む、請求項１７から２６のいずれか一項に記載の方法。
【請求項２８】
前記デバッグ制御インタフェースが、ユーザが一時停止、再開、ステップイン、ステップオーバー、及びステップアウトからなる一連の機能から少なくとも１つの機能を選択することを可能にする、請求項２７に記載の方法。
【請求項２９】
前記デバッグ動作が、前記ディスプレイを使用して、前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスのコードを、前記模擬現実環境内に提示することを含む、請求項１７から２８のいずれか一項に記載の方法。
【請求項３０】
前記デバッグ動作が、前記ディスプレイを使用して、前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの状態変数の値を、前記模擬現実環境内に提示することを含む、請求項１７から２９のいずれか一項に記載の方法。
【請求項３１】
前記デバッグ動作が、前記模擬現実環境内の仮想オブジェクトの１つ以上のパラメータのログを生成することを含む、請求項１７から３０のいずれか一項に記載の方法。
【請求項３２】
前記ディスプレイがヘッドマウントディスプレイである、請求項１７から３１のいずれか一項に記載の方法。
【請求項３３】
実行可能な命令を含む非一時的コンピュータ可読記憶媒体であって、前記実行可能な命令が、プロセッサによって実行されると、
１つ以上の動きセンサを使用して取り込まれる動きデータにアクセスすることと、
少なくとも前記動きデータに基づいて、ディスプレイを使用して提示される模擬現実環境内のビューを決定することと、
前記ビューがブレークポイントに関連付けられているかどうかを検出することと、
前記ビューが前記ブレークポイントに関連付けられていることを検出したことに少なくとも基づいて、前記ブレークポイントをトリガすることと、
前記ブレークポイントがトリガされたことに応じて、前記ブレークポイントに関連付けられたデバッグ動作を実施することと、
前記デバッグ動作を実施している間、前記模擬現実環境内の少なくとも１つの仮想オブジェクトの状態が進展し前記ディスプレイによって表示され続けることを可能にするために、前記模擬現実環境の模擬プロセスの実行を継続することと、
を含む動作の実施を促す、非一時的コンピュータ可読記憶媒体。
【請求項３４】
前記ビューが前記模擬現実環境内の位置からの視線ベクトルに対応しており、前記ブレークポイントが、前記模擬現実環境内の領域及び中央視線ベクトルに対する角度範囲に対応する、一連のビューに関連付けられており、前記ビューが前記ブレークポイントに関連付けられていることを検出することが、
前記ビューの前記位置が前記一連のビューの前記領域内であるかどうかを判定することと、
前記ビューの前記視線ベクトルと前記一連のビューの前記中央視線ベクトルとの間の角度を測定することと、
前記角度が前記一連のビューの前記角度範囲内であるかどうかを判定することとを含む、請求項３３に記載の非一時的コンピュータ可読記憶媒体。
【請求項３５】
前記ビューが前記模擬現実環境内の視線に対応しており、前記ブレークポイントが、前記模擬現実環境内の領域を通る一連の視線に対応する一連のビューに関連付けられており、前記ビューが前記ブレークポイントに関連付けられていることを検出することが、
前記ビューの前記視線が前記一連のビューの前記領域を通るかどうかを判定することを含む、請求項３３に記載の非一時的コンピュータ可読記憶媒体。
【請求項３６】
前記ビューが前記模擬現実環境内の焦点に対応しており、前記ブレークポイントが、前記模擬現実環境内の領域に対応する一連のビューに関連付けられており、前記ビューが前記ブレークポイントに関連付けられていることを検出することが、
前記ビューの前記焦点が前記一連のビューの前記領域内であるかどうかを判定することを含む、請求項３３に記載の非一時的コンピュータ可読記憶媒体。
【請求項３７】
実行可能な命令を含み、前記実行可能な命令が、プロセッサによって実行されると、
前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスのコードラインに到達し、同時に前記ビューが前記ブレークポイントに関連付けられていることに少なくとも基づいて、前記ブレークポイントをトリガすることを含む動作の実施を促す、請求項３３から３６のいずれか一項に記載の非一時的コンピュータ可読記憶媒体。
【請求項３８】
実行可能な命令を含み、前記実行可能な命令が、プロセッサによって実行されると、
前記ブレークポイントがトリガされたことに応じて、少なくとも前記ビューに基づくレイキャスティングにより、前記模擬現実環境内のデバッグされる１つ以上のオブジェクトを特定することと、
特定された前記１つ以上のオブジェクトに関連付けられた１つ以上のプロセスに関する前記デバッグ動作を実施することと、を含む動作の実施を促す、請求項３３から３７のいずれか一項に記載の非一時的コンピュータ可読記憶媒体。
【請求項３９】
前記デバッグ動作が、前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を一時停止することを含む、請求項３３から３８のいずれか一項に記載の非一時的コンピュータ可読記憶媒体。
【請求項４０】
実行可能な命令を含み、前記実行可能な命令が、プロセッサによって実行されると、
一時停止される前記プロセスに関連付けられた前記オブジェクトの視覚表現を生成することと、
前記プロセスが一時停止されている間、前記ディスプレイを使用して、前記模擬現実環境内の前記視覚表現の提示を継続することと、を含む動作の実施を促す、請求項３９に記載の非一時的コンピュータ可読記憶媒体。
【請求項４１】
前記ブレークポイントが複数のトリガ条件を有し、実行可能な命令を含み、前記実行可能な命令が、プロセッサによって実行されると、
前記模擬現実環境内の仮想オブジェクトの状態の条件が満たされ、同時に前記ビューが前記ブレークポイントに関連付けられていることに少なくとも基づいて、前記ブレークポイントをトリガすることを含む動作の実施を促す、請求項３３から４０のいずれか一項に記載の非一時的コンピュータ可読記憶媒体。
【請求項４２】
前記ブレークポイントが複数のトリガ条件を有し、実行可能な命令を含み、前記実行可能な命令が、プロセッサによって実行されると、
前記ディスプレイのユーザによる動作を検出し、同時に前記ビューが前記ブレークポイントに関連付けられていることに少なくとも基づいて、前記ブレークポイントをトリガすることを含む動作の実施を促す、請求項３３から４１のいずれか一項に記載の非一時的コンピュータ可読記憶媒体。
【請求項４３】
前記デバッグ動作が、前記ディスプレイを使用して、前記ディスプレイのユーザが前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を制御することを可能にするデバッグ制御インタフェースを、前記模擬現実環境内に提示することを含む、請求項３３から４２のいずれか一項に記載の非一時的コンピュータ可読記憶媒体。
【請求項４４】
前記デバッグ制御インタフェースが、ユーザが一時停止、再開、ステップイン、ステップオーバー、及びステップアウトからなる一連の機能から少なくとも１つの機能を選択することを可能にする、請求項４３に記載の非一時的コンピュータ可読記憶媒体。
【請求項４５】
前記デバッグ動作が、前記ディスプレイを使用して、前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスのコードを、前記模擬現実環境内に提示することを含む、請求項３３から４４のいずれか一項に記載の非一時的コンピュータ可読記憶媒体。
【請求項４６】
前記デバッグ動作が、前記ディスプレイを使用して、前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの状態変数の値を、前記模擬現実環境内に提示することを含む、請求項３３から４５のいずれか一項に記載の非一時的コンピュータ可読記憶媒体。
【請求項４７】
前記デバッグ動作が、前記模擬現実環境内の仮想オブジェクトの１つ以上のパラメータのログを生成することを含む、請求項３３から４６のいずれか一項に記載の非一時的コンピュータ可読記憶媒体。
【請求項４８】
前記ディスプレイがヘッドマウントディスプレイである、請求項３３から４７のいずれか一項に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、模擬現実（simulated reality）のビューベースのブレークポイントに関する。
【背景技術】
【０００２】
仮想現実（virtual reality）、拡張現実（augmented reality）、及び／又は模擬現実の体験をユーザにもたらすために、ヘッドマウントディスプレイが使用される。コンピュータ命令コード中のエラー（多くの場合、「バグ」と呼ばれる）を追跡して特定するために、ソフトウェア開発者によってデバッグツールが使用される。デバッグツールは、通常、ブレークポイントに関連付けられるとされるコードラインを指定することにより、開発者がソフトウェアコードのブレークポイントを指定することを可能にする。ブレークポイントの条件が発生する（例えば、ソフトウェアの実行中に、指定されたコードラインに到達する）と、デバッグツールは、指定されたコードラインでソフトウェアの実行を一時停止させる、及び／又は、ソフトウェアの一時停止状態の検査及び／又はソフトウェアの制御された実行（例えば、ライン間の一時停止を伴って一度に１ライン毎にコードをステップ実行すること）を容易にするデバッグインタフェースをソフトウェア開発者に提示するなどの、動作をトリガし得る。
【発明の概要】
【０００３】
本明細書には、模擬現実のビューベースのブレークポイントの実装が開示される。
【０００４】
第１の態様では、本明細書に記載される主題は、ヘッドマウントディスプレイと、ヘッドマウントディスプレイに取り付けられた１つ以上の動きセンサと、を含むシステムにおいて具現化することができる。システムは、処理装置を含み、処理装置は、１つ以上の動きセンサを使用して取り込まれる動きデータにアクセスし、少なくとも動きデータに基づいて、ヘッドマウントディスプレイを使用して提示される模擬現実環境内のビューを決定し、ビューがブレークポイントに関連付けられているかどうかを検出し、ビューがブレークポイントに関連付けられていることを検出したことに少なくとも基づいて、ブレークポイントをトリガし、ブレークポイントに関連付けられたデバッグ動作を実施し、デバッグ動作を実施している間、模擬現実環境内の少なくとも１つの仮想オブジェクトの状態をヘッドマウントディスプレイによって表示し続け、１つ以上の動きセンサを使用して受信される入力に応答することを可能にするために、模擬現実環境の模擬プロセスの実行を継続するように構成されている。
【０００５】
第２の態様では、本明細書に記載される主題は、１つ以上の動きセンサを使用して取り込まれる動きデータにアクセスすることと、少なくとも動きデータに基づいて、ヘッドマウントディスプレイを使用して提示される模擬現実環境内のビューを決定することと、ビューがブレークポイントに関連付けられた一連のビューの一部であることを検出することと、ビューが一連のビューの一部であることに少なくとも基づいて、ブレークポイントをトリガすることと、ブレークポイントがトリガされたことに応じて、ブレークポイントに関連付けられたデバッグ動作を実施することと、デバッグ動作を実施している間、模擬現実環境内の少なくとも１つの仮想オブジェクトの状態が進展しヘッドマウントディスプレイによって表示され続けることを可能にするために、模擬現実環境の模擬プロセスの実行を継続することと、を含む方法において具現化することができる。
【０００６】
第３の態様では、本明細書に記載される主題は、ヘッドマウントディスプレイを含むシステムにおいて具現化することができる。システムは、処理装置を含み、処理装置は、ヘッドマウントディスプレイを使用して提示される模擬現実環境内のビューを決定し、ビューがブレークポイントに関連付けられた一連のビューの一部であることを検出し、ビューが一連のビューの一部であることに少なくとも基づいて、ブレークポイントをトリガし、ブレークポイントがトリガされることに応じて、ブレークポイントに関連付けられたデバッグ動作を実施し、デバッグ動作を実施している間、模擬現実環境内の少なくとも１つの仮想オブジェクトの状態が進展しヘッドマウントディスプレイによって表示され続けることを可能にするために、模擬現実環境の模擬プロセスの実行を継続するように構成されている。
【０００７】
第４の態様では、本明細書に記載される主題は、非一時的コンピュータ可読記憶媒体において具現化することができる。非一時的コンピュータ可読記憶媒体は、実行可能な命令を含み得、実行可能な命令は、プロセッサによって実行されると、１つ以上の動きセンサを使用して取り込まれる動きデータにアクセスすることと、少なくとも動きデータに基づいて、ヘッドマウントディスプレイを使用して提示される模擬現実環境内のビューを決定することと、ビューがブレークポイントに関連付けられているかどうかを検出することと、ビューがブレークポイントに関連付けられていることを検出したことに少なくとも基づいて、ブレークポイントをトリガすることと、ブレークポイントがトリガされたことに応じて、ブレークポイントに関連付けられたデバッグ動作を実施することと、デバッグ動作を実施している間、模擬現実環境内の少なくとも１つの仮想オブジェクトの状態が進展しヘッドマウントディスプレイによって表示され続けることを可能にするために、模擬現実環境の模擬プロセスの実行を継続することと、を含む方法において具現化することができる。
【０００８】
本開示は、添付図面と併せて読むと、以下の詳細な説明から最もよく理解される。一般的な慣例に従い、図面の様々な特徴は、原寸どおりではないことを強調する。それどころか、様々な特徴の寸法は、明確さのために任意に拡大又は縮小されている。
【図面の簡単な説明】
【０００９】
【図１】拡張現実空間におけるビューベースのブレークポイント使用シナリオの一例の図である。
【図２】仮想現実空間におけるビューベースのブレークポイント使用シナリオの一例の図である。
【図３】模擬現実アプリケーションにおけるビューベースのブレークポイントを可能とするように構成されたシステムの一例のブロック図である。
【図４】模擬現実アプリケーションにおけるビューベースのブレークポイントを可能とするように構成されたシステムの一例のブロック図である。
【図５】模擬現実アプリケーションの一例のブロック図である。
【図６】ビューベースのブレークポイントを可能とするための技法の一例のフローチャートである。
【図７】ビューがブレークポイントに関連付けられた一連のビューの一部であることを検出するための技法の一例のフローチャートである。
【図８】ブレークポイントがトリガされることに応じてデバッグ動作を実施するための技法の一例のフローチャートである。
【図９】ブレークポイントがトリガされることに応じて、デバッグする１つ以上の仮想オブジェクトを特定するための技法の一例のフローチャートである。
【発明を実施するための形態】
【００１０】
ブレークポイントをアプリケーションのコードラインに配置する又は別の方法で関連付けることができ、これにより、そのコードラインに行き当たると、アプリケーションの実行を一時停止させ、ソフトウェア開発者がコードラインをステップ実行することを可能にし、コード中のエラーの特定及び除去を容易にする。
【００１１】
模擬現実アプリケーションをデバッグするために、ビューベースのブレークポイントを実装することができる。ユーザは、アプリケーションによって提示される模擬現実環境の、ブレークポイントをトリガする一連のビューを（例えば、仮想カメラの位置範囲及び／又は向き模擬現実に関して）規定することができる。このことは、例えば、開発者が、模擬現実アプリケーションによる模擬現実環境内の特定の視座からのバグ又は視覚的アーチファクトに行き当たり、何が問題を引き起こしているかを知るために開発者のコードをステップ実行したいときに有用であり得る。例えば、ユーザは、模擬現実環境の３次元空間内の位置及び領域をコードラインに加えて設定することができ、実行中にそのコードラインに到達し、かつ、ユーザに提示されたビューがブレークポイントに関連付けられた一連の規定されたビューの範囲内であるときに、ブレークポイントがトリガされ得る。
【００１２】
ビューベースのブレークポイントは、模擬現実アプリケーションのために、従来のデバッグツールに勝る著しい利点をもたらし得る。従来のブレークポイントによる場合、開発者は例えば、対象となる正しい視座からコードが実行されることを確実とするために、ブレークポイントを作成する際に頭を静止したままに保つ必要があり得るため、このデバッグ作業は、著しくより困難となり得る。例えば、アプリケーション開発時間が短縮され、かつ／又は結果として生じる模擬現実アプリケーションの障害発生率が低減され得る。
【００１３】
現実環境
ａ．現実環境は、電子システムの支援なしに、個人が感知及び／又は対話できる世界を指す。現実環境（例えば、実際の森林）は、現実要素（例えば、実際の木、実際の構造物、及び実際の動物）を含む。個人は、接触、視覚、嗅覚、聴覚、及び味覚などを介して、現実環境と直接対話し、かつ／又は現実環境を直接感知することができる。
【００１４】
模擬現実
ａ．対照的に、模擬現実（simulated reality、ＳＲ）環境は、電子システムを介して、個人が感知及び／又は対話できる、完全又は部分的にコンピュータによって生成された環境を指す。ＳＲにおいて、個人の動きのサブセットが監視され、それに応答して、ＳＲ環境における１つ以上の仮想オブジェクトの１つ以上の属性が、１つ以上の物理法則と一致するように変更される。例えば、ＳＲシステムは、個人が前方に数歩歩くのを検出し、それに応答して、個人に提示されるグラフィック及び音声を、現実環境でそのような景色及び音にもたらされるであろう変化と同様の変化をもたらすように調整してもよい。ＳＲ環境における仮想オブジェクト（単数又は複数）の属性（単数又は複数）の修正は、また、動きの表現に応答して行われてもよい（例えば、音声に関する命令）。
ｂ．個人は、接触、嗅覚、視覚、味覚、及び音声を含む、自身の感覚のうちのいずれか１つを使用して、ＳＲオブジェクトと対話し、かつ／又はそれを感知することができる。例えば、個人は、多次元（例えば、３次元）又は空間的な聴覚環境を創り出す、かつ／又は音声透過性を可能にする音声オブジェクトと対話すし、かつ／又はそのような音声オブジェクトを感知することができる。多次元又は空間的聴覚環境は、多次元空間内の別個の音声源の知覚を個人に提供する。音声透過性は、コンピュータ生成された音声を用いて又は用いることなく、現実環境からの音声を選択的に組み込む。いくつかのＳＲ環境において、個人は音声オブジェクトのみと対話してもよく、かつ／又は音声オブジェクトのみを感知してもよい。
【００１５】
仮想現実
ａ．ＳＲの一例は、仮想現実（ＶＲ）である。ＶＲ環境とは、感覚のうちの少なくとも１つについて、コンピュータ生成された感覚入力のみを含むように設計された模擬（シミュレーテッド）環境を指す。ＶＲ環境は、個人が対話及び／又は感知することができる複数の仮想オブジェクトを含む。個人は、コンピュータ生成された環境内の個人のアクションのサブセットの模擬を通じて、かつ／又はコンピュータ生成された環境内の個人の模擬又は自身の存在を通じて、ＶＲ環境内の仮想オブジェクトと対話し、かつ／又は仮想オブジェクトを感知することができる。
【００１６】
複合現実
ａ．ＳＲの別の例は、複合現実（ＭＲ）である。ＭＲ環境とは、コンピュータ生成された感覚入力（例えば、仮想オブジェクト）を、現実環境又はその表現からの感覚入力と統合するように設計された模擬環境を指す。現実性のスペクトルにおいて、複合現実環境は一方の端のＶＲ環境と他方の端の完全な現実環境との間にあり、両端を含まない。
ｂ．いくつかのＭＲ環境では、コンピュータによって生成される知覚入力は、現実環境からの知覚入力の変化に適応され得る。また、ＭＲ環境を提示するためのいくつかの電子システムは、また、現実環境に対する向き及び／又は位置を監視して、仮想オブジェクトと現実のオブジェクト（すなわち、現実環境からの現実要素又はその表現）との対話を可能とすることができる。例えば、システムは、仮想の植物が実際の建物に対して静止して見えるように動きを監視してもよい。
ｃ．拡張現実
ｉ．複合現実の一例は、拡張現実（ＡＲ）である。ＡＲ環境は、少なくとも１つの仮想オブジェクトが現実環境上か又はその表現上に重ねられた模擬環境を指す。例えば、電子システムは、不透明なディスプレイと、現実環境の表現である、現実環境の画像又は動画を取り込む少なくとも１つの撮像センサとを有してもよい。システムは、画像又は動画を仮想オブジェクトと合成し、その合成物を不透明なディスプレイ上に表示する。個人は、システムを使用して、現実環境の画像又は動画を介して間接的に現実環境を見て、現実環境上に重ねられた仮想オブジェクトを観察する。システムが画像センサ（単数又は複数）を使用して現実環境の画像を取り込み、それらの画像を使用して不透明なディスプレイ上にＡＲ環境を提示する場合、表示される画像は、ビデオパススルーと呼ばれる。あるいは、ＡＲ環境を表示するための電子システムは、個人が現実環境を直接見ることができる透明又は半透明のディスプレイを有してもよい。システムは、透明又は半透明のディスプレイ上に仮想オブジェクトを表示し、それによって、個人はシステムを使用して、現実環境上に重ねられた仮想オブジェクトを観察してもよい。別の例において、システムは、仮想オブジェクトを現実環境に投影する投影システムを含んでもよい。仮想オブジェクトは、例えば、現実表面上に、又はホログラフとして投影され、それによって、個人は、システムを使用して、現実環境の上に重ねられた仮想オブジェクトを観察してもよい。
ｉｉ．拡張現実環境はまた、現実環境の表現がコンピュータ生成された感覚情報によって変換される模擬環境を指してもよい。例えば、現実環境の表現の一部分は、変更された部分が依然として元々取り込まれた画像（単数又は複数）の表現であり得るが、忠実に再現されたバージョンではないように、視覚的に変換（例えば、拡大）されてもよい。別の例として、ビデオパススルーを提供する際、システムは、センサ画像のうちの少なくとも１つを変更して、画像センサ（単数又は複数）によって取り込まれた視点とは異なる特定の視点を課すことができる。更なる実施例として、現実環境の表現は、その一部分を視覚的に不明瞭にするか、又は除外することによって変更されてもよい。
ｄ．拡張仮想感
ｉ．複合現実の別の例は、拡張仮想現実（ＡＶ）である。ＡＶ環境とは、コンピュータ生成された環境又は仮想環境が現実環境からの少なくとも１つの感覚入力を組み込む、模擬環境を指す。現実環境からの感覚入力（単数又は複数）は、現実環境の少なくとも１つの特性の表現であってもよい。例えば、仮想オブジェクトは、撮像センサ（単数又は複数）によって取り込まれた現実要素の色を呈してもよい。別の実施例では、仮想オブジェクトは、撮像、気象関連センサ、及び／又はオンライン気象データを介して特定されるような現実環境における実際の気象条件と一致する特性を示し得る。更に別の例では、拡張現実の森林は、仮想的な木及び構造物を有してもよいが、動物は、実際の動物の画像から正確に再現される特徴を有してもよい。
【００１７】
ハードウェア
【００１８】
多くの電子システムは、個人が様々なＳＲ環境と対話し、かつ／又は感知することを可能にする。一実施例は、ヘッドマウントシステムを含む。ヘッドマウントシステムは、不透明なディスプレイ及びスピーカ（単数又は複数）を有してもよい。あるいは、ヘッドマウントシステムは、外部ディスプレイ（例えば、スマートフォン）を受け入れるように設計されてもよい。ヘッドマウントシステムは、それぞれ、画像／動画を撮影するため、及び／又は現実環境の音声を取り込むために、画像センサ（単数又は複数）及び／又はマイクロフォンを有してもよい。ヘッドマウントシステムはまた、透明又は半透明のディスプレイを有してもよい。透明又は半透明のディスプレイには、基板を通して画像を表す光が個人の目に向かう基板を組み込んでもよい。ディスプレイは、ＬＥＤ、ＯＬＥＤ、デジタル光プロジェクタ、レーザ走査光源、シリコン上の液晶、又はこれらの技術の任意の組み合わせを組み込んでもよい。光が透過される基板は、光導波路、光学結合器、光学リフレクタ、ホログラフ基板、又はこれらの基材の任意の組み合わせであってもよい。一実施形態において、透明又は半透明のディスプレイは、不透明状態と透明又は半透明状態との間で選択的に遷移してもよい。別の実施例では、電子システムは、投影ベースシステムであってもよい。投影ベースシステムは、網膜投影を使用して、個人の網膜上に画像を投影することができる。あるいは、投影システムは、仮想オブジェクトを現実環境に（例えば、現実表面上に、又はホログラフとして）投影することもまたできる。ＳＲシステムの他の例としては、ヘッドアップディスプレイ、グラフィックを表示する能力を備える自動車用フロントガラス、グラフィックスを表示する能力を備える窓、グラフィックを表示する能力を備えるレンズ、ヘッドフォン又はイヤホン、スピーカ配置、入力機構（例えば、触知フィードバックを有する又は有さないコントローラ）、タブレット、スマートフォン、及びデスクトップコンピュータ又はラップトップコンピュータが挙げられる。
【００１９】
図１は、拡張現実空間におけるビューベースのブレークポイント使用シナリオ１００の一例の図である。ユーザ１１０が、ヘッドマウントディスプレイ１２０を装着しており、頭を回転させて、ユーザが立っている現実環境にオーバーレイされた仮想オブジェクトを含む模擬現実環境のビューを調整することができる。模擬現実環境におけるユーザの視界の方向は、視線１３０（例えば、ビューの中心を通じて投影される視線）に対応してもよい。ブレークポイントに関連付けられた一連のビューが、模擬現実環境内の領域１４０に対応してもよい。領域１４０は、ブレークポイントに関連付けられた、模擬現実環境の部分である。この例では、領域１４０は立方体であるが、領域について他の形状（例えば、球体形状又は不規則形状）が規定されてもよい。例えば、開発者にとって対象となる仮想オブジェクトが、領域１４０内に配置されてもよい。いくつかの実装形態では、領域１４０は、仮想オブジェクトを中心とする領域として規定されてもよい。いくつかの実装形態では、領域１４０は、仮想オブジェクトの体積として規定されてもよい。
【００２０】
例えば、ブレークポイントは全体的に又は部分的に、ユーザ１１０のビューがブレークポイントに関連付けられた領域１４０と著しく交差することを条件としてもよい。いくつかの実装形態では、ブレークポイントの条件は、ビューの視線１３０が領域１４０を通ることとして規定されてもよい。例えば、ユーザ１１０のビューがブレークポイントの条件を満たすかどうかを判定することが、ビューの視線１３０が領域１４０を通るかどうかを判定することを含んでもよい。視線１３０が領域１４０を通り、ビューベースの条件が満たされるとき、ビューベースの条件がブレークポイントの唯一の条件である場合又は、ブレークポイントの他の条件（例えば、指定されたコードラインに到達すること、仮想オブジェクトの状態に関する条件、又はユーザ入力）も満たされる場合に、ブレークポイントがトリガされてもよい。ブレークポイントがトリガされると、仮想オブジェクトに関連付けられたプロセスの実行を一時停止する、及び／又はデバッグインタフェースをヘッドマウントディスプレイ１２０を使用してユーザ１１０に提示するなど、１つ以上のデバッグ動作が実施されてもよい。
【００２１】
（図１には示されていない）いくつかの実装形態では、視線１３０は、このビューベースの条件を検出するための一層の余裕を提供するために（例えば、視線から視線を中心とする円錐に）拡張されてもよい。領域１４０は、模擬現実環境内にゼロでない体積を有してもよい。（図１には示されていない）いくつかの実装形態では、視線１３０は拡張されてもよく、領域１４０は、つぶされて模擬現実環境内の点とされてもよい。
【００２２】
図２は、仮想現実空間におけるビューベースのブレークポイント使用シナリオ２００の一例の図である。ユーザのアバター２１０が、模擬現実環境を通って移動し、ある時間において模擬現実環境内の位置に関連付けられる。ブレークポイントに関連付けられた一連のビューが、領域２２０並びに中央視線ベクトル２３０及び角度範囲に対応してもよい。領域２２０は、模擬現実環境内に画定される。この例では、領域２２０は、模擬現実環境の平面内の円に対応する。例えば、アバター２１０が領域２２０に入ったかどうかを判定するために、より高次元の仮想空間（例えば、三次元仮想空間）におけるアバターの位置が、領域２２０の平面に投影されてもよい。領域２２０として、平面内の矩形、円筒体、球体、立方体、又は不規則形状などの、（図２には示されていない）他の形状が規定されてもよい。
【００２３】
模擬現実環境のどの部分がヘッドマウントディスプレイを使用するユーザに提示される画像内に現れるかを決定する、アバター２１０の位置からの現在のビューが所与の時間で存在する。この例では、ビューは、現在ビューの視線ベクトル２４０によって規定される。例えば、視線ベクトル２４０は、ユーザに提示されるビューの中心を通る視線と平行であってもよい。例えば、視線ベクトル２４０は、アバターの位置が起点であってもよい。例えば、中央視線ベクトル２３０は、領域２２０から対象となる１つ以上の仮想オブジェクトに向かってもよい。角度２５０が中央視線ベクトル２３０と現在視線ベクトル２４０との間で測定され、ビューがブレークポイントに関連付けられた一連のビューの一部であるかどうかを評価するために使用されてもよい。
【００２４】
例えば、アバター２１０がブレークポイントに関連付けられた領域２２０内に位置する間、ブレークポイントは、全体的に又は部分的に、アバター２１０に関連付けられたビューが中央視線ベクトル２３０と実質的に揃うことが条件とされてもよい。例えば、アバター２１０のビューがブレークポイントの条件を満たすかどうかを判定することが、ビューの位置（例えば、アバター２１０の位置）が一連のビューの領域２２０内であるかどうかを判定することと、ビューの視線ベクトル２４０と一連のビューの中央視線ベクトル２３０との間の角度２５０を測定することと、角度２５０が一連のビューの角度範囲内であるかどうかを判定することと、を含んでもよい。このビューベースの条件が満たされるとき、ビューベースの条件がブレークポイントの唯一の条件である場合、又はブレークポイントの他の条件（例えば、指定されたコードラインに到達すること、仮想オブジェクトに関する条件、又はユーザ入力）も満たされる場合、ブレークポイントがトリガされてもよい。ブレークポイントがトリガされると、仮想オブジェクトに関連付けられたプロセスの実行を一時停止し、かつ／又はアバター２１０を制御するユーザにデバッグインタフェースをヘッドマウントディスプレイを使用して提示するなど、１つ以上のデバッグ動作を実施してもよい。
【００２５】
図３は、模擬現実アプリケーションにおけるビューベースのブレークポイントを可能とするように構成されたシステム３００の一例のブロック図である。システム３００は、処理装置３１０と、データ記憶デバイス３２０と、１つ以上の動きセンサ３３０と、ヘッドマウントディスプレイ３４０と、処理装置３１０を他の構成要素にアクセスさせ得る相互接続３７０と、を含む。システム３００は、ヘッドマウントディスプレイ３４０を使用するユーザに表示される模擬現実アプリケーションの模擬現実環境内の仮想オブジェクトに関連付けられたビューベースのソフトウェア用ブレークポイントを可能とするように構成されてもよい。例えば、処理装置３１０は、模擬現実アプリケーション（例えば、図５の模擬現実アプリケーション５００）を実行するように構成されてもよい。例えば、システム３００は、図６の技法６００を実装するように構成されてもよい。例えば、システム３００は、図７の技法７００を実装するように構成されてもよい。例えば、システム３００は、図８の技法８００を実装するように構成されてもよい。例えば、システム３００は、図９の技法９００を実装するように構成されてもよい。例えば、システム３００は、ヘッドマウントディスプレイデバイス（例えば、ヘッドマウントディスプレイ１２０）の一部として実装されてもよい。
【００２６】
処理装置３１０は、データ記憶デバイス３２０に記憶されている命令を実行するように動作可能であってもよい。いくつかの実装形態では、処理装置３１０は、命令が実行されている間データ記憶デバイス３２０から読み取られた命令を一時的に記憶するためのランダムアクセスメモリを有するプロセッサである。処理装置３１０は、単一又は複数の処理コアをそれぞれ有する単一又は複数のプロセッサを含んでもよい。あるいは、処理装置３１０は、データを操作又は処理することができる、別のタイプのデバイス又は複数のデバイスを含んでもよい。例えば、データ記憶デバイス３２０は、ハードドライブ、ソリッドステートドライブ、読み出し専用メモリデバイス（ＲＯＭ）、光ディスク、磁気ディスク、又は非一時的コンピュータ可読メモリなどの任意の他の好適なタイプの記憶デバイスなどの、不揮発性情報記憶デバイスであってもよい。データ記憶デバイス３２０は、処理装置３１０による取得又は処理のためのデータを記憶することができる別のタイプのデバイス又は複数のデバイスを含んでもよい。処理装置３１０は、データ記憶デバイス３２０に記憶されているデータに相互接続３７０を介してアクセスし操作してもよい。例えば、データ記憶デバイス３２０は、処理装置３１０によって実行されると、処理装置３１０に動作（例えば、図６の技法６００を実施する動作）を実施させる、処理装置３１０によって実行可能な命令を記憶してもよい。いくつかの実装形態では、処理装置３１０及びデータ記憶デバイス３２０は、ヘッドマウントディスプレイ３４０に取り付けられる。
【００２７】
１つ以上の動きセンサ３３０は、ヘッドマウントディスプレイ３４０の動きを検出するように構成されてもよい。例えば、１つ以上の動きセンサ３３０は、１つ以上の加速度計、ジャイロスコープ、及び／又は磁力計を含んでもよい。いくつかの実装形態では、１つ以上の動きセンサ３３０は、ヘッドマウントディスプレイ３４０に取り付けられる。いくつかの実装形態では、現実空間におけるヘッドマウントディスプレイ３４０の向き及び／又は位置が、１つ以上の動きセンサ３３０からのセンサデータ及び／又は（例えば、視覚慣性オドメトリ法（ＶＩＯ）を使用して）画像センサからの画像に少なくとも基づいて測定されてもよい。例えば、ヘッドマウントディスプレイ３４０の向き及び／又は位置の変化が、ヘッドマウントディスプレイ３４０を使用して提示される模擬現実アプリケーションの模擬現実環境内のビューを、ユーザが変更するための制御インタフェースとして使用されてもよい。
【００２８】
ヘッドマウントディスプレイ３４０は、ユーザへの画像（例えば、ビデオフレーム）の提示を可能にするために、スクリーン、レンズ、又はヘッドマウントディスプレイ３４０を装着しているユーザの目に光を向けるように構成された別のタイプの光学アセンブリを含む。ヘッドマウントディスプレイは、固定具（例えば、ヘッドバンド又はフレーム）によってユーザの顔に固定されてもよい。いくつかの実装形態では、ヘッドマウントディスプレイ３４０のスクリーンは、ユーザの目の正面に配置されている。スクリーンは不透明であってもよく、ユーザの周囲環境の視界を不明瞭にしてもよい。そのような構成は、例えば、没入型の仮想現実の体験をもたらすために使用されてもよい。いくつかの実装形態では、ヘッドマウントディスプレイ３４０は、光学アセンブリ（例えば、レンズ及び／又はミラー）を含む。光学アセンブリは、ユーザの目の正面に配置され、ヘッドマウントディスプレイ３４０のスクリーン又はプロジェクタからの光をユーザの目に向けるように構成されている。光学アセンブリはまた、ユーザの周囲の環境からの光をユーザの目に向けることができる。例えば、光学アセンブリは、透明バイザーの内面に適用される部分的に反射性の偏光フィルムを含んでもよい。光学アセンブリは、光結合器として機能してもよい。例えば、光学アセンブリのレンズは、また、ユーザの前方の環境からの光を通過させてユーザの目に到達させてもよく、ヘッドマウントディスプレイ３４０によって提示される画像に描かれた模擬現実環境のオブジェクトをユーザの前方の現実環境のビューにオーバーレイさせながら、ユーザが自分の前方を見ることを可能にしてもよい。いくつかの実装形態では、光学アセンブリ（例えば、レンズ）の透明度が、アプリケーション（例えば、仮想現実アプリケーション又は拡張現実アプリケーション）に適合するように調整されてもよい。
【００２９】
例えば、相互接続３７０は、システムバス、又は有線若しくは無線ネットワーク（例えば、ボディエリアネットワーク）であってもよい。
【００３０】
処理装置３１０は、模擬現実アプリケーション（例えば、図５の模擬現実アプリケーション５００）についてビューベースのブレークポイントを可能とするように構成されてもよい。例えば、処理装置３１０は、１つ以上の動きセンサ３３０を使用して取り込まれる動きデータにアクセスし、その動きデータに少なくとも基づいて、ヘッドマウントディスプレイ３４０を使用して提示される模擬現実環境内のビューを決定するように構成されてもよい。処理装置３１０は、ビューがブレークポイントに関連付けられた一連のビューの一部であることを検出し、ビューが一連のビューの一部であることに少なくとも基づいて、ブレークポイントをトリガするように構成されてもよい。例えば、処理装置３１０は、ブレークポイントがトリガされることに応じて、ブレークポイントに関連付けられたデバッグ動作を実施するように構成されてもよい。処理装置３１０は、デバッグ動作を実施している間に、模擬現実環境内の少なくとも１つの仮想オブジェクトの状態が進展しヘッドマウントディスプレイ３４０によって表示され続けることを可能にするために、模擬現実環境の模擬プロセス（例えば、模擬プロセス５２０）の実行を継続するように構成されてもよい。いくつかの実装形態では、ビューは、模擬現実環境内の位置及びその位置からの視線ベクトルに対応しており、一連のビューは、模擬現実環境内の領域及び中央視線ベクトルに対する角度範囲に対応しており、処理装置３１０は、（例えば、図２に関して説明されるように、）ビューの位置が一連のビューの領域内であるかどうかを判定し、ビューの視線ベクトルと一連のビューの中央視線ベクトルとの間の角度を測定し、かつ角度が一連のビューの角度範囲内であるかどうかを判定することにより、ビューが一連のビューの一部であることを検出するように構成されている。いくつかの実装形態では、ビューは、模擬現実環境内の視線に対応しており、一連のビューは、模擬現実環境内の領域を通る一連の視線に対応しており、処理装置３１０は、（例えば、図１に関して説明されるように、）ビューの視線が一連のビューの領域を通るかどうかを判定することにより、ビューが一連のビューの一部であることを検出するように構成されている。いくつかの実装形態では、ビューは、模擬現実環境内の焦点に対応しており、一連のビューは、模擬現実環境内の領域に対応しており、処理装置３１０は、ビューの焦点が一連のビューの領域内であるかどうかを判定することにより、ビューが一連のビューの一部であることを検出するように構成されている。いくつかの実装形態では、処理装置３１０は、ブレークポイントがトリガされたことに応じて、少なくともビューに基づくレイキャスティングにより、模擬現実環境内のデバッグされる１つ以上のオブジェクトを特定するように構成されている。処理装置３１０は、特定された１つ以上のオブジェクトに関連付けられた１つ以上のプロセスに関するデバッグ動作を実施するように構成されてもよい。
【００３１】
ブレークポイントは、ブレークポイントをトリガする論理関数（例えば、論理積（ＡＮＤ）関数）を使用してテストされ共に適用され得る、複数のトリガ条件を有してもよい。例えば、ブレークポイントは、（例えば、上述のような）ビューベースのトリガ条件を有してもよく、追加のトリガ条件を有してもよく、ブレークポイントは、ビューベースのトリガ条件と追加のトリガ条件の両方が満たされるときにトリガされてもよい。例えば、処理装置３１０は、模擬現実環境内の仮想オブジェクトに関連付けられたプロセスのコードラインに到達し、同時にビューがブレークポイントに関連付けられていることに少なくとも基づいて、ブレークポイントをトリガするように構成されてもよい。例えば、処理装置３１０は、模擬現実環境内の仮想オブジェクトの状態の条件が満たされ、同時にビューがブレークポイントに関連付けられていることに少なくとも基づいて、ブレークポイントをトリガするように構成されてもよい。例えば、処理装置３１０は、ヘッドマウントディスプレイ３４０のユーザによる動作を検出し、同時にビューがブレークポイントに関連付けられていることに少なくとも基づいて、ブレークポイントをトリガするように構成されてもよい。
【００３２】
処理装置３１０は、様々なデバッグ機能を提供するために、ブレークポイントがトリガされることに応じて、１つ以上のデバッグ動作を実施するように構成されてもよい。いくつかの実装形態では、デバッグ動作は、模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を一時停止することを含む。例えば、処理装置３１０は、一時停止されたプロセスに関連付けられたオブジェクトの視覚表現を生成し、プロセスが一時停止されている間、ヘッドマウントディスプレイ３４０を使用して、模擬現実環境内での視覚表現の提示を継続するように構成されてもよい。いくつかの実装形態では、デバッグ動作は、ヘッドマウントディスプレイ３４０を使用して、模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を（例えば、ソフトウェアのコードラインの分解度で）ヘッドマウントディスプレイ３４０のユーザが制御することを可能にするデバッグ制御インタフェースを、模擬現実環境内に提示することを含む。例えば、デバッグ制御インタフェースは、一時停止、再開、ステップイン、ステップオーバー、及びステップアウトからなる一連の機能からユーザが少なくとも１つの機能を選択することを可能にしてもよい。例えば、デバッグ制御インタフェースは、ユーザが、ステップインコマンド、ステップオーバーコマンド、ステップアウトコマンド、継続コマンド、及び／又は一時停止コマンドを発行して、模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を制御することを可能にする、アイコンを含んでもよい。いくつかの実装形態では、デバッグ動作は、ヘッドマウントディスプレイ３４０を使用して、模擬現実環境内の仮想オブジェクトに関連付けられたプロセスのコードを、模擬現実環境内に提示することを含む。コードのコピー（例えば、コードのシンタックスが色分けされたコピー）を提示することで、ヘッドマウントディスプレイ３４０を装着しているユーザによるコードのデバッグを容易にしてもよい。いくつかの実装形態では、デバッグ動作は、ヘッドマウントディスプレイ３４０を使用して、模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの状態変数の値を、模擬現実環境内に提示することを含む。いくつかの実装形態では、デバッグ動作は、模擬現実環境内の仮想オブジェクトの１つ以上のパラメータのログを生成することを含む。
【００３３】
図４は、模擬現実アプリケーションにおけるビューベースのブレークポイントを可能とするように構成されたシステム４００の一例のブロック図である。システム４００は、無線通信リンク４２５を介して通信する、ヘッドマウントディスプレイ４１０及びコンピューティングデバイス４５０を含む。ヘッドマウントディスプレイ４１０は、１つ以上の動きセンサ４１２と、ディスプレイ４１４と、無線通信インタフェース４１６と、（例えば、（図４には示されていない）ヘッドマウントディスプレイ４１０内のマイクロコントローラ又は他の処理装置の制御下で）ヘッドマウントディスプレイの構成要素に情報を交換させ得る相互接続４１８と、ヘッドマウントディスプレイ４１０を装着しているユーザの頭にヘッドマウントディスプレイ４１０を固定するように構成された固定具４２０と、を含む。コンピューティングデバイス４５０は、処理装置４６０と、データ記憶デバイス４７０と、無線通信インタフェース４８０と、ユーザインタフェース４９０と、処理装置４６０をコンピューティングデバイス４５０の他の構成要素にアクセスさせ得る相互接続４９４と、を含む。コンピューティングデバイス４５０は、ヘッドマウントディスプレイ４１０を装着しているユーザの近くに配置することができ、ヘッドマウントディスプレイ４１０を制御するために計算タスクを実行することができる。例えば、コンピューティングデバイス４５０は、スマートフォン、タブレット、ラップトップコンピュータ、デスクトップコンピュータ、又はユーザがいる部屋に位置するテーブル上の機器（例えば、スマートテレビ若しくはスマートスピーカ）であってもよく、又はコンピューティングデバイス４５０は、ユーザの様々に異なる身体部分に着用される（例えば、胸部に着用されたベストと一体化した）別のウェアラブルデバイスであってもよい。システム４００は、ヘッドマウントディスプレイ４１０を装着しているユーザによるデバッグを容易にするために、模擬現実アプリケーションについてビューベースのブレークポイントを可能とするように構成されてもよい。例えば、コンピューティングデバイス４５０は、模擬現実アプリケーション（例えば、図５の模擬現実アプリケーション５００）を実行するように構成されてもよい。例えば、システム４００は、図６の技法６００を実装するように構成されてもよい。例えば、システム４００は、図７の技法７００を実装するように構成されてもよい。例えば、システム４００は、図８の技法８００を実装するように構成されてもよい。例えば、システム４００は、図９の技法９００を実装するように構成されてもよい。
【００３４】
ヘッドマウントディスプレイ４１０は、１つ以上の動きセンサ４１２を含む。１つ以上の動きセンサ４１２は、ヘッドマウントディスプレイ４１０の動きを検出するように構成されてもよい。例えば、１つ以上の動きセンサ４１２は、１つ以上の加速度計、ジャイロスコープ、及び／又は磁力計を含んでもよい。１つ以上の動きセンサ４１２は、ヘッドマウントディスプレイ４１０に取り付けられてもよい。いくつかの実装形態では、現実空間におけるヘッドマウントディスプレイ４１０の向き及び／又は位置が、１つ以上の動きセンサ４１２からのセンサデータ及び／又は（例えば、視覚慣性オドメトリ法（ＶＩＯ）を使用して）画像センサからの画像に少なくとも基づいて測定されてもよい。例えば、ヘッドマウントディスプレイ４１０の向き及び／又は位置の変化が、ヘッドマウントディスプレイ４１０を使用して提示される模擬現実アプリケーションの模擬現実環境内のビューを、ユーザが変更するための制御インタフェースとして使用されてもよい。
【００３５】
ヘッドマウントディスプレイ４１０は、ディスプレイ４１４を含む。ディスプレイ４１４は、画像を提示し、デジタル画像をディスプレイ４１４から投影される光に変換するように構成されてもよい。ディスプレイ４１４は、可視スペクトルの光を投影する画素アレイを使用して、光を投影することができる。ディスプレイ４１４は、スクリーン、レンズ、又はユーザへの画像（例えば、ビデオフレーム）の提示を可能にするために、ヘッドマウントディスプレイ４１０を装着しているユーザの目に光を向けるように構成されている別のタイプの光学アセンブリを含んでもよい。例えば、ディスプレイ４１４は、液晶ディスプレイ（ＬＣＤ）、発光ダイオード（ＬＥＤ）ディスプレイ（例えば、ＯＬＥＤディスプレイ）、又は他の好適なスクリーン、などのスクリーンを含んでもよい。例えば、ディスプレイ４１４はプロジェクタを含んでもよい。いくつかの実装形態では、ディスプレイ４１４のスクリーンが、ユーザの目の正面に配置されている。スクリーンは不透明であってもよく、ユーザの周囲環境の視界を不明瞭にしてもよい。そのような構成は、例えば、没入型の仮想現実の体験をもたらすために使用されてもよい。いくつかの実装形態では、ディスプレイ４１４は、ユーザの目の正面に配置され、ディスプレイ４１４のスクリーン又はプロジェクタからの光をユーザの目に向けるように構成された、光学アセンブリ（例えば、レンズ及び／又はミラー）を含む。光学アセンブリはまた、ユーザの周囲の環境からの光をユーザの目に向けることができる。例えば、光学アセンブリは、透明バイザーの内面に適用される部分的に反射性の偏光フィルムを含んでもよい。光学アセンブリは、光結合器として機能してもよい。例えば、光学アセンブリのレンズは、また、ユーザの前方の現実環境からの光を通過させてユーザの目に到達させてもよく、ディスプレイ４１４によって提示される画像に描かれた模擬現実環境のオブジェクトをユーザの前方の現実環境のビューにオーバーレイさせながら、ユーザが自分の前方を見ることを可能としてもよい。いくつかの実装形態では、光学アセンブリ（例えば、レンズ）の透明度が、模擬現実アプリケーション（例えば、仮想現実アプリケーション又は拡張現実アプリケーション）に適合するように調整されてもよい。
【００３６】
ヘッドマウントディスプレイ４１０は、無線通信インタフェース４１６を含む。無線通信インタフェース４１６は、コンピューティングデバイス４５０を含む他のデバイスとの通信を容易にする。例えば、無線通信インタフェース４１６は、Ｗｉ−Ｆｉネットワーク、Ｂｌｕｅｔｏｏｔｈリンク、又はＺｉｇＢｅｅリンクを介した通信を容易にしてもよい。いくつかの実装形態では、無線通信インタフェース４１６を使用して、ディスプレイ４１４を使用した模擬現実環境のビューの提示を呼び出すデータ及び／又は命令を、コンピューティングデバイス４５０から受信してもよい。いくつかの実装形態では、無線通信インタフェース４１６を使用して、１つ以上の動きセンサ４１２からのセンサデータを、コンピューティングデバイス４５０に送信してもよい。
【００３７】
例えば、相互接続４１８は、システムバス、又は有線若しくは無線ネットワーク（例えば、ボディエリアネットワーク）であってもよい。
【００３８】
ヘッドマウントディスプレイ４１０は、固定具４２０を含む。固定具４２０は、ユーザがヘッドマウントディスプレイ４１０を装着しているときに、ヘッドマウントディスプレイ４１０をユーザの頭部に固定するように構成されていてもよい。例えば、固定具４２０は、ヘッドバンドを含んでもよい。例えば、固定具４２０は、アームを有するフレームを含んでもよく、アームはユーザの耳の上に載置され、ユーザの目の前方にディスプレイ４１４のレンズ又はスクリーンを保持する。
【００３９】
コンピューティングデバイス４５０は、処理装置４６０を含む。処理装置４６０は、データ記憶デバイス４７０に記憶されている命令を実行するように動作可能であってもよい。いくつかの実装形態では、処理装置４６０は、命令が実行されている間データ記憶デバイス４７０から読み取られた命令を一時的に記憶するためのランダムアクセスメモリを有するプロセッサである。処理装置４６０は、単一又は複数の処理コアをそれぞれ有する単一又は複数のプロセッサを含んでもよい。あるいは、処理装置４６０は、データを操作又は処理できる、別のタイプのデバイス又は複数のデバイスを含んでもよい。例えば、データ記憶デバイス４７０は、ハードドライブ、ソリッドステートドライブ、読み出し専用メモリデバイス（ＲＯＭ）、光ディスク、磁気ディスク、又は、非一時的コンピュータ可読メモリなどの任意の他の好適なタイプの記憶デバイスなどの、不揮発性情報記憶デバイスであってもよい。データ記憶デバイス４７０は、処理装置４６０による取得又は処理のためのデータを記憶できる、別のタイプのデバイス又は複数のデバイスを含んでもよい。処理装置４６０は、データ記憶デバイス４７０に記憶されているデータに相互接続４９４を介してアクセスし操作してもよい。例えば、データ記憶デバイス４７０は、処理装置４６０によって実行されると、処理装置４６０に動作（例えば、図６の技法６００を実施する動作）を実施させる、処理装置４６０によって実行可能な命令を記憶してもよい。
【００４０】
コンピューティングデバイス４５０は、無線通信インタフェース４８０を含む。無線通信インタフェース４８０は、ヘッドマウントディスプレイ４１０を含む他のデバイスとの通信を容易にする。例えば、無線通信インタフェース４８０は、Ｗｉ−Ｆｉネットワーク、Ｂｌｕｅｔｏｏｔｈリンク、又はＺｉｇＢｅｅリンクを介した通信を容易にしてもよい。無線通信インタフェース４８０は、ヘッドマウントディスプレイ４１０と無線通信リンク４２５を確立するために使用されてもよい。いくつかの実装形態では、無線通信インタフェース４８０を使用して、ヘッドマウントディスプレイ４１０からセンサデータ（例えば、動きセンサデータ）を受信してもよい。いくつかの実装形態では、無線通信インタフェース４８０を使用して、ディスプレイ４１４を使用した模擬現実環境のビューの提示を呼び出すデータ及び／又は命令を、ヘッドマウントディスプレイ４１０に送信してもよい。
【００４１】
コンピューティングデバイス４５０は、ユーザインタフェース４９０を含む。例えば、ユーザインタフェース４９０は、タッチスクリーンディスプレイを含んでもよい。例えば、ユーザインタフェース４９０は、音声コマンドを受信するように構成されたマイクロフォンを含んでもよい。例えば、ユーザインタフェース４９０は、ハンドジェスチャコマンドを検出するように構成されている画像センサを含んでもよい。例えば、ユーザインタフェース４９０は、キーボード、マウス、ジョイスティック、及び／又は別のハンドヘルドコントローラを含んでもよい。例えば、ユーザインタフェース４９０は、ユーザ（例えば、ヘッドマウントディスプレイ４１０を装着しているユーザ）が、コンピューティングデバイス４５０で実行されている模擬現実アプリケーション（例えば、図５の模擬現実アプリケーション５００）にコマンド（例えば、デバッグコマンド）を入力すること、及び／又は模擬現実アプリケーションの模擬現実環境のオブジェクトに関連付けられたプロセスのコードを編集することを可能にしてもよい。
【００４２】
例えば、相互接続４９４は、システムバス、又は有線若しくは無線ネットワーク（例えば、ボディエリアネットワーク）であってもよい。
【００４３】
処理装置４６０は、模擬現実アプリケーション（例えば、図５の模擬現実アプリケーション５００）についてビューベースのブレークポイントを可能とするように構成されてもよい。例えば、処理装置４６０は、１つ以上の動きセンサ４１２を使用して取り込まれた動きデータにアクセスし、その動きデータに少なくとも基づいて、ヘッドマウントディスプレイ４１０を使用して提示される模擬現実環境内のビューを決定するように構成されてもよい。処理装置４６０は、ビューがブレークポイントに関連付けられた一連のビューの一部であることを検出し、ビューが一連のビューの一部であることに少なくとも基づいて、ブレークポイントをトリガするように構成されてもよい。例えば、処理装置４６０は、ブレークポイントがトリガされることに応じて、ブレークポイントに関連付けられたデバッグ動作を実施するように構成されてもよい。処理装置４６０は、デバッグ動作を実施している間に、模擬現実環境内の少なくとも１つの仮想オブジェクトの状態が進展しヘッドマウントディスプレイ４１０によって表示され続けることを可能にするために、模擬現実環境の模擬プロセス（例えば、模擬プロセス５２０）の実行を継続するように構成されてもよい。いくつかの実装形態では、ビューは、模擬現実環境内の位置及びその位置からの視線ベクトルに対応しており、一連のビューは、模擬現実環境内の領域及び中央視線ベクトルに対する角度範囲に対応しており、処理装置４６０は、（例えば、図２に関して説明されるように、）ビューの位置が一連のビューの領域内であるかどうかを判定し、ビューの視線ベクトルと一連のビューの中央視線ベクトルとの間の角度を測定し、かつ角度が一連のビューの角度範囲内であるかどうかを判定することにより、ビューが一連のビューの一部であることを検出するように構成されている。いくつかの実装形態では、ビューは、模擬現実環境内の視線に対応しており、一連のビューは、模擬現実環境内の領域を通る一連の視線に対応しており、処理装置４６０は、（例えば、図１に関して説明されるように、）ビューの視線が一連のビューの領域を通るかどうかを判定することにより、ビューが一連のビューの一部であることを検出するように構成されている。いくつかの実装形態では、ビューは、模擬現実環境内の焦点に対応しており、一連のビューは、模擬現実環境内の領域に対応しており、処理装置４６０は、ビューの焦点が一連のビューの領域内であるかどうかを判定することにより、ビューが一連のビューの一部であることを検出するように構成されている。いくつかの実装形態では、処理装置４６０は、ブレークポイントがトリガされたことに応じて、少なくともビューに基づくレイキャスティングにより、模擬現実環境内のデバッグされる１つ以上のオブジェクトを特定するように構成されている。処理装置４６０は、特定された１つ以上のオブジェクトに関連付けられた１つ以上のプロセスに関するデバッグ動作を実施するように構成されてもよい。
【００４４】
ブレークポイントは、ブレークポイントをトリガする論理関数（例えば、論理積（ＡＮＤ）関数）を使用してテストされ共に適用され得る、複数のトリガ条件を有してもよい。例えば、ブレークポイントは、（例えば、上述のような）ビューベースのトリガ条件を有してもよく、追加のトリガ条件を有してもよく、ブレークポイントは、ビューベースのトリガ条件と追加のトリガ条件の両方が満たされるときにトリガされてもよい。例えば、処理装置４６０は、模擬現実環境内の仮想オブジェクトに関連付けられたプロセスのコードラインに到達し、同時にビューがブレークポイントに関連付けられていることに少なくとも基づいて、ブレークポイントをトリガするように構成されてもよい。例えば、処理装置４６０は、模擬現実環境内の仮想オブジェクトの状態の条件が満たされ、同時にビューがブレークポイントに関連付けられていることに少なくとも基づいて、ブレークポイントをトリガするように構成されてもよい。例えば、処理装置４６０は、ヘッドマウントディスプレイ４１０のユーザによる動作を検出し、同時にビューがブレークポイントに関連付けられていることに少なくとも基づいて、ブレークポイントをトリガするように構成されてもよい。
【００４５】
処理装置４６０は、様々なデバッグ機能を提供するために、ブレークポイントがトリガされることに応じて、１つ以上のデバッグ動作を実施するように構成されてもよい。いくつかの実装形態では、デバッグ動作は、模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を一時停止することを含む。例えば、処理装置４６０は、一時停止されたプロセスに関連付けられたオブジェクトの視覚表現を生成し、プロセスが一時停止されている間に、ヘッドマウントディスプレイ４１０を使用して、模擬現実環境内での視覚表現の提示を継続するように構成されてもよい。いくつかの実装形態では、デバッグ動作は、ヘッドマウントディスプレイ４１０を使用して、模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を（例えば、ソフトウェアのコードラインの分解度で）ヘッドマウントディスプレイ４１０のユーザが制御することを可能にするデバッグ制御インタフェースを、模擬現実環境内に提示することを含む。例えば、デバッグ制御インタフェースは、一時停止、再開、ステップイン、ステップオーバー、及びステップアウトからなる一連の機能からユーザが少なくとも１つの機能を選択することを可能にしてもよい。例えば、デバッグ制御インタフェースは、ユーザが、ステップインコマンド、ステップオーバーコマンド、ステップアウトコマンド、継続コマンド、及び／又は一時停止コマンドを発行して、模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を制御することを可能にする、アイコンを含んでもよい。いくつかの実装形態では、デバッグ動作は、ヘッドマウントディスプレイ４１０を使用して、模擬現実環境内の仮想オブジェクトに関連付けられたプロセスのコードを、模擬現実環境内に提示することを含む。コードのコピー（例えば、コードのシンタックスが色分けされたコピー）を提示することで、ヘッドマウントディスプレイ４１０を装着しているユーザによるコードのデバッグを容易にしてもよい。いくつかの実装形態では、デバッグ動作は、ヘッドマウントディスプレイ４１０を使用して、模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの状態変数の値を、模擬現実環境内に提示することを含む。いくつかの実装形態では、デバッグ動作は、模擬現実環境内の仮想オブジェクトの１つ以上のパラメータのログを生成することを含む。
【００４６】
（図４には示されていない）いくつかの実装形態では、模擬現実アプリケーション（例えば、図５の模擬現実アプリケーション５００）に関する処理は、ヘッドマウントディスプレイ４１０内の処理装置と処理装置４６０との間で分散されてもよい。例えば、模擬プロセス（例えば、模擬プロセス５２０）が、模擬現実環境内のビューを更新するための待ち時間を低減するために、ヘッドマウントディスプレイ４１０の処理装置上で実行されてもよく、その間、模擬現実環境内のオブジェクトに関連付けられた１つ以上のプロセス（例えば、プロセスＡ５３０及びプロセスＢ５３２）が、オブジェクトの状態を更新するために、処理装置４６０上で実行されてもよい。いくつかの実装形態では、リアリティフラグメント（例えば、リアリティフラグメント５４０及びリアリティフラグメント５４２）が、ヘッドマウントディスプレイ４１０とコンピューティングデバイス４５０との間で無線通信リンク４２５を介して送信されてもよい。このように、ヘッドマウントディスプレイ４１０の処理装置と、処理装置４６０とは、ヘッドマウントディスプレイ４１０と、模擬現実アプリケーションを実行し、本明細書に記載の技法（例えば、図６の技法６００）を実施する、コンピューティングデバイス４５０との間に分散された単一の処理装置として動作し得る。
【００４７】
図５は、模擬現実アプリケーション５００の一例のブロック図である。模擬現実アプリケーション５００は、複数のプロセスを含み、ユーザがヘッドマウントディスプレイ５１０を装着している間に見ることができ、かつ／又は対話することができる模擬現実環境を複数のプロセスが共に実施する。模擬現実アプリケーション５００は、模擬プロセス５２０を含み、模擬プロセス５２０は模擬現実環境の様々なオブジェクトを連携させ、模擬現実環境内のビューを生成し、ヘッドマウントディスプレイ５１０を使用してユーザに提示する。模擬現実アプリケーション５００は、模擬現実環境のオブジェクトに関連付けられた複数のプロセスを含む。この例では、模擬現実アプリケーション５００は、１つ以上のオブジェクト（例えば、弾んでいるボール）に関連付けられ得るプロセスＡ５３０と、１つ以上のオブジェクト（例えば、別のユーザのアバター）に関連付けられ得るプロセスＢ５３２とを含む。プロセスＡ５３０及びプロセスＢ５３２は、それらのそれぞれのオブジェクトの状態を維持してもよい。プロセスＡ５３０及びプロセスＢ５３２は、それらのそれぞれのオブジェクトの状態の更新を、リアリティフラグメント５４０及びリアリティフラグメント５４２として模擬プロセス５２０に提供する。模擬プロセス５２０は、次いで、更新されたオブジェクトをヘッドマウントディスプレイ５１０を使用してユーザに提示してもよい。
【００４８】
例えば、ヘッドマウントディスプレイ５１０は、ヘッドマウントディスプレイ３４０又はヘッドマウントディスプレイ４１０を含んでもよい。
【００４９】
模擬プロセス５２０は、１つ以上のスレッドを含んでもよい。例えば、模擬プロセス５２０は、模擬現実環境内のオブジェクトが互いにどのように相互作用するかを判定する物理エンジンを実装してもよい。模擬プロセス５２０は、模擬現実環境のオブジェクトに関する更新された状態情報を、それらのオブジェクトに対応するプロセスからリアリティフラグメント（例えば、リアリティフラグメント５４０及びリアリティフラグメント５４２）の形態で受信してもよい。例えば、リアリティフラグメント５４０及びリアリティフラグメント５４２は、プロセス間インタフェースを介して模擬プロセス５２０に渡されてもよい。模擬プロセス５２０は、ヘッドマウントディスプレイ５１０から動きデータを受信してもよく、少なくとも動きデータに基づいてビューを更新してもよい。模擬プロセス５２０は、模擬現実環境内のビューを、ユーザに提示するためにヘッドマウントディスプレイ５１０に渡され得る１つ以上の画像（例えば、ユーザの左目のための画像及びユーザの右目のための画像）としてレンダリングしてもよい。例えば、ビューのレンダリングされた画像は、相互接続（例えば、相互接続３７０）を介してヘッドマウントディスプレイ５１０に転送されてもよい。例えば、ビューのレンダリングされた画像は、無線通信リンク（例えば、無線通信リンク４２５）を介してヘッドマウントディスプレイ５１０に転送されてもよい。
【００５０】
プロセスＡ５３０は、１つ以上のスレッドを含んでもよい。プロセスＡ５３０は、仮想オブジェクト（例えば、仮想ブック又は仮想の弾んでいるボール）の状態を維持し、更新してもよい。プロセスＢ５３２は、１つ以上のスレッドを含んでもよい。プロセスＢ５３２は、仮想オブジェクト（例えば、仮想電話又は別のユーザのアバター）の状態を維持し、更新してもよい。いくつかの使用シナリオでは、プロセスＡ５３０のブレークポイントがトリガされると、プロセスＡ５３０は一時停止され、模擬現実環境内の新しい仮想オブジェクトとしてプロセスＡ５３０のデバッグ制御インタフェースを提供するための新しいプロセス（図５には示されていない）が生み出される。プロセスＢ５３２は、ブレークポイントのトリガ後にプロセスＡ５３０がデバッグされている間、通常どおり実行され続けてもよい。模擬プロセス５２０もまた、ヘッドマウントディスプレイ５１０を使用して模擬現実環境をユーザに提示するために実行され続ける。ユーザは、模擬現実環境内の別のユーザのアバターなど、有用であり得る他のオブジェクトとの対話を継続するオプションを保持しながら、模擬現実環境内からプロセスＡ５３０をデバッグすることを可能にされてもよい。
【００５１】
図６は、ビューベースのブレークポイントを可能とするための技法６００の一例のフローチャートである。技法６００は、１つ以上の動きセンサを使用して取り込まれた動きデータにアクセスすること６１０と、少なくとも動きデータに基づいて、ヘッドマウントディスプレイを使用して提示される模擬現実環境内のビューを決定すること６２０と、ビューがブレークポイントに関連付けられていることを検出すること６３０と、ビューがブレークポイントに関連付けられていることに少なくとも基づいて、ブレークポイントをトリガすること６４０と、ブレークポイントがトリガされることに応じて、ブレークポイントに関連付けられたデバッグ動作を実施すること６５０と、デバッグ動作を実施している間、模擬現実環境内の少なくとも１つの仮想オブジェクトの状態が進展しヘッドマウントディスプレイによって表示され続けることを可能にするために、模擬現実環境の模擬プロセスの実行を継続すること６６０と、を含む。例えば、技法６００は、図３のシステム３００によって実装されてもよい。例えば、技法６００は、図４のシステム４００によって実装されてもよい。
【００５２】
技法６００は、１つ以上の動きセンサ（例えば、１つ以上の動きセンサ３３０又は１つ以上の動きセンサ４１２）を使用して取り込まれた動きデータにアクセスすること６１０を含む。例えば、１つ以上の動きセンサは、１つ以上の加速度計、ジャイロスコープ、及び／又は磁力計を含んでもよい。いくつかの実装形態では、１つ以上の動きセンサは、ヘッドマウントディスプレイ（例えば、ヘッドマウントディスプレイ３４０又はヘッドマウントディスプレイ４１０）に取り付けられる。いくつかの実装形態では、現実空間におけるヘッドマウントディスプレイの向き及び／又は位置が、１つ以上の動きセンサからのセンサデータに少なくとも基づいて判定されてもよい。動きデータは、様々な方法でアクセスされて６１０もよい。例えば、センサデータは、センサから直接読み取る、又は相互接続（例えば、相互接続３７０）を介してメモリから読み取ることによって、アクセスされて６１０もよい。例えば、センサデータは、通信リンク（例えば、無線通信リンク４２５）を介してセンサデータを受信することによって、アクセスされて６１０もよい。
【００５３】
技法６００は、少なくとも動きデータに基づいて、ヘッドマウントディスプレイ（例えば、ヘッドマウントディスプレイ３４０又はヘッドマウントディスプレイ４１０）を使用して提示される模擬現実環境内のビューを決定すること６２０を含む。例えば、ヘッドマウントディスプレイを装着しているユーザが頭を回転させると、模擬現実環境のビューは、模擬現実環境内で対応する量だけ回転されてもよい。例えば、ヘッドマウントディスプレイを装着しているユーザが歩くと、模擬現実環境内のビューは、模擬現実環境（例えば、現実環境にオーバーレイされた拡張現実アプリケーションの模擬現実環境）内のビューの位置（例えば、ユーザのアバターの位置）に、対応する変更を加えることにより、シフトされてもよい。いくつかの実装形態では、模擬現実環境内のビューを変更するために、他の入力もまた使用されてもよい。例えば、ジョイスティック又はマウス入力により、アバターの位置及び対応するビューを変更させてもよく（例えば、ビューのための仮想カメラの位置を変更する）、一方で、動きデータを使用してビューの向きを変更してもよい（例えば、ビューのための仮想カメラの向きを変更する）。例えば、画像データを動きデータと共に使用して、（例えば、視覚慣性オドメトリ法（ＶＩＯ）を使用して表示デバイスの姿勢を決定することによって）ビューを決定して６２０もよい。
【００５４】
技法６００は、ビューがブレークポイントに関連付けられているかどうかを検出すること６３０を含む。例えば、ビューがブレークポイントに関連付けられているかどうかを検出すること６３０は、ビューがブレークポイントに関連付けられた一連のビューの一部であることを検出すること６３０を含んでもよい。ビューがブレークポイントに関連付けられた一連のビューの一部であることは、ブレークポイントのためのビューベースのトリガ条件であってもよい。ブレークポイントに関連付けられた一連のビューは、多数の方法で規定されてもよい。いくつかの実装形態では、一連のビューは、（例えば、図２の使用シナリオ２００に関して説明されるように、）模擬現実環境内の領域及び中央視線ベクトルに対する角度範囲に対応する。例えば、図７の技法７００は、ビューが一連のビューの一部であることを検出する６３０ために実装されてもよい。いくつかの実装形態では、ビューは、模擬現実環境内の視線（例えば、アバター又は仮想カメラの現在位置からの視線）に対応しており、一連のビューは、模擬現実環境内の領域（例えば、領域１４０）を通る一連の視線に対応しており、ビューが一連のビューの一部であることを検出すること６３０は、（例えば、図１の使用シナリオ１００に関して説明されるように、）ビューの視線が一連のビューの領域を通るかどうかを判定することを含む。いくつかの実装形態では、ビューは、模擬現実環境内の焦点に対応しており、一連のビューは、模擬現実環境内の領域に対応しており、ビューが一連のビューの一部であることを検出すること６３０は、ビューの焦点が一連のビューの領域内であるかどうかを判定することを含む。
【００５５】
技法６００は、ビューがブレークポイントに関連付けられていることに少なくとも基づいて（例えば、ビューがブレークポイントに関連付けられた一連のビューの一部であることに少なくとも基づいて）、ブレークポイントをトリガすること６４０を含む。ブレークポイントは、ビューが一連のビューの一部であることを含む、１つ以上のトリガ条件に関連付けられてもよい。いくつかの実装形態では、ビューが一連のビューの一部であることは、ブレークポイントに関連付けられた唯一のトリガ条件である。いくつかの実装形態では、ビューが一連のビューの一部であることは、ブレークポイントの複数のトリガ条件のうちの１つであってもよい。ブレークポイントが複数のトリガ条件を有する場合、トリガ条件は、ブレークポイントをトリガする論理関数（例えば、論理積関数）を使用してテストされ共に適用されてもよい。例えば、ブレークポイントは、ビューベースのトリガ条件と追加のトリガ条件の両方が満たされるときにトリガされてもよい。例えば、ブレークポイントをトリガすること６４０は、模擬現実環境内のオブジェクト（例えば、弾んでいるボール）に関連付けられたプロセス（例えば、プロセスＡ５３０）のコードラインに到達し、同時にビューがブレークポイントに関連付けられていることに少なくとも基づいて、ブレークポイントをトリガすることを含んでもよい。例えば、コードのラインに到達すること及びビューを条件とすることで、特定の表示ケースにおいて、オブジェクトに関連付けられたプロセスの特定のコードセクションの実行をユーザが調査することを助けてもよい。例えば、ブレークポイントをトリガすること６４０は、模擬現実環境内の仮想オブジェクトの状態の条件が満たされ、同時にビューがブレークポイントに関連付けられていることに少なくとも基づいて、ブレークポイントをトリガすることを含んでもよい。例えば、ブレークポイントをトリガすること６４０は、ヘッドマウントディスプレイのユーザによる動作（例えば、ユーザインタフェース４９０を介したハンドジェスチャ又はボタン押圧入力）を検出し、同時にビューがブレークポイントに関連付けられていることに少なくとも基づいて、ブレークポイントをトリガすることを含んでもよい。
【００５６】
技法６００は、ブレークポイントがトリガされることに応じて、ブレークポイントに関連付けられたデバッグ動作を実施すること６５０を含む。例えば、デバッグ動作は、模擬現実環境内の仮想オブジェクトに関連付けられたプロセス（例えば、プロセスＡ５３０）の実行を一時停止すること、及び／又は、プロセスのデバッグを容易にするためのデバッグ制御インタフェースをヘッドマウントディスプレイを使用してユーザに提示することと、を含んでもよい。様々なデバッグ機能を提供するために、ブレークポイントがトリガされることに応じて、１つ以上のデバッグ動作を実施して６５０もよい。例えば、デバッグ動作を実施する６５０ために、図８の技法８００に関して説明される動作の様々な組み合わせが実装されてもよい。
【００５７】
技法６００は、デバッグ動作を実施して６５０いる間に、模擬現実環境内の少なくとも１つの仮想オブジェクトの状態が進展しヘッドマウントディスプレイによって表示され続けることを可能にするために、模擬現実環境の模擬プロセス（例えば、模擬プロセス５２０）の実行を継続すること６６０を含む。例えば、ユーザは、模擬現実環境内の対象となる特定のオブジェクトに関連付けられたプロセスを独立してデバッグすることが可能であり得る。その間も、模擬現実アプリケーションによって提供される模擬現実環境を使用し続け、模擬現実環境内の他のオブジェクト（例えば、他のユーザのアバター）を見て、かつ／又はそれと対話することができる。例えば、デバッグ動作は、模擬現実環境内のオブジェクト（例えば、弾んでいるボール）に関連付けられたプロセス（例えば、プロセスＡ５３０）の実行を一時停止することを含んでもよく、プロセスがデバッグのために一時停止されている間に、他のオブジェクト（例えば、アバター）のための他のプロセス（例えば、プロセスＢ５３２）を実行し続け、それらの他のオブジェクトとの継続的な対話を可能にしてもよい。
【００５８】
図７は、ビューがブレークポイントに関連付けられた一連のビューの一部であることを検出するための技法７００の一例のフローチャートである。ビューは、模擬現実環境内の位置及びその位置からの視線ベクトルとして規定されてもよい。一連のビューは、模擬現実環境内の領域、及び中央視線ベクトルに対する角度範囲に対応してもよい。技法７００は、ビューの位置が一連のビューの領域内であるかどうかを判定すること７１０と、ビューの視線ベクトルと一連のビューの中央視線ベクトルとの間の角度を測定すること７２０と、角度が一連のビューの角度範囲内であるかどうかを判定すること７３０と、を含む。例えば、技法７００は、図３のシステム３００によって実装されてもよい。例えば、技法７００は、図４のシステム４００によって実装されてもよい。
【００５９】
技法７００は、ビューの位置が一連のビューの領域内であるかどうかを判定すること７１０を含む。例えば、ビューの位置は、ヘッドマウントディスプレイを着用しているユーザのアバターの位置、及び／又はユーザに関連付けられた仮想カメラの位置に対応してもよい。ビューの位置は、模擬現実環境（例えば、３次元空間である模擬現実環境）内の点の座標に対応してもよい。いくつかの実装形態では、ビューの位置が一連のビューの領域内であるかどうかを判定すること７１０は、ビューの位置と一連のビューの領域との交点が空でないかどうかを確認することを含む。いくつかの実装形態では、ビューの位置が一連のビューの領域内であるかどうかを判定すること７１０は、ビューの位置をより低次元の下位空間に投影し、ビューの位置の投影と一連のビューの領域との交点が空でないかどうかをチェックすることを含む。例えば、３次元位置が、（例えば、図２の使用シナリオ２００に関して説明されるように、）一連のビューの領域が規定される２次元平面（例えば、仮想フロア）に投影されてもよい。
【００６０】
技法７００は、ビューの視線ベクトルと一連のビューの中央視線ベクトルとの間の角度を判定すること７２０を含む。例えば、視線ベクトルは、ヘッドマウントディスプレイを使用してユーザに提示されるビューの中心を通る視線と平行であってもよい。例えば、視線ベクトルは、ビューの位置から出ていてもよい。例えば、中央視線ベクトルは、一連のビューの領域から対象となる１つ以上の仮想オブジェクトの方に出ていてもよい。技法７００は、角度が一連のビューの角度範囲内であるかどうかを判定すること７３０を含む。例えば、角度の大きさが閾値未満である場合に、角度は一連のビューの角度範囲内であってもよい。いくつかの実装形態では、視線ベクトルと一連のビューの中央視線ベクトルとの間の２つの角度を測定７２０し、評価してもよい。例えば、２つのベクトル間のピッチ回転及びヨー回転を測定７２０してもよい。ピッチ角の大きさを第１の閾値と比較してもよく、ヨー角の大きさを第１の閾値とは異なり得る第２の閾値と比較してもよい。例えば、ビューの位置が領域内であり、角度が角度範囲内である場合に、ビューは、ブレークポイントに関連付けられた一連のビューの一部として検出される。
【００６１】
図８は、ブレークポイントがトリガされることに応じてデバッグ動作を実施するための技法８００の一例のフローチャートである。技法８００は、模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を一時停止すること８１０と、一時停止されたプロセスに関連付けられたオブジェクトの視覚表現を生成すること８２０と、ヘッドマウントディスプレイを使用して、プロセスが一時停止されている間に、模擬現実環境内の視覚表現の提示を継続すること８３０と、ヘッドマウントディスプレイを使用して、模擬現実環境内にデバッグ制御インタフェースを提示すること８４０と、ヘッドマウントディスプレイを使用して、模擬現実環境内の仮想オブジェクトに関連付けられたプロセスのコードを、模擬現実環境内に提示すること８５０と、ヘッドマウントディスプレイを使用して、模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの状態変数の値を、模擬現実環境内に提示すること８６０と、模擬現実環境内の仮想オブジェクトの１つ以上のパラメータのログを生成すること８７０と、を含む。例えば、技法８００は、図３のシステム３００によって実装されてもよい。例えば、技法８００は、図４のシステム４００によって実装されてもよい。
【００６２】
技法８００は、模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を一時停止すること８１０を含む。関連付けられたプロセスが一時停止８１０されている間、オブジェクトの状態を進展させることを停止してもよい。オブジェクトに関するプロセスの実行を一時停止すること８１０は、ヘッドマウントディスプレイ（例えば、ヘッドマウントディスプレイ４１０）を装着しているユーザ（例えば、ソフトウェア開発者）が、プロセスのコード及び／又は状態変数を検査することを可能とし得る。例えば、プロセスＡ５３０は、プロセスＡ５３０のデバッグを容易にするために一時停止８１０されてもよい。
【００６３】
技法８００は、一時停止されたプロセス（例えば、プロセスＡ５３０）に関連付けられたオブジェクトの視覚表現を生成すること８２０を含む。例えば、模擬現実環境の模擬プロセス（例えば、模擬プロセス５２０）は、プロセスが一時停止８１０されたときに入手可能なオブジェクトの最新の（例えば、リアリティフラグメント５４０に符号化されたときの）状態情報に少なくとも基づいて、オブジェクトの視覚表現（例えば、空中で一時停止された弾んでいるボール）を生成８２０してもよい。技法８００は、ヘッドマウントディスプレイ（例えば、ヘッドマウントディスプレイ３４０又はヘッドマウントディスプレイ４１０）を使用して、プロセスが一時停止８１０されている間、模擬現実環境内の視覚表現の提示を継続すること８３０を含む。
【００６４】
技法８００は、ヘッドマウントディスプレイ（例えば、ヘッドマウントディスプレイ３４０又はヘッドマウントディスプレイ４１０）を使用して、ヘッドマウントディスプレイのユーザが模擬現実環境内の仮想オブジェクトに関連付けられたプロセス（例えば、プロセスＡ５３０）の実行を（例えば、ソフトウェアのコードラインの分解度で）制御することを可能にするデバッグ制御インタフェースを、模擬現実環境内に提示すること８４０を含む。例えば、デバッグ制御インタフェースは、一時停止、再開、ステップイン、ステップオーバー、及びステップアウトからなる一連の機能からユーザが少なくとも１つの機能を選択することを可能にしてもよい。例えば、デバッグ制御インタフェースは、ユーザが、ステップインコマンド、ステップオーバーコマンド、ステップアウトコマンド、継続コマンド、及び／又は一時停止コマンドを発行して、模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を制御することを可能にする、アイコンを含んでもよい。いくつかの実装形態では、デバッグ制御インタフェースは、模擬現実環境内の新しい仮想オブジェクトとして生み出されてもよく、新しい仮想オブジェクトに関連付けられたプロセスが、デバッグされている別のプロセスのデバッグセッションを管理するように構成されてもよい。この例では、一時停止８１０されたプロセスがデバッグされる。
【００６５】
技法８００は、ヘッドマウントディスプレイを使用して、模擬現実環境内の仮想オブジェクトに関連付けられたプロセス（例えば、プロセスＡ５３０）のコードを、模擬現実環境内に提示すること８５０を含む。例えば、提示８５０されるコードのコピーは、シンタックスが色分けされたコードのコピーであってもよく、これにより、ヘッドマウントディスプレイを装着しているユーザによるコードのデバッグを容易にしてもよい。いくつかの実装形態では、コードは、デバッグ制御インタフェースの、一時停止８１０されたプロセスのために提示８４０されている部分に提示８５０されてもよい。
【００６６】
技法８００は、ヘッドマウントディスプレイを使用して、模擬現実環境内の仮想オブジェクトに関連付けられたプロセス（例えば、プロセスＡ５３０）の状態変数の値を、模擬現実環境内に提示すること８６０を含む。いくつかの実装形態では、状態変数の値は、デバッグ制御インタフェースの、一時停止８１０されたプロセスのために提示８４０される部分に提示８６０されてもよい。
【００６７】
技法８００は、模擬現実環境内の仮想オブジェクトの１つ以上のパラメータ（例えば、出力又は内部状態変数）のログを生成すること８７０を含む。例えば、ログは、１つ以上のパラメータの時間履歴を記録してもよく、ログ内のエントリが、それぞれのタイムスタンプを含んでもよい。例えば、ログは、処理装置３１０のメモリに書き込まれてもよく、かつ／又はデータ記憶デバイス３２０に書き込まれてもよい。いくつかの実装形態では、ヘッドマウントディスプレイを使用して、ログの全て又は一部分（例えば、最新のＮ個のエントリ）が模擬現実環境内に提示されてもよい。いくつかの実装形態では、ログエントリは、デバッグ制御インタフェースの、一時停止８１０されたプロセスのために提示８４０される部分に提示されてもよい。
【００６８】
図９は、ブレークポイントがトリガされたことに応じて、デバッグする１つ以上の仮想オブジェクトを特定するための技法９００の一例のフローチャートである。例えば、デバッグする１つ以上のオブジェクトは、ブレークポイントがトリガされた時点のビューに少なくとも基づいて選択されてもよい。技法９００は、ブレークポイントがトリガされたことに応じて、少なくともビューに基づくレイキャスティンングにより、模擬現実環境内のデバッグされる１つ以上のオブジェクトを特定すること９１０と、特定された１つ以上のオブジェクトに関連付けられた１つ以上のプロセスに関するデバッグ動作を実施すること９２０と、を含む。例えば、技法９００は、図３のシステム３００によって実装されてもよい。例えば、技法９００は、図４のシステム４００によって実装されてもよい。
【００６９】
技法９００は、ブレークポイントがトリガされたことに応じて、少なくともビューに基づくレイキャスティングにより、模擬現実環境内のデバッグされる１つ以上のオブジェクトを特定すること９１０を含む。例えば、ヘッドマウントディスプレイを使用してユーザに提示されるビューの中心に投影される視線が、デバッグされる１つ以上のオブジェクトを特定する９１０ためのレイキャスティングに使用されてもよい。視線が模擬現実環境内の仮想オブジェクトに入射する場合に、オブジェクトはデバッグするために特定９１０されてもよい。いくつかの実装形態では、視線が交差する最も近いオブジェクトのみが特定される９１０。いくつかの実装形態では、視線が通る複数のオブジェクトが特定される９１０。いくつかの実装形態では、ビューから導出された複数の視線が、デバッグするための１つ以上のオブジェクトを特定９１０するために投じられる。いくつかの実装形態では、ユーザが見ているオブジェクトを特定する９１０視線検出。
【００７０】
技法９００は、１つ以上の特定９１０されたオブジェクトに関連付けられた１つ以上のプロセスに関するデバッグ動作を実施すること９２０を含む。例えば、図８の技法８００は、特定９１０されたオブジェクトの１つ以上に関連付けられたプロセスに関するデバッグ動作を実施９２０するように実装されてもよい。そのようなプロセスのために、他の組み合わせのデバッグ動作が実施されてもよい。いくつかの実装形態では、デバッグ動作を実施すること９２０は、特定９１０されたオブジェクトに関連付けられた各プロセスについて別個のデバッグプロセスを生み出すことを含む。
【００７１】
本明細書に記載された技法（例えば、図６の技法６００）は、様々な表示ハードウェアを使用して提示される模擬現実アプリケーションに使用されてもよい。例えば、本明細書に記載されるような模擬現実環境を提示するために使用されるディスプレイは、模擬現実アプリケーションを実行するヘッドマウントディスプレイ、スマートフォン、又はタブレットの一部であってもよい。
【００７２】
上記開示の実装形態又は実装形態の諸部分は、例えば、コンピュータ使用可能又はコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品の形態をとることができる。コンピュータ使用可能媒体又はコンピュータ可読媒体は、例えば、任意のプロセッサによって、又はそれと関連して使用するためのプログラム又はデータ構造を有形的に収容、記憶、通信、又は伝送することができる任意のデバイスであり得る。媒体は、例えば、電子デバイス、磁気デバイス、光学デバイス、電磁デバイス、又は半導体デバイスとすることができる。他の好適な媒体もまた、利用可能である。このようなコンピュータ使用可能又はコンピュータ可読媒体は、非一時的メモリ又は媒体と呼ばれる場合があり、ＲＡＭ若しくは他の揮発性メモリ、又は経時的に変化し得る記憶デバイスを含むことができる。
【００７３】
いくつかの実装形態は、模擬現実アプリケーションのデバッグを容易にするためにデータを収集及び／又は使用してもよい。このデータが、特定の個人を特定する個人情報を含む可能性がある。個人情報の例としては、名前、誕生日、住所、電話番号、所在地、ソーシャルメディアユーザ名若しくは他のアカウントユーザ名、及び／又は生理学的情報が挙げられる。
【００７４】
いくつかの実装形態では、この種の情報の使用が、本明細書に記載されるシステム及び方法の効用を向上させるのに有益であり得る。例えば、個人情報を使用して、現実環境内での位置を認識して、拡張現実アプリケーションの動作及びデバッグを向上させることができる。
【００７５】
個人情報を収集、受信、送信、かつ／又は使用する者は、十分に確立されたポリシー及び慣行を使用するべきである。例えば、そのような情報をセキュアに保つために、業界における慣行及び保護の標準を満足し、上回るべきである。これらのポリシー及び手順は、情報を収集し使用する前と、ポリシー及び手順の変更時都度の両方において、ユーザに知らせなければならない。この情報へのアクセスは、不適切な使用及び不慮の開示を予防するために制限されるべきである。個人情報を収集、受信、送信、及び／又は使用する者はまた、関連する管轄区の法律及び規制の全てに準拠しなければならず、これらの法律及び規制が国によって異なることを認識しなければならない。
【００７６】
本明細書に記載されるシステム及び方法は、例えば、「オプトイン」又は「オプトアウト」型のシステムによって、ユーザが個人情報の使用を制限又は防止することを可能にすることができる。これらの選択をユーザに提供することによって、様々に異なるタイプの情報の利用に対して別個の制御をユーザにもたらすことができる。したがって、所在地データ及びユーザ識別情報の使用に関して、様々に異なる許可又は禁止を指定することができる。
【００７７】
無認可の開示又は使用のリスクに対応するための処置を講じるべきである。例としては、データ収集を制限すること、情報が保存される期間を制限すること、必要とされないデータを削除することが挙げられる。加えて、いくつかのタイプの個人情報を匿名化したり、又は、その情報を特定のユーザにリンクせずに、ユーザ全体にわたってデータを集約する形態で記憶したりすることができる。
【００７８】
加えて、本明細書に記載されるシステム及び方法において個人情報の使用は可能であるが、個人情報は、いかなる実施にも必須ではなく、その使用を排除することができる。例えば、いくつかの模擬現実環境におけるビューを、地理的位置データなしで、非個人情報データ又は最小限の個人情報に基づいて決定することができる。
【００７９】
本開示は、特定の実施形態に関連して説明されているが、本開示は、開示される実施形態に限定されるものではなく、むしろ、添付の特許請求の範囲内に含まれる様々な修正形態及び同等の構成を網羅することを意図しており、その範囲は、そのような全ての修正形態及び同等の構造を包含するような最も広い解釈が許容されるべきであることを理解されたい。
【図１】
2021524109.tif 000003
【図２】
2021524109.tif 000004
【図３】
2021524109.tif 000005
【図４】
2021524109.tif 000006
【図５】
2021524109.tif 000007
【図６】
2021524109.tif 000008
【図７】
2021524109.tif 000009
【図８】
2021524109.tif 000010
【図９】
2021524109.tif 000011
【手続補正書】
【提出日】令和2年11月17日(2020.11.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ディスプレイと、
前記ディスプレイに取り付けられた１つ以上の動きセンサと、
処理装置であって、
前記１つ以上の動きセンサを使用して取り込まれる動きデータにアクセスし、
少なくとも前記動きデータに基づいて、前記ディスプレイを使用して提示される模擬現実環境内のビューを決定し、
前記ビューがブレークポイントに関連付けられているかどうかを検出し、
前記ビューが前記ブレークポイントに関連付けられていることを検出したことに少なくとも基づいて、前記ブレークポイントをトリガし、前記ブレークポイントに関連付けられたデバッグ動作を実施し、
前記デバッグ動作を実施している間、前記模擬現実環境内の少なくとも１つの仮想オブジェクトの状態を前記ディスプレイによって表示し続け、前記１つ以上の動きセンサを使用して受信される入力に応答することを可能にするために、前記模擬現実環境の模擬プロセスの実行を継続するように構成された処理装置と、
を備えるシステム。
【請求項２】
前記ビューが前記模擬現実環境内の位置からの視線ベクトルに対応しており、前記ブレークポイントが、前記模擬現実環境内の領域及び中央視線ベクトルに対する角度範囲に対応する、一連のビューに関連付けられており、前記処理装置が、
前記ビューの前記位置が前記一連のビューの前記領域内であるかどうかを判定し、
前記ビューの前記視線ベクトルと前記一連のビューの前記中央視線ベクトルとの間の角度を測定し、かつ
前記角度が前記一連のビューの前記角度範囲内であるかどうかを判定することにより、前記ビューが前記ブレークポイントに関連付けられていることを検出するように構成されている、請求項１に記載のシステム。
【請求項３】
前記ビューが前記模擬現実環境内の視線に対応しており、前記ブレークポイントが、前記模擬現実環境内の領域を通る一連の視線に対応する一連のビューに関連付けられており、前記処理装置が、
前記ビューの前記視線が前記一連のビューの前記領域を通るかどうかを判定することにより、前記ビューが前記ブレークポイントに関連付けられていることを検出するように構成されている、請求項１に記載のシステム。
【請求項４】
前記ビューが前記模擬現実環境内の焦点に対応しており、前記ブレークポイントが、前記模擬現実環境内の領域に対応する一連のビューに関連付けられており、前記処理装置が、
前記ビューの前記焦点が前記一連のビューの前記領域内であるかどうかを判定することにより、前記ビューが前記ブレークポイントに関連付けられていることを検出するように構成されている、請求項１に記載のシステム。
【請求項５】
前記ブレークポイントが複数のトリガ条件を有し、前記処理装置が、
前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスのコードラインに到達し、同時に前記ビューが前記ブレークポイントに関連付けられていることに少なくとも基づいて、前記ブレークポイントをトリガするように構成されている、請求項１から４のいずれか一項に記載のシステム。
【請求項６】
前記ブレークポイントが複数のトリガ条件を有し、前記処理装置が、
前記模擬現実環境内の仮想オブジェクトの状態の条件が満たされ、同時に前記ビューが前記ブレークポイントに関連付けられていることに少なくとも基づいて、前記ブレークポイントをトリガするように構成されている、請求項１から５のいずれか一項に記載のシステム。
【請求項７】
前記ブレークポイントが複数のトリガ条件を有し、前記処理装置が、
前記ディスプレイのユーザによる動作を検出し、同時に前記ビューが前記ブレークポイントに関連付けられていることに少なくとも基づいて、前記ブレークポイントをトリガするように構成されている、請求項１から６のいずれか一項に記載のシステム。
【請求項８】
前記処理装置が、
前記ブレークポイントがトリガされたことに応じて、少なくとも前記ビューに基づくレイキャスティングにより、前記模擬現実環境内のデバッグされる１つ以上のオブジェクトを特定し、
特定された前記１つ以上のオブジェクトに関連付けられた１つ以上のプロセスに関する前記デバッグ動作を実施するように構成されている、請求項１から７のいずれか一項に記載のシステム。
【請求項９】
前記デバッグ動作が、前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を一時停止することを含む、請求項１から８のいずれか一項に記載のシステム。
【請求項１０】
前記処理装置が、
一時停止される前記プロセスに関連付けられた前記オブジェクトの視覚表現を生成し、
前記プロセスが一時停止されている間、前記ディスプレイを使用して、前記模擬現実環境内の前記視覚表現の提示を継続するように構成されている、請求項９に記載のシステム。
【請求項１１】
前記デバッグ動作が、前記ディスプレイを使用して、前記ディスプレイのユーザが前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を制御することを可能にするデバッグ制御インタフェースを、前記模擬現実環境内に提示することを含む、請求項１から１０のいずれか一項に記載のシステム。
【請求項１２】
前記デバッグ動作が、前記ディスプレイを使用して、前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスのコードを、前記模擬現実環境内に提示することを含む、請求項１から１１のいずれか一項に記載のシステム。
【請求項１３】
前記ディスプレイがヘッドマウントディスプレイである、請求項１から１２のいずれか一項に記載のシステム。
【請求項１４】
１つ以上の動きセンサを使用して取り込まれる動きデータにアクセスすることと、
少なくとも前記動きデータに基づいて、ディスプレイを使用して提示される模擬現実環境内のビューを決定することと、
前記ビューがブレークポイントに関連付けられているかどうかを検出することと、
前記ビューが前記ブレークポイントに関連付けられていることを検出したことに少なくとも基づいて、前記ブレークポイントをトリガすることと、
前記ブレークポイントがトリガされたことに応じて、前記ブレークポイントに関連付けられたデバッグ動作を実施することと、
前記デバッグ動作を実施している間、前記模擬現実環境内の少なくとも１つの仮想オブジェクトの状態が進展し前記ディスプレイによって表示され続けることを可能にするために、前記模擬現実環境の模擬プロセスの実行を継続することと、
を含む方法。
【請求項１５】
前記ビューが前記模擬現実環境内の位置からの視線ベクトルに対応しており、前記ブレークポイントが、前記模擬現実環境内の領域及び中央視線ベクトルに対する角度範囲に対応する、一連のビューに関連付けられており、前記ビューが前記ブレークポイントに関連付けられていることを検出することが、
前記ビューの前記位置が前記一連のビューの前記領域内であるかどうかを判定することと、
前記ビューの前記視線ベクトルと前記一連のビューの前記中央視線ベクトルとの間の角度を測定することと、
前記角度が前記一連のビューの前記角度範囲内であるかどうかを判定することとを含む、請求項１４に記載の方法。
【請求項１６】
前記ビューが前記模擬現実環境内の視線に対応しており、前記ブレークポイントが、前記模擬現実環境内の領域を通る一連の視線に対応する一連のビューに関連付けられており、前記ビューが前記ブレークポイントに関連付けられていることを検出することが、
前記ビューの前記視線が前記一連のビューの前記領域を通るかどうかを判定することを含む、請求項１４に記載の方法。
【請求項１７】
前記ビューが前記模擬現実環境内の焦点に対応しており、前記ブレークポイントが、前記模擬現実環境内の領域に対応する一連のビューに関連付けられており、前記ビューが前記ブレークポイントに関連付けられていることを検出することが、
前記ビューの前記焦点が前記一連のビューの前記領域内であるかどうかを判定することを含む、請求項１４に記載の方法。
【請求項１８】
前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスのコードラインに到達し、同時に前記ビューが前記ブレークポイントに関連付けられていることに少なくとも基づいて、前記ブレークポイントをトリガすることを含む、請求項１４から１７のいずれか一項に記載の方法。
【請求項１９】
前記ブレークポイントがトリガされたことに応じて、少なくとも前記ビューに基づくレイキャスティングにより、前記模擬現実環境内のデバッグされる１つ以上のオブジェクトを特定することと、
特定された前記１つ以上のオブジェクトに関連付けられた１つ以上のプロセスに関する前記デバッグ動作を実施することと、
を含む、請求項１４から１８のいずれか一項に記載の方法。
【請求項２０】
前記デバッグ動作が、前記模擬現実環境内の仮想オブジェクトに関連付けられたプロセスの実行を一時停止することを含む、請求項１４から１９のいずれか一項に記載の方法。
【国際調査報告】
2021524109.tif 000012
2021524109.tif 000013
2021524109.tif 000014