(57)【要約】      （修正有）【課題】高い点群解像度を維持しながら点群ボリュームを閲覧するための仮想現実（ＶＲ）システムを提供する。【解決手段】仮想現実システムは、複数の点を有する３次元（３Ｄ）点群と、現在位置を有するＶＲビューアと、グラフィックス処理装置（ＧＰＵ）と、中央処理装置（ＣＰＵ）を含む。ＣＰＵは、ＶＲビューアの現在位置に少なくとも一部は基づいて視野（ＦＯＶ）を決定し、オクルージョンカリングを使用し、ＦＯＶに少なくとも一部は基づいて点のサブセットを選択し、点のサブセットをＧＰＵに提供する。ＧＰＵは、ＣＰＵから複数の点のサブセットを受け取り、受け取った複数の点のサブセットに少なくとも一部は基づいてＶＲビューア上に表示するための画像をレンダリングする。複数の点のサブセットの選択は第１のフレーム／秒（ＦＰＳ）レートで行われ、レンダリングは、第１のＦＰＳレートよりも速い第２のＦＰＳレートで行われる。【選択図】図２
2019075102.tif 000002
【特許請求の範囲】
【請求項１】
仮想現実（ＶＲ）システムであって、
複数の点を含む３次元（３Ｄ）点群と、
現在位置を有するＶＲビューアと、
前記ＶＲビューアに結合されたグラフィックス処理装置（ＧＰＵ）と、
前記ＶＲビューアに結合された中央処理装置（ＣＰＵ）とを含み、
前記ＣＰＵは、前記ＣＰＵ上で実行されると第１の方法を行う第１の実行可能命令に応答するものであり、前記第１の方法は、前記ＶＲビューアの前記現在位置に少なくとも一部は基づいて視野（ＦＯＶ）を決定するステップと、オクルージョンカリングを使用して前記ＦＯＶに少なくとも一部は基づいて前記複数の点のサブセットを選択するステップと、前記複数の点の前記サブセットを前記ＧＰＵに提供するステップとを含み、
前記ＧＰＵは、前記ＧＰＵ上で実行されると第２の方法を行う第２の実行可能コンピュータ命令に応答するものであり、前記第２の方法は、前記ＣＰＵから前記複数の点の前記サブセットを受け取るステップと、前記受け取った複数の点の前記サブセットに少なくとも一部は基づいて前記ＶＲビューア上に表示するための画像をレンダリングするステップとを含み、
前記複数の点のサブセットを選択する前記ステップが第１のフレーム／秒（ＦＰＳ）レートで行われ、前記レンダリングするステップが前記第１のＦＰＳレートよりも速い第２のＦＰＳレートで行われる、
システム。
【請求項２】
前記決定するステップ、前記選択するステップ、前記提供するステップ、前記受け取るステップ、および前記レンダリングするステップが周期的に行われる、請求項１に記載のシステム。
【請求項３】
前記第１の方法が、前記ＶＲビューアの前記現在位置を監視するステップをさらに含み、前記決定するステップ、前記選択するステップ、前記提供するステップ、前記受け取るステップ、および前記レンダリングするステップが、前記監視するステップに基づいて、前記ＶＲビューアの前記現在位置が変化したと判断したことに少なくとも一部は基づいて行われる、請求項１に記載のシステム。
【請求項４】
前記複数の点の前記サブセットを前記ＧＰＵに提供する前記ステップが、前記複数の点の前記サブセットを、前記ＧＰＵおよび前記ＣＰＵがアクセス可能な共有記憶位置に格納するステップを含み、前記複数の点の前記サブセットを受け取る前記ステップが、前記共有記憶位置にアクセスするステップを含む、請求項１に記載のシステム。
【請求項５】
前記第１のＦＰＳレートが約１０ＦＰＳであり、前記第２のＦＰＳレートが約９０ＦＰＳである、請求項１に記載のシステム。
【請求項６】
前記複数の点を取り込むためのレーザスキャナをさらに含む、請求項１に記載のシステム。
【請求項７】
前記複数の点の前記サブセットが、前記ＦＯＶ内の第１の位置に第１の密度で表示するための第１の点と前記ＦＯＶ内の第２の位置に第２の密度で表示するための第２の点とを含む複数の異なる密度によって特徴づけられる、請求項１に記載のシステム。
【請求項８】
前記複数の点の前記サブセットが、前記ＦＯＶの外部の点を含む、請求項１に記載のシステム。
【請求項９】
前記ＶＲビューアがヘッドセットである、請求項１に記載のシステム。
【請求項１０】
前記ＶＲビューアがスマートフォンＶＲビューアである、請求項１に記載のシステム。
【請求項１１】
仮想現実（ＶＲ）システムを提供するステップであって、前記システムが、複数の点を含む３次元（３Ｄ）点群と、中央処理装置（ＣＰＵ）と、現在位置を有するＶＲビューアと、グラフィックス処理装置（ＧＰＵ）とを含み、前記ＶＲビューアが前記ＣＰＵと前記ＧＰＵとに結合された、前記提供するステップと、
前記ＣＰＵで、前記ＶＲビューアの前記現在位置に少なくとも一部は基づいて視野（ＦＯＶ）を決定するステップと、
前記ＣＰＵで、オクルージョンカリングを使用し、前記ＦＯＶに少なくとも一部は基づいて、前記３Ｄ点群内の前記複数の点のサブセットを選択するステップと、
前記ＣＰＵが、前記複数の点の前記サブセットを前記ＧＰＵに提供するステップと、
前記ＧＰＵで、前記ＣＰＵから前記複数の点のサブセットを受け取るステップと、
前記ＧＰＵで、前記受け取った複数の点に少なくとも一部は基づいて、前記ＶＲビューア上に表示するための画像をレンダリングするステップと
を含み、
前記選択するステップが第１のフレーム／秒（ＦＰＳ）レートで行われ、前記レンダリングするステップが前記第１のＦＰＳレートよりも速い第２のＦＰＳレートで行われる、方法。
【請求項１２】
前記決定するステップ、前記選択するステップ、前記提供するステップ、前記受け取るステップ、および前記レンダリングするステップを繰り返すステップをさらに含む、請求項１１に記載の方法。
【請求項１３】
前記ＣＰＵが、前記ＶＲビューアの前記現在位置を監視するステップと、
前記監視するステップに基づいて、前記ＶＲビューアの前記現在位置が変化したと判断したことに少なくとも一部は基づいて、前記決定するステップ、前記選択するステップ、前記提供するステップ、前記受け取るステップ、および前記レンダリングするステップを繰り返すステップと
をさらに含む、請求項１１に記載の方法。
【請求項１４】
前記複数の点の前記サブセットを前記ＧＰＵに提供する前記ステップが、前記複数の点の前記サブセットを、前記ＧＰＵおよび前記ＣＰＵがアクセス可能な共有記憶位置に格納するステップを含み、前記複数の点のサブセットを受け取る前記ステップが、前記共有記憶位置にアクセスするステップを含む、請求項１１に記載の方法。
【請求項１５】
前記第１のＦＰＳレートが約１０ＦＰＳであり、前記第２のＦＰＳレートが約９０ＦＰＳである、請求項１１に記載の方法。
【請求項１６】
レーザスキャナが前記複数の点を取り込む、請求項１１に記載の方法。
【請求項１７】
前記複数の点の前記サブセットが、前記ＦＯＶ内の第１の位置に第１の密度で表示するための第１の点と前記ＦＯＶ内の第２の位置に第２の密度で表示するための第２の点とを含む複数の異なる密度によって特徴づけられる、請求項１１に記載の方法。
【請求項１８】
前記複数の点の前記サブセットが、前記ＦＯＶの外部の点を含む、請求項１１に記載の方法。
【請求項１９】
プログラム命令が具体化されているコンピュータ可読記憶媒体を含むコンピュータプログラム製品であって、前記プログラム命令は、
中央処理装置（ＣＰＵ）で、仮想現実（ＶＲ）ビューアの現在位置に少なくとも一部は基づいて視野（ＦＯＶ）を決定するステップと、
前記ＣＰＵで、オクルージョンカリングを使用し、前記ＦＯＶに少なくとも一部は基づいて、３次元（３Ｄ）点群内の複数の点のサブセットを選択するステップと、
前記ＣＰＵが、前記複数の点の前記サブセットを前記ＧＰＵに提供するステップと、
前記ＧＰＵで、前記ＣＰＵから前記複数の点のサブセットを受け取るステップと、
前記ＧＰＵで、前記受け取った複数の点に少なくとも一部は基づいて、前記ＶＲビューア上に表示するための画像をレンダリングするステップと
をコンピュータに実行させ、
前記選択するステップが第１のフレーム／秒（ＦＰＳ）レートで行われ、前記レンダリングするステップが前記第１のＦＰＳレートよりも速い第２のＦＰＳレートで行われる、コンピュータプログラム製品。
【請求項２０】
前記複数の点の前記サブセットが、前記ＦＯＶ内の第１の位置に第１の密度で表示するための第１の点と前記ＦＯＶ内の第２の位置に第２の密度で表示するための第２の点とを含む複数の異なる密度によって特徴づけられる、および／または、
前記複数の点の前記サブセットが、前記ＦＯＶの外部の点を含む、請求項１９に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連技術の相互参照］
本出願は、その全開示が参照により本明細書に組み込まれる、２０１７年９月２１日に出願された米国仮特許出願第６２／５６１３６３号の利益を主張するものである。
【０００２】
本明細書に記載される主題は、一般に、仮想現実に関し、特に、高点群グラフィック解像度を維持しながら、点群ボリュームを閲覧するための仮想現実システムに関する。
【背景技術】
【０００３】
例えば建物などの領域の３次元（３Ｄ）表現を生成するのに、例えば３Ｄレーザスキャナ飛行時間（ＴＯＦ）座標測定装置などの計測装置が使用されうる。このタイプの３Ｄレーザスキャナは、物体の拡散性散乱表面などの非協調ターゲットに光ビームを向ける。装置内の距離計が物体までの距離を測定し、角度エンコーダが装置内の２軸の回転角を測定する。測定距離および２つの角度により、装置内のプロセッサがターゲットの３Ｄ座標を決定することができる。
【０００４】
ＴＯＦレーザスキャナは、スキャナと目標点との間の空気中の光の速度に基づいて目標点までの距離が決定されるスキャナである。レーザスキャナは、通常、建物、工業施設、トンネルの内部領域などの閉じた空間または開いた空間をスキャンするために使用される。それらの空間は、例えば、工業用途や事故再現用途に使用されうる。レーザスキャナは、スキャナの周囲の体積内の物体を、体積内の物体表面を表すデータ点を取得することによって光学的にスキャンし、測定する。そのようなデータ点は、物体上に光ビームを送り、反射光または散乱光を集めて、距離、２角（すなわち、方位角および天頂角）、ならびに、任意選択で、グレースケール値を決定することによって得られる。本明細書では、点群（または点群データ）と呼ばれるこの生のスキャンデータは、スキャンされた領域または物体を表す３Ｄ画像を生成するために集められ、格納され、１または複数のプロセッサに送信される。
【０００５】
点群データを仮想現実（ＶＲ）ビューア上のディスプレイにレンダリングするときには、ＶＲビューアのユーザにスムーズな視聴体験を提供するために、高いフレーム／秒（ＦＰＳ）レートが求められる。現行のＶＲシステムでは、往々にして、ＦＰＳレートとＶＲビューアによって表示される点の数との間にトレードオフがある。このトレードオフが生じるのは、グラフィックス処理装置（ＧＰＵ）がレンダリングすることのできるＦＰＳレートが、ＧＰＵが各フレームで処理しなければならない点の数と共に減少するからである。
【０００６】
したがって、既存のＶＲシステムはその意図される目的に適してはいるが、必要なのは本発明の実施形態のいくつかの特徴を有するＶＲシステムである。
【発明の概要】
【０００７】
本発明の一実施形態によれば、仮想現実（ＶＲ）システムが提供される。本ＶＲシステムは、複数の点を含む３次元（３Ｄ）点群と、現在位置を有するＶＲビューアと、ＶＲビューアに結合されたグラフィックス処理装置（ＧＰＵ）と、ＶＲビューアに結合された中央処理装置（ＣＰＵ）とを含む。ＣＰＵは、ＣＰＵ上で実行されると、ＶＲビューアの現在位置に少なくとも一部は基づいて視野（ＦＯＶ）を決定するステップと、オクルージョンカリングを使用し、ＦＯＶに少なくとも一部は基づいて複数の点のサブセットを選択するステップと、複数の点のサブセットをＧＰＵに提供するステップとを含む第１の方法を行う第１の実行可能コンピュータ命令に応答する。ＧＰＵは、ＧＰＵ上で実行されると、ＣＰＵから複数の点のサブセットを受け取るステップと、受け取った複数の点のサブセットに少なくとも一部は基づいてＶＲビューア上に表示するための画像をレンダリングするステップと含む第２の方法を行う第２の実行可能コンピュータ命令に応答する。複数の点のサブセットの選択は第１のフレーム／秒（ＦＰＳ）レートで行われ、レンダリングは、第１のＦＰＳレートよりも速い第２のＦＰＳレートで行われる。
【０００８】
本発明の一実施形態によれば、高い点群解像度を維持しながら点群ボリュームを閲覧する方法は、複数の点を含む３Ｄ点群と、ＣＰＵと、現在位置を有するＶＲビューアと、ＧＰＵとを含むＶＲシステムを設けるステップを含む。ＧＰＵとＣＰＵとはＶＲビューアに結合されている。ＣＰＵは、ＶＲビューアの現在位置に少なくとも一部は基づいてＦＯＶを決定し、オクルージョンカリングを使用し、ＦＯＶに少なくとも一部は基づいて３Ｄ点群内の複数の点のサブセットを選択する。ＣＰＵは、複数の点のサブセットをＧＰＵに提供する。ＧＰＵは、ＣＰＵから複数の点のサブセットを受け取り、受け取った複数の点に少なくとも一部は基づいてＶＲビューア上に表示するための画像をレンダリングする。複数の点のサブセットの選択は第１のＦＰＳレートで行われ、レンダリングは、第１のＦＰＳレートよりも速い第２のＦＰＳレートで行われる。
【０００９】
本発明の一実施形態によれば、高い点群解像度を維持しながら点群ボリュームを閲覧するためのコンピュータプログラム製品は、ＶＲシステム内のＣＰＵで、ＶＲビューアの現在位置に少なくとも一部は基づいてＦＯＶを決定するプログラム命令と、オクルージョンカリングを使用し、ＦＯＶに少なくとも一部は基づいて３Ｄ点群内の複数の点のサブセットを選択するプログラム命令とが具体化されているコンピュータ可読記憶媒体を含む。ＣＰＵは、複数の点のサブセットをＧＰＵに提供する。ＧＰＵは、ＣＰＵから複数の点のサブセットを受け取り、受け取った複数の点に少なくとも一部は基づいてＶＲビューア上に表示するための画像をレンダリングする。複数の点のサブセットの選択は第１のＦＰＳレートで行われ、レンダリングは、第１のＦＰＳレートよりも速い第２のＦＰＳレートで行われる。
【００１０】
上記その他の利点および特徴は、以下の説明を図面と併せて読めばより明らかになるであろう。
【図面の簡単な説明】
【００１１】
本発明と見なされる主題は、本明細書の結びで特許請求の範囲において詳細に指摘され、明確に特許請求されている。本発明の上記その他の特徴、および利点は、以下の詳細な説明を添付の図面と併せて読めば明らかになる
【００１２】
【図１】本発明の１つまたは複数の実施形態による仮想現実（ＶＲ）システムの概略図である。
【００１３】
【図２】本発明の１つまたは複数の実施形態によるＶＲシステムを動作させる方法を示す流れ図である。
【００１４】
【図３】本発明の１つまたは複数の実施形態によるレーザスキャナの斜視図である。
【００１５】
【図４】本発明の１つまたは複数の実施形態による測定方法を示すレーザスキャナの側面図である
【００１６】
【図５】本発明の１つまたは複数の実施形態によるレーザスキャナの光学的構成要素、機械的構成要素、および電気的構成要素の、図３の線Ｂ−Ｂに沿った概略的部分断面図である。
【００１７】
【図６】本発明の１つまたは複数の実施形態によるＶＲビューアにデータを提供する方法を示す概略的流れ図である。
【００１８】
【図７】本発明の１つまたは複数の実施形態によるＶＲシステムにおいてグラフィックス処理装置（ＧＰＵ）によって利用されるバッファの概略図である。
【００１９】
【図８】本発明の１つまたは複数の実施形態による拡大されたＦＯＶの概略図である。
【００２０】
【図９】本発明の１つまたは複数の実施形態による、視野（ＦＯＶ）内の１つまたは複数のゾーンの概略図である。
【００２１】
【図１０】１つまたは複数の実施形態によるコンピュータシステムの概略図である。
【００２２】
詳細な説明で、本発明の実施形態を、例として図面を参照して、利点および特徴と共に説明する。
【発明を実施するための形態】
【００２３】
本発明の実施形態は、仮想現実（ＶＲ）ビューアにおける巨大な点群ボリュームの閲覧に関するものである。本明細書で使用される場合、「巨大な点群ボリューム」という用語は、何十億もの点（例えば、２００億、４００億、５００億、またはそれ以上）を有する点群を指す。点群が４００億を超える点を有することは珍しくはないが、典型的な現行のグラフィックス処理装置（ＧＰＵ）は、フレーム／秒（ＦＰＳ）レートが閲覧に許容可能なレートを下回らずに、ＶＲビューア上で表示するために１つのＶＲシーンにおいておおよそ２０００万点までレンダリングすることができる。本明細書に記載される１つまたは複数の実施形態では、あるＦＰＳレートで巨大な点群を表示することができる中央処理装置（ＣＰＵ）ベースのレンダリングエンジンが、ＶＲビューアにおいて巨大な点群のサブセットを表示するように動作するＧＰＵと組み合わされる。任意の時点に点群のサブセットのみを操作することにより、ＧＰＵは、ＶＲビューアに表示される画像の解像度に影響を与えずにＣＰＵより高いＦＰＳレートで動作することができる。
【００２４】
一実施形態では、ＣＰＵは、ＧＰＵが第２のより速いＦＰＳレート（例えば、９０ＦＰＳ）でＶＲビューア上にレンダリングするための点を第１のＦＰＳレート（例えば、１０ＦＰＳ）で選択する。本発明の実施形態は、ＧＰＵがオクルージョンカリングを使用し、ＶＲビューアの現在の視野（ＦＯＶ）に基づいて表示するために点群データベースから点を取得するＣＰＵベースのレンダリングエンジンを利用する。現在のＦＯＶについてＣＰＵオクルージョン・カリング・ベースのレンダリング手法を使用して取得された点のサブセットは、それらの点を使用して第２のＦＰＳレートでＶＲビューア上に画像レンダリングするＧＰＵに転送またはストリーミングされる。
【００２５】
本明細書で使用される場合、「オクルージョンカリング」という用語は、ＶＲビューアの現在位置から見たときに他の物体によって隠されないために現在のＦＯＶにおいて見える点のみを選択するプロセスを指す。例えば、２つの隣接する点が壁の両側にある場合には、ＶＲビューアに最も近い方の点がＶＲビューアの視点から見えるはずなので、その点が選択される。一実施形態では、ＣＰＵは、オクルージョンカリングを使用してＶＲビューア内の画素ごとに点群内の多くとも１点を選択し、選択される点はＶＲビューアの現在位置に最も近い点である。これは、ＦＯＶ内とＶＲビューアの現在位置から選択された距離内との点群内のすべての点が選択される現行のオーバードロー法と対比される。膨大な数の点を有する点群においては、現行のオーバードロー法では、多数の無関係な点が選択される結果になることを理解されたい。このため現行の方法では、ＶＲビューアの所望のフレームレート（例えば、９０フレーム／秒）を維持するために解像度を下げる（例えば、点密度を低減させる）必要がある。
【００２６】
一実施形態では、ＧＰＵ上の点がＣＰＵレンダラによって更新されない間のＶＲビューア位置の変化によるレンダリングアーチファクトの発生を回避するために、ＶＲビューアのＦＯＶの外部の選択された点がＣＰＵによって取得され、ＧＰＵが使用するためにバッファに格納される。
【００２７】
一実施形態では、ＣＰＵレンダリングの性能をさらに高めるために、中心窩レンダリングを使用して、ＦＯＶの中央では高解像度の点データが、ＦＯＶの縁部および外側では低解像度の点データが提供される。
【００２８】
次に図１を参照すると、本発明の１つまたは複数の実施形態によるＶＲシステム１００の概略図が一般的に示されている。図１に示すＶＲシステム１００は、３次元（３Ｄ）スキャナ装置１１２の周囲の体積内の物体を測定するための３Ｄスキャナ装置１１２を含む。スキャナ装置１１２は、複数の点からなる生のスキャンデータすなわち点群１０４を生成する。点群１０４は、データベースまたは任意の既知のデータ構造のデータ記憶装置に格納することができる。一実施形態では、３Ｄスキャナ装置１１２は、これに限定されないが、図３〜図５を参照して後述するレーザスキャナ３２などの計測装置である。３Ｄスキャナ装置１１２は、スキャン装置に限定されず、例えば、これに限定されないが、写真測量装置、三角測量スキャナ、関節腕座標測定機、レーザトラッカなどの３Ｄ点群を生成する任意の公知の装置によって実施することができる。
【００２９】
図１には、ＶＲビューア１１０上に表示するために点群１０４内の点を取得するように動作するスキャン処理ソフトウェアを実行するためのＣＰＵ１０２も示されている。本明細書に記載される一実施形態では、ＣＰＵ１０２によって実行されるスキャン処理ソフトウェアは、米国フロリダ州レイクメリーのＦＡＲＯ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，Ｉｎｃ．が製造するＳＣＥＮＥ（商標）である。これに限定されないが、Ｔｅｃｈｎｏｄｉｇｉｔが製造する３ＤＲｅｓｈａｐｅｒ（登録商標）、Ｃａｐｔｕｒｉｎｇ  Ｒｅａｌｉｔｙが製造するＲｅａｌｉｔｙＣａｐｔｕｒｅ、Ｂｅｎｔｌｅｙ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．が製造するＢｅｎｔｌｅｙ（登録商標）Ｄｅｓｃａｒｔｅｓ（商標）などの、点群から画像をレンダリングする他のＣＰＵスキャン処理ソフトウェアも利用することができる。加えて、これに限定されないが、Ｖａｌｖｅ  Ｃｏｒｐｏｒａｔｉｏｎが製造するＯｐｅｎＶＲなどのプログラミングＡＰＩを利用することもできる。
【００３０】
図１に示すＶＲシステム１００はまた、ＶＲビューア１１０に画像をレンダリングするＧＰＵソフトウェアを実行するためのＧＰＵ１０８も含む。ＧＰＵ１０８は、ＶＲビューア１１０の現在位置に対応する点群のサブセット１０６に位置する点を使用して画像をレンダリングする。ＧＰＵソフトウェアは、これに限定されないが、Ｓｉｌｉｃｏｎ  Ｇｒａｐｈｉｃｓ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｒｐｏｒａｔｉｏｎが製造するＯｐｅｎＧＬ（登録商標）などの、点群データから画像をレンダリングするためにＧＰＵ上で実行可能な任意のソフトウェアによって実装することができる。一実施形態では、ＧＰＵ１０８は、三角形データをレンダリングする能力および／または点群のサブセット１０６に対する後処理計算を行う能力も含む。
【００３１】
図１に示すＶＲビューア１１０は、これに限定されないが、ヘッドセット、ゴーグル、スマートフォン、他の表示装置など、当技術分野で公知の任意のタイプのＶＲビューアを使用して実装することができる。利用できる市販のＶＲビューアの例には、これに限定されないが、ＨＴＣ  Ｖｉｖｅ（商標）やＯｃｕｌｕｓ  Ｒｉｆｔ（登録商標）などのＶＲヘッドセットが含まれる。本明細書で使用される場合、「ＶＲビューアの位置」という用語は、クラウドデータによって表されたシーン内の位置（例えば、３Ｄ点）、およびその位置にあるＶＲビューアのユーザが面している空間内の方向、すなわち向きを指す。これは、本明細書において、ＶＲビューアが特定の位置にあるときにＶＲビューアを介してＶＲビューアのユーザが見ることのできるシーンの位置を指すのに使用される「視野」または「ＦＯＶ」という用語と対比される。ＶＲビューアの位置は、これに限定されないが、実装される特定のＶＲビューアに応じて、コントローラ、ハンドトラッカ、ＶＲビューア移動検出器、音声コマンド、視線追跡など、様々なツールを使用して変更することができる。
【００３２】
図１に示す要素は、図１に示すような別々の物理ユニットとして実装することもでき、またはそれらの要素を組み合わせて１つもしくは複数の統合ユニットにすることもできる。例えば、ＣＰＵ１０２およびＧＰＵ１０８は、同じマルチコア・コンピュータ・システムの部分であってもよい。別の例として、ＧＰＵ１０８は、ＶＲビューア１１０上に位置していてもよい。
【００３３】
次に図２を参照すると、本発明の１つまたは複数の実施形態による、図１に示すＶＲシステム１００を動作させる方法を示す流れ図２００が一般的に示されている。ブロック２０２で、３Ｄスキャナ装置１１２は、３Ｄスキャナ装置１１２の周囲の体積内の物体を測定し、３Ｄ座標、すなわち点を記録することによって点群１０４を作成する。点群１０４を構成する点は、３Ｄスキャナの周囲の体積内の物体を記述する。ブロック２０４で、点群１０４はデータ記憶装置に格納される。ブロック２０６で、ＶＲビューア１１０の現在位置が受け取られ、ブロック２０８で、ＣＰＵ１０２上で実行されているスキャン処理ソフトウェアが、ＶＲビューア１１０の現在位置に対応するＶＲビューア１１０のＦＯＶに少なくとも一部は基づいて点群のサブセット１０６内の点を選択する。一実施形態では、ＣＰＵは、オクルージョンカリングを使用して、ＶＲビューア１１０内の画素ごとに多くとも１点を選択する。ブロック２１０で、ＧＰＵ１０８は、点群のサブセット１０６内の選択された点を使用して、ＶＲビューア１１０上に表示すべき画像をレンダリングする。ブロック２１２で、ＶＲビューア１１０の更新された現在位置が受け取られ、ブロック２０８で処理が続行される。
【００３４】
一実施形態では、ＶＲビューア１１０の現在位置の変化が（例えば、ＣＰＵ１０２によって）監視され、ＶＲビューア１１０の現在位置の変化を検出したことに応答してブロック２０８〜ブロック２１０の処理が行われる。一実施形態では、ＶＲビューア１１０の現在位置は、監視に加えて、または監視の代わりに、周期的または非周期的に決定される。ブロック２０８〜ブロック２１２は、ＶＲシステム１００がもはや使用されなくなる（例えば、ＶＲビューア１１０の電源が切られる、ユーザが、ＶＲ閲覧が終了したことを指示する、ＧＰＵ１０８の電源が切られるなど）まで繰り返される。
【００３５】
次に図３〜図５を参照すると、レーザスキャナ３２を取り囲む環境を光学的にスキャンし測定するためのレーザスキャナ３２が示されている。レーザスキャナ３２は、測定ヘッド４０とベース４２とを有する。測定ヘッド４０は、レーザスキャナ３２が垂直軸４４を中心に回転されうるようにベース４２に取り付けられている。一実施形態では、測定ヘッド４０は、垂直軸４４および水平軸４８を中心とした回転の中心であるジンバル点４６を含む。測定ヘッド４０は回転ミラー５０を有し、回転ミラー５０は水平軸４８を中心に回転されうる。垂直軸を中心とする回転は、ベース４２の中心を中心としたものであってよい。垂直軸および水平軸という用語は、通常の直立姿勢のスキャナを指す。言い換えれば、軸４４は床または地面にほぼ垂直に延在し、軸４８は床または地面とほぼ平行である。３Ｄ座標測定装置を、その側面または上面を下にして動作させることも可能であり、混乱を避けるために、方位軸および天頂軸という用語でそれぞれ垂直軸および水平軸を置き換えてもよいことを理解されたい。垂直軸の代替の名称としてパン軸（ｐａｎ  ａｘｉｓ）または立ち軸（ｓｔａｎｄｉｎｇ  ａｘｉｓ）という用語が使用されてもよい。
【００３６】
測定ヘッド４０には、例えば放射光ビーム５４を放射する発光体５２などの電磁放射エミッタがさらに設けられている。一実施形態では、放射光ビーム５４は、レーザビームなどのコヒーレント光ビームである。レーザビームは、約３００〜１６００ナノメートル、例えば７９０ナノメートル、９０５ナノメートル、１５５０ナノメートル、または４００ナノメートル未満の波長範囲を有しうる。より大きい波長またはより小さい波長を有する他の電磁放射ビームも使用されうることを理解されたい。放射光ビーム５４は、例えば、正弦波波形や矩形波形で振幅変調または強度変調されてもよい。放射光ビーム５４は、発光体５２によって回転ミラー５０上に放射され、そこで環境に偏向される。反射光ビーム５６は、物体５８によって環境から反射される。反射光または散乱光は、回転ミラー５０によって遮られ、受光器６０へ導かれる。放射光ビーム５４および反射光ビーム５６の方向は、それぞれ、軸４４、軸４８を中心とする回転ミラー５０および測定ヘッド４０の角位置からそれぞれ生じる。これらの角位置は、対応する回転駆動装置またはモータに依存する。
【００３７】
発光体５２および受光器６０には３Ｄスキャナプロセッサ、またはコントローラ６２が結合されている。コントローラ６２は、多数の測定点Ｘについて、レーザスキャナ３２と物体５８上の点Ｘとの間の対応する数の距離ｄを決定する。特定の点Ｘまでの距離は、電磁放射が装置から物点Ｘまでその中を通って伝播する空気中の光の速度に少なくとも一部は基づいて（例えば、コントローラ６２によって実装された距離計によって）決定される。一実施形態では、測定距離ｄを得るために、レーザスキャナ３２によって放射される光における変調の位相偏移および点Ｘが決定され、評価される。
【００３８】
空気中の光の速度は、気温、気圧、相対湿度、二酸化炭素濃度などの空気の特性に依存する。そのような空気特性は、空気の屈折率ｎに影響を及ぼす。空気中の光の速度は、真空中の光の速度ｃを屈折率で割ったものに等しい。言い換えると、ｃａｉｒ＝ｃ／ｎである。本明細書で論じられるタイプのレーザスキャナは、空気中の光の飛行時間（ＴＯＦ）（光が装置から物体まで進み装置に戻る往復時間）に基づくものである。ＴＯＦスキャナの例には、放射パルスと戻りパルスとの間の時間間隔を使用して往復時間を測定するスキャナ（パルスＴＯＦスキャナ）、光を正弦曲線的に変調し、戻り光の位相偏移を測定するスキャナ（位相ベースのスキャナ）、ならびに他の多くのタイプが含まれる。光のＴＯＦに基づいて距離を測定する方法は、空気中の光の速度に依存し、したがって、三角測量に基づいて距離を測定する方法と容易に区別される。三角測量に基づく方法は、光源からの光を特定の方向に沿って投射し、次いで特定の方向に沿ってカメラ画素上で光を遮ることを伴う。三角測量の方法は、カメラとプロジェクタとの間の距離を知り、投射角度を受光角度と一致させることによって、物体までの距離が、三角形の１つの既知の長さと２つの既知の角度とに基づいて決定されることを可能にする。したがって、三角測量の方法は、空気中の光の速度に直接依存しない。
【００３９】
１つの動作モードでは、レーザスキャナ２０の周囲の体積のスキャンは、軸２３を中心に測定ヘッド２２を比較的ゆっくり回転させながら軸２５を中心に回転ミラー２６を比較的速く回転させて、アセンブリを螺旋状に動かすことによって行われる。１つの例示的な実施形態では、回転ミラーは、５８２０回転／分の最大速度で回転する。そのようなスキャンでは、ジンバル点２７は、局所静止参照系の原点を規定する。ベース２４は、この局所静止参照系にある。ジンバル点４６から物点Ｘまでの距離ｄを測定することに加えて、レーザスキャナ３２は、受け取った光パワー（「明るさ」という用語に相当する）に関連したグレースケール情報も収集しうる。グレースケール値は、例えば、物点Ｘに起因する測定期間にわたって受光器６０において帯域フィルタリングされ、増幅された信号を統合することによって、少なくとも一部は決定されうる。
【００４０】
測定ヘッド４０は、レーザスキャナ３２に組み込まれた表示装置６４を含みうる。表示装置６４は、オペレータがパラメータを設定したり、レーザスキャナ３２の動作を開始したりすることを可能にする、図３に示すようなグラフィカル・タッチ・スクリーン６６を含みうる。例えば、スクリーン６６は、オペレータが装置に測定命令を提供することを可能にするユーザインターフェースを有していてもよく、スクリーンは測定結果も表示しうる。
【００４１】
レーザスキャナ３２は、測定ヘッド４０用のフレームを提供する運搬構造６８と、レーザスキャナ３２の構成要素を取り付けるためのプラットフォームとを含む。一実施形態では、運搬構造６８は、アルミニウムなどの金属でできている。運搬構造６８は、対向する端部に一対の壁７２、７４を有する横断部材７０を含む。壁７２、７４は、互いに平行であり、ベース４２とは反対の方向に延在する。シェル７６、７８は、壁７２、７４に連結されており、レーザスキャナ３２の構成要素を覆っている。例示的な実施形態では、シェル７６、７８は、例えば、ポリカーボネートやポリエチレンなどのプラスチック材料でできている。シェル７６、７８は、壁７２、７４と協働して、レーザスキャナ３２用のハウジングを形成している。
【００４２】
壁７２、７４に対向するシェル７６、７８の端部には、それぞれのシェル７６、７８を部分的に覆うように一対のヨーク８０、８２が配置されている。例示的な実施形態では、ヨーク８０、８２は、搬送時および動作時にシェル７６、７８を保護するのを助ける、例えばアルミニウムなどの適度に耐久性のある材料でできている。ヨーク８０、８２は各々、例えば留め具などでベース４２に隣接する横断部材７０に連結された第１のアーム部分８４を含む。各ヨーク８０、８２のアーム部分８４は、横断部材７０からそれぞれのシェル７６、７８の外側の角まで斜めに延在する。ヨーク８０、８２は、シェルの外側の角から、シェルの側縁に沿って、シェルの反対側の外側の角まで延在する。各ヨーク８０、８２は、壁７２、７４まで斜めに延在する第２のアーム部分をさらに含む。ヨーク８０、８２は、横断部材７０、壁７２、７４、およびシェル７６、７８に複数の位置で連結されうることを理解されたい。
【００４３】
一対のヨーク８０、８２は協働して、２つのシェル７６、７８がその内部に配置された凸空間に外接して取り囲む。例示的な実施形態では、ヨーク８０、８２は協働してシェル７６、７８のすべての外縁部を覆い、上アーム部分および下アーム部分はシェル７６、７８の上縁部および下縁部の少なくとも一部分の上に突出している。これは、搬送時および動作時にシェル７６、７８および測定ヘッド４０を損傷から保護する際に有利である。他の実施形態では、ヨーク８０、８２は、例えばレーザスキャナ３２の運搬を容易にするハンドルや付属品の取り付け点などの追加の特徴を含みうる。
【００４４】
横断部材７０の上には、プリズム８６が設けられている。プリズム８６は壁７２、７４と平行に延在する。例示的な実施形態では、プリズム８６は、運搬構造６８の一部として一体的に形成されている。他の実施形態では、プリズム８６は、横断部材７０に連結された別個の構成要素である。ミラー５０が回転すると、各回転の間、ミラー５０は、放射光ビーム５４を横断部材７０とプリズム８６とに導く。例えば受光器６０内の電子構成要素の非線形性により、測定距離ｄは、例えば、スキャナに入射する光パワーや受光器５６内の光検出器に入射する光パワーで測定されうる、信号強度に依存しうる。一実施形態では、距離補正が、測定点までの距離と、測定点から返され、受光器６０内の光検出器に送られた光パワー（一般には「明るさ」と呼ばれることもある光パワーの拡大縮小されていない数量）との関数（おそらくは非線形関数）としてスキャナに格納されている。プリズム８６は、ジンバル点４６から既知の距離にあるので、プリズム８６によって反射された光の測定された光パワーレベルは、他の測定点の距離測定値を補正するために使用されてよく、それによって温度などの環境変数の影響を補正する補正が可能になる。例示的な実施形態では、得られる距離の補正は、コントローラ６２によって行われる。
【００４５】
一実施形態では、コントローラ６２は、スキャナ３２全体に、またはスキャナ３２の外部に分散された１つまたは複数のプロセッサを表す。１つまたは複数のプロセッサは、ネットワークを介して通信するために接続された１つまたは複数のコンピューティングデバイスを含みうる。コンピューティングデバイスは、スキャナ３２からのデータを協働して処理するように分散構成で配置されうる。プロセッサは、マイクロプロセッサ、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）、および一般に計算処理機能を果たすことができる任意のデバイスであってよい。１つまたは複数のプロセッサは、情報を格納するためのメモリ（揮発性または不揮発性）にアクセスすることができる。加えて、コントローラ６２のプロセッサのうちの１つまたは複数が、リモートコンピューティング能力のサポートを提供してもよい。プロセッサ間の通信は、有線、無線、または有線と無線のデータ接続もしくは媒体の組み合わせによるものであってよい。
【００４６】
一実施形態では、ベース４２は、参照により本明細書に組み込まれる、同一所有者の米国特許第８７０５０１２号（'０１２）に記載されているようなスイベルアセンブリ（図示せず）に連結されている。スイベルアセンブリは、運搬構造６８内に収容されており、軸４４を中心に測定ヘッド４０を回転させるように構成されたモータを含む。
【００４７】
補助画像取得装置８８は、スキャンされた体積またはスキャンされた物体と関連付けられたパラメータを取り込み、測定し、画像取得領域にわたる測定量を表す信号を提供する装置であってもよい。補助画像取得装置８８は、カラーカメラ、高温計、熱赤外線画像装置、電離放射線検出器、またはミリ波検出器であってもよいが、これに限定されない。
【００４８】
一実施形態では、カメラ（第１の画像取得装置）９０は、スキャナ３２の内部に位置し、３Ｄスキャナ装置と同じ光軸を有しうる。この実施形態では、第１の画像取得装置９０は、測定ヘッド４０に組み込まれており、放射光ビーム５４および反射光ビーム５６と同じ光路に沿って画像を取得するように配置されている。この実施形態では、発光体５２からの光は固定ミラー９２から反射し、発光体５２からの光９６を回転ミラー５０上に反射するダイクロイック・ビーム・スプリッタ９４まで進む。ダイクロイック・ビーム・スプリッタ９４は、光９６の波長とは異なる波長で光を通過させる。例えば、発光体５２は、近赤外レーザ光（波長７８０ｎｍまたは１１５０ｎｍの光など）であってもよく、ダイクロイック・ビーム・スプリッタ９４は、可視光（４００〜７００ｎｍの波長など）を透過させながら赤外レーザ光を反射するように構成されている。他の実施形態では、光がビームスプリッタ９４を通過するか、それとも反射されるかの判断は、光の偏光に依存する。デジタルカメラ９０は、スキャンされた領域の２Ｄ写真画像を取得して、スキャン画像に付加する色データ（テクスチャ）を取り込む。３Ｄスキャン装置の光軸と一致した光軸を有する内蔵式カラーカメラの場合、カメラビューの方向は、スキャナのステアリング機構を調整するだけで、例えば、軸４４を中心に方位角を調整し、軸４８を中心にミラー５０を向けることによって容易に得られる。
【００４９】
次に図６を参照すると、本発明の１つまたは複数の実施形態によるＶＲビューア（例えば、図１のＶＲビューア１１０）にデータを提供する方法を示す流れ図６００が一般的に示されている。一実施形態では、図６のブロック６１０、ブロック６１２、およびブロック６１４は、ＧＰＵ（例えば、図１のＧＰＵ１０８）上で実行されているＧＰＵレンダースレッドによって実行され、図６のブロック６０２、ブロック６０４、ブロック６０６、およびブロック６０８は、ＣＰＵ（例えば、図１のＣＰＵ１０２）上で実行されているＣＰＵレンダースレッドによって実行される。本明細書で使用される場合、「レンダースレッド」という用語は、点群内の点を使用してＶＲビューア上に画像を生成するために実行されているスキャン処理ソフトウェアプログラムを指す。一実施形態では、ＣＰＵレンダースレッドとＧＰＵレンダースレッドとはどちらも、点群（例えば、図１の点群１０４）内の点のサブセットを含む共有スレッドバッファ（例えば、図１の点群のサブセット１０６）にアクセスすることができる。一実施形態では、共有バッファは３つのバッファを含み、１つのバッファはＧＰＵによって左目画像を提供するために読み取られ、もう１つのバッファはＧＰＵによって右目画像を提供するために読み取られ、もう１つのバッファはＣＰＵによって右目画像または左目画像のどちらかの点を書き込まれる。どの時点においても、バッファはＧＰＵによって読み取られているか、それともＣＰＵによって書き込まれているかのどちらかであり、両方ではない。一実施形態では、ＣＰＵレンダースレッドの機能を果たすために米国フロリダ州レイクメリーのＦＡＲＯ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，Ｉｎｃ．のＳＣＥＮＥが利用され、ＧＰＵレンダースレッドの機能を果たすためにＯｐｅｎＧＬが利用される。
【００５０】
次に図６を参照すると、ブロック６０２で、ＶＲビューアの現在位置がＣＰＵレンダースレッドによって取得される。一実施形態では、ブロック６０２で、ＣＰＵレンダースレッドは、ＶＲビューアからの移動を示す信号を、点群内の位置および向きを含むビューアの現在位置に変換する。ブロック６０４で、ＶＲビューアの現在位置は、ＶＲビューアのカメラ位置、すなわちＦＯＶに変換される。ＣＰＵスレッドが点群からの点の特定のサブセットの問い合わせを開始する場合、カメラ位置設定の更新レートは約９０ｆｐｓであり、ＣＰＵスレッドはより低いレートで点のサブセットを問い合わせするため、問い合わせには最新のカメラ位置が使用される。ブロック６０６で、ＣＰＵレンダースレッドは、オクルージョンカリングを使用して、更新されたカメラ位置に基づいて点群１０４などの点群から点を選択し、ブロック６０８でそれらの点を共有スレッドバッファ内のバッファに格納する。一実施形態では、ＣＰＵは、左目画像用のバッファへの点の書き込みと右目画像用のバッファへの点の書き込みとを交互に行う。一実施形態では、ＣＰＵは、ルックアップアルゴリズムまたは探索アルゴリズムを使用して、八分木ベースのデータ構造内の正しい点のサブセットを選択する。
【００５１】
ブロック６１０で、ＧＰＵレンダースレッドは共有スレッドバッファ内の格納された点にアクセスし、それらをローカル変数にコピーする。一実施形態では、これは、ＧＰＵによって読み取られているバッファのうちの１つを、ＣＰＵが書き込みを終了したバッファで置き換えることを含む。例えば、左目画像を含むＧＰＵによって読み取られているバッファは、ＣＰＵによって書き込まれたバッファが左目画像を含む場合にそのバッファで置き換えられ、あるいは、右目画像を含むＧＰＵによって読み取られているバッファは、ＣＰＵによって書き込まれたバッファが右目画像を含む場合にそのバッファで置き換えられうる。置き換えられたバッファはその場合、ＣＰＵによって次の点群を書き込まれるバッファになる。ブロック６１２で、共有スレッドバッファからのコピーされた点がアップロードされ、ブロック６１４で、ＶＲビューア上で閲覧するためにＧＰＵ上でレンダリングされる。図６に示すように、ＶＲビューアの現在位置を決定し、現在位置に対応するデータ点のサブセットをＶＲビューアにレンダリングするためにＧＰＵに提供するプロセスは、例えばＶＲビューアの電源が切られるまで繰り返される。
【００５２】
一実施形態では、ＣＰＵレンダースレッドは、両目のカメラ位置を含む共有スレッドバッファのための点を選択する。一実施形態では、ＣＰＵレンダースレッドはループとして点を問い合わせし、ループの終わりに、共有スレッドバッファが更新される。あるループ反復では、左目用の点が共有スレッドバッファに追加され、次のループ反復では、右目用の点が共有スレッドバッファに追加される。この方法で点を追加すると、反復ごとに両目の点を提供する場合と比較して待ち時間が半減する。
【００５３】
一実施形態では、ＧＰＵレンダースレッドのローカル変数は、左目用のバッファ、右目用のバッファ、およびＧＰＵにアップロードされていない点のリストを含む未使用のバッファの３つの点バッファを含む。一実施形態では、ＧＰＵレンダースレッドは共有スレッドバッファに問い合わせを行って新しい点が利用可能であるかどうかを判断し、新しい点が利用可能な場合、ＧＰＵレンダースレッドはそれらを未使用のバッファにコピーする。ＧＰＵレンダースレッドは、各目のバッファから画像をレンダリングするが、未使用のバッファの内容からは画像をレンダリングしない。３つの点バッファは、ＧＰＵにノンブロッキング・ポイント・ストリーミングを提供するために使用される。
【００５４】
次に図７を参照すると、本発明の１つまたは複数の実施形態による、ＧＰＵにノンブロッキング・ポイント・ストリーミングを提供するためにＶＲシステムにおいてＧＰＵによって利用される点バッファの概略図７００が一般的に示されている。一実施形態では、図７に示すバッファは、図１に示す点群のサブセット１０６に位置している。図７に示すような一実施形態では、３つのバッファがリングバッファ方式で循環され、未使用のバッファが完全にアップロードされるとすぐに、最も古い目用のバッファがＧＰＵ上で点をレンダリングするために未使用バッファで置き換えられる。図７に示すように、第１の時点７０２において、バッファ７０８は、左目画像をレンダリングするためにＧＰＵによって読み取られた点を含み、バッファ７１０は、右目画像をレンダリングするためにＧＰＵによって読み取られた点を含み、バッファ７１２は、ＧＰＵによって使用されていないが、ＣＰＵによって左目画像を表す点を書き込まれている。第２の時点７０４において、バッファ７０８は、ＧＰＵによって使用されていないが、ＣＰＵによって右目画像を表す点を書き込まれており、バッファ７１０は、右目画像をレンダリングするためにＧＰＵによって読み取られた点を含み、バッファ７１２は、左目画像をレンダリングするためにＧＰＵによって読み取られた点を含む。第３の時点７０６において、バッファ７０８は、右目画像をレンダリングするためにＧＰＵによって読み取られた点を含み、バッファ７１０は、ＧＰＵによって使用されていないが、ＣＰＵによって右画像を表す点を書き込まれており、バッファ７１２は、左目画像をレンダリングするためにＧＰＵによって読み取られた点を含む。
【００５５】
一実施形態では、ＦＰＳドロップを回避するために、点が完全にアップロードされるまで点のサブセットが各フレームでアップロードされる。
【００５６】
次に図８を参照すると、本発明の１つまたは複数の実施形態による拡大されたＦＯＶの概略図８００が一般的に示されている。ＣＰＵとＧＰＵとのレンダリング速度の差を考慮するために、一実施形態では、ＶＲビューアの現在のＦＯＶよりもずっと幅広いかつ／またはずっと高さの高いＦＯＶを有する画像に対応する点群からの点を取得する。このように、ＶＲビューアのＦＯＶが移動したときに、たとえＣＰＵレンダースレッドが新しいカメラ画像のための点の選択を終了していなくても、更新されたＦＯＶの画像をレンダリングするための点が利用可能である。一実施形態では、約１０００点×１０００点の典型的なレンダリング解像度がＦＯＶによって利用される。これは、約３０００点×３０００点のレンダリング解像度が拡大されたＦＯＶによって利用される実施形態と対比される。ブロック８０２に、ＶＲビューアの現在のＦＯＶを垂直方向と水平方向の両方に拡大した拡大ＦＯＶ画像を示す。ブロック８０４に、ＶＲビューアの現在のＦＯＶを垂直方向に拡大した拡大ＦＯＶ画像を示す。ブロック８０６に、ＶＲビューアの現在のＦＯＶを水平方向に拡大した拡大ＦＯＶ画像を示す。
【００５７】
一実施形態では、ＶＲビューアのＦＯＶは、ＦＯＶの過去の移動に基づいて拡大される。例えば、ＦＯＶの最後の数回の移動が左方である場合、ＣＰＵはＦＯＶをＦＯＶの右側よりも左側でさらに拡大しうる。
【００５８】
一実施形態では、拡大されたＦＯＶのサイズを、ＣＰＵとＧＰＵとのレンダリング速度の差に基づいて調整することができる。
【００５９】
拡大されたＦＯＶは、ＦＯＶごとにより多くの点を選択する必要があるため、ＣＰＵのレンダリング速度、すなわちＦＰＳレートに悪影響を及ぼす可能性がある。一実施形態では、中心窩レンダリングを使用して、画像の中央では高解像度を提供し、画像の縁部では低解像度を提供することにより必要とされる点の数が低減される。ＦＯＶは、各々異なる点密度、すなわち解像度に対応する様々なゾーンに分割することができる。次に図９を参照すると、本発明の１つまたは複数の実施形態によるＦＯＶ内の１つまたは複数のゾーンの概略図９００が一般的に示されている。図９には、ＦＯＶ内の画像の解像度を変えるために実施できる様々な構成が示されている。ブロック９０２に、単一のゾーンを有するＦＯＶを、ブロック９０４に、２つのゾーンを有するＦＯＶを、ブロック９０６に、３つのゾーンを有するＦＯＶを、ブロック９０８に、水平方向に変化するゾーンを有するＦＯＶを、ブロック９１０に、垂直方向に変化するゾーンを有するＦＯＶを、ブロック９１２に、グリッドに基づいて変化するゾーンを有するＦＯＶを示す。中心窩レンダリングでは、各点が画素数単位のある特定の点サイズを有する。このサイズは、点が存在するゾーンについて、点単位またはゾーン単位で格納することができる。ＧＰＵ上で点のサブセットの外側領域にある点は、ユーザがこれらの低解像度の点を見たときに、ユーザが常にフルポイントのデータセット内に点がある密な表面という印象を受けるようにするために、より大きな点サイズでレンダリングされる。特定のサブセット内の点の点サイズは、ＧＰＵスレッド内の異なるＦＯＶの影響を受けない。
【００６０】
一実施形態では、解像度、構成、ゾーンの数および／またはゾーンのサイズを、拡大されたＦＯＶのサイズおよび／またはＣＰＵとＧＰＵとのレンダリング速度の差に基づいて調整することができる。
【００６１】
一実施形態では、画像が解像度の２倍（例えば、１４００×１４００の代わりに２８００×２８００）でレンダリングされるスーパーサンプリングを利用して、微小移動によって引き起こされるＶＲビューア内の画像ノイズが低減される。他の実施形態では、４または８またはある他の倍数が利用される。その後、表示する前に画像を元の解像度に縮小することができる。縮小アルゴリズムは、実装形態ごとに実質的に異なっていてよく、平均化アルゴリズムを使用して実装することができる。
【００６２】
一実施形態では、指定された数（例えば、４）の画素の色が平均化される画像ぼかしを利用して、微小移動によって引き起こされる画像ノイズが低減される。
【００６３】
「約」という用語は、出願時に利用可能な装置に基づく特定の量の測定と関連付けられた誤差の程度を含むことが意図されている。例えば、「約」は、所与の値の±８％または５％、または２％の範囲を含むことができる。
【００６４】
次に図１０を見ると、高い点群解像度を維持しながら点群ボリュームを閲覧するためのＶＲシステムの１つまたは複数の実施形態が実装されうるシステム１０００の概略図が示されている。一実施形態では、システム１０００の全部または一部が、本明細書に記載される３Ｄスキャナ装置、ＣＰＵ、およびＧＰＵのうちの１つまたは複数に組み込まれうる。１つまたは複数の例示的な実施形態では、ハードウェアアーキテクチャに関して、図１０に示すように、コンピュータ１００１は、処理装置１００５と、メモリコントローラ１０１５および入出力コントローラ１０３５に結合されたメモリ１０１０とを含む。入出力コントローラ１０３５は、例えば、当技術分野で公知であるように、１つもしくは複数のバスまたは他の有線接続もしくは無線接続とすることができるが、これに限定されない。入出力コントローラ１０３５は、簡潔にするために省かれているが、通信を可能にする、コントローラ、バッファ（キャッシュ）、ドライバ、リピータ、受信機などの追加要素を有しうる。さらに、コンピュータ１００１は、前述の構成要素間の適切な通信を可能にするアドレス接続、制御接続、および／またはデータ接続を含みうる。
【００６５】
１つまたは複数の例示的な実施形態では、キーボード１０５０およびマウス１０５５または同様のデバイスを入出力コントローラ１０３５に結合することができる。あるいは、入力は、タッチ感知式インターフェースまたは動き感知式インターフェース（図示せず）を介して受け取られてもよい。コンピュータ１００１は、ディスプレイ１０３０に結合されたディスプレイコントローラ１０２５をさらに含むことができる。システム１０００にはＶＲビューア（例えば、図１のＶＲビューア１１０）が結合されうることを理解されたい。
【００６６】
処理装置１００５は、ソフトウェア、特に、二次記憶１０２０またはメモリ１０１０に格納されたソフトウェアを実行するためのハードウェア装置である。処理装置１００５は、任意のカスタムメイドもしくは市販のコンピュータプロセッサ、中央処理装置（ＣＰＵ）、コンピュータ１００１と関連付けられた複数のプロセッサのうちの補助プロセッサ、（マイクロチップもしくはチップセットの形態の）半導体ベースのマイクロプロセッサ、マクロプロセッサ、または一般的に命令を実行するための任意のデバイスとすることができる。
【００６７】
メモリ１０１０は、揮発性メモリ素子（例えば、ランダム・アクセス・メモリ（ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭなどのＲＡＭ））および不揮発性メモリ素子（例えば、ＲＯＭ、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、プログラマブル読取り専用メモリ（ＰＲＯＭ）、テープ、コンパクトディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、フラッシュドライブ、ディスク、ハード・ディスク・ドライブ、ディスケット、カートリッジ、カセットなど）のうちの任意の１つまたは組み合わせを含むことができる。さらに、メモリ１０１０は、電子、磁気、光学、および／または他のタイプの記憶媒体を組み込みうる。したがって、メモリ１０１０は、処理装置１００５によって実行可能な命令がコンピュータプログラム製品として具体化されうる有形のコンピュータ可読記憶媒体１０４０の一例である。メモリ１０１０は、様々な構成要素が互いに離れて配置されているが、処理装置１００５によってアクセスされうる分散型アーキテクチャを有することができる。
【００６８】
メモリ１０１０内の命令は、論理関数を実装するための実行可能命令の順序付きリストを各々が含む、１つまたは複数の別個のプログラムを含みうる。図１０の例では、メモリ１０１０内の命令は、適切なオペレーティングシステム（ＯＳ）１０１１とプログラム命令１０１６とを含む。オペレーティングシステム１０１１は、本質的に、他のコンピュータプログラムの実行を制御し、スケジューリング、入出力制御、ファイルおよびデータ管理、メモリ管理、ならびに通信制御および関連サービスを提供する。コンピュータ１００１が動作しているとき、処理装置１００５は、メモリ１０１０内に格納された命令を実行し、メモリ１０１０との間でデータをやりとりし、命令に従ってコンピュータ１００１の動作を全体的に制御するよう構成される。プログラム命令１０１６の例には、図１〜図９を参照して本明細書で説明されている処理を実施する命令が含まれうる。
【００６９】
図１０のコンピュータ１００１は、１つまたは複数のネットワークリンクを介して１つまたは複数の他のコンピュータシステムとの通信チャネルを確立することができるネットワークインターフェース１０６０も含む。ネットワークインターフェース１０６０は、当技術分野で公知の有線通信プロトコルおよび／または無線通信プロトコルをサポートすることができる。例えば、ユーザシステムで実施された場合、ネットワークインターフェース１０６０は、アプリケーションサーバとの通信チャネルを確立することができる。
【００７０】
本発明の態様は、システム、方法、またはコンピュータプログラム製品として具体化され、ハードウェア実施形態、ソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、またはそれらの組み合わせの形態を取りうることが理解されよう。さらに、本発明の態様は、コンピュータ可読プログラムコードが具体化されている１つまたは複数のコンピュータ可読媒体において具体化されたコンピュータプログラム製品の形態を取りうる。
【００７１】
１つまたは複数のコンピュータ可読媒体が利用されうる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってもよい。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外線、または半導体のシステム、装置、またはデバイス、またはこれらの任意の適切な組み合わせでありうるが、これに限定されない。コンピュータ可読記憶媒体のより具体的な例（非網羅的なリスト）には、１つまたは複数の配線を有する電気的接続、携帯型コンピュータディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、光ファイバ、携帯型コンパクトディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、または上記の任意の適切な組み合わせ以下が含まれよう。一態様では、コンピュータ可読記憶媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれと関連して使用するためのプログラムを含むか格納している有形の媒体でありうる。
【００７２】
コンピュータ可読信号媒体は、コンピュータ可読プログラムコードが、例えば、ベースバンドにおいて、または搬送波の一部として具体化された伝播データ信号を含みうる。そのような伝播信号は、電磁気、光学、またはそれらの任意の適切な組み合わせを含むが、これに限定されない様々な形態のいずれかを取りうる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、またはデバイスによって、またはこれと関連して使用するためのプログラムを伝達、伝播、または搬送することができる任意のコンピュータ可読媒体であってよい。
【００７３】
コンピュータ可読媒体は、その上に具体化されたプログラムコードを含んでいてよく、プログラムコードは、無線、有線、光ファイバケーブル、ＲＦなど、またはそれらの任意の適切な組み合わせを含むがこれに限定されない、任意の適切な媒体を使用して伝送されうる。加えて、本発明の態様を実施するための動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（登録商標）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語と「Ｃ」プログラミング言語や類似したプログラミング言語などの従来の手続き型プログラミング言語とを含む１つまたは複数のプログラミング言語の任意の組み合わせで記述されうる。プログラムコードは、全部がユーザのコンピュータ上で実行されても、一部がユーザのコンピュータ上で実行されても、スタンドアロンのソフトウェアパッケージとして実行されても、一部がユーザのコンピュータ上で一部がリモートコンピュータ上で実行されても、全部がリモートのコンピュータまたはサーバ上で実行されてもよい。
【００７４】
本発明の態様は、本明細書では、本発明の実施形態による方法、装置（システム）およびコンピュータプログラム製品の流れ図および／またはブロック図を参照して説明されていることが理解されよう。流れ図および／またはブロック図の各ブロックまたはステップ、ならびに流れ図および／またはブロック図のブロックまたはステップの組み合わせは、コンピュータプログラム命令によって実装されうることが理解されよう。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供されてマシンを生成することができ、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行される命令は、流れ図および／またはブロック図の１つまたは複数のブロックで指定された機能／動作を実施する手段を生じさせる。
【００７５】
これらのコンピュータプログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスに特定の方法で機能するよう指図できるコンピュータ可読媒体に格納することもでき、コンピュータ可読媒体に格納された命令は、流れ図および／またはブロック図の１つまたは複数のブロックで指定された機能／動作を実施する命令を含む製造品を生成する。コンピュータプログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイス上でコンピュータ実装プロセスを生成する一連の動作ステップを行わせることもでき、コンピュータまたは他のプログラマブル装置上で実行される命令は、流れ図および／またはブロック図の１つまたは複数のブロックで指定された機能／動作を実施するためのプロセスを提供する。
【００７６】
加えて、本明細書に記載されるいくつかの実施形態は、「表示」と関連付けられている。本明細書で使用される場合、「表示」という用語は、主題、項目、エンティティ、ならびに／または他の対象および／もしくはアイデアを示し、またはそれらと関連付けられた任意のしるしおよび／または他の情報を指すのに使用されうる。本明細書で使用される場合、「を示す情報」および「しるし」という表現は、関連したエンティティ、主題または対象を表し、記述し、かつ／またはこれとそれ以外に関連付けられた任意の情報を指すのに使用されうる。情報のしるしには、例えば、コード、参照、リンク、信号、識別子、および／またはそれらの任意の組み合わせ、および／または情報と関連付けられた他の情報表現が含まれうる。いくつかの実施形態では、情報の（もしくは情報を示す）しるしは、情報自体および／または情報の任意の部分もしくは構成要素であってもよく、これを含んでいてもよい。いくつかの実施形態では、表示は、要求、勧誘、ブロードキャスト、ならびに／または任意の他の形態の情報収集および／もしくは流布を含みうる。
【００７７】
本特許出願には多くの実施形態が記載されており、例示目的でのみ提示されている。記載された実施形態は、いかなる意味でも限定するものではなく、限定を意図されたものでもない。本開示の（１つまたは複数の）発明は、本開示から容易に明らかなように、多くの実施形態に広く適用可能である。当業者であれば、本開示の（１つまたは複数の）発明は、構造的改変、論理的改変、ソフトウェア改変、電気的改変などの様々な改変および変更を伴って実施されうることを認めるであろう。本開示の（１つまたは複数の）発明の特定の特徴が、１つまたは複数の特定の実施形態および／または図面を参照して説明されている場合があるが、そのような特徴は、特に明記されない限り、それらの特徴の説明で参照されているその１つまたは複数の特定の実施形態および／または図面における使用に限定されないことを理解されたい。
【００７８】
相互に通信状態にあるデバイスは、特に明記されない限り、相互に絶え間なく通信している必要はない。むしろ、そのようなデバイスは、必要または所望に応じて相手に送信するだけでよく、実際には、ほとんどの時間、データの交換を実際に控えることができる。例えば、インターネットを介して別のマシンと通信しているマシンは、一度に何週間も他方のマシンにデータを送信しないことがありうる。加えて、相互に通信状態にあるデバイスは、１つまたは複数の仲介手段を介して直接的または間接的に通信してもよい。
【００７９】
複数の構成要素または特徴を有する実施形態の説明は、そのような構成要素および／または特徴のすべてまたはいずれかが必要とされることを意味するものではない。むしろこれに反して、本発明の多種多様な可能な実施形態を例示するために、様々な任意選択の構成要素が記載されている。特に明記されない限り、いずれの構成要素および／または特徴も本質的または必須ではない。
【００８０】
さらに、プロセスステップ、アルゴリズムなどが順番に記述されている場合があるが、そのようなプロセスは、異なる順序で働くように構成されてもよい。言い換えれば、明記されうるステップの任意の連続または順序は必ずしも、それらのステップがその順序で行われるべきであるという要件を示すものではない。本明細書に記載されるプロセスのステップは、実用的な任意の順序で実行されうる。さらに、いくつかのステップは、（例えば、一方のステップが他方のステップの後に記載されているために）非同時的に行われるように記載され、または示唆されているが、同時に行われてもよい。さらに、図面における図示によるプロセスの例示は、例示のプロセスがそのプロセスへの他の変形および改変を排除することを意味するものではなく、例示のプロセスまたはそのステップのいずれかが本発明に必須であることを意味するものではなく、例示のプロセスが好ましいことを意味するものではない。
【００８１】
何かを「決定すること」は、様々な方法で行うことができ、したがって「決定する」という用語（および類似した用語）は、計算すること、計算処理すること、導出すること、（例えば、テーブル、データベース、またはデータ構造において）ルックアップすること、確認することなどを含む。
【００８２】
本明細書に記載される様々な方法およびアルゴリズムは、例えば、適切に、かつ／または特別にプログラムされた汎用コンピュータおよび／またはコンピューティングデバイスによって実装されうることが容易に明らかになるであろう。典型的には、プロセッサ（例えば、１つまたは複数のマイクロプロセッサ）が、メモリまたは同様のデバイスから命令を受け取り、それらの命令を実行して、それらの命令によって定義される１つまたは複数のプロセスを実行する。さらに、そのような方法およびアルゴリズムを実装するプログラムは、様々な媒体（例えば、コンピュータ可読媒体）を使用していくつかの方法で格納され、伝送されうる。いくつかの実施形態では、様々な実施形態のプロセスの実装のためのソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせてハードワイヤード回路またはカスタムハードウェアが使用されうる。よって、実施形態は、ハードウェアとソフトウェアのいかなる特定の組み合わせにも限定されない。
【００８３】
「プロセッサ」とは、一般に、本明細書にさらに記載されているように、任意の１つまたは複数のマイクロプロセッサ、ＣＰＵデバイス、ＧＰＵデバイス、コンピューティングデバイス、マイクロコントローラ、デジタル信号プロセッサ、または類似したデバイスを意味する。ＣＰＵは典型的には様々なタスクを行い、ＧＰＵは画像を表示するように最適化される。
【００８４】
データベースが記述されている場合、（ｉ）記載されているデータベース構造に対する代替のデータベース構造が容易に用いられ、（ｉｉ）データベース以外の他のメモリ構造が容易に用いられうることが、当業者には理解されよう。本明細書に提示された任意のサンプルデータベースの図または説明は、格納された情報の表現の例示的な構成である。図面または他の箇所に示されているテーブルなどによって提案されたもの以外に、任意の数の他の構成が用いられうる。同様に、データベースの任意の図示のエントリも例示的な情報を表しているにすぎない。当業者であれば、エントリの数および内容は、本明細書に記載されたものと異なりうることを理解するであろう。さらに、テーブルとしてのデータベースの描写に関わらず、本明細書に記載されているデータ型を格納し、操作するために、（関係データベース、オブジェクトベースモデルおよび／または分散データベースを含む）他の形式を使用することもできよう。同様に、本明細書に記載されているような様々なプロセスを実装するためにデータベースのオブジェクトメソッドまたは挙動を使用することもできる。加えて、データベースは、公知の方法で、ローカルで、またはそのようなデータベース内のデータにアクセスするデバイスからリモートで格納されてもよい。
【００８５】
本明細書で使用される用語は、特定の実施形態を説明するためのものにすぎず、本発明を限定するためのものではない。本明細書で使用される場合、単数形「ａ」、「ａｎ」および「ｔｈｅ」は、文脈上そうでないことが明確に示されない限り、複数形も含むことが意図されている。「含む（ｃｏｍｐｒｉｓｅｓ）」および／または「含む（ｃｏｍｐｒｉｓｉｎｇ）」という用語は、本明細書で使用される場合、記載された特徴、整数、ステップ、動作、要素および／または構成要素の存在を指定するが、１つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および／またはそれらのグループの存在または追加を除外するものではない。
【図１】
2019075102.tif 000003
【図２】
2019075102.tif 000004
【図３】
2019075102.tif 000005
【図４】
2019075102.tif 000006
【図５】
2019075102.tif 000007
【図６】
2019075102.tif 000008
【図７】
2019075102.tif 000009
【図８】
2019075102.tif 000010
【図９】
2019075102.tif 000011
【図１０】
2019075102.tif 000012
【外国語明細書】
2019075102000001.pdf