JP2019075102A - 高い点群グラフィック解像度を維持しながら点群ボリュームを閲覧するための仮想現実システム - Google Patents
高い点群グラフィック解像度を維持しながら点群ボリュームを閲覧するための仮想現実システム Download PDFInfo
- Publication number
- JP2019075102A JP2019075102A JP2018176956A JP2018176956A JP2019075102A JP 2019075102 A JP2019075102 A JP 2019075102A JP 2018176956 A JP2018176956 A JP 2018176956A JP 2018176956 A JP2018176956 A JP 2018176956A JP 2019075102 A JP2019075102 A JP 2019075102A
- Authority
- JP
- Japan
- Prior art keywords
- points
- subset
- viewer
- gpu
- cpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/36—Level of detail
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Processing Or Creating Images (AREA)
- Length Measuring Devices By Optical Means (AREA)
Abstract
【課題】高い点群解像度を維持しながら点群ボリュームを閲覧するための仮想現実(VR)システムを提供する。【解決手段】仮想現実システムは、複数の点を有する3次元(3D)点群と、現在位置を有するVRビューアと、グラフィックス処理装置(GPU)と、中央処理装置(CPU)を含む。CPUは、VRビューアの現在位置に少なくとも一部は基づいて視野(FOV)を決定し、オクルージョンカリングを使用し、FOVに少なくとも一部は基づいて点のサブセットを選択し、点のサブセットをGPUに提供する。GPUは、CPUから複数の点のサブセットを受け取り、受け取った複数の点のサブセットに少なくとも一部は基づいてVRビューア上に表示するための画像をレンダリングする。複数の点のサブセットの選択は第1のフレーム/秒(FPS)レートで行われ、レンダリングは、第1のFPSレートよりも速い第2のFPSレートで行われる。【選択図】図2
Description
[関連技術の相互参照]
本出願は、その全開示が参照により本明細書に組み込まれる、2017年9月21日に出願された米国仮特許出願第62/561363号の利益を主張するものである。
本出願は、その全開示が参照により本明細書に組み込まれる、2017年9月21日に出願された米国仮特許出願第62/561363号の利益を主張するものである。
本明細書に記載される主題は、一般に、仮想現実に関し、特に、高点群グラフィック解像度を維持しながら、点群ボリュームを閲覧するための仮想現実システムに関する。
例えば建物などの領域の3次元(3D)表現を生成するのに、例えば3Dレーザスキャナ飛行時間(TOF)座標測定装置などの計測装置が使用されうる。このタイプの3Dレーザスキャナは、物体の拡散性散乱表面などの非協調ターゲットに光ビームを向ける。装置内の距離計が物体までの距離を測定し、角度エンコーダが装置内の2軸の回転角を測定する。測定距離および2つの角度により、装置内のプロセッサがターゲットの3D座標を決定することができる。
TOFレーザスキャナは、スキャナと目標点との間の空気中の光の速度に基づいて目標点までの距離が決定されるスキャナである。レーザスキャナは、通常、建物、工業施設、トンネルの内部領域などの閉じた空間または開いた空間をスキャンするために使用される。それらの空間は、例えば、工業用途や事故再現用途に使用されうる。レーザスキャナは、スキャナの周囲の体積内の物体を、体積内の物体表面を表すデータ点を取得することによって光学的にスキャンし、測定する。そのようなデータ点は、物体上に光ビームを送り、反射光または散乱光を集めて、距離、2角(すなわち、方位角および天頂角)、ならびに、任意選択で、グレースケール値を決定することによって得られる。本明細書では、点群(または点群データ)と呼ばれるこの生のスキャンデータは、スキャンされた領域または物体を表す3D画像を生成するために集められ、格納され、1または複数のプロセッサに送信される。
点群データを仮想現実(VR)ビューア上のディスプレイにレンダリングするときには、VRビューアのユーザにスムーズな視聴体験を提供するために、高いフレーム/秒(FPS)レートが求められる。現行のVRシステムでは、往々にして、FPSレートとVRビューアによって表示される点の数との間にトレードオフがある。このトレードオフが生じるのは、グラフィックス処理装置(GPU)がレンダリングすることのできるFPSレートが、GPUが各フレームで処理しなければならない点の数と共に減少するからである。
したがって、既存のVRシステムはその意図される目的に適してはいるが、必要なのは本発明の実施形態のいくつかの特徴を有するVRシステムである。
本発明の一実施形態によれば、仮想現実(VR)システムが提供される。本VRシステムは、複数の点を含む3次元(3D)点群と、現在位置を有するVRビューアと、VRビューアに結合されたグラフィックス処理装置(GPU)と、VRビューアに結合された中央処理装置(CPU)とを含む。CPUは、CPU上で実行されると、VRビューアの現在位置に少なくとも一部は基づいて視野(FOV)を決定するステップと、オクルージョンカリングを使用し、FOVに少なくとも一部は基づいて複数の点のサブセットを選択するステップと、複数の点のサブセットをGPUに提供するステップとを含む第1の方法を行う第1の実行可能コンピュータ命令に応答する。GPUは、GPU上で実行されると、CPUから複数の点のサブセットを受け取るステップと、受け取った複数の点のサブセットに少なくとも一部は基づいてVRビューア上に表示するための画像をレンダリングするステップと含む第2の方法を行う第2の実行可能コンピュータ命令に応答する。複数の点のサブセットの選択は第1のフレーム/秒(FPS)レートで行われ、レンダリングは、第1のFPSレートよりも速い第2のFPSレートで行われる。
本発明の一実施形態によれば、高い点群解像度を維持しながら点群ボリュームを閲覧する方法は、複数の点を含む3D点群と、CPUと、現在位置を有するVRビューアと、GPUとを含むVRシステムを設けるステップを含む。GPUとCPUとはVRビューアに結合されている。CPUは、VRビューアの現在位置に少なくとも一部は基づいてFOVを決定し、オクルージョンカリングを使用し、FOVに少なくとも一部は基づいて3D点群内の複数の点のサブセットを選択する。CPUは、複数の点のサブセットをGPUに提供する。GPUは、CPUから複数の点のサブセットを受け取り、受け取った複数の点に少なくとも一部は基づいてVRビューア上に表示するための画像をレンダリングする。複数の点のサブセットの選択は第1のFPSレートで行われ、レンダリングは、第1のFPSレートよりも速い第2のFPSレートで行われる。
本発明の一実施形態によれば、高い点群解像度を維持しながら点群ボリュームを閲覧するためのコンピュータプログラム製品は、VRシステム内のCPUで、VRビューアの現在位置に少なくとも一部は基づいてFOVを決定するプログラム命令と、オクルージョンカリングを使用し、FOVに少なくとも一部は基づいて3D点群内の複数の点のサブセットを選択するプログラム命令とが具体化されているコンピュータ可読記憶媒体を含む。CPUは、複数の点のサブセットをGPUに提供する。GPUは、CPUから複数の点のサブセットを受け取り、受け取った複数の点に少なくとも一部は基づいてVRビューア上に表示するための画像をレンダリングする。複数の点のサブセットの選択は第1のFPSレートで行われ、レンダリングは、第1のFPSレートよりも速い第2のFPSレートで行われる。
上記その他の利点および特徴は、以下の説明を図面と併せて読めばより明らかになるであろう。
本発明と見なされる主題は、本明細書の結びで特許請求の範囲において詳細に指摘され、明確に特許請求されている。本発明の上記その他の特徴、および利点は、以下の詳細な説明を添付の図面と併せて読めば明らかになる
詳細な説明で、本発明の実施形態を、例として図面を参照して、利点および特徴と共に説明する。
本発明の実施形態は、仮想現実(VR)ビューアにおける巨大な点群ボリュームの閲覧に関するものである。本明細書で使用される場合、「巨大な点群ボリューム」という用語は、何十億もの点(例えば、200億、400億、500億、またはそれ以上)を有する点群を指す。点群が400億を超える点を有することは珍しくはないが、典型的な現行のグラフィックス処理装置(GPU)は、フレーム/秒(FPS)レートが閲覧に許容可能なレートを下回らずに、VRビューア上で表示するために1つのVRシーンにおいておおよそ2000万点までレンダリングすることができる。本明細書に記載される1つまたは複数の実施形態では、あるFPSレートで巨大な点群を表示することができる中央処理装置(CPU)ベースのレンダリングエンジンが、VRビューアにおいて巨大な点群のサブセットを表示するように動作するGPUと組み合わされる。任意の時点に点群のサブセットのみを操作することにより、GPUは、VRビューアに表示される画像の解像度に影響を与えずにCPUより高いFPSレートで動作することができる。
一実施形態では、CPUは、GPUが第2のより速いFPSレート(例えば、90FPS)でVRビューア上にレンダリングするための点を第1のFPSレート(例えば、10FPS)で選択する。本発明の実施形態は、GPUがオクルージョンカリングを使用し、VRビューアの現在の視野(FOV)に基づいて表示するために点群データベースから点を取得するCPUベースのレンダリングエンジンを利用する。現在のFOVについてCPUオクルージョン・カリング・ベースのレンダリング手法を使用して取得された点のサブセットは、それらの点を使用して第2のFPSレートでVRビューア上に画像レンダリングするGPUに転送またはストリーミングされる。
本明細書で使用される場合、「オクルージョンカリング」という用語は、VRビューアの現在位置から見たときに他の物体によって隠されないために現在のFOVにおいて見える点のみを選択するプロセスを指す。例えば、2つの隣接する点が壁の両側にある場合には、VRビューアに最も近い方の点がVRビューアの視点から見えるはずなので、その点が選択される。一実施形態では、CPUは、オクルージョンカリングを使用してVRビューア内の画素ごとに点群内の多くとも1点を選択し、選択される点はVRビューアの現在位置に最も近い点である。これは、FOV内とVRビューアの現在位置から選択された距離内との点群内のすべての点が選択される現行のオーバードロー法と対比される。膨大な数の点を有する点群においては、現行のオーバードロー法では、多数の無関係な点が選択される結果になることを理解されたい。このため現行の方法では、VRビューアの所望のフレームレート(例えば、90フレーム/秒)を維持するために解像度を下げる(例えば、点密度を低減させる)必要がある。
一実施形態では、GPU上の点がCPUレンダラによって更新されない間のVRビューア位置の変化によるレンダリングアーチファクトの発生を回避するために、VRビューアのFOVの外部の選択された点がCPUによって取得され、GPUが使用するためにバッファに格納される。
一実施形態では、CPUレンダリングの性能をさらに高めるために、中心窩レンダリングを使用して、FOVの中央では高解像度の点データが、FOVの縁部および外側では低解像度の点データが提供される。
次に図1を参照すると、本発明の1つまたは複数の実施形態によるVRシステム100の概略図が一般的に示されている。図1に示すVRシステム100は、3次元(3D)スキャナ装置112の周囲の体積内の物体を測定するための3Dスキャナ装置112を含む。スキャナ装置112は、複数の点からなる生のスキャンデータすなわち点群104を生成する。点群104は、データベースまたは任意の既知のデータ構造のデータ記憶装置に格納することができる。一実施形態では、3Dスキャナ装置112は、これに限定されないが、図3〜図5を参照して後述するレーザスキャナ32などの計測装置である。3Dスキャナ装置112は、スキャン装置に限定されず、例えば、これに限定されないが、写真測量装置、三角測量スキャナ、関節腕座標測定機、レーザトラッカなどの3D点群を生成する任意の公知の装置によって実施することができる。
図1には、VRビューア110上に表示するために点群104内の点を取得するように動作するスキャン処理ソフトウェアを実行するためのCPU102も示されている。本明細書に記載される一実施形態では、CPU102によって実行されるスキャン処理ソフトウェアは、米国フロリダ州レイクメリーのFARO Technologies,Inc.が製造するSCENE(商標)である。これに限定されないが、Technodigitが製造する3DReshaper(登録商標)、Capturing Realityが製造するRealityCapture、Bentley Systems,Inc.が製造するBentley(登録商標)Descartes(商標)などの、点群から画像をレンダリングする他のCPUスキャン処理ソフトウェアも利用することができる。加えて、これに限定されないが、Valve Corporationが製造するOpenVRなどのプログラミングAPIを利用することもできる。
図1に示すVRシステム100はまた、VRビューア110に画像をレンダリングするGPUソフトウェアを実行するためのGPU108も含む。GPU108は、VRビューア110の現在位置に対応する点群のサブセット106に位置する点を使用して画像をレンダリングする。GPUソフトウェアは、これに限定されないが、Silicon Graphics International Corporationが製造するOpenGL(登録商標)などの、点群データから画像をレンダリングするためにGPU上で実行可能な任意のソフトウェアによって実装することができる。一実施形態では、GPU108は、三角形データをレンダリングする能力および/または点群のサブセット106に対する後処理計算を行う能力も含む。
図1に示すVRビューア110は、これに限定されないが、ヘッドセット、ゴーグル、スマートフォン、他の表示装置など、当技術分野で公知の任意のタイプのVRビューアを使用して実装することができる。利用できる市販のVRビューアの例には、これに限定されないが、HTC Vive(商標)やOculus Rift(登録商標)などのVRヘッドセットが含まれる。本明細書で使用される場合、「VRビューアの位置」という用語は、クラウドデータによって表されたシーン内の位置(例えば、3D点)、およびその位置にあるVRビューアのユーザが面している空間内の方向、すなわち向きを指す。これは、本明細書において、VRビューアが特定の位置にあるときにVRビューアを介してVRビューアのユーザが見ることのできるシーンの位置を指すのに使用される「視野」または「FOV」という用語と対比される。VRビューアの位置は、これに限定されないが、実装される特定のVRビューアに応じて、コントローラ、ハンドトラッカ、VRビューア移動検出器、音声コマンド、視線追跡など、様々なツールを使用して変更することができる。
図1に示す要素は、図1に示すような別々の物理ユニットとして実装することもでき、またはそれらの要素を組み合わせて1つもしくは複数の統合ユニットにすることもできる。例えば、CPU102およびGPU108は、同じマルチコア・コンピュータ・システムの部分であってもよい。別の例として、GPU108は、VRビューア110上に位置していてもよい。
次に図2を参照すると、本発明の1つまたは複数の実施形態による、図1に示すVRシステム100を動作させる方法を示す流れ図200が一般的に示されている。ブロック202で、3Dスキャナ装置112は、3Dスキャナ装置112の周囲の体積内の物体を測定し、3D座標、すなわち点を記録することによって点群104を作成する。点群104を構成する点は、3Dスキャナの周囲の体積内の物体を記述する。ブロック204で、点群104はデータ記憶装置に格納される。ブロック206で、VRビューア110の現在位置が受け取られ、ブロック208で、CPU102上で実行されているスキャン処理ソフトウェアが、VRビューア110の現在位置に対応するVRビューア110のFOVに少なくとも一部は基づいて点群のサブセット106内の点を選択する。一実施形態では、CPUは、オクルージョンカリングを使用して、VRビューア110内の画素ごとに多くとも1点を選択する。ブロック210で、GPU108は、点群のサブセット106内の選択された点を使用して、VRビューア110上に表示すべき画像をレンダリングする。ブロック212で、VRビューア110の更新された現在位置が受け取られ、ブロック208で処理が続行される。
一実施形態では、VRビューア110の現在位置の変化が(例えば、CPU102によって)監視され、VRビューア110の現在位置の変化を検出したことに応答してブロック208〜ブロック210の処理が行われる。一実施形態では、VRビューア110の現在位置は、監視に加えて、または監視の代わりに、周期的または非周期的に決定される。ブロック208〜ブロック212は、VRシステム100がもはや使用されなくなる(例えば、VRビューア110の電源が切られる、ユーザが、VR閲覧が終了したことを指示する、GPU108の電源が切られるなど)まで繰り返される。
次に図3〜図5を参照すると、レーザスキャナ32を取り囲む環境を光学的にスキャンし測定するためのレーザスキャナ32が示されている。レーザスキャナ32は、測定ヘッド40とベース42とを有する。測定ヘッド40は、レーザスキャナ32が垂直軸44を中心に回転されうるようにベース42に取り付けられている。一実施形態では、測定ヘッド40は、垂直軸44および水平軸48を中心とした回転の中心であるジンバル点46を含む。測定ヘッド40は回転ミラー50を有し、回転ミラー50は水平軸48を中心に回転されうる。垂直軸を中心とする回転は、ベース42の中心を中心としたものであってよい。垂直軸および水平軸という用語は、通常の直立姿勢のスキャナを指す。言い換えれば、軸44は床または地面にほぼ垂直に延在し、軸48は床または地面とほぼ平行である。3D座標測定装置を、その側面または上面を下にして動作させることも可能であり、混乱を避けるために、方位軸および天頂軸という用語でそれぞれ垂直軸および水平軸を置き換えてもよいことを理解されたい。垂直軸の代替の名称としてパン軸(pan axis)または立ち軸(standing axis)という用語が使用されてもよい。
測定ヘッド40には、例えば放射光ビーム54を放射する発光体52などの電磁放射エミッタがさらに設けられている。一実施形態では、放射光ビーム54は、レーザビームなどのコヒーレント光ビームである。レーザビームは、約300〜1600ナノメートル、例えば790ナノメートル、905ナノメートル、1550ナノメートル、または400ナノメートル未満の波長範囲を有しうる。より大きい波長またはより小さい波長を有する他の電磁放射ビームも使用されうることを理解されたい。放射光ビーム54は、例えば、正弦波波形や矩形波形で振幅変調または強度変調されてもよい。放射光ビーム54は、発光体52によって回転ミラー50上に放射され、そこで環境に偏向される。反射光ビーム56は、物体58によって環境から反射される。反射光または散乱光は、回転ミラー50によって遮られ、受光器60へ導かれる。放射光ビーム54および反射光ビーム56の方向は、それぞれ、軸44、軸48を中心とする回転ミラー50および測定ヘッド40の角位置からそれぞれ生じる。これらの角位置は、対応する回転駆動装置またはモータに依存する。
発光体52および受光器60には3Dスキャナプロセッサ、またはコントローラ62が結合されている。コントローラ62は、多数の測定点Xについて、レーザスキャナ32と物体58上の点Xとの間の対応する数の距離dを決定する。特定の点Xまでの距離は、電磁放射が装置から物点Xまでその中を通って伝播する空気中の光の速度に少なくとも一部は基づいて(例えば、コントローラ62によって実装された距離計によって)決定される。一実施形態では、測定距離dを得るために、レーザスキャナ32によって放射される光における変調の位相偏移および点Xが決定され、評価される。
空気中の光の速度は、気温、気圧、相対湿度、二酸化炭素濃度などの空気の特性に依存する。そのような空気特性は、空気の屈折率nに影響を及ぼす。空気中の光の速度は、真空中の光の速度cを屈折率で割ったものに等しい。言い換えると、cair=c/nである。本明細書で論じられるタイプのレーザスキャナは、空気中の光の飛行時間(TOF)(光が装置から物体まで進み装置に戻る往復時間)に基づくものである。TOFスキャナの例には、放射パルスと戻りパルスとの間の時間間隔を使用して往復時間を測定するスキャナ(パルスTOFスキャナ)、光を正弦曲線的に変調し、戻り光の位相偏移を測定するスキャナ(位相ベースのスキャナ)、ならびに他の多くのタイプが含まれる。光のTOFに基づいて距離を測定する方法は、空気中の光の速度に依存し、したがって、三角測量に基づいて距離を測定する方法と容易に区別される。三角測量に基づく方法は、光源からの光を特定の方向に沿って投射し、次いで特定の方向に沿ってカメラ画素上で光を遮ることを伴う。三角測量の方法は、カメラとプロジェクタとの間の距離を知り、投射角度を受光角度と一致させることによって、物体までの距離が、三角形の1つの既知の長さと2つの既知の角度とに基づいて決定されることを可能にする。したがって、三角測量の方法は、空気中の光の速度に直接依存しない。
1つの動作モードでは、レーザスキャナ20の周囲の体積のスキャンは、軸23を中心に測定ヘッド22を比較的ゆっくり回転させながら軸25を中心に回転ミラー26を比較的速く回転させて、アセンブリを螺旋状に動かすことによって行われる。1つの例示的な実施形態では、回転ミラーは、5820回転/分の最大速度で回転する。そのようなスキャンでは、ジンバル点27は、局所静止参照系の原点を規定する。ベース24は、この局所静止参照系にある。ジンバル点46から物点Xまでの距離dを測定することに加えて、レーザスキャナ32は、受け取った光パワー(「明るさ」という用語に相当する)に関連したグレースケール情報も収集しうる。グレースケール値は、例えば、物点Xに起因する測定期間にわたって受光器60において帯域フィルタリングされ、増幅された信号を統合することによって、少なくとも一部は決定されうる。
測定ヘッド40は、レーザスキャナ32に組み込まれた表示装置64を含みうる。表示装置64は、オペレータがパラメータを設定したり、レーザスキャナ32の動作を開始したりすることを可能にする、図3に示すようなグラフィカル・タッチ・スクリーン66を含みうる。例えば、スクリーン66は、オペレータが装置に測定命令を提供することを可能にするユーザインターフェースを有していてもよく、スクリーンは測定結果も表示しうる。
レーザスキャナ32は、測定ヘッド40用のフレームを提供する運搬構造68と、レーザスキャナ32の構成要素を取り付けるためのプラットフォームとを含む。一実施形態では、運搬構造68は、アルミニウムなどの金属でできている。運搬構造68は、対向する端部に一対の壁72、74を有する横断部材70を含む。壁72、74は、互いに平行であり、ベース42とは反対の方向に延在する。シェル76、78は、壁72、74に連結されており、レーザスキャナ32の構成要素を覆っている。例示的な実施形態では、シェル76、78は、例えば、ポリカーボネートやポリエチレンなどのプラスチック材料でできている。シェル76、78は、壁72、74と協働して、レーザスキャナ32用のハウジングを形成している。
壁72、74に対向するシェル76、78の端部には、それぞれのシェル76、78を部分的に覆うように一対のヨーク80、82が配置されている。例示的な実施形態では、ヨーク80、82は、搬送時および動作時にシェル76、78を保護するのを助ける、例えばアルミニウムなどの適度に耐久性のある材料でできている。ヨーク80、82は各々、例えば留め具などでベース42に隣接する横断部材70に連結された第1のアーム部分84を含む。各ヨーク80、82のアーム部分84は、横断部材70からそれぞれのシェル76、78の外側の角まで斜めに延在する。ヨーク80、82は、シェルの外側の角から、シェルの側縁に沿って、シェルの反対側の外側の角まで延在する。各ヨーク80、82は、壁72、74まで斜めに延在する第2のアーム部分をさらに含む。ヨーク80、82は、横断部材70、壁72、74、およびシェル76、78に複数の位置で連結されうることを理解されたい。
一対のヨーク80、82は協働して、2つのシェル76、78がその内部に配置された凸空間に外接して取り囲む。例示的な実施形態では、ヨーク80、82は協働してシェル76、78のすべての外縁部を覆い、上アーム部分および下アーム部分はシェル76、78の上縁部および下縁部の少なくとも一部分の上に突出している。これは、搬送時および動作時にシェル76、78および測定ヘッド40を損傷から保護する際に有利である。他の実施形態では、ヨーク80、82は、例えばレーザスキャナ32の運搬を容易にするハンドルや付属品の取り付け点などの追加の特徴を含みうる。
横断部材70の上には、プリズム86が設けられている。プリズム86は壁72、74と平行に延在する。例示的な実施形態では、プリズム86は、運搬構造68の一部として一体的に形成されている。他の実施形態では、プリズム86は、横断部材70に連結された別個の構成要素である。ミラー50が回転すると、各回転の間、ミラー50は、放射光ビーム54を横断部材70とプリズム86とに導く。例えば受光器60内の電子構成要素の非線形性により、測定距離dは、例えば、スキャナに入射する光パワーや受光器56内の光検出器に入射する光パワーで測定されうる、信号強度に依存しうる。一実施形態では、距離補正が、測定点までの距離と、測定点から返され、受光器60内の光検出器に送られた光パワー(一般には「明るさ」と呼ばれることもある光パワーの拡大縮小されていない数量)との関数(おそらくは非線形関数)としてスキャナに格納されている。プリズム86は、ジンバル点46から既知の距離にあるので、プリズム86によって反射された光の測定された光パワーレベルは、他の測定点の距離測定値を補正するために使用されてよく、それによって温度などの環境変数の影響を補正する補正が可能になる。例示的な実施形態では、得られる距離の補正は、コントローラ62によって行われる。
一実施形態では、コントローラ62は、スキャナ32全体に、またはスキャナ32の外部に分散された1つまたは複数のプロセッサを表す。1つまたは複数のプロセッサは、ネットワークを介して通信するために接続された1つまたは複数のコンピューティングデバイスを含みうる。コンピューティングデバイスは、スキャナ32からのデータを協働して処理するように分散構成で配置されうる。プロセッサは、マイクロプロセッサ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、デジタル信号プロセッサ(DSP)、および一般に計算処理機能を果たすことができる任意のデバイスであってよい。1つまたは複数のプロセッサは、情報を格納するためのメモリ(揮発性または不揮発性)にアクセスすることができる。加えて、コントローラ62のプロセッサのうちの1つまたは複数が、リモートコンピューティング能力のサポートを提供してもよい。プロセッサ間の通信は、有線、無線、または有線と無線のデータ接続もしくは媒体の組み合わせによるものであってよい。
一実施形態では、ベース42は、参照により本明細書に組み込まれる、同一所有者の米国特許第8705012号('012)に記載されているようなスイベルアセンブリ(図示せず)に連結されている。スイベルアセンブリは、運搬構造68内に収容されており、軸44を中心に測定ヘッド40を回転させるように構成されたモータを含む。
補助画像取得装置88は、スキャンされた体積またはスキャンされた物体と関連付けられたパラメータを取り込み、測定し、画像取得領域にわたる測定量を表す信号を提供する装置であってもよい。補助画像取得装置88は、カラーカメラ、高温計、熱赤外線画像装置、電離放射線検出器、またはミリ波検出器であってもよいが、これに限定されない。
一実施形態では、カメラ(第1の画像取得装置)90は、スキャナ32の内部に位置し、3Dスキャナ装置と同じ光軸を有しうる。この実施形態では、第1の画像取得装置90は、測定ヘッド40に組み込まれており、放射光ビーム54および反射光ビーム56と同じ光路に沿って画像を取得するように配置されている。この実施形態では、発光体52からの光は固定ミラー92から反射し、発光体52からの光96を回転ミラー50上に反射するダイクロイック・ビーム・スプリッタ94まで進む。ダイクロイック・ビーム・スプリッタ94は、光96の波長とは異なる波長で光を通過させる。例えば、発光体52は、近赤外レーザ光(波長780nmまたは1150nmの光など)であってもよく、ダイクロイック・ビーム・スプリッタ94は、可視光(400〜700nmの波長など)を透過させながら赤外レーザ光を反射するように構成されている。他の実施形態では、光がビームスプリッタ94を通過するか、それとも反射されるかの判断は、光の偏光に依存する。デジタルカメラ90は、スキャンされた領域の2D写真画像を取得して、スキャン画像に付加する色データ(テクスチャ)を取り込む。3Dスキャン装置の光軸と一致した光軸を有する内蔵式カラーカメラの場合、カメラビューの方向は、スキャナのステアリング機構を調整するだけで、例えば、軸44を中心に方位角を調整し、軸48を中心にミラー50を向けることによって容易に得られる。
次に図6を参照すると、本発明の1つまたは複数の実施形態によるVRビューア(例えば、図1のVRビューア110)にデータを提供する方法を示す流れ図600が一般的に示されている。一実施形態では、図6のブロック610、ブロック612、およびブロック614は、GPU(例えば、図1のGPU108)上で実行されているGPUレンダースレッドによって実行され、図6のブロック602、ブロック604、ブロック606、およびブロック608は、CPU(例えば、図1のCPU102)上で実行されているCPUレンダースレッドによって実行される。本明細書で使用される場合、「レンダースレッド」という用語は、点群内の点を使用してVRビューア上に画像を生成するために実行されているスキャン処理ソフトウェアプログラムを指す。一実施形態では、CPUレンダースレッドとGPUレンダースレッドとはどちらも、点群(例えば、図1の点群104)内の点のサブセットを含む共有スレッドバッファ(例えば、図1の点群のサブセット106)にアクセスすることができる。一実施形態では、共有バッファは3つのバッファを含み、1つのバッファはGPUによって左目画像を提供するために読み取られ、もう1つのバッファはGPUによって右目画像を提供するために読み取られ、もう1つのバッファはCPUによって右目画像または左目画像のどちらかの点を書き込まれる。どの時点においても、バッファはGPUによって読み取られているか、それともCPUによって書き込まれているかのどちらかであり、両方ではない。一実施形態では、CPUレンダースレッドの機能を果たすために米国フロリダ州レイクメリーのFARO Technologies,Inc.のSCENEが利用され、GPUレンダースレッドの機能を果たすためにOpenGLが利用される。
次に図6を参照すると、ブロック602で、VRビューアの現在位置がCPUレンダースレッドによって取得される。一実施形態では、ブロック602で、CPUレンダースレッドは、VRビューアからの移動を示す信号を、点群内の位置および向きを含むビューアの現在位置に変換する。ブロック604で、VRビューアの現在位置は、VRビューアのカメラ位置、すなわちFOVに変換される。CPUスレッドが点群からの点の特定のサブセットの問い合わせを開始する場合、カメラ位置設定の更新レートは約90fpsであり、CPUスレッドはより低いレートで点のサブセットを問い合わせするため、問い合わせには最新のカメラ位置が使用される。ブロック606で、CPUレンダースレッドは、オクルージョンカリングを使用して、更新されたカメラ位置に基づいて点群104などの点群から点を選択し、ブロック608でそれらの点を共有スレッドバッファ内のバッファに格納する。一実施形態では、CPUは、左目画像用のバッファへの点の書き込みと右目画像用のバッファへの点の書き込みとを交互に行う。一実施形態では、CPUは、ルックアップアルゴリズムまたは探索アルゴリズムを使用して、八分木ベースのデータ構造内の正しい点のサブセットを選択する。
ブロック610で、GPUレンダースレッドは共有スレッドバッファ内の格納された点にアクセスし、それらをローカル変数にコピーする。一実施形態では、これは、GPUによって読み取られているバッファのうちの1つを、CPUが書き込みを終了したバッファで置き換えることを含む。例えば、左目画像を含むGPUによって読み取られているバッファは、CPUによって書き込まれたバッファが左目画像を含む場合にそのバッファで置き換えられ、あるいは、右目画像を含むGPUによって読み取られているバッファは、CPUによって書き込まれたバッファが右目画像を含む場合にそのバッファで置き換えられうる。置き換えられたバッファはその場合、CPUによって次の点群を書き込まれるバッファになる。ブロック612で、共有スレッドバッファからのコピーされた点がアップロードされ、ブロック614で、VRビューア上で閲覧するためにGPU上でレンダリングされる。図6に示すように、VRビューアの現在位置を決定し、現在位置に対応するデータ点のサブセットをVRビューアにレンダリングするためにGPUに提供するプロセスは、例えばVRビューアの電源が切られるまで繰り返される。
一実施形態では、CPUレンダースレッドは、両目のカメラ位置を含む共有スレッドバッファのための点を選択する。一実施形態では、CPUレンダースレッドはループとして点を問い合わせし、ループの終わりに、共有スレッドバッファが更新される。あるループ反復では、左目用の点が共有スレッドバッファに追加され、次のループ反復では、右目用の点が共有スレッドバッファに追加される。この方法で点を追加すると、反復ごとに両目の点を提供する場合と比較して待ち時間が半減する。
一実施形態では、GPUレンダースレッドのローカル変数は、左目用のバッファ、右目用のバッファ、およびGPUにアップロードされていない点のリストを含む未使用のバッファの3つの点バッファを含む。一実施形態では、GPUレンダースレッドは共有スレッドバッファに問い合わせを行って新しい点が利用可能であるかどうかを判断し、新しい点が利用可能な場合、GPUレンダースレッドはそれらを未使用のバッファにコピーする。GPUレンダースレッドは、各目のバッファから画像をレンダリングするが、未使用のバッファの内容からは画像をレンダリングしない。3つの点バッファは、GPUにノンブロッキング・ポイント・ストリーミングを提供するために使用される。
次に図7を参照すると、本発明の1つまたは複数の実施形態による、GPUにノンブロッキング・ポイント・ストリーミングを提供するためにVRシステムにおいてGPUによって利用される点バッファの概略図700が一般的に示されている。一実施形態では、図7に示すバッファは、図1に示す点群のサブセット106に位置している。図7に示すような一実施形態では、3つのバッファがリングバッファ方式で循環され、未使用のバッファが完全にアップロードされるとすぐに、最も古い目用のバッファがGPU上で点をレンダリングするために未使用バッファで置き換えられる。図7に示すように、第1の時点702において、バッファ708は、左目画像をレンダリングするためにGPUによって読み取られた点を含み、バッファ710は、右目画像をレンダリングするためにGPUによって読み取られた点を含み、バッファ712は、GPUによって使用されていないが、CPUによって左目画像を表す点を書き込まれている。第2の時点704において、バッファ708は、GPUによって使用されていないが、CPUによって右目画像を表す点を書き込まれており、バッファ710は、右目画像をレンダリングするためにGPUによって読み取られた点を含み、バッファ712は、左目画像をレンダリングするためにGPUによって読み取られた点を含む。第3の時点706において、バッファ708は、右目画像をレンダリングするためにGPUによって読み取られた点を含み、バッファ710は、GPUによって使用されていないが、CPUによって右画像を表す点を書き込まれており、バッファ712は、左目画像をレンダリングするためにGPUによって読み取られた点を含む。
一実施形態では、FPSドロップを回避するために、点が完全にアップロードされるまで点のサブセットが各フレームでアップロードされる。
次に図8を参照すると、本発明の1つまたは複数の実施形態による拡大されたFOVの概略図800が一般的に示されている。CPUとGPUとのレンダリング速度の差を考慮するために、一実施形態では、VRビューアの現在のFOVよりもずっと幅広いかつ/またはずっと高さの高いFOVを有する画像に対応する点群からの点を取得する。このように、VRビューアのFOVが移動したときに、たとえCPUレンダースレッドが新しいカメラ画像のための点の選択を終了していなくても、更新されたFOVの画像をレンダリングするための点が利用可能である。一実施形態では、約1000点×1000点の典型的なレンダリング解像度がFOVによって利用される。これは、約3000点×3000点のレンダリング解像度が拡大されたFOVによって利用される実施形態と対比される。ブロック802に、VRビューアの現在のFOVを垂直方向と水平方向の両方に拡大した拡大FOV画像を示す。ブロック804に、VRビューアの現在のFOVを垂直方向に拡大した拡大FOV画像を示す。ブロック806に、VRビューアの現在のFOVを水平方向に拡大した拡大FOV画像を示す。
一実施形態では、VRビューアのFOVは、FOVの過去の移動に基づいて拡大される。例えば、FOVの最後の数回の移動が左方である場合、CPUはFOVをFOVの右側よりも左側でさらに拡大しうる。
一実施形態では、拡大されたFOVのサイズを、CPUとGPUとのレンダリング速度の差に基づいて調整することができる。
拡大されたFOVは、FOVごとにより多くの点を選択する必要があるため、CPUのレンダリング速度、すなわちFPSレートに悪影響を及ぼす可能性がある。一実施形態では、中心窩レンダリングを使用して、画像の中央では高解像度を提供し、画像の縁部では低解像度を提供することにより必要とされる点の数が低減される。FOVは、各々異なる点密度、すなわち解像度に対応する様々なゾーンに分割することができる。次に図9を参照すると、本発明の1つまたは複数の実施形態によるFOV内の1つまたは複数のゾーンの概略図900が一般的に示されている。図9には、FOV内の画像の解像度を変えるために実施できる様々な構成が示されている。ブロック902に、単一のゾーンを有するFOVを、ブロック904に、2つのゾーンを有するFOVを、ブロック906に、3つのゾーンを有するFOVを、ブロック908に、水平方向に変化するゾーンを有するFOVを、ブロック910に、垂直方向に変化するゾーンを有するFOVを、ブロック912に、グリッドに基づいて変化するゾーンを有するFOVを示す。中心窩レンダリングでは、各点が画素数単位のある特定の点サイズを有する。このサイズは、点が存在するゾーンについて、点単位またはゾーン単位で格納することができる。GPU上で点のサブセットの外側領域にある点は、ユーザがこれらの低解像度の点を見たときに、ユーザが常にフルポイントのデータセット内に点がある密な表面という印象を受けるようにするために、より大きな点サイズでレンダリングされる。特定のサブセット内の点の点サイズは、GPUスレッド内の異なるFOVの影響を受けない。
一実施形態では、解像度、構成、ゾーンの数および/またはゾーンのサイズを、拡大されたFOVのサイズおよび/またはCPUとGPUとのレンダリング速度の差に基づいて調整することができる。
一実施形態では、画像が解像度の2倍(例えば、1400×1400の代わりに2800×2800)でレンダリングされるスーパーサンプリングを利用して、微小移動によって引き起こされるVRビューア内の画像ノイズが低減される。他の実施形態では、4または8またはある他の倍数が利用される。その後、表示する前に画像を元の解像度に縮小することができる。縮小アルゴリズムは、実装形態ごとに実質的に異なっていてよく、平均化アルゴリズムを使用して実装することができる。
一実施形態では、指定された数(例えば、4)の画素の色が平均化される画像ぼかしを利用して、微小移動によって引き起こされる画像ノイズが低減される。
「約」という用語は、出願時に利用可能な装置に基づく特定の量の測定と関連付けられた誤差の程度を含むことが意図されている。例えば、「約」は、所与の値の±8%または5%、または2%の範囲を含むことができる。
次に図10を見ると、高い点群解像度を維持しながら点群ボリュームを閲覧するためのVRシステムの1つまたは複数の実施形態が実装されうるシステム1000の概略図が示されている。一実施形態では、システム1000の全部または一部が、本明細書に記載される3Dスキャナ装置、CPU、およびGPUのうちの1つまたは複数に組み込まれうる。1つまたは複数の例示的な実施形態では、ハードウェアアーキテクチャに関して、図10に示すように、コンピュータ1001は、処理装置1005と、メモリコントローラ1015および入出力コントローラ1035に結合されたメモリ1010とを含む。入出力コントローラ1035は、例えば、当技術分野で公知であるように、1つもしくは複数のバスまたは他の有線接続もしくは無線接続とすることができるが、これに限定されない。入出力コントローラ1035は、簡潔にするために省かれているが、通信を可能にする、コントローラ、バッファ(キャッシュ)、ドライバ、リピータ、受信機などの追加要素を有しうる。さらに、コンピュータ1001は、前述の構成要素間の適切な通信を可能にするアドレス接続、制御接続、および/またはデータ接続を含みうる。
1つまたは複数の例示的な実施形態では、キーボード1050およびマウス1055または同様のデバイスを入出力コントローラ1035に結合することができる。あるいは、入力は、タッチ感知式インターフェースまたは動き感知式インターフェース(図示せず)を介して受け取られてもよい。コンピュータ1001は、ディスプレイ1030に結合されたディスプレイコントローラ1025をさらに含むことができる。システム1000にはVRビューア(例えば、図1のVRビューア110)が結合されうることを理解されたい。
処理装置1005は、ソフトウェア、特に、二次記憶1020またはメモリ1010に格納されたソフトウェアを実行するためのハードウェア装置である。処理装置1005は、任意のカスタムメイドもしくは市販のコンピュータプロセッサ、中央処理装置(CPU)、コンピュータ1001と関連付けられた複数のプロセッサのうちの補助プロセッサ、(マイクロチップもしくはチップセットの形態の)半導体ベースのマイクロプロセッサ、マクロプロセッサ、または一般的に命令を実行するための任意のデバイスとすることができる。
メモリ1010は、揮発性メモリ素子(例えば、ランダム・アクセス・メモリ(DRAM、SRAM、SDRAMなどのRAM))および不揮発性メモリ素子(例えば、ROM、消去可能プログラマブル読取り専用メモリ(EPROM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリ、プログラマブル読取り専用メモリ(PROM)、テープ、コンパクトディスク読取り専用メモリ(CD−ROM)、フラッシュドライブ、ディスク、ハード・ディスク・ドライブ、ディスケット、カートリッジ、カセットなど)のうちの任意の1つまたは組み合わせを含むことができる。さらに、メモリ1010は、電子、磁気、光学、および/または他のタイプの記憶媒体を組み込みうる。したがって、メモリ1010は、処理装置1005によって実行可能な命令がコンピュータプログラム製品として具体化されうる有形のコンピュータ可読記憶媒体1040の一例である。メモリ1010は、様々な構成要素が互いに離れて配置されているが、処理装置1005によってアクセスされうる分散型アーキテクチャを有することができる。
メモリ1010内の命令は、論理関数を実装するための実行可能命令の順序付きリストを各々が含む、1つまたは複数の別個のプログラムを含みうる。図10の例では、メモリ1010内の命令は、適切なオペレーティングシステム(OS)1011とプログラム命令1016とを含む。オペレーティングシステム1011は、本質的に、他のコンピュータプログラムの実行を制御し、スケジューリング、入出力制御、ファイルおよびデータ管理、メモリ管理、ならびに通信制御および関連サービスを提供する。コンピュータ1001が動作しているとき、処理装置1005は、メモリ1010内に格納された命令を実行し、メモリ1010との間でデータをやりとりし、命令に従ってコンピュータ1001の動作を全体的に制御するよう構成される。プログラム命令1016の例には、図1〜図9を参照して本明細書で説明されている処理を実施する命令が含まれうる。
図10のコンピュータ1001は、1つまたは複数のネットワークリンクを介して1つまたは複数の他のコンピュータシステムとの通信チャネルを確立することができるネットワークインターフェース1060も含む。ネットワークインターフェース1060は、当技術分野で公知の有線通信プロトコルおよび/または無線通信プロトコルをサポートすることができる。例えば、ユーザシステムで実施された場合、ネットワークインターフェース1060は、アプリケーションサーバとの通信チャネルを確立することができる。
本発明の態様は、システム、方法、またはコンピュータプログラム製品として具体化され、ハードウェア実施形態、ソフトウェア実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはそれらの組み合わせの形態を取りうることが理解されよう。さらに、本発明の態様は、コンピュータ可読プログラムコードが具体化されている1つまたは複数のコンピュータ可読媒体において具体化されたコンピュータプログラム製品の形態を取りうる。
1つまたは複数のコンピュータ可読媒体が利用されうる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってもよい。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外線、または半導体のシステム、装置、またはデバイス、またはこれらの任意の適切な組み合わせでありうるが、これに限定されない。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)には、1つまたは複数の配線を有する電気的接続、携帯型コンピュータディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、携帯型コンパクトディスク読取り専用メモリ(CD−ROM)、光記憶装置、磁気記憶装置、または上記の任意の適切な組み合わせ以下が含まれよう。一態様では、コンピュータ可読記憶媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれと関連して使用するためのプログラムを含むか格納している有形の媒体でありうる。
コンピュータ可読信号媒体は、コンピュータ可読プログラムコードが、例えば、ベースバンドにおいて、または搬送波の一部として具体化された伝播データ信号を含みうる。そのような伝播信号は、電磁気、光学、またはそれらの任意の適切な組み合わせを含むが、これに限定されない様々な形態のいずれかを取りうる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、またはデバイスによって、またはこれと関連して使用するためのプログラムを伝達、伝播、または搬送することができる任意のコンピュータ可読媒体であってよい。
コンピュータ可読媒体は、その上に具体化されたプログラムコードを含んでいてよく、プログラムコードは、無線、有線、光ファイバケーブル、RFなど、またはそれらの任意の適切な組み合わせを含むがこれに限定されない、任意の適切な媒体を使用して伝送されうる。加えて、本発明の態様を実施するための動作を実行するためのコンピュータ・プログラム・コードは、Java(登録商標)、Smalltalk、C++などのオブジェクト指向プログラミング言語と「C」プログラミング言語や類似したプログラミング言語などの従来の手続き型プログラミング言語とを含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されうる。プログラムコードは、全部がユーザのコンピュータ上で実行されても、一部がユーザのコンピュータ上で実行されても、スタンドアロンのソフトウェアパッケージとして実行されても、一部がユーザのコンピュータ上で一部がリモートコンピュータ上で実行されても、全部がリモートのコンピュータまたはサーバ上で実行されてもよい。
本発明の態様は、本明細書では、本発明の実施形態による方法、装置(システム)およびコンピュータプログラム製品の流れ図および/またはブロック図を参照して説明されていることが理解されよう。流れ図および/またはブロック図の各ブロックまたはステップ、ならびに流れ図および/またはブロック図のブロックまたはステップの組み合わせは、コンピュータプログラム命令によって実装されうることが理解されよう。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供されてマシンを生成することができ、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行される命令は、流れ図および/またはブロック図の1つまたは複数のブロックで指定された機能/動作を実施する手段を生じさせる。
これらのコンピュータプログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスに特定の方法で機能するよう指図できるコンピュータ可読媒体に格納することもでき、コンピュータ可読媒体に格納された命令は、流れ図および/またはブロック図の1つまたは複数のブロックで指定された機能/動作を実施する命令を含む製造品を生成する。コンピュータプログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイス上でコンピュータ実装プロセスを生成する一連の動作ステップを行わせることもでき、コンピュータまたは他のプログラマブル装置上で実行される命令は、流れ図および/またはブロック図の1つまたは複数のブロックで指定された機能/動作を実施するためのプロセスを提供する。
加えて、本明細書に記載されるいくつかの実施形態は、「表示」と関連付けられている。本明細書で使用される場合、「表示」という用語は、主題、項目、エンティティ、ならびに/または他の対象および/もしくはアイデアを示し、またはそれらと関連付けられた任意のしるしおよび/または他の情報を指すのに使用されうる。本明細書で使用される場合、「を示す情報」および「しるし」という表現は、関連したエンティティ、主題または対象を表し、記述し、かつ/またはこれとそれ以外に関連付けられた任意の情報を指すのに使用されうる。情報のしるしには、例えば、コード、参照、リンク、信号、識別子、および/またはそれらの任意の組み合わせ、および/または情報と関連付けられた他の情報表現が含まれうる。いくつかの実施形態では、情報の(もしくは情報を示す)しるしは、情報自体および/または情報の任意の部分もしくは構成要素であってもよく、これを含んでいてもよい。いくつかの実施形態では、表示は、要求、勧誘、ブロードキャスト、ならびに/または任意の他の形態の情報収集および/もしくは流布を含みうる。
本特許出願には多くの実施形態が記載されており、例示目的でのみ提示されている。記載された実施形態は、いかなる意味でも限定するものではなく、限定を意図されたものでもない。本開示の(1つまたは複数の)発明は、本開示から容易に明らかなように、多くの実施形態に広く適用可能である。当業者であれば、本開示の(1つまたは複数の)発明は、構造的改変、論理的改変、ソフトウェア改変、電気的改変などの様々な改変および変更を伴って実施されうることを認めるであろう。本開示の(1つまたは複数の)発明の特定の特徴が、1つまたは複数の特定の実施形態および/または図面を参照して説明されている場合があるが、そのような特徴は、特に明記されない限り、それらの特徴の説明で参照されているその1つまたは複数の特定の実施形態および/または図面における使用に限定されないことを理解されたい。
相互に通信状態にあるデバイスは、特に明記されない限り、相互に絶え間なく通信している必要はない。むしろ、そのようなデバイスは、必要または所望に応じて相手に送信するだけでよく、実際には、ほとんどの時間、データの交換を実際に控えることができる。例えば、インターネットを介して別のマシンと通信しているマシンは、一度に何週間も他方のマシンにデータを送信しないことがありうる。加えて、相互に通信状態にあるデバイスは、1つまたは複数の仲介手段を介して直接的または間接的に通信してもよい。
複数の構成要素または特徴を有する実施形態の説明は、そのような構成要素および/または特徴のすべてまたはいずれかが必要とされることを意味するものではない。むしろこれに反して、本発明の多種多様な可能な実施形態を例示するために、様々な任意選択の構成要素が記載されている。特に明記されない限り、いずれの構成要素および/または特徴も本質的または必須ではない。
さらに、プロセスステップ、アルゴリズムなどが順番に記述されている場合があるが、そのようなプロセスは、異なる順序で働くように構成されてもよい。言い換えれば、明記されうるステップの任意の連続または順序は必ずしも、それらのステップがその順序で行われるべきであるという要件を示すものではない。本明細書に記載されるプロセスのステップは、実用的な任意の順序で実行されうる。さらに、いくつかのステップは、(例えば、一方のステップが他方のステップの後に記載されているために)非同時的に行われるように記載され、または示唆されているが、同時に行われてもよい。さらに、図面における図示によるプロセスの例示は、例示のプロセスがそのプロセスへの他の変形および改変を排除することを意味するものではなく、例示のプロセスまたはそのステップのいずれかが本発明に必須であることを意味するものではなく、例示のプロセスが好ましいことを意味するものではない。
何かを「決定すること」は、様々な方法で行うことができ、したがって「決定する」という用語(および類似した用語)は、計算すること、計算処理すること、導出すること、(例えば、テーブル、データベース、またはデータ構造において)ルックアップすること、確認することなどを含む。
本明細書に記載される様々な方法およびアルゴリズムは、例えば、適切に、かつ/または特別にプログラムされた汎用コンピュータおよび/またはコンピューティングデバイスによって実装されうることが容易に明らかになるであろう。典型的には、プロセッサ(例えば、1つまたは複数のマイクロプロセッサ)が、メモリまたは同様のデバイスから命令を受け取り、それらの命令を実行して、それらの命令によって定義される1つまたは複数のプロセスを実行する。さらに、そのような方法およびアルゴリズムを実装するプログラムは、様々な媒体(例えば、コンピュータ可読媒体)を使用していくつかの方法で格納され、伝送されうる。いくつかの実施形態では、様々な実施形態のプロセスの実装のためのソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせてハードワイヤード回路またはカスタムハードウェアが使用されうる。よって、実施形態は、ハードウェアとソフトウェアのいかなる特定の組み合わせにも限定されない。
「プロセッサ」とは、一般に、本明細書にさらに記載されているように、任意の1つまたは複数のマイクロプロセッサ、CPUデバイス、GPUデバイス、コンピューティングデバイス、マイクロコントローラ、デジタル信号プロセッサ、または類似したデバイスを意味する。CPUは典型的には様々なタスクを行い、GPUは画像を表示するように最適化される。
データベースが記述されている場合、(i)記載されているデータベース構造に対する代替のデータベース構造が容易に用いられ、(ii)データベース以外の他のメモリ構造が容易に用いられうることが、当業者には理解されよう。本明細書に提示された任意のサンプルデータベースの図または説明は、格納された情報の表現の例示的な構成である。図面または他の箇所に示されているテーブルなどによって提案されたもの以外に、任意の数の他の構成が用いられうる。同様に、データベースの任意の図示のエントリも例示的な情報を表しているにすぎない。当業者であれば、エントリの数および内容は、本明細書に記載されたものと異なりうることを理解するであろう。さらに、テーブルとしてのデータベースの描写に関わらず、本明細書に記載されているデータ型を格納し、操作するために、(関係データベース、オブジェクトベースモデルおよび/または分散データベースを含む)他の形式を使用することもできよう。同様に、本明細書に記載されているような様々なプロセスを実装するためにデータベースのオブジェクトメソッドまたは挙動を使用することもできる。加えて、データベースは、公知の方法で、ローカルで、またはそのようなデータベース内のデータにアクセスするデバイスからリモートで格納されてもよい。
本明細書で使用される用語は、特定の実施形態を説明するためのものにすぎず、本発明を限定するためのものではない。本明細書で使用される場合、単数形「a」、「an」および「the」は、文脈上そうでないことが明確に示されない限り、複数形も含むことが意図されている。「含む(comprises)」および/または「含む(comprising)」という用語は、本明細書で使用される場合、記載された特徴、整数、ステップ、動作、要素および/または構成要素の存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を除外するものではない。
Claims (20)
- 仮想現実(VR)システムであって、
複数の点を含む3次元(3D)点群と、
現在位置を有するVRビューアと、
前記VRビューアに結合されたグラフィックス処理装置(GPU)と、
前記VRビューアに結合された中央処理装置(CPU)とを含み、
前記CPUは、前記CPU上で実行されると第1の方法を行う第1の実行可能命令に応答するものであり、前記第1の方法は、前記VRビューアの前記現在位置に少なくとも一部は基づいて視野(FOV)を決定するステップと、オクルージョンカリングを使用して前記FOVに少なくとも一部は基づいて前記複数の点のサブセットを選択するステップと、前記複数の点の前記サブセットを前記GPUに提供するステップとを含み、
前記GPUは、前記GPU上で実行されると第2の方法を行う第2の実行可能コンピュータ命令に応答するものであり、前記第2の方法は、前記CPUから前記複数の点の前記サブセットを受け取るステップと、前記受け取った複数の点の前記サブセットに少なくとも一部は基づいて前記VRビューア上に表示するための画像をレンダリングするステップとを含み、
前記複数の点のサブセットを選択する前記ステップが第1のフレーム/秒(FPS)レートで行われ、前記レンダリングするステップが前記第1のFPSレートよりも速い第2のFPSレートで行われる、
システム。 - 前記決定するステップ、前記選択するステップ、前記提供するステップ、前記受け取るステップ、および前記レンダリングするステップが周期的に行われる、請求項1に記載のシステム。
- 前記第1の方法が、前記VRビューアの前記現在位置を監視するステップをさらに含み、前記決定するステップ、前記選択するステップ、前記提供するステップ、前記受け取るステップ、および前記レンダリングするステップが、前記監視するステップに基づいて、前記VRビューアの前記現在位置が変化したと判断したことに少なくとも一部は基づいて行われる、請求項1に記載のシステム。
- 前記複数の点の前記サブセットを前記GPUに提供する前記ステップが、前記複数の点の前記サブセットを、前記GPUおよび前記CPUがアクセス可能な共有記憶位置に格納するステップを含み、前記複数の点の前記サブセットを受け取る前記ステップが、前記共有記憶位置にアクセスするステップを含む、請求項1に記載のシステム。
- 前記第1のFPSレートが約10FPSであり、前記第2のFPSレートが約90FPSである、請求項1に記載のシステム。
- 前記複数の点を取り込むためのレーザスキャナをさらに含む、請求項1に記載のシステム。
- 前記複数の点の前記サブセットが、前記FOV内の第1の位置に第1の密度で表示するための第1の点と前記FOV内の第2の位置に第2の密度で表示するための第2の点とを含む複数の異なる密度によって特徴づけられる、請求項1に記載のシステム。
- 前記複数の点の前記サブセットが、前記FOVの外部の点を含む、請求項1に記載のシステム。
- 前記VRビューアがヘッドセットである、請求項1に記載のシステム。
- 前記VRビューアがスマートフォンVRビューアである、請求項1に記載のシステム。
- 仮想現実(VR)システムを提供するステップであって、前記システムが、複数の点を含む3次元(3D)点群と、中央処理装置(CPU)と、現在位置を有するVRビューアと、グラフィックス処理装置(GPU)とを含み、前記VRビューアが前記CPUと前記GPUとに結合された、前記提供するステップと、
前記CPUで、前記VRビューアの前記現在位置に少なくとも一部は基づいて視野(FOV)を決定するステップと、
前記CPUで、オクルージョンカリングを使用し、前記FOVに少なくとも一部は基づいて、前記3D点群内の前記複数の点のサブセットを選択するステップと、
前記CPUが、前記複数の点の前記サブセットを前記GPUに提供するステップと、
前記GPUで、前記CPUから前記複数の点のサブセットを受け取るステップと、
前記GPUで、前記受け取った複数の点に少なくとも一部は基づいて、前記VRビューア上に表示するための画像をレンダリングするステップと
を含み、
前記選択するステップが第1のフレーム/秒(FPS)レートで行われ、前記レンダリングするステップが前記第1のFPSレートよりも速い第2のFPSレートで行われる、方法。 - 前記決定するステップ、前記選択するステップ、前記提供するステップ、前記受け取るステップ、および前記レンダリングするステップを繰り返すステップをさらに含む、請求項11に記載の方法。
- 前記CPUが、前記VRビューアの前記現在位置を監視するステップと、
前記監視するステップに基づいて、前記VRビューアの前記現在位置が変化したと判断したことに少なくとも一部は基づいて、前記決定するステップ、前記選択するステップ、前記提供するステップ、前記受け取るステップ、および前記レンダリングするステップを繰り返すステップと
をさらに含む、請求項11に記載の方法。 - 前記複数の点の前記サブセットを前記GPUに提供する前記ステップが、前記複数の点の前記サブセットを、前記GPUおよび前記CPUがアクセス可能な共有記憶位置に格納するステップを含み、前記複数の点のサブセットを受け取る前記ステップが、前記共有記憶位置にアクセスするステップを含む、請求項11に記載の方法。
- 前記第1のFPSレートが約10FPSであり、前記第2のFPSレートが約90FPSである、請求項11に記載の方法。
- レーザスキャナが前記複数の点を取り込む、請求項11に記載の方法。
- 前記複数の点の前記サブセットが、前記FOV内の第1の位置に第1の密度で表示するための第1の点と前記FOV内の第2の位置に第2の密度で表示するための第2の点とを含む複数の異なる密度によって特徴づけられる、請求項11に記載の方法。
- 前記複数の点の前記サブセットが、前記FOVの外部の点を含む、請求項11に記載の方法。
- プログラム命令が具体化されているコンピュータ可読記憶媒体を含むコンピュータプログラム製品であって、前記プログラム命令は、
中央処理装置(CPU)で、仮想現実(VR)ビューアの現在位置に少なくとも一部は基づいて視野(FOV)を決定するステップと、
前記CPUで、オクルージョンカリングを使用し、前記FOVに少なくとも一部は基づいて、3次元(3D)点群内の複数の点のサブセットを選択するステップと、
前記CPUが、前記複数の点の前記サブセットを前記GPUに提供するステップと、
前記GPUで、前記CPUから前記複数の点のサブセットを受け取るステップと、
前記GPUで、前記受け取った複数の点に少なくとも一部は基づいて、前記VRビューア上に表示するための画像をレンダリングするステップと
をコンピュータに実行させ、
前記選択するステップが第1のフレーム/秒(FPS)レートで行われ、前記レンダリングするステップが前記第1のFPSレートよりも速い第2のFPSレートで行われる、コンピュータプログラム製品。 - 前記複数の点の前記サブセットが、前記FOV内の第1の位置に第1の密度で表示するための第1の点と前記FOV内の第2の位置に第2の密度で表示するための第2の点とを含む複数の異なる密度によって特徴づけられる、および/または、
前記複数の点の前記サブセットが、前記FOVの外部の点を含む、請求項19に記載のコンピュータプログラム製品。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762561363P | 2017-09-21 | 2017-09-21 | |
US62/561,363 | 2017-09-21 | ||
US16/126,099 | 2018-09-10 | ||
US16/126,099 US11521349B2 (en) | 2017-09-21 | 2018-09-10 | Virtual reality system for viewing point cloud volumes while maintaining a high point cloud graphical resolution |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019075102A true JP2019075102A (ja) | 2019-05-16 |
Family
ID=63798765
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018176956A Pending JP2019075102A (ja) | 2017-09-21 | 2018-09-21 | 高い点群グラフィック解像度を維持しながら点群ボリュームを閲覧するための仮想現実システム |
Country Status (3)
Country | Link |
---|---|
US (2) | US11521349B2 (ja) |
EP (1) | EP3460758A1 (ja) |
JP (1) | JP2019075102A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11521349B2 (en) | 2017-09-21 | 2022-12-06 | Faro Technologies, Inc. | Virtual reality system for viewing point cloud volumes while maintaining a high point cloud graphical resolution |
US11589033B1 (en) * | 2021-02-28 | 2023-02-21 | Robert Edwin Douglas | Immersive viewing experience |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102010032726B3 (de) | 2010-07-26 | 2011-11-24 | Faro Technologies, Inc. | Vorrichtung zum optischen Abtasten und Vermessen einer Umgebung |
WO2012037157A2 (en) | 2010-09-13 | 2012-03-22 | Alt Software (Us) Llc | System and method for displaying data having spatial coordinates |
US9348141B2 (en) * | 2010-10-27 | 2016-05-24 | Microsoft Technology Licensing, Llc | Low-latency fusing of virtual and real content |
US9342920B1 (en) * | 2011-11-15 | 2016-05-17 | Intrinsic Medical Imaging, LLC | Volume rendering using scalable GPU-based cloud computing |
US20140198097A1 (en) * | 2013-01-16 | 2014-07-17 | Microsoft Corporation | Continuous and dynamic level of detail for efficient point cloud object rendering |
EP3035291B1 (en) * | 2014-12-19 | 2017-11-15 | Donya Labs AB | Rendering based generation of occlusion culling models |
CA3002339C (en) * | 2015-10-17 | 2024-02-06 | Arivis Ag | Direct volume rendering in virtual and/or augmented reality |
US10643381B2 (en) * | 2016-01-12 | 2020-05-05 | Qualcomm Incorporated | Systems and methods for rendering multiple levels of detail |
US10120187B2 (en) * | 2016-02-18 | 2018-11-06 | Nvidia Corporation | Sub-frame scanout for latency reduction in virtual reality applications |
US10334224B2 (en) | 2016-02-19 | 2019-06-25 | Alcacruz Inc. | Systems and method for GPU based virtual reality video streaming server |
US9940858B2 (en) * | 2016-05-16 | 2018-04-10 | Unity IPR ApS | System and method for assymetric rendering to eyes in augmented reality and virtual reality devices |
US10417803B2 (en) * | 2016-06-17 | 2019-09-17 | The Boeing Company | Multiple-pass rendering of a digital three-dimensional model of a structure |
US10373365B2 (en) * | 2017-04-10 | 2019-08-06 | Intel Corporation | Topology shader technology |
US20180315232A1 (en) * | 2017-05-01 | 2018-11-01 | Lockheed Martin Corporation | Real-time incremental 3d reconstruction of sensor data |
US11521349B2 (en) | 2017-09-21 | 2022-12-06 | Faro Technologies, Inc. | Virtual reality system for viewing point cloud volumes while maintaining a high point cloud graphical resolution |
-
2018
- 2018-09-10 US US16/126,099 patent/US11521349B2/en active Active
- 2018-09-19 EP EP18195482.7A patent/EP3460758A1/en active Pending
- 2018-09-21 JP JP2018176956A patent/JP2019075102A/ja active Pending
-
2022
- 2022-10-17 US US17/967,236 patent/US11995762B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11995762B2 (en) | 2024-05-28 |
EP3460758A1 (en) | 2019-03-27 |
US20230041314A1 (en) | 2023-02-09 |
US11521349B2 (en) | 2022-12-06 |
US20190088007A1 (en) | 2019-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11490069B2 (en) | Multi-dimensional data capture of an environment using plural devices | |
US10896481B2 (en) | Collecting and viewing three-dimensional scanner data with user defined restrictions | |
Menna et al. | Geometric investigation of a gaming active device | |
US9761016B1 (en) | Automated generation of a three-dimensional scanner video | |
JP4435865B2 (ja) | 画像処理装置、画像分割プログラムおよび画像合成方法 | |
US11995762B2 (en) | Virtual reality system for viewing point cloud volumes while maintaining a high point cloud graphical resolution | |
JP5486113B2 (ja) | パノラマ投影デバイスによって実施される投影方法 | |
JP2015532718A (ja) | 追加の検出装置を備えたレーザスキャナ | |
CN104620129A (zh) | 具有角扫描速度的动态调整的激光扫描仪 | |
EP3377917A1 (en) | Automated generation of a three-dimensional scanner video | |
CN116124119A (zh) | 一种定位方法、定位设备及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181212 |