(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-07
(45)【発行日】2023-08-16
(54)【発明の名称】3次元シーンのビジビリティ関数
(51)【国際特許分類】
G06T 15/00 20110101AFI20230808BHJP
【FI】
G06T15/00 501
【外国語出願】
(21)【出願番号】P 2018240176
(22)【出願日】2018-12-21
【審査請求日】2021-12-08
(32)【優先日】2017-12-24
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】500102435
【氏名又は名称】ダッソー システムズ
【氏名又は名称原語表記】DASSAULT SYSTEMES
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】ジル ローラン
(72)【発明者】
【氏名】シリル ドラランドル
(72)【発明者】
【氏名】タミー ブブクール
【審査官】中田 剛史
(56)【参考文献】
【文献】特開2008-250577(JP,A)
【文献】特表2016-520908(JP,A)
【文献】池田 拓也,RGB-Dカメラと鏡面球を用いた可視性関数の推定と人物のRe-lightingへの応用,情報処理学会研究報告 2012(平成24)年度▲5▼ [CD-ROM] ,日本,一般社団法人情報処理学会,2013年03月04日,3~4ページ
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/00
(57)【特許請求の範囲】
【請求項1】
3次元(3D)シーンのビジビリティ関数を計算する、コンピュータ実装される方法であって、
- 前記3Dシーン内において、方向(
【数1】
)のセットを提供するステップ(S10)と、
- 前記セットの方向毎に、前記方向に平行な直線のセットを計算するステップ(S20)と、
- 直線の計算されたセット毎に、前記セットの前記直線をサンプリングして空間セグメントにするステップ(S30)と、
- セットの各直線をビットフィールドと関連付けるステップであって、前記直線の各空間セグメントは、前記ビットフィールドのビットに対応する、ステップ(S40)と、
- 直線の前記セットと前記3Dシーンとを重ね合わせるステップ(S50)と、
- 直線の空間セグメントが、前記3Dシーン内の幾何形状と交わるとき、前記直線と関連付けられた前記ビットフィールドの、前記空間セグメントに対応する前記ビットをマークするステップ(S60)と、
- クエリセグメントを定義する、前記3Dシーン内の2つの点を提供するステップ(S70)と、
- 前記クエリセグメントに対して最も近い整列を有する、1つまたは複数の空間セグメントを識別するステップ(S80)と、
- 前記1つまたは複数の識別された空間セグメントが属する前記直線の1つまたは複数のビットフィールドに対して、論理ビット演算を実行することによって、前記クエリセグメントのビジビリティを計算するステップ(S90)と
を含む、コンピュータ実装される方法。
【請求項2】
論理ビット演算を実行することは、関数R=(X-1) NAND (Y-1) AND Dを計算することによって、セグメント[X Y]に対して論理ビットを実行することを含み、ここで、
Xは、前記クエリセグメントの前記2つの点の一方において1になるように設定され、他のすべての場所において0になるように設定される、前記ビットフィールドのうちの1つまたは複数であり、
Yは、前記クエリセグメントの前記2つの点の他の一方において1になるように設定され、他のすべての場所において0になるように設定される、前記ビットフィールドのうちの1つまたは複数であり、
Dは、前記1つまたは複数の識別された空間セグメントが属する前記直線の1つまたは複数のビットフィールドである
請求項1に記載のコンピュータ実装される方法。
【請求項3】
前記3Dシーン内において、方向のセットを提供するステップは、単位半球(H)のパラメータ化を量子化するステップを含む請求項1または2に記載のコンピュータ実装される方法。
【請求項4】
単位半球(H)のパラメータ化を量子化するステップは、前記半球の8面体マッピングを実行するステップを含む請求項3に記載のコンピュータ実装される方法。
【請求項5】
方向(
【数2】
)に対して計算される前記平行な直線は、前記方向に直交する平面上のグリッドから計算される請求項1乃至4のいずれか一項に記載のコンピュータ実装される方法。
【請求項6】
前記平面上の前記グリッドは、規則的なグリッドであり、前記グリッドは、各方向に直交する各平面について同じである請求項5に記載のコンピュータ実装される方法。
【請求項7】
- 平面毎に、前記平面上の前記グリッドの位置を定義するための局所基底を計算するステップであって、前記局所基底は、前記方向(
【数3】
)から獲得される第1のベクトルと、前記平面の前記局所基底である、
第2のベクトル(
【数4】
)および第3のベクトル(
【数5】
)とを含む、ステップ
をさらに含む請求項5または6に記載のコンピュータ実装される方法。
【請求項8】
前記第2のベクトル(
【数6】
)および前記第3のベクトル(
【数7】
)は、前記方向(
【数8】
)に対して連続依存性をもつ請求項
7に記載のコンピュータ実装される方法。
【請求項9】
前記方向(
【数9】
)に対する前記連続依存性は、
【数10】
【数11】
によって与えられ、ここで、
Hは、単位半球であり、
Fは、与えられた方向(
【数12】
)についての接空間を定義し、
(x,y,z)は、前記単位半球の前記
局所基底における座標である
請求項8に記載のコンピュータ実装される方法。
【請求項10】
前記クエリセグメントに対して最も近い整列を有する、1つまたは複数の空間セグメントを識別するステップは、
- 方向の前記セットのうちの最も近い方向を決定するステップと、
- 前記決定された最も近い方向と関連付けられ
た平面を決定するステップと、
- 前記クエリセグメントを前記決定された平面上に投影するステップと、
- 前記投影されたクエリセグメントに最も近い直線を決定するステップと
を含む請求項1乃至9のいずれか一項に記載のコンピュータ実装される方法。
【請求項11】
提供された方向に対する直線の計算されたセットの各直線は、前記方向に直交する前記平面上のピクセルであり、前記提供された方向に対する直線の前記セットは、前記平面上のピクセルからなるグリッドを形成し、前記投影されたクエリセグメントに最も近い前記直線を決定するステップは、
- 前記投影されたクエリセグメントによって交わられる、前記平面の前記ピクセルを決定するステップであって、投影されたクエリセグメントは、前記平面上において、連続するピクセルのセットを形成する、ステップを含む
請求項10に記載のコンピュータ実装される方法。
【請求項12】
方向の前記セットのうちの前記最も近い方向を決定するステップは、
- 前記クエリセグメントの方向を計算し
、単位半球(H)
のパラメータ化におけ
るセグメントの位置を計算するステップと、
- 前記単位半球(H)の前記パラメータ化における前記セグメントの前記位置に最も近い、方向の前記セットのうちの方向を選択するステップと
を含む請求項10または11に記載のコンピュータ実装される方法。
【請求項13】
クエリセグメントを提供する前に、
- ビューポートをスーパーピクセルのセットに細分化するステップであって、スーパーピクセルは、前記ビューポートの連続するピクセルからなるグループである、ステップと、
- スーパーピクセル毎に、前記スーパーピクセルをなすピクセルからなる1つまたは複数のクラスタを計算するステップであって、計算された各クラスタは、1つの共通するピクセルパラメータを有するピクセルを含む、ステップと、
- クラスタ毎に、前記クラスタをなす前記ピクセルの少なくとも1つのパラメータの平均値を表すサンプルを計算し、前記計算されたサンプルのリファレンスを、そこから前記クラスタが計算された前記スーパーピクセルに追加するステップと
をさらに含み、
セグメントクエリの前記ビジビリティの前記計算の後に、
- 前記ビューポートのピクセル毎に、前記ピクセルが属する前記スーパーピクセルのすべての前記サンプルについての加重和を計算することによって、前記ビューポートのあらゆるピクセルについての最終画像を再構成するステップ
をさらに含む請求項1乃至12のいずれか一項に記載のコンピュータ実装される方法。
【請求項14】
請求項1乃至13のいずれか一項に記載の方法を実行するための命令を含むコンピュータプログラム。
【請求項15】
メモリ
と、グラフィック処理ユニットを有するグラフィカルカード
とに結合されたプロセッ
サを備え、前記メモリは
、請求項1乃至13のいずれか一項に記載の方法を前記プロセッサに実行させるためのコンピュータプログラムをその上に記録したシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータプログラムおよびシステムの分野に関し、より詳細には、3次元(3D)シーンのビジビリティ関数を計算する方法、システム、およびプログラムに関する。
【背景技術】
【0002】
現代のレンダリングアプリケーションにおける写実性は、特にリアルタイムシナリオについて、あらゆる種類のきわめて重要な問題を伴った、画像品質に関するますます多くの要件を誘発している。リアルタイムシナリオは、シーンのリアルタイムレンダリングを含む。「リアルタイム」とは、既存のハードウェア上において、数ミリ秒(一般に100ms未満)で実行されることができる技法のことである。「シーン」は、レンダリングを定義する、幾何形状、マテリアル、光、およびカメラのセットである。レンダリング方程式のリアルタイム近似解に関連する、ほとんどの問題の核心に存在しているので、汎用的で効率的なビジビリティクエリメカニズムは、相変わらず、リアルタイムレンダリングエンジンの最も重要な構成要素の1つである。汎用的で効率的なビジビリティクエリメカニズムは、空間内において点のペアを取り、これら2つの点によって形成されるセグメントと交わる、シーン内の既存の幾何形状が存在する場合かつその場合に限って、真を返す、関数である、「大域的ビジビリティ」関数を有する必要がある。「ビジビリティクエリ」は、2つの与えられた点についての、大域的ビジビリティ関数の評価である。
【0003】
リアルタイムシナリオにおいて、大域的ビジビリティ計算問題を取り扱うことを目的とする、いくつかの既存の技法を次に説明する。それらのほとんどは、レイマーチング(raymarching)技法に基づいている。レイマーチングは、光線とシーンとの交わりを計算することを目的とする技法であり、以下のように機能する。レイマーキングは、シーンをサンプリングすること、およびセグメントのトレース、すなわち、おそらくはセグメントと交わるデータ構造内のサンプルのセットを計算するための、効率的なメカニズムを提供することの両方ができる、データ構造を必要とする。サンプルは、このデータ構造の要素であり、局所的な再構成シーンを構築することを可能にする、このサンプルに関連付けられたディスクリプタのセットを含み、局所的な再構成は、必ずしも正確ではない。
【0004】
アルゴリズムは、以下のように動作する。最初に、シーンが、データ構造内でサンプリングされる。その後、ビジビリティクエリがトリガされ、点のペア毎に、セグメントのトレースが計算され、トレース内のサンプル毎に、セグメントとシーンの再構成との間における交わりテストが、対応するディスクリプタを使用して計算される。次に、すべての交わり(intersection)テストの関数(しばしば、第1の交わりの距離)である値が返される。
【0005】
しかしながら、レイマーチング技法に依存する既知の解法は、いくつかの難点に悩まされる。今日のハードウェアによって提供される、強化された計算力にもかかわらず、従来の手法は、新たなアーキテクチャの観点から見て、常に自然に適合するとは限らず、それらの計算能力全体を利用することにしばしば失敗し、またはシングルビュービジビリティ決定など、非常に特定的な使用に制限される。加えて、従来の手法が依存するデータ構造は、ビジビリティ関数が実行されるときに、多くのメモリアクセスを必要し、特に、これらのデータ構造は、多くのポインタを含む。しかしながら、メモリアクセスは、リアルタイムレンダリングにとってきわめて重要な、ビジビリティ関数の実行時間を増加させる。
【0006】
こうした状況において、3Dシーンのビジビリティ関数を計算する改善された方法に対する必要性が依然として存在する。
【先行技術文献】
【特許文献】
【0007】
【非特許文献】
【0008】
【文献】Olsson et. al. “Clustered deferred and forward shading”.In Proceedings of the Fourth ACM SIGGRAPH/Eurographics conference on High-Performance Graphics (pp.87-96). Eurographics Association
【文献】Kopf et al. “Joint bilateral upsampling”. In ACM Transactions on Graphics (ToG) (Vol.26, No.3, p.96)
【発明の概要】
【0009】
したがって、3次元(3D)シーンのビジビリティ関数を計算するコンピュータ実装される方法が提供される。方法は、
-3Dシーン内において、方向(
【0010】
【0011】
)のセットを提供するステップと、
-セットの方向毎に、方向に平行な直線のセットを計算するステップと、
-直線の計算されたセット毎に、セットの直線をサンプリングして空間セグメントにするステップと、
- セットの各直線をビットフィールドと関連付けるステップであって、直線の各空間セグメントは、ビットフィールドのビットに対応する、ステップと、
- 直線のセットと3Dシーンとを重ね合わせるステップと、
- 直線の空間セグメントが、3Dシーン内の幾何形状と交わるとき、直線と関連付けられたビットフィールドの、空間セグメントに対応するビットをマークするステップと、
- クエリセグメントを定義する、3Dシーン内の2つの点を提供するステップと、
- クエリセグメントに対して最も近い整列を有する、1つまたは複数の空間セグメントを識別するステップと、
- 1つまたは複数の識別された空間セグメントが属する直線の1つまたは複数のビットフィールドに対して、論理ビット演算を実行することによって、クエリセグメントのビジビリティを計算するステップと
を含む。
【0012】
方法は、以下のうちの1つまたは複数を含むことができ、すなわち、
- 論理ビット演算を実行することは、関数R=(X-1) NAND (Y-1) AND Dを計算することによって、セグメント[X Y]に対して論理ビットを実行することを含み、ここで、
Xは、クエリセグメントの2つの点の一方において1になるように設定され、他のすべての場所において0になるように設定される、ビットフィールドのうちの1つまたは複数であり、
Yは、クエリセグメントの2つの点の他の一方において1になるように設定され、他のすべての場所において0になるように設定される、ビットフィールドのうちの1つまたは複数であり、
Dは、1つまたは複数の識別された空間セグメントが属する直線の1つまたは複数のビットフィールドである。
- 3Dシーン内において、方向のセットを提供するステップは、単位半球(H)のパラメータ化を量子化するステップを含む。
- 単位半球(H)のパラメータ化を量子化するステップは、半球の8面体マッピングを実行するステップを含む。
- 方向(
【0013】
【0014】
)に対して計算される平行な直線は、方向に直交する平面上のグリッドから計算される。
- 平面上のグリッドは、規則的なグリッドであり、グリッドは、各方向に直交する各平面について同じである。
- 平面毎に、平面上のグリッドの位置を定義するための局所基底を計算し、局所基底は、方向(
【0015】
【0016】
)から獲得される第1のベクトルと、平面の局所基底である、第2のベクトル(
【0017】
【0018】
)および第3のベクトル(
【0019】
【0020】
)とを含む。
-第2のベクトル(
【0021】
【0022】
)および
第3のベクトル(
【0023】
【0024】
)は、方向(
【0025】
【0026】
)に対して連続依存性をもつ。
-方向(
【0027】
【0028】
)に対する連続依存性は、
【0029】
【0030】
【0031】
によって与えられ、ここで、
Hは、単位半球であり、
Fは、与えられた方向(
【0032】
【0033】
)についての接空間(tangential space)を定義し、
(x,y,z)は、単位半球の基底における座標である。
-クエリセグメントに対して最も近い整列を有する、1つまたは複数の空間セグメントを識別するステップは、-方向のセットのうちの最も近い方向を決定するステップと、-決定された最も近い方向と関連付けられた平面を決定するステップと、-クエリセグメントを決定された平面上に投影するステップと、-投影されたクエリセグメントに最も近い直線を決定するステップとを含む。
- 提供された方向に対する直線の計算されたセットの各直線は、方向に直交する平面上のピクセルであり、提供された方向に対する直線のセットは、平面上のピクセルからなるグリッドを形成し、投影されたクエリセグメントに最も近い直線を決定するステップは、投影されたクエリセグメントによって交わられる、平面のピクセルを決定するステップであって、投影されたクエリセグメントは、平面上において、連続するピクセルのセットを形成する、ステップを含む。
- 方向のセットのうちの最も近い方向を決定するステップは、クエリセグメントの方向を計算し、単位半球(H)のパラメータ化におけるセグメントの位置を計算するステップと、単位半球(H)のパラメータ化におけるセグメントの位置に最も近い、方向のセットのうちの方向を選択するステップとを含む。
- クエリセグメントを提供する前に、-ビューポートをスーパーピクセルのセットに細分化するステップであって、スーパーピクセルは、ビューポートの連続するピクセルからなるグループである、ステップと、-スーパーピクセル毎に、スーパーピクセルをなすピクセルからなる1つまたは複数のクラスタを計算するステップであって、計算された各クラスタは、1つの共通するピクセルパラメータを有するピクセルを含む、ステップと、-クラスタ毎に、クラスタをなすピクセルの少なくとも1つのパラメータの平均値を表すサンプルを計算し、計算されたサンプルのリファレンスを、クラスタが計算されたスーパーピクセルに追加するステップとを含み、またセグメントクエリのビジビリティの計算の後に、-ビューポートのピクセル毎に、ピクセルが属するスーパーピクセルのすべてのサンプルについての加重和を計算することによって、ビューポートのあらゆるピクセルについての最終画像を再構成するステップをさらに含む。
【0034】
方法を実行するための命令を含むコンピュータプログラムが、さらに提供される。
【0035】
コンピュータプログラムをその上に記録したコンピュータ可読記憶媒体が、さらに提供される。
【0036】
グラフィック処理ユニットを有するグラフィカルカードに結合されたプロセッサと、コンピュータプログラムをその上に記録したメモリとを備えるシステムが、さらに提供される。
【図面の簡単な説明】
【0037】
本発明の実施形態が、非限定的な例を用い、添付の図面を参照して、今から説明される。
【
図2】方法の例を実行するためのシステムの例を示す図である。
【
図3】
図1のステップS10からS80の例を示す図である。
【
図4】
図1のステップS10からS80の例を示す図である。
【
図5】
図1のステップS10からS80の例を示す図である。
【
図6】
図1のステップS10からS80の例を示す図である。
【
図7】
図1のステップS10からS80の例を示す図である。
【
図8】
図1のステップS10からS80の例を示す図である。
【
図10】
図1のステップS90の例を示す図である。
【
図11】
図1のステップS90の例を示す図である。
【
図12】
図1のステップS90の例を示す図である。
【
図13】
図1のステップS90の例を示す図である。
【発明を実施するための形態】
【0038】
図1のフローチャートを参照すると、3次元(3D)シーンのビジビリティ関数を計算するコンピュータ実施される方法が提案される。ビジビリティ関数は、空間内において点のペアを取り、これら2つの点によって形成されるセグメントと交わる、シーン内の既存の幾何形状が存在する場合にかつその場合に限って、真を返す関数である。方法は、最初にすべての方向においてボクセル化を実行する。ボクセル化はボクセルのセットを生成するプロセスであり、ボクセルは、基礎をなすシーンのディスクリプタを記憶する体積要素のセットである。これは、3Dシーン内において、方向のセットを提供することによって達成される。その後、セットの方向毎に、直線のセットが計算され、セットの直線は方向に平行である。次に、直線の計算されたセット毎にセットの直線がサンプリングされて、空間セグメントにされる。直線のセットの各直線は、ビットフィールドと関連付けられ、直線の各空間セグメントはビットフィールドのビットに対応する。その後、直線のセットと3Dシーンとが重ね合わされる。直線の空間セグメントが3Dシーン内の幾何形状と交わるとき、直線と関連付けられたビットフィールドの空間セグメントに対応するビットが、マークされる。その後、方法はビジビリティクエリを実行する。2つの点が、3Dシーン内において提供される。2つの点は、クエリセグメントを定義する。1つまたは複数の空間セグメントが識別され、識別された空間セグメントは、クエリセグメントに対して最も近い整列を有する。識別された1つまたは複数の空間セグメントが属する直線の1つまたは複数のビットフィールドに対して、論理ビット演算を実行することによって、クエリセグメントのビジビリティが計算される。
【0039】
そのような方法は、3次元(3D)シーンのビジビリティ関数の計算を改善する。特に、方法は、きめ細かい並列グラフィックスアーキテクチャに適合される、近似的ではあるが効率的な2点間ビジビリティモデルを提供する。実際に、方法は、適切なパラメータ化で定義された多くの量子化された方向に沿ってリアルタイムに計算される粗いボクセル化のセットに基づいている。量子化は、半球に対してだけ実行され、それが情報の冗長性を回避し、これがデータ構造のサイズを減少させ、結果としてデータ構造に対するアクセス時間も減少させる。任意の長いステップを有することがある標準的な手法とは対照的に、ビジビリティクエリは、レイマーチングステップの最小数を実現することによって、僅かな一定時間で、達成されることができる。方法は、いかなる事前計算も行わない、ソフトシャドウ、アンビエントオクルージョン、および画像ベースのライティングを含む、いくつかのアプリケーション上において効率的な方法であることができる。
【0040】
方法は、コンピュータ実装される。これは、方法のステップ(または実質的にすべてのステップ)が、少なくとも1つのコンピュータまたは同様の任意のシステムによって実行されることを意味する。したがって、方法のステップは、コンピュータによって、おそらくは完全に自動的に、または半自動的に実行される。例において、方法のステップのうちの少なくともいくつかのトリガリングは、ユーザ-コンピュータ対話を通して、実行されることができる。必要とされるユーザ-コンピュータ対話のレベルは、ユーザの望みを実装するための必要性とバランスが取られる、予想される自動性のレベルに依存することができる。例において、このレベルは、ユーザ定義および/または事前定義されることができる。
【0041】
方法のコンピュータ実装の典型的な例は、この目的のために適合されたシステムを用いて、方法を実行することである。システムは、メモリに結合されたプロセッサを備えることができ、メモリは、方法を実行するための命令を含むコンピュータプログラムをその上に記録している。メモリは、データベースも記憶することができる。メモリは、そのような記憶のために適合された任意のハードウェアであり、おそらくは、いくつかの物理的に異なる部分(例えば、1つはプログラム用、おそらくは、1つはデータベース用)を含む。データベースは、ビジビリティ関数がそれのために計算される、3Dシーンを記憶することができ、例えば、データベースは、シーンをなす三角形のセットを記憶する。メモリは、方法によって計算されたデータ構造、例えば、すべての方向におけるボクセル化の結果を記憶することができる。
【0042】
「データベース」とは、検索および取り出しのために編成されたデータ(すなわち、情報)の任意の集合を意味する(例えば、事前決定された構造化言語、例えば、SQLに基づいた、例えば、リレーショナルデータベース)。メモリ上に記憶されているとき、データベースは、コンピュータによる迅速な検索および取り出しを可能にする。データベースは、実際に、様々なデータ処理操作と連携する、データの記憶、取り出し、変更、および削除を容易にするように構築される。データベースは、レコードに分解されることができるファイル、またはファイルのセットからなることができ、レコードの各々は、1つまたは複数のフィールドからなる。フィールドは、データ記憶の基本ユニットである。ユーザは、主にクエリを通して、データを取り出すことができる。キーワードおよびソーティングコマンドを使用して、ユーザは、データに特定の集計を施したレポートを取り出す、または生成するために、使用されているデータベース管理システムのルールに従って、多くのレコード内のフィールドを迅速に検索し、再配置し、グループ化し、および選択することができる。
【0043】
方法は、一般に、3Dシーンのビジビリティ関数を計算する。3Dシーンは、モデル化されたオブジェクトを含むことができる。モデル化されたオブジェクトは、例えば、データベース内に記憶されたデータによって定義される、任意のオブジェクトである。拡張によって、「モデル化されたオブジェクト」という表現は、データ自体を指定する。システムのタイプに従って、モデル化されたオブジェクトは、異なる種類のデータによって、定義されることができる。システムは、実際に、限定されることなく、CADシステム、CAEシステム、CAMシステムの任意の組み合わせであることができる。CADシステムによって、CATIAなどの、モデル化されたオブジェクトのグラフィカル表現に基づいて、モデル化されたオブジェクトを少なくとも設計するように適合された、任意のシステムが、さらに意味される。この場合において、モデル化されたオブジェクトを定義するデータは、モデル化されたオブジェクトの表現を可能にするデータを含む。CADシステムは、例えば、ある場合において、面分または表面を伴う、辺または線を使用する、モデル化されたCADオブジェクトの表現を提供することができる。線、辺、または面は、様々な方式で、例えば、非一様有理Bスプライン(NURBS)で、表現されることができる。具体的には、CADファイルは、そこから幾何形状が生成されることができ、ひいては、表現が生成されることを可能にする仕様を含む。モデル化されたオブジェクトの仕様は、単一のCADファイルまたは複数のそれらの中に、記憶されることができる。CADシステムにおけるモデル化されたオブジェクトを表現するファイルの典型的なサイズは、パーツあたり1メガバイトの範囲内にある。モデル化されたオブジェクトは、一般に、数千のパーツからなる組立体であることができる。
【0044】
CADの文脈において、モデル化されたオブジェクトは、一般に、例えば、パーツもしくはパーツの組立体などの製品、または場合によっては、製品の組立体を表す、モデル化された3Dオブジェクトであることができる。「モデル化された3Dオブジェクト」とは、それの3D表現を可能にするデータによってモデル化された、任意のオブジェクトを意味する。3D表現は、すべての角度から、パーツを見ることを可能にする。例えば、モデル化された3Dオブジェクトは、3D表現されたとき、それの軸のいずれかの周りにおいて、または表現が表示されるスクリーン内のいずれかの軸の周りにおいて、操作されること、および回転させることができる。これは、特に、3Dモデル化されていない、2Dアイコンを除外する。3D表現の表示は、設計を容易にする(すなわち、統計的に、設計者が彼らの仕事を達成するスピードを増加させる)。製品の設計は、製造プロセスの一部であるので、これは、業界における製造プロセスをスピードアップさせる。
【0045】
モデル化された3Dオブジェクトは、例えば、CADソフトウェアソリューションまたはCADシステムを用いた、仮想設計の完了後に、(例えば、機械的)パーツもしくはパーツの組立体(もしくは、パーツの組立体は、方法の観点からは、パーツ自体と見なされることができ、もしくは方法は、組立体の各パーツに独立して適用されることができるので、等価的に、パーツの組立体)、またはより一般的に、任意の剛体組立体(例えば、移動機構)などの、現実世界において製造される製品の幾何形状を表すことができる。CADソフトウェアソリューションは、航空宇宙、建築、建設、消費財、ハイテクデバイス、産業機器、輸送、海事、および/または海底石油/ガス産出もしくは輸送を含む、様々な非限定的な産業分野において、製品の設計を可能にする。したがって、方法によって設計されるモデル化された3Dオブジェクトは、(例えば、自動車および軽トラック機器、レーシングカー、オートバイ、トラックおよびモータ機器、トラックおよびバス、列車を含む)陸上乗物用パーツ、(例えば、機体機器、航空宇宙機器、推進機器、防衛製品、航空機機器、宇宙機器を含む)航空乗物用パーツ、(例えば、海軍機器、商船、沖合機器、ヨットおよび作業船、海事機器を含む)海上乗物用パーツなどの、任意の機械用パーツ、(例えば、産業製造機械、移動重機械または機器、設置された機器、産業機器製品、組立金属製品、タイヤ製造製品を含む)一般機械用パーツ、(例えば、家電製品、セキュリティおよび/または制御および/または計装製品、コンピューティングおよび通信機器、半導体、医療デバイスおよび機器を含む)電気機械または電子的パーツ、(例えば、家具、住宅および園芸製品、レジャーグッズ、ファッション製品、耐久消費財小売製品、非耐久消費財小売製品を含む)消費財、(例えば、食品および飲料および煙草、美容およびパーソナルケア、家庭用品パッケージングを含む)パッケージングであることができる、産業製品を表すことができる。
【0046】
図2は、システムの例を示しており、システムは、クライアントコンピュータシステム、例えば、リアルタイムに3Dシーンをレンダリングするために使用される、ユーザのワークステーションである。
【0047】
例示のクライアントコンピュータは、内部通信バス1000に接続された中央処理ユニット(CPU)1010と、やはりバスに接続されたランダムアクセスメモリ(RAM)1070とを備える。クライアントコンピュータは、バスに接続された、ビデオランダムアクセスメモリ1100と関連付けられた、グラフィカル処理ユニット(GPU)1110をさらに提供される。ビデオRAM1100は、当技術分野において、フレームバッファとしても知られている。大規模記憶デバイスコントローラ1020は、ハードドライブ1030などの、大規模メモリデバイスへのアクセスを管理する。コンピュータプログラム命令およびデータを有形に具現化するのに適した大規模メモリデバイスは、例として、EPROM、EEPROM、およびフラッシュメモリデバイスなどの、半導体メモリデバイス、内部ハードディスクおよびリムーバブルディスクなどの、磁気ディスク、光磁気ディスク、ならびにCD-ROMディスク1040を含む、すべての形態の不揮発性メモリを含む。上記のいずれもが、特別に設計されたASIC(特定用途向け集積回路)によって補完されること、またはその中に組み込まれることができる。ネットワークアダプタ1050は、ネットワーク1060へのアクセスを管理する。クライアントコンピュータは、カーソル制御デバイスまたはキーボードなどの、ハプティックデバイス1090も含むことができる。カーソル制御デバイスは、ユーザが、カーソルをディスプレイ1080上の任意の所望の位置に選択的に位置付けることを可能にするために、クライアントコンピュータにおいて使用される。加えて、カーソル制御デバイスは、ユーザが、様々なコマンドを選択し、制御信号を入力することを可能にする。カーソル制御デバイスは、制御信号をシステムに入力するためのいくつかの信号生成デバイスを含む。一般に、カーソル制御デバイスは、マウスであることができ、信号を生成するために、マウスのボタンが使用される。あるいは、または加えて、クライアントコンピュータシステムは、センシティブパッドおよび/またはセンシティブスクリーンを備えることができる。
【0048】
コンピュータプログラムは、コンピュータによって実行可能な命令を含むことができ、命令は、上述のシステムに方法を実行させるための手段を含む。プログラムは、システムのメモリを含む、任意のデータ記憶媒体上に記録可能であることができる。プログラムは、例えば、デジタル電子回路で、またはコンピュータハードウェア、ファームウェア、ソフトウェア、もしくはそれらの組み合わせで、実装されることができる。プログラムは、装置として、例えば、プログラム可能なプロセッサによって実行される、マシン可読記憶媒体内において有形に具現化された製品として、実装されることができる。方法ステップは、入力データを操作し、出力を生成することによって、方法の機能を実行するために、命令からなるプログラムを実行する、プログラム可能なプロセッサによって実行されることができる。したがって、プロセッサは、プログラム可能であり、データ記憶システム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスから、データおよび命令を受信し、それらにデータおよび命令を送信するように結合されることができる。アプリケーションプログラムは、高水準手続き型もしくはオブジェクト指向プログラミング言語で、または望ましい場合は、アセンブリもしくは機械語で実装されることができる。いずれの場合においても、言語は、コンパイル型言語、またはインタープリタ型言語であることができる。プログラムは、フルインストールプログラム、またはアップデートプログラムであることができる。システムに対するプログラムの適用は、いずれの場合においても、方法を実行するための命令を生じさせる。
【0049】
次に
図1を参照し、3Dシーンのビジビリティ関数を計算するための方法の例を説明する。ビジビリティ関数は、空間内において点のペアを取り、これら2つの点によって形成されるセグメントと交わる、シーン内の既存の幾何形状が存在する場合かつその場合に限って、真を返す、関数である。
【0050】
ステップS10において、方向のセットが、3次元(3D)シーン内において、提供される。これは、方向を計算するシステムによって実行される。方向は、3Dシーンの参照フレームに関して推測され、方向ベクトルによって表されることができる。3Dシーンの参照フレームは、当技術分野において知られているように、3Dシーンのオブジェクトの位置および/または配向を計算するために、使用される。方向のセットを提供する例が、本明細書のこれ以降において説明される。
【0051】
シーンは、一般に、幾何形状、マテリアル、光、およびカメラなど、オブジェクトのセットを含む。シーンは、3次元であり、これは、オブジェクトが、3D空間内に配置され、オブジェクトの位置が、3つのパラメータによって決定されることを意味する。例において、3Dシーンは、3次元ユークリッド空間であることができる。例において、3Dシーンは、三角形のセットと、1つまたは複数の直接的な光源とを含むことができる。
【0052】
例において、3Dシーンの生データ(少なくとも、三角形のセット)は、方向のセットと一緒に、提供されることができる。3Dシーンの生データは、本開示の方法の例を実装する、システムおよび/またはプログラムによって、アクセスされることができる。例において、3Dシーンは、当技術分野において知られているように、アプリケーションの要求時に、表示される画像を生成するフレームワークである、レンダラエンジン内にロードされることができる。例えば、CADシステムのCADアプリケーションは、レンダラエンジンに、入力として、モデル化された3Dオブジェクトからなる3Dシーンを提供し、レンダラエンジンは、CADシステムの1つまたは複数のグラフィックカードを使用して、スクリーンに3Dシーンを描画する。3Dシーンの三角形は、メッシュを形成し、例えば、3Dシーンのモデル化されたオブジェクトは、当技術分野において知られているように、相互接続された三角形によって表される。
【0053】
例において、方向のセットは、空の3Dシーン(すなわち、いかなる生データもない3Dシーン)において、提供されることができる。
【0054】
次に、方向のセットを提供する(S10)の例を説明する。単位半球が、3Dシーン内において、提供される。半球が、単位であるとは、そこから半球-球の半分-が獲得される球の中心から、半球の表面に属する任意の点まで延びるベクトルが、長さ1のノルムが定義されたベクトルであることを意味する。したがって、単位半球は、3Dシーン内において空間方向を指定するために、使用され、一意的な各方向は、単位球上の点に数値的に等価である。単位半球は、3Dシーンの中央に配置されることができ、これは、そこから半球が獲得される球の中心が、3Dシーンの中央に配置されることを意味する。
【0055】
一旦提供されると、単位半球は、パラメータ化される。パラメータ化は、当技術分野において知られているように、実行され、半球のパラメータ化は、球のパラメータ化に類似している。例において、パラメータ化は、半球の8面体マッピングを実行することを含む。8面体マッピングの使用は、すべての方向において、ボクセル化のプロセス中に計算される、データ構造の効率的なランダムアクセスを維持しながらも、過剰な歪みのない、(a,b)∈[-1,1]2から半球へのマッピングを可能にする。その後、半球のパラメータ化は、量子化される。値(a,b)は、8面体の投影場所上における2次元(2D)座標を表し、選択される。これは、要するに、8面体の2D投影面上における座標が、選択されるということである。選択された各座標(a,b)は、単位半球の長さ1のノルムが定義されたベクトルによって表される、3Dシーン内の(
【0056】
【0057】
と記される)方向に対応する。
【0058】
図15から
図17は、上で説明した例を示しており、方向のセットが、半球の8面体マッピングを使用して、単位半球(H)のパラメータ化を量子化することによって、提供される。
図15から
図17を明瞭にするために、単位半球の代わりに、単位球が、表されている。3Dシーン内における方向のセットは、単位半球の代わりに、単位球のパラメータ化を量子化することによって、提供されることができることが、理解されるべきであり、既知の方向から反対方向を計算することは、簡単であるので、半球の使用は、計算の冗長さを回避する。
【0059】
【0060】
【0061】
を伴った、単位(半)球(H)の例を示している。
【0062】
図16は、上半球(H)の8面体パラメータ化の例を示している。
【0063】
図17は、投影面内のドット、例えば、ドット180に対応する、量子化された方向の例を示している。したがって、方向の2Dマップが、提供される。この例において、半球上における方向の分布が、規則的であるように、量子化された方向のセットは、規則的なグリッドを形成する。図を明瞭にするために、方向を表す点の数は、制限されている。方向の数は、好ましくは、64以上1024以下の間に含まれ、方向の数が多くなるほど、ボクセル化がより正確になることが理解されよう。したがって、方向の数は、1024よりも多いこと、例えば、2048、4096、...であることができる。
【0064】
図1を再び参照すると、提供された(または計算された)方向毎に、直線のセットが、計算される(S20)。直線のセットの直線は、与えられた方向に平行である。平行とは、セットの第1の直線上のあらゆる点が、セットの第2の直線から正確に同じ最小ユークリッド距離に配置されることを意味する。
【0065】
例において、システムによる、方向に対する直線のセットの計算は、方向(
【0066】
【0067】
)毎に、方向に直交する平面を計算することによって実行されることができる。直線のセットの直線は、この平面に直交する。平面は、グリッドを含むことができ、グリッドは、平面上にロケーションのセットを定義し、それをセットの計算された直線が、実際には、1つのロケーションを1つの直線が通過する。
【0068】
例において、平面のグリッドは、規則的なグリッドである。規則的なグリッドを使用することは、ロケーションの計算を、また同様に、ロケーションを通過する直線の計算をより容易にする。
【0069】
例において、グリッドは、方向と関連付けられたすべての平面について同一である。例えば、グリッドのピッチは、すべてのグリッドについて同じである。
【0070】
【0071】
【0072】
について、半球(H)に対する接空間(F)が、計算される。接空間(F)は、与えられた方向に直交し、この空間上において、規則的なグリッドが計算され、したがって、規則的なグリッドを有する平面が提供される。すべてが(F)に直交する、平行な直線のセットが、計算され、各直線は、グリッドのロケーションを通過する。以下で説明されるように、Fに対して整列させられたシーンのボクセル化が、計算されることができる。グリッドのサイズは、3Dシーンのすべての幾何形状のボクセル化が実施されることができるように選択されることができる。
【0073】
与えられた方向に直交する、接空間Fの使用は、位置の無限性を有し、ビジビリティクエリのときに(S70~S90)、歪みを導入することがある。しかしながら、Fの定義についての一意的で自明なソリューションは存在しない。以下は、この歪みの問題をいかにして最小化するかを示している。
【0074】
例において、各平面は、平面上においてグリッドの位置を定義するための局所基底を含む。グリッドの位置を定義する局所基底は、3つのベクトルを含む。第1のベクトルは、方向(
【0075】
【0076】
)から獲得され、第2のベクトル(
【0077】
【0078】
)および第3のベクトル(
【0079】
【0080】
)は、平面の局所基底である。平面上においてグリッドの位置を定義する局所基底は、好ましくは、正規直交座標系である。いずれの平面のグリッドの配向も、ここで識別されることができる。
【0081】
例において、第2のベクトル(
【0082】
【0083】
)および第3のベクトル(
【0084】
【0085】
)は、方向(
【0086】
【0087】
)に対して連続依存性をもつ。すなわち、方向
【0088】
【0089】
毎に、連続的直交枠(continuous orthogonal frame)
【0090】
【0091】
が、定義される。連続的直交枠は、北極については、恒等式に等しく、子午線沿いにおいて、球に対して一定である。我々が提案する、使用される枠は、ωが北極に等しいときは、標準基底を用いて識別し、極と異なる任意のω値については、北極およびωを通過する子午線に平行な回転を適用して、北極をω上に送る、適用から来ている。したがって、平面のグリッドは、第1の方向から、第1の方向の隣の方向である第2の方向に移るときに、半球上において連続的変化を有する。
【0092】
例において、第2のベクトル(
【0093】
【0094】
)および第3のベクトル(
【0095】
【0096】
)の方向(
【0097】
【0098】
)に対する連続依存性(continuous dependence)は、以下のパラメータ化によって与えられ、
【0099】
【0100】
【0101】
ここで、Hは、単位半球であり、Fは、与えられた方向(
【0102】
【0103】
)についての接空間を定義し、(x,y,z)は、単位半球の基底における座標である。したがって、計算された(S20)各直線は、空間内において、4つの成分
【0104】
【0105】
を用いて、識別されることができ、ここで、(a,b)は、方向
【0106】
【0107】
を定義し、(u,v)は、対応する枠
【0108】
【0109】
内における位置を定義する。
【0110】
図1を再び参照すると、計算された直線がサンプリングされる(S30)。言い換えると、直線の各セットの各直線は、空間セグメントと呼ばれるいくつかのセグメントに細分化される。空間セグメントを計算するこの操作は、当技術分野において知られているように実行される。
【0111】
その後、ステップS40において、直線の各セットの各直線は、ビットフィールドと関連付けられ、各直線の各空間セグメントは、ビットフィールドのビットに対応する。ビットフィールドは、メモリ内に記憶されるデータ構造である。ビットフィールドは、ビットの系列を保持するように割り当てられた、いくつかの隣接するコンピュータメモリロケーションを含む。直線をビットフィールドに関連付けることは、方法を実行するシステムが、メモリ内において、与えられた直線についてのビットの系列(すなわち、ビットフィールド)を識別することができることを意味する。関連付けは、当技術分野において知られているように、例えば、ポインタの使用によって実行される。
【0112】
その後、直線のセットと3Dシーンとが、重ね合わされる(S50)。直線が、サンプリングされているので、これは、要するに、直線のセットの直線の空間セグメントが、3Dシーンと重ね合わされるということである。セットの直線と3Dシーンとを重ね合わせることは、3Dの三角形のセットの生データと、空間セグメントの生データとが、3Dシーン内において、すべて一緒になることを含む。したがって、両方の生データを必要とする計算ステップがここで実行されることができる。
【0113】
次に、システムは、3Dシーン内の幾何形状と空間セグメントとの間の交わりを決定する。交わりの決定は、当技術分野において知られているように実行される。空間セグメントと3Dシーン内の幾何形状との間の交わりが、決定された(すなわち、交わりが、計算された)とき、空間セグメントに対応するビットがマークされる(S60)。したがって、直線のセットのうちの交わる直線のビットフィールドがマークされる。ビット(および拡張によって、ビットフィールド)をマークすることは、ビットの値が、設定される、例えば、加算または変更されることを意味し、実際には、「空の」ビットは、当技術分野において知られているように、メモリ内に存在しないので、ビットフィールドのすべてのビットは値と関連付けられ、例えば、直線に関連付けられたビットフィールドは、各ビットとも値「0」を有するように初期化される。
【0114】
図3から
図6は、
図1のS10からS60に関連して説明したような、3Dシーンのパラメータ化およびボクセル化の例を示している。適切なパラメータ化において定義された多くの量子化された方向に沿ってリアルタイムに計算された粗いボクセル化のセットに基づいて、マップのセットが獲得され、マップは、方向の1つに沿ったボクセル化を表す。したがって、方向毎に、この方向に直角の正投影マップが、生成され、マップの各ピクセルは、1次元直線に対応する。
図3は、3Dシーン内において方向のセットを提供する(すなわち、計算する)ために使用される、単位(半)球を示している。
図4は、矢印によって表される1つの方向についての、直線のセットの計算を示している。方向に直交する、規則的なグリッドを有する平面が、提供され、グリッドによって提供されるロケーション毎に、方向に平行な直線が、計算される。
図5は、1つの方向に平行な直線のセットの、3Dシーンとの重ね合わせを示している。いくつかの交わりが、検出され、図上において、ドットを用いて表わされており、検出は、交わり計算の結果である。
図6は、コンパクトなビットフィールド表現として記憶される、3Dシーンのボクセル化の例を示している。マップ上の(ピクセルとも呼ばれる)各四角形は、3Dシーンの幾何形状と交わる直線のビットフィールドを表す。したがって、上で説明したパラメータ化に基づいて、マップのセットが、オンザフライで構築される。マップは、2つのステップで計算され、すなわち、(i)8面体投影を使用して、方向のセットが量子化され、投影面内の規則的なグリッドに対して整列させられ、(ii)これらの方向毎に、シーンのボクセル化が計算され、枠パラメータ化Fに対して整列させられ、それをコンパクトなビットフィールド表現として記憶する。
【0115】
図1に戻り、ビジビリティクエリの例を次に説明する(S70~S90)。
【0116】
ステップS70において、クエリセグメントが、3D内において提供される。3D空間内においてセグメントを与えられると、ビジビリティ関数は、このセグメントが幾何形状によって交わられるかどうかを決定する。セグメントは、3D空間内の2つの点によって定義され(かつ区切られ)る。
【0117】
その後、ステップS80において、クエリセグメントに対して最も近い整列を有する、1つまたは複数の空間セグメントが、識別される。「最も近い整列」という表現は、1つまたは複数の識別された空間セグメントが、クエリセグメントの方向と最も良く一致する方向を有することを含む。2つの方向は、これら2つの方向の間の角度が非常に小さい場合、近い。
【0118】
例において、1つまたは複数の空間セグメントの識別は、クエリセグメントの方向に最も近い方向を有する、直線のセットのうちの直線の決定を含むことができる。
【0119】
例において、方向のセットのうちで最も近い方向を有する、直線のセットの直線のうちの直線の識別は、クエリセグメントの8面体投影を使用し、このマッピングにおける最も近いボクセル化をフェッチして、クエリセグメントに対して最も良く整列させられた、量子化された方向を決定することによって、実行されることができる。この場合において、パラメータ化されたクエリセグメントに対して最も良く整列させられた、量子化された方向は、方向の2Dマップ上において、最小距離を有するものである。これは、
図18に示されており、(1つの方向を表す)ドット180は、クエリセグメントの方向を表すドット182に最も近い。ここでは、距離は、ユークリッド距離であるが、任意のタイプの距離が使用されることができることが理解されよう。したがって、(例えば、計算時に)3Dシーン内におけるクエリセグメントの方向が一旦獲得されると、単位半球(H)のパラメータ化におけるクエリセグメントの位置が計算され、単位半球(H)のパラメータ化におけるセグメントの位置に最も近い、方向のセットのうちの方向が選択される。
【0120】
クエリセグメントの方向に最も近い方向を有する、直線のセットのうちの直線が、例えば、単位半球のパラメータ化における距離を測定することによって一旦決定されると、この最も近い方向と関連付けられた平面が、取り出される。これは、当技術分野において知られているように実行され、例えば、ポインタが直線と平面の記憶されたデータとの間のリンクを維持する。
【0121】
その後、クエリセグメントは、クエリセグメントの方向に最も近い方向を有する直線と関連付けられた平面上に投影される。クエリセグメントの平面上への投影は、直交投影である。
図7は、3Dシーン内においてクエリセグメントを定義する2つの点70、72が、ここで表されていることを除いて
図5と同じである。この例において、クエリセグメントは、平面に関連付けられた方向に平行である。
図8は、方向についての3Dシーンのボクセル化を表すマップ上へのクエリセグメントの投影80を示している。この例において、クエリセグメントは、方向に平行であり、クエリセグメントの直交投影は、ただ1つのピクセルを生成する。クエリセグメントが、平面と関連付けられた方向に平行ではない場合、投影されたセグメントは、マップ上において、連続するピクセルのセットを形成する。
【0122】
その後、投影されたクエリセグメントに最も近い直線が、決定される。決定は、クエリセグメントを表すピクセルと、3Dシーンの幾何形状と交わる直線を表すピクセルとの間の距離に基づいて実行される。ここでは、距離は、ユークリッド距離であることができる。1つの直線が、使用されることができる。直線を平均し、2つの方向の間の境界における視覚的アーチファクトを低減させるために、2つ以上の直線が選択されることができる。
【0123】
図1に戻ると、クエリセグメントのビジビリティが、計算される。計算は、1つまたは複数の識別された空間セグメント(それらはクエリセグメントに対して最も近い整列を有する)が属する直線の1つまたは複数のビットフィールドに対して、論理ビット演算を実行することによって実施される。クエリセグメントは、従来通りにレイマーチングされ、論理ビット演算を使用して、クエリセグメントと交差する(cross)(空間セグメントに対応するビットフィールドは、クエリセグメントに対して最も近い整列を有するものとして識別された1つまたは複数の空間セグメントのビットと対照させてテストされる。クエリセグメントに対して最も近い整列を有するものとして識別された1つまたは複数の空間セグメントのビットは、方向についての3Dシーンのボクセル化を表すマップからフェッチされることを理解されたい。平面は、最も近い整列を有する方向と関連付けられるので、平面は、クエリセグメントにほぼ直交する。したがって、レイマーチングは、非常に少ない数のステップをもたらす。さらに、きめ細かい平行スケーラブルの場合、クエリ全体である。
【0124】
例において、セグメント[X Y]に対して実行される、論理ビット演算は、論理演算R=(X-1) NAND (Y-1) AND Dを計算することを含み、ここで、
Xは、クエリセグメントの2つの点の一方において1になるように設定され、他のすべての場所において0になるように設定される、ビットフィールドのうちの1つまたは複数であり、
Yは、クエリセグメントの2つの点の他の一方において1になるように設定され、他のすべての場所において0になるように設定される、ビットフィールドのうちの1つまたは複数である。
Dは、1つまたは複数の識別された空間セグメントが属する直線の1つまたは複数のビットフィールドである。
【0125】
図9から
図13は、論理演算R=(X-1) NAND (Y-1) AND Dの例を示している。
図9には、サンプリングされて空間セグメントにされた直線が表されている。各セグメントに帰される値で、直線のビットフィールドが表されている。値は、「0」になるように設定される。3Dシーンの幾何形状によって交わられるセグメントは、1になるように設定され、すなわち、交わられる空間セグメントに関連付けられたビットはマークされている。
【0126】
図10は、
図9に表されたのと同じ直線を示している。
図10において、直線の1つのセグメントXは、クエリセグメントの2つの点のうちの一方に対して最も近い整列を有するものとして識別されている。直線の第2のセグメントYは、クエリセグメントの2つの点のうちの第2のものに対して最も近い整列を有するものとして識別されている。空間セグメントXおよびYのそれぞれのビットはマークされ、すなわち、それらの値は「1」になるように設定される。その後、
図11に示されるように、逆演算X-1およびY-1が、実行される。結果のRが、
図12に示されるように計算され、この場合、Rは「0」と異なり、点XおよびYは相互に可視ではない。
【0127】
図13は、論理演算R=(X-1) NAND (Y-1) AND Dの別の例を示しており、この場合、Rは「0」に等しく、点XおよびYは相互に可視である。
【0128】
ビジビリティクエリの数が重要なことがある。例えば、低周波数現象のシミュレーションの場合がそうである。例において、クエリの数は、ビューポートをスーパーピクセルのセットに細分化することによって減少させることができる。スーパーピクセルは、ビューポートの連続するピクセルからなるグループである。2つのピクセルは、それらが共通の辺を共有する場合、連続である。実際には、グループ化は、nが整数である、n×nピクセルからなる正方形グループ化であり、例えば、ビューポートの8×8隣接ピクセルからなる正方形グループ化である。このように、スーパーピクセルは、規則的なグリッドに基づいているので、スーパーピクセルの隣接ピクセルは、一定時間で到達されることができる。
【0129】
その後、スーパーピクセル毎に、スーパーピクセルをなすピクセルからなる1つまたは複数のクラスタが計算される。スーパーピクセルをなすピクセルからなるクラスタは、1つの共通するピクセルパラメータを共有するピクセルを含む。ピクセルパラメータは、深度、法線、粗さ、色、...などの、しかし、それらに限定されない、ピクセルの性質を特徴付ける。クラスタの生成は、非特許文献1と同じようにして実行される。
【0130】
クラスタ毎に、クラスタをなすピクセルの少なくとも1つのパラメータの平均値を表すサンプルが計算される。したがって、代表的なサンプルは、クラスタ内部のあらゆるピクセルに「近い」。計算されたサンプルのリファレンスが、そこからクラスタが計算されたスーパーピクセルに追加される。例において、代表的なサンプルを計算するために、重心位置、および平均法線、およびマテリアルが使用される。
【0131】
その後、ピクセルの代わりに、サンプルを用いて、ビジビリティクエリが、計算される。ビジビリティクエリは、S90を参照してすでに説明したように実行される。サンプル毎に反復し、その後、テストされるビジビリティセグメントのセットを定義する光毎に反復する。その後、代表的なサンプル当たり、1つのRGBシェーディング結果が記憶され、したがって、ステップS90の結果が記憶される。
【0132】
その後、ビューポートのピクセル毎に、ピクセルが属するスーパーピクセルのすべてのサンプルについての加重和を計算することによって、ビューポートのあらゆるピクセルについての最終画像が、再構成される。したがって、再構成は、各スーパーピクセルのすべてのサンプルが考慮されることを除いて、非特許文献2において説明しているのと同様の方法で実行される。
【0133】
このようにして、受信機の数が低減され、したがって、計算の数を減らし、パイプラインの効率もそうである。クラスタリング戦略のおかげで、シェーディングにおいて、詳細さは失われない。これは、毛皮、群葉、またはワイヤフェンスなど、変化に富んだ幾何形状を有するシーンにおいて特に明らかである。
【0134】
図14は、方法のパイプラインの例を示している。3Dシーンは、方向のセット140、142、144に沿って、ボクセル化され、ボクセル化の結果は、1が幾何形状を所有するボクセルを表し、0が空のものを表す、コンパクトな2進表現104a、142a、144aを使用することによって、(シャドウマップまたはコンパクトなビットフィールド表現とも呼ばれる)テクスチャ配列内に記憶される。したがって、マップの各ピクセルは、ボクセル(すなわち、セットの与えられた平行な直線)が、3Dシーンの幾何形状と交わるかどうかについての情報を記憶する。マップの各ピクセルは、ピクセルが表す直線に関連付けられたビットフィールドにリンクされる。
【0135】
さらに
図14を参照すると、2つの世界空間点の間のビジビリティクエリ146について、ボクセル化方向の中で、クエリセグメントに対して最も良く整列させられたものを探索し、直線投影を記憶する数個のピクセルをフェッチする。
図14の例において、方向144が、選択される。その後、選択された視点内に入る直線ボクセル化に対応するビットが、見つけられる。最後に、直線ボクセルとフェッチされたデータとの間において、ビット毎の論理「AND」を計算することによって、ビジビリティクエリが一定時間で回答される。したがって、2つの点は、この演算の結果がゼロである場合に限って相互に可視である。
【0136】
したがって、本開示は、非常に一般的であり、入力シーンに対して仮定を設けず、きめ細かい並列アーキテクチャにおいて良好にスケール調整し、大きいシーンのための大域(global)照明シミュレーションにおいて間接的なビジビリティを解くための良好な候補のように見える。したがって、本開示は、3次元シーンの全体照明をレンダリングするための大域パイプラインにおいて、ビジビリティテストを実行するための良好な候補になる。
【0137】
特に、本開示は、参照によって本明細書に組み込まれる、特許文献1に開示された大域照明パイプラインを改善する。特に、本開示は、レンダリングが実行されるときに、ピクセルビジビリティテストのために、仮想点光源(VPL)を計算することができ、計算されたVPLを利用するために、3Dシーンとともに提供された1つまたは複数の直接光源を使用する。