(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024056777
(43)【公開日】2024-04-23
(54)【発明の名称】双方向にマルチユーザの仮想現実体験を効率的にレンダリング、管理、記録、および再生するための方法及び装置
(51)【国際特許分類】
G06F 3/01 20060101AFI20240416BHJP
G06T 19/00 20110101ALI20240416BHJP
A61B 6/46 20240101ALI20240416BHJP
A61B 5/055 20060101ALI20240416BHJP
A61B 6/03 20060101ALI20240416BHJP
【FI】
G06F3/01 510
G06T19/00 A
A61B6/46 536Z
A61B5/055 380
A61B6/03 560G
【審査請求】有
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2024015708
(22)【出願日】2024-02-05
(62)【分割の表示】P 2020573385の分割
【原出願日】2019-06-27
(31)【優先権主張番号】62/690,879
(32)【優先日】2018-06-27
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/690,880
(32)【優先日】2018-06-27
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】501001186
【氏名又は名称】コロラド・ステート・ユニバーシティ・リサーチ・ファウンデーション
(74)【代理人】
【識別番号】100105924
【弁理士】
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】クラップ、トッド ロバート
(72)【発明者】
【氏名】ガルベ、ブレンダン
(72)【発明者】
【氏名】アイテル、チャド
(57)【要約】
【課題】いくつかの実施形態では、装置は、揮発性メモリと、不揮発性メモリと、不揮発性メモリに結合され、オブジェクトに関連付けられたデータセットおよびマルチユーザ仮想(IMVR)環境のユーザの空間位置に関連付けられたユーザ情報を受信するように構成された第1のプロセッサと、揮発性メモリに結合され、IMVR環境におけるオブジェクトの部分のインスタンスを、ユーザの空間位置に基づいてユーザの視点からレンダリングするように構成された第2のプロセッサと、を含む。
【解決手段】第1のプロセッサは、ユーザから受信した入力のセットに基づいてルックアップテーブル(LUT)を生成するように構成される。第2のプロセッサは、LUTおよびユーザによる操作に関連する情報に基づいて、IMVR環境における操作の効果を明らかにするオブジェクトの部分の更新されたインスタンスをレンダリングするように構成される。
【選択図】
図2
【特許請求の範囲】
【請求項1】
揮発性メモリと、
不揮発性メモリと、
前記不揮発性メモリに動作可能に結合された第1のプロセッサであって、前記第1のプロセッサはオブジェクトに関連付けられたデータセットと仮想環境における前記オブジェクトを参照する第1のユーザの第1の空間位置に関連付けられたユーザ情報とを受信するように構成され、前記データセットは前記オブジェクトの空間データ系列を含み、前記第1のプロセッサは前記第1のユーザからの入力のセットを受信するように構成され、前記入力のセットは前記オブジェクトの部分に関連付けられた所定のプロパティのセットに関連付けられる、第1のプロセッサと、
前記揮発性メモリに動作可能に結合された第2のプロセッサであって、前記第2のプロセッサは、前記ユーザ情報および前記入力のセットに基づいて、前記仮想環境における前記オブジェクトの前記部分の第1のインスタンスをレンダリングするように構成され、前記オブジェクトの前記部分の前記第1のインスタンスは、前記第1のユーザの第1の視点からのものであり、前記第1の視点は前記第1のユーザの第1の空間位置に基づく、第2のプロセッサと、
を備え、
前記第1のプロセッサ及び前記第2のプロセッサの少なくとも1つは、前記オブジェクトに関連付けられたデータパッケージを生成し、前記データパッケージを第2のユーザに関連付けられたユーザデバイスに送信して、前記オブジェクトの前記部分の第2のインスタンスが前記第2のユーザに関連付けられた前記ユーザデバイスでレンダリングされ得るようにする、ように構成され、
前記第2のプロセッサは、前記第1のユーザによる前記オブジェクトの前記部分の前記第1のインスタンスの操作に関連する操作情報を受信するように構成され、
前記第2のプロセッサは、前記操作情報に基づいて、前記仮想環境における前記操作の効果を明示する前記オブジェクトの前記部分の更新された第1のインスタンスをレンダリングするように構成され、
前記第1のプロセッサ及び前記第2のプロセッサの少なくとも1つは、前記操作情報を含む更新されたデータパッケージを生成し、前記更新されたデータパッケージを前記第2のユーザに関連付けられた前記ユーザデバイスに送信して、前記オブジェクトの前記部分の更新された第2のインスタンスが前記第2のユーザに関連付けられた前記ユーザデバイスでレンダリングされ得るようにし、前記オブジェクトの前記部分の前記更新された第2のインスタンスが前記操作の前記効果を明示する、ように構成され、
前記第1のプロセッサ及び前記第2のプロセッサの少なくとも1つは、前記オブジェクトの前記部分の前記更新された第1のインスタンスの前記レンダリングに関連付けられた媒体を記録するように構成され、前記媒体は、前記第1のユーザの前記第1の視点からの、前記オブジェクトの前記部分の前記更新された第1のインスタンスの前記レンダリングに関連付けられた空間情報を含み、前記媒体は、第2の空間位置での前記第2のユーザの第2の視点であって前記第1のユーザの前記第1の視点とは異なる前記第2の視点から、前記オブジェクトの前記部分の前記更新された第1のインスタンスをレンダリングするために再生されるように構成される、装置。
【請求項2】
前記操作情報が前記第1のユーザによる第1の操作に関連する第1の操作情報であり、前記第1の操作の前記効果が第1の効果であり、前記オブジェクトの前記部分の前記更新された第1のインスタンスが前記オブジェクトの前記部分の第1の更新された第1のインスタンスであり、前記更新されたデータパッケージが第1の更新されたデータパッケージであり、前記第1のプロセッサはさらに、
前記第2のユーザに関連付けられた前記ユーザデバイスから、前記オブジェクトの前記部分の前記第2のインスタンスの第2の操作に関連する第2の操作情報を含む第2の更新されたデータパッケージを受信し、前記第2の操作は、前記第2のユーザによってなされ、前記第2のユーザに関連付けられた前記ユーザデバイスでの第2の効果の明示に関連し、
前記第1のプロセッサ及び前記第2のプロセッサの少なくとも1つは、前記第2の操作情報に基づいて、前記第2の操作の前記第2の効果を明示する前記オブジェクトの前記部分の第2の更新された第1のインスタンスをレンダリングする、
ように構成される、請求項1に記載の装置。
【請求項3】
前記第1のプロセッサ及び前記第2のプロセッサの少なくとも1つは、前記第1のユーザから測定入力のセットを受信し、前記測定入力のセットに基づいて、測定注釈が前記オブジェクトの前記部分の前記第1のインスタンスのレンダリングとともに提示されるように、前記測定注釈を前記データセットに追加するように構成され、
前記更新されたデータパッケージは前記データセットおよび前記測定注釈を含み、前記オブジェクトの前記部分の前記更新された第2のインスタンスは前記測定注釈の表示を含む、請求項1に記載の装置。
【請求項4】
前記空間データ系列は、コンピュータ断層撮影(CT)、磁気共鳴画像法(MRI)、ポジトロン放出断層撮影、共焦点画像化、光学顕微鏡、電子顕微鏡、脳波検査(EEG)、心電図検査(MCG)、及び脳磁図検査の少なくとも1つを使用して収集された画像または点群データを含む一連の多次元データを含む、請求項1に記載の装置。
【請求項5】
前記第1のプロセッサ及び前記第2のプロセッサの少なくとも1つは、
前記第1のユーザから、前記データパッケージの共有に関連する命令を受信し、
チャンクにおいて前記命令に基づいて、前記データパッケージを前記第2のユーザに関連付けられた前記ユーザデバイスに送信して、一定期間、前記データパッケージの部分が前記第2のユーザに関連付けられた前記ユーザデバイスに関連付けられた揮発性メモリに格納され、前記ユーザデバイスに関連付けられた不揮発性メモリに格納されないようにして、前記第2のユーザに関連付けられた前記ユーザデバイスで前記オブジェクトの前記部分の前記第2のインスタンスをレンダリングし、前記一定期間の経過後、前記データパッケージの前記部分が前記第2のユーザに関連付けられた前記ユーザデバイスに関連付けられた前記揮発性メモリから消去される、ように構成される、請求項1に記載の装置。
【請求項6】
前記所定のプロパティのセットは、透明度プロパティおよび色プロパティを含み、前記入力のセットは、キーのセットを含み、前記キーのセットからの各キーは、前記透明度プロパティに関連付けられた第1の値と前記色プロパティに関連付けられた第2の値を含み、
前記第2のプロセッサは、前記キーのセットからの各キーから取得した情報を補間してルックアップテーブルを生成するように構成される、請求項1に記載の装置。
【請求項7】
前記データパッケージは、第1のデータパッケージであり、
前記第1のプロセッサ及び前記第2のプロセッサの少なくとも1つは、
前記オブジェクトに関連付けられた第2のデータパッケージを生成し、
前記第1のユーザから、前記第2のデータパッケージの共有に関連する命令を受信するように構成され、
前記命令は、前記第2のデータパッケージを第3のユーザに関連付けられたユーザデバイスに関連付けられた不揮発性メモリに格納するように前記第1のユーザからの許可及び前記第3のユーザへの許可を含み、
前記第1のプロセッサ及び前記第2のプロセッサの少なくとも1つは、
チャンクにおいて前記命令に基づいて、前記第2のデータパッケージ及び前記許可を前記第3のユーザに関連付けられた前記ユーザデバイスに送信して、一定期間、前記第2のデータパッケージの部分が、前記第3のユーザに関連付けられた前記ユーザデバイスに関連付けられた揮発性メモリに格納され、前記第3のユーザに関連付けられた前記ユーザデバイスに関連付けられた不揮発性メモリにも格納されるようにして、前記第3のユーザに関連付けられたユーザデバイスで前記オブジェクトの前記部分の第3のインスタンスをレンダリングし、前記一定期間の経過後、前記許可に基づいて、前記第2のデータパッケージの前記部分が前記揮発性メモリから消去されるが前記不揮発性メモリから消去されないようにする、ように構成される、
、請求項1に記載の装置。
【請求項8】
プロセッサによって実行される命令を表すコードを格納する非一時的なプロセッサ可読媒体であって、前記コードは、前記プロセッサに、
オブジェクトに関連付けられた医療画像を含むデータを受信するステップと、
前記オブジェクトの構造に関連付けられたデータセットと、仮想環境における前記オブジェクトを参照する第1のユーザの第1の空間位置に関連付けられたユーザ情報とを抽出するステップと、
前記第1のユーザから入力のセットを受信するステップであって、前記入力のセットは、前記仮想環境における前記オブジェクトの部分に関連付けられた所定のプロパティのセットに関連付けられている、ステップと、
前記入力のセット及び前記ユーザ情報に基づいて、前記第1のユーザの第1の視点からの前記仮想環境における前記オブジェクトの前記部分のインスタンスをレンダリングするステップであって、前記第1の視点は前記第1のユーザの前記第1の空間位置に基づく、ステップと、
前記オブジェクトに関連付けられたデータパッケージを生成するステップと、
前記データパッケージを第2のユーザに関連付けられたユーザデバイスに送信して、前記オブジェクトの前記部分の第2のインスタンスが前記第2のユーザに関連付けられた前記ユーザデバイスでレンダリングされ得るようにするステップと、
前記第1のユーザによる前記仮想環境における前記オブジェクトの前記部分の前記レンダリングされたインスタンスの操作に関連する操作情報を受信するステップと、
前記操作情報に基づいて、前記仮想環境における前記操作の効果を明示する前記オブジェクトの前記部分の更新された第1のインスタンスをレンダリングするステップと、
前記操作情報を含む更新されたデータパッケージを生成するステップと、
前記更新されたデータパッケージを前記第2のユーザに関連付けられた前記ユーザデバイスに送信して、前記オブジェクトの前記部分の更新された第2のインスタンスが前記第2のユーザに関連付けられた前記ユーザデバイスでレンダリングされ得るようにするステップであって、前記オブジェクトの前記部分の前記更新された第2のインスタンスが前記操作の効果を明示する、ステップと、
前記オブジェクトの前記部分の前記更新された第1のインスタンスの前記操作および前記レンダリングに関連付けられた媒体を記録するステップであって、前記媒体は、前記第1のユーザの前記第1の視点からの、前記オブジェクトの前記部分の前記更新された第1のインスタンスの前記レンダリングに関連付けられた空間情報を含み、前記媒体は、第2の空間位置での前記第2のユーザの第2の視点であって前記第1のユーザの前記第1の視点とは異なる前記第2の視点から、前記オブジェクトの前記部分の前記更新された第1のインスタンスをレンダリングするために再生されるように構成される、ステップと、
を行わせるためのコードを含む、非一時的なプロセッサ可読媒体。
【請求項9】
前記所定のプロパティのセットは、透明度、位置、視認性、および色を含み、前記入力のセットは、キーのセットを含み、前記キーのセットからの各キーは、透明度プロパティに関連付けられた第1の値と色プロパティに関連付けられた第2の値とを含む情報を提供するように構成され、
前記コードは、前記プロセッサに、
前記オブジェクトの前記部分の前記第1のインスタンスをレンダリングさせるステップと、
前記キーのセットからの各キーから取得した情報を補間させて前記所定のプロパティのセットからの前記所定のプロパティに関連付けられたルックアップテーブルを生成させるステップと、
を行わせるためのコードをさらに含み、前記インスタンスの前記レンダリングは前記ルックアップテーブルに基づく、請求項8に記載の非一時的なプロセッサ可読媒体。
【請求項10】
前記コードは、前記プロセッサに、
前記第1のユーザから注釈入力のセットを受信するステップと、
前記オブジェクトの前記部分の前記第1のインスタンスとともに、前記注釈入力に基づいて、前記オブジェクトの前記部分に関連付けられた注釈を表示するステップと、
更新されたデータセットを生成するステップであって、前記更新されたデータセットは、前記注釈が前記オブジェクトの前記部分のレンダリングとともに提示されるように、前記オブジェクトの前記部分に関連付けられて組み込まれた前記注釈を含む、ステップと、
前記更新されたデータセットを、前記プロセッサに関連付けられた不揮発性メモリに保存するステップと、
を行わせるためのコードをさらに含む、請求項8に記載の非一時的なプロセッサ可読媒体。
【請求項11】
前記データパッケージは、第1のデータパッケージであり、前記コードは、前記プロセッサに、
前記オブジェクトに関連付けられた第2のデータパッケージを生成するステップと、
前記第1のユーザから、前記第2のデータパッケージの共有に関連する命令を受信するステップと、
チャンクにおいて、前記第2のデータパッケージを第3のユーザに関連付けられた前記ユーザデバイスに送信して、一定期間、前記第2のデータパッケージの部分が前記第3のユーザに関連付けられた前記ユーザデバイスに関連付けられた揮発性メモリに格納され、前記第3のユーザに関連付けられた前記ユーザデバイスに関連付けられた不揮発性メモリに格納されないようにして、前記ユーザデバイスで前記オブジェクトの前記部分の第2のインスタンスをレンダリングするステップであって、前記一定期間の経過後、前記第2のデータパッケージの前記部分が前記第3のユーザに関連付けられた前記ユーザデバイスに関連付けられた前記揮発性メモリから消去される、ステップと、
を行わせるコードをさらに含む、請求項8に記載の非一時的なプロセッサ可読媒体。
【請求項12】
前記データセットは、コンピュータ断層撮影(CT)、磁気共鳴画像法(MRI)、ポジトロン放出断層撮影、共焦点画像化、光学顕微鏡、電子顕微鏡、脳波検査(EEG)、心電図検査(MCG)、及び脳磁図検査の少なくとも1つを使用して収集された画像または点群データを含む一連の多次元データを含む、請求項8に記載の非一時的なプロセッサ可読媒体。
【請求項13】
前記オブジェクトの前記部分の前記第1のインスタンスを前記レンダリングすることは、完了のレベルの尺度を定義することを含み、
前記コードは、前記プロセッサに、
前記オブジェクトの前記部分の前記第1のインスタンスの前記操作を容易にするように構成された制御のセットを提示するステップと、
前記第1のインスタンスの前記レンダリングの前記完了のレベルの前記尺度を閾値未満に決定するステップと、
前記決定に基づいて、前記制御のセットを非アクティブ状態に設定して、前記第1のユーザからの前記操作情報を前記制御のセットを介して受信できないようにするステップと、
を行わせるコードをさらに含む、請求項8に記載の非一時的なプロセッサ可読媒体。
【請求項14】
前記コードは、前記プロセッサに、
前記プロセッサに関連付けられたデバイス情報を受信するステップであって、前記デバイス情報がサンプリング情報を含む、ステップと、
前記サンプリング情報に基づいてスケーリング係数を定義するステップであって、前記オブジェクトの前記部分の前記更新された第1のインスタンスの前記レンダリングは、前記スケーリング係数に基づく、ステップと、
を行わせるコードをさらに含む、請求項8に記載の非一時的なプロセッサ可読媒体。
【請求項15】
前記コードは、前記プロセッサに、
前記データに関連付けられた許可情報を受信するステップと、
前記許可情報に基づいて、前記プロセッサに関連付けられた不揮発性メモリに前記データを格納するステップと、
を行わせるコードをさらに含む、請求項8に記載の非一時的なプロセッサ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
(関連する出願への相互参照)
この出願は、それぞれその全体が参照により本明細書に組み込まれる、2018年6月27日に出願され、「双方向にマルチユーザ、仮想現実体験を効率的にレンダリング、管理、記録、および再生するための方法及び装置」と題された米国仮出願第62/690,879号、及び2018年6月27日に出願され、「双方向にマルチユーザ、仮想現実体験を効率的にレンダリング、管理、記録、および再生するための方法及び装置」と題された米国仮出願第62/690,880号の優先権及びその利益を主張する。
【0002】
本開示は、データ処理および配信、特に、双方向なマルチユーザの仮想現実の提示および体験のレンダリング、管理、記録、および再生に関する。
【背景技術】
【0003】
コンピュータは、キーボードとマウス、およびキーボードまたはマウスからのユーザの命令に応答するプログラムを含むことができる。このようなコンピュータは、テレビ画面またはコンピュータモニターを介してユーザにフィードバックを提供することもできる。
【発明の概要】
【0004】
いくつかの実施形態では、装置は、揮発性メモリと、不揮発性メモリと、不揮発性メモリに動作可能に結合され、オブジェクトに関連付けられたデータセットおよびオブジェクトに関し且つ仮想環境(IMVR環境)におけるユーザの空間位置に関連付けられたユーザ情報を受信するように構成された第1のプロセッサであって、データセットはオブジェクトの空間データ系列を含む、第1のプロセッサと、揮発性メモリに動作可能に結合された第2のプロセッサであって、第2のプロセッサは、ルックアップテーブル及びユーザ情報に基づいて、IMVR環境内のオブジェクトの部分のインスタンスをレンダリングするように構成され、オブジェクトの部分のインスタンスはユーザの視点からのものであり、視点はユーザの空間位置に基づく、第2のプロセッサと、を含む。第1のプロセッサは、ユーザから入力のセットを受信するように構成され、入力のセットは、オブジェクトの部分に関連付けられた所定のプロパティのセットに関連付けられ、第1のプロセッサは、入力のセットに基づいてルックアップテーブルを生成するように構成される。第2のプロセッサは、ユーザによるオブジェクトの部分のインスタンスの操作に関連する操作情報を受信するように構成され、第2のプロセッサは、操作情報に基づいて、IMVR環境での操作の効果を明示するオブジェクトの部分の更新されたインスタンスをレンダリングするように構成される。
【0005】
本明細書に記載のいくつかの実施形態は、プロセッサによって実行される命令を表すコードを格納する非一時的なプロセッサ可読媒体を含み、コードは、オブジェクトに関連付けられた医療画像を含むがこれらに限定されないデータを受信させ、オブジェクトの構造(たとえば、骨、筋肉など)に関連付けられたデータセット、および仮想環境内のオブジェクトに関するユーザの空間位置に関連付けられたユーザ情報を抽出するためのコードを含む。コードはさらに、プロセッサにユーザからの入力のセットを受信させ、入力のセットは、仮想環境内のオブジェクトの一部に関連付けられた所定のプロパティのセットに関連付けられ、入力のセット及びユーザ情報に基づいて仮想環境内のオブジェクトの部分のインスタンスのセットをレンダリングさせ、仮想環境に基づいてユーザによるオブジェクトの部分のレンダリングされたインスタンスの操作に関連する操作情報を受け取らせ、操作情報に基づいて、仮想環境での操作の効果を明示するオブジェクトの部分の更新されたインスタンスをレンダリングさせるためのコードを含むことができる。コードはまた、オブジェクトの部分の更新されたインスタンスの操作およびレンダリングに関連付けられた媒体をプロセッサに記録させるコードを含むことができ、媒体は、ユーザの視点から、オブジェクトの部分の更新されたインスタンスのレンダリングに関連付けられた音声および空間情報を含み、視点はユーザの空間位置に基づく。
【0006】
本明細書に記載のいくつかの実施形態は、第1のデバイスから、第2のデバイスで、(1)仮想環境内のオブジェクトの部分の第1のインスタンスに関連付けられたデータパッケージであって、オブジェクトの三次元構造に関連付けられたデータセットを含むデータパッケージ、(2)仮想環境内のオブジェクトに関する第1のデバイスに関連付けられた第1のユーザの空間位置を含む第1のユーザ情報、および(3)オブジェクトの所定のプロパティのセットに関連付けられた第1の入力のセット、を受信するステップを含む方法を含む。本方法は、(1)第2のデバイスで、仮想環境内のオブジェクトに関する第2のデバイスに関連付けられた第2のユーザの空間位置を含む第2のユーザ情報を受信するステップと、(2)第2のユーザ情報に基づいて、第1の入力のセットから第2の入力のセットに変換するステップと、(3)第2の入力のセットに基づいてルックアップテーブルを生成するステップと、(3)第2のデバイスで、(i)データセット、(ii)入力の2番目のセット、および(iii)ルックアップテーブルに基づいて、仮想環境内のオブジェクトの部分の第2のインスタンスをレンダリングするステップであって、オブジェクトの部分の第2のインスタンスは第2のユーザの視野からであり、視野は第2のユーザの空間位置に基づく、ステップと、を含む。
【0007】
仮想現実システムは、娯楽、教育、ヘルスケア、事業運営、製造、リソース管理など、幅広く応用される。これらの応用のいくつかは、2人以上のユーザによる共同ユーザ体験の恩恵を受けることができる。仮想体験が操作されることができ、操作の結果がユーザによって体験されることができる双方向なユーザ体験を提供することはまた、大きなメリットをもたらす。
【0008】
したがって、開示された実施形態は、効率的で、管理され、記録可能、および/または再生可能な双方向なマルチユーザ仮想現実の提示/環境、特に、いくつかの実施形態では、リアルタイムおよび/またはほぼリアルタイムで、複数のユーザに対して双方向で効率的にレンダリングおよび維持されるマルチユーザ仮想現実体験のための改善された装置および方法の必要性に対処する。
【0009】
いくつかの実施形態では、装置は、メモリおよびプロセッサを含む。いくつかの実施形態では、システムは、複数の装置を含むことができる。プロセッサは、双方向なマルチユーザ仮想現実環境を生成するために使用されることができる情報を受信するように構成される。プロセッサは、双方向なマルチユーザ仮想現実環境を定義するために状態機械を初期化し、少なくとも部分的に状態機械に基づいて双方向なマルチユーザ仮想現実環境をレンダリングし双方向なマルチユーザ仮想現実システムに接続された1つまたは複数のユーザデバイスと通信し、レンダリングされた双方向なマルチユーザ仮想現実環境および/または双方向なマルチユーザ仮想現実環境を定義する状態機械に関する情報を配布するように構成される。プロセッサはさらに、1つまたは複数のユーザデバイスの状態に関連する情報を受信し、1つまたは複数のユーザアクションによってレンダリングされた双方向なマルチユーザ仮想現実環境に誘発された変化に関連する情報を受信し、レンダリングされた双方向なマルチユーザ仮想現実環境および/または受信した情報に基づいて双方向なマルチユーザ仮想現実環境を定義する状態機械を更新するように構成される。プロセッサは、双方向なマルチユーザ仮想現実環境の状態の変化に関連する変更パラメータを効率的な低帯域幅の方法で提供するように構成される。プロセッサはさらに、双方向なマルチユーザ仮想現実環境の一部を記録し、1人または複数のユーザによる1つまたは複数の記録された部分の再生を可能にするように構成される。
【図面の簡単な説明】
【0010】
【
図1A】一実施形態に係る、双方向なマルチユーザ仮想現実(IMVR)システムの概略図である。
【
図1B】一実施形態に係る、双方向なマルチユーザ仮想現実(IMVR)システムの概略図である。
【
図2】一実施形態に係る、IMVRシステム内のユーザデバイスの概略図である。
【
図3】一実施形態に係る、IMVRシステム内の双方向なマルチユーザVRレンダラの概略図である。
【
図4】一実施形態に係る、IMVRレンダラを使用して、IMVRシステムを初期化、レンダリング、および更新する方法を説明するフローチャートである。
【
図5】一実施形態に係る、IMVR体験のボリューム環境部分(volumetric environment portion)をレンダリングする例示的な方法を説明するフローチャートである。
【
図6】一実施形態に係る、IMVR環境における1人または複数のユーザによるオブジェクト操作の例示的な方法を説明するフローチャートである。
【
図7】一実施形態に係る、IMVRシステムのユーザによって開始されたときにIMVR体験を効率的に記録する例示的な方法を説明するフローチャートである。
【
図8】一実施形態に係る、IMVRシステムのユーザによって開始されたIMVR体験の記録を再生する例示的な方法を説明するフローチャートである。
【
図9A】一実施形態に係る、実行されると、プロセッサに、IMVRシステムを使用してIMVR体験の一部を生成させることができるコードの例示的な部分を示す図である。
【
図9B】一実施形態に係る、実行されると、プロセッサに、IMVRシステムを使用してIMVR体験の一部を生成させることができるコードの例示的な部分を示す図である。
【
図10】一実施形態に係る、統合されたIMVR環境を確立することによって、IMVRシステムの2人以上のユーザが経験するIMVRを同期させる例示的な方法を説明するフローチャートである。
【
図11】一実施形態に係る、IMVRシステムを使用してIMVR体験を生成するためにMEGデータを使用する例示的な方法を説明するフローチャートである。
【
図12】一実施形態に係る、IMVR環境をレンダリングするために使用される、ユーザ入力に基づいて設定された値を有する変数のサブセットの概略図である。
【
図13】一実施形態に係る、IMVR環境を生成し、IMVRシステムによってIMVR環境に関連付けられた媒体を記録する例示的な方法を説明するフローチャートである。
【
図14】IMVR環境におけるオブジェクトの第1のインスタンスに関連付けられたデータを受信し、そのデータを使用して、第1のユーザが第2のユーザとIMVR環境を共有できるようにオブジェクトの第2のインスタンスをレンダリングする例示的な方法を説明するフローチャートである。
【
図15】一実施形態に係る、IMVRシステムによって、IMVR環境においてボリュームオブジェクトをレンダリングする例示的な方法を説明するフローチャートである。
【
図16】一実施形態に係る、IMVR環境でボリュームオブジェクトをレンダリングする例示的な方法を説明するフローチャートである。
【
図17A】一実施形態に係る、IMVRシステムによってIMVR環境でレンダリングされたボリュームオブジェクトをシェーディングする例示的な方法を説明するフローチャートを示す。
【
図17B】一実施形態に係る、IMVRシステムによってIMVR環境でレンダリングされたボリュームオブジェクトをシェーディングする例示的な方法を説明するフローチャートを示す。
【
図18】一実施形態に係る、IMVRシステムによる光線マーチングアプローチ(ray marching approach)を使用して、IMVR環境でボリュームオブジェクトをレンダリングする例示的な方法を説明するフローチャートである。
【
図19A】一実施形態に係る、ユーザの空間位置に基づいてIMVR環境でオブジェクトをレンダリングするためにデプスバッファを使用する例示的な方法を説明するフローチャートである。
【
図19B】一実施形態に係る、ユーザの空間位置に基づいてIMVR環境でオブジェクトをレンダリングするためにデプスバッファを使用する例示的な方法を説明するフローチャートである。
【
図20】一実施形態に係る、IMVR環境の断面図をキャプチャするためのユーザの選択、IMVR環境でレンダリングされたボリュームオブジェクトに関連付けられた3次元メッシュオブジェクトへのユーザのアクセス、およびIMVR環境におけるユーザアクションによって望まれる変更を実装するためにIMVRシステムで呼び出される機能に関連するユーザアクションのシーケンスの概略図である。
【
図21】一実施形態に係る、IMVR環境の断面図をキャプチャするためのユーザの選択、IMVR環境でレンダリングされたボリュームオブジェクトに関連付けられた3次元メッシュオブジェクトへのユーザのアクセス、およびIMVR環境におけるユーザアクションによって望まれる変更を実装するためにIMVRシステムで呼び出される機能に関連するユーザアクションのシーケンスの概略図である。
【
図22】別の実施形態に係る、IMVR環境におけるオブジェクトの断面図をキャプチャする実装を説明するフローチャートである。
【
図23】別の実施形態に係る、IMVR環境におけるオブジェクトの断面図をキャプチャする実装を説明するフローチャートである。
【
図24】一実施形態に係る、IMVRシステムによるIMVR環境内のオブジェクトの色付きビューをレンダリングする例示的な方法を説明するフローチャートである。
【
図25】一実施形態に係る、IMVRシステムによって2つ以上のソースから取得された、IMVR環境内のオブジェクトの複合ビューを生成する例示的な方法を説明するフローチャートである。
【
図26】一実施形態に係る、インストラクターがIMVRシステムを実装する学生間の共有IMVRセッションのセットに柔軟に参加または離脱できるように、IMVR環境でレンダリングされたオブジェクトの複数のインスタンスを管理するように構成されたIMVRシステムの概略図である。
【
図27】一実施形態に係る、IMVRシステムを使用して、ホストマシンとクライアントマシンとの間でIMVR環境に関連するデータを共有する方法の概略図である。
【
図28】一実施形態に係る、IMVRシステムを使用して、IMVR環境においてオブジェクトのスケーリングされたボリューム表現を生成する例示的な方法を説明するフローチャートである。
【
図29A】様々な実施形態に係る、IMVRシステムを使用した、IMVR環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【
図29B】様々な実施形態に係る、IMVRシステムを使用した、IMVR環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【
図30】様々な実施形態に係る、IMVRシステムを使用した、IMVR環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【
図31A】様々な実施形態に係る、IMVRシステムを使用した、IMVR環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【
図31B】様々な実施形態に係る、IMVRシステムを使用した、IMVR環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【
図31C】様々な実施形態に係る、IMVRシステムを使用した、IMVR環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【
図32A】様々な実施形態に係る、IMVRシステムを使用した、IMVR環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【
図32B】様々な実施形態に係る、IMVRシステムを使用した、IMVR環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【
図33A】様々な実施形態に係る、IMVRシステムを使用した、IMVR環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【
図33B】様々な実施形態に係る、IMVRシステムを使用した、IMVR環境におけるボリュームオブジェクトのレンダリングに関連する例示的なツールの実装を説明するフローチャートを示す。
【
図34】一実施形態に係る、IMVRシステムの注釈ツールを使用して、IMVR環境内のオブジェクトの表現に注釈を付ける例示的な方法を説明するフローチャートである。
【
図35】一実施形態に係る、IMVRシステムを使用して、IMVR環境においてスケーリングされたメッシュモデル表現オブジェクトを生成および使用する例示的な方法を説明するフローチャートである。
【
図36A】一実施形態に係る、デバイスに関連付けられたユーザがIMVRシステムを使用してIMVR環境に参加することを可能にするようにデバイスに転送されることができる例示的なデータパッケージの概略図である。
【
図36B】一実施形態に係る、進行中のIMVRセッションに参加するユーザに関係する一連のイベントを示すフローチャートである。
【
図37】一実施形態に係る、IMVRシステムを使用してIMVRセッションにおけるユーザ間でデータパッケージを転送するときにユーザの準備完了状態を示す方法の例示的な実装を説明するフローチャートである。
【
図38】一実施形態に係る、ユーザがIMVRシステムを使用して進行中のIMVRセッションに参加することを許可されたときに、データパッケージを管理し、新しいユーザに関連する情報をIMVR体験の進行中のセッションとマージする例示的な方法を説明するフローチャートである。
【
図39】一実施形態に係る、IMVRシステムを使用して、複数の同時ユーザが関与するIMVRセッションに関連付けられたユーザインターフェースを管理する例示的な方法を説明するフローチャートである。
【
図40】一実施形態に係る、ユーザが任意の数の進行中のIMVRセッションのうちの1つに参加することを可能にする方法の例示的な実装を説明するフローチャートである。
【
図41A】一実施形態に係る、ユーザインターフェースを介してユーザによって操作可能なキーのセットによって表されるオブジェクトプロパティのセットを備えた例示的なユーザインターフェースの概略図である。
【
図41B】一実施形態に係る、ボリュームオブジェクトをレンダリングするためにIMVRシステムによって使用される、
図41Aのユーザインターフェースに関連付けられた例示的なキーの概略図である。
【
図42A】ユーザが選択し、ネットワークを介してデータの新しいチャネルをユーザデバイスに送信する例示的な方法を説明するフローチャートである。
【
図42B】一実施形態に係る、キーの調整を介してIMVR環境のユーザ操作を実装し、ネットワークを介した最小のデータ転送の戦略を使用して、IMVRシステム内にキーの調整をユーザデバイスに伝播する例示的な方法を説明するフローチャートである。
【
図42C】一実施形態に係る、IMVRシステムにおけるキーのセットを使用してボリュームオブジェクトのカラー化されたレンダリングを生成するための例示的な方法を示すフローチャートである。
【
図43】一実施形態に係る、キーのセットに関連付けられた情報を補間することによって、ボリュームオブジェクトの色付けされたレンダリングを生成するための例示的な方法を示すフローチャートである。
【
図44A】IMVRシステムに関連付けられた異なるタイプのイベントの概略図である。
【
図44B】一実施形態に係る、IMVRシステムの例示的な読み取りおよび書き込みイベントベースの構成の概略図である。
【
図45】一実施形態に係る、IMVRセッションに関連して定められたイベントを生成および処理するための例示的な方法を示すフローチャートである。
【
図46A】涙滴の形をしたモデル表現オブジェクトの図である。
【
図46B】一実施形態に係る、
図46Aにおいて示されているモデル表現オブジェクトのいくつかのインスタンスを使用して脳磁図を介して得られたデータの表現を含むIMVR環境の斜視図の図である。
【
図47A】一実施形態に係る、ユーザがMEGデータに関連付けられたデータセットおよびMEGデータに含まれるオブジェクトのレンダリングをナビゲートすることを可能にするように構成されたIMVRシステムの例示的なユーザインターフェースの概略図である。
【
図47B】
図47Aのユーザインターフェースに機能を実装する例示的な方法を説明するフローチャートである。
【
図48】一実施形態に係る、MEGデータセットを読み取り、MEGデータセットから情報を抽出して、MEGデータセットに含まれるオブジェクトのインスタンスをレンダリングすることに関連するプロシージャを実装する例示的な方法を説明するフローチャートである。
【
図49】一実施形態に係る、IMVRシステムを使用して、MEGデータセットに基づいてオブジェクトのレンダリングにフレーム毎の更新を実装する例示的な方法を説明するフローチャートである。
【
図50】一実施形態に係る、IMVRシステムを使用して、MEGデータに基づいてオブジェクトのレンダリングを実装する例示的な方法を説明するフローチャートである。
【
図51A】一実施形態に係る、CTを介して得られた空間データ系列を使用して、宝石および/または金属のボリューム化および視覚化に使用されるIMVRシステムの例示的な実施形態を示す図である。
【
図51B】一実施形態に係る、CTを介して得られた空間データ系列を使用して、宝石および/または金属のボリューム化および視覚化に使用されるIMVRシステムの例示的な実施形態を示す図である。
【
図51C】一実施形態に係る、CTを介して得られた空間データ系列を使用して、宝石および/または金属のボリューム化および視覚化に使用されるIMVRシステムの例示的な実施形態を示す図である。
【発明を実施するための形態】
【0011】
本明細書に記載の実施形態は、マルチユーザ仮想現実(VR)システム内に接続された複数のユーザデバイスを介して複数のユーザに提供される双方向なマルチユーザ仮想現実環境を効率的にレンダリングおよび更新するための方法および装置に関する。本開示は、例えば、医療データを含む、双方向なマルチユーザVR提示および体験をレンダリング、管理、記録、および再生するための方法、システム、および装置を含む。このような医療データは、VR用に変換されることでき、複数のソース(コンピュータ断層撮影(CT)、磁気共鳴画像(MRI)、脳波(EEG)、脳磁図(MEG)、超音波画像など)を含むことができる。一部の実装では、医療データはほぼリアルタイムまたはリアルタイムであり、複数のユーザ間のやり取りは同様に調整されることができる。実施形態は、複数のユーザが共有VR環境でデータをやり取りおよび操作しているときに使用される帯域幅を減らすように構成されることができる。追加的または代替的に、実施形態は、マルチユーザセッションが記録されるときに使用されるストレージスペースを削減するように構成されることができ、その結果、1人または複数のユーザによるその後の再生は、削減された処理能力および/または帯域幅を使用する。
【0012】
本明細書では、教育、訓練、娯楽、研究、診断、手術、患者医療の管理、修復技術、ヘルスケアでの人工装置の使用、機械および自動車産業での製造と修理などを含むがこれらに限定されない様々な用途に使用できる、双方向なマルチユーザ仮想現実環境の効率的なレンダリングおよび保守のための方法および装置が記載される。いくつかの実施形態では、装置は、メモリと、メモリに動作可能に結合されたプロセッサとを含む。プロセッサは、1つまたは複数のユーザデバイスを含むシステムの一部として構成されることができる。プロセッサは、双方向なマルチユーザ仮想現実(IMVR)環境をレンダリングし、レンダリングされたIMVR環境に関連する情報をユーザデバイスに効率的に配布するように構成され、その結果、ユーザがユーザデバイスに接続されることができ、レンダリングされたIMVR環境を用いて体験および/またはやり取りすることができる。プロセッサは、ユーザデバイスからの入力、例えば、ユーザのやり取りに関連する入力を効率的に受信するように構成されることができる。システムはさらに、プロセッサが、ユーザのやり取りによって引き起こされた変化を含む、IMVR環境の状態の変化に関連する情報をユーザデバイスに効率的に転送できるように構成される。さらに、ユーザデバイスはまた、情報をプロセッサおよび/または互いに効率的に転送できるように構成することができ、IMVR環境のユーザ体験を向上させる。
【0013】
図1Aは、本明細書では「IMVRシステム」または「システム」とも呼ばれる、双方向なマルチユーザ仮想現実システム100の概略図である。IMVRシステム100は、同期された双方向な3次元IMVR環境を構築、初期化、および維持することによって、ユーザデバイス101~103のセットによってアクセスされる双方向に操作可能なマルチユーザ仮想現実環境をレンダリングおよび維持するように構成される。一実施形態によれば、IMVRシステム100は、環境の基礎として提供される任意の適切なデータから3次元の双方向な仮想環境を生成することができる。IMVRシステム100は、
図1Aに示されるように、通信ネットワーク106を介して双方向なマルチユーザ仮想現実レンダラ105(「レンダラ」とも呼ばれる)に接続されたユーザデバイス101、102、および103を含む。
【0014】
IMVR環境のレンダリングに使用するのに適したデータは、オブジェクトを含む任意の空間データ系列を含むことができる。空間データ系列は、場合によっては、とりわけオブジェクトのボリュームを定める情報を含むことができ、場合によっては、空間データ系列は、オブジェクトの構造(例えば、三次元構造)を定める情報を含むことができる。データ系列は、任意のモードの光学顕微鏡で取得したオブジェクトの連続断面画像を含むことができる。データ系列は、画像又は点群データを含む一連の多次元データを含むことができる。例は、コンピュータ断層撮影(CT)、磁気共鳴画像(MRI)、ポジトロン放出断層撮影、共焦点画像、光学顕微鏡、電子顕微鏡、脳波(EEG)、心磁図(MCG)、脳磁図(MEG)、および/または超音波イメージングを使用して収集されたデータを含む。場合によっては、空間データ系列は、複数の技術、技術、および/またはデータソースを使用して収集されたデータを含むことができる。例えば、空間データ系列は、複数の異なるデータソースから収集され、IMVRレンダラ105によって使用される異なるチャネルにロードされるデータを含むことができる。たとえば、CTデータを第1チャネルに入力し、MRIデータを第2チャネルに入力することができる。次に、画像は、CTデータとMRIデータとの両方を使用して、本明細書で説明するように、IMVR環境でレンダリングすることができる。他の例では、他の任意の組み合わせおよび/またはデータソースの数が入力として使用されることができる。
【0015】
空間データ系列は、人間または動物の解剖学的構造に関連するオブジェクト、研究、診断、治療、哺乳類および/または非哺乳類種の獣医学研究、植物研究、その他の生物または非生物組織(例、生体内で、生体外で、自然の位置でなど)および天然または合成の生物のために用いられるオブジェクトを含むことができる。例として医療画像を使用して本明細書で説明する一方で、本明細書で説明するシステム、装置、および方法を使用して、オブジェクトの構造特性に関連する情報を含む空間データ系列を使用して任意のオブジェクトを視覚化することができる。オブジェクトの他の例は、宝石、地質学研究からのサンプル、考古学研究からのサンプル、建築作業からのサンプルなどである。空間データ系列は、場合によっては、分子(例えば、高分子、タンパク質など)の1つまたは複数の細胞または細胞内オブジェクト構造に関連する情報を含むことができる。例えば、空間データ系列は、適切な供給源、例えば、タンパク質構造予測サーバ(例えば、高度なタンパク質二次構造予測サーバ)から3次元でモデル化および/または生成された酵素分子の構造および/または表面特徴に関連するデータを含むことができる。空間データ系列は、場合によっては、原子または亜原子粒子に関連する情報を含むことができる。空間データ系列は、場合によっては、電子的に生成されたオブジェクトに関連する情報、たとえばアーティストによってレンダリングされたメッシュオブジェクトを含むことができる。場合によっては、本明細書で説明するように、IMVRシステムによって提供されるツールを使用して、本明細書で説明するように、オブジェクトをIMVR環境で生成することができる。場合によっては、電子的に生成されたオブジェクトは、空間データ系列が適切なデータ形式から取得されることができるように、外部ソース(たとえば、オブジェクトの2次元および/または3次元モデルを生成するための適切な市販のプラットフォーム)または他の適切なデータ処理環境から取得またはインポートされることができる。
【0016】
通信ネットワーク106(「ネットワーク」とも呼ばれる)は、パブリックおよび/またはプライベートネットワーク上で動作することができる、データを転送するための任意の適切なデータ通信経路であり得る。通信ネットワーク106は、プライベートネットワーク、仮想プライベートネットワーク(VPN)、マルチプロトコルラベルスイッチング(MPLS)回路、インターネット、イントラネット、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、マイクロ波アクセスネットワーク(WiMAX(登録商標))の世界的な相互運用性、光ファイバ(または光ファイバ)ベースのネットワーク、Bluetooth(登録商標)ネットワーク、仮想ネットワーク、および/またはそれらの任意の組み合わせを含むことができる。場合によっては、通信ネットワーク106は、例えば、Wi-Fi(登録商標)またはワイヤレスローカルエリアネットワーク(「WLAN」)、ワイヤレスワイドエリアネットワーク(「WWAN」)、および/またはセルラーネットワークなどのワイヤレスネットワークであり得る。他の例では、通信ネットワーク106は、例えば、イーサネット(登録商標)ネットワーク、デジタル加入線(「DSL」)ネットワーク、ブロードバンドネットワーク、および/または光ファイバネットワークなどの有線接続であり得る。場合によっては、ネットワークは、アプリケーションプログラミングインターフェース(API)および/またはデータ交換フォーマット(例えば、Representational State Transfer(REST)、JavaScript(登録商標) Object Notation(JSON)、Extensible Markup Language(XML)、Simple Object Access Protocol(SOAP)など)、および/またはJavaメッセージサービス(JMS))を使用することができる。通信は暗号化することも暗号化しないこともできる。場合によっては、通信ネットワーク106は、例えば、ネットワークブリッジ、ルータ、スイッチ、および/またはゲートウェイによって互いに動作可能に結合された複数のネットワークまたはサブネットワークを含むことができる。
【0017】
IMVRシステム100内のユーザデバイス101、102、および103はそれぞれ、1つまたは複数のユーザまたはユーザのグループに関連付けられた、互いに相互接続されたデバイスまたはデバイスの適切な組み合わせであり得る。すなわち、ユーザデバイス101、102、および103は、構造的および/または機能的に互いに類似し得る。3つのユーザデバイスを含むように示されているが、本明細書で説明する任意のIMVRシステムは、2つまたは3つのユーザデバイスに限定されず、任意の数のユーザを含むIMVRセッションを介して共有IMVR体験をサポートすることができる。
【0018】
図1Bは、本明細書では「IMVRシステム」または「システム」とも呼ばれる、双方向なマルチユーザ仮想現実システム100’の概略図である。IMVRシステム100’は、同期された双方向な3次元IMVR環境をそれぞれ構築、初期化、および維持するユーザデバイス101’~103’のセットによってアクセスされる双方向で操作可能なマルチユーザ仮想現実環境をレンダリングおよび維持するように構成される。IMVRシステム100’は、環境の基礎として提供される任意の適切なデータから3次元の双方向な仮想環境を生成することができる。IMVRシステム100’は、
図1Bに示されるように、通信ネットワーク106’を介してピアツーピアネットワークで互いに接続されたユーザデバイス101’、102’、および103を含む。
【0019】
図1BのIMVRシステム100’は、IMVRシステム100’が、IMVRシステム100のように別個のデバイスとしてIMVRレンダラ(例えば、IMVRレンダラ105)を含まないことを除いて、
図1AのIMVRシステム100と実質的に同様であり得る。代わりに、ユーザデバイス101-103と実質的に同様であるユーザデバイス101’-103’は、さらに、サーバ(IMVRシステム100のIMVRレンダラ105のような)を使用せずにピアツーピア方式で同期された双方向なIMVR環境を構築、初期化、および維持するように構成されることができる。本明細書に記載のデバイス、装置、および方法は、IMVRレンダラ(IMVRレンダラ、例えば、IMVRレンダラ105、305などによって実行される方法または機能)を指す場合があるが、いくつかの実施形態では、IMVRシステムは、IMVRシステム100'と同様に構成されることができる。IMVRレンダラに関連付けられていると記載されている機能、方法、またはプロセスは、IMVRシステムに関連するユーザデバイス(例えば、IMVRシステム100’に関連付けられたユーザデバイス101’-103’など)内の1つまたは複数の構成要素を使用して分散方式で実行または実施されることができる。
【0020】
図2は、
図1のユーザデバイス101、102、および103と実質的に同様であり得る例示的なユーザデバイス201を示す。ユーザデバイス201は、ユーザ計算デバイス210、仮想現実コントローラ219、および仮想現実ディスプレイ220を含む。いくつかの実施形態では、VRコントローラ219およびVRディスプレイ220は、適切な有線または無線接続を使用して互いに接続された別個のデバイスであり得る。他の実施形態では、VRコントローラ219およびVRディスプレイ220は、IMVR体験のためのディスプレイおよびコントローラを含む単一のデバイスに統合することができる。
図2には示されていないが、ユーザデバイス201はまた、計算デバイス210、VRコントローラ219および/またはVRディスプレイ220と相互接続することができる、音声受信機(例えば、マイクロフォン)および/または音声プレーヤー(例えば、スピーカー)、触覚(haptic又はtactile)センサまたはアクチュエータ、加速度計の他のモダリティの1つまたは複数の周辺センシング、受信または作動デバイスを含むことができる。
【0021】
VRコントローラ219は、ユーザ計算デバイス210および/またはVRディスプレイ220などのユーザデバイス201の1つまたは複数の構成要素を制御するために使用されるように構成され得る任意の適切なデバイスであり得る。いくつかの実施形態では、VRコントローラ219は、マウス、キーボード、および/またはジョイスティックデバイスであり得る。いくつかの実施形態では、VRコントローラ219は、慣性測定装置であり得る。いくつかの実施形態では、VRコントローラ219は、加速度計、磁力計などのような1つまたは複数のセンサを含むモーションコントローラであり得る。VRコントローラ219は、ユーザデバイス201および/またはIMVR環境の構成要素を操作するために使用することができる、1つまたは複数のアクチュエータまたはボタン、スクロールホイール、ハンドリングスティックなどの制御項目を含むことができる。本明細書で記載されるように、ユーザデバイス201は1つのVRコントローラ219を含むように説明されるが、任意の適切な数のVRコントローラを使用して、ユーザデバイスを操作するか、またはユーザデバイスおよび/若しくはIMVR環境に関連してレンダリングされるオブジェクトのインスタンスを操作することができる。例えば、VRコントローラ219を使用して、VRディスプレイ220を通して見ることができるユーザインターフェース(UI)を開始することによって、IMVR体験を開始することができる。VRコントローラ219は、例えば、ボタンをクリックする、メニューを開くなどによって、UIを変更するために使用することができる。VRコントローラは、ユーザインターフェースおよび/またはIMVR環境でデバイスを指し示したり操作したりするために使用できるカーソルのような制御項目を生成するために使用されることができる。
【0022】
場合によっては、IMVR環境は、IMVR環境内からIMVR環境の2次元ビューを取得し、IMVRセッションに参加するために使用されることができる、IMVR環境内から生成された1つまたは複数のモバイルエンティティを含むことができる。場合によっては、モバイルエンティティを操作するユーザは、IMVRセッションに参加せず、IMVR環境内からIMVRセッションのオブザーバになることができる。例えば、モバイルエンティティ(例えば、フライカム)は、IMVR環境内で定めることができ、(モバイルエンティティの視点からの)斜視2次元ビューを1人または複数のユーザに投影するために使用することができる。モバイルエンティティに関連付けられたユーザは、必要に応じてモバイルエンティティを移動、回転、および/または方向付けして、IMVR環境の様々な領域または側面を表示できる。
【0023】
いくつかの実施形態では、VRディスプレイ220は、データを受信し、ユーザのためにIMVR環境に2次元ウィンドウを生成するように構成された適切な2次元モニタであり得る。いくつかの実施形態では、VRディスプレイはまた、音声スピーカー、音声入力を受信するためのマイクロフォン、眼球運動またはユーザの目の動きなどを追跡するための瞳孔トラッカーなど、ユーザのIMVR体験を強化または増強するために使用できる1つまたは複数のセンサおよび/またはアクチュエータを含むことができる。
【0024】
VRディスプレイ220は、データを受信し、ユーザのために仮想現実体験を生成するように構成された適切な仮想現実ヘッドセットであり得る。いくつかの実施形態では、VRディスプレイは、2Dおよび/または3Dを投影するように構成されることができるグラフィカルディスプレイユニットを含むことができる。いくつかの実施形態では、VRディスプレイはまた、音声スピーカー、音声入力を受信するためのマイクロフォン、眼球運動またはユーザの目の動きを追跡するための瞳孔トラッカー、ユーザの体の姿勢および向きの変化を認識するセンサ(例えば、頭の動き、頭の向き、ジェスチャなど)、体の動きおよび身長をキャプチャするためのセンサなど、ユーザのVR体験を強化または増強するために使用できる1つまたは複数のセンサおよび/またはアクチュエータを含むことができる。
【0025】
ユーザ計算デバイス210は、ハードウェアベースのコンピューティングデバイスおよび/またはマルチメディアデバイス、例えば、サーバ、デスクトップコンピューティングデバイス、スマートフォン、タブレット、ウェアラブルデバイス、ラップトップなどであり得る。いくつかの実施形態では、計算デバイス210は、VRコントローラ219および/またはVRディスプレイと統合するか、またはその一部とすることができる。いくつかの実施形態では、計算デバイス210は、VRコントローラ219およびVRディスプレイ220から別々に収容され、それらに接続され得る。計算デバイス210は、プロセッサ211、メモリ212、およびコミュニケータ213を含む。
【0026】
プロセッサ211は、例えば、ハードウェアベースの集積回路(IC)、または一連の命令またはコードを実行および/または実行するように構成された任意の他の適切な処理デバイスであり得る。例えば、プロセッサ211は、汎用プロセッサ、中央処理装置(CPU)、加速処理装置(APU)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックであり得る。 アレイ(PLA)、コンプレックスプログラマブルロジックデバイス(CPLD)、プログラマブルロジックコントローラ(PLC)などであり得る。プロセッサ211は、システムバス(例えば、アドレスバス、データバス、および/または制御バス)を介してメモリ212に動作可能に結合されることができる。
【0027】
図2に示されるように、プロセッサ211は、データレシーバ214、ユーザ状態機械215、ユーザ固有のVRレンダラ216、ユーザ状態アップデータ217、コントローラハンドラ218、およびVRレコーダ221を含むことができる。データレシーバ214、ユーザ状態機械215、ユーザ固有のVRレンダラ216、ユーザ状態アップデータ217、コントローラハンドラ218、およびVRレコーダ221を含む各構成要素は、メモリ212に格納され、プロセッサ211によって実行されるソフトウェアであることができる(例えば、プロセッサ211にデータレシーバ214、ユーザ状態機械215、ユーザ固有のVRレンダラ216、ユーザ状態アップデータ217、コントローラハンドラ218、およびVRレコーダ221を実行させるためのコード)。構成要素を実行するためのコードは、メモリ212および/または、例えば、ASIC、FPGA、CPLD、PLA、PLCなどのようなハードウェアベースのデバイスに格納することができる。
【0028】
データレシーバ210は、VRコントローラ219、VRディスプレイ220、通信ネットワークを介してユーザデバイス201に接続されたIMVRレンダラ(例えば、
図1に示されるIMVRシステム100のIMVRレンダラ105)、および/または他のユーザデバイス(例えば、ユーザデバイス201が含まれるのと同じIMVRシステムに接続されたユーザデバイス)から転送されたデータを受信するように構成される。いくつかの実装形態では、データレシーバ214は、IMVRレンダラによって生成された双方向なマルチユーザVR環境の状態を示す初期化された状態を受信するように構成されることができる。場合によっては、データレシーバ214は、IMVRレンダラによって既に生成および初期化されたVR環境の状態に対する更新を受信することができる。たとえば、更新は、IMVRシステムに接続された他のユーザのやり取りからであり得るVR環境内のオブジェクトまたは他のユーザの相対的な位置および/または状態の変化を表すことができる。
【0029】
ユーザ状態機械215は、ユーザデバイス201を使用するユーザの状態を表す一組の表示を生成および維持するように構成されることができる。いくつかの実装形態では、ユーザ状態機械215は、VRコントローラ219からの入力などのユーザから受信した入力、および/またはユーザに接続された他の感知、受信、および/または作動デバイス(マイク、触覚受信機、加速度計など)に基づいてユーザ状態を定め、ユーザのVR体験のセッション中にユーザの状態を維持することができる。
【0030】
ユーザ固有のVRレンダラ216は、IMVR環境に関する情報を中継するレンダラ(例えば、
図1に示されるIMVRシステム100のレンダラ105)から受信したデータを使用するように構成されることができ、ユーザ固有のVRレンダラ216は、ユーザデバイス201のユーザのためにユーザ固有のIMVR体験を維持する。いくつかの実施形態では、IMVRレンダラを有するサーバなしで動作するIMVRシステム(例えば、
図1BのIMVRシステム100’)において、ユーザ固有のVRレンダラ216は、直接受信された、IMVR環境に関するデータ中継情報を使用するように構成され得る。ユーザ固有のVRレンダラ216は、ユーザデバイス201のユーザのためにユーザ固有のIMVR体験を生成および維持するように構成されることができる。例えば、ユーザ固有のVRレンダラ216は、デバイス201のユーザが参加しているIMVR環境、およびユーザデバイス201を使用するユーザの相対的なアクション、位置、または視点(例えば、空間的位置、姿勢、VR環境との対話など)に関する情報を受信することができる。この情報を使用して、ユーザ固有のVRレンダラ216は、ユーザデバイス201のユーザに適用するように調整されたIMVR環境のユーザ固有のバージョンを生成することができる。IMVR環境のユーザ固有のバージョンは、IMVR環境でのユーザの仮想提示によって知覚されることになるIMVR環境の視覚、音声、触覚、および/または他のモダリティへの適切な修正を含む、ユーザデバイス201のユーザの視点からのIMVR環境の提示を含むことができる。例えば、いくつかの実装形態では、ユーザ固有のVRレンダラ216は、VRコントローラ219および/またはVRディスプレイ220の位置を追跡することによって推定されるユーザの空間位置に基づいて、IMVR環境のビューを変更することができる。いくつかの実装形態では、ユーザ固有のレンダラ216は、IMVR環境の特定の側面(例えば、IMVR環境内の特定のオブジェクトまたはビュー)をユーザデバイス201のユーザに明らかにするように構成することができ、そうでなければ、明らかにされたオブジェクトは、(例えば、見えない、または視界から遮られているなど)より多くの他のユーザに利用不可能である。
【0031】
プロセッサ211は、VRコントローラ219、VRディスプレイ220、および/または他の周辺感知、受信および/または作動デバイスから情報を受信するように構成されたユーザ状態アップデータ217を含む。ユーザ状態アップデータ217はさらに、受信した情報を使用して、ユーザおよび/またはユーザの直接の環境の状態の変化、すなわち、IMVR環境でのユーザのアクションまたはユーザによる操作を記録するように構成される。ユーザ状態アップデータ217は、情報を使用してユーザ状態機械215を更新し、変更をユーザ状態機械215および/またはIMVRレンダラ(例えば、
図1Aのシステム100のレンダラ105)に伝達する。いくつかの実装形態では、ユーザ状態アップデータ217はまた、ユーザ状態機械215への変更を、同じIMVRシステムに接続され得る他のユーザに通信するように構成されることができる。いくつかの実装形態では、ユーザ状態アップデータ217は、IMVRレンダラ(例えば、
図1BのIMVRシステム100'内)などのサーバを関与させることなく、ピアツーピア方式で、同じIMVRシステムに接続され得る他のユーザデバイスにユーザ状態機械215への変更を直接通信するように構成され得る。
【0032】
いくつかの実装形態では、ユーザ状態アップデータ217はまた、ユーザ状態への変更によって引き起こされたIMVR環境への変更を記録し、変更をIMVRレンダラ(例えば、システム100のレンダラ105)および/または他のユーザデバイス(例えば、IMVRシステム100のユーザデバイス101、102、および103)に伝達することができる。一例として、ユーザデバイス201のユーザがVR環境の一部、例えば、対象の循環系の内部解剖学的構造(例えば、血管系)を描くVR環境の心臓部分を拡大する場合、ユーザ状態アップデータ217は、拡大点、拡大のスケール、VR環境が拡大される軸などの操作のプロパティを記録することができる。ユーザ状態アップデータ217は、ユーザの状態(例えば、ユーザによって使用される制御点、拡大するためのユーザのジェスチャ、ユーザによって使用されるカーソルなどの1つまたは複数の制御オブジェクトの位置など)に関連するユーザ状態機械215を更新することができ、変更をIMVRレンダラに伝達する。ユーザ状態機械はまた、ユーザによって知覚されたユーザの操作によってIMVR環境に誘発された変化を記録し、IMVR環境に誘発された変化をレンダラに伝達することができる。例えば、ユーザ状態アップデータ217はまた、IMVR環境の特定の構造または部分の倍率の結果として生じる変化を、IMVRレンダラおよび/またはIMVRシステム内の他のユーザデバイスに伝達することができる。
【0033】
プロセッサ211は、コマンドを送信し、VRコントローラ219からフィードバックを受信するように構成されたコントローラハンドラ218を含む。 いくつかの実装形態では、コントローラハンドラ218は、VRコントローラ219に関連付けられた1つまたは複数の制御オブジェクトを生成および誘導および/または向けるように構成されることができる。いくつかの実装形態では、コントローラハンドラ218は、VRコントローラ219を使用してポインティングおよび追跡プロシージャを実行するように構成されることができる。いくつかの実装形態では、コントローラハンドラ218は、レイキャスティング、方向検出、回転検出、適切な座標空間におけるVRコントローラの位置ベクトルの検出などの1つまたは複数のプロシージャを使用して、VRコントローラ219を介してユーザによって実行される焦点およびアクションを推定することができる。いくつかの実装形態では、コントローラハンドラ218は、1つまたは複数の他の構成要素またはユーザデバイス201の構成要素の一部と協調して動作することができる。例えば、コントローラハンドラ218は、VRディスプレイ220内の視線追跡デバイス、または含まれ得る他のセンサおよびアクチュエータ(
図2には示されていない)と協調して動作することができる。
図2のユーザデバイス201は、1つのVRコントローラ219を示しているが、任意の数の適切なVRコントローラがユーザデバイスに含まれることができる。たとえば、一部の実装では、ユーザデバイスは、たとえば、倍率の変更、ピボット、回転など、2点アクセスを使用することがある操作を実行するために、IMVR環境の2つのアクセスポイント、またはユーザデバイスに関連付けられてレンダリングされたオブジェクトのインスタンスの2つのアクセスポイントを操作するために使用されることができる、それぞれが1つのカーソルをガイドする2つのコントローラを含むことができる。コントローラハンドラ218はまた、IMVR環境を提示および更新してユーザデバイス201のユーザ、ならびにIMVRレンダラおよび/またはIMVRシステム内の他のユーザデバイスにユーザによって誘発された変更を伝達するために、ユーザ状態機械215、ユーザ状態アップデータ217、および/またはユーザ固有のVRレンダラ216などのプロセッサ211の他の構成要素と協調して動作するように構成されることができる。
【0034】
プロセッサ211は、ユーザによる開始時に、ユーザが経験したIMVR環境の少なくとも一部を記録するように構成されたVRレコーダ221を含むことができる。 そのような記録は、後で再生するために、例えば、ユーザ計算デバイス211のメモリ212に保存することができる。
【0035】
ユーザ計算デバイス210のメモリ212は、不揮発性および揮発性メモリ、例えば、ランダムアクセスメモリ(RAM)、ビデオRAM(VRAM)、メモリバッファ、ハードドライブ、読み取り専用メモリ(ROM)、消去可能なプログラム可能な読み取り専用メモリ(EPROM)などを含むことができる。いくつかの実施形態では、不揮発性メモリをプロセッサに関連付けることができ、揮発性メモリをプロセッサに関連付けることができる。いくつかの実施形態では、異なるプロセッサ(例えば、第1のプロセッサ(CPU)および第2のプロセッサ(GPU))またはプロセッサの一部を、それぞれ、不揮発性メモリおよび揮発性メモリに関連付けることができる。メモリ212は、例えば、プロセッサ211に1つまたは複数のプロセス、機能など(例えば、データレシーバ210、ユーザ状態機械215、ユーザ固有のVRレンダラ21、ユーザ状態アップデータ217、コントローラハンドラ218および/またはVRレコーダ221)を実行させる命令を含むことができる1つまたは複数のソフトウェアモジュールおよび/またはコードを格納することができる。いくつかの実装形態では、メモリ212は、IMVRレンダラ(例えば、
図1Aのシステム100のIMVRレンダラ105)、VRコントローラ219、および/またはVRディスプレイ220との間で転送されたデータを受信および格納するように構成されることができる。いくつかの実装形態では、メモリ212は、ピアツーピア方式において1つまたは複数のユーザデバイス(例えば、
図1Bのシステム100'のユーザデバイス101'~103')との間で、VRコントローラ219、および/またはVRディスプレイ220に加えて、および/またはVRディスプレイ220との間で直接転送されたデータを受信および格納するように構成されることができる。いくつかの実装形態では、メモリ212は、プロセッサ211に動作可能に結合することができるポータブルメモリ(例えば、フラッシュドライブ、ポータブルハードディスクなど)であり得る。場合によっては、メモリは、ユーザ計算デバイス210と遠隔操作可能に結合されることができる。例えば、リモートデータベースサーバは、ユーザ計算デバイス210に動作可能に結合されることができる。
【0036】
コミュニケータ213は、プロセッサ211およびメモリ212に動作可能に結合されたハードウェアデバイス、および/またはプロセッサ211によって実行されるメモリ212に格納されたソフトウェアであり得る。コミュニケータ213は、例えば、ネットワークインターフェースカード(NIC)、Wi-Fi(登録商標)モジュール、ブルートゥース(登録商標)モジュール、および/または他の任意の適切な有線および/または無線通信デバイスであり得る。さらに、コミュニケータは、スイッチ、ルータ、ハブ、および/または他の任意のネットワークデバイスを含むことができる。コミュニケータ213は、ユーザ計算デバイス210を通信ネットワーク(
図1に示される通信ネットワーク106など)に接続するように構成されることができる。場合によっては、コミュニケータ213は、例えば、インターネット、イントラネット、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、マイクロ波アクセスネットワーク(WiMAX(登録商標))に関するワールドワイドな相互運用性(worldwide interoperability)、光ファイバ(または光ファイバ)ベースのネットワーク、ブルートゥース(登録商標)ネットワーク、仮想ネットワーク、および/またはそれらの任意の組み合わせなどの通信ネットワークに接続するように構成されることができる。
【0037】
場合によっては、コミュニケータ213は、通信ネットワーク(例えば、
図1のIMVRシステム100内の通信ネットワーク106)を介したファイルおよび/またはファイルのセットの受信および/または送信を容易にすることができる。場合によっては、受信したファイルは、本明細書でさらに詳細に説明するように、プロセッサ211によって処理され、および/またはメモリ212に格納され得る。
【0038】
図1Aに戻ると、IMVRシステム100に接続されているユーザデバイス101~103は、IMVRレンダラと通信するように構成されることができる。
図3は、IMVRシステムの一部であるIMVRレンダラ305の概略図である。IMVRレンダラ305は、
図1に示されるシステム100のレンダラ105と構造的および機能的に類似することができる。IMVRレンダラ305は、サーバプロセッサ351、サーバメモリ352、およびサーバコミュニケータ353を含む。前述のように、いくつかの実施形態では、IMVRシステムは、IMVRレンダラ(例えば、
図1BのIMVRシステム100')なしでピアツーピア方式において動作するように構成されることができる。その場合、構成要素(例えば、サーバプロセッサ351、サーバメモリ352、およびサーバコミュニケータ353)およびIMVRレンダラ305を参照して以下に説明する構成要素に関連する動作は、分散方式において、ユーザデバイス(例えば、
図1Bのユーザデバイス101'~103')内の1つまたは複数の構成要素によって実行されることができる。
【0039】
いくつかの実施形態では、IMVR環境(
図1Aの集中制御されたIMVRシステム100と
図1BのピアツーピアIMVRシステム100'との間のハイブリッド)は、それが1つ又は複数の機能および/または動作に使用されるサーバを含む一方で、他の動作が互いに接続されたユーザデバイスによって分散された方法で他の動作が実行されるように構成され得る。例えば、いくつかのそのような実施形態では、IMVRセッションの初期化中にデータパッケージを保存してユーザデバイスに提供するために使用されるが、IMVRセッション中のデータ転送または通信において限定的または全く役割を果たさないサーバが含まれ得る。別の例として、いくつかの実施形態では、IMVRシステムは、IMVRセッションに関連する情報を保存に使用される(例えば、IMVRセッションの記録を保存する)サーバを含むことができるが、IMVRセッションに関連する他の機能を実行しない。
【0040】
サーバプロセッサ351は、一連の命令またはコードをラン(run)および/または実行するように構成されたハードウェアベースの集積回路(IC)または任意の他の適切な処理デバイスであり得る。例えば、サーバプロセッサ351は、汎用プロセッサ、中央処理装置(CPU)、加速処理装置(APU)、出願固有の集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)、コンプレックスプログラマブルロジックデバイス(CPLD)、プログラマブルロジックコントローラ(PLC)などであり得る。サーバプロセッサ351は、システムバス(例えば、アドレスバス、データバス、および/または制御バス)を介してサーバメモリ352に動作可能に結合されている。サーバプロセッサ351は、さらに詳細に説明されるように、適切な接続またはデバイスを介してサーバコミュニケータ353と動作可能に結合される。
【0041】
図2のユーザデバイス201のユーザ計算デバイス210内のコミュニケータ213と同様に、サーバコミュニケータ353は、サーバプロセッサ351およびサーバメモリ352に動作可能に結合されたハードウェアデバイスおよび/またはサーバプロセッサ351によって実行されるサーバメモリ352に格納されたソフトウェアであり得る。サーバコミュニケータ353は、例えば、ネットワークインターフェースカード(NIC)、Wi-Fi(登録商標)モジュール、ブルートゥース(登録商標)モジュール、および/または他の任意の適切な有線および/または無線通信デバイスであり得る。さらに、コミュニケータ353は、スイッチ、ルータ、ハブ、および/または他の任意のネットワークデバイスを含むことができる。サーバコミュニケータ353は、IMVRレンダラ305を通信ネットワーク(
図1に示される通信ネットワーク106など)に接続するように構成されることができる。場合によっては、サーバコミュニケータ353は、例えば、インターネット、イントラネット、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、マイクロ波アクセスネットワーク(WiMAX(登録商標))に関するワールドワイドな相互運用性、光ファイバ(または光ファイバ)ベースのネットワーク、ブルートゥース(登録商標)ネットワーク、仮想ネットワーク、および/またはそれらの任意の組み合わせなどの通信ネットワークに接続するように構成されることができる。
【0042】
サーバメモリ352は、ランダムアクセスメモリ(RAM)、メモリバッファ、ハードドライブ、読み取り専用メモリ(ROM)、消去可能なプログラム可能な読み取り専用メモリ(EPROM)などであり得る。サーバメモリ352は、例えば、サーバプロセッサ351に1つまたは複数のプロセス、機能などを実行させる命令を含むことができる1つまたは複数のソフトウェアモジュールおよび/またはコードを格納することができる。いくつかの実装形態では、サーバメモリ352は、サーバプロセッサ351に動作可能に結合することができるポータブルメモリ(例えば、フラッシュドライブ、ポータブルハードディスクなど)であり得る。場合によっては、サーバメモリはサーバと遠隔に動作可能に結合されることができる。例えば、サーバメモリは、サーバとその構成要素に動作可能に結合されたリモートデータベースサーバであり得る。
【0043】
サーバプロセッサ352は、本明細書でさらに詳細に説明するように、外部ソースからの受信および格納データを収集すること、IMVR環境を生成するためのデータを使用すること、(
図1のIMVRシステム100と同様の)IMVRシステムを介して接続されたユーザデバイスからのデータを収集すること、1人または複数のオンラインユーザなどに有するIMVR環境を維持および更新することを含む、いくつかの機能を実行するように構成されることができる。サーバプロセッサ351は、所定の機能を実行するように構成された1つまたは複数のユニットを含むことができ、1つまたは複数のユニットは、ハードウェアベースのユニット(例えば、集積回路(IC)または一連の命令若しくはコードをランおよび/または実行するように構成された任意の他の適切な処理デバイス)または一連の命令若しくはコード、あるいはその2つの組み合わせの実行によって生成された仮想マシンユニットである。例えば、
図3に示されるように、サーバプロセッサ351は、イニシャライザ354、サーバ状態機械355、レンダラ356、データトランスミッタ357、データコレクタ358、ユーザ状態マッパー359、およびサーバ状態アップデータ360を含むことができる。イニシャライザ354、サーバ状態機械355、レンダラ356、データトランスミッタ357、データコレクタ358、ユーザ状態マッパー359、およびサーバ状態アップデータ360を含む各構成要素は、サーバメモリ352に格納され、サーバプロセッサ351によって実行されるソフトウェアであり得る(例えば、サーバプロセッサ351にイニシャライザ354、サーバ状態機械355、レンダラ356、データトランスミッタ357、データコレクタ358、ユーザ状態マッパー359、および/またはサーバ状態アップデータ360を実行させるためのコード)。構成要素を実行するためのコードは、サーバメモリ352および/または、例えば、ASIC、FPGA、CPLD、PLA、PLCなどのようなハードウェアベースのデバイスに格納されることができる。
【0044】
イニシャライザ354は、1人または複数のユーザが使用できるIMVR環境を生成および初期化するように構成されることができる。いくつかの実装形態では、イニシャライザ354は、IMVRシステム(例えば、
図1のIMVRシステム100)と通信するために使用できるユーザインターフェース(UI)を生成するように、および/またはIMVR環境を生成するように構成されることができる。
図9Aおよび9Bは、UI(例えば、モジュールUI)を生成するためにプロセッサ(例えば、サーバプロセッサ351)によって実行され得るコードの例示的な部分を示す。いくつかの実装形態では、イニシャライザは、外部ソースから(例えば、サーバコミュニケータ353を介して)適切なフォーマットでデータを閲覧およびロードし、データを使用してIMVR環境を生成するように構成されることができる。例えば、場合によっては、イニシャライザ351は、既知のデータフォーマットの医療画像(例えば、医療におけるデジタル画像および通信(DICOM)画像またはRAW画像)を受信し、画像に基づいてIMVR環境を初期化することができる。一例として、画像は、対象の臓器系(例えば、神経系、循環器系、または呼吸器系)に関する情報を含むことができ、これを使用して、内部構造を高倍率、解像度(definition)、及び特異性(specificity)で表示および/またはプローブできるIMVR環境を生成することができる。イニシャライザ354は、IMVR環境の生成に関連する様々な変数およびパラメータを定義することができる。いくつかの実装形態では、イニシャライザ354は、初期IMVR環境の様々な側面を生成する任意の数の関数および/またはサブ関数を呼び出すことができる。いくつかの実装形態では、イニシャライザ354は、一連のプロパティに基づいてIMVR環境を定めるサーバ状態機械355を構築するように構成されることができる。
【0045】
サーバ状態機械355は、所定の安定状態のセットのうちの1つにあり得るサーバプロセッサ351のデバイスまたはユニットであり得る。状態機械355は、プロパティのセットによって定義されることができ、各プロパティは、パラメータ値のセットの1つを想定することができる。サーバ状態機械355の状態は、サーバ状態機械355のプロパティのセットのパラメータ値によって定義されることができる。サーバ状態機械355のプロパティおよびパラメータ値は、イニシャライザ354またはサーバ状態アップデータ360などのサーバプロセッサ351の他の構成要素またはユニットによって設定および/または変更されることができる。例えば、イニシャライザ354は、サーバ状態機械355の各プロパティの初期パラメータ値を設定し、サーバ状態機械355を初期化することができる。
【0046】
サーバプロセッサ351は、サーバ状態機械355の状態などの情報を使用し、1人または複数のユーザの参加およびやり取りのためにIMVR環境をレンダリングするように構成されたレンダラ356を含むことができる。次に、レンダラ356は、IMVR環境のレンダリングの一部を実行する1つまたは複数の関数またはサブ関数を呼び出すか、または実行させることができる。例えば、レンダラ356は、環境内の3次元形状でオブジェクトのボリュームを充填するボリューマイザ(本明細書では「ボリュームレンダラ」とも呼ばれる)、および/またはIMVR環境に含まれるオブジェクトの表面の外観の様々な態様を制御する機能(例えば、テクスチャライザ、シェーダ、ブレンダなど)を含む他の機能を呼び出すことができる。その例示的な実施形態は、本明細書でさらに詳細に説明される。
【0047】
いくつかの実装形態では、レンダラ356は、閾値基準、プリセット係数、またはルックアップテーブル(LUT)の形で所定の値を生成および/または使用して、IMVR環境内のオブジェクトのレンダリングを導くことができる。場合によっては、サーバ状態機械355の1つまたは複数の所定の値およびパラメータ値は、1人または複数のユーザが設定または変更するためにアクセス可能であり得る。いくつかの実装形態では、レンダラ356は、IMVR環境をレンダリングするために使用される変数のサブセットの値を設定するために、ユーザから情報を受け取ることができる。
図12は、ユーザ入力に基づいてレンダラ356によって設定されるように構成されることができるいくつかの例示的な変数を例示する。場合によっては、IMVRレンダラ305は、1つまたは複数のテスト実装で動作されることができ、その結果、レンダラ356は、サーバ状態機械355の1つまたは複数の所定の値および/またはパラメータ値の様々な値を試すことができ、後の実装でIMVR環境を初期化するために格納及び使用される。
【0048】
サーバプロセッサ351は、IMVRレンダラ305に接続された任意の数のユーザデバイスとの間で送受信するように構成されたデータトランスミッタ357およびデータコレクタ358を含むことができる。データトランスミッタ357は、例えば、レンダリングされたIMVR環境、サーバ状態機械の状態、環境のプロパティなどに関する情報を送信することができる。データコレクタ358は、接続されたユーザデバイスからデータを受信または収集するように構成されることができ、データは、様々なユーザ状態機械(例えば、ユーザデバイス201に関して記述されるユーザ状態機械215)の状態、ユーザによる動きまたはジェスチャ、ユーザ間の通信などの情報を含む。
【0049】
サーバプロセッサ351は、ユーザデバイスから受信した情報を取り込み(assimilate)、情報をIMVR環境および/またはサーバ状態機械355の潜在的な変化にマッピングするユーザ状態マッパー359を含むことができる。次に、サーバ状態アップデータ360は、ユーザデバイスから受信され、ユーザ状態マッパー359によってマッピングされた情報を使用して、サーバ状態機械355を更新するように構成されることができる。例えば、特定のユーザデバイスの観点からのIMVR環境への変更(すなわち、そのユーザデバイスを使用するユーザのアクションによって引き起こされる変更)は、データコレクタ358によって受信され得る。ユーザのアクションによって引き起こされた変更は、ユーザ状態マッパー359によって、ユーザの視点からIMVR環境の一般的な座標に変換されることができる。次に、サーバ状態アップデータ360は、この情報を使用して、サーバ状態機械355を更新することができる。
【0050】
場合によっては、データコレクタ358およびデータトランスミッタ357は、IMVRレンダラ305に接続された2つのユーザデバイス間で同期されたIMVR体験を確立するのを助けることができる。いくつかの実装形態では、ユーザデバイス自体が、例えば、サーバ状態機械およびユーザ状態機械に関連するデータをユーザデバイス間で通信することによって、同期されたIMVR体験の確立を仲介することができる。
【0051】
ユーザデバイスの説明は、プロセッサおよびメモリを含むユーザ計算デバイスを含むが、いくつかの実施形態では、ユーザデバイスは、上述の機能を実行するために使用されることができる複数のメモリおよび複数のプロセッサを含むように構成されることができる。ユーザデバイスは、揮発性メモリ(たとえば、グラフィックスプロセッシングユニット(GPU)に関連付けられたメモリ、ビデオランダムアクセスメモリ(VRAM))と、不揮発性メモリ(たとえば、中央処理装置(CPU)に関連付けられたメモリ、RAM)と、および不揮発性メモリに動作可能に結合された第1のプロセッサ(例えば、CPU)と、揮発性メモリに動作可能に結合された第2のプロセッサ(例えば、GPU)と、を含むことができる。プロセッサの構成要素によって実行されるものとして上記の機能の任意の組み合わせは、第1のプロセッサまたは第2のプロセッサの構成要素によって実行されることができる。例えば、ユーザ計算デバイス210に関連して説明される機能は、第1のプロセッサと第2のプロセッサとの間で分割することができ、データ受信機、コントローラハンドラ、および/またはVRレコーダは、第1のプロセッサに関連付けられることができ、ユーザ状態機械、ユーザ固有のVRレンダラ、および/またはユーザ状態アップデータを第2のプロセッサに関連付けられることができる。
【0052】
IMVRレンダラ(IMVRレンダラ305)の説明は、サーバプロセッサおよびサーバメモリを含むが、いくつかの実施形態では、サーバメモリは、揮発性メモリ(例えば、グラフィックスプロセッシングユニット(GPU)に関連するメモリ、ビデオランダムアクセスメモリ(VRAM))及び不揮発性メモリ(たとえば、中央処理装置(CPU)に関連付けられたメモリ、RAM)を含むことができる。そして、IMVRレンダラに関連すると説明されている機能は、第1のプロセッサと第2のプロセッサとの間で分割することができ、第1のプロセッサは、不揮発性メモリに動作可能に結合され(例えば、CPU)、第2のプロセッサは、揮発性メモリに動作可能に結合される(例えば、GPU)。例えば、いくつかの実施形態では、イニシャライザ、データ送信機、および/またはデータコレクタは、第1のプロセッサに関連付けられた構成要素であることができ、サーバ状態機械、レンダラ、ユーザ状態マッパー、および/またはサーバ状態アップデータは、第2のプロセッサに関連付けられることができる。
【0053】
図4は、IMVR環境を生成および維持するために、IMVRレンダラ(IMVRレンダラ305など)によって実行される例示的な方法400を説明するフローチャートである。前述のように、いくつかの実施形態では、IMVRシステム(例えば、
図1BのIMVRシステム100’)は、IMVRレンダラなしで、ユーザデバイスがピアツーピア方式で互いに接続されるように構成されることができる。そのような実施形態では、IMVRレンダラによって実行されるものとして本明細書に記載される方法および/または機能(例えば、
図4の方法400)は、ユーザデバイス(例えば、IMVRシステム100'のユーザデバイス101'-103')の1つ又は複数の構成要素によって実行または実施されることができる。使用中、IMVRレンダラは、471で、IMVR環境またはIMVR体験の生成に使用できる画像またはその他の情報に関連するデータを取得することができる。場合によっては、データは、診断、教育、研究、トレーニングなどの目的で使用できる双方向なマルチユーザVR環境を生成するために使用されることができる、医療画像などの画像の3次元スタックを含むことができる。
【0054】
472で、取得したデータはIMVR環境に適したベースにロードされることができる。たとえば、データは、テクスチャアセットと呼ばれる既存または事前に決定されたテクスチャベースにロードされることができる。ロードされた3次元テクスチャアセットは、一時メモリまたはランダムアクセスメモリ(RAM)からグラフィックプロセッサメモリ(GPUメモリ)に転送されることができる。
【0055】
473で、IMVRサーバは、仮想体験のフレームをレンダリングすることができる。474で、IMVRレンダラは、オブジェクトの前面および背面のデプス情報を使用して、環境内のオブジェクトをピクセル単位でレンダリングする。475で、IMVRレンダラは、オブジェクトの距離に基づいて、入力されたオブジェクトに対してサンプリングおよびブレンディングプロシージャを実行する。たとえば、サンプリングプロシージャに、ユーザの計算された空間位置に基づいて、3次元データセット内の空間内のポイントのセットをクエリして、空間内のそのポイント内のオブジェクトの強度値に関連するサンプリング情報を受信することを含む。IMVRレンダラは、サンプリング情報に基づいて、ユーザの視点からの空間内のポイントのセットの投影表現を介して3次元オブジェクトの投影を提示することができる。
【0056】
476で、IMVRレンダラは、オブジェクトの状態に関する情報を受信し(例えば、サーバ状態機械の状態を介して)、オブジェクトの相対サイズ、オクルージョンなどの他の関連データに基づいてオブジェクトの位置を評価および/または検証する。
【0057】
477で、IMVRレンダラは、サンプルに閾値条件を適用し、閾値条件を満たさないサンプルを破棄する。たとえば、IMVRレンダラは、データセットの表示可能範囲を定める閾値設定に関連付けられた入力を受信することができ、閾値を超えるサンプルのみが表示可能になる。一部の実装では、IMVRレンダラは、閾値スライダー制御ツールを使用して閾値設定を受け取ることができる。閾値基準および所定の条件に対して評価されたサンプルを使用して、サーバ状態機械が更新されることができる。評価ステップは、ステップ479によって示されるように、ピクセル上、距離によってリストされたオブジェクト上、および/またはレンダリングされたIMVR環境のフレーム上で繰り返しかつ反復的に実行されることができる。たとえば、レンダラは200ミリ秒ごとに更新されるピクセルで動作できる。別の例として、レンダラは60フレーム/秒(fps)で更新されるフレームで動作することができる。
【0058】
478で、IMVRレンダラは、ユーザデバイスから検出された状態の変化に基づいてレンダリングされた環境を更新する。IMVRレンダラは、接続されている1つ又は複数のユーザデバイスからユーザ状態の変更に関連する情報を受信することができ、受信した情報に基づいて、IMVRレンダラはサーバ状態機械を更新することができる。479で、IMVRレンダラは、異なる距離にある各オブジェクト、各ピクセル、および各フレームについて、それぞれ475から477、474から477、および473から477のステップを反復サイクルで繰り返す。サーバ状態機械は、479に示すように、各ピクセル、場所または距離によってリストされた各オブジェクト、および/またはレンダリングされた環境の各フレームによってレンダリングされた環境を評価した後、反復プロセスでのユーザ状態の変化からの情報で更新されることができる。
【0059】
480で、IMVRレンダラは、レンダリングされた環境における状態変化をユーザデバイスに伝達する。IMVRレンダラは、たとえばサーバ状態機械の状態を介して、レンダリングされた環境の更新された状態である1つ又は複数のユーザデバイスと通信することができる。IMVR環境またはIMVR環境の一部をレンダリングし、状態変化をユーザデバイス(473~480)に伝達するステップは、ユーザの動きおよび/またはアクションが監視されるときに反復的に繰り返されることができる。1人または複数の接続されているユーザによるユーザ体験が完了すると、481で、レンダリングされたマルチユーザ環境を終了することができる。
【0060】
図5は、一実施形態に係る、本明細書に記載のIMVRシステムを使用してボリューム測定IMVR環境をレンダリングする例示的な方法を説明するフローチャート500の図である。場合によっては、ボリュームレンダリングは、IMVRシステム内のIMVRレンダラ(例えば、レンダラ305)によって実行されることができる。前述のように、いくつかの実施形態では、IMVRシステム(例えば、
図1BのIMVRシステム100’)は、IMVRレンダラなしで、ユーザデバイスがピアツーピア方式で互いに接続されるように構成されることができる。そのような実施形態では、IMVRレンダラによって実行されるものとして本明細書に記載される方法および/または機能(例えば、
図5の方法500)は、ユーザデバイス(例えば、IMVRシステム100'のユーザデバイス101'-103')の1つまたは複数の構成要素によって実行または実施され得る。場合によっては、ボリュームレンダリングは、ユーザデバイスに関連付けられたレンダラ(例えば、ユーザデバイス201のユーザ固有のレンダラ216)によって実行されることができる。たとえば、レンダラは、一連のDICOMファイル、画像ファイル、RAWデータファイル、またはその他の適切なデータ系列からデータを読み取り、そのデータを揮発性メモリ(GPUメモリなど)またはユーザデバイスにロードされることができる。
【0061】
レンダラは、レンダリングされるボリュームオブジェクトに関連付けられ得るプロパティに関連付けられた値のセットを取得することができる。いくつかの例示的なプロパティは、閾値を使用して設定された視認性、アルファ係数を使用して設定された透明度、オブジェクトの状態、ユーザの視点から見たオブジェクトのデプス(たとえば、ユーザに対するオブジェクトの最前面を表す前面のデプス、およびユーザからオブジェクトの最も遠いデプスを表す背面のデプス)を含む。場合によっては、プロパティに関連付けられた1つ又は複数の値は、ユーザによって提供されることができる。
【0062】
IMVRレンダラは、3次元データの1つ又は複数のチャネルによって提供される空間内のポイントをサンプリングすることができる。サンプルは、たとえば、3つの色分けされたデータチャネル(赤(R)、緑(G)、青(B))に関連付けられた強度値、および強度データに対応する透明度チャネル(A)を含むRGBAサンプルであることができる。IMVRレンダラは、サンプリングされたポイントのデプスとレンダリングされるオブジェクトとの関係(たとえば、前面のデプスと背面のデプスに対するサンプリングされたポイントのデプス)を評価し、ユーザからの視線内の閉塞オブジェクト(occlusive object)を評価することができる。IMVRレンダラは、データセットの表示可能範囲を設定するように構成された閾値プロパティに関連付けられた入力を受信することができ、閾値を超えるサンプルのみが表示可能になる。一部の実装では、IMVRレンダラは、閾値スライダーコントロールを使用して閾値設定を受信し、サンプリングされた値を視認性を示す閾値プロパティ値と比較することができる。サンプル値が閾値よりも大きい場合、レンダラは、サンプル値を、ユーザが事前に決定したプロパティ(オブジェクトに関連付けられている色及び透明度のプロパティなど)に基づいて生成された1つ又は複数のルックアップテーブル(チャネル毎に1つのLUTなど)にマッピングすることができ、レンダリングされるボリュームオブジェクトの一部のインスタンスとしてマップされた値を提示することができる。IMVRレンダラは、返されたマップ値をピクセル毎に表示し、ボリュームオブジェクトをフレーム毎にレンダリングすることができる。IMVRレンダラは、ユーザからのオブジェクトの距離に応じて、距離に依存する方法でサンプリングとレンダリングのこのプロセスを繰り返すことができる。一部の実装では、IMVRレンダラは、RGBAサンプルの値を、以前にピクセルに対して行われた距離反復(distance iteration)からの他のRGBAサンプルの値とブレンド(blend)することができる。
【0063】
図6は、ユーザによるオブジェクト操作の例示的な方法600を説明するフローチャートである。方法600は、一実施形態に係る、ユーザによって使用されるVRコントローラ、ユーザデバイスに関連付けられたコントローラハンドラ(例えば、
図2のユーザデバイス201のコントローラハンドラ218)、ユーザデバイスに関連付けられたレンダラ(例えば、ユーザ固有のレンダラ216)および/またはIMVRシステムのIMVRレンダラ(例えば、IMVRレンダラ305)のプロパティを監視することを介して、ユーザのアクション、動き、および/または位置を記録、評価および/または格納することを含むことができる。例えば、ユーザデバイスのコントローラハンドラ(例えば、
図2に示されるユーザデバイス201のコントローラハンドラ218)は、フローチャート600に記載されている1つまたは複数の機能を実行することができる。前述のように、いくつかの実施形態では、IMVRシステム(例えば、
図1BのIMVRシステム100’)は、IMVRレンダラなしで、ユーザデバイスがピアツーピア方式で互いに接続されるように構成されることができる。そのような実施形態では、IMVRレンダラによって実行されるものとして本明細書に記載される方法および/または機能(例えば、
図6の方法600)は、ユーザデバイス(例えば、IMVRシステム100'のユーザデバイス101'-103')の1つまたは複数の構成要素によって実行または実施され得る。例えば、フローチャート600に示されるように、ユーザデバイスは、1つまたは複数のコントローラを含むことができ、各コントローラは、押された状態または押されていない状態にある機能を備えたボタンを含む。
【0064】
ユーザデバイスおよび/またはレンダラは、コントローラを介してユーザ入力を受信し、各コントローラのボタン押下状態を判定することができる。単一のコントローラの場合、ボタンを押すとレンダラが呼び出され、コントローラの位置、回転、スケールなど、IMVR環境内のユーザの現在の姿勢を判定することができる。これらの値は、「現在の姿勢」として格納されることができる。レンダラは、中心点に対する姿勢の変化を判定し、前の姿勢と現在の姿勢との差を計算することができる。レンダラは、姿勢変更の決定に基づいて、操作されたオブジェクトの姿勢を変更することができる。このプロセスは、現在の姿勢が前の姿勢としてタグ付けされた状態で繰り返し実行されることでき、次の反復の現在の姿勢と比較するために使用されることができる。
【0065】
2つのコントローラの場合、レンダラはIMVR環境を参照して各コントローラの姿勢を判定し、コントローラ間の中心点とコントローラ間の距離を計算することができる。レンダラは、中心点と距離を使用して中心点の姿勢を計算できる。中心点の姿勢は、上記のように姿勢の変化を判定するために使用されることができる。レンダラは、姿勢変更の決定に基づいて、操作されたオブジェクトの姿勢を変更することができる。このプロセスは、シングルコントローラ方式を参照して上記のように繰り返し実行されることができる。
【0066】
いくつかの実施形態では、IMVRシステムは、1人または複数のユーザによるIMVR体験を記録および/または再生することができるように構成されることができる。
図7は、IMVR体験のユーザ開始記録を実行するために、IMVRシステム(例えば、ユーザデバイス(例えば、ユーザデバイス201)またはIMVRレンダラ(例えば、レンダラ305))によって実行される例示的な方法を説明するフローチャートを示す。いくつかの実施形態では、IMVRシステムは、記録が効率的に行われることができ、生成された記録ファイルが記憶および/または転送を容易にするために縮小されたサイズに構成され得るように構成されることができる。
【0067】
いくつかの実装形態では、例えば、ユーザは、IMVR体験の記録を開始することができ、ユーザデバイス(例えば、ユーザデバイス201)またはIMVRレンダラ(例えば、IMVRレンダラ305)は、そのIMVR体験に関連付けられたIMVR環境で利用可能な識別された記録可能なオブジェクトのリストを生成することができる。オブジェクト毎に、レンダラはタイマーを開始することができる。レンダラは、一連の時点の各時点について、オブジェクトの状態とその時点でのオブジェクトに関連付けられたタイムスタンプとを取得し、その値を記録リストに書き込むことができる。レンダラは、記録の定期的な間隔で、プレーヤーの状態またはユーザの状態を、その時点でのプレーヤーに関連付けられたタイムスタンプとともに取得できる。レンダラは、特定のイベントでオブジェクトの状態を取得するように構成することもできる(たとえば、トリガーの押下や保持後のトリガーの解放などのトリガーイベントによってトリガーされた場合など)。
図13は、一実施形態に係る、IMVR環境を生成し、IMVRシステムによってIMVR環境に関連する媒体を記録する例示的な方法を説明する。一部の実装では、IMVRレンダラまたはユーザデバイスは、イベントベースの方法で記録を実行することができる。
図44Bは、IMVR体験のイベントベースの処理の例示的な方法を説明するフローチャートである。
【0068】
場合によっては、IMVRシステムの一部は、記録されたIMVR体験を再生できるようにするために構成されることができる。
図8は、一実施形態に係る、IMVRシステムを使用して記録されたIMVR体験を再生する例示的な方法800を示している。例えば、ユーザデバイスは、IMVR体験の記録を含むデータセットを受信することができ、方法800に示されるように、ユーザは再生を起動する。データセットは、オブジェクト、アクション、および/またはイベントを含む記録リストを含むことができる。再生の開始時に、記録リストは、ユーザデバイス(例えば、ユーザデバイス201)にロードされる。ユーザデバイスは、再生を開始した時点で時刻を開始し、タイマーが記録されたタイムスタンプに達した時点で、ユーザデバイスは、記録され、記録リストに提示されたタイプのアクションを実行することができる。ユーザデバイスは、記録リスト内のイベントおよび/またはアクションの実行を反復的に実行することができる。たとえば、記録に人体の循環系のインスタンスを提示し、修正された倍率で心臓を分離するインストラクターが含まれる場合、再生は、インストラクターによるオブジェクト(心臓など)の任意の操作を含むインストラクターによって提示されたオブジェクト、イベント、および/またはアクションのそれぞれを提示することで続行することができる。
【0069】
いくつかの実施形態では、記録および/または再生またはIMVR体験は、IMVR体験のIMVR環境内の1つまたは複数のオブジェクトがユーザの空間的位置に基づいて視点からユーザにレンダリングされることができるように、記録および/または再生を開始するユーザの空間位置に関連する情報を含むことができる。いくつかの実施形態では、記録および/または再生は、IMVR環境またはIMVR体験に関連付けられたイベントに基づいて管理することができる。
【0070】
図44Aは、異なるタイプのイベントの概略図である。
図44Bは、IMVRシステムのイベントベースの処理を実装するための例示的な方法のフローチャートである。たとえば、IMVRシステムは、ローカルマシン及びサーバを含むことができる。ローカルマシンはユーザデバイス(例えばユーザデバイス201)にすることができ、サーバはIMVRレンダラ(例えばIMVRレンダラ305)にすることができる。ユーザデバイスは、イベントの読み取り、イベントの生成、イベントの処理、イベントの記録機能の確認、およびイベントの記録を行うように構成されることができる。ユーザデバイスは、IMVRレンダラと通信して、他のユーザデバイスに関連付けられた他のユーザにイベント(ユーザデバイスで読み取られ、生成され、処理され、および/または記録されるイベント)を送信し、他のユーザデバイスからイベントを受信することができる。
図45は、IMVR体験の一部に関連して定義された一連のイベントと、イベント生成およびイベント処理を含む定められたイベントの管理を説明する例示的なフローチャートを示す。例えば、所定の値またはユーザが決定した値pの全ての期間で、IMVRシステムは、ユーザの姿勢を作成し、他のユーザからのユーザの姿勢とともにその情報を処理して、IMVR環境内およびその期間にわたるユーザオブジェクトの位置および回転を補間することができる。ユーザデバイスは、オブジェクト補間イベントを作成し、それをサーバを介して他のユーザに送信して、期間pにわたってオブジェクトのピボット点の周りの位置及び回転を補間することができる。別の例として、ユーザがオブジェクトを取得するか、又はIMVR環境内でオブジェクトを解放すると、それに応じてイベントが処理され、他のユーザデバイスに中継される。上記のイベントは、サーバを介して(例えば、IMVRレンダラ305を介して)他のデバイスに中継されると説明されているが、いくつかの実施形態では、あるユーザデバイスからのイベントは、サーバなしで別のユーザデバイスに中継され得る。
【0071】
前に説明したように、いくつかの実施形態では、IMVRシステム(例えば、
図1BのIMVRシステム100'、またはリアルタイムで使用されるわけではないときにIMVRシステムに関連付けられたデータを格納するなどの限定された機能のみを実行するように構成されたサーバを含むハイブリッドIMVRシステム)は、IMVRレンダラを使用せずに、ユーザデバイスがピアツーピア方式で相互に接続されるように構成されることができる。そのような実施形態では、IMVRレンダラによって実行されるものとして本明細書に記載される方法および/または機能(例えば、
図7~50に関連するかまたは記載される方法または機能)は、ユーザデバイス(例えば、IMVRシステム100'のユーザデバイス101'-103')の1つまたは複数の構成要素によって実行または実施され得る。すなわち、本出願で説明されるいくつかの実施形態および実装は、IMVRレンダラによって実行されることが示される機能を含むが、他のいくつかの実施形態では、これらの機能および操作は、ユーザデバイス内の1つまたは複数の構成要素によって(例えば、ユーザ固有のVRレンダラ216、またはユーザ状態アップデータ217、またはユーザデバイス201のVRレコーダ221によって)分散方式で実行され得る。そのような実施形態では、ユーザデバイスで生成および処理されるイベントは、集中型サーバなしでピアツーピア接続を介して、ローカルで処理される他のユーザデバイスに直接送信されることができる。
【0072】
いくつかの実装形態では、ネットワーク記録は、IMVRシステムによって提供されるマルチユーザプラットフォームの低データコストを利用して、リアルタイムマルチユーザ体験に代わる低コストの代替手段を提供するために本明細書で説明するIMVRシステムで使用されることができる。たとえば、IMVRシステムは、インターネットプロトコル(IP)パケットにおいて典型的にリアルタイムで複数のユーザデバイスに送信され得るデータを保存することにより、第1のユーザが第1の時点で「モジュール」を記録するために使用されることができる。保存されたデータは、将来、第2のユーザデバイスで再生されることができる。再生中、第2のユーザデバイスのユーザは、第1のユーザまたは第1のユーザのIMVR環境の「ゴースト」(たとえば、IMVR環境におけるユーザの仮想表現)と同じIMVR環境にいるIMVR体験と同様のIMVR体験を持つことができる。IMVR環境でレンダリングされたオブジェクトのビデオに加えて、音声を再コーディングし、第1のユーザのゴーストと同時に再生することもできる。音声は、再生時にIMVRシステムが3次元音声ソースを再作成できるように、第1のユーザの空間位置に関連付けることができ、シミュレーションをさらに現実的にする。ユーザは、一時停止、再生、早送り、ジャンプバックのユーザインターフェースを利用できる。
【0073】
いくつかの実施形態では、前述のように、IMVRシステムは、2人以上のユーザがIMVR環境の同期された体験を共有できるように構成されることができる。
図10は、複数のユーザ間で同期された体験を達成するために統合されたIMVR環境を確立するための例示的な方法を説明するフローチャート1000を示す。例示的な方法1000は、共有IMVR環境内の2つの場所を識別およびマーキングする第1のユーザを含む。例えば、第1のマークは、共有IMVR環境の中心を含むことができ、第2のマークは、ユーザに関して固定された空間位置(例えば、共有空間の北東の角の点)を含むことができる。IMVRシステムは、共有IMVR環境内のマークされた場所に関連付けられた追跡可能なオブジェクトとオブジェクト状態を生成することができる。オブジェクトとオブジェクトの状態に基づいて、IMVRシステムは、共有IMVR環境とIMVR環境を共有する複数のユーザのそれぞれに関連付けられた前方ベクトルと中心位置とを計算できるため、各ユーザはIMVR環境に関して相対的な位置と向きとを再計算でき、IMVR環境の視点がその場所と一致するように向きを変える。
【0074】
使用中、本明細書に記載のIMVRレンダラ(例えば、IMVRレンダラ305)またはユーザデバイス(例えば、ユーザデバイス201)は、3次元ボリュームオブジェクトに関連付けられたデータパッケージを受信し、ユーザの空間情報を含むユーザ入力のセットを受信することができ、データパッケージとユーザ入力に基づいて、ユーザの観点からボリュームオブジェクトのインスタンスをレンダリングする。いくつかの実施形態では、データパッケージは、例えば、3次元オブジェクトのシリアルセクション化またはシリアル画像化を介して取得された空間データ系列または3次元ボリュームデータを含むことができる。場合によっては、データパッケージは、オブジェクトに関連付けられた3次元の点群情報(MEGデータなど)を含むことができる。データは複数の値のチャネルを含むことができ、各チャネルは強度値の配列に関連付けられる。例えば、場合によっては、データは、オブジェクトの共焦点画像化(confocal imaging)から取得でき、データの複数のチャネルを含み、各チャネルは、フルオロフォア(fluorophore)(例えば、緑色蛍光タンパク質(GFP)の画像化から得られたデータを含むチャネル1、および赤色蛍光タンパク質(RFP)の画像化から得られたデータを含むチャネル2)を画像化することから得られた強度値に対応する。データパッケージは、各チャネルのルックアップテーブル(LUT)と、オブジェクトのレンダリングに使用されるデータセットに関連付けられたサンプル番号とを含むことができる。サンプル番号は、データに関連付けられたサンプルの数であることができる。次に、レンダラ(例えば、ユーザデバイス201のユーザ固有のVRレンダラ216またはIMVRレンダラ356のレンダラ356)は、IMVR環境内のユーザ位置を含むユーザ情報、例えば、レンダラおよびユーザデバイス(UD)の一部に結合されたヘッドマウントディスプレイからの頭の位置および向き、レンダラおよびユーザデバイスUDなどの一部に結合されたハンドコントローラからの手の位置を取得することができる。
【0075】
データパッケージとユーザ情報に基づいて、レンダラはIMVR環境で光線をキャスト(cast)する。光線は、IMVR環境でのユーザの位置から発生し、IMVR環境でユーザが向いている方向にパスに沿って移動するようにシミュレートされる。場合によっては、ユーザの位置は、ユーザデバイスに結合されたヘッドマウントディスプレイの位置に基づくことができる。次に、レンダラは、シミュレートされたキャスト光線のパスに沿った強度値の空間データを使用してデータセットをサンプリングする。いくつかの実装形態では、レンダラは、レンダリングされるオブジェクトの前面のデプスおよび背面のデプスに関連付けられた所定の値を使用し、サンプリングのデプスを前面のデプスの前方または背面のデプスのさらに後方に決定することができる。この場合、レンダラはサンプルを破棄し、前面のデプスと背面のデプス内の空間内の領域に到達するまで、繰り返しサンプリングを続けることができる。場合によっては、レンダラは、ニアクリッピングプレーン(near clipping plane)を使用して、ニアクリッピングプレーンよりも近いオブジェクトの部分のレンダリングを回避することができる。サンプルがオブジェクトの表面と交差する光線を示している場合、レンダラは、各光線と交差するオブジェクトの部分の決定に基づいて、ユーザの視点からその部分のインスタンスをレンダリングする。いくつかの実施形態によれば、レンダラは、デプスが増すにつれて距離を増してサンプリングするように構成される。サンプリング距離は、デプスとともに線形または非線形に増加する可能性がある。場合によっては、所定のオブジェクト境界位置を計算することができ、サンプリングは、サンプリングされた位置が境界内にある場合にのみ、この境界位置を使用してレンダリングすることができる。
【0076】
一部の実装では、レンダラは、スキッププロシージャを実装してフレームレート(つまり、フレームが更新されるレート)を上げて、ユーザ体験の品質を高めることができる。スキッププロシージャを実装するレンダラは、スキップレートに関連付けられたユーザ入力を受け取り、空間内のポイントをサンプリングすることができる。戻り値が対象領域外にあることで示されるヌル値である場合、レンダラは次のサンプルを取得するように命令される。次のサンプルもヌル値であると判断された場合、この判断に基づいて、レンダラは次のn個のサンプルをスキップするように命令される。nはスキップレートに基づいて決定され、n+1番目の値をサンプリングする。n+1番目の値もヌル値である場合、レンダラは2n+1番目の値で光線に沿ってサンプリングを続行するように命令される。n+1番目のサンプルの戻り値がヌル値でない場合、レンダラはn番目の値に戻って再サンプリングするように命令される。mはユーザによって提供されるステップバック入力である。いくつかの実装形態では、ユーザは、レンダリング要件、レンダリングされるオブジェクトの性質、および/またはユーザデバイスのプロセッサ能力に基づいて、nおよびmの値を設定するための入力を提供することができる。
【0077】
一部の実装では、レンダラは、レンダリングされたIMVR環境に関連付けられた詳細レベル(LOD)プロパティを使用することができる。LODプロパティは、ユーザによって設定されることができる。一部の実装では、レンダラが時間とプロセッサを集中的に使用する可能性のある大きなデータセット内の値をサンプリングしている場合、レンダラは、LODプロパティに関連付けられた設定における生データポイントではなく、データセットをビニングすることによって生成された中間データセット内のデータポイントをサンプリングするために使用され得る。たとえば、時間及び/又はプロセッサを集中的に使用する可能性のあるデータポイントの16×16×16マトリックスをサンプリングする代わりに、レンダラはサイズ及び順序が減少する一連の中間データセットを生成し得る。この例では、レンダラは、8×8×8、4×4×4、および2×2×2データセットを含む中間データセットを生成し得る。各低次中間データセットは、データポイントを平均し、すぐ上のデータセットの値をビニング(binning)することによって生成される。レンダラは、適切に低次の中間データセットを使用して、高レベルの詳細が不要な領域をレンダリングする。たとえば、場合によっては、IMVR環境でユーザの位置から離れた場所にあるオブジェクトをレンダリングするとき、バックグラウンドで詳細をレンダリングするとき、またはユーザの焦点内(ユーザの中心窩が追跡されている場合)ではないオブジェクトの詳細をレンダリングするときに、低次のデータセットが使用されることができる。別の例として、サンプルがヌル値として返されることが疑われる場合、低次のデータセットが最初にサンプリングされることができ、戻り値がヌルでない場合、レンダラは、適切なLODに達するまで、より詳細なレベルに設定される高次の中間データを繰り返しサンプリングするように命令されることができる。場合によっては、レンダラは、あるユーザデバイスで適切なLODを使用して、レンダリングされたオブジェクトの外観を別のユーザデバイスでレンダリングされたオブジェクトの外観と一致させることができる。たとえば、ディスプレイ解像度が高いユーザデバイスは、低いLODを使用して、ディスプレイ解像度が低いユーザデバイスと一致し得る。
【0078】
一部の実装では、高LODの高次データセットを使用してさらに深い距離でサンプリングすると、IMVR環境のレンダリングでノイズを発生する可能性がある。このような場合、レンダラは、特定の詳細レベルでサンプリングを停止するように命令されることができる(サンプリングが所定のデプスを超えている場合は、より低い詳細レベルに切り替える)。一部の実装では、これにより、プロセッサ容量が原因でフレームレートが低下する前に、ユーザがサンプリングレートを上げることができ、ユーザ体験を向上させる。このようなプロシージャ(たとえば、サンプルの最初の3分の1を最高のLOD 0(つまり平均化しない)でサンプリングする、サンプルの2番目の3分の1をLOD 1(つまり、サンプルの平均を含む1レベルの平均化)でサンプリングする、最後の3分の1をLOD 2(つまり、ピクセルの平均の平均を含む2レベルの平均化)によると、ユーザが、高速レンダリングを使用して、前でより多くの詳細を、中間距離で良い詳細に、最も遠い距離でより少ない詳細を受け取ることができる。一部の実装では、サンプリング距離(つまり、空間内の隣接するサンプル間の距離)はデプスの増加とともに増加する可能性があるため、サンプリング距離が中間LODを持つ中間データセットのピクセル値に関連付けられた距離に匹敵する場合、平均ピクセル値中間データセットからのサンプルは、より適切に表され、より迅速にサンプリングできる。
【0079】
いくつかの実装形態では、レンダラは、アルファ値に基づくオブジェクトの不透明度または透明度に基づいて、より早い時点でサンプリングを終了するように命令することができる。いくつかの実装形態では、サンプリングは、レンダリングの所望のフレームレート(例えば、ユーザの快適さを向上させるための60fpsの所望のフレームレート)に一致するように動的に設定されることができる。一部の実装では、レンダラは、中心窩レンダリング(foveated rendering)を実装することができる。中心窩レンダリングでは、ユーザの中心窩領域のみが高品質でレンダリングされ、ユーザ体験を最小限に抑えるか又は変えない一方で、処理負荷を軽減する。
【0080】
一部の実装では、サンプリングをオフセットして木目調効果(wood graining effect)を減らすことができる。これは、「ランダムノイズ」で構成されるテクスチャからサンプリングしてオフセット値を取得することで実現される。ボリューム内の異なるバンド間のこれらのランダム化された光線サンプル位置により、データのより分散されたサンプリングが可能になる。たとえば、レンダラは、サンプリングおよび/またはキャスト光線の開始位置をランダムにオフセットするプロシージャを実装することができる。半径方向に増加する距離に沿ってサンプリングする場合、第2の光線は第1の光線からわずかにオフセットされ、サンプルは特定の半径方向の距離にある。レンダラのオフセットを実装すると、ユーザとの関係でサンプリング距離の固定された増分シェル(incremental shell)ではなく、奇数距離(odd distance)でサンプリングすることができる。スプラッタリング(splattering)としても知られる、固定された放射状シェル(radial shell)に関するランダムな位置でのそのようなサンプリングは、いわゆる「木目調効果」を回避することができる。計算は、ユーザの頭に関する位置で、ユーザに対するボリュームスケールで実行されることができる。いくつかの実装形態では、スプラッタリングは、サンプリングの可変距離および/またはサンプリングされたオブジェクトのスケールに関して動的に設定されることもできる。オブジェクトのスケールは、スケーリング係数によって定義されることができる。
【0081】
場合によっては、サンプリングされて境界内にあると判断されたときの空間内の3次元ポイントは、オブジェクトのプロパティに関連付けられた1つ又は複数のLUTにマッピングされることができる強度値を返すことができる。例えば、ユーザは、オブジェクトのその部分を表すために、キーの組み合わせ(例えば、2つのキー)を選択している場合がある。各キーは、オブジェクトに対する位置の値、色の値、透明度の値、およびLUTに関連付けられているキーを含むことができる。レンダラは、LUTを使用して、オブジェクトの一部のインスタンスに対応するピクセルをレンダリングするために使用できるマップされた値を返すことができる(オブジェクトに関連付けられたサーフェステクスチャなど)。
図41Aはキーのセットによって表されるオブジェクトプロパティの例示的なセットを示すユーザインターフェースの概略図であり、
図41Bは、一実施形態に係る、ボリュームオブジェクトをレンダリングするためにレンダラによって使用されるような、例示的なキーの概略図である。
【0082】
一例として、ユーザは、
図41Aのユーザインターフェースを介して、キーに関連付けられた値を選択および設定することができる。カラーキーの定義は、LUTが生成されることに基づいて、
図41Aに示されるマッピング上のそれらの位置に基づくことができる。スケーリングされたuv.U値を含む軸は、キーの透明値(高不透明、低透明)を表し、スケーリングされたuv.U値を含む軸は、キーのインデックス値を表す。たとえば、キーが白色のキーを表している場合、ユーザはスペース上でキーをスライドさせて、高い不透明度の高い白の値または低い白の値に増やすことができる。レンダラは、複数のキー間の値を補間してLUTを生成できる。ユーザは、ボリュームをサンプリングし、適切な数のキーを使用してオブジェクトに値を割り当てることができる(たとえば、ユーザは3つのキーを使用して骨の表現を選択し、10のキーを使用して筋肉の表現を選択することができる)。キーの数は、任意の適切な整数値であることができる。
【0083】
ユーザはオブジェクトに関連付けられたキーを調整することができ、IMVRシステムは、本明細書で説明されるように、キーを調整するユーザのユーザデバイスでレンダリングされたオブジェクトのインスタンスの外観の変化が他のユーザデバイスでレンダリングされたオブジェクトのインスタンスにおいて模倣されるように、調整を他のユーザデバイスに伝播するように構成されることができる。たとえば、一部の実装では、1人のユーザがキーを移動すると、筋肉データが消え、IMVRシステムは、キーの位置と色、位置、透明度の値の情報をIMVRシステム内の他のユーザデバイスに送信し、その結果、各ユーザデバイスに関連付けられているレンダラは、LUTをローカルで計算して、第1のユーザデバイスのオブジェクトのインスタンスの外観を模倣することができる。場合によっては、データセットは、データセットに格納されたプリセットLUTに関連付けられることができる。調整キーは、レンダラのサンプリング時間(200ミリ秒など)にわたってLUTにエフェクトを生成するように構成されることができる。各ユーザデバイスは、IMVR環境を共有し、IMVRセッションのユーザの統一されたデータ表現を取得するために同じ方法でLUTを計算するように構成されることができる。LUTの計算は、各ユーザデバイスに関連付けられているハードウェアに依存しない場合がある。
【0084】
いくつかの実装形態では、ユーザは、あるユーザによってなされた操作および/または変更が実質的にリアルタイムで他のユーザに伝播されることができるように、LUTを変更することなく、実質的にリアルタイムでオブジェクトのインスタンスを微調整および更新するための一連の制御ツールまたはデータ調整ツール(例えば、スライダー)を提供され得る。1つのユーザデバイスでの操作は、操作情報を含むことができる操作されたデータパッケージの生成に関連付けられることができる。ユーザデバイスは、操作されたデータパッケージを他のユーザデバイスに送信して、ユーザによって行われた操作を他のユーザデバイスに伝播するように構成されることができる。例として、以下に説明するように、ユーザにカラーキースライダーを表示して、キー選択とキー位置を操作し、レンダリングされたオブジェクトの外観に影響を与えることができる。例えば、ユーザデバイス(例えば、
図2のユーザデバイス201)内のIMVRシステムのユーザインターフェース(
図41Aのユーザインターフェースと同様)は、レンダリングされたオブジェクトの基礎となるデータセットに関連付けられた強度値のヒストグラムを引き伸ばすように構成された最大-最小スライダーを含むことができる。その結果、完全なLUTは、データセットに関連付けられた強度ヒストグラムのより小さな部分にマッピングされる強度値を含むオブジェクトの一部を視覚化するために使用されることができる。場合によっては、ユーザインターフェースは、視覚化のカットオフに関連するユーザ入力を受信するために使用される閾値スライダーを含むことができる。
【0085】
上記のように、ユーザインターフェースは、所与のデータセットに対して表示され、IMVR環境でレンダリングされたオブジェクトに関連付けられたデータの範囲を操作し、セッション内のユーザデバイスのインスタンス全体に操作を反映させる機能をユーザに提供する。一部の実装では、IMVRシステムは、ユーザがデータ内にある一連の値の範囲でレンダリングされたオブジェクトに関連付けられたプロパティを操作できるようにするユーザインターフェースを含むように構成されることができる。
【0086】
たとえば、ユーザは、CTスキャンで骨を強調表示して、ジオード(geode)の亀裂にアクセントを付けることができる。実装例として、ユーザ対話レベルで、IMVRシステムは、ユーザにシンプルなユーザインターフェースを提供することができる。これにより、ユーザはスライダーを動かすことによって表示されるデータを調整することができる。あるスライダーは、透明度(アルファ値)の調整を可能にするように構成されることができる。例えば、
図41Aに示されるものと同様のユーザインターフェースにおいて、スライダーは、uv.U軸のキーを調整するように構成され得る。一連のスライダーは、ユーザがより小さなデータ範囲を選択して、全データ範囲内で表示することを可能にするように構成されることができる。データセットをより適切に視覚化するために、単一のクリックでいくつかのプリセットカラーグラデーションを適用できる。代替的には、実装では、高度なメニューを使用して、ユーザ独自のデザインの色のグラデーションを作成することができる。IMVRセッションのユーザは、たとえば、所与のCT内で、筋肉を赤、骨を白に着色し、他のデータを省略することができる。
【0087】
IMVRシステムは、スライダー、カラーキーの位置、および/またはキーの色に加えられた調整がIMVRセッションの他のユーザに伝播されるように構成される。次に、IMVRシステムは、他のユーザに関連付けられたユーザデバイスを呼び出して、オブジェクトの更新されたインスタンスをレンダリングし、その結果、同じカラーマッピングが生成されて、ユーザ間で同等の視覚化を実現できる。
【0088】
図42Aは、データの新しいチャネルのユーザ選択を実施する例示的な方法(例えば、レンダラまたはユーザデバイスによって実行される)を説明するフローチャートであり、ネットワークを介して最小限のデータを送信し、新しいデータチャネルを保存するという戦略を使用する、第2のユーザデバイスを含む他のユーザデバイスにデータの新しいチャネルを送信する。この新しいデータチャネルは、データを受信した第2のユーザデバイスにロードされることができる。
【0089】
図42Bは、第1のユーザデバイスに関連付けられたユーザがオブジェクトのレンダリングを操作するためにキーのカラーを変更するときに実装される例示的な方法(例えば、レンダラまたはユーザデバイスによって実行される)を説明するフローチャートである。ユーザがキーマーカー(例えば、
図41Aに示されるようなキーマーカー)を動かすと、キーマーカーの新しい位置に関連付けられた値がレンダラによって登録され、キーの新しい位置に関連するデータが、第1のユーザが参加している可能性のあるIMVRセッション内の他のユーザデバイスへのネットワークを介して送信される。キー位置に関連するデータは、ネットワークを介して転送される最小限のデータを含む戦略で送信される。次に、第1のユーザによって送信されたこのデータを受信するユーザデバイスは、勾配を作成するプロシージャを使用して、それぞれのレンダラに関連付けられたキーのセットを更新することができ、その例が
図42Cに示されている。
【0090】
図42Cは、IMVRシステムにおいて、キーのセットを使用してボリュームオブジェクトの色付けされたインスタンスをレンダリングするためのカラー勾配を作成するための例示的な方法(例えば、レンダラによって実行される)を示すフローチャートである。IMVRシステムで複数のキーがユーザによって設定された場合、またはユーザデバイスによって受信された場合、レンダラは、キーの間を補間して(たとえば、線形補間または非線形補間)、
図42Cに記載されるようにキーの間にカラー勾配を生成するように構成されることできる。たとえば、キーは左から右に並べ替えることができ、各キーのカラーの値を使用して、更新されたカラーのリストを生成するキーのペア間のカラーのリストを生成することができる。更新されたカラーのリストを使用して、更新されたカラーの勾配の定義を生成するように構成されたプロシージャを呼び出すことができ、その例を
図43に示す。
【0091】
図43は、LUTを生成するために一対のキー(キー0およびキー1)の間の情報を補間することによって新しいカラーの勾配の定義を生成するための例示的な方法を説明するフローチャートである。たとえば、レンダラは、キーのペアに関連付けられた情報を受け取ることができる。キーは、カラー、位置、透明度の値を含み、各キーは赤(key0.color.rなど)、緑(key0.color.gなど)、青(key0.color.bなど)、アルファ色(key0.color.aなど)構成要素を有する。レンダラは、キーのペア間でのスロープ値(slope value)を生成することができる(たとえば、key0とkey1の赤色成分に関連付けられたrSlope、key0とkey1の緑色成分に関連付けられたgSlopeなど)。レンダラは、キー0の赤、緑、青、およびアルファ(a)の色成分を、rSlope、gSlope、bSlope、およびaSlopeに基づいて更新された値で更新し、更新された値を使用して新しいカラーを生成することができる。
【0092】
場合によっては、IMVRシステムは、脳磁図(MEG)から生成された画像を読み取り、そのデータを使用して、いくつかの診断、研究、教育、および/またはトレーニングの目的で、データを視覚化するおよび/または調べる(probe)ために使用されるリッチなIMVR環境を生成するように構成されることができる。
図11は、いくつかの実施形態のIMVRシステムを使用してMEGデータを視覚化するためのリッチで対話可能なIMVR環境を生成するために使用することができる例示的な方法1100を示す。
【0093】
ユーザは、3D空間、つまり、回転とスケール、および再生機能、ステップ機能、スクラブバーなどの一連の特徴を使用する時点を通したトラバース(traverse)においてデータを操作することができる。
図47Aは、MEGデータのレンダリングのインスタンスを案内するために使用されることができる例示的なユーザインターフェースを示す。例示されるように、ユーザインターフェースは、レンダリングされたIMVR環境で距離を前進および後退するための前進および後退案内制御を含むことができる。ユーザインターフェースは、ユーザが(レンダリングされたインスタンスを取り除いてIMVR環境内のオブジェクトの不要な部分を削除する)スクラブプロパティ(scrub property)を設定するために調整することができるスクラブスライダー、頻度スライダー、およびデータに関連付けられたレンダリングの更新頻度を含むことができる。
図47Bは、
図47Aのユーザインターフェースを介してユーザによって提供される入力を実装するための例示的な方法を説明するフローチャートである。
【0094】
いくつかの実施形態では、IMVRシステムは、脳磁図画像化を通じて得られたデータセットを受信し、3次元空間および時間でデータの視覚化を生成するように構成されることができる。脳磁図スキャン(MEG)は、皮質表面の双極子モーメントの方向及び大きさ(ベクトル)を測定することにより、脳の電気的活動を視覚化するために使用されることができる。次に、このデータは、この電気的活動の3次元的な視点を与えるIMVR環境において表示される。たとえば、聴覚刺激に応答している間にキャプチャされたMEGデータセットは、VRで表示されることができ、脳を通る聴覚情報の経路を追跡する。ベクトル情報は、例えば長さと色が大きさとともに変化する「涙の滴(tear drop)」の形のような、つまり特定の領域で脳の活動が増加すると、より熱い色のより長い涙の滴として現れるような、モデルオブジェクトによって表されることができる。点群データは、任意の形状及び色によって表されることができる。
【0095】
図48は、本明細書に記載のIMVRシステムを使用してMEGから得られた空間データの読み取りおよびレンダリングを説明する例示的な方法である。示されるように、例えば、いくつかの実装形態では、IMVRシステムにおけるユーザデバイスは、外部ソースからMEGに関連付けられたデータを受信し、所定の点のセットに対応するベクトルデータを抽出することができる。ベクトルデータは、所定の点のセットおよび時点のセットの初期位置、ならびに時間に応じた位置の変化を含むことができる。所定の点のセット(例えば、空間内の7000点、各点は3次元ベクトルに関連付けられている)は、局所的な神経活動に関連付けられている磁気双極子モーメントに関連され得る。点のセット内の各点は、位置(または原点)プロパティ、回転プロパティ、大きさプロパティ、時間プロパティなどのプロパティに関連付けられ得る。各点は、各プロパティに対応する値のセットを含むことができる。たとえば、各点は、一連の時点、並びに時点に関連付けられた原点、回転、および大きさの値のセットに関連付けられることができる。ベクトルは、
図48に示されるように、ベクトルに関連付けられた最大値および最小値とともに、ユーザデバイスに関連付けられた揮発性メモリ(例えば、VRAM)に読み取られ、格納され得る。ユーザデバイスのレンダラは、
図11に示されるように、位置バッファ、大きさバッファ、および回転バッファを含むバッファのセットを含むことができ、その結果、関連付けられたプロパティおよび値を有する点のセットは、抽出されたベクトルデータから読み取られ、対応するバッファに追加されることができ、IMVR環境におけるボリュームオブジェクトのインスタンスに関連付けられてレンダリングされることができる。
【0096】
いくつかの実施形態では、点は、モデルオブジェクトによって表されることによってレンダリングされることができる。 いくつかの実装形態では、モデルオブジェクトは、色、外観、テクスチャ、形状、サイズ、および/または構造を含む所定の属性またはプロパティを有するアーティストレンダリングメッシュオブジェクトであり得る。プロパティは、ルックアップテーブルを使用してポイントに関連付けられた値にマップされることができる。
図46Aは、ティアドロップ(teardrop)のように成形されたメッシュオブジェクトである例示的なモデルオブジェクト4600を示している。
図46Bは、数千点を含むMEGデータの、IMVR環境における例示的な視覚化4601の斜視図を示しており、これらの点は、モデルオブジェクト4600の数千のインスタンスによって表される。
【0097】
視覚化4601は、ベクトルデータから取得され、モデルオブジェクトのインスタンスに関連付けられ、各ベクトルが位置、方向、大きさ、および時間を含み、位置、向き、長さ、色を含む対応するプロパティを有するモデルオブジェクトの1つのインスタンスに関連付けられた時点「t」での神経活動を表す。モデルオブジェクト4600の数千のインスタンスの位置または原点のプロパティは、変化する時間にわたって固定されたままであることができ、向き、長さ、および色のプロパティは、ベクトルデータにおいて関連付けられた位置での対応するベクトルの大きさおよびベクトルのベクトル方向から得られる情報に応じて時間とともに変化し得る。モデルティアドロップ形状のオブジェクト4600の各インスタンスの色および長さのプロパティは、ベクトルデータにおいて関連付けられたベクトルの大きさに基づいて変化されることが示され、ベクトルの大きさが大きいほど、ティアドロップ形状のモデルオブジェクトのインスタンスの長さが大きくなり、より明るい色であり、それぞれが適切なルックアップテーブルに基づいて選択される。
【0098】
視覚化4601の例は、所定の音を聞きながら、対象の脳のいくつかの時点にわたるMEG画像化から得られたベクトルデータの経時的な表現における単一の時点でのフレームである。この表現は、被験者の脳の側頭葉の聴覚皮質に関連する領域での神経活動の増加を示す。ある時点での神経活動の変化は、ある時点でのモデルオブジェクトのインスタンスの色、長さ、向きなどのプロパティの変化によって表される。
図49は、ユーザデバイスでのMEGデータのレンダリングに関連付けられたユーザ入力を更新する例示的な方法を説明するフローチャートである。
図50は、例示的なMEGデータセットのレンダリングを実装する例示的な方法を説明するフローチャートである。上記のMEGデータの表現は、臨床医が神経活動の変化する傾向を簡単に特定するのに役立つ。例えば、上記のように、経時的なMEGデータの視覚化を使用して、手術を助けることができる事前定義された刺激に応答して、発作活動の場所または所望の活動の場所を容易かつ迅速に識別することができる。
【0099】
他のデータセットは、EEG、地質データ、分子データ、または時間構成要素の有無にかかわらず他の点群データを含み得る。一部の実装では、データは、ネットワークソケットを介して収集され、実質的にリアルタイムでユーザに表示される。
【0100】
本明細書で説明するように、IMVRシステムのレンダラは、3次元オブジェクトに関連付けられたデータセット、場合によっては、画像化技術を使用して撮影されたオブジェクトのシリアルの2次元画像を含むデータセットを取得し、IMVR環境でオブジェクトをレンダリングすることができる。その結果、複数のユーザがオブジェクトを同時に視覚化および操作することができる。IMVR環境でのオブジェクトのレンダリングは、ユーザに利用可能であり得る視覚化および/または操作のレベルを決定することができる所定のプロパティの任意の適切なセットを使用してなされることができる。オブジェクトのレンダリングに関連付けられた所定のプロパティの一部は、ユーザ(たとえば、ホストユーザまたはIMVRセッションの制御を強化するように定義された第1のユーザ。IMVRセッションは、一人または複数のユーザを含む控えめなIMVR体験である。)からの入力を使用して設定されることができる。一部の実装では、任意の参加しているユーザによって設定されるようにプロパティが定義されることができる。
図12は、ユーザ入力のリストを示す。たとえば、IMVRシステムは、事前定義された近傍切り取り平面(near clipping plane)を使用して、視覚化からレンダリングされたオブジェクトの近傍部分を切り取るためのユーザの能力を設定する「nearClip」に関連付けられた入力を受け取ることができる。
【0101】
入力「alphaThreshold」を使用して、オブジェクトまたはオブジェクトの一部を視覚化する透明度閾値プロパティを設定することができる。サンプルに関連付けられた入力を使用して、ユーザデバイス(ユーザがレンダリングを視覚化するために使用される)を参照してオブジェクトをレンダリングするために使用されるサンプルの数を設定することができる。一部の入力は、レンダリングの品質及びレンダリングの効率を決定することができる。たとえば、「スキップ」及び/又は「MIPマッピング」を有効にすると、IMVRシステムに、オブジェクトを含まないヌル空間を考慮してオブジェクトをレンダリングするように命令することができる。検出時にヌル空間の一部をスキップし、ヌル空間ではないものの識別に基づいてサンプル領域に戻ることだけで、視覚化の品質を維持しながらレンダリングの効率を高めることができる。ユーザからの追加の入力を設定して、(プロセッサ速度とユーザデバイスの機能、および視覚化されたデータセットの性質に基づいて)スキップ率を決定することができる。また、ビニングおよび/または中心窩レンダリングを使用して、レンダリングの効率をさらに高めることができる。
【0102】
追加の例として、断面ツールに関連付けられた入力はIMVR環境で断面機能を有効にし、レンダリング中の包含オブジェクトと除外オブジェクトとに関連付けられた設定パラメータに関連付けられた入力は、他の周囲のオブジェクトを含む及び/または除外することで、オブジェクトの分離レンダリングを可能にする。包含および除外ベースの定義は、IMVR環境で対象のオブジェクトのすぐ近くにある他のオブジェクトに関することができる。追加の例として、一連の注釈ツール(ペイントツール、ボクセルペインタ、測定ツール、注釈ツールなど)に関連付けられた入力を使用して、ユーザがペイントツール(たとえば、色を追加したり、透明度を下げたりすることによって、ペイントしまたは外観プロパティを変更したりする)を使用してレンダリングされたオブジェクトに注釈を付け、または操作できるようにすることができる。このような入力の例は、測定入力、注釈入力、ペイント入力、ハイライト入力、マークアップ入力などを含む。
【0103】
図13は、一実施形態に係る、IMVRシステムにおいて、IMVR環境を生成し、レンダラ(例えば、IMVRレンダラ305またはユーザデバイス201のユーザ固有のVRレンダラ216)によってIMVR環境に関連付けられた媒体を記録する例示的な方法のフローチャート1300である。1371で、方法1300は、オブジェクトに関連付けられた医療画像を含むデータを受信することを含む。前述のように、医療画像は、コンピュータ断層撮影(CT)、磁気共鳴画像(MRI)、ポジトロン放出断層撮影-コンピュータ断層撮影(PET-CT)、および/または脳磁図(MEG)データの開始、並びに共焦点顕微鏡、電子顕微鏡、複数の平面にわたるデータ取得を伴う任意の光学顕微鏡などの3次元オブジェクトのシリアル光学セクション化および画像化を含む1つ又は複数の他のデータソース、を介して得られた画像などのDICOM画像を含むことができる。
【0104】
1372で、レンダラは、データから、オブジェクトの構造に関連付けられたデータセットと、仮想環境(本明細書では「IMVR環境」とも呼ばれる)においてオブジェクトを参照するユーザの空間位置に関連付けられたユーザ情報と、を抽出する。データは、IMVR環境の1つ又は複数のパラメータを設定するために抽出および使用することもできる、データセットに関連付けられた追加情報を含むことができる。たとえば、データは、オブジェクトに関連付けられたサンプル番号、データのチャネル数を含むチャネル詳細(channel specification)、およびデータの各チャネルに関連付けられたルックアップテーブル(LUT)を含むことができる。データセットは、オブジェクトに関連付けられたボリュームデータに関連付けられた情報の1つまたは複数のチャネルを含むことができる。各チャネルは、ユーザがオプションで個別に視覚化できる1つ又は複数のチャネルを使用してオブジェクトをレンダリングできるように定義されることができる。たとえば、各チャネルはルックアップテーブル(LUT)を使用してレンダリングされることができ、各LUTは他のルックアップテーブルから分離可能(たとえばスペクトル分離可能)であるため、LUTを個別に操作してそのデータのチャネルでレンダリングされたオブジェクトの視覚化を変更することができる。チャネルは、各チャネルを使用してレンダリングされたオブジェクトを合成して複合オブジェクトを形成できるように構成できる。
図24および25は、一実施形態に係るIMVRシステムにおいて、データの複数のチャネルを使用してレンダリングされたオブジェクトの合成インスタンスを生成するための例示的な方法を説明するフローチャートである。例えば、
図24に示されるように、レンダラは、IMVR環境でオブジェクトをレンダリングするために、最大強度投影(MIP)を含むプロシージャを実装することができる。レンダラは、位置、色、およびMIP値に関連付けられた情報を取得することができる。レンダラは、ある位置にあるデータのチャネルのサンプルのMIP値間の差を示すMIP差値を計算し、その値をユーザによって設定された閾値と比較することができる。比較に基づいて、レンダラは色及び透明度の情報の合成を含むLUTを生成することができる。
図25はまた、一対の色が与えられた場合に合成色を返す例示的な方法を示す。
図25Bは、IMVR環境におけるオブジェクトのレンダリングにおいて、ニアクリップ設定(nearclip setting)およびワールドデプス設定(例えば、ユーザによる)に関連する情報を使用して、デプス視覚化を正規化するための例示的な方法のフローチャートである。
【0105】
一部の実装では、データは命令及びキーのセットを含むことができるが、チャネルのLUTを含むことはできず、LUTはキーを使用してローカルで生成されることができる。各キーは、色、透明度に関連付けられたプロパティを含むことができるため、キーの組み合わせを使用してLUTを生成することができる。ユーザ情報は、相対的な空間位置、およびレンダリングされたオブジェクトに対するユーザの相対的な向きを含むことができる。いくつかの実装形態では、IMVRシステム内の1つまたは複数のユーザデバイスは、ヘッドセット、ヘッドマウントディスプレイ、および/または1つまたは複数の操作コントローラを含むことができる。レンダラは、ヘッドセットおよびハンドコントローラから、IMVR環境内のヘッド位置および/または手の位置ならびに姿勢またはポインティング方向を受け取り、その情報を使用してオブジェクトをレンダリングすることができる。
【0106】
図13に戻ると、1373で、レンダラは、ユーザから入力のセットを受け取り、入力のセットは、IMVR環境内のオブジェクトの一部に関連付けられた所定のプロパティのセットに関連付けられている。入力のセットは、
図12を参照して上で定義された入力を含むことができる。プロパティは、一連の視覚化プロパティを含むことができる。一部の実装では、ユーザ入力は、オブジェクトをレンダリングするためにLUTに適用される変更を含むことができる。
【0107】
1374で、レンダラは、入力のセット及びユーザ情報に基づいて、仮想環境内のオブジェクトの部分のインスタンスをレンダリングする。1375で、レンダラは、ユーザおよび仮想環境におけるオブジェクトの部分のレンダリングされたインスタンスの操作に関連する操作情報を受け取る。いくつかの実装形態では、操作情報は、ヘッドセットまたは1つまたは複数のハンドコントローラを介してユーザから受信した一連の入力を通して受け取ることができる。操作は、レンダリングされたオブジェクトの視覚化への変更として現れるIMVR環境への影響を誘発するように構成されたユーザのアクションを含むことができる。たとえば、操作は、レンダリングされたオブジェクトの1つまたは複数の部分の外観プロパティを変更するように構成されることができる。たとえば、レンダリングされたオブジェクトの1つまたは複数の部分の色または透明度、レンダリングされたオブジェクトの方向、スケール、またはビューの変更である。操作は、レンダリングされたオブジェクトに対するユーザの相対的な位置および/または向きの変化を誘発するように構成されることもできる。
【0108】
1376で、レンダラは、操作情報に基づいて、仮想環境での操作の効果を明示する(manifest)オブジェクトの部分の更新されたインスタンスをレンダリングする。
【0109】
1377で、ユーザデバイスは、オブジェクトの部分の更新されたインスタンスの操作およびレンダリングに関連付けられた媒体を記録し、媒体は、IMVR環境内のユーザの視点からの、オブジェクトの部分の更新されたインスタンスのレンダリングのビデオを含み、この視点はIMVR環境内のユーザの空間位置に基づく。一部の実装では、IMVRセッションまたはIMVR体験の記録は、位置、ホスト情報、タイムスタンプ、および音声をキャプチャするように構成されることができる。いくつかの実装形態では、媒体は、IMVRセッションにおいて1人または複数のユーザによって生成された音を含む、オブジェクトのレンダリングに関連付けられた音の音声録音を含むことができる。場合によっては、記録された音声をIMVR環境内の記録された空間位置に関連付けることができ、その結果、媒体の再生は、ビデオを体験する第2のユーザが、IMVR環境内の音源の位置を考慮して音声も体験することを可能にする。たとえば、ユーザの位置の前方および右側の空間位置にあるソースからの音声は、ユーザの正面および右側でより大きな音声として明示する(manifest)ように構成されることができる。別の例として、録音および/または再生は、音声のソースの動的な位置を含むことができる。言い換えれば、仮想空間を移動する、および/または仮想空間内のオブジェクトとやり取りするユーザによって生成された音声は、ユーザとやり取りするオブジェクトの両方の視覚化における動きおよび/または変化がキャプチャされるように記録することができ、適切なタイムスタンプが付いたビデオと音声の両方であり、再生時に再作成して別のユーザによって体験されることができる。いくつかの実装形態では、再生を実装する第2のユーザは、音声が第2のユーザの位置およびソースの動的な性質に動的に調整されるように、単なる音声再生と空間情報を含む音声との間で選択することができる。
【0110】
いくつかの実装形態では、再生は複数のユーザによって開始されることができ、空間情報を含む音声は、マルチユーザセッションにおいて、ユーザの空間位置に従って各ユーザに提示され得る。いくつかの実装形態では、ホストユーザは、IMVRセッションに関連するビデオおよび/または音声を自動的に記録することができる。場合によっては、録音された音声がホストユーザに関連付けられ得る。一部の実装では、マルチユーザIMVRセッションの各ユーザが音声に関連付けられることができ、音声録音は、そのIMVRセッションのユーザごとに1つの音声を取得するために管理されることができる。一部の実装では、IMVRシステムは特定のユーザが音を生成している(たとえば、話している)ことを感知することができ、IMVRシステムはそのユーザの音声を消音して、より高品質のサウンドを生成し、そのセッションで他のユーザに中継できる(たとえば、エコー効果、または干渉効果を回避するために)。一部の実装では、IMVRシステムは、ユーザ間の対話(たとえば、仮想クラスルームセッションでの家庭教師と学生の間のディスカッション)をキャプチャするための開始と停止を含む、ユーザに関連付けられた音声のセットを操作することができる。場合によっては、IMVRセッションのサブセットが記録されることができる(たとえば、より大きなクラスルームの学生のサブグループ)。一部の実装では、あるセッションからのIMVR環境のあるインスタンス(たとえば、仮想クラスの学生のサブグループ)は、別のセッションに関連付けられた別のIMVR環境(たとえば、学生の別のサブグループ、または学生のクラス)にエクスポートされることができる。
【0111】
IMVRシステムのユーザデバイスは、一連の制御機能を有する第2のユーザによる再生をサポートするように構成されることができる。第2のユーザは、再生のプロパティのセットを選択し、及び/又はユーザデバイスのプロパティに関連付けられた値を選択することができる。たとえば、再生はユーザの裁量で開始、一時停止、および/または停止されることができる。再生は、他の適切な方法で巻き戻し、再生、または変更されることができる。いくつかの実装形態では、第2のユーザは、透明度、色などのユーザデバイスプロパティで選択して、再生においてレンダリングされるオブジェクトの部分のインスタンスを変更および/または操作することができる。
【0112】
本明細書で説明するように、IMVRシステムは、IMVR環境内のオブジェクトと対話する複数のユーザをサポートするように構成されることができる。IMVRシステムは、各ユーザデバイスが接続され得る方法(例えば、有線接続を貸しいて、無線接続を介して、様々なパラメータの通信ネットワークを介してなど)に関係なく、各ユーザデバイスの特定のハードウェア構成に関係なく、共有IMVR環境が複数のユーザデバイスにわたる提示において統合されるように構成されることができる。場合によっては、IMVRシステムは、そのユーザデバイスでレンダリングされたオブジェクトのインスタンスの外観が他のデバイス上のインスタンスの外観と類似または一致するように、ユーザデバイスのハードウェア構成を考慮して重み付けされたレンダリングを実行するように構成されることができる。たとえば、ユーザデバイスが共有IMVRセッションにおいて他のユーザデバイスよりも強力で、高いサンプリングレートまたはフレームリフレッシュレートが可能な場合、そのユーザデバイスに関連付けられたレンダラは、ハードウェア構成の違いに適合するためのオブジェクトの一部に関連付けられた色及び/又は透明度などのレンダリングプロパティを較正することができる。一例として、500倍のサンプルが可能なユーザデバイスは、300倍のサンプルが可能なユーザデバイス(1/300のサンプル重み付けを使用する可能性がある)と比較して、より小さな割合(たとえば、1/500×値)に重み付けされたサンプル値を使用することができる。
【0113】
新しいユーザデバイスを進行中のIMVRセッションに追加して、セッションにシームレスに参加し、IMVRの統一された提示を体験することができる。一部の実装では、新しいユーザデバイスが進行中のIMVRセッションに関連付けられたデータパッケージをまだ有さない場合、新しいユーザデバイスはデータパッケージを受信することができる。場合によっては、新しいユーザデバイスはデータパッケージのライブラリ内の全てのデータを受信することができる。場合によっては、新しいユーザは、完全なライブラリではなく、進行中のIMVRセッションの一部に関連付けられたデータ(たとえば、1人の患者に関連付けられた医療データまたは1つのクラスの指導に関連付けられた医療データ)を受け取ることができる。
図36Aは、例示的なデータパッケージの概略図である。
【0114】
たとえば、一部の実装では、データパッケージは、ユーザデバイスのグラフィックカードに送信される生の画像データであることができる。いくつかの実装形態では、画像のパレットは送信ユーザによって選択されることができ、選択されたデータセットは新しいユーザデバイスに送信されることができる。上記のように、IMVRセッションは、複数のユーザを含むことができ、いくつかの実装形態では、IMVRシステムは、増加または減少する特権(privilege)を有するユーザの階層を確立することができる。例えば、
図26は、IMVRセッションが、ホストデバイスHD0に関連付けられ、最大の特権を有する第1のユーザまたはホストユーザによって開始され得るセットアップ例を示す。ホストユーザは、ユーザデバイスUD1-4を使用して他のユーザを招待し、ネットワーク(TCP/IP接続ネットワークなど)を介してユーザデバイスにデータパッケージを提供して、IMVRセッションに参加することができる。
図26は、ホストデバイスHD0およびユーザデバイスUD1-4のセットに関連付けられたホストユーザを用いたセットアップ例を示す。
【0115】
IMVRシステムは、受信したデータパッケージの完全性をチェックし、他のユーザに関してデータパッケージを同期するように、新しいユーザデバイスがプログラムで命令されることができるように構成されることができる。
図36Bは、ユーザがIMVRセッションに参加することを可能にするためのデータパッケージ処理の例示的な方法を説明するフローチャートである。場合によっては、データパッケージは、揮発性メモリ(例えば、グラフィックプロセッサユニット(GPU)、VRAMなどに関連付けられたメモリ)に格納されることに加えて、受信側ユーザデバイスにおいて不揮発性メモリ(例えば、中央処理装置(CPU)に関連付けられたメモリ)にローカルに格納され得る。いくつかの実装形態では、送信ユーザまたはホストユーザは、受信ユーザが受信デバイスの不揮発性メモリにおけるローカルストレージを可能にすることを承認することができる。いくつかの実装形態では、データパッケージは、データパッケージに含まれるデータセットを処理、使用、および/または格納するために利用可能な許可を示す許可情報に関連付けられることができる。
【0116】
いくつかの実装形態では、データはプライバシー保護によってバインドされる可能性があり、したがって、受信側ユーザデバイスは、受信側ユーザデバイスに関連付けられた不揮発性メモリにデータを保存するのではなく、受信側ユーザデバイスに関連付けられた揮発性メモリ(グラフィックス処理カードなど)にのみデータを保存するために送信ユーザデバイスまたはホストユーザデバイスによって命令されることができる。このような実装では、レンダラが使用するビデオRAMにデータを保存した後、デバイスに関連付けられている他の揮発性メモリ(RAMなど)からデータを削除するように構成できる。場合によっては、受信デバイスが一度に複数のデータチャンクにアクセスできないように、IMVRシステムは一度に1つのチャンクでデータパッケージを送信するように構成されることができる。
【0117】
場合によっては、新しいユーザに送信する前にデータパッケージを変更できる。たとえば、データパッケージをスクラブして患者識別メタデータを削除し、受信側ユーザデバイスに送信できる。受信側ユーザデバイスは、オブジェクトのレンダリングに使用される情報を抽出し、他のユーザと進行中のIMVRセッションに参加するように命令されることができる。たとえば、受信データは、レンダリングに関連付けられたデータ(ボクセルデータ、ボクセルサイズ、ボクセル幅、ボクセル高さなど)を抽出できる。
図27は、一実施形態に係る、IMVRシステムを使用して、ホストマシンとクライアントマシンとの間でIMVR環境に関連するデータを共有する方法の概略図である。いくつかの実装形態では、ホストマシンは、第1のユーザまたはホストユーザに関連付けられたユーザデバイス(例えば、
図1Aのユーザデバイス101)であることができ、クライアントマシンは、後続のユーザに関連付けられたユーザデバイス(例えば、ユーザデバイス102)であることができる。いくつかの実装形態では、ホストマシンは、IMVRレンダラ(例えば、IMVRレンダラ105)であることができ、クライアントマシンは、ユーザデバイス(例えば、ユーザデバイス102)であることができる。
【0118】
本明細書で説明されるIMVRシステムのユーザデバイス部分のいくつかの実装形態では、システムは、進行中のIMVRセッションのユーザデバイスのセットに、セッションへの新しいユーザの次の追加を示すように構成され得る。いくつかの実装形態では、IMVRシステムは、
図37のフローチャートによって説明される例示的な方法に示されるように、新しいユーザのデバイスに関してレンダリングの完了レベルで新しいユーザの準備ができていることを示すことができる。IMVR環境内の新しいユーザの音声(音声など)及び位置データは、新しいユーザがライブに参加してIMVR環境の操作を許可される前に、他のユーザデバイスにブロードキャストされることができる。IMVRシステムのユーザデバイスに関連付けられたユーザインターフェースは、新しいユーザがセッションに参加している間、新しいユーザがホストユーザと同じオブジェクトを視覚化していることを他のユーザに視覚的に示すことができる。ホストユーザ(共有IMVRセッションの第1のユーザなど)は、新しいユーザのユーザデバイスに関連付けられたデータパッケージが読み込まれ、またはオブジェクトのインスタンスが新しいユーザのユーザデバイスでレンダリングされる一方で、新しいユーザの制御に制限を設定することができる。たとえば、IMVR環境内の1つ又は複数のオブジェクトの第1のインスタンスが新しいユーザのユーザデバイスでレンダリングされる一方で、新しいユーザはIMVR環境での操作へのアクセスを制限することができる。
【0119】
一部の実装では、ホストユーザは、一連のユーザによって共有されるIMVR環境の中間インスタンスを制御することができる。
図26(上記)は、一実施形態に係る、インストラクターがIMVRシステムを実装する学生間の共有IMVRセッションのセットに柔軟に参加および離脱できるように、IMVR環境でレンダリングされたオブジェクトの複数のインスタンスを管理するように構成されたIMVRシステムの概略図である。
【0120】
図37は、一実施形態に係るIMVRシステムを使用して、上記のように、ユーザが進行中のIMVRセッションに参加することを可能にする方法の例示的な実装を説明するフローチャートである。
図38は、ユーザデバイスに関連付けられたデータパッケージの既存のライブラリにデータパッケージを追加する方法の例示的な実装を説明するフローチャートであり、ユーザデバイスは、進行中のIMVRセッションに参加する新しいユーザに関連付けられている。
図38のフローチャートは、一実施形態に係る、IMVRシステムを使用する進行中のIMVRセッション中の全てのユーザデバイスにわたって、新しいユーザに関連付けられたデータパッケージを更新し、オブジェクトのレンダリングに関連付けられたデータパッケージを同期させるために、レンダラ(例えば、レンダラ305)またはユーザデバイス(例えば、ユーザデバイス201)によって使用されることができる。
図39は、一実施形態に係るIMVRシステムを使用して、IMVRセッションに関連付けられた既存のユーザのセットに新しいユーザの視覚的表示を提供することを含む、ユーザインターフェースを管理する例示的な方法を説明するフローチャートである。
図39に記載されている方法は、本明細書に記載されているレンダラ(例えば、レンダラ305)またはユーザデバイス(例えば、ユーザデバイス201)によって実装されることができる。
【0121】
図40は、マッチメーカサーバ(matchmaker server)を使用して、学生をインストラクターと照合するための例示的な方法を説明するフローチャートである。たとえば、マッチメーカサーバは、学生のデバイスとインストラクターのデバイスの現在の状態を考慮し、IMVRセッションで学生とインストラクターとを照合することができる。いくつかの実装形態では、インストラクターのデバイスは、本明細書で説明されるユーザデバイス(例えば、ユーザデバイス201)と同様であり得る。学生のデバイスは、ユーザデバイス(例えば、ユーザデバイス201)であることもできる。一部の実装では、学生のデバイスは、機能が制限されるように定義されたユーザデバイスであることができる。たとえば、1つ又は複数の学生のデバイスは、データパッケージへのアクセスまたはデータパッケージを受け入れる能力、データパッケージの転送を承認する機能、データパッケージに注釈を付け又は変更する能力、ユーザデバイスでレンダリングされたオブジェクトのデータまたはインスタンスの特定の操作を実行する能力、共有IMVRセッションを呼び出し、開始または終了する能力、IMVR体験の記録を記録または再生する能力などに関連する制限を有することができる。
【0122】
一部の実装では、IMVRシステムは、関連する可能性のあるデータパッケージを使用して複数のIMVRセッションを並行して動作させるように構成されることができる。いくつかのIMVRセッションは、IMVRシステムによって編成および管理され、監督ユーザのいる1つの監督セッションと、より小さなユーザグループ(たとえば、インストラクターのいるクラスと、グループで作業する学生のより小さなサブグループを含むサブセッション)のいる複数のサブセッションとを有することができる。ユーザは、IMVRセッション内またはIMVRセッションと別の並行して発生するIMVRセッション(並列仮想ルームなど)との間で支援のフラグ又は他のユーザの注意を示すフラグを立て、他のセッションにわたる他のユーザへのメッセージを送受信することを可能にするツールを提供されることができる。たとえば、あるサブセッションの学生は、別のセッションに参加している可能性のあるインストラクターに支援を要求することができる。場合によっては、IMVRシステムは、IMVRセッション設定の階層を構成することができ、その結果、上位のセッションが下位のサブセッションでユーザにアクセスされることができるようにすることができる。サブセッションは、上位のセッションと同じデータパッケージを使用するように構成されることができる。他の例では、サブセッションは、上位のセッションに関連付けられたデータパッケージのコピーを使用するように構成されることができ、各コピーは各サブセッションに割り当てられる。一部の実装では、IMVRシステムは、レンダリングされたオブジェクトのインスタンス、および/または階層を上位のセッション(たとえば、サブグループからクラス全体)若しくは下位のセッション(たとえば、サブグループからさらに小さなグループ)に上げる若しくは下げるサブセッションにおける操作を投影またはエクスポートするように構成されることができる。
【0123】
図14は、IMVR環境におけるオブジェクトの第1のインスタンスに関連付けられたデータを受信し、そのデータを使用して、第1のユーザが第2のユーザとIMVR環境を共有できるようにオブジェクトの第2のインスタンスをレンダリングする例示的な方法1400を説明するフローチャートである。
【0124】
1471で、レンダラは、第1のデバイスおよび第2のデバイスから、(1)仮想環境内のオブジェクトの一部の第1のインスタンスに関連付けられたデータパッケージであって、オブジェクトの3次元構造に関連付けられたデータセットを含むデータパッケージと、(2)仮想環境内のオブジェクトに関して、第1のデバイスに関連付けられた第1のユーザの仮想環境内の空間位置を含む第1のユーザ情報と、(3)オブジェクトの所定のプロパティのセットに関連付けられた第1の入力のセットと、を受信する。
【0125】
1472で、レンダラは、第2のデバイスで、仮想環境内のオブジェクトに関して、第2のデバイスに関連付けられた第2のユーザの空間位置を含む第2のユーザ情報を受信する。
【0126】
1473で、レンダラは、第2のユーザ情報に基づいて、第1の入力のセットを第2の入力のセットに変換する。1474で、システムは、第2の入力のセットに基づいてルックアップテーブルを生成する。
【0127】
1475で、レンダラは、第2のデバイスで、(i)データセット、(ii)第2の入力のセット、および(iii)ルックアップテーブルに基づいて、仮想環境におけるオブジェクトの部分の第2のインスタンスをレンダリングする。オブジェクトの部分の第2のインスタンスは、第2のユーザの視点からであり、視点は第2のユーザの空間位置に基づく。
【0128】
図15は、一実施形態に係る、IMVRシステムのレンダラ(例えば、レンダラ305)によって、IMVR環境内のオブジェクトのボリュームをレンダリングする例示的な方法を説明するフローチャートである。たとえば、レンダラは、立方体の背面のデプステクスチャと立方体の前面のデプステクスチャに関連する情報を受信することができる。レンダラは、レンダラの断面機能が選択されているかどうかを確認することができる(たとえば、XSection_On=1は選択を示すことができる)。選択した場合、レンダラは断面平面のデプステクスチャを取得することができる。選択されていない場合、レンダラはDepthTesting機能が選択されているかどうかを確認することができる。選択した場合、レンダラは全ての表示されている不透明なオブジェクトのデプステクスチャを取得することができる。レンダラは、包含プロパティ値及び除外プロパティ値の選択を確認し、選択に基づいて、包含オブジェクトの背面と前面、または除外オブジェクトの背面と前面のデプステクスチャをそれぞれ取得することができる。レンダラは、変換行列を取得して実世界空間を立方体空間に変換し、ユーザデバイスに関連付けられたメインカメラの位置を取得し、立方体スケールに基づいて世界環境をスケーリングし、ボリュームデータをレンダリングすることができる。
【0129】
図16は、一実施形態に係る、IMVR環境において、
図15に記載されたレンダリングに続く一連のイベントを伴う、ボリュームオブジェクトをレンダリングする例示的な方法を説明するフローチャートである。
図17Aおよび17Bは、一実施形態に係るIMVRシステムのレンダラを使用して、ユーザの入力のセットを使用して、IMVR環境でレンダリングされたボリュームオブジェクトに関連付けられたテクスチャをシェーディングすることを含む方法の一部を示す。
図17Aの矢印AAおよびBBは、
図17Bの矢印AA’およびBB’に続く。
図18は、一実施形態に係る、IMVRシステムのレンダラによって、光線マーチングアプローチを使用して、IMVR環境でボリュームオブジェクトをレンダリングする例示的な方法を説明するフローチャートである。
【0130】
いくつかの実装形態では、中心窩レンダリングまたはマスクされたレンダリングを実行するようにIMVRシステムを構成して、IMVR環境内のオブジェクトのインスタンスの視覚化をユーザによりよく提示することができる。一部の実装では、マスクされたレンダリングをビニングで実装されることができる。たとえば、このようなアプローチを使用すると、ユーザ体験を向上させるという全体的な目標で、ユーザが画面の特定の領域でより高い解像度を表示し、重要でない領域で解像度を下げることを可能にする。この例は、視点追跡(eye tracking)を使用して、ユーザが見ている場所(中心窩)でより高い解像度をレンダリングすることであり、これにより、画面全体を高解像度でレンダリングしようとする場合と比較して、レンダリングを更新するフレームレートを上げることが可能になる。ビニングは、レンダリング中に複数のピクセルを1つのピクセルとして扱う方法であり、低解像度の領域を実現する。
【0131】
図19Aおよび19Bは、
図18の光線マーチングアプローチによって使用されるこれらのサンプルのそれぞれに割り当てられるサンプル距離および重みを生成する例示的な方法を示す。
【0132】
いくつかの実装形態では、IMVRシステムは、1つまたは複数のアーティストがレンダリングしたメッシュオブジェクトを含むデータセットを使用するように構成されることができる。IMVRシステムは、ユーザに提供される断面ツールを含む一連のツールを使用して、メッシュオブジェクトの断面をキャプチャするために使用されることができる。
図20は、IMVR環境でレンダリングされたメッシュオブジェクトのキャプチャを呼び出すための一連のユーザアクションを示す。たとえば、IMVRシステムの一部の実装では、ユーザは機能を選択して、ユーザデバイスのユーザインターフェースを介して断面をキャプチャできるようにすることができる。次に、ユーザは、IMVR環境の2次元交差オブジェクトにカーソルを合わせると、関連付けられた3次元メッシュオブジェクトの名前を表示することができる。ユーザは、2次元交差オブジェクトを選択して、ユーザによって定義された断面平面を基準にした位置で、関連付けられた3次元メッシュオブジェクトのコピーを作成または有効にすることができる。場合によっては、ユーザは3次元メッシュオブジェクトを選択して、3次元メッシュオブジェクトを破棄または無効にすることができる。
【0133】
図21は、一実施形態に係る、断面ツールを使用してメッシュオブジェクトをキャプチャするための例示的な方法を説明するフローチャートである。たとえば、レンダラは、断面の位置及び方向を決定するように構成されることができる。レンダラは、対象のメッシュのリストを生成し、そのリストから、境界が断面と交差しないメッシュを削除することができる。リスト内の残りのメッシュについて、レンダラはメッシュ内の三角形をリストし、各三角形について、その三角形が断面と交差するかどうかを判定することができる。もしそうであれば、決定に基づいて、レンダラは交差のエッジを決定する。交差の各エッジについて、エッジが任意のラインセグメントに接続している場合、レンダラはラインセグメントに追加する(そうでない場合は、新しいラインセグメントを作成する)。線分が閉じた形状の場合、閉じた境界から2Dメッシュを作成する。レンダラは、3次元メッシュを作成するまで、リスト内の全てのエッジと全てのメッシュに対してこのプロシージャを繰り返し実行する。2D交差メッシュから単一のオブジェクトを作成し、オブジェクトを3次元メッシュオブジェクトに関連付けり。これは、キャプチャされたメッシュ断面として再調整される。
【0134】
図22は、別の実施形態に係る、別の断面ツールを使用して、IMVR環境でレンダリングされたメッシュオブジェクトの断面をキャプチャするための別の例示的な方法を示す。この方法に従って、解像度が選択され、断面正方形の位置及び方向が決定される。断面の各辺について、正方形の光線が所定の間隔で反対側に照射される。光線に沿った衝突ごとに、遭遇したオブジェクトが決定され、衝突点がリストに追加されて、点のクラウドが返される。次に、レンダラは順序付きリストを生成し、各点について計算され、順序なしリストから最近傍が決定される。最近傍が順序付きリストの第1の点よりも近い場合、その近傍は順序付きリストに追加される。順序付けられたリストごとに、閉じた形状の境界から2次元メッシュが生成される。3次元メッシュが少なくとも1つの2D交差を生成した場合、レンダラは2D交差メッシュから単一のオブジェクトを作成し、そのオブジェクトを3Dメッシュオブジェクトに関連付ける。場合によっては、レンダラは、三角形を作成して表面を作成することにより表面を生成するために三角形生成器(triangulator)を使用することができる。
【0135】
一部の実装では、メッシュオブジェクトを使用して、ゴースティング(ghosting)とも呼ばれるゴースト(ghost)を作成することができる。たとえば、レンダラは、2次元メッシュが作成されるオブジェクトのコピーを作成することができる。レンダラは、ボリュームオブジェクトを含む3次元データセットに関連付けられたメッシュを元に戻すことができるが、メッシュをオフ状態で格納する。オンにすると3次元オブジェクトがオフになるとき、アクティブ且つ可視であるように切り替えるように構成されることができる。
【0136】
断面ツールを使用して、メッシュモデルデータを介して任意の角度で断面を取得することができる。これにより、交差点の2D表現が作成される。この断面は対話可能である。ユーザは、構造でポイントしてラベルを表示させ、構造をクリックして断面の完全な構造をポップアウトさせることができる。たとえば、断面は胸部を通して取得され、ユーザは、大動脈をポップアウトし、胸部で上に、次に腹部の下にどのように進むかを視覚化することができる。この使いやすさにより、特定の平面の上下の構造のコースに関するユーザ詳細情報を提供される。これは、医療画像の研究に役立つ。
図23は、IMVRシステムにおける断面ツールの例示的な実装を説明するフローチャートである。
【0137】
IMVRシステムの一部の実装では、1人又は複数のユーザは、オブジェクトのレンダリングされたインスタンスを操作するための追加のツールセットを提供されることができる。一部のツール例は、レンダリングされたオブジェクトのインスタンスの一部を除外または含めることによって対象のボリュームを分離するように構成されたボリュームスケーリング、除外および/または包含ツールと、オブジェクトと交差する任意の平面に沿ってボリュームオブジェクトを切断するように構成された断面ツールとを含むことができる。その他の例は、ボクセルペインタツールとボクセルイレーサツール、およびユーザがレンダリングオブジェクトのインスタンスに注釈を付けることができるように構成されたカウント/ラベリングツール、メッシュ作成ツール、測定ツールなどを含む。
【0138】
一例として、測定ツールは、体積データセット内で正確な測定を行う能力をユーザに与えるように構成されることができる。ユーザは、フリーハンドまたはポイントツーポイントで線を引くことができ、正確な測定値でラベルを付けることができる。たとえば、血管造影図からの大動脈の直径、または共焦点顕微鏡データからの2つの細胞間の距離を測定することができる。さらに、一部の実装では、ユーザが作成済みの線から個々の線の頂点を移動することを可能にする特徴がある。一部の実装では、ユーザは頂点を追加または削除することもできる。
【0139】
図28は、ボリュームスケーリングツールを使用して、レンダリングされたオブジェクトのインスタンスのボリュームをスケーリングするための例示的な方法を説明するフローチャートである。レンダラは、
図28のフローチャートを実装して、ユーザ入力のセットおよび/またはユーザデバイスに関連付けられたサンプリング情報に基づいて計算されたスケーリング係数に基づいてレンダリングすることができる。例えば、レンダラは、データファイルのボクセルサイズおよびボクセル寸法に関連付けられた情報を受け取り、生成されたスケールベクトルに基づいて、データセットに関連付けられたオブジェクトを所定の係数でスケーリングすることができる。
図29A、29B、および30は、それぞれ、除外、包含、および断面ツールを使用する例示的な方法を説明するフローチャートである。
図31A-31C、32A、32B、33A、33B、34および35は、IMVR環境でレンダリングされたオブジェクトのインスタンスを操作するための追加の例示的なツールを実装する例示的な方法を説明するフローチャートである。例えば、
図34に示されるように、測定または注釈ツールを使用して、ユーザが線を描き、その線に注釈としてラベルを付けることを可能にすることができる。
【0140】
場合によっては、ユーザは、レンダリングされたオブジェクトの一部を測定し、その部分に測定注釈(例えば、オブジェクトの一部のスケールを示す測定注釈)でラベルを付けることができる。IMVRシステムは、注釈をIMVRセッションの他のユーザに伝播できるように構成されることができる。IMVRシステムでは、ユーザが注釈をオブジェクトのレンダリングされたインスタンスの一部に関連付け、インスタンスを保存して、後で他のユーザに送信することもできる。
【0141】
IMVRシステムのいくつかの実装形態では、1人または複数のユーザは、IMVR環境でレンダリングされたオブジェクトを操作するためのツールのセットを提供されることができる。たとえば、ユーザはオブジェクトを近づけ、拡大し、縮小し、ピボットし、回転させ、ゆっくりと動かし(nudge)、オブジェクトへのその他の適切な操作を実行することができる。場合によっては、ユーザは、そうでなければ静的であるオブジェクトをユーザアクションで動かすことができる。たとえば、ユーザは、各ユーザが制御する1つまたは複数のハンドコントローラを使用して、オブジェクトのスロー、キャッチ、ロール、および/またはプルイン(pull in)を開始できる。IMVRシステムは、IMVR環境内のオブジェクト及びユーザのモビリティ法則(mobility law)を適切な方法で変更するように構成されることができる。例として、ユーザは、コントローラのジョイスティックを向けることにより、オブジェクトを選択して近づけたり、遠ざけたりすることができる。移動するオブジェクトの速度は、コントローラからの距離に応じることができる。たとえば、IMVRシステムは、IMVR環境でユーザに近づくにつれて、遠くのオブジェクトがすばやく移動し、速度が低下するように構成されることができる。例示的な釣り竿ツールは、ユーザ制御デバイス(例えば、釣り竿)がオブジェクトと交差し、距離に比例する速度でオブジェクトを引き上げることを可能にするように構成されることができる。別の例として、IMVRシステムは、ユーザがオブジェクトを軽く放ったときに惰性走行し、停止する前にゆっくりと勢いを失うように構成されることができる。その後、ユーザのコントロールは、投げられたオブジェクトから解放され、別のユーザがそれを投げたオブジェクトを拾うことができる。IMVRシステムは、2つのコントローラを使用してオブジェクトを拡大できるように構成されることができる。たとえば、ユーザはオブジェクトレンダラのインスタンスをポイントし、1つのアクションを使用してオブジェクトを取得または選択し、別のアクションを使用してドラッグすることができる。たとえば、レンダラは、ユーザがコントローラに関連付けられたトリガーを引くと、オブジェクトがポインタに取り付けられ、ユーザがトリガーを放した後でも、オブジェクトがユーザのコントローラまたは手で回転できるように機能することができる。最後の操作可能なオブジェクトは、ハンドコントローラとの永続的な関連付けを持つことができる。2つのコントローラを使用して、最後に選択したオブジェクトを両手で掴む(double grip)ことができる。ユーザは、手を離したり、一緒に引いたりして、拡大または縮小できる。レンダラは、コントローラ間の距離を計算し、スケーリング対象のオブジェクトの固定中心点を使用しながら、距離の変化に基づいてオブジェクトをスケーリングすることができる。固定中心点は任意の関心のある点であることができ、例えば、ズームインすると、ユーザは再センタリングすることなく拡大された領域に焦点を合わせることができる。ユーザは、倍率を変更しながらオブジェクトを回転させることもできる。
【0142】
いくつかの実施形態は、1つまたは複数のデジタル解剖学的モデルおよび神経解剖学的接続データを使用して、人間の神経系の双方向で機能的に代表的なモデルをレンダリングする。他の代表的なニューロンの活動に視覚的に応答し、「病変」オブジェクトに損傷を与えるシミュレートされたニューロンをレンダリングすることにより、そのような実施形態は、神経解剖学的回路の信号経路、方向性、および/または機能状態の空間的関係をユーザに伝えることができる。たとえば、ユーザが「病変」オブジェクトまたは神経学的損傷の他の表現を神経解剖学的モデルに配置した場合、代表的なシステムは、影響を受けたニューロンの中断に応答し、患者によって経験された機能喪失の特定の表現を表示することができる。マルチユーザ接続を利用することにより、そのような実施形態は、同じまたは離れた場所からのユーザが、同じ共通の双方向な環境内のデジタルアバターによって表され、同じオブジェクトとリアルタイムで対話することを可能にする。マルチユーザ環境で図を作成して教える能力を高めるために、ツールがユーザに提供され、仮想環境内のオブジェクトに固定された3次元の線画を作成することを可能にすることができる。たとえば、インストラクターがIMVR環境での3次元の図及びダイアグラムを使用して講義を実施および記録することを可能にすることができる。いくつかの実施形態では、開示された特徴を利用して、断面ベースの医療画像技術の学生の直感的な理解を高めることができ、開示は、IMVR環境に存在する任意の3次元オブジェクトからの2次元断面を提供するように構成されることができ、断面に表されている3次元オブジェクトを参照する能力を維持しながら、ユーザ(例えば学生)がCTおよびMRI画像化の作成をシミュレートすることを可能にする。実施形態は、リアルタイムの対話(例えば、学生およびインストラクター)を提供および/または促進するだけでなく、本開示の教示はまた、自己完結型モジュールの作成を可能にする。ユーザの対話と作成された図面または断面は、送信可能な保存ファイルに記録可能/記録されることができる。これは、元々インストラクターから記録されたアクションと教訓的な指示を実行する仮想インストラクターとして表されることができる。そのような実施形態は、学生のユーザが通常の指導期間外に、そして彼ら自身のペースでコンテンツをレビューすることを可能にする。上記の断面ベースの医療画像に加えて、システムは、コンピュータ断層撮影(CT)、磁気共鳴画像(MRI)、ポジトロン放出断層撮影-コンピュータ断層撮影(PET-CT)、並びに/または脳磁図(MEG)データ、および1つ又は複数の他のデータソースの開始などのDICOM画像をインポートすることができる。この情報は、様々なソフトウェアプロセスを通じてインポートされ、仮想現実で画像をレンダリングする特注の数学的システム及び方法によって分析される。さらに、いくつかの実施形態は、ユーザが関心のないデータをドロップオフしながら関心のあるデータ(密度)を見ることができる革新的な伝達関数を通じて、システム(例えば、血管、骨、組織)の疑似セグメンテーション(pseudosegmentation)を提供する。一部の実装では、これは、臨床医/ユーザに、リアルタイムで詳細な分析を行うために、最前線の構造及びシステムを強調し、前面に表示する能力を提供することができる。不透明な平面をボリュームに挿入して、従来の2D画像と同様のデータを表示することができる。ユーザは、伝達関数に埋め込まれた透明度を調整して、不透明な平面から現れる構造を視覚化することができる。さらに、いくつかの実施形態は、VR/AR環境におけるマルチユーザ対話を提供する。ユーザは同じ場所にいる必要がないので、そのような実施形態は、高速ネットワークを用いて世界中のどこからでも臨床的議論を可能にする。
【0143】
上記のように、上記のIMVRシステムを使用して、任意の調査分野からの任意のオブジェクトに関連付けられた任意の空間データ系列を視覚化することができる。
図51A-51Cは、CTを介して得られた空間データ系列を使用して、宝石および/または金属のボリューム化および視覚化に使用されるIMVRシステムの例示的な実施形態を示す。
図51Aは、CTスキャンによって得られたガーネット石の画像であり、これにより、石の封入体および結晶構造の検査が可能になる。
図51Bは、IMVR環境におけるガーネット石の色付けされたレンダリングである。
図51Cは、
図51Aおよび51Bのガーネット石の構造図であり、一実施形態に係るIMVRシステムによって例示的なIMVR環境でボリューム化およびレンダリングされ、
図51Cにおいてラベル付けされた結晶構造Aおよび封入体Bを示す。
【0144】
様々な実施形態が上で説明されてきたが、それらは単なる例として提示されたものであり、限定ではないことを理解されたい。上記の方法および/または概略図が、特定のイベントおよび/またはフローパターンが特定の順序で発生することを示している場合、特定のイベントおよび/またはフローパターンの順序を変更することができる。実施形態が特に示され、説明されているが、形態および詳細に様々な変更を加えることができることが理解されよう。
【0145】
様々な実施形態が特定の特徴および/または構成要素の組み合わせを有するものとして説明されてきたが、他の実施形態は、上記の実施形態のいずれかからの任意の特徴および/または構成要素の組み合わせを有することが可能である。
【0146】
本明細書に記載のいくつかの実施形態は、様々なコンピュータ実装操作を実行するための命令またはコンピュータコードをその上に有する非一時的コンピュータ可読媒体(非一時的プロセッサ可読媒体とも呼ばれる)を備えたコンピュータ記憶製品に関する。コンピュータ可読媒体(またはプロセッサ可読媒体)は、それ自体が一時的な伝搬信号(例えば、空間またはケーブルなどの伝送媒体上で情報を運ぶ伝搬電磁波)を含まないという意味で非一時的である。媒体およびコンピュータコード(コードとも呼ばれる)は、特定の目的のために設計および構築されたものである場合がある。非一時的なコンピュータ可読媒体の例は、これらに限定されないが、ハードディスク、フロッピー(登録商標)ディスク、および磁気テープなどの磁気記憶媒体、コンパクトディスク/デジタルビデオディスク(CD/DVD)、コンパクトディスク-読み取り専用メモリ(CD-ROM)、ホログラフィックデバイスなどの光記憶媒体、光ディスクなどの光磁気記憶媒体、搬送波信号処理モジュール、および特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)デバイスなど、プログラムコードを格納および実行するように特別に構成されたハードウェアデバイスを含む。本明細書に記載の他の実施形態は、例えば、本明細書で論じられる命令および/またはコンピュータコードを含むことができるコンピュータプログラム製品に関する。
【0147】
本開示において、単数形の項目への言及は、明示的に別段の記載がない限り、または文脈から明らかでない限り、複数形の項目を含むと理解されるべきであり、逆もまた同様である。文法的接続詞は、特に明記されていない限り、または文脈から明らかでない限り、結合された節、文、単語などのありとあらゆる論理和および接続詞の組み合わせを表現することを目的とする。したがって、「または」という用語は、一般に、「および/または」などを意味すると理解されるべきである。本明細書で提供される任意のすべての例または例示的な言語(「例えば」「など」、「含む」など)の使用は、単に実施形態をよりよく明らかにすることを意図しており、実施形態またはクレームの範囲に制限を課さない。
【0148】
本明細書に記載のいくつかの実施形態および/または方法は、ソフトウェア(ハードウェア上で実行される)、ハードウェア、またはそれらの組み合わせによって実行されることができる。ハードウェアモジュールは、例えば、汎用プロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、および/または特定用途向け集積回路(ASIC)を含み得る。ソフトウェアモジュール(ハードウェア上で実行)は、C、C ++、Java(登録商標)、Ruby、Visual Basic(登録商標)、および/またはその他のオブジェクト指向、手続き型、またはその他のプログラミング言語および開発ツールを含む、様々なソフトウェア言語(コンピュータコードなど)で表現されることができる。コンピュータコードの例は、これらに限定されないが、マイクロコードまたはマイクロ命令、コンパイラによって生成されるようなマシン命令、Webサービスの生成に使用されるコード、および翻訳機を使用するコンピュータによって実行される高レベルの命令を含むファイルを含む。例えば、実施形態は、命令型プログラミング言語(例えば、C、Fortanなど)、関数型プログラミング言語(Haskell、Erlangなど)、論理プログラミング言語(Prologなど)、オブジェクト指向プログラミング言語(Java、C++など)、またはその他の適切なプログラミング言語及び/又は開発ツールを使用して実装され得る。コンピュータコードの追加の例は、制御信号、暗号化されたコード、および圧縮されたコードが含まれるが、これらに限定されない。
【0149】
様々な本発明の実施形態が本明細書に記載および図示された。機能を実行するおよび/または結果を取得するための、並びに/または結果および/若しくは本明細書に記載の利点の1つまたは複数を得るための様々な他のツール、構成要素、要素、手段、および/または構造が理解されるべきである。そのような変形および/または修正のそれぞれは、本明細書に記載の実施形態の範囲内であると見なされる。さらに、本明細書に記載の全てのパラメータ、寸法、材料、および構成は例示的なものであり、実際のパラメータ、寸法、材料、および/または構成は、本開示の実施形態が利用および/または適用される特定の用途に依存し得ることを理解および理解されたい。当業者は、本明細書に記載の特定の新規の実施形態および実施形態と多くの同等物である、日常的な実験のみを使用して認識および/または確認することができるであろう。したがって、前述の実施形態は例としてのみ提示され、開示された実施形態およびそれに相当するものの範囲内で、実施形態は、具体的に説明および/または図示された以外の方法で実施され得ることが理解されるべきである。本開示の実施形態は、本明細書に記載の個々の特徴、システム、物品、材料、キット、および/または方法のそれぞれを対象とする。さらに、そのような機能、システム、記事、材料、キット、および/または方法が相互に矛盾しない場合、そのような機能、システム、物品、材料、キット、および/または方法の2つ以上の任意の組み合わせが、本開示の範囲内に含まれる。
【0150】
上記の実施形態は、多くの方法のいずれかで実装されることができる。例えば、実施形態は、ハードウェア、ソフトウェア、またはそれらの組み合わせを使用して実装することができる。ソフトウェアに実装された場合、ソフトウェアコードは、さまざまな方法で提供される任意の適切なプロセッサまたはプロセッサの集合上で実行されることができる。
【0151】
さらに、本開示は、医療画像システム、外科システム、治療システム、データ処理システムを含む他のシステムと併せて使用することができ、それらのいずれも、いくつかの方法のいずれかで具体化できることを理解されたい。実施形態は、マルチユーザVRシステム内に接続された複数のユーザデバイスを介して複数のユーザに提供することができる双方向なマルチユーザ仮想現実環境を効率的にレンダリングおよび更新するための方法および装置を含む。本明細書で使用されるように、いくつかの実施形態では、VRシステムは、拡張現実(AR)システムを含むことができる。本開示は、医療/外科データ、VR/AR用に変換された多次元データを含む、双方向なマルチユーザVR/AR提示および体験をレンダリング、管理、記録、および再生するための新規で有利な方法、システムおよび装置を含み、リアルタイムおよび/またはほぼリアルタイムのデータ、画像、ビデオ、音声、ストリーミングメディア、CTデータ、MRIデータ、EEGデータ、MEGデータなどを含む視覚データを含むことができる。いくつかの実装形態では、多次元データの一部またはすべてがほぼリアルタイムまたはリアルタイムであり、複数のユーザ間のやり取りを同様に調整して、例えば、手術中または教育中にそのような改善を利用することができる。実施形態は、複数のユーザが共有VR/AR環境でデータをやり取りおよび操作しているときに必要とされる帯域幅を低減するように構成されることができる。例として、本開示の教示は、米国特許公開第2013/0245461号および/または2016/0191887号および/または米国特許米国特許第6,256,529号の教示と統合されることができ、それぞれの全体が、全ての目的のために参照により本明細書に明示的に組み込まれる。
【0152】
本明細書で概説される様々な方法および/またはプロセスは、様々なオペレーティングシステムまたはプラットフォームのいずれか1つを使用する1つまたは複数のプロセッサ上で実行可能なソフトウェアとしてコード化されることができる。さらに、そのようなソフトウェアは、いくつかの適切なプログラミング言語および/またはプログラミングまたはスクリプトツールのいずれかを使用して記述されることができ、フレームワークまたは仮想マシンで実行される実行可能機械語コードまたは中間コードとしてコンパイルされることもできる。
【0153】
この点に関して、開示された様々な概念は、1つまたは複数のコンピュータまたは他のプロセッサで実行されるとき、上記の開示の様々な実施形態を実装する方法を実行する1つまたは複数のプログラムでエンコードされる、非一時的なコンピュータ可読記憶媒体(または複数のコンピュータ可読記憶媒体)(例えば、コンピュータメモリ、1つまたは複数のフロッピー(登録商標)ディスク、コンパクトディスク、光ディスク、磁気テープ、フラッシュメモリ、フィールドプログラマブルゲートアレイまたは他の半導体デバイス、または他の非一時的媒体または有形コンピュータ記憶媒体の回路構成)として具体化されることができる。コンピュータ可読媒体または複数の媒体は、その上に格納された1つまたは複数のプログラムを1つまたは複数の異なるコンピュータ/計算デバイスおよび/または他のプロセッサにロードして、上記の本開示の様々な態様を実施できるように、輸送可能であり得る。
【0154】
「プログラム」または「ソフトウェア」という用語は、本明細書では、一般的な意味で、上記実施形態の様々な態様を実施するようにコンピュータまたは他のプロセッサをプログラムするために使用できる任意のタイプのコンピュータコードまたはコンピュータ実行可能命令のセットを指すために使用される。さらに、一態様によれば、実行時に本開示の方法を実行する1つまたは複数のコンピュータプログラムを、本開示の様々な態様を実装するために多数の異なるコンピューティングデバイス/プロセッサ間でモジュール方式で配布できることを理解されたい。
【0155】
プロセッサ実行可能命令は、1つ又は複数のコンピューティングデバイスによって実行されるプログラムモジュールなどの多くの形式のものであることができ、特定のタスクを実行し特定のデータタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むことができ、機能は、様々な実施形態に適切に組み合わせられ、および/または分散され得る。
【0156】
データ構造は、プロセッサ可読媒体に様々な適切な形式で格納されることができる。説明を簡単にするために、データ構造は、データ構造内の場所によって関連付けられたフィールドを持つように示され得る。このような関係は、同様に、フィールド間の関係を伝達するプロセッサ可読媒体内の場所を使用してフィールドにストレージを割り当てることによって実現できる。しかし、任意の適切なメカニズム/ツールを使用して、データ要素間の関係を確立するポインタ、タグ、またはその他のメカニズム/ツールの使用を含む、データ構造のフィールド内の情報間の関係を確立できる。
【0157】
様々な開示された概念は、1つまたは複数の方法として具体化することができ、その例が提供されている。特定の方法の一部として実行される行為は、任意の適切な方法で命令されることができる。したがって、例示的実施形態ではいくつかの行為が連続的な行為として示されている場合でも、いくつかの行為を同時に実行することを含むことができる、図示/説明とは異なる順序で行為が実行される実施形態を構築することができる。
【0158】
本明細書で定義および使用されるすべての定義は、辞書の定義、参照により組み込まれる文書内の定義、および/または定義された用語の通常の意味を制御するように理解されるべきである。
【0159】
フロー図の使用は、実行される操作の順序に関して制限することを意味するものではない。本明細書に記載の主題は、異なる他の構成要素に含まれる、またはそれらと接続される異なる構成要素を示すことがある。そのような描写されたアーキテクチャは例示的な例であり、実際、同じ機能を達成するために、本明細書の教示に従って他の多くのアーキテクチャを実装できることを理解されたい。概念的な意味では、同じ機能を実現するための構成要素の配置は、目的の機能が実現されるように効果的に「関連付け」られる。したがって、特定の機能を達成するために組み合わされた本明細書の任意の2つの構成要素は、アーキテクチャまたは中間構成要素に関係なく、所望の機能が達成されるように互いに「関連付けられている」と見なすことができる。同様に、そのように関連付けられた任意の2つの構成要素は、互いに「操作可能に接続」または「操作可能に結合」されて、目的の機能を実現していると見なされることもできる。そのように関連付けられることができる任意の2つの構成要素は、互いに「操作可能に結合可能」であり、目的の機能を実現する。動作可能に結合可能な特定の例には、物理的に結合可能および/または物理的に対話する構成要素および/または無線的に対話するおよび/または無線的に対話する構成要素および/または論理的に対話するおよび/または論理的に対話する構成要素が含まれるが、これらに限定されない。
【0160】
本明細書で使用される不定冠詞「a」および「an」は、反対に明確に示されない限り、「少なくとも1つ」を意味すると理解されるべきである。
【0161】
本明細書で使用される「および/または」というフレーズは、そのように結合された要素、すなわち、ある場合には結合的に存在し、他の場合には分離的に存在する要素の「いずれかまたは両方」を意味すると理解されるべきである。「および/または」でリストされた複数の要素は、同じ方法、つまり、そのように結合された要素の「1つ又は複数」において解釈されるべきである。「および/または」の節によって具体的に識別される要素以外の他の要素が、具体的に識別される要素に関連するかどうかにかかわらず、任意選択で存在し得る。したがって、非限定的な例として、「Aおよび/またはB」への言及は、「含む」などの自由形式の言語と組み合わせて使用される場合、一実施形態ではAのみ(任意選択で、B以外の要素を含む);別の実施形態ではBのみ(任意選択でA以外の要素を含む);さらに別の実施形態では、AおよびBの両方(任意選択で他の要素を含む);等を指すことができる。
【0162】
本明細書で使用される場合、「または」は、上記で定義された「および/または」と同じ意味を有すると理解されるべきである。たとえば、リスト内の項目を区切る場合、「または」または「および/または」は包括的であると解釈されるものとする。つまり、要素の数またはリストの少なくとも1つを含むが、複数を含み、任意選択で、追加のリストされていないアイテムを含むものと解釈される。「ただ1つ」または「正確に1つ」など、用語のみ反対に明確に示され、または特許請求の範囲で使用される場合、「からなる」は、数または要素のリストの正確に1つの要素を含むことを指す。一般に、本明細書で使用される「または」という用語は、「どちらか」、「一方」、「いずれか」、「1つだけ」、または「ただ1つだけ」などの排他性の用語が先行する場合にのみ、排他的代替(すなわち、「一方または他方、しかし両方ではない」)を示すと解釈されるものとする。「本質的にからなる」は、特許請求の範囲で使用される場合、特許法の分野で使用される通常の意味を持つものとする。
【0163】
本明細書で使用される場合、1つまたは複数の要素のリストに関連する「少なくとも1つ」というフレーズは、要素のリスト内の任意の1つまたは複数の要素から選択される少なくとも1つの要素を意味すると理解されるべきであるが、必ずしもそうではなく、要素のリスト内に具体的にリストされている全ての要素の少なくとも1つを含み、要素のリスト内の要素の組み合わせを除外しない。この定義はまた、「少なくとも1つ」というフレーズが参照する要素のリスト内で具体的に識別される要素以外の要素が、具体的に識別される要素に関連するかどうかにかかわらず、任意選択で存在できることを可能にする。したがって、非限定的な例として、「AおよびBの少なくとも1つ」(または、同等に、「AまたはBの少なくとも1つ」、または同等に「Aおよび/またはBの少なくとも1つ」)は、一実施形態では、少なくとも1つ、任意選択で2つ以上、Aを含み、Bが存在しない(および任意選択でB以外の要素を含む);別の実施形態では、少なくとも1つ、任意選択で2つ以上、Bを含み、Aが存在しない(および任意選択でA以外の要素を含む);さらに別の実施形態では、少なくとも1つ、任意選択で2つ以上、Aを含み、少なくとも1つ、任意選択で2つ以上、Bを含む(および任意選択で他の要素を含む)等を指すことができる。
【0164】
本明細書で使用される場合、「備える」、「含む」、「運ぶ」、「有する」、「包含する」、「関与する」、「保持する」、「構成される」などのすべての移行句は、制限がないこと、つまり、含むがこれに限定されないことを意味するように理解されるべきである。米国特許庁特許審査手続マニュアルのセクション2111.03に記載されているように、「からなる」および「本質的にからなる」の移行フレーズのみが、それぞれクローズドまたはセミクローズド移行フレーズであるものとする。