(57)【要約】【課題】いくつかの実施形態では、装置は、揮発性メモリと、不揮発性メモリと、不揮発性メモリに結合され、オブジェクトに関連付けられたデータセットおよびマルチユーザ仮想（ＩＭＶＲ）環境のユーザの空間位置に関連付けられたユーザ情報を受信するように構成された第１のプロセッサと、揮発性メモリに結合され、ＩＭＶＲ環境におけるオブジェクトの部分のインスタンスを、ユーザの空間位置に基づいてユーザの視点からレンダリングするように構成された第２のプロセッサと、を含む。【解決手段】第１のプロセッサは、ユーザから受信した入力のセットに基づいてルックアップテーブル（ＬＵＴ）を生成するように構成される。第２のプロセッサは、ＬＵＴおよびユーザによる操作に関連する情報に基づいて、ＩＭＶＲ環境における操作の効果を明らかにするオブジェクトの部分の更新されたインスタンスをレンダリングするように構成される。【選択図】図２
2021530774.tif 000002
【特許請求の範囲】
【請求項１】
揮発性メモリと；
不揮発性メモリと；
前記不揮発性メモリに動作可能に結合された第１のプロセッサであって、前記第１のプロセッサはオブジェクトに関連付けられたデータセットと仮想環境における前記オブジェクトを参照するユーザの空間位置に関連付けられたユーザ情報とを受信するように構成され、前記データセットは前記オブジェクトの空間データ系列を含み、前記第１のプロセッサは前記ユーザからの入力のセットを受信するように構成され、前記入力のセットは、前記オブジェクトの部分に関連付けられた所定のプロパティのセットに関連付けられ、前記第１のプロセッサは、前記入力のセットに基づいてルックアップテーブルを生成するように構成される、第１のプロセッサと；
前記揮発性メモリに動作可能に結合された第２のプロセッサであって、前記第２のプロセッサは、前記ルックアップテーブルおよび前記ユーザ情報に基づいて、前記仮想環境における前記オブジェクトの前記部分のインスタンスをレンダリングするように構成され、前記オブジェクトの部分のインスタンスは、前記ユーザの視点からのものであり、前記視点は前記ユーザの空間的位置に基づき、前記第２のプロセッサは、前記ユーザによるオブジェクトの部分のインスタンスの操作に関連する操作情報を受信するように構成され、前記第２のプロセッサは、前記操作情報に基づいて、前記仮想環境における前記操作の効果を明示する前記オブジェクトの前記部分の更新されたインスタンスをレンダリングするように構成される、第２のプロセッサと、
を備える、装置。
【請求項２】
前記ユーザが第１のユーザであり、前記オブジェクトの前記部分のインスタンスは、前記オブジェクトの前記部分の第１のインスタンスであり、前記第２のプロセッサは、
前記オブジェクトに関連付けられたデータパッケージを生成し、
前記オブジェクトの前記部分の第２のインスタンスがユーザデバイスでレンダリングされ得るように、データパッケージを第２のユーザに関連付けられた前記ユーザデバイスに送信し、
前記操作情報を含む操作されたデータパッケージを生成し、
前記オブジェクトの前記部分の更新された第２のインスタンスが前記ユーザデバイスでレンダリングされ得るように、前記操作されたデータパッケージを前記ユーザデバイスに送信し、前記オブジェクトの前記部分の前記更新された第２のインスタンスが操作の効果を明示する、
ように構成される、請求項１に記載の装置。
【請求項３】
前記操作情報が前記第１のユーザによる第１の操作に関連する第１の操作情報であり、前記第１の操作の前記効果が第１の効果であり、前記オブジェクトの前記部分の前記更新された第１のインスタンスが前記オブジェクトの前記部分の第１の更新された第１のインスタンスであり、前記更新されたデータパッケージが第１の更新されたデータパッケージであり、前記第１のプロセッサはさらに、
前記ユーザデバイスから、前記オブジェクトの前記部分の前記第２のインスタンスの第２の操作に関連する第２の操作情報を含む第２の更新されたデータパッケージを受信し、前記第２の操作が第２のユーザによるものであり、前記ユーザデバイスで明示される第２の効果に関連し、
前記第２の操作情報に基づいて、前記第２の操作の前記第２の効果を明示する前記オブジェクトの前記部分の第２の更新された第１のインスタンスをレンダリングする、
ように構成される、請求項２に記載の装置。
【請求項４】
前記第２のプロセッサは、前記ユーザから測定入力のセットを受信するように構成され、前記測定入力のセットに基づいて、測定注釈が前記オブジェクトの前記部分の前記インスタンスのレンダリングとともに提示されるように、前記測定注釈を前記データセットに追加するように構成され；
前記第１のプロセッサは、前記データセットおよび前記測定注釈を含む更新されたデータパッケージを生成し、前記オブジェクトの前記部分の更新されたインスタンスが前記ユーザデバイスでレンダリングされ得るように、前記更新されたデータパッケージを前記ユーザデバイスに送信するように構成され、前記オブジェクトの前記部分の前記更新されたインスタンスが前記測定注釈の表示を含む、請求項１に記載の装置。
【請求項５】
前記空間データ系列は、コンピュータ断層撮影（ＣＴ）、磁気共鳴画像法（ＭＲＩ）、ポジトロン放出断層撮影、共焦点画像化、光学顕微鏡、電子顕微鏡、脳波検査（ＥＥＧ）、心電図検査（ＭＣＧ）、及び脳磁図検査の少なくとも１つを使用して収集された画像または点群データを含む一連の多次元データを含む、請求項１に記載の装置。
【請求項６】
前記ユーザが第１のユーザであり、前記オブジェクトの前記部分の前記インスタンスは、前記オブジェクトの前記部分の第１のインスタンスであり、前記第１のプロセッサは、
前記オブジェクトに関連付けられたデータパッケージを生成し、
前記第１のユーザから、前記データパッケージの共有に関連する命令を受信し、
一定期間、前記データパッケージの部分が前記ユーザデバイスに関連付けられた揮発性メモリに格納され、前記ユーザデバイスに関連付けられた不揮発性メモリに格納されないように、チャンクにおいて、前記命令に基づいて、前記データパッケージを第２のユーザに関連付けられたユーザデバイスに送信し、前記ユーザデバイスで前記オブジェクトの前記部分の第２のインスタンスをレンダリングする、
ように構成され、
前記一定期間の経過後、前記データパッケージの前記部分が前記揮発性メモリから消去される、請求項１に記載の装置。
【請求項７】
前記所定のプロパティのセットは、透明度プロパティおよび色プロパティを含み、前記入力のセットは、キーのセットを含み、前記キーのセットからの各キーは、前記透明度プロパティに関連付けられた第１の値と前記色プロパティに関連付けられた第２の値を含み、
前記第２のプロセッサは、前記キーのセットからの各キーから取得した前記情報を補間して前記ルックアップテーブルを生成するように構成される、請求項１に記載の装置。
【請求項８】
前記ユーザが第１のユーザであり、前記オブジェクトの前記部分の前記インスタンスは、前記オブジェクトの前記部分の第１のインスタンスであり、前記第１のプロセッサは、
前記オブジェクトに関連付けられたデータパッケージを生成し、
前記第１のユーザから、前記データパッケージの共有に関連する命令を受信し、前記命令は前記第１のユーザからの許可及び第２のユーザへの許可を含み、
一定期間、前記データパッケージの部分が前記ユーザデバイスに関連付けられた揮発性メモリに格納され、前記ユーザデバイスに関連付けられた不揮発性メモリにも格納されるように、チャンクにおいて、前記命令に基づいて、前記データパッケージ及び前記許可を前記ユーザデバイスに送信し、前記ユーザデバイスで前記オブジェクトの前記部分の第２のインスタンスをレンダリングする、
ように構成され、
前記一定期間の経過後及び前記許可に基づいて、前記データパッケージの前記部分が前記揮発性メモリから消去されるが、前記不揮発性メモリから消去されない、請求項１に記載の装置。
【請求項９】
前記所定のプロパティのセットは、前記オブジェクトの前記部分の前記インスタンスの可視範囲を設定するように構成される閾値プロパティを含む、請求項１に記載の装置。
【請求項１０】
プロセッサによって実行される命令を表すコードを格納する非一時的なプロセッサ可読媒体であって、前記コードは、前記プロセッサに、
オブジェクトに関連付けられた医療画像を含むデータを受信するステップと、
前記オブジェクトの構造に関連付けられたデータセットと、仮想環境における前記オブジェクトを参照するユーザの空間位置に関連付けられたユーザ情報とを抽出するステップと、
前記ユーザから入力のセットを受信するステップであって、前記入力のセットは、前記仮想環境における前記オブジェクトの部分に関連付けられた所定のプロパティのセットに関連付けられている、ステップと、
前記入力のセット及び前記ユーザ情報に基づいて、前記仮想環境における前記オブジェクトの前記部分のインスタンスをレンダリングするステップと、
前記ユーザによる及び前記仮想環境における前記オブジェクトの前記部分の前記レンダリングされたインスタンスの操作に関連する操作情報を受信するステップと、
前記操作情報に基づいて、前記仮想環境における前記操作の効果を明示する前記オブジェクトの前記部分の前記更新されたインスタンスをレンダリングするステップと、
前記オブジェクトの前記部分の前記更新されたインスタンスの前記操作および前記レンダリングに関連付けられた媒体を記録するステップであって、前記媒体は、前記ユーザの視点から、前記オブジェクトの前記部分の前記更新されたインスタンスの前記レンダリングに関連付けられた音声および空間情報を含み、前記視点は前記ユーザの前記空間位置に基づく、ステップと、
を行わせるためのコードを含む、非一時的なプロセッサ可読媒体。
【請求項１１】
前記所定のプロパティのセットは、透明度、位置、視認性、および色を含み、前記入力のセットは、キーのセットを含み、前記キーのセットからの各キーは、透明度プロパティに関連付けられた第１の値と色プロパティに関連付けられた第２の値とを含む情報を提供するように構成され、
前記コードは、前記プロセッサに、前記オブジェクトの前記部分の前記インスタンスをレンダリングさせ、前記プロセッサに、前記キーのセットからの各キーから取得した情報を補間させてルックアップテーブルを生成させるコードを含み、前記インスタンスの前記レンダリングは前記ルックアップテーブルに基づく、請求項１０に記載の非一時的なプロセッサ可読媒体。
【請求項１２】
前記コードは、前記プロセッサに、
前記ユーザから注釈入力のセットを受信するステップと、
前記オブジェクトの前記部分の前記インスタンスとともに、前記注釈入力に基づいて、前記オブジェクトの前記部分に関連付けられた注釈を表示するステップと、
更新されたデータセットを生成するステップであって、前記更新されたデータセットは、前記注釈が前記オブジェクトの前記部分のレンダリングとともに提示されるように、前記オブジェクトの前記部分に関連付けられて組み込まれた前記注釈を含む、ステップと、
前記更新されたデータセットを、前記プロセッサに関連付けられた不揮発性メモリに保存するステップと、
を行わせるためのコードをさらに含む、請求項１０に記載の非一時的なプロセッサ可読媒体。
【請求項１３】
前記ユーザは、第１のユーザであり、前記オブジェクトの前記部分の前記インスタンスは、前記オブジェクトの前記部分の第１のインスタンスであり、前記コードは、前記プロセッサに、
前記オブジェクトに関連付けられたデータパッケージを生成するステップと、
前記第１のユーザから、前記データパッケージの共有に関連する命令を受信するステップと、
一定期間、前記データパッケージの部分が前記ユーザデバイスに関連付けられた不揮発性メモリに格納され、前記ユーザデバイスに関連付けられた不揮発性メモリに格納されないように、チャンクにおいて、前記データパッケージを第２のユーザに関連付けられたユーザデバイスに送信して、前記ユーザデバイスで前記オブジェクトの前記部分の第２のインスタンスをレンダリングするステップであって、前記一定期間の経過後、前記データパッケージの前記部分が前記揮発性メモリから消去される、ステップと、
を行わせるコードをさらに含む、請求項１０に記載の非一時的なプロセッサ可読媒体。
【請求項１４】
前記データセットは、コンピュータ断層撮影（ＣＴ）、磁気共鳴画像法（ＭＲＩ）、ポジトロン放出断層撮影、共焦点画像化、光学顕微鏡、電子顕微鏡、脳波検査（ＥＥＧ）、心電図検査（ＭＣＧ）、及び脳磁図検査の少なくとも１つを使用して収集された画像または点群データを含む一連の多次元データを含む、請求項１０に記載の非一時的なプロセッサ可読媒体。
【請求項１５】
第１のデバイスから、第２のデバイスで、（１）仮想環境におけるオブジェクトの部分の第１のインスタンスに関連付けられたデータパッケージであって、前記オブジェクトの３次元構造に関連付けられたデータセットを含む、データパッケージと、
（２）仮想環境における前記オブジェクトを参照する、前記第１のデバイスに関連付けられた第１のユーザの空間位置を含む第１のユーザ情報と、（３）前記オブジェクトの所定のプロパティのセットに関連付けられた第１の入力のセットと、を受信するステップと、
前記第２のデバイスで、前記仮想環境における前記オブジェクトを参照して、前記第２のデバイスに関連付けられた第２のユーザの空間位置を含む第２のユーザ情報を受信するステップと、
前記第２のユーザ情報に基づいて、前記第１の入力のセットを第２の入力のセットに変換するステップと、
前記第２の入力のセットに基づいて、ルックアップテーブルを生成するステップと、
前記第２のデバイスで、（i）前記データセット、（ii）前記第２の入力のセット、および（iii）前記ルックアップテーブルに基づいて、前記仮想環境における前記オブジェクトの前記部分の第２のインスタンスをレンダリングするステップであって、前記オブジェクトの前記部分の前記第２のインスタンスは、前記第２のユーザの視点からのものであり、前記視点は、前記第２のユーザの空間位置に基づく、方法。
【請求項１６】
前記第２のインスタンスをレンダリングするステップは、前記第２のデバイスでの前記第２のインスタンスの前記レンダリングの完了のレベルの尺度を定義するステップを含み、前記方法は、
前記第２のデバイスでの前記第２のインスタンスの前記レンダリングの完了のレベルの前記尺度を前記第１のデバイスに送信するステップをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記データパッケージは、前記第１のデバイスにおける前記オブジェクトの前記部分の前記第１のインスタンスのレンダリングの空間録音および音声録音を含む、請求項１５に記載の方法。
【請求項１８】
前記第２のデバイスで、前記第２のユーザから操作情報を受信するように構成された制御のセットを提示するステップであって、前記操作情報は、前記オブジェクトの前記部分の前記第２のインスタンスの操作に関連する、ステップと、
前記制御のセットを介して、前記第２のユーザから前記操作情報を受信するステップと、
前記操作情報に基づいて、前記仮想環境における前記操作の効果を明示する前記オブジェクトの前記部分の更新された第２のインスタンスをレンダリングするステップと、
前記操作情報を含む更新されたデータパッケージを生成するステップと、
前記オブジェクトの前記部分の更新された第１のインスタンスが前記第１のデバイスでレンダリングされ得るように、前記更新されたデータパッケージを前記第１のデバイスに送信するステップであって、前記オブジェクトの前記部分の前記更新された第１のインスタンスは、前記第２のユーザによる前記操作の前記効果を明らかにするステップと、
をさらに含む、請求項１５に記載の方法。
【請求項１９】
前記レンダリングするステップは、前記第２のデバイスでの前記第２のインスタンスの前記レンダリングの完了のレベルの尺度を定義するステップを含み、前記方法は、
前記第２のデバイスで、前記第２のユーザから操作情報を受信するように構成された制御のセットを提示するステップであって、前記操作情報は、前記オブジェクトの前記部分の前記第２のインスタンスの操作に関連する、ステップと、
前記第２のインスタンスの前記レンダリングの完了のレベルの前記尺度を閾値未満に決定するステップと、
前記決定に基づいて、前記第２のユーザからの前記操作情報が前記制御のセットを介して受信できないように、前記制御のセットが非アクティブ状態にあることを提示するステップと、
をさらに含む、請求項１５に記載の方法。
【請求項２０】
前記受信するステップは、前記第２のデバイスに関連付けられたデバイス情報を受信するステップであって、前記デバイス情報がサンプリング情報を含む、ステップを含み、
前記第２のインスタンスをレンダリングするステップは、前記サンプリング情報に基づいてスケーリング係数を定義するステップを含み、前記第２のインスタンスをレンダリングするステップは、スケーリング係数に基づく、請求項１５に記載の方法。
【請求項２１】
一定期間、前記データパッケージを前記第２のデバイスに関連付けられた揮発性メモリに格納し、前記データパッケージを前記第２のデバイスに関連付けられた不揮発性メモリに格納しないステップであって、前記第２のインスタンスのレンダリングは前記一定期間内である、ステップと、
前記揮発性メモリから、前記一定期間の経過後に、前記揮発性メモリに格納されているデータパッケージを消去するステップと、
をさらに含む、請求項１５に記載の方法。
【請求項２２】
前記第１のデバイスから、前記データパッケージに関連付けられた許可情報を受信するステップと、
前記許可情報に基づいて、前記第２のデバイスに関連付けられた不揮発性メモリに前記データパッケージを格納するステップと、
をさらに含む、請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連する出願への相互参照）
この出願は、それぞれその全体が参照により本明細書に組み込まれる、2018年6月27日に出願され、「双方向にマルチユーザ、仮想現実体験を効率的にレンダリング、管理、記録、および再生するための方法及び装置」と題された米国仮出願第62/690,879号、及び2018年6月27日に出願され、「双方向にマルチユーザ、仮想現実体験を効率的にレンダリング、管理、記録、および再生するための方法及び装置」と題された米国仮出願第62/690,880号の優先権及びその利益を主張する。
【０００２】
本開示は、データ処理および配信、特に、双方向なマルチユーザの仮想現実の提示および体験のレンダリング、管理、記録、および再生に関する。
【背景技術】
【０００３】
コンピュータは、キーボードとマウス、およびキーボードまたはマウスからのユーザの命令に応答するプログラムを含むことができる。このようなコンピュータは、テレビ画面またはコンピュータモニターを介してユーザにフィードバックを提供することもできる。
【発明の概要】
【０００４】
いくつかの実施形態では、装置は、揮発性メモリと、不揮発性メモリと、不揮発性メモリに動作可能に結合され、オブジェクトに関連付けられたデータセットおよびオブジェクトに関し且つ仮想環境（ＩＭＶＲ環境）におけるユーザの空間位置に関連付けられたユーザ情報を受信するように構成された第１のプロセッサであって、データセットはオブジェクトの空間データ系列を含む、第１のプロセッサと、揮発性メモリに動作可能に結合された第２のプロセッサであって、第２のプロセッサは、ルックアップテーブル及びユーザ情報に基づいて、ＩＭＶＲ環境内のオブジェクトの部分のインスタンスをレンダリングするように構成され、オブジェクトの部分のインスタンスはユーザの視点からのものであり、視点はユーザの空間位置に基づく、第２のプロセッサと、を含む。第１のプロセッサは、ユーザから入力のセットを受信するように構成され、入力のセットは、オブジェクトの部分に関連付けられた所定のプロパティのセットに関連付けられ、第１のプロセッサは、入力のセットに基づいてルックアップテーブルを生成するように構成される。第２のプロセッサは、ユーザによるオブジェクトの部分のインスタンスの操作に関連する操作情報を受信するように構成され、第２のプロセッサは、操作情報に基づいて、ＩＭＶＲ環境での操作の効果を明示するオブジェクトの部分の更新されたインスタンスをレンダリングするように構成される。
【０００５】
本明細書に記載のいくつかの実施形態は、プロセッサによって実行される命令を表すコードを格納する非一時的なプロセッサ可読媒体を含み、コードは、オブジェクトに関連付けられた医療画像を含むがこれらに限定されないデータを受信させ、オブジェクトの構造（たとえば、骨、筋肉など）に関連付けられたデータセット、および仮想環境内のオブジェクトに関するユーザの空間位置に関連付けられたユーザ情報を抽出するためのコードを含む。コードはさらに、プロセッサにユーザからの入力のセットを受信させ、入力のセットは、仮想環境内のオブジェクトの一部に関連付けられた所定のプロパティのセットに関連付けられ、入力のセット及びユーザ情報に基づいて仮想環境内のオブジェクトの部分のインスタンスのセットをレンダリングさせ、仮想環境に基づいてユーザによるオブジェクトの部分のレンダリングされたインスタンスの操作に関連する操作情報を受け取らせ、操作情報に基づいて、仮想環境での操作の効果を明示するオブジェクトの部分の更新されたインスタンスをレンダリングさせるためのコードを含むことができる。コードはまた、オブジェクトの部分の更新されたインスタンスの操作およびレンダリングに関連付けられた媒体をプロセッサに記録させるコードを含むことができ、媒体は、ユーザの視点から、オブジェクトの部分の更新されたインスタンスのレンダリングに関連付けられた音声および空間情報を含み、視点はユーザの空間位置に基づく。
【０００６】
本明細書に記載のいくつかの実施形態は、第１のデバイスから、第２のデバイスで、（１）仮想環境内のオブジェクトの部分の第１のインスタンスに関連付けられたデータパッケージであって、オブジェクトの三次元構造に関連付けられたデータセットを含むデータパッケージ、（２）仮想環境内のオブジェクトに関する第１のデバイスに関連付けられた第１のユーザの空間位置を含む第１のユーザ情報、および（３）オブジェクトの所定のプロパティのセットに関連付けられた第１の入力のセット、を受信するステップを含む方法を含む。本方法は、（１）第２のデバイスで、仮想環境内のオブジェクトに関する第２のデバイスに関連付けられた第２のユーザの空間位置を含む第２のユーザ情報を受信するステップと、（２）第２のユーザ情報に基づいて、第１の入力のセットから第２の入力のセットに変換するステップと、（３）第２の入力のセットに基づいてルックアップテーブルを生成するステップと、（３）第２のデバイスで、（i）データセット、（ii）入力の2番目のセット、および（iii）ルックアップテーブルに基づいて、仮想環境内のオブジェクトの部分の第２のインスタンスをレンダリングするステップであって、オブジェクトの部分の第２のインスタンスは第２のユーザの視野からであり、視野は第２のユーザの空間位置に基づく、ステップと、を含む。
【０００７】
仮想現実システムは、娯楽、教育、ヘルスケア、事業運営、製造、リソース管理など、幅広く応用される。これらの応用のいくつかは、２人以上のユーザによる共同ユーザ体験の恩恵を受けることができる。仮想体験が操作されることができ、操作の結果がユーザによって体験されることができる双方向なユーザ体験を提供することはまた、大きなメリットをもたらす。
【０００８】
したがって、開示された実施形態は、効率的で、管理され、記録可能、および／または再生可能な双方向なマルチユーザ仮想現実の提示／環境、特に、いくつかの実施形態では、リアルタイムおよび／またはほぼリアルタイムで、複数のユーザに対して双方向で効率的にレンダリングおよび維持されるマルチユーザ仮想現実体験のための改善された装置および方法の必要性に対処する。
【０００９】
いくつかの実施形態では、装置は、メモリおよびプロセッサを含む。いくつかの実施形態では、システムは、複数の装置を含むことができる。プロセッサは、双方向なマルチユーザ仮想現実環境を生成するために使用されることができる情報を受信するように構成される。プロセッサは、双方向なマルチユーザ仮想現実環境を定義するために状態機械を初期化し、少なくとも部分的に状態機械に基づいて双方向なマルチユーザ仮想現実環境をレンダリングし双方向なマルチユーザ仮想現実システムに接続された１つまたは複数のユーザデバイスと通信し、レンダリングされた双方向なマルチユーザ仮想現実環境および／または双方向なマルチユーザ仮想現実環境を定義する状態機械に関する情報を配布するように構成される。プロセッサはさらに、１つまたは複数のユーザデバイスの状態に関連する情報を受信し、１つまたは複数のユーザアクションによってレンダリングされた双方向なマルチユーザ仮想現実環境に誘発された変化に関連する情報を受信し、レンダリングされた双方向なマルチユーザ仮想現実環境および／または受信した情報に基づいて双方向なマルチユーザ仮想現実環境を定義する状態機械を更新するように構成される。プロセッサは、双方向なマルチユーザ仮想現実環境の状態の変化に関連する変更パラメータを効率的な低帯域幅の方法で提供するように構成される。プロセッサはさらに、双方向なマルチユーザ仮想現実環境の一部を記録し、１人または複数のユーザによる１つまたは複数の記録された部分の再生を可能にするように構成される。
【図面の簡単な説明】
【００１０】
【図１Ａ】一実施形態に係る、双方向なマルチユーザ仮想現実（ＩＭＶＲ）システムの概略図である。
【図１Ｂ】一実施形態に係る、双方向なマルチユーザ仮想現実（ＩＭＶＲ）システムの概略図である。
【図２】一実施形態に係る、ＩＭＶＲシステム内のユーザデバイスの概略図である。
【図３】一実施形態に係る、ＩＭＶＲシステム内の双方向なマルチユーザＶＲレンダラの概略図である。
【図４】一実施形態に係る、ＩＭＶＲレンダラを使用して、ＩＭＶＲシステムを初期化、レンダリング、および更新する方法を説明するフローチャートである。
【図５】一実施形態に係る、ＩＭＶＲ体験のボリューム環境部分（volumetric environment portion）をレンダリングする例示的な方法を説明するフローチャートである。
【図６】一実施形態に係る、ＩＭＶＲ環境における１人または複数のユーザによるオブジェクト操作の例示的な方法を説明するフローチャートである。
【図７】一実施形態に係る、ＩＭＶＲシステムのユーザによって開始されたときにＩＭＶＲ体験を効率的に記録する例示的な方法を説明するフローチャートである。
【図８】一実施形態に係る、ＩＭＶＲシステムのユーザによって開始されたＩＭＶＲ体験の記録を再生する例示的な方法を説明するフローチャートである。
【図９Ａ】一実施形態に係る、実行されると、プロセッサに、ＩＭＶＲシステムを使用してＩＭＶＲ体験の一部を生成させることができるコードの例示的な部分を示す図である。
【図９Ｂ】一実施形態に係る、実行されると、プロセッサに、ＩＭＶＲシステムを使用してＩＭＶＲ体験の一部を生成させることができるコードの例示的な部分を示す図である。
【図１０】一実施形態に係る、統合されたＩＭＶＲ環境を確立することによって、ＩＭＶＲシステムの２人以上のユーザが経験するＩＭＶＲを同期させる例示的な方法を説明するフローチャートである。
【図１１】一実施形態に係る、ＩＭＶＲシステムを使用してＩＭＶＲ体験を生成するためにＭＥＧデータを使用する例示的な方法を説明するフローチャートである。
【図１２】一実施形態に係る、ＩＭＶＲ環境をレンダリングするために使用される、ユーザ入力に基づいて設定された値を有する変数のサブセットの概略図である。
【図１３】一実施形態に係る、ＩＭＶＲ環境を生成し、ＩＭＶＲシステムによってＩＭＶＲ環境に関連付けられた媒体を記録する例示的な方法を説明するフローチャートである。
【図１４】ＩＭＶＲ環境におけるオブジェクトの第１のインスタンスに関連付けられたデータを受信し、そのデータを使用して、第１のユーザが第２のユーザとＩＭＶＲ環境を共有できるようにオブジェクトの第２のインスタンスをレンダリングする例示的な方法を説明するフローチャートである。
【図１５】一実施形態に係る、ＩＭＶＲシステムによって、ＩＭＶＲ環境においてボリュームオブジェクトをレンダリングする例示的な方法を説明するフローチャートである。
【図１６】一実施形態に係る、ＩＭＶＲ環境でボリュームオブジェクトをレンダリングする例示的な方法を説明するフローチャートである。
【図１７Ａ】一実施形態に係る、ＩＭＶＲシステムによってＩＭＶＲ環境でレンダリングされたボリュームオブジェクトをシェーディングする例示的な方法を説明するフローチャートを示す。
【図１７Ｂ】一実施形態に係る、ＩＭＶＲシステムによってＩＭＶＲ環境でレンダリングされたボリュームオブジェクトをシェーディングする例示的な方法を説明するフローチャートを示す。
【図１８】一実施形態に係る、ＩＭＶＲシステムによる光線マーチングアプローチ（ray marching approach）を使用して、ＩＭＶＲ環境でボリュームオブジェクトをレンダリングする例示的な方法を説明するフローチャートである。
【図１９Ａ】一実施形態に係る、ユーザの空間位置に基づいてＩＭＶＲ環境でオブジェクトをレンダリングするためにデプスバッファを使用する例示的な方法を説明するフローチャートである。
【図１９Ｂ】一実施形態に係る、ユーザの空間位置に基づいてＩＭＶＲ環境でオブジェクトをレンダリングするためにデプスバッファを使用する例示的な方法を説明するフローチャートである。
【図２０】一実施形態に係る、ＩＭＶＲ環境の断面図をキャプチャするためのユーザの選択、ＩＭＶＲ環境でレンダリングされたボリュームオブジェクトに関連付けられた３次元メッシュオブジェクトへのユーザのアクセス、およびＩＭＶＲ環境におけるユーザアクションによって望まれる変更を実装するためにＩＭＶＲシステムで呼び出される機能に関連するユーザアクションのシーケンスの概略図である。
【図２１】一実施形態に係る、ＩＭＶＲ環境の断面図をキャプチャするためのユーザの選択、ＩＭＶＲ環境でレンダリングされたボリュームオブジェクトに関連付けられた３次元メッシュオブジェクトへのユーザのアクセス、およびＩＭＶＲ環境におけるユーザアクションによって望まれる変更を実装するためにＩＭＶＲシステムで呼び出される機能に関連するユーザアクションのシーケンスの概略図である。
【図２２】別の実施形態に係る、ＩＭＶＲ環境におけるオブジェクトの断面図をキャプチャする実装を説明するフローチャートである。
【図２３】別の実施形態に係る、ＩＭＶＲ環境におけるオブジェクトの断面図をキャプチャする実装を説明するフローチャートである。
【図２４】一実施形態に係る、ＩＭＶＲシステムによるＩＭＶＲ環境内のオブジェクトの色付きビューをレンダリングする例示的な方法を説明するフローチャートである。
【図２５】一実施形態に係る、ＩＭＶＲシステムによって２つ以上のソースから取得された、ＩＭＶＲ環境内のオブジェクトの複合ビューを生成する例示的な方法を説明するフローチャートである。
【図２６】一実施形態に係る、インストラクターがＩＭＶＲシステムを実装する学生間の共有ＩＭＶＲセッションのセットに柔軟に参加または離脱できるように、ＩＭＶＲ環境でレンダリングされたオブジェクトの複数のインスタンスを管理するように構成されたＩＭＶＲシステムの概略図である。
【図２７】一実施形態に係る、ＩＭＶＲシステムを使用して、ホストマシンとクライアントマシンとの間でＩＭＶＲ環境に関連するデータを共有する方法の概略図である。
【図２８】一実施形態に係る、ＩＭＶＲシステムを使用して、ＩＭＶＲ環境においてオブジェクトのスケーリングされたボリューム表現を生成する例示的な方法を説明するフローチャートである。
【図２９Ａ】様々な実施形態に係る、ＩＭＶＲシステムを使用した、ＩＭＶＲ環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【図２９Ｂ】様々な実施形態に係る、ＩＭＶＲシステムを使用した、ＩＭＶＲ環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【図３０】様々な実施形態に係る、ＩＭＶＲシステムを使用した、ＩＭＶＲ環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【図３１Ａ】様々な実施形態に係る、ＩＭＶＲシステムを使用した、ＩＭＶＲ環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【図３１Ｂ】様々な実施形態に係る、ＩＭＶＲシステムを使用した、ＩＭＶＲ環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【図３１Ｃ】様々な実施形態に係る、ＩＭＶＲシステムを使用した、ＩＭＶＲ環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【図３２Ａ】様々な実施形態に係る、ＩＭＶＲシステムを使用した、ＩＭＶＲ環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【図３２Ｂ】様々な実施形態に係る、ＩＭＶＲシステムを使用した、ＩＭＶＲ環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【図３３Ａ】様々な実施形態に係る、ＩＭＶＲシステムを使用した、ＩＭＶＲ環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【図３３Ｂ】様々な実施形態に係る、ＩＭＶＲシステムを使用した、ＩＭＶＲ環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【図３４】一実施形態に係る、ＩＭＶＲシステムの注釈ツールを使用して、ＩＭＶＲ環境内のオブジェクトの表現に注釈を付ける例示的な方法を説明するフローチャートである。
【図３５】一実施形態に係る、ＩＭＶＲシステムを使用して、ＩＭＶＲ環境においてスケーリングされたメッシュモデル表現オブジェクトを生成および使用する例示的な方法を説明するフローチャートである。
【図３６Ａ】一実施形態に係る、デバイスに関連付けられたユーザがＩＭＶＲシステムを使用してＩＭＶＲ環境に参加することを可能にするようにデバイスに転送されることができる例示的なデータパッケージの概略図である。
【図３６Ｂ】一実施形態に係る、進行中のＩＭＶＲセッションに参加するユーザに関係する一連のイベントを示すフローチャートである。
【図３７】一実施形態に係る、ＩＭＶＲシステムを使用してＩＭＶＲセッションにおけるユーザ間でデータパッケージを転送するときにユーザの準備完了状態を示す方法の例示的な実装を説明するフローチャートである。
【図３８】一実施形態に係る、ユーザがＩＭＶＲシステムを使用して進行中のＩＭＶＲセッションに参加することを許可されたときに、データパッケージを管理し、新しいユーザに関連する情報をＩＭＶＲ体験の進行中のセッションとマージする例示的な方法を説明するフローチャートである。
【図３９】一実施形態に係る、ＩＭＶＲシステムを使用して、複数の同時ユーザが関与するＩＭＶＲセッションに関連付けられたユーザインターフェースを管理する例示的な方法を説明するフローチャートである。
【図４０】一実施形態に係る、ユーザが任意の数の進行中のＩＭＶＲセッションのうちの１つに参加することを可能にする方法の例示的な実装を説明するフローチャートである。
【図４１Ａ】一実施形態に係る、ユーザインターフェースを介してユーザによって操作可能なキーのセットによって表されるオブジェクトプロパティのセットを備えた例示的なユーザインターフェースの概略図である。
【図４１Ｂ】一実施形態に係る、ボリュームオブジェクトをレンダリングするためにＩＭＶＲシステムによって使用される、図４１Ａのユーザインターフェースに関連付けられた例示的なキーの概略図である。
【図４２Ａ】ユーザが選択し、ネットワークを介してデータの新しいチャネルをユーザデバイスに送信する例示的な方法を説明するフローチャートである。
【図４２Ｂ】一実施形態に係る、キーの調整を介してＩＭＶＲ環境のユーザ操作を実装し、ネットワークを介した最小のデータ転送の戦略を使用して、ＩＭＶＲシステム内にキーの調整をユーザデバイスに伝播する例示的な方法を説明するフローチャートである。
【図４２Ｃ】一実施形態に係る、ＩＭＶＲシステムにおけるキーのセットを使用してボリュームオブジェクトのカラー化されたレンダリングを生成するための例示的な方法を示すフローチャートである。
【図４３】一実施形態に係る、キーのセットに関連付けられた情報を補間することによって、ボリュームオブジェクトの色付けされたレンダリングを生成するための例示的な方法を示すフローチャートである。
【図４４Ａ】ＩＭＶＲシステムに関連付けられた異なるタイプのイベントの概略図である。
【図４４Ｂ】一実施形態に係る、ＩＭＶＲシステムの例示的な読み取りおよび書き込みイベントベースの構成の概略図である。
【図４５】一実施形態に係る、ＩＭＶＲセッションに関連して定められたイベントを生成および処理するための例示的な方法を示すフローチャートである。
【図４６Ａ】涙滴の形をしたモデル表現オブジェクトの図である。
【図４６Ｂ】一実施形態に係る、図４６Ａにおいて示されているモデル表現オブジェクトのいくつかのインスタンスを使用して脳磁図を介して得られたデータの表現を含むＩＭＶＲ環境の斜視図の図である。
【図４７Ａ】一実施形態に係る、ユーザがＭＥＧデータに関連付けられたデータセットおよびＭＥＧデータに含まれるオブジェクトのレンダリングをナビゲートすることを可能にするように構成されたＩＭＶＲシステムの例示的なユーザインターフェースの概略図である。
【図４７Ｂ】図４７Ａのユーザインターフェースに機能を実装する例示的な方法を説明するフローチャートである。
【図４８】一実施形態に係る、ＭＥＧデータセットを読み取り、ＭＥＧデータセットから情報を抽出して、ＭＥＧデータセットに含まれるオブジェクトのインスタンスをレンダリングすることに関連するプロシージャを実装する例示的な方法を説明するフローチャートである。
【図４９】一実施形態に係る、ＩＭＶＲシステムを使用して、ＭＥＧデータセットに基づいてオブジェクトのレンダリングにフレーム毎の更新を実装する例示的な方法を説明するフローチャートである。
【図５０】一実施形態に係る、ＩＭＶＲシステムを使用して、ＭＥＧデータに基づいてオブジェクトのレンダリングを実装する例示的な方法を説明するフローチャートである。
【図５１Ａ】一実施形態に係る、ＣＴを介して得られた空間データ系列を使用して、宝石および／または金属のボリューム化および視覚化に使用されるＩＭＶＲシステムの例示的な実施形態を示す図である。
【図５１Ｂ】一実施形態に係る、ＣＴを介して得られた空間データ系列を使用して、宝石および／または金属のボリューム化および視覚化に使用されるＩＭＶＲシステムの例示的な実施形態を示す図である。
【図５１Ｃ】一実施形態に係る、ＣＴを介して得られた空間データ系列を使用して、宝石および／または金属のボリューム化および視覚化に使用されるＩＭＶＲシステムの例示的な実施形態を示す図である。
【発明を実施するための形態】
【００１１】
本明細書に記載の実施形態は、マルチユーザ仮想現実（ＶＲ）システム内に接続された複数のユーザデバイスを介して複数のユーザに提供される双方向なマルチユーザ仮想現実環境を効率的にレンダリングおよび更新するための方法および装置に関する。本開示は、例えば、医療データを含む、双方向なマルチユーザＶＲ提示および体験をレンダリング、管理、記録、および再生するための方法、システム、および装置を含む。このような医療データは、ＶＲ用に変換されることでき、複数のソース（コンピュータ断層撮影（ＣＴ）、磁気共鳴画像（ＭＲＩ）、脳波（ＥＥＧ）、脳磁図（ＭＥＧ）、超音波画像など）を含むことができる。一部の実装では、医療データはほぼリアルタイムまたはリアルタイムであり、複数のユーザ間のやり取りは同様に調整されることができる。実施形態は、複数のユーザが共有ＶＲ環境でデータをやり取りおよび操作しているときに使用される帯域幅を減らすように構成されることができる。追加的または代替的に、実施形態は、マルチユーザセッションが記録されるときに使用されるストレージスペースを削減するように構成されることができ、その結果、１人または複数のユーザによるその後の再生は、削減された処理能力および／または帯域幅を使用する。
【００１２】
本明細書では、教育、訓練、娯楽、研究、診断、手術、患者医療の管理、修復技術、ヘルスケアでの人工装置の使用、機械および自動車産業での製造と修理などを含むがこれらに限定されない様々な用途に使用できる、双方向なマルチユーザ仮想現実環境の効率的なレンダリングおよび保守のための方法および装置が記載される。いくつかの実施形態では、装置は、メモリと、メモリに動作可能に結合されたプロセッサとを含む。プロセッサは、１つまたは複数のユーザデバイスを含むシステムの一部として構成されることができる。プロセッサは、双方向なマルチユーザ仮想現実（ＩＭＶＲ）環境をレンダリングし、レンダリングされたＩＭＶＲ環境に関連する情報をユーザデバイスに効率的に配布するように構成され、その結果、ユーザがユーザデバイスに接続されることができ、レンダリングされたＩＭＶＲ環境を用いて体験および／またはやり取りすることができる。プロセッサは、ユーザデバイスからの入力、例えば、ユーザのやり取りに関連する入力を効率的に受信するように構成されることができる。システムはさらに、プロセッサが、ユーザのやり取りによって引き起こされた変化を含む、ＩＭＶＲ環境の状態の変化に関連する情報をユーザデバイスに効率的に転送できるように構成される。さらに、ユーザデバイスはまた、情報をプロセッサおよび／または互いに効率的に転送できるように構成することができ、ＩＭＶＲ環境のユーザ体験を向上させる。
【００１３】
図１Ａは、本明細書では「ＩＭＶＲシステム」または「システム」とも呼ばれる、双方向なマルチユーザ仮想現実システム１００の概略図である。ＩＭＶＲシステム１００は、同期された双方向な３次元ＩＭＶＲ環境を構築、初期化、および維持することによって、ユーザデバイス１０１〜１０３のセットによってアクセスされる双方向に操作可能なマルチユーザ仮想現実環境をレンダリングおよび維持するように構成される。一実施形態によれば、ＩＭＶＲシステム１００は、環境の基礎として提供される任意の適切なデータから３次元の双方向な仮想環境を生成することができる。ＩＭＶＲシステム１００は、図１Ａに示されるように、通信ネットワーク１０６を介して双方向なマルチユーザ仮想現実レンダラ１０５（「レンダラ」とも呼ばれる）に接続されたユーザデバイス１０１、１０２、および１０３を含む。
【００１４】
ＩＭＶＲ環境のレンダリングに使用するのに適したデータは、オブジェクトを含む任意の空間データ系列を含むことができる。空間データ系列は、場合によっては、とりわけオブジェクトのボリュームを定める情報を含むことができ、場合によっては、空間データ系列は、オブジェクトの構造（例えば、三次元構造）を定める情報を含むことができる。データ系列は、任意のモードの光学顕微鏡で取得したオブジェクトの連続断面画像を含むことができる。データ系列は、画像又は点群データを含む一連の多次元データを含むことができる。例は、コンピュータ断層撮影（ＣＴ）、磁気共鳴画像（ＭＲＩ）、ポジトロン放出断層撮影、共焦点画像、光学顕微鏡、電子顕微鏡、脳波（ＥＥＧ）、心磁図（ＭＣＧ）、脳磁図（ＭＥＧ）、および／または超音波イメージングを使用して収集されたデータを含む。場合によっては、空間データ系列は、複数の技術、技術、および／またはデータソースを使用して収集されたデータを含むことができる。例えば、空間データ系列は、複数の異なるデータソースから収集され、ＩＭＶＲレンダラ１０５によって使用される異なるチャネルにロードされるデータを含むことができる。たとえば、ＣＴデータを第１チャネルに入力し、ＭＲＩデータを第２チャネルに入力することができる。次に、画像は、ＣＴデータとＭＲＩデータとの両方を使用して、本明細書で説明するように、ＩＭＶＲ環境でレンダリングすることができる。他の例では、他の任意の組み合わせおよび／またはデータソースの数が入力として使用されることができる。
【００１５】
空間データ系列は、人間または動物の解剖学的構造に関連するオブジェクト、研究、診断、治療、哺乳類および／または非哺乳類種の獣医学研究、植物研究、その他の生物または非生物組織（例、生体内で、生体外で、自然の位置でなど）および天然または合成の生物のために用いられるオブジェクトを含むことができる。例として医療画像を使用して本明細書で説明する一方で、本明細書で説明するシステム、装置、および方法を使用して、オブジェクトの構造特性に関連する情報を含む空間データ系列を使用して任意のオブジェクトを視覚化することができる。オブジェクトの他の例は、宝石、地質学研究からのサンプル、考古学研究からのサンプル、建築作業からのサンプルなどである。空間データ系列は、場合によっては、分子（例えば、高分子、タンパク質など）の１つまたは複数の細胞または細胞内オブジェクト構造に関連する情報を含むことができる。例えば、空間データ系列は、適切な供給源、例えば、タンパク質構造予測サーバ（例えば、高度なタンパク質二次構造予測サーバ）から３次元でモデル化および／または生成された酵素分子の構造および／または表面特徴に関連するデータを含むことができる。空間データ系列は、場合によっては、原子または亜原子粒子に関連する情報を含むことができる。空間データ系列は、場合によっては、電子的に生成されたオブジェクトに関連する情報、たとえばアーティストによってレンダリングされたメッシュオブジェクトを含むことができる。場合によっては、本明細書で説明するように、ＩＭＶＲシステムによって提供されるツールを使用して、本明細書で説明するように、オブジェクトをＩＭＶＲ環境で生成することができる。場合によっては、電子的に生成されたオブジェクトは、空間データ系列が適切なデータ形式から取得されることができるように、外部ソース（たとえば、オブジェクトの２次元および／または３次元モデルを生成するための適切な市販のプラットフォーム）または他の適切なデータ処理環境から取得またはインポートされることができる。
【００１６】
通信ネットワーク１０６（「ネットワーク」とも呼ばれる）は、パブリックおよび／またはプライベートネットワーク上で動作することができる、データを転送するための任意の適切なデータ通信経路であり得る。通信ネットワーク１０６は、プライベートネットワーク、仮想プライベートネットワーク（ＶＰＮ）、マルチプロトコルラベルスイッチング（ＭＰＬＳ）回路、インターネット、イントラネット、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、マイクロ波アクセスネットワーク（WiMAX（登録商標））の世界的な相互運用性、光ファイバ（または光ファイバ）ベースのネットワーク、Bluetooth（登録商標）ネットワーク、仮想ネットワーク、および／またはそれらの任意の組み合わせを含むことができる。場合によっては、通信ネットワーク１０６は、例えば、Ｗｉ−Ｆｉ（登録商標）またはワイヤレスローカルエリアネットワーク（「ＷＬＡＮ」）、ワイヤレスワイドエリアネットワーク（「ＷＷＡＮ」）、および／またはセルラーネットワークなどのワイヤレスネットワークであり得る。他の例では、通信ネットワーク１０６は、例えば、イーサネット（登録商標）ネットワーク、デジタル加入線（「ＤＳＬ」）ネットワーク、ブロードバンドネットワーク、および／または光ファイバネットワークなどの有線接続であり得る。場合によっては、ネットワークは、アプリケーションプログラミングインターフェース（ＡＰＩ）および／またはデータ交換フォーマット（例えば、Representational State Transfer（REST）、JavaScript（登録商標） Object Notation（JSON）、Extensible Markup Language（XML）、Simple Object Access Protocol（SOAP）など）、および／またはJavaメッセージサービス（JMS））を使用することができる。通信は暗号化することも暗号化しないこともできる。場合によっては、通信ネットワーク１０６は、例えば、ネットワークブリッジ、ルータ、スイッチ、および／またはゲートウェイによって互いに動作可能に結合された複数のネットワークまたはサブネットワークを含むことができる。
【００１７】
ＩＭＶＲシステム１００内のユーザデバイス１０１、１０２、および１０３はそれぞれ、１つまたは複数のユーザまたはユーザのグループに関連付けられた、互いに相互接続されたデバイスまたはデバイスの適切な組み合わせであり得る。すなわち、ユーザデバイス１０１、１０２、および１０３は、構造的および／または機能的に互いに類似し得る。３つのユーザデバイスを含むように示されているが、本明細書で説明する任意のＩＭＶＲシステムは、２つまたは３つのユーザデバイスに限定されず、任意の数のユーザを含むＩＭＶＲセッションを介して共有ＩＭＶＲ体験をサポートすることができる。
【００１８】
図１Ｂは、本明細書では「ＩＭＶＲシステム」または「システム」とも呼ばれる、双方向なマルチユーザ仮想現実システム１００’の概略図である。ＩＭＶＲシステム１００’は、同期された双方向な３次元ＩＭＶＲ環境をそれぞれ構築、初期化、および維持するユーザデバイス１０１’〜１０３’のセットによってアクセスされる双方向で操作可能なマルチユーザ仮想現実環境をレンダリングおよび維持するように構成される。ＩＭＶＲシステム１００’は、環境の基礎として提供される任意の適切なデータから３次元の双方向な仮想環境を生成することができる。ＩＭＶＲシステム１００’は、図１Ｂに示されるように、通信ネットワーク１０６’を介してピアツーピアネットワークで互いに接続されたユーザデバイス１０１’、１０２’、および１０３を含む。
【００１９】
図１ＢのＩＭＶＲシステム１００’は、ＩＭＶＲシステム１００’が、ＩＭＶＲシステム１００のように別個のデバイスとしてＩＭＶＲレンダラ（例えば、ＩＭＶＲレンダラ１０５）を含まないことを除いて、図１ＡのＩＭＶＲシステム１００と実質的に同様であり得る。代わりに、ユーザデバイス１０１−１０３と実質的に同様であるユーザデバイス１０１’−１０３’は、さらに、サーバ（ＩＭＶＲシステム１００のＩＭＶＲレンダラ１０５のような）を使用せずにピアツーピア方式で同期された双方向なＩＭＶＲ環境を構築、初期化、および維持するように構成されることができる。本明細書に記載のデバイス、装置、および方法は、ＩＭＶＲレンダラ（ＩＭＶＲレンダラ、例えば、ＩＭＶＲレンダラ１０５、３０５などによって実行される方法または機能）を指す場合があるが、いくつかの実施形態では、ＩＭＶＲシステムは、ＩＭＶＲシステム１００'と同様に構成されることができる。ＩＭＶＲレンダラに関連付けられていると記載されている機能、方法、またはプロセスは、ＩＭＶＲシステムに関連するユーザデバイス（例えば、ＩＭＶＲシステム１００’に関連付けられたユーザデバイス１０１’−１０３’など）内の１つまたは複数の構成要素を使用して分散方式で実行または実施されることができる。
【００２０】
図２は、図１のユーザデバイス１０１、１０２、および１０３と実質的に同様であり得る例示的なユーザデバイス２０１を示す。ユーザデバイス２０１は、ユーザ計算デバイス２１０、仮想現実コントローラ２１９、および仮想現実ディスプレイ２２０を含む。いくつかの実施形態では、ＶＲコントローラ２１９およびＶＲディスプレイ２２０は、適切な有線または無線接続を使用して互いに接続された別個のデバイスであり得る。他の実施形態では、ＶＲコントローラ２１９およびＶＲディスプレイ２２０は、ＩＭＶＲ体験のためのディスプレイおよびコントローラを含む単一のデバイスに統合することができる。図２には示されていないが、ユーザデバイス２０１はまた、計算デバイス２１０、ＶＲコントローラ２１９および／またはＶＲディスプレイ２２０と相互接続することができる、音声受信機（例えば、マイクロフォン）および／または音声プレーヤー（例えば、スピーカー）、触覚（haptic又はtactile）センサまたはアクチュエータ、加速度計の他のモダリティの１つまたは複数の周辺センシング、受信または作動デバイスを含むことができる。
【００２１】
ＶＲコントローラ２１９は、ユーザ計算デバイス２１０および／またはＶＲディスプレイ２２０などのユーザデバイス２０１の１つまたは複数の構成要素を制御するために使用されるように構成され得る任意の適切なデバイスであり得る。いくつかの実施形態では、ＶＲコントローラ２１９は、マウス、キーボード、および／またはジョイスティックデバイスであり得る。いくつかの実施形態では、ＶＲコントローラ２１９は、慣性測定装置であり得る。いくつかの実施形態では、ＶＲコントローラ２１９は、加速度計、磁力計などのような１つまたは複数のセンサを含むモーションコントローラであり得る。ＶＲコントローラ２１９は、ユーザデバイス２０１および／またはＩＭＶＲ環境の構成要素を操作するために使用することができる、１つまたは複数のアクチュエータまたはボタン、スクロールホイール、ハンドリングスティックなどの制御項目を含むことができる。本明細書で記載されるように、ユーザデバイス２０１は１つのＶＲコントローラ２１９を含むように説明されるが、任意の適切な数のＶＲコントローラを使用して、ユーザデバイスを操作するか、またはユーザデバイスおよび／若しくはＩＭＶＲ環境に関連してレンダリングされるオブジェクトのインスタンスを操作することができる。例えば、ＶＲコントローラ２１９を使用して、ＶＲディスプレイ２２０を通して見ることができるユーザインターフェース（ＵＩ）を開始することによって、ＩＭＶＲ体験を開始することができる。ＶＲコントローラ２１９は、例えば、ボタンをクリックする、メニューを開くなどによって、ＵＩを変更するために使用することができる。ＶＲコントローラは、ユーザインターフェースおよび／またはＩＭＶＲ環境でデバイスを指し示したり操作したりするために使用できるカーソルのような制御項目を生成するために使用されることができる。
【００２２】
場合によっては、ＩＭＶＲ環境は、ＩＭＶＲ環境内からＩＭＶＲ環境の２次元ビューを取得し、ＩＭＶＲセッションに参加するために使用されることができる、ＩＭＶＲ環境内から生成された１つまたは複数のモバイルエンティティを含むことができる。場合によっては、モバイルエンティティを操作するユーザは、ＩＭＶＲセッションに参加せず、ＩＭＶＲ環境内からＩＭＶＲセッションのオブザーバになることができる。例えば、モバイルエンティティ（例えば、フライカム）は、ＩＭＶＲ環境内で定めることができ、（モバイルエンティティの視点からの）斜視２次元ビューを１人または複数のユーザに投影するために使用することができる。モバイルエンティティに関連付けられたユーザは、必要に応じてモバイルエンティティを移動、回転、および／または方向付けして、ＩＭＶＲ環境の様々な領域または側面を表示できる。
【００２３】
いくつかの実施形態では、ＶＲディスプレイ２２０は、データを受信し、ユーザのためにＩＭＶＲ環境に２次元ウィンドウを生成するように構成された適切な２次元モニタであり得る。いくつかの実施形態では、ＶＲディスプレイはまた、音声スピーカー、音声入力を受信するためのマイクロフォン、眼球運動またはユーザの目の動きなどを追跡するための瞳孔トラッカーなど、ユーザのＩＭＶＲ体験を強化または増強するために使用できる１つまたは複数のセンサおよび／またはアクチュエータを含むことができる。
【００２４】
ＶＲディスプレイ２２０は、データを受信し、ユーザのために仮想現実体験を生成するように構成された適切な仮想現実ヘッドセットであり得る。いくつかの実施形態では、ＶＲディスプレイは、２Ｄおよび／または３Ｄを投影するように構成されることができるグラフィカルディスプレイユニットを含むことができる。いくつかの実施形態では、ＶＲディスプレイはまた、音声スピーカー、音声入力を受信するためのマイクロフォン、眼球運動またはユーザの目の動きを追跡するための瞳孔トラッカー、ユーザの体の姿勢および向きの変化を認識するセンサ（例えば、頭の動き、頭の向き、ジェスチャなど）、体の動きおよび身長をキャプチャするためのセンサなど、ユーザのＶＲ体験を強化または増強するために使用できる１つまたは複数のセンサおよび／またはアクチュエータを含むことができる。
【００２５】
ユーザ計算デバイス２１０は、ハードウェアベースのコンピューティングデバイスおよび／またはマルチメディアデバイス、例えば、サーバ、デスクトップコンピューティングデバイス、スマートフォン、タブレット、ウェアラブルデバイス、ラップトップなどであり得る。いくつかの実施形態では、計算デバイス２１０は、ＶＲコントローラ２１９および／またはＶＲディスプレイと統合するか、またはその一部とすることができる。いくつかの実施形態では、計算デバイス２１０は、ＶＲコントローラ２１９およびＶＲディスプレイ２２０から別々に収容され、それらに接続され得る。計算デバイス２１０は、プロセッサ２１１、メモリ２１２、およびコミュニケータ２１３を含む。
【００２６】
プロセッサ２１１は、例えば、ハードウェアベースの集積回路（ＩＣ）、または一連の命令またはコードを実行および／または実行するように構成された任意の他の適切な処理デバイスであり得る。例えば、プロセッサ２１１は、汎用プロセッサ、中央処理装置（ＣＰＵ）、加速処理装置（ＡＰＵ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブルロジックであり得る。 アレイ（ＰＬＡ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）、プログラマブルロジックコントローラ（ＰＬＣ）などであり得る。プロセッサ２１１は、システムバス（例えば、アドレスバス、データバス、および／または制御バス）を介してメモリ２１２に動作可能に結合されることができる。
【００２７】
図２に示されるように、プロセッサ２１１は、データレシーバ２１４、ユーザ状態機械２１５、ユーザ固有のＶＲレンダラ２１６、ユーザ状態アップデータ２１７、コントローラハンドラ２１８、およびＶＲレコーダ２２１を含むことができる。データレシーバ２１４、ユーザ状態機械２１５、ユーザ固有のＶＲレンダラ２１６、ユーザ状態アップデータ２１７、コントローラハンドラ２１８、およびＶＲレコーダ２２１を含む各構成要素は、メモリ２１２に格納され、プロセッサ２１１によって実行されるソフトウェアであることができる（例えば、プロセッサ２１１にデータレシーバ２１４、ユーザ状態機械２１５、ユーザ固有のＶＲレンダラ２１６、ユーザ状態アップデータ２１７、コントローラハンドラ２１８、およびＶＲレコーダ２２１を実行させるためのコード）。構成要素を実行するためのコードは、メモリ２１２および／または、例えば、ＡＳＩＣ、ＦＰＧＡ、ＣＰＬＤ、ＰＬＡ、ＰＬＣなどのようなハードウェアベースのデバイスに格納することができる。
【００２８】
データレシーバ２１０は、ＶＲコントローラ２１９、ＶＲディスプレイ２２０、通信ネットワークを介してユーザデバイス２０１に接続されたＩＭＶＲレンダラ（例えば、図１に示されるＩＭＶＲシステム１００のＩＭＶＲレンダラ１０５）、および／または他のユーザデバイス（例えば、ユーザデバイス２０１が含まれるのと同じＩＭＶＲシステムに接続されたユーザデバイス）から転送されたデータを受信するように構成される。いくつかの実装形態では、データレシーバ２１４は、ＩＭＶＲレンダラによって生成された双方向なマルチユーザＶＲ環境の状態を示す初期化された状態を受信するように構成されることができる。場合によっては、データレシーバ２１４は、ＩＭＶＲレンダラによって既に生成および初期化されたＶＲ環境の状態に対する更新を受信することができる。たとえば、更新は、ＩＭＶＲシステムに接続された他のユーザのやり取りからであり得るＶＲ環境内のオブジェクトまたは他のユーザの相対的な位置および／または状態の変化を表すことができる。
【００２９】
ユーザ状態機械２１５は、ユーザデバイス２０１を使用するユーザの状態を表す一組の表示を生成および維持するように構成されることができる。いくつかの実装形態では、ユーザ状態機械２１５は、ＶＲコントローラ２１９からの入力などのユーザから受信した入力、および／またはユーザに接続された他の感知、受信、および／または作動デバイス（マイク、触覚受信機、加速度計など）に基づいてユーザ状態を定め、ユーザのＶＲ体験のセッション中にユーザの状態を維持することができる。
【００３０】
ユーザ固有のＶＲレンダラ２１６は、ＩＭＶＲ環境に関する情報を中継するレンダラ（例えば、図１に示されるＩＭＶＲシステム１００のレンダラ１０５）から受信したデータを使用するように構成されることができ、ユーザ固有のＶＲレンダラ２１６は、ユーザデバイス２０１のユーザのためにユーザ固有のＩＭＶＲ体験を維持する。いくつかの実施形態では、ＩＭＶＲレンダラを有するサーバなしで動作するＩＭＶＲシステム（例えば、図１ＢのＩＭＶＲシステム１００’）において、ユーザ固有のＶＲレンダラ２１６は、直接受信された、ＩＭＶＲ環境に関するデータ中継情報を使用するように構成され得る。ユーザ固有のＶＲレンダラ２１６は、ユーザデバイス２０１のユーザのためにユーザ固有のＩＭＶＲ体験を生成および維持するように構成されることができる。例えば、ユーザ固有のＶＲレンダラ２１６は、デバイス２０１のユーザが参加しているＩＭＶＲ環境、およびユーザデバイス２０１を使用するユーザの相対的なアクション、位置、または視点（例えば、空間的位置、姿勢、ＶＲ環境との対話など）に関する情報を受信することができる。この情報を使用して、ユーザ固有のＶＲレンダラ２１６は、ユーザデバイス２０１のユーザに適用するように調整されたＩＭＶＲ環境のユーザ固有のバージョンを生成することができる。ＩＭＶＲ環境のユーザ固有のバージョンは、ＩＭＶＲ環境でのユーザの仮想提示によって知覚されることになるＩＭＶＲ環境の視覚、音声、触覚、および／または他のモダリティへの適切な修正を含む、ユーザデバイス２０１のユーザの視点からのＩＭＶＲ環境の提示を含むことができる。例えば、いくつかの実装形態では、ユーザ固有のＶＲレンダラ２１６は、ＶＲコントローラ２１９および／またはＶＲディスプレイ２２０の位置を追跡することによって推定されるユーザの空間位置に基づいて、ＩＭＶＲ環境のビューを変更することができる。いくつかの実装形態では、ユーザ固有のレンダラ２１６は、ＩＭＶＲ環境の特定の側面（例えば、ＩＭＶＲ環境内の特定のオブジェクトまたはビュー）をユーザデバイス２０１のユーザに明らかにするように構成することができ、そうでなければ、明らかにされたオブジェクトは、（例えば、見えない、または視界から遮られているなど）より多くの他のユーザに利用不可能である。
【００３１】
プロセッサ２１１は、ＶＲコントローラ２１９、ＶＲディスプレイ２２０、および／または他の周辺感知、受信および／または作動デバイスから情報を受信するように構成されたユーザ状態アップデータ２１７を含む。ユーザ状態アップデータ２１７はさらに、受信した情報を使用して、ユーザおよび／またはユーザの直接の環境の状態の変化、すなわち、ＩＭＶＲ環境でのユーザのアクションまたはユーザによる操作を記録するように構成される。ユーザ状態アップデータ２１７は、情報を使用してユーザ状態機械２１５を更新し、変更をユーザ状態機械２１５および／またはＩＭＶＲレンダラ（例えば、図１Ａのシステム１００のレンダラ１０５）に伝達する。いくつかの実装形態では、ユーザ状態アップデータ２１７はまた、ユーザ状態機械２１５への変更を、同じＩＭＶＲシステムに接続され得る他のユーザに通信するように構成されることができる。いくつかの実装形態では、ユーザ状態アップデータ２１７は、ＩＭＶＲレンダラ（例えば、図１ＢのＩＭＶＲシステム１００'内）などのサーバを関与させることなく、ピアツーピア方式で、同じＩＭＶＲシステムに接続され得る他のユーザデバイスにユーザ状態機械２１５への変更を直接通信するように構成され得る。
【００３２】
いくつかの実装形態では、ユーザ状態アップデータ２１７はまた、ユーザ状態への変更によって引き起こされたＩＭＶＲ環境への変更を記録し、変更をＩＭＶＲレンダラ（例えば、システム１００のレンダラ１０５）および／または他のユーザデバイス（例えば、ＩＭＶＲシステム１００のユーザデバイス１０１、１０２、および１０３）に伝達することができる。一例として、ユーザデバイス２０１のユーザがＶＲ環境の一部、例えば、対象の循環系の内部解剖学的構造（例えば、血管系）を描くＶＲ環境の心臓部分を拡大する場合、ユーザ状態アップデータ２１７は、拡大点、拡大のスケール、ＶＲ環境が拡大される軸などの操作のプロパティを記録することができる。ユーザ状態アップデータ２１７は、ユーザの状態（例えば、ユーザによって使用される制御点、拡大するためのユーザのジェスチャ、ユーザによって使用されるカーソルなどの１つまたは複数の制御オブジェクトの位置など）に関連するユーザ状態機械２１５を更新することができ、変更をＩＭＶＲレンダラに伝達する。ユーザ状態機械はまた、ユーザによって知覚されたユーザの操作によってＩＭＶＲ環境に誘発された変化を記録し、ＩＭＶＲ環境に誘発された変化をレンダラに伝達することができる。例えば、ユーザ状態アップデータ２１７はまた、ＩＭＶＲ環境の特定の構造または部分の倍率の結果として生じる変化を、ＩＭＶＲレンダラおよび／またはＩＭＶＲシステム内の他のユーザデバイスに伝達することができる。
【００３３】
プロセッサ２１１は、コマンドを送信し、ＶＲコントローラ２１９からフィードバックを受信するように構成されたコントローラハンドラ２１８を含む。 いくつかの実装形態では、コントローラハンドラ２１８は、ＶＲコントローラ２１９に関連付けられた１つまたは複数の制御オブジェクトを生成および誘導および／または向けるように構成されることができる。いくつかの実装形態では、コントローラハンドラ２１８は、ＶＲコントローラ２１９を使用してポインティングおよび追跡プロシージャを実行するように構成されることができる。いくつかの実装形態では、コントローラハンドラ２１８は、レイキャスティング、方向検出、回転検出、適切な座標空間におけるＶＲコントローラの位置ベクトルの検出などの１つまたは複数のプロシージャを使用して、ＶＲコントローラ２１９を介してユーザによって実行される焦点およびアクションを推定することができる。いくつかの実装形態では、コントローラハンドラ２１８は、１つまたは複数の他の構成要素またはユーザデバイス２０１の構成要素の一部と協調して動作することができる。例えば、コントローラハンドラ２１８は、ＶＲディスプレイ２２０内の視線追跡デバイス、または含まれ得る他のセンサおよびアクチュエータ（図２には示されていない）と協調して動作することができる。図２のユーザデバイス２０１は、１つのＶＲコントローラ２１９を示しているが、任意の数の適切なＶＲコントローラがユーザデバイスに含まれることができる。たとえば、一部の実装では、ユーザデバイスは、たとえば、倍率の変更、ピボット、回転など、２点アクセスを使用することがある操作を実行するために、ＩＭＶＲ環境の２つのアクセスポイント、またはユーザデバイスに関連付けられてレンダリングされたオブジェクトのインスタンスの２つのアクセスポイントを操作するために使用されることができる、それぞれが１つのカーソルをガイドする２つのコントローラを含むことができる。コントローラハンドラ２１８はまた、ＩＭＶＲ環境を提示および更新してユーザデバイス２０１のユーザ、ならびにＩＭＶＲレンダラおよび／またはＩＭＶＲシステム内の他のユーザデバイスにユーザによって誘発された変更を伝達するために、ユーザ状態機械２１５、ユーザ状態アップデータ２１７、および／またはユーザ固有のＶＲレンダラ２１６などのプロセッサ２１１の他の構成要素と協調して動作するように構成されることができる。
【００３４】
プロセッサ２１１は、ユーザによる開始時に、ユーザが経験したＩＭＶＲ環境の少なくとも一部を記録するように構成されたＶＲレコーダ２２１を含むことができる。 そのような記録は、後で再生するために、例えば、ユーザ計算デバイス２１１のメモリ２１２に保存することができる。
【００３５】
ユーザ計算デバイス２１０のメモリ２１２は、不揮発性および揮発性メモリ、例えば、ランダムアクセスメモリ（ＲＡＭ）、ビデオＲＡＭ（ＶＲＡＭ）、メモリバッファ、ハードドライブ、読み取り専用メモリ（ＲＯＭ）、消去可能なプログラム可能な読み取り専用メモリ（ＥＰＲＯＭ）などを含むことができる。いくつかの実施形態では、不揮発性メモリをプロセッサに関連付けることができ、揮発性メモリをプロセッサに関連付けることができる。いくつかの実施形態では、異なるプロセッサ（例えば、第１のプロセッサ（ＣＰＵ）および第２のプロセッサ（ＧＰＵ））またはプロセッサの一部を、それぞれ、不揮発性メモリおよび揮発性メモリに関連付けることができる。メモリ２１２は、例えば、プロセッサ２１１に１つまたは複数のプロセス、機能など（例えば、データレシーバ２１０、ユーザ状態機械２１５、ユーザ固有のＶＲレンダラ２１、ユーザ状態アップデータ２１７、コントローラハンドラ２１８および／またはＶＲレコーダ２２１）を実行させる命令を含むことができる１つまたは複数のソフトウェアモジュールおよび／またはコードを格納することができる。いくつかの実装形態では、メモリ２１２は、ＩＭＶＲレンダラ（例えば、図１Ａのシステム１００のＩＭＶＲレンダラ１０５）、ＶＲコントローラ２１９、および／またはＶＲディスプレイ２２０との間で転送されたデータを受信および格納するように構成されることができる。いくつかの実装形態では、メモリ２１２は、ピアツーピア方式において１つまたは複数のユーザデバイス（例えば、図１Ｂのシステム１００'のユーザデバイス１０１'〜１０３'）との間で、ＶＲコントローラ２１９、および／またはＶＲディスプレイ２２０に加えて、および／またはＶＲディスプレイ２２０との間で直接転送されたデータを受信および格納するように構成されることができる。いくつかの実装形態では、メモリ２１２は、プロセッサ２１１に動作可能に結合することができるポータブルメモリ（例えば、フラッシュドライブ、ポータブルハードディスクなど）であり得る。場合によっては、メモリは、ユーザ計算デバイス２１０と遠隔操作可能に結合されることができる。例えば、リモートデータベースサーバは、ユーザ計算デバイス２１０に動作可能に結合されることができる。
【００３６】
コミュニケータ２１３は、プロセッサ２１１およびメモリ２１２に動作可能に結合されたハードウェアデバイス、および／またはプロセッサ２１１によって実行されるメモリ２１２に格納されたソフトウェアであり得る。コミュニケータ２１３は、例えば、ネットワークインターフェースカード（ＮＩＣ）、Ｗｉ−Ｆｉ（登録商標）モジュール、ブルートゥース（登録商標）モジュール、および／または他の任意の適切な有線および／または無線通信デバイスであり得る。さらに、コミュニケータは、スイッチ、ルータ、ハブ、および／または他の任意のネットワークデバイスを含むことができる。コミュニケータ２１３は、ユーザ計算デバイス２１０を通信ネットワーク（図１に示される通信ネットワーク１０６など）に接続するように構成されることができる。場合によっては、コミュニケータ２１３は、例えば、インターネット、イントラネット、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、マイクロ波アクセスネットワーク（ＷｉＭＡＸ（登録商標））に関するワールドワイドな相互運用性（worldwide interoperability）、光ファイバ（または光ファイバ）ベースのネットワーク、ブルートゥース（登録商標）ネットワーク、仮想ネットワーク、および／またはそれらの任意の組み合わせなどの通信ネットワークに接続するように構成されることができる。
【００３７】
場合によっては、コミュニケータ２１３は、通信ネットワーク（例えば、図１のＩＭＶＲシステム１００内の通信ネットワーク１０６）を介したファイルおよび／またはファイルのセットの受信および／または送信を容易にすることができる。場合によっては、受信したファイルは、本明細書でさらに詳細に説明するように、プロセッサ２１１によって処理され、および／またはメモリ２１２に格納され得る。
【００３８】
図１Ａに戻ると、ＩＭＶＲシステム１００に接続されているユーザデバイス１０１〜１０３は、ＩＭＶＲレンダラと通信するように構成されることができる。 図３は、ＩＭＶＲシステムの一部であるＩＭＶＲレンダラ３０５の概略図である。ＩＭＶＲレンダラ３０５は、図１に示されるシステム１００のレンダラ１０５と構造的および機能的に類似することができる。ＩＭＶＲレンダラ３０５は、サーバプロセッサ３５１、サーバメモリ３５２、およびサーバコミュニケータ３５３を含む。前述のように、いくつかの実施形態では、ＩＭＶＲシステムは、ＩＭＶＲレンダラ（例えば、図１ＢのＩＭＶＲシステム１００'）なしでピアツーピア方式において動作するように構成されることができる。その場合、構成要素（例えば、サーバプロセッサ３５１、サーバメモリ３５２、およびサーバコミュニケータ３５３）およびＩＭＶＲレンダラ３０５を参照して以下に説明する構成要素に関連する動作は、分散方式において、ユーザデバイス（例えば、図１Ｂのユーザデバイス１０１'〜１０３'）内の１つまたは複数の構成要素によって実行されることができる。
【００３９】
いくつかの実施形態では、ＩＭＶＲ環境（図１Ａの集中制御されたＩＭＶＲシステム１００と図１ＢのピアツーピアＩＭＶＲシステム１００'との間のハイブリッド）は、それが１つ又は複数の機能および／または動作に使用されるサーバを含む一方で、他の動作が互いに接続されたユーザデバイスによって分散された方法で他の動作が実行されるように構成され得る。例えば、いくつかのそのような実施形態では、ＩＭＶＲセッションの初期化中にデータパッケージを保存してユーザデバイスに提供するために使用されるが、ＩＭＶＲセッション中のデータ転送または通信において限定的または全く役割を果たさないサーバが含まれ得る。別の例として、いくつかの実施形態では、ＩＭＶＲシステムは、ＩＭＶＲセッションに関連する情報を保存に使用される（例えば、ＩＭＶＲセッションの記録を保存する）サーバを含むことができるが、ＩＭＶＲセッションに関連する他の機能を実行しない。
【００４０】
サーバプロセッサ３５１は、一連の命令またはコードをラン（run）および／または実行するように構成されたハードウェアベースの集積回路（ＩＣ）または任意の他の適切な処理デバイスであり得る。例えば、サーバプロセッサ３５１は、汎用プロセッサ、中央処理装置（ＣＰＵ）、加速処理装置（ＡＰＵ）、出願固有の集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブルロジックアレイ（ＰＬＡ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）、プログラマブルロジックコントローラ（ＰＬＣ）などであり得る。サーバプロセッサ３５１は、システムバス（例えば、アドレスバス、データバス、および／または制御バス）を介してサーバメモリ３５２に動作可能に結合されている。サーバプロセッサ３５１は、さらに詳細に説明されるように、適切な接続またはデバイスを介してサーバコミュニケータ３５３と動作可能に結合される。
【００４１】
図２のユーザデバイス２０１のユーザ計算デバイス２１０内のコミュニケータ２１３と同様に、サーバコミュニケータ３５３は、サーバプロセッサ３５１およびサーバメモリ３５２に動作可能に結合されたハードウェアデバイスおよび／またはサーバプロセッサ３５１によって実行されるサーバメモリ３５２に格納されたソフトウェアであり得る。サーバコミュニケータ３５３は、例えば、ネットワークインターフェースカード（ＮＩＣ）、Ｗｉ−Ｆｉ（登録商標）モジュール、ブルートゥース（登録商標）モジュール、および／または他の任意の適切な有線および／または無線通信デバイスであり得る。さらに、コミュニケータ３５３は、スイッチ、ルータ、ハブ、および／または他の任意のネットワークデバイスを含むことができる。サーバコミュニケータ３５３は、ＩＭＶＲレンダラ３０５を通信ネットワーク（図１に示される通信ネットワーク１０６など）に接続するように構成されることができる。場合によっては、サーバコミュニケータ３５３は、例えば、インターネット、イントラネット、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、マイクロ波アクセスネットワーク（ＷｉＭＡＸ（登録商標））に関するワールドワイドな相互運用性、光ファイバ（または光ファイバ）ベースのネットワーク、ブルートゥース（登録商標）ネットワーク、仮想ネットワーク、および／またはそれらの任意の組み合わせなどの通信ネットワークに接続するように構成されることができる。
【００４２】
サーバメモリ３５２は、ランダムアクセスメモリ（ＲＡＭ）、メモリバッファ、ハードドライブ、読み取り専用メモリ（ＲＯＭ）、消去可能なプログラム可能な読み取り専用メモリ（ＥＰＲＯＭ）などであり得る。サーバメモリ３５２は、例えば、サーバプロセッサ３５１に１つまたは複数のプロセス、機能などを実行させる命令を含むことができる１つまたは複数のソフトウェアモジュールおよび／またはコードを格納することができる。いくつかの実装形態では、サーバメモリ３５２は、サーバプロセッサ３５１に動作可能に結合することができるポータブルメモリ（例えば、フラッシュドライブ、ポータブルハードディスクなど）であり得る。場合によっては、サーバメモリはサーバと遠隔に動作可能に結合されることができる。例えば、サーバメモリは、サーバとその構成要素に動作可能に結合されたリモートデータベースサーバであり得る。
【００４３】
サーバプロセッサ３５２は、本明細書でさらに詳細に説明するように、外部ソースからの受信および格納データを収集すること、ＩＭＶＲ環境を生成するためのデータを使用すること、（図１のＩＭＶＲシステム１００と同様の）ＩＭＶＲシステムを介して接続されたユーザデバイスからのデータを収集すること、１人または複数のオンラインユーザなどに有するＩＭＶＲ環境を維持および更新することを含む、いくつかの機能を実行するように構成されることができる。サーバプロセッサ３５１は、所定の機能を実行するように構成された１つまたは複数のユニットを含むことができ、１つまたは複数のユニットは、ハードウェアベースのユニット（例えば、集積回路（ＩＣ）または一連の命令若しくはコードをランおよび／または実行するように構成された任意の他の適切な処理デバイス）または一連の命令若しくはコード、あるいはその２つの組み合わせの実行によって生成された仮想マシンユニットである。例えば、図３に示されるように、サーバプロセッサ３５１は、イニシャライザ３５４、サーバ状態機械３５５、レンダラ３５６、データトランスミッタ３５７、データコレクタ３５８、ユーザ状態マッパー３５９、およびサーバ状態アップデータ３６０を含むことができる。イニシャライザ３５４、サーバ状態機械３５５、レンダラ３５６、データトランスミッタ３５７、データコレクタ３５８、ユーザ状態マッパー３５９、およびサーバ状態アップデータ３６０を含む各構成要素は、サーバメモリ３５２に格納され、サーバプロセッサ３５１によって実行されるソフトウェアであり得る（例えば、サーバプロセッサ３５１にイニシャライザ３５４、サーバ状態機械３５５、レンダラ３５６、データトランスミッタ３５７、データコレクタ３５８、ユーザ状態マッパー３５９、および／またはサーバ状態アップデータ３６０を実行させるためのコード）。構成要素を実行するためのコードは、サーバメモリ３５２および／または、例えば、ＡＳＩＣ、ＦＰＧＡ、ＣＰＬＤ、ＰＬＡ、ＰＬＣなどのようなハードウェアベースのデバイスに格納されることができる。
【００４４】
イニシャライザ３５４は、１人または複数のユーザが使用できるＩＭＶＲ環境を生成および初期化するように構成されることができる。いくつかの実装形態では、イニシャライザ３５４は、ＩＭＶＲシステム（例えば、図１のＩＭＶＲシステム１００）と通信するために使用できるユーザインターフェース（ＵＩ）を生成するように、および／またはＩＭＶＲ環境を生成するように構成されることができる。図９Ａおよび９Ｂは、ＵＩ（例えば、モジュールＵＩ）を生成するためにプロセッサ（例えば、サーバプロセッサ３５１）によって実行され得るコードの例示的な部分を示す。いくつかの実装形態では、イニシャライザは、外部ソースから（例えば、サーバコミュニケータ３５３を介して）適切なフォーマットでデータを閲覧およびロードし、データを使用してＩＭＶＲ環境を生成するように構成されることができる。例えば、場合によっては、イニシャライザ３５１は、既知のデータフォーマットの医療画像（例えば、医療におけるデジタル画像および通信（ＤＩＣＯＭ）画像またはＲＡＷ画像）を受信し、画像に基づいてＩＭＶＲ環境を初期化することができる。一例として、画像は、対象の臓器系（例えば、神経系、循環器系、または呼吸器系）に関する情報を含むことができ、これを使用して、内部構造を高倍率、解像度（definition）、及び特異性（specificity）で表示および／またはプローブできるＩＭＶＲ環境を生成することができる。イニシャライザ３５４は、ＩＭＶＲ環境の生成に関連する様々な変数およびパラメータを定義することができる。いくつかの実装形態では、イニシャライザ３５４は、初期ＩＭＶＲ環境の様々な側面を生成する任意の数の関数および／またはサブ関数を呼び出すことができる。いくつかの実装形態では、イニシャライザ３５４は、一連のプロパティに基づいてＩＭＶＲ環境を定めるサーバ状態機械３５５を構築するように構成されることができる。
【００４５】
サーバ状態機械３５５は、所定の安定状態のセットのうちの１つにあり得るサーバプロセッサ３５１のデバイスまたはユニットであり得る。状態機械３５５は、プロパティのセットによって定義されることができ、各プロパティは、パラメータ値のセットの１つを想定することができる。サーバ状態機械３５５の状態は、サーバ状態機械３５５のプロパティのセットのパラメータ値によって定義されることができる。サーバ状態機械３５５のプロパティおよびパラメータ値は、イニシャライザ３５４またはサーバ状態アップデータ３６０などのサーバプロセッサ３５１の他の構成要素またはユニットによって設定および／または変更されることができる。例えば、イニシャライザ３５４は、サーバ状態機械３５５の各プロパティの初期パラメータ値を設定し、サーバ状態機械３５５を初期化することができる。
【００４６】
サーバプロセッサ３５１は、サーバ状態機械３５５の状態などの情報を使用し、１人または複数のユーザの参加およびやり取りのためにＩＭＶＲ環境をレンダリングするように構成されたレンダラ３５６を含むことができる。次に、レンダラ３５６は、ＩＭＶＲ環境のレンダリングの一部を実行する１つまたは複数の関数またはサブ関数を呼び出すか、または実行させることができる。例えば、レンダラ３５６は、環境内の３次元形状でオブジェクトのボリュームを充填するボリューマイザ（本明細書では「ボリュームレンダラ」とも呼ばれる）、および／またはＩＭＶＲ環境に含まれるオブジェクトの表面の外観の様々な態様を制御する機能（例えば、テクスチャライザ、シェーダ、ブレンダなど）を含む他の機能を呼び出すことができる。その例示的な実施形態は、本明細書でさらに詳細に説明される。
【００４７】
いくつかの実装形態では、レンダラ３５６は、閾値基準、プリセット係数、またはルックアップテーブル（ＬＵＴ）の形で所定の値を生成および／または使用して、ＩＭＶＲ環境内のオブジェクトのレンダリングを導くことができる。場合によっては、サーバ状態機械３５５の１つまたは複数の所定の値およびパラメータ値は、１人または複数のユーザが設定または変更するためにアクセス可能であり得る。いくつかの実装形態では、レンダラ３５６は、ＩＭＶＲ環境をレンダリングするために使用される変数のサブセットの値を設定するために、ユーザから情報を受け取ることができる。図１２は、ユーザ入力に基づいてレンダラ３５６によって設定されるように構成されることができるいくつかの例示的な変数を例示する。場合によっては、ＩＭＶＲレンダラ３０５は、１つまたは複数のテスト実装で動作されることができ、その結果、レンダラ３５６は、サーバ状態機械３５５の１つまたは複数の所定の値および／またはパラメータ値の様々な値を試すことができ、後の実装でＩＭＶＲ環境を初期化するために格納及び使用される。
【００４８】
サーバプロセッサ３５１は、ＩＭＶＲレンダラ３０５に接続された任意の数のユーザデバイスとの間で送受信するように構成されたデータトランスミッタ３５７およびデータコレクタ３５８を含むことができる。データトランスミッタ３５７は、例えば、レンダリングされたＩＭＶＲ環境、サーバ状態機械の状態、環境のプロパティなどに関する情報を送信することができる。データコレクタ３５８は、接続されたユーザデバイスからデータを受信または収集するように構成されることができ、データは、様々なユーザ状態機械（例えば、ユーザデバイス２０１に関して記述されるユーザ状態機械２１５）の状態、ユーザによる動きまたはジェスチャ、ユーザ間の通信などの情報を含む。
【００４９】
サーバプロセッサ３５１は、ユーザデバイスから受信した情報を取り込み（assimilate）、情報をＩＭＶＲ環境および／またはサーバ状態機械３５５の潜在的な変化にマッピングするユーザ状態マッパー３５９を含むことができる。次に、サーバ状態アップデータ３６０は、ユーザデバイスから受信され、ユーザ状態マッパー３５９によってマッピングされた情報を使用して、サーバ状態機械３５５を更新するように構成されることができる。例えば、特定のユーザデバイスの観点からのＩＭＶＲ環境への変更（すなわち、そのユーザデバイスを使用するユーザのアクションによって引き起こされる変更）は、データコレクタ３５８によって受信され得る。ユーザのアクションによって引き起こされた変更は、ユーザ状態マッパー３５９によって、ユーザの視点からＩＭＶＲ環境の一般的な座標に変換されることができる。次に、サーバ状態アップデータ３６０は、この情報を使用して、サーバ状態機械３５５を更新することができる。
【００５０】
場合によっては、データコレクタ３５８およびデータトランスミッタ３５７は、ＩＭＶＲレンダラ３０５に接続された２つのユーザデバイス間で同期されたＩＭＶＲ体験を確立するのを助けることができる。いくつかの実装形態では、ユーザデバイス自体が、例えば、サーバ状態機械およびユーザ状態機械に関連するデータをユーザデバイス間で通信することによって、同期されたＩＭＶＲ体験の確立を仲介することができる。
【００５１】
ユーザデバイスの説明は、プロセッサおよびメモリを含むユーザ計算デバイスを含むが、いくつかの実施形態では、ユーザデバイスは、上述の機能を実行するために使用されることができる複数のメモリおよび複数のプロセッサを含むように構成されることができる。ユーザデバイスは、揮発性メモリ（たとえば、グラフィックスプロセッシングユニット（ＧＰＵ）に関連付けられたメモリ、ビデオランダムアクセスメモリ（ＶＲＡＭ））と、不揮発性メモリ（たとえば、中央処理装置（ＣＰＵ）に関連付けられたメモリ、ＲＡＭ）と、および不揮発性メモリに動作可能に結合された第１のプロセッサ（例えば、ＣＰＵ）と、揮発性メモリに動作可能に結合された第２のプロセッサ（例えば、ＧＰＵ）と、を含むことができる。プロセッサの構成要素によって実行されるものとして上記の機能の任意の組み合わせは、第１のプロセッサまたは第２のプロセッサの構成要素によって実行されることができる。例えば、ユーザ計算デバイス２１０に関連して説明される機能は、第１のプロセッサと第２のプロセッサとの間で分割することができ、データ受信機、コントローラハンドラ、および／またはＶＲレコーダは、第１のプロセッサに関連付けられることができ、ユーザ状態機械、ユーザ固有のＶＲレンダラ、および／またはユーザ状態アップデータを第２のプロセッサに関連付けられることができる。
【００５２】
ＩＭＶＲレンダラ（ＩＭＶＲレンダラ３０５）の説明は、サーバプロセッサおよびサーバメモリを含むが、いくつかの実施形態では、サーバメモリは、揮発性メモリ（例えば、グラフィックスプロセッシングユニット（ＧＰＵ）に関連するメモリ、ビデオランダムアクセスメモリ（ＶＲＡＭ））及び不揮発性メモリ（たとえば、中央処理装置（ＣＰＵ）に関連付けられたメモリ、ＲＡＭ）を含むことができる。そして、ＩＭＶＲレンダラに関連すると説明されている機能は、第１のプロセッサと第２のプロセッサとの間で分割することができ、第１のプロセッサは、不揮発性メモリに動作可能に結合され（例えば、ＣＰＵ）、第２のプロセッサは、揮発性メモリに動作可能に結合される（例えば、ＧＰＵ）。例えば、いくつかの実施形態では、イニシャライザ、データ送信機、および／またはデータコレクタは、第１のプロセッサに関連付けられた構成要素であることができ、サーバ状態機械、レンダラ、ユーザ状態マッパー、および／またはサーバ状態アップデータは、第２のプロセッサに関連付けられることができる。
【００５３】
図４は、ＩＭＶＲ環境を生成および維持するために、ＩＭＶＲレンダラ（ＩＭＶＲレンダラ３０５など）によって実行される例示的な方法４００を説明するフローチャートである。前述のように、いくつかの実施形態では、ＩＭＶＲシステム（例えば、図１ＢのＩＭＶＲシステム１００’）は、ＩＭＶＲレンダラなしで、ユーザデバイスがピアツーピア方式で互いに接続されるように構成されることができる。そのような実施形態では、ＩＭＶＲレンダラによって実行されるものとして本明細書に記載される方法および／または機能（例えば、図４の方法４００）は、ユーザデバイス（例えば、ＩＭＶＲシステム１００'のユーザデバイス１０１'−１０３'）の１つ又は複数の構成要素によって実行または実施されることができる。使用中、ＩＭＶＲレンダラは、４７１で、ＩＭＶＲ環境またはＩＭＶＲ体験の生成に使用できる画像またはその他の情報に関連するデータを取得することができる。場合によっては、データは、診断、教育、研究、トレーニングなどの目的で使用できる双方向なマルチユーザＶＲ環境を生成するために使用されることができる、医療画像などの画像の３次元スタックを含むことができる。
【００５４】
４７２で、取得したデータはＩＭＶＲ環境に適したベースにロードされることができる。たとえば、データは、テクスチャアセットと呼ばれる既存または事前に決定されたテクスチャベースにロードされることができる。ロードされた３次元テクスチャアセットは、一時メモリまたはランダムアクセスメモリ（ＲＡＭ）からグラフィックプロセッサメモリ（ＧＰＵメモリ）に転送されることができる。
【００５５】
４７３で、ＩＭＶＲサーバは、仮想体験のフレームをレンダリングすることができる。４７４で、ＩＭＶＲレンダラは、オブジェクトの前面および背面のデプス情報を使用して、環境内のオブジェクトをピクセル単位でレンダリングする。４７５で、ＩＭＶＲレンダラは、オブジェクトの距離に基づいて、入力されたオブジェクトに対してサンプリングおよびブレンディングプロシージャを実行する。たとえば、サンプリングプロシージャに、ユーザの計算された空間位置に基づいて、３次元データセット内の空間内のポイントのセットをクエリして、空間内のそのポイント内のオブジェクトの強度値に関連するサンプリング情報を受信することを含む。ＩＭＶＲレンダラは、サンプリング情報に基づいて、ユーザの視点からの空間内のポイントのセットの投影表現を介して３次元オブジェクトの投影を提示することができる。
【００５６】
４７６で、ＩＭＶＲレンダラは、オブジェクトの状態に関する情報を受信し（例えば、サーバ状態機械の状態を介して）、オブジェクトの相対サイズ、オクルージョンなどの他の関連データに基づいてオブジェクトの位置を評価および／または検証する。
【００５７】
４７７で、ＩＭＶＲレンダラは、サンプルに閾値条件を適用し、閾値条件を満たさないサンプルを破棄する。たとえば、ＩＭＶＲレンダラは、データセットの表示可能範囲を定める閾値設定に関連付けられた入力を受信することができ、閾値を超えるサンプルのみが表示可能になる。一部の実装では、ＩＭＶＲレンダラは、閾値スライダー制御ツールを使用して閾値設定を受け取ることができる。閾値基準および所定の条件に対して評価されたサンプルを使用して、サーバ状態機械が更新されることができる。評価ステップは、ステップ４７９によって示されるように、ピクセル上、距離によってリストされたオブジェクト上、および／またはレンダリングされたＩＭＶＲ環境のフレーム上で繰り返しかつ反復的に実行されることができる。たとえば、レンダラは２００ミリ秒ごとに更新されるピクセルで動作できる。別の例として、レンダラは６０フレーム／秒（ｆｐｓ）で更新されるフレームで動作することができる。
【００５８】
４７８で、ＩＭＶＲレンダラは、ユーザデバイスから検出された状態の変化に基づいてレンダリングされた環境を更新する。ＩＭＶＲレンダラは、接続されている１つ又は複数のユーザデバイスからユーザ状態の変更に関連する情報を受信することができ、受信した情報に基づいて、ＩＭＶＲレンダラはサーバ状態機械を更新することができる。４７９で、ＩＭＶＲレンダラは、異なる距離にある各オブジェクト、各ピクセル、および各フレームについて、それぞれ４７５から４７７、４７４から４７７、および４７３から４７７のステップを反復サイクルで繰り返す。サーバ状態機械は、４７９に示すように、各ピクセル、場所または距離によってリストされた各オブジェクト、および／またはレンダリングされた環境の各フレームによってレンダリングされた環境を評価した後、反復プロセスでのユーザ状態の変化からの情報で更新されることができる。
【００５９】
４８０で、ＩＭＶＲレンダラは、レンダリングされた環境における状態変化をユーザデバイスに伝達する。ＩＭＶＲレンダラは、たとえばサーバ状態機械の状態を介して、レンダリングされた環境の更新された状態である１つ又は複数のユーザデバイスと通信することができる。ＩＭＶＲ環境またはＩＭＶＲ環境の一部をレンダリングし、状態変化をユーザデバイス（４７３〜４８０）に伝達するステップは、ユーザの動きおよび／またはアクションが監視されるときに反復的に繰り返されることができる。１人または複数の接続されているユーザによるユーザ体験が完了すると、４８１で、レンダリングされたマルチユーザ環境を終了することができる。
【００６０】
図５は、一実施形態に係る、本明細書に記載のＩＭＶＲシステムを使用してボリューム測定ＩＭＶＲ環境をレンダリングする例示的な方法を説明するフローチャート５００の図である。場合によっては、ボリュームレンダリングは、ＩＭＶＲシステム内のＩＭＶＲレンダラ（例えば、レンダラ３０５）によって実行されることができる。前述のように、いくつかの実施形態では、ＩＭＶＲシステム（例えば、図１ＢのＩＭＶＲシステム１００’）は、ＩＭＶＲレンダラなしで、ユーザデバイスがピアツーピア方式で互いに接続されるように構成されることができる。そのような実施形態では、ＩＭＶＲレンダラによって実行されるものとして本明細書に記載される方法および／または機能（例えば、図５の方法５００）は、ユーザデバイス（例えば、ＩＭＶＲシステム１００'のユーザデバイス１０１'−１０３'）の１つまたは複数の構成要素によって実行または実施され得る。場合によっては、ボリュームレンダリングは、ユーザデバイスに関連付けられたレンダラ（例えば、ユーザデバイス２０１のユーザ固有のレンダラ２１６）によって実行されることができる。たとえば、レンダラは、一連のＤＩＣＯＭファイル、画像ファイル、ＲＡＷデータファイル、またはその他の適切なデータ系列からデータを読み取り、そのデータを揮発性メモリ（ＧＰＵメモリなど）またはユーザデバイスにロードされることができる。
【００６１】
レンダラは、レンダリングされるボリュームオブジェクトに関連付けられ得るプロパティに関連付けられた値のセットを取得することができる。いくつかの例示的なプロパティは、閾値を使用して設定された視認性、アルファ係数を使用して設定された透明度、オブジェクトの状態、ユーザの視点から見たオブジェクトのデプス（たとえば、ユーザに対するオブジェクトの最前面を表す前面のデプス、およびユーザからオブジェクトの最も遠いデプスを表す背面のデプス）を含む。場合によっては、プロパティに関連付けられた１つ又は複数の値は、ユーザによって提供されることができる。
【００６２】
ＩＭＶＲレンダラは、３次元データの１つ又は複数のチャネルによって提供される空間内のポイントをサンプリングすることができる。サンプルは、たとえば、３つの色分けされたデータチャネル（赤（Ｒ）、緑（Ｇ）、青（Ｂ））に関連付けられた強度値、および強度データに対応する透明度チャネル（Ａ）を含むＲＧＢＡサンプルであることができる。ＩＭＶＲレンダラは、サンプリングされたポイントのデプスとレンダリングされるオブジェクトとの関係（たとえば、前面のデプスと背面のデプスに対するサンプリングされたポイントのデプス）を評価し、ユーザからの視線内の閉塞オブジェクト（occlusive object）を評価することができる。ＩＭＶＲレンダラは、データセットの表示可能範囲を設定するように構成された閾値プロパティに関連付けられた入力を受信することができ、閾値を超えるサンプルのみが表示可能になる。一部の実装では、ＩＭＶＲレンダラは、閾値スライダーコントロールを使用して閾値設定を受信し、サンプリングされた値を視認性を示す閾値プロパティ値と比較することができる。サンプル値が閾値よりも大きい場合、レンダラは、サンプル値を、ユーザが事前に決定したプロパティ（オブジェクトに関連付けられている色及び透明度のプロパティなど）に基づいて生成された１つ又は複数のルックアップテーブル（チャネル毎に１つのＬＵＴなど）にマッピングすることができ、レンダリングされるボリュームオブジェクトの一部のインスタンスとしてマップされた値を提示することができる。ＩＭＶＲレンダラは、返されたマップ値をピクセル毎に表示し、ボリュームオブジェクトをフレーム毎にレンダリングすることができる。ＩＭＶＲレンダラは、ユーザからのオブジェクトの距離に応じて、距離に依存する方法でサンプリングとレンダリングのこのプロセスを繰り返すことができる。一部の実装では、ＩＭＶＲレンダラは、ＲＧＢＡサンプルの値を、以前にピクセルに対して行われた距離反復（distance iteration）からの他のＲＧＢＡサンプルの値とブレンド（blend）することができる。
【００６３】
図６は、ユーザによるオブジェクト操作の例示的な方法６００を説明するフローチャートである。方法６００は、一実施形態に係る、ユーザによって使用されるＶＲコントローラ、ユーザデバイスに関連付けられたコントローラハンドラ（例えば、図２のユーザデバイス２０１のコントローラハンドラ２１８）、ユーザデバイスに関連付けられたレンダラ（例えば、ユーザ固有のレンダラ２１６）および／またはＩＭＶＲシステムのＩＭＶＲレンダラ（例えば、ＩＭＶＲレンダラ３０５）のプロパティを監視することを介して、ユーザのアクション、動き、および／または位置を記録、評価および／または格納することを含むことができる。例えば、ユーザデバイスのコントローラハンドラ（例えば、図２に示されるユーザデバイス２０１のコントローラハンドラ２１８）は、フローチャート６００に記載されている１つまたは複数の機能を実行することができる。前述のように、いくつかの実施形態では、ＩＭＶＲシステム（例えば、図１ＢのＩＭＶＲシステム１００’）は、ＩＭＶＲレンダラなしで、ユーザデバイスがピアツーピア方式で互いに接続されるように構成されることができる。そのような実施形態では、ＩＭＶＲレンダラによって実行されるものとして本明細書に記載される方法および／または機能（例えば、図６の方法６００）は、ユーザデバイス（例えば、ＩＭＶＲシステム１００'のユーザデバイス１０１'−１０３'）の１つまたは複数の構成要素によって実行または実施され得る。例えば、フローチャート６００に示されるように、ユーザデバイスは、１つまたは複数のコントローラを含むことができ、各コントローラは、押された状態または押されていない状態にある機能を備えたボタンを含む。
【００６４】
ユーザデバイスおよび／またはレンダラは、コントローラを介してユーザ入力を受信し、各コントローラのボタン押下状態を判定することができる。単一のコントローラの場合、ボタンを押すとレンダラが呼び出され、コントローラの位置、回転、スケールなど、ＩＭＶＲ環境内のユーザの現在の姿勢を判定することができる。これらの値は、「現在の姿勢」として格納されることができる。レンダラは、中心点に対する姿勢の変化を判定し、前の姿勢と現在の姿勢との差を計算することができる。レンダラは、姿勢変更の決定に基づいて、操作されたオブジェクトの姿勢を変更することができる。このプロセスは、現在の姿勢が前の姿勢としてタグ付けされた状態で繰り返し実行されることでき、次の反復の現在の姿勢と比較するために使用されることができる。
【００６５】
２つのコントローラの場合、レンダラはＩＭＶＲ環境を参照して各コントローラの姿勢を判定し、コントローラ間の中心点とコントローラ間の距離を計算することができる。レンダラは、中心点と距離を使用して中心点の姿勢を計算できる。中心点の姿勢は、上記のように姿勢の変化を判定するために使用されることができる。レンダラは、姿勢変更の決定に基づいて、操作されたオブジェクトの姿勢を変更することができる。このプロセスは、シングルコントローラ方式を参照して上記のように繰り返し実行されることができる。
【００６６】
いくつかの実施形態では、ＩＭＶＲシステムは、１人または複数のユーザによるＩＭＶＲ体験を記録および／または再生することができるように構成されることができる。図７は、ＩＭＶＲ体験のユーザ開始記録を実行するために、ＩＭＶＲシステム（例えば、ユーザデバイス（例えば、ユーザデバイス２０１）またはＩＭＶＲレンダラ（例えば、レンダラ３０５））によって実行される例示的な方法を説明するフローチャートを示す。いくつかの実施形態では、ＩＭＶＲシステムは、記録が効率的に行われることができ、生成された記録ファイルが記憶および／または転送を容易にするために縮小されたサイズに構成され得るように構成されることができる。
【００６７】
いくつかの実装形態では、例えば、ユーザは、ＩＭＶＲ体験の記録を開始することができ、ユーザデバイス（例えば、ユーザデバイス２０１）またはＩＭＶＲレンダラ（例えば、ＩＭＶＲレンダラ３０５）は、そのＩＭＶＲ体験に関連付けられたＩＭＶＲ環境で利用可能な識別された記録可能なオブジェクトのリストを生成することができる。オブジェクト毎に、レンダラはタイマーを開始することができる。レンダラは、一連の時点の各時点について、オブジェクトの状態とその時点でのオブジェクトに関連付けられたタイムスタンプとを取得し、その値を記録リストに書き込むことができる。レンダラは、記録の定期的な間隔で、プレーヤーの状態またはユーザの状態を、その時点でのプレーヤーに関連付けられたタイムスタンプとともに取得できる。レンダラは、特定のイベントでオブジェクトの状態を取得するように構成することもできる（たとえば、トリガーの押下や保持後のトリガーの解放などのトリガーイベントによってトリガーされた場合など）。図１３は、一実施形態に係る、ＩＭＶＲ環境を生成し、ＩＭＶＲシステムによってＩＭＶＲ環境に関連する媒体を記録する例示的な方法を説明する。一部の実装では、ＩＭＶＲレンダラまたはユーザデバイスは、イベントベースの方法で記録を実行することができる。図４４Ｂは、ＩＭＶＲ体験のイベントベースの処理の例示的な方法を説明するフローチャートである。
【００６８】
場合によっては、ＩＭＶＲシステムの一部は、記録されたＩＭＶＲ体験を再生できるようにするために構成されることができる。図８は、一実施形態に係る、ＩＭＶＲシステムを使用して記録されたＩＭＶＲ体験を再生する例示的な方法８００を示している。例えば、ユーザデバイスは、ＩＭＶＲ体験の記録を含むデータセットを受信することができ、方法８００に示されるように、ユーザは再生を起動する。データセットは、オブジェクト、アクション、および／またはイベントを含む記録リストを含むことができる。再生の開始時に、記録リストは、ユーザデバイス（例えば、ユーザデバイス２０１）にロードされる。ユーザデバイスは、再生を開始した時点で時刻を開始し、タイマーが記録されたタイムスタンプに達した時点で、ユーザデバイスは、記録され、記録リストに提示されたタイプのアクションを実行することができる。ユーザデバイスは、記録リスト内のイベントおよび／またはアクションの実行を反復的に実行することができる。たとえば、記録に人体の循環系のインスタンスを提示し、修正された倍率で心臓を分離するインストラクターが含まれる場合、再生は、インストラクターによるオブジェクト（心臓など）の任意の操作を含むインストラクターによって提示されたオブジェクト、イベント、および／またはアクションのそれぞれを提示することで続行することができる。
【００６９】
いくつかの実施形態では、記録および／または再生またはＩＭＶＲ体験は、ＩＭＶＲ体験のＩＭＶＲ環境内の１つまたは複数のオブジェクトがユーザの空間的位置に基づいて視点からユーザにレンダリングされることができるように、記録および／または再生を開始するユーザの空間位置に関連する情報を含むことができる。いくつかの実施形態では、記録および／または再生は、ＩＭＶＲ環境またはＩＭＶＲ体験に関連付けられたイベントに基づいて管理することができる。
【００７０】
図４４Ａは、異なるタイプのイベントの概略図である。図４４Ｂは、ＩＭＶＲシステムのイベントベースの処理を実装するための例示的な方法のフローチャートである。たとえば、ＩＭＶＲシステムは、ローカルマシン及びサーバを含むことができる。ローカルマシンはユーザデバイス（例えばユーザデバイス２０１）にすることができ、サーバはＩＭＶＲレンダラ（例えばＩＭＶＲレンダラ３０５）にすることができる。ユーザデバイスは、イベントの読み取り、イベントの生成、イベントの処理、イベントの記録機能の確認、およびイベントの記録を行うように構成されることができる。ユーザデバイスは、ＩＭＶＲレンダラと通信して、他のユーザデバイスに関連付けられた他のユーザにイベント（ユーザデバイスで読み取られ、生成され、処理され、および／または記録されるイベント）を送信し、他のユーザデバイスからイベントを受信することができる。図４５は、ＩＭＶＲ体験の一部に関連して定義された一連のイベントと、イベント生成およびイベント処理を含む定められたイベントの管理を説明する例示的なフローチャートを示す。例えば、所定の値またはユーザが決定した値ｐの全ての期間で、ＩＭＶＲシステムは、ユーザの姿勢を作成し、他のユーザからのユーザの姿勢とともにその情報を処理して、ＩＭＶＲ環境内およびその期間にわたるユーザオブジェクトの位置および回転を補間することができる。ユーザデバイスは、オブジェクト補間イベントを作成し、それをサーバを介して他のユーザに送信して、期間ｐにわたってオブジェクトのピボット点の周りの位置及び回転を補間することができる。別の例として、ユーザがオブジェクトを取得するか、又はＩＭＶＲ環境内でオブジェクトを解放すると、それに応じてイベントが処理され、他のユーザデバイスに中継される。上記のイベントは、サーバを介して（例えば、ＩＭＶＲレンダラ３０５を介して）他のデバイスに中継されると説明されているが、いくつかの実施形態では、あるユーザデバイスからのイベントは、サーバなしで別のユーザデバイスに中継され得る。
【００７１】
前に説明したように、いくつかの実施形態では、ＩＭＶＲシステム（例えば、図１ＢのＩＭＶＲシステム１００'、またはリアルタイムで使用されるわけではないときにＩＭＶＲシステムに関連付けられたデータを格納するなどの限定された機能のみを実行するように構成されたサーバを含むハイブリッドＩＭＶＲシステム）は、ＩＭＶＲレンダラを使用せずに、ユーザデバイスがピアツーピア方式で相互に接続されるように構成されることができる。そのような実施形態では、ＩＭＶＲレンダラによって実行されるものとして本明細書に記載される方法および／または機能（例えば、図７〜５０に関連するかまたは記載される方法または機能）は、ユーザデバイス（例えば、ＩＭＶＲシステム１００'のユーザデバイス１０１'−１０３'）の１つまたは複数の構成要素によって実行または実施され得る。すなわち、本出願で説明されるいくつかの実施形態および実装は、ＩＭＶＲレンダラによって実行されることが示される機能を含むが、他のいくつかの実施形態では、これらの機能および操作は、ユーザデバイス内の１つまたは複数の構成要素によって（例えば、ユーザ固有のＶＲレンダラ２１６、またはユーザ状態アップデータ２１７、またはユーザデバイス２０１のＶＲレコーダ２２１によって）分散方式で実行され得る。そのような実施形態では、ユーザデバイスで生成および処理されるイベントは、集中型サーバなしでピアツーピア接続を介して、ローカルで処理される他のユーザデバイスに直接送信されることができる。
【００７２】
いくつかの実装形態では、ネットワーク記録は、ＩＭＶＲシステムによって提供されるマルチユーザプラットフォームの低データコストを利用して、リアルタイムマルチユーザ体験に代わる低コストの代替手段を提供するために本明細書で説明するＩＭＶＲシステムで使用されることができる。たとえば、ＩＭＶＲシステムは、インターネットプロトコル（ＩＰ）パケットにおいて典型的にリアルタイムで複数のユーザデバイスに送信され得るデータを保存することにより、第１のユーザが第１の時点で「モジュール」を記録するために使用されることができる。保存されたデータは、将来、第２のユーザデバイスで再生されることができる。再生中、第２のユーザデバイスのユーザは、第１のユーザまたは第１のユーザのＩＭＶＲ環境の「ゴースト」（たとえば、ＩＭＶＲ環境におけるユーザの仮想表現）と同じＩＭＶＲ環境にいるＩＭＶＲ体験と同様のＩＭＶＲ体験を持つことができる。ＩＭＶＲ環境でレンダリングされたオブジェクトのビデオに加えて、音声を再コーディングし、第１のユーザのゴーストと同時に再生することもできる。音声は、再生時にＩＭＶＲシステムが３次元音声ソースを再作成できるように、第１のユーザの空間位置に関連付けることができ、シミュレーションをさらに現実的にする。ユーザは、一時停止、再生、早送り、ジャンプバックのユーザインターフェースを利用できる。
【００７３】
いくつかの実施形態では、前述のように、ＩＭＶＲシステムは、２人以上のユーザがＩＭＶＲ環境の同期された体験を共有できるように構成されることができる。図１０は、複数のユーザ間で同期された体験を達成するために統合されたＩＭＶＲ環境を確立するための例示的な方法を説明するフローチャート１０００を示す。例示的な方法１０００は、共有ＩＭＶＲ環境内の２つの場所を識別およびマーキングする第１のユーザを含む。例えば、第１のマークは、共有ＩＭＶＲ環境の中心を含むことができ、第２のマークは、ユーザに関して固定された空間位置（例えば、共有空間の北東の角の点）を含むことができる。ＩＭＶＲシステムは、共有ＩＭＶＲ環境内のマークされた場所に関連付けられた追跡可能なオブジェクトとオブジェクト状態を生成することができる。オブジェクトとオブジェクトの状態に基づいて、ＩＭＶＲシステムは、共有ＩＭＶＲ環境とＩＭＶＲ環境を共有する複数のユーザのそれぞれに関連付けられた前方ベクトルと中心位置とを計算できるため、各ユーザはＩＭＶＲ環境に関して相対的な位置と向きとを再計算でき、ＩＭＶＲ環境の視点がその場所と一致するように向きを変える。
【００７４】
使用中、本明細書に記載のＩＭＶＲレンダラ（例えば、ＩＭＶＲレンダラ３０５）またはユーザデバイス（例えば、ユーザデバイス２０１）は、３次元ボリュームオブジェクトに関連付けられたデータパッケージを受信し、ユーザの空間情報を含むユーザ入力のセットを受信することができ、データパッケージとユーザ入力に基づいて、ユーザの観点からボリュームオブジェクトのインスタンスをレンダリングする。いくつかの実施形態では、データパッケージは、例えば、３次元オブジェクトのシリアルセクション化またはシリアル画像化を介して取得された空間データ系列または３次元ボリュームデータを含むことができる。場合によっては、データパッケージは、オブジェクトに関連付けられた３次元の点群情報（ＭＥＧデータなど）を含むことができる。データは複数の値のチャネルを含むことができ、各チャネルは強度値の配列に関連付けられる。例えば、場合によっては、データは、オブジェクトの共焦点画像化（confocal imaging）から取得でき、データの複数のチャネルを含み、各チャネルは、フルオロフォア（fluorophore）（例えば、緑色蛍光タンパク質（ＧＦＰ）の画像化から得られたデータを含むチャネル１、および赤色蛍光タンパク質（ＲＦＰ）の画像化から得られたデータを含むチャネル２）を画像化することから得られた強度値に対応する。データパッケージは、各チャネルのルックアップテーブル（ＬＵＴ）と、オブジェクトのレンダリングに使用されるデータセットに関連付けられたサンプル番号とを含むことができる。サンプル番号は、データに関連付けられたサンプルの数であることができる。次に、レンダラ（例えば、ユーザデバイス２０１のユーザ固有のＶＲレンダラ２１６またはＩＭＶＲレンダラ３５６のレンダラ３５６）は、ＩＭＶＲ環境内のユーザ位置を含むユーザ情報、例えば、レンダラおよびユーザデバイス（ＵＤ）の一部に結合されたヘッドマウントディスプレイからの頭の位置および向き、レンダラおよびユーザデバイスＵＤなどの一部に結合されたハンドコントローラからの手の位置を取得することができる。
【００７５】
データパッケージとユーザ情報に基づいて、レンダラはＩＭＶＲ環境で光線をキャスト（cast）する。光線は、ＩＭＶＲ環境でのユーザの位置から発生し、ＩＭＶＲ環境でユーザが向いている方向にパスに沿って移動するようにシミュレートされる。場合によっては、ユーザの位置は、ユーザデバイスに結合されたヘッドマウントディスプレイの位置に基づくことができる。次に、レンダラは、シミュレートされたキャスト光線のパスに沿った強度値の空間データを使用してデータセットをサンプリングする。いくつかの実装形態では、レンダラは、レンダリングされるオブジェクトの前面のデプスおよび背面のデプスに関連付けられた所定の値を使用し、サンプリングのデプスを前面のデプスの前方または背面のデプスのさらに後方に決定することができる。この場合、レンダラはサンプルを破棄し、前面のデプスと背面のデプス内の空間内の領域に到達するまで、繰り返しサンプリングを続けることができる。場合によっては、レンダラは、ニアクリッピングプレーン（near clipping plane）を使用して、ニアクリッピングプレーンよりも近いオブジェクトの部分のレンダリングを回避することができる。サンプルがオブジェクトの表面と交差する光線を示している場合、レンダラは、各光線と交差するオブジェクトの部分の決定に基づいて、ユーザの視点からその部分のインスタンスをレンダリングする。いくつかの実施形態によれば、レンダラは、デプスが増すにつれて距離を増してサンプリングするように構成される。サンプリング距離は、デプスとともに線形または非線形に増加する可能性がある。場合によっては、所定のオブジェクト境界位置を計算することができ、サンプリングは、サンプリングされた位置が境界内にある場合にのみ、この境界位置を使用してレンダリングすることができる。
【００７６】
一部の実装では、レンダラは、スキッププロシージャを実装してフレームレート（つまり、フレームが更新されるレート）を上げて、ユーザ体験の品質を高めることができる。スキッププロシージャを実装するレンダラは、スキップレートに関連付けられたユーザ入力を受け取り、空間内のポイントをサンプリングすることができる。戻り値が対象領域外にあることで示されるヌル値である場合、レンダラは次のサンプルを取得するように命令される。次のサンプルもヌル値であると判断された場合、この判断に基づいて、レンダラは次のｎ個のサンプルをスキップするように命令される。ｎはスキップレートに基づいて決定され、ｎ＋１番目の値をサンプリングする。ｎ＋１番目の値もヌル値である場合、レンダラは２ｎ＋１番目の値で光線に沿ってサンプリングを続行するように命令される。ｎ＋１番目のサンプルの戻り値がヌル値でない場合、レンダラはｎ番目の値に戻って再サンプリングするように命令される。ｍはユーザによって提供されるステップバック入力である。いくつかの実装形態では、ユーザは、レンダリング要件、レンダリングされるオブジェクトの性質、および／またはユーザデバイスのプロセッサ能力に基づいて、ｎおよびｍの値を設定するための入力を提供することができる。
【００７７】
一部の実装では、レンダラは、レンダリングされたＩＭＶＲ環境に関連付けられた詳細レベル（ＬＯＤ）プロパティを使用することができる。ＬＯＤプロパティは、ユーザによって設定されることができる。一部の実装では、レンダラが時間とプロセッサを集中的に使用する可能性のある大きなデータセット内の値をサンプリングしている場合、レンダラは、ＬＯＤプロパティに関連付けられた設定における生データポイントではなく、データセットをビニングすることによって生成された中間データセット内のデータポイントをサンプリングするために使用され得る。たとえば、時間及び／又はプロセッサを集中的に使用する可能性のあるデータポイントの１６×１６×１６マトリックスをサンプリングする代わりに、レンダラはサイズ及び順序が減少する一連の中間データセットを生成し得る。この例では、レンダラは、８×８×８、４×４×４、および２×２×２データセットを含む中間データセットを生成し得る。各低次中間データセットは、データポイントを平均し、すぐ上のデータセットの値をビニング（binning）することによって生成される。レンダラは、適切に低次の中間データセットを使用して、高レベルの詳細が不要な領域をレンダリングする。たとえば、場合によっては、ＩＭＶＲ環境でユーザの位置から離れた場所にあるオブジェクトをレンダリングするとき、バックグラウンドで詳細をレンダリングするとき、またはユーザの焦点内（ユーザの中心窩が追跡されている場合）ではないオブジェクトの詳細をレンダリングするときに、低次のデータセットが使用されることができる。別の例として、サンプルがヌル値として返されることが疑われる場合、低次のデータセットが最初にサンプリングされることができ、戻り値がヌルでない場合、レンダラは、適切なＬＯＤに達するまで、より詳細なレベルに設定される高次の中間データを繰り返しサンプリングするように命令されることができる。場合によっては、レンダラは、あるユーザデバイスで適切なＬＯＤを使用して、レンダリングされたオブジェクトの外観を別のユーザデバイスでレンダリングされたオブジェクトの外観と一致させることができる。たとえば、ディスプレイ解像度が高いユーザデバイスは、低いＬＯＤを使用して、ディスプレイ解像度が低いユーザデバイスと一致し得る。
【００７８】
一部の実装では、高ＬＯＤの高次データセットを使用してさらに深い距離でサンプリングすると、ＩＭＶＲ環境のレンダリングでノイズを発生する可能性がある。このような場合、レンダラは、特定の詳細レベルでサンプリングを停止するように命令されることができる（サンプリングが所定のデプスを超えている場合は、より低い詳細レベルに切り替える）。一部の実装では、これにより、プロセッサ容量が原因でフレームレートが低下する前に、ユーザがサンプリングレートを上げることができ、ユーザ体験を向上させる。このようなプロシージャ（たとえば、サンプルの最初の３分の１を最高のLOD 0（つまり平均化しない）でサンプリングする、サンプルの２番目の３分の１をLOD 1（つまり、サンプルの平均を含む１レベルの平均化）でサンプリングする、最後の３分の１をLOD 2（つまり、ピクセルの平均の平均を含む２レベルの平均化）によると、ユーザが、高速レンダリングを使用して、前でより多くの詳細を、中間距離で良い詳細に、最も遠い距離でより少ない詳細を受け取ることができる。一部の実装では、サンプリング距離（つまり、空間内の隣接するサンプル間の距離）はデプスの増加とともに増加する可能性があるため、サンプリング距離が中間ＬＯＤを持つ中間データセットのピクセル値に関連付けられた距離に匹敵する場合、平均ピクセル値中間データセットからのサンプルは、より適切に表され、より迅速にサンプリングできる。
【００７９】
いくつかの実装形態では、レンダラは、アルファ値に基づくオブジェクトの不透明度または透明度に基づいて、より早い時点でサンプリングを終了するように命令することができる。いくつかの実装形態では、サンプリングは、レンダリングの所望のフレームレート（例えば、ユーザの快適さを向上させるための６０ｆｐｓの所望のフレームレート）に一致するように動的に設定されることができる。一部の実装では、レンダラは、中心窩レンダリング（foveated rendering）を実装することができる。中心窩レンダリングでは、ユーザの中心窩領域のみが高品質でレンダリングされ、ユーザ体験を最小限に抑えるか又は変えない一方で、処理負荷を軽減する。
【００８０】
一部の実装では、サンプリングをオフセットして木目調効果（wood graining effect）を減らすことができる。これは、「ランダムノイズ」で構成されるテクスチャからサンプリングしてオフセット値を取得することで実現される。ボリューム内の異なるバンド間のこれらのランダム化された光線サンプル位置により、データのより分散されたサンプリングが可能になる。たとえば、レンダラは、サンプリングおよび／またはキャスト光線の開始位置をランダムにオフセットするプロシージャを実装することができる。半径方向に増加する距離に沿ってサンプリングする場合、第２の光線は第１の光線からわずかにオフセットされ、サンプルは特定の半径方向の距離にある。レンダラのオフセットを実装すると、ユーザとの関係でサンプリング距離の固定された増分シェル（incremental shell）ではなく、奇数距離（odd distance）でサンプリングすることができる。スプラッタリング（splattering）としても知られる、固定された放射状シェル（radial shell）に関するランダムな位置でのそのようなサンプリングは、いわゆる「木目調効果」を回避することができる。計算は、ユーザの頭に関する位置で、ユーザに対するボリュームスケールで実行されることができる。いくつかの実装形態では、スプラッタリングは、サンプリングの可変距離および／またはサンプリングされたオブジェクトのスケールに関して動的に設定されることもできる。オブジェクトのスケールは、スケーリング係数によって定義されることができる。
【００８１】
場合によっては、サンプリングされて境界内にあると判断されたときの空間内の３次元ポイントは、オブジェクトのプロパティに関連付けられた１つ又は複数のＬＵＴにマッピングされることができる強度値を返すことができる。例えば、ユーザは、オブジェクトのその部分を表すために、キーの組み合わせ（例えば、２つのキー）を選択している場合がある。各キーは、オブジェクトに対する位置の値、色の値、透明度の値、およびＬＵＴに関連付けられているキーを含むことができる。レンダラは、ＬＵＴを使用して、オブジェクトの一部のインスタンスに対応するピクセルをレンダリングするために使用できるマップされた値を返すことができる（オブジェクトに関連付けられたサーフェステクスチャなど）。図４１Ａはキーのセットによって表されるオブジェクトプロパティの例示的なセットを示すユーザインターフェースの概略図であり、図４１Ｂは、一実施形態に係る、ボリュームオブジェクトをレンダリングするためにレンダラによって使用されるような、例示的なキーの概略図である。
【００８２】
一例として、ユーザは、図４１Ａのユーザインターフェースを介して、キーに関連付けられた値を選択および設定することができる。カラーキーの定義は、ＬＵＴが生成されることに基づいて、図４１Ａに示されるマッピング上のそれらの位置に基づくことができる。スケーリングされたuv.U値を含む軸は、キーの透明値（高不透明、低透明）を表し、スケーリングされたuv.U値を含む軸は、キーのインデックス値を表す。たとえば、キーが白色のキーを表している場合、ユーザはスペース上でキーをスライドさせて、高い不透明度の高い白の値または低い白の値に増やすことができる。レンダラは、複数のキー間の値を補間してＬＵＴを生成できる。ユーザは、ボリュームをサンプリングし、適切な数のキーを使用してオブジェクトに値を割り当てることができる（たとえば、ユーザは３つのキーを使用して骨の表現を選択し、１０のキーを使用して筋肉の表現を選択することができる）。キーの数は、任意の適切な整数値であることができる。
【００８３】
ユーザはオブジェクトに関連付けられたキーを調整することができ、ＩＭＶＲシステムは、本明細書で説明されるように、キーを調整するユーザのユーザデバイスでレンダリングされたオブジェクトのインスタンスの外観の変化が他のユーザデバイスでレンダリングされたオブジェクトのインスタンスにおいて模倣されるように、調整を他のユーザデバイスに伝播するように構成されることができる。たとえば、一部の実装では、１人のユーザがキーを移動すると、筋肉データが消え、ＩＭＶＲシステムは、キーの位置と色、位置、透明度の値の情報をＩＭＶＲシステム内の他のユーザデバイスに送信し、その結果、各ユーザデバイスに関連付けられているレンダラは、ＬＵＴをローカルで計算して、第１のユーザデバイスのオブジェクトのインスタンスの外観を模倣することができる。場合によっては、データセットは、データセットに格納されたプリセットＬＵＴに関連付けられることができる。調整キーは、レンダラのサンプリング時間（２００ミリ秒など）にわたってＬＵＴにエフェクトを生成するように構成されることができる。各ユーザデバイスは、ＩＭＶＲ環境を共有し、ＩＭＶＲセッションのユーザの統一されたデータ表現を取得するために同じ方法でＬＵＴを計算するように構成されることができる。ＬＵＴの計算は、各ユーザデバイスに関連付けられているハードウェアに依存しない場合がある。
【００８４】
いくつかの実装形態では、ユーザは、あるユーザによってなされた操作および／または変更が実質的にリアルタイムで他のユーザに伝播されることができるように、ＬＵＴを変更することなく、実質的にリアルタイムでオブジェクトのインスタンスを微調整および更新するための一連の制御ツールまたはデータ調整ツール（例えば、スライダー）を提供され得る。１つのユーザデバイスでの操作は、操作情報を含むことができる操作されたデータパッケージの生成に関連付けられることができる。ユーザデバイスは、操作されたデータパッケージを他のユーザデバイスに送信して、ユーザによって行われた操作を他のユーザデバイスに伝播するように構成されることができる。例として、以下に説明するように、ユーザにカラーキースライダーを表示して、キー選択とキー位置を操作し、レンダリングされたオブジェクトの外観に影響を与えることができる。例えば、ユーザデバイス（例えば、図２のユーザデバイス２０１）内のＩＭＶＲシステムのユーザインターフェース（図４１Ａのユーザインターフェースと同様）は、レンダリングされたオブジェクトの基礎となるデータセットに関連付けられた強度値のヒストグラムを引き伸ばすように構成された最大−最小スライダーを含むことができる。その結果、完全なＬＵＴは、データセットに関連付けられた強度ヒストグラムのより小さな部分にマッピングされる強度値を含むオブジェクトの一部を視覚化するために使用されることができる。場合によっては、ユーザインターフェースは、視覚化のカットオフに関連するユーザ入力を受信するために使用される閾値スライダーを含むことができる。
【００８５】
上記のように、ユーザインターフェースは、所与のデータセットに対して表示され、ＩＭＶＲ環境でレンダリングされたオブジェクトに関連付けられたデータの範囲を操作し、セッション内のユーザデバイスのインスタンス全体に操作を反映させる機能をユーザに提供する。一部の実装では、ＩＭＶＲシステムは、ユーザがデータ内にある一連の値の範囲でレンダリングされたオブジェクトに関連付けられたプロパティを操作できるようにするユーザインターフェースを含むように構成されることができる。
【００８６】
たとえば、ユーザは、ＣＴスキャンで骨を強調表示して、ジオード（geode）の亀裂にアクセントを付けることができる。実装例として、ユーザ対話レベルで、ＩＭＶＲシステムは、ユーザにシンプルなユーザインターフェースを提供することができる。これにより、ユーザはスライダーを動かすことによって表示されるデータを調整することができる。あるスライダーは、透明度（アルファ値）の調整を可能にするように構成されることができる。例えば、図４１Ａに示されるものと同様のユーザインターフェースにおいて、スライダーは、uv.U軸のキーを調整するように構成され得る。一連のスライダーは、ユーザがより小さなデータ範囲を選択して、全データ範囲内で表示することを可能にするように構成されることができる。データセットをより適切に視覚化するために、単一のクリックでいくつかのプリセットカラーグラデーションを適用できる。代替的には、実装では、高度なメニューを使用して、ユーザ独自のデザインの色のグラデーションを作成することができる。ＩＭＶＲセッションのユーザは、たとえば、所与のＣＴ内で、筋肉を赤、骨を白に着色し、他のデータを省略することができる。
【００８７】
ＩＭＶＲシステムは、スライダー、カラーキーの位置、および／またはキーの色に加えられた調整がＩＭＶＲセッションの他のユーザに伝播されるように構成される。次に、ＩＭＶＲシステムは、他のユーザに関連付けられたユーザデバイスを呼び出して、オブジェクトの更新されたインスタンスをレンダリングし、その結果、同じカラーマッピングが生成されて、ユーザ間で同等の視覚化を実現できる。
【００８８】
図４２Ａは、データの新しいチャネルのユーザ選択を実施する例示的な方法（例えば、レンダラまたはユーザデバイスによって実行される）を説明するフローチャートであり、ネットワークを介して最小限のデータを送信し、新しいデータチャネルを保存するという戦略を使用する、第２のユーザデバイスを含む他のユーザデバイスにデータの新しいチャネルを送信する。この新しいデータチャネルは、データを受信した第２のユーザデバイスにロードされることができる。
【００８９】
図４２Ｂは、第１のユーザデバイスに関連付けられたユーザがオブジェクトのレンダリングを操作するためにキーのカラーを変更するときに実装される例示的な方法（例えば、レンダラまたはユーザデバイスによって実行される）を説明するフローチャートである。ユーザがキーマーカー（例えば、図４１Ａに示されるようなキーマーカー）を動かすと、キーマーカーの新しい位置に関連付けられた値がレンダラによって登録され、キーの新しい位置に関連するデータが、第１のユーザが参加している可能性のあるＩＭＶＲセッション内の他のユーザデバイスへのネットワークを介して送信される。キー位置に関連するデータは、ネットワークを介して転送される最小限のデータを含む戦略で送信される。次に、第１のユーザによって送信されたこのデータを受信するユーザデバイスは、勾配を作成するプロシージャを使用して、それぞれのレンダラに関連付けられたキーのセットを更新することができ、その例が図４２Ｃに示されている。
【００９０】
図４２Ｃは、ＩＭＶＲシステムにおいて、キーのセットを使用してボリュームオブジェクトの色付けされたインスタンスをレンダリングするためのカラー勾配を作成するための例示的な方法（例えば、レンダラによって実行される）を示すフローチャートである。ＩＭＶＲシステムで複数のキーがユーザによって設定された場合、またはユーザデバイスによって受信された場合、レンダラは、キーの間を補間して（たとえば、線形補間または非線形補間）、図４２Ｃに記載されるようにキーの間にカラー勾配を生成するように構成されることできる。たとえば、キーは左から右に並べ替えることができ、各キーのカラーの値を使用して、更新されたカラーのリストを生成するキーのペア間のカラーのリストを生成することができる。更新されたカラーのリストを使用して、更新されたカラーの勾配の定義を生成するように構成されたプロシージャを呼び出すことができ、その例を図４３に示す。
【００９１】
図４３は、ＬＵＴを生成するために一対のキー（キー０およびキー１）の間の情報を補間することによって新しいカラーの勾配の定義を生成するための例示的な方法を説明するフローチャートである。たとえば、レンダラは、キーのペアに関連付けられた情報を受け取ることができる。キーは、カラー、位置、透明度の値を含み、各キーは赤（key0.color.rなど）、緑（key0.color.gなど）、青（key0.color.bなど）、アルファ色（key0.color.aなど）構成要素を有する。レンダラは、キーのペア間でのスロープ値（slope value）を生成することができる（たとえば、key0とkey1の赤色成分に関連付けられたrSlope、key0とkey1の緑色成分に関連付けられたgSlopeなど）。レンダラは、キー０の赤、緑、青、およびアルファ（a）の色成分を、rSlope、gSlope、bSlope、およびaSlopeに基づいて更新された値で更新し、更新された値を使用して新しいカラーを生成することができる。
【００９２】
場合によっては、ＩＭＶＲシステムは、脳磁図（MEG）から生成された画像を読み取り、そのデータを使用して、いくつかの診断、研究、教育、および／またはトレーニングの目的で、データを視覚化するおよび／または調べる（probe）ために使用されるリッチなＩＭＶＲ環境を生成するように構成されることができる。図１１は、いくつかの実施形態のＩＭＶＲシステムを使用してＭＥＧデータを視覚化するためのリッチで対話可能なＩＭＶＲ環境を生成するために使用することができる例示的な方法１１００を示す。
【００９３】
ユーザは、３Ｄ空間、つまり、回転とスケール、および再生機能、ステップ機能、スクラブバーなどの一連の特徴を使用する時点を通したトラバース（traverse）においてデータを操作することができる。図４７Ａは、ＭＥＧデータのレンダリングのインスタンスを案内するために使用されることができる例示的なユーザインターフェースを示す。例示されるように、ユーザインターフェースは、レンダリングされたＩＭＶＲ環境で距離を前進および後退するための前進および後退案内制御を含むことができる。ユーザインターフェースは、ユーザが（レンダリングされたインスタンスを取り除いてＩＭＶＲ環境内のオブジェクトの不要な部分を削除する）スクラブプロパティ（scrub property）を設定するために調整することができるスクラブスライダー、頻度スライダー、およびデータに関連付けられたレンダリングの更新頻度を含むことができる。図４７Ｂは、図４７Ａのユーザインターフェースを介してユーザによって提供される入力を実装するための例示的な方法を説明するフローチャートである。
【００９４】
いくつかの実施形態では、ＩＭＶＲシステムは、脳磁図画像化を通じて得られたデータセットを受信し、３次元空間および時間でデータの視覚化を生成するように構成されることができる。脳磁図スキャン（ＭＥＧ）は、皮質表面の双極子モーメントの方向及び大きさ（ベクトル）を測定することにより、脳の電気的活動を視覚化するために使用されることができる。次に、このデータは、この電気的活動の３次元的な視点を与えるＩＭＶＲ環境において表示される。たとえば、聴覚刺激に応答している間にキャプチャされたＭＥＧデータセットは、ＶＲで表示されることができ、脳を通る聴覚情報の経路を追跡する。ベクトル情報は、例えば長さと色が大きさとともに変化する「涙の滴（tear drop）」の形のような、つまり特定の領域で脳の活動が増加すると、より熱い色のより長い涙の滴として現れるような、モデルオブジェクトによって表されることができる。点群データは、任意の形状及び色によって表されることができる。
【００９５】
図４８は、本明細書に記載のＩＭＶＲシステムを使用してＭＥＧから得られた空間データの読み取りおよびレンダリングを説明する例示的な方法である。示されるように、例えば、いくつかの実装形態では、ＩＭＶＲシステムにおけるユーザデバイスは、外部ソースからＭＥＧに関連付けられたデータを受信し、所定の点のセットに対応するベクトルデータを抽出することができる。ベクトルデータは、所定の点のセットおよび時点のセットの初期位置、ならびに時間に応じた位置の変化を含むことができる。所定の点のセット（例えば、空間内の７０００点、各点は３次元ベクトルに関連付けられている）は、局所的な神経活動に関連付けられている磁気双極子モーメントに関連され得る。点のセット内の各点は、位置（または原点）プロパティ、回転プロパティ、大きさプロパティ、時間プロパティなどのプロパティに関連付けられ得る。各点は、各プロパティに対応する値のセットを含むことができる。たとえば、各点は、一連の時点、並びに時点に関連付けられた原点、回転、および大きさの値のセットに関連付けられることができる。ベクトルは、図４８に示されるように、ベクトルに関連付けられた最大値および最小値とともに、ユーザデバイスに関連付けられた揮発性メモリ（例えば、ＶＲＡＭ）に読み取られ、格納され得る。ユーザデバイスのレンダラは、図１１に示されるように、位置バッファ、大きさバッファ、および回転バッファを含むバッファのセットを含むことができ、その結果、関連付けられたプロパティおよび値を有する点のセットは、抽出されたベクトルデータから読み取られ、対応するバッファに追加されることができ、ＩＭＶＲ環境におけるボリュームオブジェクトのインスタンスに関連付けられてレンダリングされることができる。
【００９６】
いくつかの実施形態では、点は、モデルオブジェクトによって表されることによってレンダリングされることができる。 いくつかの実装形態では、モデルオブジェクトは、色、外観、テクスチャ、形状、サイズ、および／または構造を含む所定の属性またはプロパティを有するアーティストレンダリングメッシュオブジェクトであり得る。プロパティは、ルックアップテーブルを使用してポイントに関連付けられた値にマップされることができる。図４６Ａは、ティアドロップ（teardrop）のように成形されたメッシュオブジェクトである例示的なモデルオブジェクト４６００を示している。図４６Ｂは、数千点を含むＭＥＧデータの、ＩＭＶＲ環境における例示的な視覚化４６０１の斜視図を示しており、これらの点は、モデルオブジェクト４６００の数千のインスタンスによって表される。
【００９７】
視覚化４６０１は、ベクトルデータから取得され、モデルオブジェクトのインスタンスに関連付けられ、各ベクトルが位置、方向、大きさ、および時間を含み、位置、向き、長さ、色を含む対応するプロパティを有するモデルオブジェクトの１つのインスタンスに関連付けられた時点「ｔ」での神経活動を表す。モデルオブジェクト４６００の数千のインスタンスの位置または原点のプロパティは、変化する時間にわたって固定されたままであることができ、向き、長さ、および色のプロパティは、ベクトルデータにおいて関連付けられた位置での対応するベクトルの大きさおよびベクトルのベクトル方向から得られる情報に応じて時間とともに変化し得る。モデルティアドロップ形状のオブジェクト４６００の各インスタンスの色および長さのプロパティは、ベクトルデータにおいて関連付けられたベクトルの大きさに基づいて変化されることが示され、ベクトルの大きさが大きいほど、ティアドロップ形状のモデルオブジェクトのインスタンスの長さが大きくなり、より明るい色であり、それぞれが適切なルックアップテーブルに基づいて選択される。
【００９８】
視覚化４６０１の例は、所定の音を聞きながら、対象の脳のいくつかの時点にわたるＭＥＧ画像化から得られたベクトルデータの経時的な表現における単一の時点でのフレームである。この表現は、被験者の脳の側頭葉の聴覚皮質に関連する領域での神経活動の増加を示す。ある時点での神経活動の変化は、ある時点でのモデルオブジェクトのインスタンスの色、長さ、向きなどのプロパティの変化によって表される。図４９は、ユーザデバイスでのＭＥＧデータのレンダリングに関連付けられたユーザ入力を更新する例示的な方法を説明するフローチャートである。図５０は、例示的なＭＥＧデータセットのレンダリングを実装する例示的な方法を説明するフローチャートである。上記のＭＥＧデータの表現は、臨床医が神経活動の変化する傾向を簡単に特定するのに役立つ。例えば、上記のように、経時的なＭＥＧデータの視覚化を使用して、手術を助けることができる事前定義された刺激に応答して、発作活動の場所または所望の活動の場所を容易かつ迅速に識別することができる。
【００９９】
他のデータセットは、ＥＥＧ、地質データ、分子データ、または時間構成要素の有無にかかわらず他の点群データを含み得る。一部の実装では、データは、ネットワークソケットを介して収集され、実質的にリアルタイムでユーザに表示される。
【０１００】
本明細書で説明するように、ＩＭＶＲシステムのレンダラは、３次元オブジェクトに関連付けられたデータセット、場合によっては、画像化技術を使用して撮影されたオブジェクトのシリアルの２次元画像を含むデータセットを取得し、ＩＭＶＲ環境でオブジェクトをレンダリングすることができる。その結果、複数のユーザがオブジェクトを同時に視覚化および操作することができる。ＩＭＶＲ環境でのオブジェクトのレンダリングは、ユーザに利用可能であり得る視覚化および／または操作のレベルを決定することができる所定のプロパティの任意の適切なセットを使用してなされることができる。オブジェクトのレンダリングに関連付けられた所定のプロパティの一部は、ユーザ（たとえば、ホストユーザまたはＩＭＶＲセッションの制御を強化するように定義された第１のユーザ。ＩＭＶＲセッションは、一人または複数のユーザを含む控えめなＩＭＶＲ体験である。）からの入力を使用して設定されることができる。一部の実装では、任意の参加しているユーザによって設定されるようにプロパティが定義されることができる。図１２は、ユーザ入力のリストを示す。たとえば、ＩＭＶＲシステムは、事前定義された近傍切り取り平面（near clipping plane）を使用して、視覚化からレンダリングされたオブジェクトの近傍部分を切り取るためのユーザの能力を設定する「nearClip」に関連付けられた入力を受け取ることができる。
【０１０１】
入力「alphaThreshold」を使用して、オブジェクトまたはオブジェクトの一部を視覚化する透明度閾値プロパティを設定することができる。サンプルに関連付けられた入力を使用して、ユーザデバイス（ユーザがレンダリングを視覚化するために使用される）を参照してオブジェクトをレンダリングするために使用されるサンプルの数を設定することができる。一部の入力は、レンダリングの品質及びレンダリングの効率を決定することができる。たとえば、「スキップ」及び／又は「ＭＩＰマッピング」を有効にすると、ＩＭＶＲシステムに、オブジェクトを含まないヌル空間を考慮してオブジェクトをレンダリングするように命令することができる。検出時にヌル空間の一部をスキップし、ヌル空間ではないものの識別に基づいてサンプル領域に戻ることだけで、視覚化の品質を維持しながらレンダリングの効率を高めることができる。ユーザからの追加の入力を設定して、（プロセッサ速度とユーザデバイスの機能、および視覚化されたデータセットの性質に基づいて）スキップ率を決定することができる。また、ビニングおよび／または中心窩レンダリングを使用して、レンダリングの効率をさらに高めることができる。
【０１０２】
追加の例として、断面ツールに関連付けられた入力はＩＭＶＲ環境で断面機能を有効にし、レンダリング中の包含オブジェクトと除外オブジェクトとに関連付けられた設定パラメータに関連付けられた入力は、他の周囲のオブジェクトを含む及び／または除外することで、オブジェクトの分離レンダリングを可能にする。包含および除外ベースの定義は、ＩＭＶＲ環境で対象のオブジェクトのすぐ近くにある他のオブジェクトに関することができる。追加の例として、一連の注釈ツール（ペイントツール、ボクセルペインタ、測定ツール、注釈ツールなど）に関連付けられた入力を使用して、ユーザがペイントツール（たとえば、色を追加したり、透明度を下げたりすることによって、ペイントしまたは外観プロパティを変更したりする）を使用してレンダリングされたオブジェクトに注釈を付け、または操作できるようにすることができる。このような入力の例は、測定入力、注釈入力、ペイント入力、ハイライト入力、マークアップ入力などを含む。
【０１０３】
図１３は、一実施形態に係る、ＩＭＶＲシステムにおいて、ＩＭＶＲ環境を生成し、レンダラ（例えば、ＩＭＶＲレンダラ３０５またはユーザデバイス２０１のユーザ固有のＶＲレンダラ２１６）によってＩＭＶＲ環境に関連付けられた媒体を記録する例示的な方法のフローチャート１３００である。１３７１で、方法１３００は、オブジェクトに関連付けられた医療画像を含むデータを受信することを含む。前述のように、医療画像は、コンピュータ断層撮影（ＣＴ）、磁気共鳴画像（ＭＲＩ）、ポジトロン放出断層撮影−コンピュータ断層撮影（ＰＥＴ−ＣＴ）、および／または脳磁図（ＭＥＧ）データの開始、並びに共焦点顕微鏡、電子顕微鏡、複数の平面にわたるデータ取得を伴う任意の光学顕微鏡などの３次元オブジェクトのシリアル光学セクション化および画像化を含む１つ又は複数の他のデータソース、を介して得られた画像などのＤＩＣＯＭ画像を含むことができる。
【０１０４】
１３７２で、レンダラは、データから、オブジェクトの構造に関連付けられたデータセットと、仮想環境（本明細書では「ＩＭＶＲ環境」とも呼ばれる）においてオブジェクトを参照するユーザの空間位置に関連付けられたユーザ情報と、を抽出する。データは、ＩＭＶＲ環境の１つ又は複数のパラメータを設定するために抽出および使用することもできる、データセットに関連付けられた追加情報を含むことができる。たとえば、データは、オブジェクトに関連付けられたサンプル番号、データのチャネル数を含むチャネル詳細（channel specification）、およびデータの各チャネルに関連付けられたルックアップテーブル（ＬＵＴ）を含むことができる。データセットは、オブジェクトに関連付けられたボリュームデータに関連付けられた情報の１つまたは複数のチャネルを含むことができる。各チャネルは、ユーザがオプションで個別に視覚化できる１つ又は複数のチャネルを使用してオブジェクトをレンダリングできるように定義されることができる。たとえば、各チャネルはルックアップテーブル（ＬＵＴ）を使用してレンダリングされることができ、各ＬＵＴは他のルックアップテーブルから分離可能（たとえばスペクトル分離可能）であるため、ＬＵＴを個別に操作してそのデータのチャネルでレンダリングされたオブジェクトの視覚化を変更することができる。チャネルは、各チャネルを使用してレンダリングされたオブジェクトを合成して複合オブジェクトを形成できるように構成できる。図２４および２５は、一実施形態に係るＩＭＶＲシステムにおいて、データの複数のチャネルを使用してレンダリングされたオブジェクトの合成インスタンスを生成するための例示的な方法を説明するフローチャートである。例えば、図２４に示されるように、レンダラは、ＩＭＶＲ環境でオブジェクトをレンダリングするために、最大強度投影（ＭＩＰ）を含むプロシージャを実装することができる。レンダラは、位置、色、およびＭＩＰ値に関連付けられた情報を取得することができる。レンダラは、ある位置にあるデータのチャネルのサンプルのＭＩＰ値間の差を示すＭＩＰ差値を計算し、その値をユーザによって設定された閾値と比較することができる。比較に基づいて、レンダラは色及び透明度の情報の合成を含むＬＵＴを生成することができる。図２５はまた、一対の色が与えられた場合に合成色を返す例示的な方法を示す。図２５Ｂは、ＩＭＶＲ環境におけるオブジェクトのレンダリングにおいて、ニアクリップ設定（nearclip setting）およびワールドデプス設定（例えば、ユーザによる）に関連する情報を使用して、デプス視覚化を正規化するための例示的な方法のフローチャートである。
【０１０５】
一部の実装では、データは命令及びキーのセットを含むことができるが、チャネルのＬＵＴを含むことはできず、ＬＵＴはキーを使用してローカルで生成されることができる。各キーは、色、透明度に関連付けられたプロパティを含むことができるため、キーの組み合わせを使用してＬＵＴを生成することができる。ユーザ情報は、相対的な空間位置、およびレンダリングされたオブジェクトに対するユーザの相対的な向きを含むことができる。いくつかの実装形態では、ＩＭＶＲシステム内の１つまたは複数のユーザデバイスは、ヘッドセット、ヘッドマウントディスプレイ、および／または１つまたは複数の操作コントローラを含むことができる。レンダラは、ヘッドセットおよびハンドコントローラから、ＩＭＶＲ環境内のヘッド位置および／または手の位置ならびに姿勢またはポインティング方向を受け取り、その情報を使用してオブジェクトをレンダリングすることができる。
【０１０６】
図１３に戻ると、１３７３で、レンダラは、ユーザから入力のセットを受け取り、入力のセットは、ＩＭＶＲ環境内のオブジェクトの一部に関連付けられた所定のプロパティのセットに関連付けられている。入力のセットは、図１２を参照して上で定義された入力を含むことができる。プロパティは、一連の視覚化プロパティを含むことができる。一部の実装では、ユーザ入力は、オブジェクトをレンダリングするためにＬＵＴに適用される変更を含むことができる。
【０１０７】
１３７４で、レンダラは、入力のセット及びユーザ情報に基づいて、仮想環境内のオブジェクトの部分のインスタンスをレンダリングする。１３７５で、レンダラは、ユーザおよび仮想環境におけるオブジェクトの部分のレンダリングされたインスタンスの操作に関連する操作情報を受け取る。いくつかの実装形態では、操作情報は、ヘッドセットまたは１つまたは複数のハンドコントローラを介してユーザから受信した一連の入力を通して受け取ることができる。操作は、レンダリングされたオブジェクトの視覚化への変更として現れるＩＭＶＲ環境への影響を誘発するように構成されたユーザのアクションを含むことができる。たとえば、操作は、レンダリングされたオブジェクトの１つまたは複数の部分の外観プロパティを変更するように構成されることができる。たとえば、レンダリングされたオブジェクトの１つまたは複数の部分の色または透明度、レンダリングされたオブジェクトの方向、スケール、またはビューの変更である。操作は、レンダリングされたオブジェクトに対するユーザの相対的な位置および／または向きの変化を誘発するように構成されることもできる。
【０１０８】
１３７６で、レンダラは、操作情報に基づいて、仮想環境での操作の効果を明示する（manifest）オブジェクトの部分の更新されたインスタンスをレンダリングする。
【０１０９】
１３７７で、ユーザデバイスは、オブジェクトの部分の更新されたインスタンスの操作およびレンダリングに関連付けられた媒体を記録し、媒体は、ＩＭＶＲ環境内のユーザの視点からの、オブジェクトの部分の更新されたインスタンスのレンダリングのビデオを含み、この視点はＩＭＶＲ環境内のユーザの空間位置に基づく。一部の実装では、ＩＭＶＲセッションまたはＩＭＶＲ体験の記録は、位置、ホスト情報、タイムスタンプ、および音声をキャプチャするように構成されることができる。いくつかの実装形態では、媒体は、ＩＭＶＲセッションにおいて１人または複数のユーザによって生成された音を含む、オブジェクトのレンダリングに関連付けられた音の音声録音を含むことができる。場合によっては、記録された音声をＩＭＶＲ環境内の記録された空間位置に関連付けることができ、その結果、媒体の再生は、ビデオを体験する第２のユーザが、ＩＭＶＲ環境内の音源の位置を考慮して音声も体験することを可能にする。たとえば、ユーザの位置の前方および右側の空間位置にあるソースからの音声は、ユーザの正面および右側でより大きな音声として明示する（manifest）ように構成されることができる。別の例として、録音および／または再生は、音声のソースの動的な位置を含むことができる。言い換えれば、仮想空間を移動する、および／または仮想空間内のオブジェクトとやり取りするユーザによって生成された音声は、ユーザとやり取りするオブジェクトの両方の視覚化における動きおよび／または変化がキャプチャされるように記録することができ、適切なタイムスタンプが付いたビデオと音声の両方であり、再生時に再作成して別のユーザによって体験されることができる。いくつかの実装形態では、再生を実装する第２のユーザは、音声が第２のユーザの位置およびソースの動的な性質に動的に調整されるように、単なる音声再生と空間情報を含む音声との間で選択することができる。
【０１１０】
いくつかの実装形態では、再生は複数のユーザによって開始されることができ、空間情報を含む音声は、マルチユーザセッションにおいて、ユーザの空間位置に従って各ユーザに提示され得る。いくつかの実装形態では、ホストユーザは、ＩＭＶＲセッションに関連するビデオおよび／または音声を自動的に記録することができる。場合によっては、録音された音声がホストユーザに関連付けられ得る。一部の実装では、マルチユーザＩＭＶＲセッションの各ユーザが音声に関連付けられることができ、音声録音は、そのＩＭＶＲセッションのユーザごとに１つの音声を取得するために管理されることができる。一部の実装では、ＩＭＶＲシステムは特定のユーザが音を生成している（たとえば、話している）ことを感知することができ、ＩＭＶＲシステムはそのユーザの音声を消音して、より高品質のサウンドを生成し、そのセッションで他のユーザに中継できる（たとえば、エコー効果、または干渉効果を回避するために）。一部の実装では、ＩＭＶＲシステムは、ユーザ間の対話（たとえば、仮想クラスルームセッションでの家庭教師と学生の間のディスカッション）をキャプチャするための開始と停止を含む、ユーザに関連付けられた音声のセットを操作することができる。場合によっては、ＩＭＶＲセッションのサブセットが記録されることができる（たとえば、より大きなクラスルームの学生のサブグループ）。一部の実装では、あるセッションからのＩＭＶＲ環境のあるインスタンス（たとえば、仮想クラスの学生のサブグループ）は、別のセッションに関連付けられた別のＩＭＶＲ環境（たとえば、学生の別のサブグループ、または学生のクラス）にエクスポートされることができる。
【０１１１】
ＩＭＶＲシステムのユーザデバイスは、一連の制御機能を有する第２のユーザによる再生をサポートするように構成されることができる。第２のユーザは、再生のプロパティのセットを選択し、及び／又はユーザデバイスのプロパティに関連付けられた値を選択することができる。たとえば、再生はユーザの裁量で開始、一時停止、および／または停止されることができる。再生は、他の適切な方法で巻き戻し、再生、または変更されることができる。いくつかの実装形態では、第２のユーザは、透明度、色などのユーザデバイスプロパティで選択して、再生においてレンダリングされるオブジェクトの部分のインスタンスを変更および／または操作することができる。
【０１１２】
本明細書で説明するように、ＩＭＶＲシステムは、ＩＭＶＲ環境内のオブジェクトと対話する複数のユーザをサポートするように構成されることができる。ＩＭＶＲシステムは、各ユーザデバイスが接続され得る方法（例えば、有線接続を貸しいて、無線接続を介して、様々なパラメータの通信ネットワークを介してなど）に関係なく、各ユーザデバイスの特定のハードウェア構成に関係なく、共有ＩＭＶＲ環境が複数のユーザデバイスにわたる提示において統合されるように構成されることができる。場合によっては、ＩＭＶＲシステムは、そのユーザデバイスでレンダリングされたオブジェクトのインスタンスの外観が他のデバイス上のインスタンスの外観と類似または一致するように、ユーザデバイスのハードウェア構成を考慮して重み付けされたレンダリングを実行するように構成されることができる。たとえば、ユーザデバイスが共有ＩＭＶＲセッションにおいて他のユーザデバイスよりも強力で、高いサンプリングレートまたはフレームリフレッシュレートが可能な場合、そのユーザデバイスに関連付けられたレンダラは、ハードウェア構成の違いに適合するためのオブジェクトの一部に関連付けられた色及び／又は透明度などのレンダリングプロパティを較正することができる。一例として、500倍のサンプルが可能なユーザデバイスは、300倍のサンプルが可能なユーザデバイス（1/300のサンプル重み付けを使用する可能性がある）と比較して、より小さな割合（たとえば、1/500×値）に重み付けされたサンプル値を使用することができる。
【０１１３】
新しいユーザデバイスを進行中のＩＭＶＲセッションに追加して、セッションにシームレスに参加し、ＩＭＶＲの統一された提示を体験することができる。一部の実装では、新しいユーザデバイスが進行中のＩＭＶＲセッションに関連付けられたデータパッケージをまだ有さない場合、新しいユーザデバイスはデータパッケージを受信することができる。場合によっては、新しいユーザデバイスはデータパッケージのライブラリ内の全てのデータを受信することができる。場合によっては、新しいユーザは、完全なライブラリではなく、進行中のＩＭＶＲセッションの一部に関連付けられたデータ（たとえば、１人の患者に関連付けられた医療データまたは１つのクラスの指導に関連付けられた医療データ）を受け取ることができる。図３６Ａは、例示的なデータパッケージの概略図である。
【０１１４】
たとえば、一部の実装では、データパッケージは、ユーザデバイスのグラフィックカードに送信される生の画像データであることができる。いくつかの実装形態では、画像のパレットは送信ユーザによって選択されることができ、選択されたデータセットは新しいユーザデバイスに送信されることができる。上記のように、ＩＭＶＲセッションは、複数のユーザを含むことができ、いくつかの実装形態では、ＩＭＶＲシステムは、増加または減少する特権（privilege）を有するユーザの階層を確立することができる。例えば、図２６は、ＩＭＶＲセッションが、ホストデバイスＨＤ０に関連付けられ、最大の特権を有する第１のユーザまたはホストユーザによって開始され得るセットアップ例を示す。ホストユーザは、ユーザデバイスＵＤ１−４を使用して他のユーザを招待し、ネットワーク（ＴＣＰ／ＩＰ接続ネットワークなど）を介してユーザデバイスにデータパッケージを提供して、ＩＭＶＲセッションに参加することができる。図２６は、ホストデバイスＨＤ０およびユーザデバイスＵＤ１−４のセットに関連付けられたホストユーザを用いたセットアップ例を示す。
【０１１５】
ＩＭＶＲシステムは、受信したデータパッケージの完全性をチェックし、他のユーザに関してデータパッケージを同期するように、新しいユーザデバイスがプログラムで命令されることができるように構成されることができる。図３６Ｂは、ユーザがＩＭＶＲセッションに参加することを可能にするためのデータパッケージ処理の例示的な方法を説明するフローチャートである。場合によっては、データパッケージは、揮発性メモリ（例えば、グラフィックプロセッサユニット（ＧＰＵ）、ＶＲＡＭなどに関連付けられたメモリ）に格納されることに加えて、受信側ユーザデバイスにおいて不揮発性メモリ（例えば、中央処理装置（ＣＰＵ）に関連付けられたメモリ）にローカルに格納され得る。いくつかの実装形態では、送信ユーザまたはホストユーザは、受信ユーザが受信デバイスの不揮発性メモリにおけるローカルストレージを可能にすることを承認することができる。いくつかの実装形態では、データパッケージは、データパッケージに含まれるデータセットを処理、使用、および／または格納するために利用可能な許可を示す許可情報に関連付けられることができる。
【０１１６】
いくつかの実装形態では、データはプライバシー保護によってバインドされる可能性があり、したがって、受信側ユーザデバイスは、受信側ユーザデバイスに関連付けられた不揮発性メモリにデータを保存するのではなく、受信側ユーザデバイスに関連付けられた揮発性メモリ（グラフィックス処理カードなど）にのみデータを保存するために送信ユーザデバイスまたはホストユーザデバイスによって命令されることができる。このような実装では、レンダラが使用するビデオＲＡＭにデータを保存した後、デバイスに関連付けられている他の揮発性メモリ（ＲＡＭなど）からデータを削除するように構成できる。場合によっては、受信デバイスが一度に複数のデータチャンクにアクセスできないように、ＩＭＶＲシステムは一度に１つのチャンクでデータパッケージを送信するように構成されることができる。
【０１１７】
場合によっては、新しいユーザに送信する前にデータパッケージを変更できる。たとえば、データパッケージをスクラブして患者識別メタデータを削除し、受信側ユーザデバイスに送信できる。受信側ユーザデバイスは、オブジェクトのレンダリングに使用される情報を抽出し、他のユーザと進行中のＩＭＶＲセッションに参加するように命令されることができる。たとえば、受信データは、レンダリングに関連付けられたデータ（ボクセルデータ、ボクセルサイズ、ボクセル幅、ボクセル高さなど）を抽出できる。図２７は、一実施形態に係る、ＩＭＶＲシステムを使用して、ホストマシンとクライアントマシンとの間でＩＭＶＲ環境に関連するデータを共有する方法の概略図である。いくつかの実装形態では、ホストマシンは、第１のユーザまたはホストユーザに関連付けられたユーザデバイス（例えば、図１Ａのユーザデバイス１０１）であることができ、クライアントマシンは、後続のユーザに関連付けられたユーザデバイス（例えば、ユーザデバイス１０２）であることができる。いくつかの実装形態では、ホストマシンは、ＩＭＶＲレンダラ（例えば、ＩＭＶＲレンダラ１０５）であることができ、クライアントマシンは、ユーザデバイス（例えば、ユーザデバイス１０２）であることができる。
【０１１８】
本明細書で説明されるＩＭＶＲシステムのユーザデバイス部分のいくつかの実装形態では、システムは、進行中のＩＭＶＲセッションのユーザデバイスのセットに、セッションへの新しいユーザの次の追加を示すように構成され得る。いくつかの実装形態では、ＩＭＶＲシステムは、図３７のフローチャートによって説明される例示的な方法に示されるように、新しいユーザのデバイスに関してレンダリングの完了レベルで新しいユーザの準備ができていることを示すことができる。ＩＭＶＲ環境内の新しいユーザの音声（音声など）及び位置データは、新しいユーザがライブに参加してＩＭＶＲ環境の操作を許可される前に、他のユーザデバイスにブロードキャストされることができる。ＩＭＶＲシステムのユーザデバイスに関連付けられたユーザインターフェースは、新しいユーザがセッションに参加している間、新しいユーザがホストユーザと同じオブジェクトを視覚化していることを他のユーザに視覚的に示すことができる。ホストユーザ（共有ＩＭＶＲセッションの第１のユーザなど）は、新しいユーザのユーザデバイスに関連付けられたデータパッケージが読み込まれ、またはオブジェクトのインスタンスが新しいユーザのユーザデバイスでレンダリングされる一方で、新しいユーザの制御に制限を設定することができる。たとえば、ＩＭＶＲ環境内の１つ又は複数のオブジェクトの第１のインスタンスが新しいユーザのユーザデバイスでレンダリングされる一方で、新しいユーザはＩＭＶＲ環境での操作へのアクセスを制限することができる。
【０１１９】
一部の実装では、ホストユーザは、一連のユーザによって共有されるＩＭＶＲ環境の中間インスタンスを制御することができる。図２６（上記）は、一実施形態に係る、インストラクターがＩＭＶＲシステムを実装する学生間の共有ＩＭＶＲセッションのセットに柔軟に参加および離脱できるように、ＩＭＶＲ環境でレンダリングされたオブジェクトの複数のインスタンスを管理するように構成されたＩＭＶＲシステムの概略図である。
【０１２０】
図３７は、一実施形態に係るＩＭＶＲシステムを使用して、上記のように、ユーザが進行中のＩＭＶＲセッションに参加することを可能にする方法の例示的な実装を説明するフローチャートである。図３８は、ユーザデバイスに関連付けられたデータパッケージの既存のライブラリにデータパッケージを追加する方法の例示的な実装を説明するフローチャートであり、ユーザデバイスは、進行中のＩＭＶＲセッションに参加する新しいユーザに関連付けられている。図３８のフローチャートは、一実施形態に係る、ＩＭＶＲシステムを使用する進行中のＩＭＶＲセッション中の全てのユーザデバイスにわたって、新しいユーザに関連付けられたデータパッケージを更新し、オブジェクトのレンダリングに関連付けられたデータパッケージを同期させるために、レンダラ（例えば、レンダラ３０５）またはユーザデバイス（例えば、ユーザデバイス２０１）によって使用されることができる。図３９は、一実施形態に係るＩＭＶＲシステムを使用して、ＩＭＶＲセッションに関連付けられた既存のユーザのセットに新しいユーザの視覚的表示を提供することを含む、ユーザインターフェースを管理する例示的な方法を説明するフローチャートである。図３９に記載されている方法は、本明細書に記載されているレンダラ（例えば、レンダラ３０５）またはユーザデバイス（例えば、ユーザデバイス２０１）によって実装されることができる。
【０１２１】
図４０は、マッチメーカサーバ（matchmaker server）を使用して、学生をインストラクターと照合するための例示的な方法を説明するフローチャートである。たとえば、マッチメーカサーバは、学生のデバイスとインストラクターのデバイスの現在の状態を考慮し、ＩＭＶＲセッションで学生とインストラクターとを照合することができる。いくつかの実装形態では、インストラクターのデバイスは、本明細書で説明されるユーザデバイス（例えば、ユーザデバイス２０１）と同様であり得る。学生のデバイスは、ユーザデバイス（例えば、ユーザデバイス２０１）であることもできる。一部の実装では、学生のデバイスは、機能が制限されるように定義されたユーザデバイスであることができる。たとえば、１つ又は複数の学生のデバイスは、データパッケージへのアクセスまたはデータパッケージを受け入れる能力、データパッケージの転送を承認する機能、データパッケージに注釈を付け又は変更する能力、ユーザデバイスでレンダリングされたオブジェクトのデータまたはインスタンスの特定の操作を実行する能力、共有ＩＭＶＲセッションを呼び出し、開始または終了する能力、ＩＭＶＲ体験の記録を記録または再生する能力などに関連する制限を有することができる。
【０１２２】
一部の実装では、ＩＭＶＲシステムは、関連する可能性のあるデータパッケージを使用して複数のＩＭＶＲセッションを並行して動作させるように構成されることができる。いくつかのＩＭＶＲセッションは、ＩＭＶＲシステムによって編成および管理され、監督ユーザのいる１つの監督セッションと、より小さなユーザグループ（たとえば、インストラクターのいるクラスと、グループで作業する学生のより小さなサブグループを含むサブセッション）のいる複数のサブセッションとを有することができる。ユーザは、ＩＭＶＲセッション内またはＩＭＶＲセッションと別の並行して発生するＩＭＶＲセッション（並列仮想ルームなど）との間で支援のフラグ又は他のユーザの注意を示すフラグを立て、他のセッションにわたる他のユーザへのメッセージを送受信することを可能にするツールを提供されることができる。たとえば、あるサブセッションの学生は、別のセッションに参加している可能性のあるインストラクターに支援を要求することができる。場合によっては、ＩＭＶＲシステムは、ＩＭＶＲセッション設定の階層を構成することができ、その結果、上位のセッションが下位のサブセッションでユーザにアクセスされることができるようにすることができる。サブセッションは、上位のセッションと同じデータパッケージを使用するように構成されることができる。他の例では、サブセッションは、上位のセッションに関連付けられたデータパッケージのコピーを使用するように構成されることができ、各コピーは各サブセッションに割り当てられる。一部の実装では、ＩＭＶＲシステムは、レンダリングされたオブジェクトのインスタンス、および／または階層を上位のセッション（たとえば、サブグループからクラス全体）若しくは下位のセッション（たとえば、サブグループからさらに小さなグループ）に上げる若しくは下げるサブセッションにおける操作を投影またはエクスポートするように構成されることができる。
【０１２３】
図１４は、ＩＭＶＲ環境におけるオブジェクトの第１のインスタンスに関連付けられたデータを受信し、そのデータを使用して、第１のユーザが第２のユーザとＩＭＶＲ環境を共有できるようにオブジェクトの第２のインスタンスをレンダリングする例示的な方法１４００を説明するフローチャートである。
【０１２４】
１４７１で、レンダラは、第１のデバイスおよび第２のデバイスから、（１）仮想環境内のオブジェクトの一部の第１のインスタンスに関連付けられたデータパッケージであって、オブジェクトの３次元構造に関連付けられたデータセットを含むデータパッケージと、（２）仮想環境内のオブジェクトに関して、第１のデバイスに関連付けられた第１のユーザの仮想環境内の空間位置を含む第１のユーザ情報と、（３）オブジェクトの所定のプロパティのセットに関連付けられた第１の入力のセットと、を受信する。
【０１２５】
１４７２で、レンダラは、第２のデバイスで、仮想環境内のオブジェクトに関して、第２のデバイスに関連付けられた第２のユーザの空間位置を含む第２のユーザ情報を受信する。
【０１２６】
１４７３で、レンダラは、第２のユーザ情報に基づいて、第１の入力のセットを第２の入力のセットに変換する。１４７４で、システムは、第２の入力のセットに基づいてルックアップテーブルを生成する。
【０１２７】
１４７５で、レンダラは、第２のデバイスで、（ｉ）データセット、（ｉｉ）第２の入力のセット、および（ｉｉｉ）ルックアップテーブルに基づいて、仮想環境におけるオブジェクトの部分の第２のインスタンスをレンダリングする。オブジェクトの部分の第２のインスタンスは、第２のユーザの視点からであり、視点は第２のユーザの空間位置に基づく。
【０１２８】
図１５は、一実施形態に係る、ＩＭＶＲシステムのレンダラ（例えば、レンダラ３０５）によって、ＩＭＶＲ環境内のオブジェクトのボリュームをレンダリングする例示的な方法を説明するフローチャートである。たとえば、レンダラは、立方体の背面のデプステクスチャと立方体の前面のデプステクスチャに関連する情報を受信することができる。レンダラは、レンダラの断面機能が選択されているかどうかを確認することができる（たとえば、XSection_On=1は選択を示すことができる）。選択した場合、レンダラは断面平面のデプステクスチャを取得することができる。選択されていない場合、レンダラはDepthTesting機能が選択されているかどうかを確認することができる。選択した場合、レンダラは全ての表示されている不透明なオブジェクトのデプステクスチャを取得することができる。レンダラは、包含プロパティ値及び除外プロパティ値の選択を確認し、選択に基づいて、包含オブジェクトの背面と前面、または除外オブジェクトの背面と前面のデプステクスチャをそれぞれ取得することができる。レンダラは、変換行列を取得して実世界空間を立方体空間に変換し、ユーザデバイスに関連付けられたメインカメラの位置を取得し、立方体スケールに基づいて世界環境をスケーリングし、ボリュームデータをレンダリングすることができる。
【０１２９】
図１６は、一実施形態に係る、ＩＭＶＲ環境において、図１５に記載されたレンダリングに続く一連のイベントを伴う、ボリュームオブジェクトをレンダリングする例示的な方法を説明するフローチャートである。図１７Ａおよび１７Ｂは、一実施形態に係るＩＭＶＲシステムのレンダラを使用して、ユーザの入力のセットを使用して、ＩＭＶＲ環境でレンダリングされたボリュームオブジェクトに関連付けられたテクスチャをシェーディングすることを含む方法の一部を示す。図１７Ａの矢印ＡＡおよびＢＢは、図１７Ｂの矢印ＡＡ’およびＢＢ’に続く。図１８は、一実施形態に係る、ＩＭＶＲシステムのレンダラによって、光線マーチングアプローチを使用して、ＩＭＶＲ環境でボリュームオブジェクトをレンダリングする例示的な方法を説明するフローチャートである。
【０１３０】
いくつかの実装形態では、中心窩レンダリングまたはマスクされたレンダリングを実行するようにＩＭＶＲシステムを構成して、ＩＭＶＲ環境内のオブジェクトのインスタンスの視覚化をユーザによりよく提示することができる。一部の実装では、マスクされたレンダリングをビニングで実装されることができる。たとえば、このようなアプローチを使用すると、ユーザ体験を向上させるという全体的な目標で、ユーザが画面の特定の領域でより高い解像度を表示し、重要でない領域で解像度を下げることを可能にする。この例は、視点追跡（eye tracking）を使用して、ユーザが見ている場所（中心窩）でより高い解像度をレンダリングすることであり、これにより、画面全体を高解像度でレンダリングしようとする場合と比較して、レンダリングを更新するフレームレートを上げることが可能になる。ビニングは、レンダリング中に複数のピクセルを１つのピクセルとして扱う方法であり、低解像度の領域を実現する。
【０１３１】
図１９Ａおよび１９Ｂは、図１８の光線マーチングアプローチによって使用されるこれらのサンプルのそれぞれに割り当てられるサンプル距離および重みを生成する例示的な方法を示す。
【０１３２】
いくつかの実装形態では、ＩＭＶＲシステムは、１つまたは複数のアーティストがレンダリングしたメッシュオブジェクトを含むデータセットを使用するように構成されることができる。ＩＭＶＲシステムは、ユーザに提供される断面ツールを含む一連のツールを使用して、メッシュオブジェクトの断面をキャプチャするために使用されることができる。図２０は、ＩＭＶＲ環境でレンダリングされたメッシュオブジェクトのキャプチャを呼び出すための一連のユーザアクションを示す。たとえば、ＩＭＶＲシステムの一部の実装では、ユーザは機能を選択して、ユーザデバイスのユーザインターフェースを介して断面をキャプチャできるようにすることができる。次に、ユーザは、ＩＭＶＲ環境の２次元交差オブジェクトにカーソルを合わせると、関連付けられた３次元メッシュオブジェクトの名前を表示することができる。ユーザは、２次元交差オブジェクトを選択して、ユーザによって定義された断面平面を基準にした位置で、関連付けられた３次元メッシュオブジェクトのコピーを作成または有効にすることができる。場合によっては、ユーザは３次元メッシュオブジェクトを選択して、３次元メッシュオブジェクトを破棄または無効にすることができる。
【０１３３】
図２１は、一実施形態に係る、断面ツールを使用してメッシュオブジェクトをキャプチャするための例示的な方法を説明するフローチャートである。たとえば、レンダラは、断面の位置及び方向を決定するように構成されることができる。レンダラは、対象のメッシュのリストを生成し、そのリストから、境界が断面と交差しないメッシュを削除することができる。リスト内の残りのメッシュについて、レンダラはメッシュ内の三角形をリストし、各三角形について、その三角形が断面と交差するかどうかを判定することができる。もしそうであれば、決定に基づいて、レンダラは交差のエッジを決定する。交差の各エッジについて、エッジが任意のラインセグメントに接続している場合、レンダラはラインセグメントに追加する（そうでない場合は、新しいラインセグメントを作成する）。線分が閉じた形状の場合、閉じた境界から２Ｄメッシュを作成する。レンダラは、３次元メッシュを作成するまで、リスト内の全てのエッジと全てのメッシュに対してこのプロシージャを繰り返し実行する。２Ｄ交差メッシュから単一のオブジェクトを作成し、オブジェクトを３次元メッシュオブジェクトに関連付けり。これは、キャプチャされたメッシュ断面として再調整される。
【０１３４】
図２２は、別の実施形態に係る、別の断面ツールを使用して、ＩＭＶＲ環境でレンダリングされたメッシュオブジェクトの断面をキャプチャするための別の例示的な方法を示す。この方法に従って、解像度が選択され、断面正方形の位置及び方向が決定される。断面の各辺について、正方形の光線が所定の間隔で反対側に照射される。光線に沿った衝突ごとに、遭遇したオブジェクトが決定され、衝突点がリストに追加されて、点のクラウドが返される。次に、レンダラは順序付きリストを生成し、各点について計算され、順序なしリストから最近傍が決定される。最近傍が順序付きリストの第１の点よりも近い場合、その近傍は順序付きリストに追加される。順序付けられたリストごとに、閉じた形状の境界から２次元メッシュが生成される。３次元メッシュが少なくとも１つの２Ｄ交差を生成した場合、レンダラは２Ｄ交差メッシュから単一のオブジェクトを作成し、そのオブジェクトを３Ｄメッシュオブジェクトに関連付ける。場合によっては、レンダラは、三角形を作成して表面を作成することにより表面を生成するために三角形生成器（triangulator）を使用することができる。
【０１３５】
一部の実装では、メッシュオブジェクトを使用して、ゴースティング（ghosting）とも呼ばれるゴースト（ghost）を作成することができる。たとえば、レンダラは、２次元メッシュが作成されるオブジェクトのコピーを作成することができる。レンダラは、ボリュームオブジェクトを含む３次元データセットに関連付けられたメッシュを元に戻すことができるが、メッシュをオフ状態で格納する。オンにすると３次元オブジェクトがオフになるとき、アクティブ且つ可視であるように切り替えるように構成されることができる。
【０１３６】
断面ツールを使用して、メッシュモデルデータを介して任意の角度で断面を取得することができる。これにより、交差点の２Ｄ表現が作成される。この断面は対話可能である。ユーザは、構造でポイントしてラベルを表示させ、構造をクリックして断面の完全な構造をポップアウトさせることができる。たとえば、断面は胸部を通して取得され、ユーザは、大動脈をポップアウトし、胸部で上に、次に腹部の下にどのように進むかを視覚化することができる。この使いやすさにより、特定の平面の上下の構造のコースに関するユーザ詳細情報を提供される。これは、医療画像の研究に役立つ。図２３は、ＩＭＶＲシステムにおける断面ツールの例示的な実装を説明するフローチャートである。
【０１３７】
ＩＭＶＲシステムの一部の実装では、１人又は複数のユーザは、オブジェクトのレンダリングされたインスタンスを操作するための追加のツールセットを提供されることができる。一部のツール例は、レンダリングされたオブジェクトのインスタンスの一部を除外または含めることによって対象のボリュームを分離するように構成されたボリュームスケーリング、除外および／または包含ツールと、オブジェクトと交差する任意の平面に沿ってボリュームオブジェクトを切断するように構成された断面ツールとを含むことができる。その他の例は、ボクセルペインタツールとボクセルイレーサツール、およびユーザがレンダリングオブジェクトのインスタンスに注釈を付けることができるように構成されたカウント／ラベリングツール、メッシュ作成ツール、測定ツールなどを含む。
【０１３８】
一例として、測定ツールは、体積データセット内で正確な測定を行う能力をユーザに与えるように構成されることができる。ユーザは、フリーハンドまたはポイントツーポイントで線を引くことができ、正確な測定値でラベルを付けることができる。たとえば、血管造影図からの大動脈の直径、または共焦点顕微鏡データからの２つの細胞間の距離を測定することができる。さらに、一部の実装では、ユーザが作成済みの線から個々の線の頂点を移動することを可能にする特徴がある。一部の実装では、ユーザは頂点を追加または削除することもできる。
【０１３９】
図２８は、ボリュームスケーリングツールを使用して、レンダリングされたオブジェクトのインスタンスのボリュームをスケーリングするための例示的な方法を説明するフローチャートである。レンダラは、図２８のフローチャートを実装して、ユーザ入力のセットおよび／またはユーザデバイスに関連付けられたサンプリング情報に基づいて計算されたスケーリング係数に基づいてレンダリングすることができる。例えば、レンダラは、データファイルのボクセルサイズおよびボクセル寸法に関連付けられた情報を受け取り、生成されたスケールベクトルに基づいて、データセットに関連付けられたオブジェクトを所定の係数でスケーリングすることができる。図２９Ａ、２９Ｂ、および３０は、それぞれ、除外、包含、および断面ツールを使用する例示的な方法を説明するフローチャートである。図３１Ａ−３１Ｃ、３２Ａ、３２Ｂ、３３Ａ、３３Ｂ、３４および３５は、ＩＭＶＲ環境でレンダリングされたオブジェクトのインスタンスを操作するための追加の例示的なツールを実装する例示的な方法を説明するフローチャートである。例えば、図３４に示されるように、測定または注釈ツールを使用して、ユーザが線を描き、その線に注釈としてラベルを付けることを可能にすることができる。
【０１４０】
場合によっては、ユーザは、レンダリングされたオブジェクトの一部を測定し、その部分に測定注釈（例えば、オブジェクトの一部のスケールを示す測定注釈）でラベルを付けることができる。ＩＭＶＲシステムは、注釈をＩＭＶＲセッションの他のユーザに伝播できるように構成されることができる。ＩＭＶＲシステムでは、ユーザが注釈をオブジェクトのレンダリングされたインスタンスの一部に関連付け、インスタンスを保存して、後で他のユーザに送信することもできる。
【０１４１】
ＩＭＶＲシステムのいくつかの実装形態では、１人または複数のユーザは、ＩＭＶＲ環境でレンダリングされたオブジェクトを操作するためのツールのセットを提供されることができる。たとえば、ユーザはオブジェクトを近づけ、拡大し、縮小し、ピボットし、回転させ、ゆっくりと動かし（nudge）、オブジェクトへのその他の適切な操作を実行することができる。場合によっては、ユーザは、そうでなければ静的であるオブジェクトをユーザアクションで動かすことができる。たとえば、ユーザは、各ユーザが制御する１つまたは複数のハンドコントローラを使用して、オブジェクトのスロー、キャッチ、ロール、および／またはプルイン（pull in）を開始できる。ＩＭＶＲシステムは、ＩＭＶＲ環境内のオブジェクト及びユーザのモビリティ法則（mobility law）を適切な方法で変更するように構成されることができる。例として、ユーザは、コントローラのジョイスティックを向けることにより、オブジェクトを選択して近づけたり、遠ざけたりすることができる。移動するオブジェクトの速度は、コントローラからの距離に応じることができる。たとえば、ＩＭＶＲシステムは、ＩＭＶＲ環境でユーザに近づくにつれて、遠くのオブジェクトがすばやく移動し、速度が低下するように構成されることができる。例示的な釣り竿ツールは、ユーザ制御デバイス（例えば、釣り竿）がオブジェクトと交差し、距離に比例する速度でオブジェクトを引き上げることを可能にするように構成されることができる。別の例として、ＩＭＶＲシステムは、ユーザがオブジェクトを軽く放ったときに惰性走行し、停止する前にゆっくりと勢いを失うように構成されることができる。その後、ユーザのコントロールは、投げられたオブジェクトから解放され、別のユーザがそれを投げたオブジェクトを拾うことができる。ＩＭＶＲシステムは、２つのコントローラを使用してオブジェクトを拡大できるように構成されることができる。たとえば、ユーザはオブジェクトレンダラのインスタンスをポイントし、１つのアクションを使用してオブジェクトを取得または選択し、別のアクションを使用してドラッグすることができる。たとえば、レンダラは、ユーザがコントローラに関連付けられたトリガーを引くと、オブジェクトがポインタに取り付けられ、ユーザがトリガーを放した後でも、オブジェクトがユーザのコントローラまたは手で回転できるように機能することができる。最後の操作可能なオブジェクトは、ハンドコントローラとの永続的な関連付けを持つことができる。２つのコントローラを使用して、最後に選択したオブジェクトを両手で掴む（double grip）ことができる。ユーザは、手を離したり、一緒に引いたりして、拡大または縮小できる。レンダラは、コントローラ間の距離を計算し、スケーリング対象のオブジェクトの固定中心点を使用しながら、距離の変化に基づいてオブジェクトをスケーリングすることができる。固定中心点は任意の関心のある点であることができ、例えば、ズームインすると、ユーザは再センタリングすることなく拡大された領域に焦点を合わせることができる。ユーザは、倍率を変更しながらオブジェクトを回転させることもできる。
【０１４２】
いくつかの実施形態は、１つまたは複数のデジタル解剖学的モデルおよび神経解剖学的接続データを使用して、人間の神経系の双方向で機能的に代表的なモデルをレンダリングする。他の代表的なニューロンの活動に視覚的に応答し、「病変」オブジェクトに損傷を与えるシミュレートされたニューロンをレンダリングすることにより、そのような実施形態は、神経解剖学的回路の信号経路、方向性、および／または機能状態の空間的関係をユーザに伝えることができる。たとえば、ユーザが「病変」オブジェクトまたは神経学的損傷の他の表現を神経解剖学的モデルに配置した場合、代表的なシステムは、影響を受けたニューロンの中断に応答し、患者によって経験された機能喪失の特定の表現を表示することができる。マルチユーザ接続を利用することにより、そのような実施形態は、同じまたは離れた場所からのユーザが、同じ共通の双方向な環境内のデジタルアバターによって表され、同じオブジェクトとリアルタイムで対話することを可能にする。マルチユーザ環境で図を作成して教える能力を高めるために、ツールがユーザに提供され、仮想環境内のオブジェクトに固定された３次元の線画を作成することを可能にすることができる。たとえば、インストラクターがＩＭＶＲ環境での３次元の図及びダイアグラムを使用して講義を実施および記録することを可能にすることができる。いくつかの実施形態では、開示された特徴を利用して、断面ベースの医療画像技術の学生の直感的な理解を高めることができ、開示は、ＩＭＶＲ環境に存在する任意の３次元オブジェクトからの２次元断面を提供するように構成されることができ、断面に表されている３次元オブジェクトを参照する能力を維持しながら、ユーザ（例えば学生）がＣＴおよびＭＲＩ画像化の作成をシミュレートすることを可能にする。実施形態は、リアルタイムの対話（例えば、学生およびインストラクター）を提供および／または促進するだけでなく、本開示の教示はまた、自己完結型モジュールの作成を可能にする。ユーザの対話と作成された図面または断面は、送信可能な保存ファイルに記録可能／記録されることができる。これは、元々インストラクターから記録されたアクションと教訓的な指示を実行する仮想インストラクターとして表されることができる。そのような実施形態は、学生のユーザが通常の指導期間外に、そして彼ら自身のペースでコンテンツをレビューすることを可能にする。上記の断面ベースの医療画像に加えて、システムは、コンピュータ断層撮影（ＣＴ）、磁気共鳴画像（ＭＲＩ）、ポジトロン放出断層撮影−コンピュータ断層撮影（ＰＥＴ−ＣＴ）、並びに／または脳磁図（ＭＥＧ）データ、および１つ又は複数の他のデータソースの開始などのＤＩＣＯＭ画像をインポートすることができる。この情報は、様々なソフトウェアプロセスを通じてインポートされ、仮想現実で画像をレンダリングする特注の数学的システム及び方法によって分析される。さらに、いくつかの実施形態は、ユーザが関心のないデータをドロップオフしながら関心のあるデータ（密度）を見ることができる革新的な伝達関数を通じて、システム（例えば、血管、骨、組織）の疑似セグメンテーション（pseudosegmentation）を提供する。一部の実装では、これは、臨床医／ユーザに、リアルタイムで詳細な分析を行うために、最前線の構造及びシステムを強調し、前面に表示する能力を提供することができる。不透明な平面をボリュームに挿入して、従来の２Ｄ画像と同様のデータを表示することができる。ユーザは、伝達関数に埋め込まれた透明度を調整して、不透明な平面から現れる構造を視覚化することができる。さらに、いくつかの実施形態は、ＶＲ／ＡＲ環境におけるマルチユーザ対話を提供する。ユーザは同じ場所にいる必要がないので、そのような実施形態は、高速ネットワークを用いて世界中のどこからでも臨床的議論を可能にする。
【０１４３】
上記のように、上記のＩＭＶＲシステムを使用して、任意の調査分野からの任意のオブジェクトに関連付けられた任意の空間データ系列を視覚化することができる。図５１Ａ−５１Ｃは、ＣＴを介して得られた空間データ系列を使用して、宝石および／または金属のボリューム化および視覚化に使用されるＩＭＶＲシステムの例示的な実施形態を示す。図５１Ａは、ＣＴスキャンによって得られたガーネット石の画像であり、これにより、石の封入体および結晶構造の検査が可能になる。図５１Ｂは、ＩＭＶＲ環境におけるガーネット石の色付けされたレンダリングである。図５１Ｃは、図５１Ａおよび５１Ｂのガーネット石の構造図であり、一実施形態に係るＩＭＶＲシステムによって例示的なＩＭＶＲ環境でボリューム化およびレンダリングされ、図５１Ｃにおいてラベル付けされた結晶構造Ａおよび封入体Ｂを示す。
【０１４４】
様々な実施形態が上で説明されてきたが、それらは単なる例として提示されたものであり、限定ではないことを理解されたい。上記の方法および／または概略図が、特定のイベントおよび／またはフローパターンが特定の順序で発生することを示している場合、特定のイベントおよび／またはフローパターンの順序を変更することができる。実施形態が特に示され、説明されているが、形態および詳細に様々な変更を加えることができることが理解されよう。
【０１４５】
様々な実施形態が特定の特徴および／または構成要素の組み合わせを有するものとして説明されてきたが、他の実施形態は、上記の実施形態のいずれかからの任意の特徴および／または構成要素の組み合わせを有することが可能である。
【０１４６】
本明細書に記載のいくつかの実施形態は、様々なコンピュータ実装操作を実行するための命令またはコンピュータコードをその上に有する非一時的コンピュータ可読媒体（非一時的プロセッサ可読媒体とも呼ばれる）を備えたコンピュータ記憶製品に関する。コンピュータ可読媒体（またはプロセッサ可読媒体）は、それ自体が一時的な伝搬信号（例えば、空間またはケーブルなどの伝送媒体上で情報を運ぶ伝搬電磁波）を含まないという意味で非一時的である。媒体およびコンピュータコード（コードとも呼ばれる）は、特定の目的のために設計および構築されたものである場合がある。非一時的なコンピュータ可読媒体の例は、これらに限定されないが、ハードディスク、フロッピー（登録商標）ディスク、および磁気テープなどの磁気記憶媒体、コンパクトディスク／デジタルビデオディスク（ＣＤ／ＤＶＤ）、コンパクトディスク−読み取り専用メモリ（ＣＤ−ＲＯＭ）、ホログラフィックデバイスなどの光記憶媒体、光ディスクなどの光磁気記憶媒体、搬送波信号処理モジュール、および特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）デバイスなど、プログラムコードを格納および実行するように特別に構成されたハードウェアデバイスを含む。本明細書に記載の他の実施形態は、例えば、本明細書で論じられる命令および／またはコンピュータコードを含むことができるコンピュータプログラム製品に関する。
【０１４７】
本開示において、単数形の項目への言及は、明示的に別段の記載がない限り、または文脈から明らかでない限り、複数形の項目を含むと理解されるべきであり、逆もまた同様である。文法的接続詞は、特に明記されていない限り、または文脈から明らかでない限り、結合された節、文、単語などのありとあらゆる論理和および接続詞の組み合わせを表現することを目的とする。したがって、「または」という用語は、一般に、「および／または」などを意味すると理解されるべきである。本明細書で提供される任意のすべての例または例示的な言語（「例えば」「など」、「含む」など）の使用は、単に実施形態をよりよく明らかにすることを意図しており、実施形態またはクレームの範囲に制限を課さない。
【０１４８】
本明細書に記載のいくつかの実施形態および／または方法は、ソフトウェア（ハードウェア上で実行される）、ハードウェア、またはそれらの組み合わせによって実行されることができる。ハードウェアモジュールは、例えば、汎用プロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、および／または特定用途向け集積回路（ＡＳＩＣ）を含み得る。ソフトウェアモジュール（ハードウェア上で実行）は、C、C ++、Java（登録商標）、Ruby、Visual Basic（登録商標）、および／またはその他のオブジェクト指向、手続き型、またはその他のプログラミング言語および開発ツールを含む、様々なソフトウェア言語（コンピュータコードなど）で表現されることができる。コンピュータコードの例は、これらに限定されないが、マイクロコードまたはマイクロ命令、コンパイラによって生成されるようなマシン命令、Ｗｅｂサービスの生成に使用されるコード、および翻訳機を使用するコンピュータによって実行される高レベルの命令を含むファイルを含む。例えば、実施形態は、命令型プログラミング言語（例えば、Ｃ、Ｆｏｒｔａｎなど）、関数型プログラミング言語（Ｈａｓｋｅｌｌ、Ｅｒｌａｎｇなど）、論理プログラミング言語（Ｐｒｏｌｏｇなど）、オブジェクト指向プログラミング言語（Ｊａｖａ、Ｃ＋＋など）、またはその他の適切なプログラミング言語及び／又は開発ツールを使用して実装され得る。コンピュータコードの追加の例は、制御信号、暗号化されたコード、および圧縮されたコードが含まれるが、これらに限定されない。
【０１４９】
様々な本発明の実施形態が本明細書に記載および図示された。機能を実行するおよび／または結果を取得するための、並びに／または結果および／若しくは本明細書に記載の利点の１つまたは複数を得るための様々な他のツール、構成要素、要素、手段、および／または構造が理解されるべきである。そのような変形および／または修正のそれぞれは、本明細書に記載の実施形態の範囲内であると見なされる。さらに、本明細書に記載の全てのパラメータ、寸法、材料、および構成は例示的なものであり、実際のパラメータ、寸法、材料、および／または構成は、本開示の実施形態が利用および／または適用される特定の用途に依存し得ることを理解および理解されたい。当業者は、本明細書に記載の特定の新規の実施形態および実施形態と多くの同等物である、日常的な実験のみを使用して認識および／または確認することができるであろう。したがって、前述の実施形態は例としてのみ提示され、開示された実施形態およびそれに相当するものの範囲内で、実施形態は、具体的に説明および／または図示された以外の方法で実施され得ることが理解されるべきである。本開示の実施形態は、本明細書に記載の個々の特徴、システム、物品、材料、キット、および／または方法のそれぞれを対象とする。さらに、そのような機能、システム、記事、材料、キット、および／または方法が相互に矛盾しない場合、そのような機能、システム、物品、材料、キット、および／または方法の２つ以上の任意の組み合わせが、本開示の範囲内に含まれる。
【０１５０】
上記の実施形態は、多くの方法のいずれかで実装されることができる。例えば、実施形態は、ハードウェア、ソフトウェア、またはそれらの組み合わせを使用して実装することができる。ソフトウェアに実装された場合、ソフトウェアコードは、さまざまな方法で提供される任意の適切なプロセッサまたはプロセッサの集合上で実行されることができる。
【０１５１】
さらに、本開示は、医療画像システム、外科システム、治療システム、データ処理システムを含む他のシステムと併せて使用することができ、それらのいずれも、いくつかの方法のいずれかで具体化できることを理解されたい。実施形態は、マルチユーザＶＲシステム内に接続された複数のユーザデバイスを介して複数のユーザに提供することができる双方向なマルチユーザ仮想現実環境を効率的にレンダリングおよび更新するための方法および装置を含む。本明細書で使用されるように、いくつかの実施形態では、ＶＲシステムは、拡張現実（ＡＲ）システムを含むことができる。本開示は、医療／外科データ、ＶＲ／ＡＲ用に変換された多次元データを含む、双方向なマルチユーザＶＲ／ＡＲ提示および体験をレンダリング、管理、記録、および再生するための新規で有利な方法、システムおよび装置を含み、リアルタイムおよび／またはほぼリアルタイムのデータ、画像、ビデオ、音声、ストリーミングメディア、ＣＴデータ、ＭＲＩデータ、ＥＥＧデータ、ＭＥＧデータなどを含む視覚データを含むことができる。いくつかの実装形態では、多次元データの一部またはすべてがほぼリアルタイムまたはリアルタイムであり、複数のユーザ間のやり取りを同様に調整して、例えば、手術中または教育中にそのような改善を利用することができる。実施形態は、複数のユーザが共有ＶＲ／ＡＲ環境でデータをやり取りおよび操作しているときに必要とされる帯域幅を低減するように構成されることができる。例として、本開示の教示は、米国特許公開第２０１３／０２４５４６１号および／または２０１６／０１９１８８７号および／または米国特許米国特許第６，２５６，５２９号の教示と統合されることができ、それぞれの全体が、全ての目的のために参照により本明細書に明示的に組み込まれる。
【０１５２】
本明細書で概説される様々な方法および／またはプロセスは、様々なオペレーティングシステムまたはプラットフォームのいずれか１つを使用する１つまたは複数のプロセッサ上で実行可能なソフトウェアとしてコード化されることができる。さらに、そのようなソフトウェアは、いくつかの適切なプログラミング言語および／またはプログラミングまたはスクリプトツールのいずれかを使用して記述されることができ、フレームワークまたは仮想マシンで実行される実行可能機械語コードまたは中間コードとしてコンパイルされることもできる。
【０１５３】
この点に関して、開示された様々な概念は、１つまたは複数のコンピュータまたは他のプロセッサで実行されるとき、上記の開示の様々な実施形態を実装する方法を実行する１つまたは複数のプログラムでエンコードされる、非一時的なコンピュータ可読記憶媒体（または複数のコンピュータ可読記憶媒体）（例えば、コンピュータメモリ、１つまたは複数のフロッピー（登録商標）ディスク、コンパクトディスク、光ディスク、磁気テープ、フラッシュメモリ、フィールドプログラマブルゲートアレイまたは他の半導体デバイス、または他の非一時的媒体または有形コンピュータ記憶媒体の回路構成）として具体化されることができる。コンピュータ可読媒体または複数の媒体は、その上に格納された１つまたは複数のプログラムを１つまたは複数の異なるコンピュータ／計算デバイスおよび／または他のプロセッサにロードして、上記の本開示の様々な態様を実施できるように、輸送可能であり得る。
【０１５４】
「プログラム」または「ソフトウェア」という用語は、本明細書では、一般的な意味で、上記実施形態の様々な態様を実施するようにコンピュータまたは他のプロセッサをプログラムするために使用できる任意のタイプのコンピュータコードまたはコンピュータ実行可能命令のセットを指すために使用される。さらに、一態様によれば、実行時に本開示の方法を実行する１つまたは複数のコンピュータプログラムを、本開示の様々な態様を実装するために多数の異なるコンピューティングデバイス／プロセッサ間でモジュール方式で配布できることを理解されたい。
【０１５５】
プロセッサ実行可能命令は、１つ又は複数のコンピューティングデバイスによって実行されるプログラムモジュールなどの多くの形式のものであることができ、特定のタスクを実行し特定のデータタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むことができ、機能は、様々な実施形態に適切に組み合わせられ、および／または分散され得る。
【０１５６】
データ構造は、プロセッサ可読媒体に様々な適切な形式で格納されることができる。説明を簡単にするために、データ構造は、データ構造内の場所によって関連付けられたフィールドを持つように示され得る。このような関係は、同様に、フィールド間の関係を伝達するプロセッサ可読媒体内の場所を使用してフィールドにストレージを割り当てることによって実現できる。しかし、任意の適切なメカニズム／ツールを使用して、データ要素間の関係を確立するポインタ、タグ、またはその他のメカニズム／ツールの使用を含む、データ構造のフィールド内の情報間の関係を確立できる。
【０１５７】
様々な開示された概念は、１つまたは複数の方法として具体化することができ、その例が提供されている。特定の方法の一部として実行される行為は、任意の適切な方法で命令されることができる。したがって、例示的実施形態ではいくつかの行為が連続的な行為として示されている場合でも、いくつかの行為を同時に実行することを含むことができる、図示／説明とは異なる順序で行為が実行される実施形態を構築することができる。
【０１５８】
本明細書で定義および使用されるすべての定義は、辞書の定義、参照により組み込まれる文書内の定義、および／または定義された用語の通常の意味を制御するように理解されるべきである。
【０１５９】
フロー図の使用は、実行される操作の順序に関して制限することを意味するものではない。本明細書に記載の主題は、異なる他の構成要素に含まれる、またはそれらと接続される異なる構成要素を示すことがある。そのような描写されたアーキテクチャは例示的な例であり、実際、同じ機能を達成するために、本明細書の教示に従って他の多くのアーキテクチャを実装できることを理解されたい。概念的な意味では、同じ機能を実現するための構成要素の配置は、目的の機能が実現されるように効果的に「関連付け」られる。したがって、特定の機能を達成するために組み合わされた本明細書の任意の２つの構成要素は、アーキテクチャまたは中間構成要素に関係なく、所望の機能が達成されるように互いに「関連付けられている」と見なすことができる。同様に、そのように関連付けられた任意の２つの構成要素は、互いに「操作可能に接続」または「操作可能に結合」されて、目的の機能を実現していると見なされることもできる。そのように関連付けられることができる任意の２つの構成要素は、互いに「操作可能に結合可能」であり、目的の機能を実現する。動作可能に結合可能な特定の例には、物理的に結合可能および／または物理的に対話する構成要素および／または無線的に対話するおよび／または無線的に対話する構成要素および／または論理的に対話するおよび／または論理的に対話する構成要素が含まれるが、これらに限定されない。
【０１６０】
本明細書で使用される不定冠詞「ａ」および「ａｎ」は、反対に明確に示されない限り、「少なくとも１つ」を意味すると理解されるべきである。
【０１６１】
本明細書で使用される「および／または」というフレーズは、そのように結合された要素、すなわち、ある場合には結合的に存在し、他の場合には分離的に存在する要素の「いずれかまたは両方」を意味すると理解されるべきである。「および／または」でリストされた複数の要素は、同じ方法、つまり、そのように結合された要素の「１つ又は複数」において解釈されるべきである。「および／または」の節によって具体的に識別される要素以外の他の要素が、具体的に識別される要素に関連するかどうかにかかわらず、任意選択で存在し得る。したがって、非限定的な例として、「Ａおよび／またはＢ」への言及は、「含む」などの自由形式の言語と組み合わせて使用される場合、一実施形態ではＡのみ（任意選択で、Ｂ以外の要素を含む）；別の実施形態ではＢのみ（任意選択でＡ以外の要素を含む）；さらに別の実施形態では、ＡおよびＢの両方（任意選択で他の要素を含む）；等を指すことができる。
【０１６２】
本明細書で使用される場合、「または」は、上記で定義された「および／または」と同じ意味を有すると理解されるべきである。たとえば、リスト内の項目を区切る場合、「または」または「および／または」は包括的であると解釈されるものとする。つまり、要素の数またはリストの少なくとも１つを含むが、複数を含み、任意選択で、追加のリストされていないアイテムを含むものと解釈される。「ただ１つ」または「正確に１つ」など、用語のみ反対に明確に示され、または特許請求の範囲で使用される場合、「からなる」は、数または要素のリストの正確に１つの要素を含むことを指す。一般に、本明細書で使用される「または」という用語は、「どちらか」、「一方」、「いずれか」、「１つだけ」、または「ただ１つだけ」などの排他性の用語が先行する場合にのみ、排他的代替（すなわち、「一方または他方、しかし両方ではない」）を示すと解釈されるものとする。「本質的にからなる」は、特許請求の範囲で使用される場合、特許法の分野で使用される通常の意味を持つものとする。
【０１６３】
本明細書で使用される場合、１つまたは複数の要素のリストに関連する「少なくとも１つ」というフレーズは、要素のリスト内の任意の１つまたは複数の要素から選択される少なくとも１つの要素を意味すると理解されるべきであるが、必ずしもそうではなく、要素のリスト内に具体的にリストされている全ての要素の少なくとも１つを含み、要素のリスト内の要素の組み合わせを除外しない。この定義はまた、「少なくとも１つ」というフレーズが参照する要素のリスト内で具体的に識別される要素以外の要素が、具体的に識別される要素に関連するかどうかにかかわらず、任意選択で存在できることを可能にする。したがって、非限定的な例として、「ＡおよびＢの少なくとも１つ」（または、同等に、「ＡまたはＢの少なくとも１つ」、または同等に「Ａおよび／またはＢの少なくとも１つ」）は、一実施形態では、少なくとも１つ、任意選択で２つ以上、Ａを含み、Ｂが存在しない（および任意選択でＢ以外の要素を含む）；別の実施形態では、少なくとも１つ、任意選択で２つ以上、Ｂを含み、Ａが存在しない（および任意選択でＡ以外の要素を含む）；さらに別の実施形態では、少なくとも１つ、任意選択で２つ以上、Ａを含み、少なくとも１つ、任意選択で２つ以上、Ｂを含む（および任意選択で他の要素を含む）等を指すことができる。
【０１６４】
本明細書で使用される場合、「備える」、「含む」、「運ぶ」、「有する」、「包含する」、「関与する」、「保持する」、「構成される」などのすべての移行句は、制限がないこと、つまり、含むがこれに限定されないことを意味するように理解されるべきである。米国特許庁特許審査手続マニュアルのセクション2111.03に記載されているように、「からなる」および「本質的にからなる」の移行フレーズのみが、それぞれクローズドまたはセミクローズド移行フレーズであるものとする。
【図１Ａ】
2021530774.tif 000003
【図１Ｂ】
2021530774.tif 000004
【図２】
2021530774.tif 000005
【図３】
2021530774.tif 000006
【図４】
2021530774.tif 000007
【図５−１】
2021530774.tif 000008
【図５−２】
2021530774.tif 000009
【図６】
2021530774.tif 000010
【図７】
2021530774.tif 000011
【図８】
2021530774.tif 000012
【図９Ａ】
2021530774.tif 000013
【図９Ｂ】
2021530774.tif 000014
【図１０】
2021530774.tif 000015
【図１１】
2021530774.tif 000016
【図１２】
2021530774.tif 000017
【図１３】
2021530774.tif 000018
【図１４】
2021530774.tif 000019
【図１５】
2021530774.tif 000020
【図１６】
2021530774.tif 000021
【図１７Ａ】
2021530774.tif 000022
【図１７Ｂ】
2021530774.tif 000023
【図１８】
2021530774.tif 000024
【図１９Ａ】
2021530774.tif 000025
【図１９Ｂ】
2021530774.tif 000026
【図２０】
2021530774.tif 000027
【図２１】
2021530774.tif 000028
【図２２】
2021530774.tif 000029
【図２３】
2021530774.tif 000030
【図２４】
2021530774.tif 000031
【図２５】
2021530774.tif 000032
【図２６】
2021530774.tif 000033
【図２７】
2021530774.tif 000034
【図２８】
2021530774.tif 000035
【図２９Ａ】
2021530774.tif 000036
【図２９Ｂ】
2021530774.tif 000037
【図３０】
2021530774.tif 000038
【図３１Ａ】
2021530774.tif 000039
【図３１Ｂ】
2021530774.tif 000040
【図３１Ｃ】
2021530774.tif 000041
【図３２Ａ】
2021530774.tif 000042
【図３２Ｂ】
2021530774.tif 000043
【図３３Ａ】
2021530774.tif 000044
【図３３Ｂ】
2021530774.tif 000045
【図３４】
2021530774.tif 000046
【図３５】
2021530774.tif 000047
【図３６Ａ】
2021530774.tif 000048
【図３６Ｂ】
2021530774.tif 000049
【図３７】
2021530774.tif 000050
【図３８】
2021530774.tif 000051
【図３９】
2021530774.tif 000052
【図４０−１】
2021530774.tif 000053
【図４０−２】
2021530774.tif 000054
【図４１Ａ】
2021530774.tif 000055
【図４１Ｂ】
2021530774.tif 000056
【図４２Ａ】
2021530774.tif 000057
【図４２Ｂ】
2021530774.tif 000058
【図４２Ｃ】
2021530774.tif 000059
【図４３】
2021530774.tif 000060
【図４４Ａ】
2021530774.tif 000061
【図４４Ｂ】
2021530774.tif 000062
【図４５】
2021530774.tif 000063
【図４６Ａ】
2021530774.tif 000064
【図４６Ｂ】
2021530774.tif 000065
【図４７Ａ】
2021530774.tif 000066
【図４７Ｂ】
2021530774.tif 000067
【図４８】
2021530774.tif 000068
【図４９】
2021530774.tif 000069
【図５０】
2021530774.tif 000070
【図５１Ａ】
2021530774.tif 000071
【図５１Ｂ】
2021530774.tif 000072
【図５１Ｃ】
2021530774.tif 000073
【国際調査報告】
2021530774.tif 000074
2021530774.tif 000075