(57)【要約】      （修正有）【課題】特に、コンピュータに実装する３次元（３Ｄ）シーンのビジビリティ関数計算方法を提供する。【解決手段】３Ｄシーン内に方向のセットを提供し、セットの方向毎に方向に平行な直線のセットを計算し、直線の計算されたセット毎にセットの直線をサンプリングして空間セグメントにし、各直線をビットフィールドと関連付け、各空間セグメントはビットフィールドのビットに対応し、直線のセットと３Ｄシーンとを重ね合わせ、直線の空間セグメントが３Ｄシーン内の幾何形状と交わるとき、直線と関連付けられたビットフィールドの空間セグメントに対応するビットをマークし、クエリセグメントを定義する３Ｄシーン内の２つの点を提供し、クエリセグメントに対して最も近い整列を有する空間セグメントを識別し、識別された空間セグメントが属する直線のビットフィールドに論理ビット演算を実行してクエリセグメントのビジビリティを計算することを含む。【選択図】図１
2019114261.tif 000002
【特許請求の範囲】
【請求項１】
３次元（３Ｄ）シーンのビジビリティ関数を計算する、コンピュータ実装される方法であって、
−  前記３Ｄシーン内において、方向（
【数１】
2019114261.tif 000036
）のセットを提供するステップ（Ｓ１０）と、
−  前記セットの方向毎に、前記方向に平行な直線のセットを計算するステップ（Ｓ２０）と、
−  直線の計算されたセット毎に、前記セットの前記直線をサンプリングして空間セグメントにするステップ（Ｓ３０）と、
−  セットの各直線をビットフィールドと関連付けるステップであって、前記直線の各空間セグメントは、前記ビットフィールドのビットに対応する、ステップ（Ｓ４０）と、
−  直線の前記セットと前記３Ｄシーンとを重ね合わせるステップ（Ｓ５０）と、
−  直線の空間セグメントが、前記３Ｄシーン内の幾何形状と交わるとき、前記直線と関連付けられた前記ビットフィールドの、前記空間セグメントに対応する前記ビットをマークするステップ（Ｓ６０）と、
−  クエリセグメントを定義する、前記３Ｄシーン内の２つの点を提供するステップ（Ｓ７０）と、
−  前記クエリセグメントに対して最も近い整列を有する、１つまたは複数の空間セグメントを識別するステップ（Ｓ８０）と、
−  前記１つまたは複数の識別された空間セグメントが属する前記直線の１つまたは複数のビットフィールドに対して、論理ビット演算を実行することによって、前記クエリセグメントのビジビリティを計算するステップ（Ｓ９０）と
を含む、コンピュータ実装される方法。
【請求項２】
論理ビット演算を実行することは、関数Ｒ＝（Ｘ−１）  ＮＡＮＤ  （Ｙ−１）  ＡＮＤ  Ｄを計算することによって、セグメント［Ｘ  Ｙ］に対して論理ビットを実行することを含み、ここで、
Ｘは、前記クエリセグメントの前記２つの点の一方において１になるように設定され、他のすべての場所において０になるように設定される、前記ビットフィールドのうちの１つまたは複数であり、
Ｙは、前記クエリセグメントの前記２つの点の他の一方において１になるように設定され、他のすべての場所において０になるように設定される、前記ビットフィールドのうちの１つまたは複数であり、
Ｄは、前記１つまたは複数の識別された空間セグメントが属する前記直線の１つまたは複数のビットフィールドである
請求項１に記載のコンピュータ実装される方法。
【請求項３】
前記３Ｄシーン内において、方向のセットを提供するステップは、単位半球（Ｈ）のパラメータ化を量子化するステップを含む請求項１または２に記載のコンピュータ実装される方法。
【請求項４】
単位半球（Ｈ）のパラメータ化を量子化するステップは、前記半球の８面体マッピングを実行するステップを含む請求項３に記載のコンピュータ実装される方法。
【請求項５】
方向（
【数２】
2019114261.tif 000037
）に対して計算される前記平行な直線は、前記方向に直交する平面上のグリッドから計算される請求項１乃至４のいずれか一項に記載のコンピュータ実装される方法。
【請求項６】
前記平面上の前記グリッドは、規則的なグリッドであり、前記グリッドは、各方向に直交する各平面について同じである請求項５に記載のコンピュータ実装される方法。
【請求項７】
−  平面毎に、前記平面上の前記グリッドの位置を定義するための局所基底を計算するステップであって、前記局所基底は、前記方向（
【数３】
2019114261.tif 000038
）から獲得される第１のベクトルと、前記平面の前記局所基底である、
第２のベクトル（
【数４】
2019114261.tif 000039
）および第３のベクトル（
【数５】
2019114261.tif 000040
）とを含む、ステップ
をさらに含む請求項５または６に記載のコンピュータ実装される方法。
【請求項８】
前記第２のベクトル（
【数６】
2019114261.tif 000041
）および前記第３のベクトル（
【数７】
2019114261.tif 000042
）は、前記方向（
【数８】
2019114261.tif 000043
）に対して連続依存性をもつ請求項９に記載のコンピュータ実装される方法。
【請求項９】
前記方向（
【数９】
2019114261.tif 000044
）に対する前記連続依存性は、
【数１０】
2019114261.tif 000045
【数１１】
2019114261.tif 000046
によって与えられ、ここで、
Ｈは、単位半球であり、
Ｆは、与えられた方向（
【数１２】
2019114261.tif 000047
）についての接空間を定義し、
（ｘ，ｙ，ｚ）は、前記単位半球の前記基底における座標である
請求項８に記載のコンピュータ実装される方法。
【請求項１０】
前記クエリセグメントに対して最も近い整列を有する、１つまたは複数の空間セグメントを識別するステップは、
−  方向の前記セットのうちの最も近い方向を決定するステップと、
−  前記決定された最も近い方向と関連付けられた前記平面を決定するステップと、
−  前記クエリセグメントを前記決定された平面上に投影するステップと、
−  前記投影されたクエリセグメントに最も近い直線を決定するステップと
を含む請求項１乃至９のいずれか一項に記載のコンピュータ実装される方法。
【請求項１１】
提供された方向に対する直線の計算されたセットの各直線は、前記方向に直交する前記平面上のピクセルであり、前記提供された方向に対する直線の前記セットは、前記平面上のピクセルからなるグリッドを形成し、前記投影されたクエリセグメントに最も近い前記直線を決定するステップは、
−  前記投影されたクエリセグメントによって交わられる、前記平面の前記ピクセルを決定するステップであって、投影されたクエリセグメントは、前記平面上において、連続するピクセルのセットを形成する、ステップを含む
請求項１０に記載のコンピュータ実装される方法。
【請求項１２】
方向の前記セットのうちの前記最も近い方向を決定するステップは、
−  前記クエリセグメントの方向を計算し、単位半球（Ｈ）の前記パラメータ化における前記セグメントの位置を計算するステップと、
−  前記単位半球（Ｈ）の前記パラメータ化における前記セグメントの前記位置に最も近い、方向の前記セットのうちの方向を選択するステップと
を含む請求項１０または１１に記載のコンピュータ実装される方法。
【請求項１３】
クエリセグメントを提供する前に、
−  ビューポートをスーパーピクセルのセットに細分化するステップであって、スーパーピクセルは、前記ビューポートの連続するピクセルからなるグループである、ステップと、
−  スーパーピクセル毎に、前記スーパーピクセルをなすピクセルからなる１つまたは複数のクラスタを計算するステップであって、計算された各クラスタは、１つの共通するピクセルパラメータを有するピクセルを含む、ステップと、
−  クラスタ毎に、前記クラスタをなす前記ピクセルの少なくとも１つのパラメータの平均値を表すサンプルを計算し、前記計算されたサンプルのリファレンスを、そこから前記クラスタが計算された前記スーパーピクセルに追加するステップと
をさらに含み、
セグメントクエリの前記ビジビリティの前記計算の後に、
−  前記ビューポートのピクセル毎に、前記ピクセルが属する前記スーパーピクセルのすべての前記サンプルについての加重和を計算することによって、前記ビューポートのあらゆるピクセルについての最終画像を再構成するステップ
をさらに含む請求項１乃至１２のいずれか一項に記載のコンピュータ実装される方法。
【請求項１４】
請求項１乃至１３のいずれか一項に記載の方法を実行するための命令を含むコンピュータプログラム。
【請求項１５】
メモリ、およびグラフィック処理ユニットを有するグラフィカルカードに結合されたプロセッサと、を備え、前記メモリは請求項１４に記載のコンピュータプログラムをその上に記録したシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラムおよびシステムの分野に関し、より詳細には、３次元（３Ｄ）シーンのビジビリティ関数を計算する方法、システム、およびプログラムに関する。
【背景技術】
【０００２】
現代のレンダリングアプリケーションにおける写実性は、特にリアルタイムシナリオについて、あらゆる種類のきわめて重要な問題を伴った、画像品質に関するますます多くの要件を誘発している。リアルタイムシナリオは、シーンのリアルタイムレンダリングを含む。「リアルタイム」とは、既存のハードウェア上において、数ミリ秒（一般に１００ｍｓ未満）で実行されることができる技法のことである。「シーン」は、レンダリングを定義する、幾何形状、マテリアル、光、およびカメラのセットである。レンダリング方程式のリアルタイム近似解に関連する、ほとんどの問題の核心に存在しているので、汎用的で効率的なビジビリティクエリメカニズムは、相変わらず、リアルタイムレンダリングエンジンの最も重要な構成要素の１つである。汎用的で効率的なビジビリティクエリメカニズムは、空間内において点のペアを取り、これら２つの点によって形成されるセグメントと交わる、シーン内の既存の幾何形状が存在する場合かつその場合に限って、真を返す、関数である、「大域的ビジビリティ」関数を有する必要がある。「ビジビリティクエリ」は、２つの与えられた点についての、大域的ビジビリティ関数の評価である。
【０００３】
リアルタイムシナリオにおいて、大域的ビジビリティ計算問題を取り扱うことを目的とする、いくつかの既存の技法を次に説明する。それらのほとんどは、レイマーチング（raymarching）技法に基づいている。レイマーチングは、光線とシーンとの交わりを計算することを目的とする技法であり、以下のように機能する。レイマーキングは、シーンをサンプリングすること、およびセグメントのトレース、すなわち、おそらくはセグメントと交わるデータ構造内のサンプルのセットを計算するための、効率的なメカニズムを提供することの両方ができる、データ構造を必要とする。サンプルは、このデータ構造の要素であり、局所的な再構成シーンを構築することを可能にする、このサンプルに関連付けられたディスクリプタのセットを含み、局所的な再構成は、必ずしも正確ではない。
【０００４】
アルゴリズムは、以下のように動作する。最初に、シーンが、データ構造内でサンプリングされる。その後、ビジビリティクエリがトリガされ、点のペア毎に、セグメントのトレースが計算され、トレース内のサンプル毎に、セグメントとシーンの再構成との間における交わりテストが、対応するディスクリプタを使用して計算される。次に、すべての交わり（intersection）テストの関数（しばしば、第１の交わりの距離）である値が返される。
【０００５】
しかしながら、レイマーチング技法に依存する既知の解法は、いくつかの難点に悩まされる。今日のハードウェアによって提供される、強化された計算力にもかかわらず、従来の手法は、新たなアーキテクチャの観点から見て、常に自然に適合するとは限らず、それらの計算能力全体を利用することにしばしば失敗し、またはシングルビュービジビリティ決定など、非常に特定的な使用に制限される。加えて、従来の手法が依存するデータ構造は、ビジビリティ関数が実行されるときに、多くのメモリアクセスを必要し、特に、これらのデータ構造は、多くのポインタを含む。しかしながら、メモリアクセスは、リアルタイムレンダリングにとってきわめて重要な、ビジビリティ関数の実行時間を増加させる。
【０００６】
こうした状況において、３Ｄシーンのビジビリティ関数を計算する改善された方法に対する必要性が依然として存在する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】欧州特許出願公開第３２１１６０１号明細書
【非特許文献】
【０００８】
【非特許文献１】Ｏｌｓｓｏｎ  ｅｔ．  ａｌ．  “Ｃｌｕｓｔｅｒｅｄ  ｄｅｆｅｒｒｅｄ  ａｎｄ  ｆｏｒｗａｒｄ  ｓｈａｄｉｎｇ”．Ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  Ｆｏｕｒｔｈ  ＡＣＭ  ＳＩＧＧＲＡＰＨ／Ｅｕｒｏｇｒａｐｈｉｃｓ  ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｈｉｇｈ−Ｐｅｒｆｏｒｍａｎｃｅ  Ｇｒａｐｈｉｃｓ  （ｐｐ．８７−９６）．  Ｅｕｒｏｇｒａｐｈｉｃｓ  Ａｓｓｏｃｉａｔｉｏｎ
【非特許文献２】Ｋｏｐｆ  ｅｔ  ａｌ．  “Ｊｏｉｎｔ  ｂｉｌａｔｅｒａｌ  ｕｐｓａｍｐｌｉｎｇ”．  Ｉｎ  ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｇｒａｐｈｉｃｓ  （ＴｏＧ）  （Ｖｏｌ．２６，  Ｎｏ．３，  ｐ．９６）
【発明の概要】
【０００９】
したがって、３次元（３Ｄ）シーンのビジビリティ関数を計算するコンピュータ実装される方法が提供される。方法は、
−３Ｄシーン内において、方向（
【００１０】
【数１】
2019114261.tif 000003
【００１１】
）のセットを提供するステップと、
−セットの方向毎に、方向に平行な直線のセットを計算するステップと、
−直線の計算されたセット毎に、セットの直線をサンプリングして空間セグメントにするステップと、
−  セットの各直線をビットフィールドと関連付けるステップであって、直線の各空間セグメントは、ビットフィールドのビットに対応する、ステップと、
−  直線のセットと３Ｄシーンとを重ね合わせるステップと、
−  直線の空間セグメントが、３Ｄシーン内の幾何形状と交わるとき、直線と関連付けられたビットフィールドの、空間セグメントに対応するビットをマークするステップと、
−  クエリセグメントを定義する、３Ｄシーン内の２つの点を提供するステップと、
−  クエリセグメントに対して最も近い整列を有する、１つまたは複数の空間セグメントを識別するステップと、
−  １つまたは複数の識別された空間セグメントが属する直線の１つまたは複数のビットフィールドに対して、論理ビット演算を実行することによって、クエリセグメントのビジビリティを計算するステップと
を含む。
【００１２】
方法は、以下のうちの１つまたは複数を含むことができ、すなわち、
−  論理ビット演算を実行することは、関数Ｒ＝（Ｘ−１）  ＮＡＮＤ  （Ｙ−１）  ＡＮＤ  Ｄを計算することによって、セグメント［Ｘ  Ｙ］に対して論理ビットを実行することを含み、ここで、
Ｘは、クエリセグメントの２つの点の一方において１になるように設定され、他のすべての場所において０になるように設定される、ビットフィールドのうちの１つまたは複数であり、
Ｙは、クエリセグメントの２つの点の他の一方において１になるように設定され、他のすべての場所において０になるように設定される、ビットフィールドのうちの１つまたは複数であり、
Ｄは、１つまたは複数の識別された空間セグメントが属する直線の１つまたは複数のビットフィールドである。
−  ３Ｄシーン内において、方向のセットを提供するステップは、単位半球（Ｈ）のパラメータ化を量子化するステップを含む。
−  単位半球（Ｈ）のパラメータ化を量子化するステップは、半球の８面体マッピングを実行するステップを含む。
−  方向（
【００１３】
【数２】
2019114261.tif 000004
【００１４】
）に対して計算される平行な直線は、方向に直交する平面上のグリッドから計算される。
−  平面上のグリッドは、規則的なグリッドであり、グリッドは、各方向に直交する各平面について同じである。
−  平面毎に、平面上のグリッドの位置を定義するための局所基底を計算し、局所基底は、方向（
【００１５】
【数３】
2019114261.tif 000005
【００１６】
）から獲得される第１のベクトルと、平面の局所基底である、第２のベクトル（
【００１７】
【数４】
2019114261.tif 000006
【００１８】
）および第３のベクトル（
【００１９】
【数５】
2019114261.tif 000007
【００２０】
）とを含む。
−第２のベクトル（
【００２１】
【数６】
2019114261.tif 000008
【００２２】
）および
第３のベクトル（
【００２３】
【数７】
2019114261.tif 000009
【００２４】
）は、方向（
【００２５】
【数８】
2019114261.tif 000010
【００２６】
）に対して連続依存性をもつ。
−方向（
【００２７】
【数９】
2019114261.tif 000011
【００２８】
）に対する連続依存性は、
【００２９】
【数１０】
2019114261.tif 000012
【００３０】
【数１１】
2019114261.tif 000013
【００３１】
によって与えられ、ここで、
Ｈは、単位半球であり、
Ｆは、与えられた方向（
【００３２】
【数１２】
2019114261.tif 000014
【００３３】
）についての接空間（tangential space）を定義し、
（ｘ，ｙ，ｚ）は、単位半球の基底における座標である。
−クエリセグメントに対して最も近い整列を有する、１つまたは複数の空間セグメントを識別するステップは、−方向のセットのうちの最も近い方向を決定するステップと、−決定された最も近い方向と関連付けられた平面を決定するステップと、−クエリセグメントを決定された平面上に投影するステップと、−投影されたクエリセグメントに最も近い直線を決定するステップとを含む。
−  提供された方向に対する直線の計算されたセットの各直線は、方向に直交する平面上のピクセルであり、提供された方向に対する直線のセットは、平面上のピクセルからなるグリッドを形成し、投影されたクエリセグメントに最も近い直線を決定するステップは、投影されたクエリセグメントによって交わられる、平面のピクセルを決定するステップであって、投影されたクエリセグメントは、平面上において、連続するピクセルのセットを形成する、ステップを含む。
−  方向のセットのうちの最も近い方向を決定するステップは、クエリセグメントの方向を計算し、単位半球（Ｈ）のパラメータ化におけるセグメントの位置を計算するステップと、単位半球（Ｈ）のパラメータ化におけるセグメントの位置に最も近い、方向のセットのうちの方向を選択するステップとを含む。
−  クエリセグメントを提供する前に、−ビューポートをスーパーピクセルのセットに細分化するステップであって、スーパーピクセルは、ビューポートの連続するピクセルからなるグループである、ステップと、−スーパーピクセル毎に、スーパーピクセルをなすピクセルからなる１つまたは複数のクラスタを計算するステップであって、計算された各クラスタは、１つの共通するピクセルパラメータを有するピクセルを含む、ステップと、−クラスタ毎に、クラスタをなすピクセルの少なくとも１つのパラメータの平均値を表すサンプルを計算し、計算されたサンプルのリファレンスを、クラスタが計算されたスーパーピクセルに追加するステップとを含み、またセグメントクエリのビジビリティの計算の後に、−ビューポートのピクセル毎に、ピクセルが属するスーパーピクセルのすべてのサンプルについての加重和を計算することによって、ビューポートのあらゆるピクセルについての最終画像を再構成するステップをさらに含む。
【００３４】
方法を実行するための命令を含むコンピュータプログラムが、さらに提供される。
【００３５】
コンピュータプログラムをその上に記録したコンピュータ可読記憶媒体が、さらに提供される。
【００３６】
グラフィック処理ユニットを有するグラフィカルカードに結合されたプロセッサと、コンピュータプログラムをその上に記録したメモリとを備えるシステムが、さらに提供される。
【図面の簡単な説明】
【００３７】
本発明の実施形態が、非限定的な例を用い、添付の図面を参照して、今から説明される。
【図１】方法の例のフローチャートである。
【図２】方法の例を実行するためのシステムの例を示す図である。
【図３】図１のステップＳ１０からＳ８０の例を示す図である。
【図４】図１のステップＳ１０からＳ８０の例を示す図である。
【図５】図１のステップＳ１０からＳ８０の例を示す図である。
【図６】図１のステップＳ１０からＳ８０の例を示す図である。
【図７】図１のステップＳ１０からＳ８０の例を示す図である。
【図８】図１のステップＳ１０からＳ８０の例を示す図である。
【図９】図１のステップＳ９０の例を示す図である。
【図１０】図１のステップＳ９０の例を示す図である。
【図１１】図１のステップＳ９０の例を示す図である。
【図１２】図１のステップＳ９０の例を示す図である。
【図１３】図１のステップＳ９０の例を示す図である。
【図１４】図１のパイプラインの例を示す図である。
【図１５】空間パラメータ化の例を示す図である。
【図１６】空間パラメータ化の例を示す図である。
【図１７】空間パラメータ化の例を示す図である。
【発明を実施するための形態】
【００３８】
図１のフローチャートを参照すると、３次元（３Ｄ）シーンのビジビリティ関数を計算するコンピュータ実施される方法が提案される。ビジビリティ関数は、空間内において点のペアを取り、これら２つの点によって形成されるセグメントと交わる、シーン内の既存の幾何形状が存在する場合にかつその場合に限って、真を返す関数である。方法は、最初にすべての方向においてボクセル化を実行する。ボクセル化はボクセルのセットを生成するプロセスであり、ボクセルは、基礎をなすシーンのディスクリプタを記憶する体積要素のセットである。これは、３Ｄシーン内において、方向のセットを提供することによって達成される。その後、セットの方向毎に、直線のセットが計算され、セットの直線は方向に平行である。次に、直線の計算されたセット毎にセットの直線がサンプリングされて、空間セグメントにされる。直線のセットの各直線は、ビットフィールドと関連付けられ、直線の各空間セグメントはビットフィールドのビットに対応する。その後、直線のセットと３Ｄシーンとが重ね合わされる。直線の空間セグメントが３Ｄシーン内の幾何形状と交わるとき、直線と関連付けられたビットフィールドの空間セグメントに対応するビットが、マークされる。その後、方法はビジビリティクエリを実行する。２つの点が、３Ｄシーン内において提供される。２つの点は、クエリセグメントを定義する。１つまたは複数の空間セグメントが識別され、識別された空間セグメントは、クエリセグメントに対して最も近い整列を有する。識別された１つまたは複数の空間セグメントが属する直線の１つまたは複数のビットフィールドに対して、論理ビット演算を実行することによって、クエリセグメントのビジビリティが計算される。
【００３９】
そのような方法は、３次元（３Ｄ）シーンのビジビリティ関数の計算を改善する。特に、方法は、きめ細かい並列グラフィックスアーキテクチャに適合される、近似的ではあるが効率的な２点間ビジビリティモデルを提供する。実際に、方法は、適切なパラメータ化で定義された多くの量子化された方向に沿ってリアルタイムに計算される粗いボクセル化のセットに基づいている。量子化は、半球に対してだけ実行され、それが情報の冗長性を回避し、これがデータ構造のサイズを減少させ、結果としてデータ構造に対するアクセス時間も減少させる。任意の長いステップを有することがある標準的な手法とは対照的に、ビジビリティクエリは、レイマーチングステップの最小数を実現することによって、僅かな一定時間で、達成されることができる。方法は、いかなる事前計算も行わない、ソフトシャドウ、アンビエントオクルージョン、および画像ベースのライティングを含む、いくつかのアプリケーション上において効率的な方法であることができる。
【００４０】
方法は、コンピュータ実装される。これは、方法のステップ（または実質的にすべてのステップ）が、少なくとも１つのコンピュータまたは同様の任意のシステムによって実行されることを意味する。したがって、方法のステップは、コンピュータによって、おそらくは完全に自動的に、または半自動的に実行される。例において、方法のステップのうちの少なくともいくつかのトリガリングは、ユーザ−コンピュータ対話を通して、実行されることができる。必要とされるユーザ−コンピュータ対話のレベルは、ユーザの望みを実装するための必要性とバランスが取られる、予想される自動性のレベルに依存することができる。例において、このレベルは、ユーザ定義および／または事前定義されることができる。
【００４１】
方法のコンピュータ実装の典型的な例は、この目的のために適合されたシステムを用いて、方法を実行することである。システムは、メモリに結合されたプロセッサを備えることができ、メモリは、方法を実行するための命令を含むコンピュータプログラムをその上に記録している。メモリは、データベースも記憶することができる。メモリは、そのような記憶のために適合された任意のハードウェアであり、おそらくは、いくつかの物理的に異なる部分（例えば、１つはプログラム用、おそらくは、１つはデータベース用）を含む。データベースは、ビジビリティ関数がそれのために計算される、３Ｄシーンを記憶することができ、例えば、データベースは、シーンをなす三角形のセットを記憶する。メモリは、方法によって計算されたデータ構造、例えば、すべての方向におけるボクセル化の結果を記憶することができる。
【００４２】
「データベース」とは、検索および取り出しのために編成されたデータ（すなわち、情報）の任意の集合を意味する（例えば、事前決定された構造化言語、例えば、ＳＱＬに基づいた、例えば、リレーショナルデータベース）。メモリ上に記憶されているとき、データベースは、コンピュータによる迅速な検索および取り出しを可能にする。データベースは、実際に、様々なデータ処理操作と連携する、データの記憶、取り出し、変更、および削除を容易にするように構築される。データベースは、レコードに分解されることができるファイル、またはファイルのセットからなることができ、レコードの各々は、１つまたは複数のフィールドからなる。フィールドは、データ記憶の基本ユニットである。ユーザは、主にクエリを通して、データを取り出すことができる。キーワードおよびソーティングコマンドを使用して、ユーザは、データに特定の集計を施したレポートを取り出す、または生成するために、使用されているデータベース管理システムのルールに従って、多くのレコード内のフィールドを迅速に検索し、再配置し、グループ化し、および選択することができる。
【００４３】
方法は、一般に、３Ｄシーンのビジビリティ関数を計算する。３Ｄシーンは、モデル化されたオブジェクトを含むことができる。モデル化されたオブジェクトは、例えば、データベース内に記憶されたデータによって定義される、任意のオブジェクトである。拡張によって、「モデル化されたオブジェクト」という表現は、データ自体を指定する。システムのタイプに従って、モデル化されたオブジェクトは、異なる種類のデータによって、定義されることができる。システムは、実際に、限定されることなく、ＣＡＤシステム、ＣＡＥシステム、ＣＡＭシステムの任意の組み合わせであることができる。ＣＡＤシステムによって、ＣＡＴＩＡなどの、モデル化されたオブジェクトのグラフィカル表現に基づいて、モデル化されたオブジェクトを少なくとも設計するように適合された、任意のシステムが、さらに意味される。この場合において、モデル化されたオブジェクトを定義するデータは、モデル化されたオブジェクトの表現を可能にするデータを含む。ＣＡＤシステムは、例えば、ある場合において、面分または表面を伴う、辺または線を使用する、モデル化されたＣＡＤオブジェクトの表現を提供することができる。線、辺、または面は、様々な方式で、例えば、非一様有理Ｂスプライン（ＮＵＲＢＳ）で、表現されることができる。具体的には、ＣＡＤファイルは、そこから幾何形状が生成されることができ、ひいては、表現が生成されることを可能にする仕様を含む。モデル化されたオブジェクトの仕様は、単一のＣＡＤファイルまたは複数のそれらの中に、記憶されることができる。ＣＡＤシステムにおけるモデル化されたオブジェクトを表現するファイルの典型的なサイズは、パーツあたり１メガバイトの範囲内にある。モデル化されたオブジェクトは、一般に、数千のパーツからなる組立体であることができる。
【００４４】
ＣＡＤの文脈において、モデル化されたオブジェクトは、一般に、例えば、パーツもしくはパーツの組立体などの製品、または場合によっては、製品の組立体を表す、モデル化された３Ｄオブジェクトであることができる。「モデル化された３Ｄオブジェクト」とは、それの３Ｄ表現を可能にするデータによってモデル化された、任意のオブジェクトを意味する。３Ｄ表現は、すべての角度から、パーツを見ることを可能にする。例えば、モデル化された３Ｄオブジェクトは、３Ｄ表現されたとき、それの軸のいずれかの周りにおいて、または表現が表示されるスクリーン内のいずれかの軸の周りにおいて、操作されること、および回転させることができる。これは、特に、３Ｄモデル化されていない、２Ｄアイコンを除外する。３Ｄ表現の表示は、設計を容易にする（すなわち、統計的に、設計者が彼らの仕事を達成するスピードを増加させる）。製品の設計は、製造プロセスの一部であるので、これは、業界における製造プロセスをスピードアップさせる。
【００４５】
モデル化された３Ｄオブジェクトは、例えば、ＣＡＤソフトウェアソリューションまたはＣＡＤシステムを用いた、仮想設計の完了後に、（例えば、機械的）パーツもしくはパーツの組立体（もしくは、パーツの組立体は、方法の観点からは、パーツ自体と見なされることができ、もしくは方法は、組立体の各パーツに独立して適用されることができるので、等価的に、パーツの組立体）、またはより一般的に、任意の剛体組立体（例えば、移動機構）などの、現実世界において製造される製品の幾何形状を表すことができる。ＣＡＤソフトウェアソリューションは、航空宇宙、建築、建設、消費財、ハイテクデバイス、産業機器、輸送、海事、および／または海底石油／ガス産出もしくは輸送を含む、様々な非限定的な産業分野において、製品の設計を可能にする。したがって、方法によって設計されるモデル化された３Ｄオブジェクトは、（例えば、自動車および軽トラック機器、レーシングカー、オートバイ、トラックおよびモータ機器、トラックおよびバス、列車を含む）陸上乗物用パーツ、（例えば、機体機器、航空宇宙機器、推進機器、防衛製品、航空機機器、宇宙機器を含む）航空乗物用パーツ、（例えば、海軍機器、商船、沖合機器、ヨットおよび作業船、海事機器を含む）海上乗物用パーツなどの、任意の機械用パーツ、（例えば、産業製造機械、移動重機械または機器、設置された機器、産業機器製品、組立金属製品、タイヤ製造製品を含む）一般機械用パーツ、（例えば、家電製品、セキュリティおよび／または制御および／または計装製品、コンピューティングおよび通信機器、半導体、医療デバイスおよび機器を含む）電気機械または電子的パーツ、（例えば、家具、住宅および園芸製品、レジャーグッズ、ファッション製品、耐久消費財小売製品、非耐久消費財小売製品を含む）消費財、（例えば、食品および飲料および煙草、美容およびパーソナルケア、家庭用品パッケージングを含む）パッケージングであることができる、産業製品を表すことができる。
【００４６】
図２は、システムの例を示しており、システムは、クライアントコンピュータシステム、例えば、リアルタイムに３Ｄシーンをレンダリングするために使用される、ユーザのワークステーションである。
【００４７】
例示のクライアントコンピュータは、内部通信バス１０００に接続された中央処理ユニット（ＣＰＵ）１０１０と、やはりバスに接続されたランダムアクセスメモリ（ＲＡＭ）１０７０とを備える。クライアントコンピュータは、バスに接続された、ビデオランダムアクセスメモリ１１００と関連付けられた、グラフィカル処理ユニット（ＧＰＵ）１１１０をさらに提供される。ビデオＲＡＭ１１００は、当技術分野において、フレームバッファとしても知られている。大規模記憶デバイスコントローラ１０２０は、ハードドライブ１０３０などの、大規模メモリデバイスへのアクセスを管理する。コンピュータプログラム命令およびデータを有形に具現化するのに適した大規模メモリデバイスは、例として、ＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリデバイスなどの、半導体メモリデバイス、内部ハードディスクおよびリムーバブルディスクなどの、磁気ディスク、光磁気ディスク、ならびにＣＤ−ＲＯＭディスク１０４０を含む、すべての形態の不揮発性メモリを含む。上記のいずれもが、特別に設計されたＡＳＩＣ（特定用途向け集積回路）によって補完されること、またはその中に組み込まれることができる。ネットワークアダプタ１０５０は、ネットワーク１０６０へのアクセスを管理する。クライアントコンピュータは、カーソル制御デバイスまたはキーボードなどの、ハプティックデバイス１０９０も含むことができる。カーソル制御デバイスは、ユーザが、カーソルをディスプレイ１０８０上の任意の所望の位置に選択的に位置付けることを可能にするために、クライアントコンピュータにおいて使用される。加えて、カーソル制御デバイスは、ユーザが、様々なコマンドを選択し、制御信号を入力することを可能にする。カーソル制御デバイスは、制御信号をシステムに入力するためのいくつかの信号生成デバイスを含む。一般に、カーソル制御デバイスは、マウスであることができ、信号を生成するために、マウスのボタンが使用される。あるいは、または加えて、クライアントコンピュータシステムは、センシティブパッドおよび／またはセンシティブスクリーンを備えることができる。
【００４８】
コンピュータプログラムは、コンピュータによって実行可能な命令を含むことができ、命令は、上述のシステムに方法を実行させるための手段を含む。プログラムは、システムのメモリを含む、任意のデータ記憶媒体上に記録可能であることができる。プログラムは、例えば、デジタル電子回路で、またはコンピュータハードウェア、ファームウェア、ソフトウェア、もしくはそれらの組み合わせで、実装されることができる。プログラムは、装置として、例えば、プログラム可能なプロセッサによって実行される、マシン可読記憶媒体内において有形に具現化された製品として、実装されることができる。方法ステップは、入力データを操作し、出力を生成することによって、方法の機能を実行するために、命令からなるプログラムを実行する、プログラム可能なプロセッサによって実行されることができる。したがって、プロセッサは、プログラム可能であり、データ記憶システム、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスから、データおよび命令を受信し、それらにデータおよび命令を送信するように結合されることができる。アプリケーションプログラムは、高水準手続き型もしくはオブジェクト指向プログラミング言語で、または望ましい場合は、アセンブリもしくは機械語で実装されることができる。いずれの場合においても、言語は、コンパイル型言語、またはインタープリタ型言語であることができる。プログラムは、フルインストールプログラム、またはアップデートプログラムであることができる。システムに対するプログラムの適用は、いずれの場合においても、方法を実行するための命令を生じさせる。
【００４９】
次に図１を参照し、３Ｄシーンのビジビリティ関数を計算するための方法の例を説明する。ビジビリティ関数は、空間内において点のペアを取り、これら２つの点によって形成されるセグメントと交わる、シーン内の既存の幾何形状が存在する場合かつその場合に限って、真を返す、関数である。
【００５０】
ステップＳ１０において、方向のセットが、３次元（３Ｄ）シーン内において、提供される。これは、方向を計算するシステムによって実行される。方向は、３Ｄシーンの参照フレームに関して推測され、方向ベクトルによって表されることができる。３Ｄシーンの参照フレームは、当技術分野において知られているように、３Ｄシーンのオブジェクトの位置および／または配向を計算するために、使用される。方向のセットを提供する例が、本明細書のこれ以降において説明される。
【００５１】
シーンは、一般に、幾何形状、マテリアル、光、およびカメラなど、オブジェクトのセットを含む。シーンは、３次元であり、これは、オブジェクトが、３Ｄ空間内に配置され、オブジェクトの位置が、３つのパラメータによって決定されることを意味する。例において、３Ｄシーンは、３次元ユークリッド空間であることができる。例において、３Ｄシーンは、三角形のセットと、１つまたは複数の直接的な光源とを含むことができる。
【００５２】
例において、３Ｄシーンの生データ（少なくとも、三角形のセット）は、方向のセットと一緒に、提供されることができる。３Ｄシーンの生データは、本開示の方法の例を実装する、システムおよび／またはプログラムによって、アクセスされることができる。例において、３Ｄシーンは、当技術分野において知られているように、アプリケーションの要求時に、表示される画像を生成するフレームワークである、レンダラエンジン内にロードされることができる。例えば、ＣＡＤシステムのＣＡＤアプリケーションは、レンダラエンジンに、入力として、モデル化された３Ｄオブジェクトからなる３Ｄシーンを提供し、レンダラエンジンは、ＣＡＤシステムの１つまたは複数のグラフィックカードを使用して、スクリーンに３Ｄシーンを描画する。３Ｄシーンの三角形は、メッシュを形成し、例えば、３Ｄシーンのモデル化されたオブジェクトは、当技術分野において知られているように、相互接続された三角形によって表される。
【００５３】
例において、方向のセットは、空の３Ｄシーン（すなわち、いかなる生データもない３Ｄシーン）において、提供されることができる。
【００５４】
次に、方向のセットを提供する（Ｓ１０）の例を説明する。単位半球が、３Ｄシーン内において、提供される。半球が、単位であるとは、そこから半球−球の半分−が獲得される球の中心から、半球の表面に属する任意の点まで延びるベクトルが、長さ１のノルムが定義されたベクトルであることを意味する。したがって、単位半球は、３Ｄシーン内において空間方向を指定するために、使用され、一意的な各方向は、単位球上の点に数値的に等価である。単位半球は、３Ｄシーンの中央に配置されることができ、これは、そこから半球が獲得される球の中心が、３Ｄシーンの中央に配置されることを意味する。
【００５５】
一旦提供されると、単位半球は、パラメータ化される。パラメータ化は、当技術分野において知られているように、実行され、半球のパラメータ化は、球のパラメータ化に類似している。例において、パラメータ化は、半球の８面体マッピングを実行することを含む。８面体マッピングの使用は、すべての方向において、ボクセル化のプロセス中に計算される、データ構造の効率的なランダムアクセスを維持しながらも、過剰な歪みのない、（ａ，ｂ）∈［−１，１］2から半球へのマッピングを可能にする。その後、半球のパラメータ化は、量子化される。値（ａ，ｂ）は、８面体の投影場所上における２次元（２Ｄ）座標を表し、選択される。これは、要するに、８面体の２Ｄ投影面上における座標が、選択されるということである。選択された各座標（ａ，ｂ）は、単位半球の長さ１のノルムが定義されたベクトルによって表される、３Ｄシーン内の（
【００５６】
【数１３】
2019114261.tif 000015
【００５７】
と記される）方向に対応する。
【００５８】
図１５から図１７は、上で説明した例を示しており、方向のセットが、半球の８面体マッピングを使用して、単位半球（Ｈ）のパラメータ化を量子化することによって、提供される。図１５から図１７を明瞭にするために、単位半球の代わりに、単位球が、表されている。３Ｄシーン内における方向のセットは、単位半球の代わりに、単位球のパラメータ化を量子化することによって、提供されることができることが、理解されるべきであり、既知の方向から反対方向を計算することは、簡単であるので、半球の使用は、計算の冗長さを回避する。
【００５９】
図１５は、与えられた方向
【００６０】
【数１４】
2019114261.tif 000016
【００６１】
を伴った、単位（半）球（Ｈ）の例を示している。
【００６２】
図１６は、上半球（Ｈ）の８面体パラメータ化の例を示している。
【００６３】
図１７は、投影面内のドット、例えば、ドット１８０に対応する、量子化された方向の例を示している。したがって、方向の２Ｄマップが、提供される。この例において、半球上における方向の分布が、規則的であるように、量子化された方向のセットは、規則的なグリッドを形成する。図を明瞭にするために、方向を表す点の数は、制限されている。方向の数は、好ましくは、６４以上１０２４以下の間に含まれ、方向の数が多くなるほど、ボクセル化がより正確になることが理解されよう。したがって、方向の数は、１０２４よりも多いこと、例えば、２０４８、４０９６、．．．であることができる。
【００６４】
図１を再び参照すると、提供された（または計算された）方向毎に、直線のセットが、計算される（Ｓ２０）。直線のセットの直線は、与えられた方向に平行である。平行とは、セットの第１の直線上のあらゆる点が、セットの第２の直線から正確に同じ最小ユークリッド距離に配置されることを意味する。
【００６５】
例において、システムによる、方向に対する直線のセットの計算は、方向（
【００６６】
【数１５】
2019114261.tif 000017
【００６７】
）毎に、方向に直交する平面を計算することによって実行されることができる。直線のセットの直線は、この平面に直交する。平面は、グリッドを含むことができ、グリッドは、平面上にロケーションのセットを定義し、それをセットの計算された直線が、実際には、１つのロケーションを１つの直線が通過する。
【００６８】
例において、平面のグリッドは、規則的なグリッドである。規則的なグリッドを使用することは、ロケーションの計算を、また同様に、ロケーションを通過する直線の計算をより容易にする。
【００６９】
例において、グリッドは、方向と関連付けられたすべての平面について同一である。例えば、グリッドのピッチは、すべてのグリッドについて同じである。
【００７０】
図１５に戻ると、与えられた方向
【００７１】
【数１６】
2019114261.tif 000018
【００７２】
について、半球（Ｈ）に対する接空間（Ｆ）が、計算される。接空間（Ｆ）は、与えられた方向に直交し、この空間上において、規則的なグリッドが計算され、したがって、規則的なグリッドを有する平面が提供される。すべてが（Ｆ）に直交する、平行な直線のセットが、計算され、各直線は、グリッドのロケーションを通過する。以下で説明されるように、Ｆに対して整列させられたシーンのボクセル化が、計算されることができる。グリッドのサイズは、３Ｄシーンのすべての幾何形状のボクセル化が実施されることができるように選択されることができる。
【００７３】
与えられた方向に直交する、接空間Ｆの使用は、位置の無限性を有し、ビジビリティクエリのときに（Ｓ７０〜Ｓ９０）、歪みを導入することがある。しかしながら、Ｆの定義についての一意的で自明なソリューションは存在しない。以下は、この歪みの問題をいかにして最小化するかを示している。
【００７４】
例において、各平面は、平面上においてグリッドの位置を定義するための局所基底を含む。グリッドの位置を定義する局所基底は、３つのベクトルを含む。第１のベクトルは、方向（
【００７５】
【数１７】
2019114261.tif 000019
【００７６】
）から獲得され、第２のベクトル（
【００７７】
【数１８】
2019114261.tif 000020
【００７８】
）および第３のベクトル（
【００７９】
【数１９】
2019114261.tif 000021
【００８０】
）は、平面の局所基底である。平面上においてグリッドの位置を定義する局所基底は、好ましくは、正規直交座標系である。いずれの平面のグリッドの配向も、ここで識別されることができる。
【００８１】
例において、第２のベクトル（
【００８２】
【数２０】
2019114261.tif 000022
【００８３】
）および第３のベクトル（
【００８４】
【数２１】
2019114261.tif 000023
【００８５】
）は、方向（
【００８６】
【数２２】
2019114261.tif 000024
【００８７】
）に対して連続依存性をもつ。すなわち、方向
【００８８】
【数２３】
2019114261.tif 000025
【００８９】
毎に、連続的直交枠（continuous orthogonal frame）
【００９０】
【数２４】
2019114261.tif 000026
【００９１】
が、定義される。連続的直交枠は、北極については、恒等式に等しく、子午線沿いにおいて、球に対して一定である。我々が提案する、使用される枠は、ωが北極に等しいときは、標準基底を用いて識別し、極と異なる任意のω値については、北極およびωを通過する子午線に平行な回転を適用して、北極をω上に送る、適用から来ている。したがって、平面のグリッドは、第１の方向から、第１の方向の隣の方向である第２の方向に移るときに、半球上において連続的変化を有する。
【００９２】
例において、第２のベクトル（
【００９３】
【数２６】
2019114261.tif 000027
【００９４】
）および第３のベクトル（
【００９５】
【数２７】
2019114261.tif 000028
【００９６】
）の方向（
【００９７】
【数２５】
2019114261.tif 000029
【００９８】
）に対する連続依存性（continuous dependence）は、以下のパラメータ化によって与えられ、
【００９９】
【数２８】
2019114261.tif 000030
【０１００】
【数２９】
2019114261.tif 000031
【０１０１】
ここで、Ｈは、単位半球であり、Ｆは、与えられた方向（
【０１０２】
【数３０】
2019114261.tif 000032
【０１０３】
）についての接空間を定義し、（ｘ，ｙ，ｚ）は、単位半球の基底における座標である。したがって、計算された（Ｓ２０）各直線は、空間内において、４つの成分
【０１０４】
【数３１】
2019114261.tif 000033
【０１０５】
を用いて、識別されることができ、ここで、（ａ，ｂ）は、方向
【０１０６】
【数３２】
2019114261.tif 000034
【０１０７】
を定義し、（ｕ，ｖ）は、対応する枠
【０１０８】
【数３３】
2019114261.tif 000035
【０１０９】
内における位置を定義する。
【０１１０】
図１を再び参照すると、計算された直線がサンプリングされる（Ｓ３０）。言い換えると、直線の各セットの各直線は、空間セグメントと呼ばれるいくつかのセグメントに細分化される。空間セグメントを計算するこの操作は、当技術分野において知られているように実行される。
【０１１１】
その後、ステップＳ４０において、直線の各セットの各直線は、ビットフィールドと関連付けられ、各直線の各空間セグメントは、ビットフィールドのビットに対応する。ビットフィールドは、メモリ内に記憶されるデータ構造である。ビットフィールドは、ビットの系列を保持するように割り当てられた、いくつかの隣接するコンピュータメモリロケーションを含む。直線をビットフィールドに関連付けることは、方法を実行するシステムが、メモリ内において、与えられた直線についてのビットの系列（すなわち、ビットフィールド）を識別することができることを意味する。関連付けは、当技術分野において知られているように、例えば、ポインタの使用によって実行される。
【０１１２】
その後、直線のセットと３Ｄシーンとが、重ね合わされる（Ｓ５０）。直線が、サンプリングされているので、これは、要するに、直線のセットの直線の空間セグメントが、３Ｄシーンと重ね合わされるということである。セットの直線と３Ｄシーンとを重ね合わせることは、３Ｄの三角形のセットの生データと、空間セグメントの生データとが、３Ｄシーン内において、すべて一緒になることを含む。したがって、両方の生データを必要とする計算ステップがここで実行されることができる。
【０１１３】
次に、システムは、３Ｄシーン内の幾何形状と空間セグメントとの間の交わりを決定する。交わりの決定は、当技術分野において知られているように実行される。空間セグメントと３Ｄシーン内の幾何形状との間の交わりが、決定された（すなわち、交わりが、計算された）とき、空間セグメントに対応するビットがマークされる（Ｓ６０）。したがって、直線のセットのうちの交わる直線のビットフィールドがマークされる。ビット（および拡張によって、ビットフィールド）をマークすることは、ビットの値が、設定される、例えば、加算または変更されることを意味し、実際には、「空の」ビットは、当技術分野において知られているように、メモリ内に存在しないので、ビットフィールドのすべてのビットは値と関連付けられ、例えば、直線に関連付けられたビットフィールドは、各ビットとも値「０」を有するように初期化される。
【０１１４】
図３から図６は、図１のＳ１０からＳ６０に関連して説明したような、３Ｄシーンのパラメータ化およびボクセル化の例を示している。適切なパラメータ化において定義された多くの量子化された方向に沿ってリアルタイムに計算された粗いボクセル化のセットに基づいて、マップのセットが獲得され、マップは、方向の１つに沿ったボクセル化を表す。したがって、方向毎に、この方向に直角の正投影マップが、生成され、マップの各ピクセルは、１次元直線に対応する。図３は、３Ｄシーン内において方向のセットを提供する（すなわち、計算する）ために使用される、単位（半）球を示している。図４は、矢印によって表される１つの方向についての、直線のセットの計算を示している。方向に直交する、規則的なグリッドを有する平面が、提供され、グリッドによって提供されるロケーション毎に、方向に平行な直線が、計算される。図５は、１つの方向に平行な直線のセットの、３Ｄシーンとの重ね合わせを示している。いくつかの交わりが、検出され、図上において、ドットを用いて表わされており、検出は、交わり計算の結果である。図６は、コンパクトなビットフィールド表現として記憶される、３Ｄシーンのボクセル化の例を示している。マップ上の（ピクセルとも呼ばれる）各四角形は、３Ｄシーンの幾何形状と交わる直線のビットフィールドを表す。したがって、上で説明したパラメータ化に基づいて、マップのセットが、オンザフライで構築される。マップは、２つのステップで計算され、すなわち、（ｉ）８面体投影を使用して、方向のセットが量子化され、投影面内の規則的なグリッドに対して整列させられ、（ｉｉ）これらの方向毎に、シーンのボクセル化が計算され、枠パラメータ化Ｆに対して整列させられ、それをコンパクトなビットフィールド表現として記憶する。
【０１１５】
図１に戻り、ビジビリティクエリの例を次に説明する（Ｓ７０〜Ｓ９０）。
【０１１６】
ステップＳ７０において、クエリセグメントが、３Ｄ内において提供される。３Ｄ空間内においてセグメントを与えられると、ビジビリティ関数は、このセグメントが幾何形状によって交わられるかどうかを決定する。セグメントは、３Ｄ空間内の２つの点によって定義され（かつ区切られ）る。
【０１１７】
その後、ステップＳ８０において、クエリセグメントに対して最も近い整列を有する、１つまたは複数の空間セグメントが、識別される。「最も近い整列」という表現は、１つまたは複数の識別された空間セグメントが、クエリセグメントの方向と最も良く一致する方向を有することを含む。２つの方向は、これら２つの方向の間の角度が非常に小さい場合、近い。
【０１１８】
例において、１つまたは複数の空間セグメントの識別は、クエリセグメントの方向に最も近い方向を有する、直線のセットのうちの直線の決定を含むことができる。
【０１１９】
例において、方向のセットのうちで最も近い方向を有する、直線のセットの直線のうちの直線の識別は、クエリセグメントの８面体投影を使用し、このマッピングにおける最も近いボクセル化をフェッチして、クエリセグメントに対して最も良く整列させられた、量子化された方向を決定することによって、実行されることができる。この場合において、パラメータ化されたクエリセグメントに対して最も良く整列させられた、量子化された方向は、方向の２Ｄマップ上において、最小距離を有するものである。これは、図１８に示されており、（１つの方向を表す）ドット１８０は、クエリセグメントの方向を表すドット１８２に最も近い。ここでは、距離は、ユークリッド距離であるが、任意のタイプの距離が使用されることができることが理解されよう。したがって、（例えば、計算時に）３Ｄシーン内におけるクエリセグメントの方向が一旦獲得されると、単位半球（Ｈ）のパラメータ化におけるクエリセグメントの位置が計算され、単位半球（Ｈ）のパラメータ化におけるセグメントの位置に最も近い、方向のセットのうちの方向が選択される。
【０１２０】
クエリセグメントの方向に最も近い方向を有する、直線のセットのうちの直線が、例えば、単位半球のパラメータ化における距離を測定することによって一旦決定されると、この最も近い方向と関連付けられた平面が、取り出される。これは、当技術分野において知られているように実行され、例えば、ポインタが直線と平面の記憶されたデータとの間のリンクを維持する。
【０１２１】
その後、クエリセグメントは、クエリセグメントの方向に最も近い方向を有する直線と関連付けられた平面上に投影される。クエリセグメントの平面上への投影は、直交投影である。図７は、３Ｄシーン内においてクエリセグメントを定義する２つの点７０、７２が、ここで表されていることを除いて図５と同じである。この例において、クエリセグメントは、平面に関連付けられた方向に平行である。図８は、方向についての３Ｄシーンのボクセル化を表すマップ上へのクエリセグメントの投影８０を示している。この例において、クエリセグメントは、方向に平行であり、クエリセグメントの直交投影は、ただ１つのピクセルを生成する。クエリセグメントが、平面と関連付けられた方向に平行ではない場合、投影されたセグメントは、マップ上において、連続するピクセルのセットを形成する。
【０１２２】
その後、投影されたクエリセグメントに最も近い直線が、決定される。決定は、クエリセグメントを表すピクセルと、３Ｄシーンの幾何形状と交わる直線を表すピクセルとの間の距離に基づいて実行される。ここでは、距離は、ユークリッド距離であることができる。１つの直線が、使用されることができる。直線を平均し、２つの方向の間の境界における視覚的アーチファクトを低減させるために、２つ以上の直線が選択されることができる。
【０１２３】
図１に戻ると、クエリセグメントのビジビリティが、計算される。計算は、１つまたは複数の識別された空間セグメント（それらはクエリセグメントに対して最も近い整列を有する）が属する直線の１つまたは複数のビットフィールドに対して、論理ビット演算を実行することによって実施される。クエリセグメントは、従来通りにレイマーチングされ、論理ビット演算を使用して、クエリセグメントと交差する（cross）（空間セグメントに対応するビットフィールドは、クエリセグメントに対して最も近い整列を有するものとして識別された１つまたは複数の空間セグメントのビットと対照させてテストされる。クエリセグメントに対して最も近い整列を有するものとして識別された１つまたは複数の空間セグメントのビットは、方向についての３Ｄシーンのボクセル化を表すマップからフェッチされることを理解されたい。平面は、最も近い整列を有する方向と関連付けられるので、平面は、クエリセグメントにほぼ直交する。したがって、レイマーチングは、非常に少ない数のステップをもたらす。さらに、きめ細かい平行スケーラブルの場合、クエリ全体である。
【０１２４】
例において、セグメント［Ｘ  Ｙ］に対して実行される、論理ビット演算は、論理演算Ｒ＝（Ｘ−１）  ＮＡＮＤ  （Ｙ−１）  ＡＮＤ  Ｄを計算することを含み、ここで、
Ｘは、クエリセグメントの２つの点の一方において１になるように設定され、他のすべての場所において０になるように設定される、ビットフィールドのうちの１つまたは複数であり、
Ｙは、クエリセグメントの２つの点の他の一方において１になるように設定され、他のすべての場所において０になるように設定される、ビットフィールドのうちの１つまたは複数である。
Ｄは、１つまたは複数の識別された空間セグメントが属する直線の１つまたは複数のビットフィールドである。
【０１２５】
図９から図１３は、論理演算Ｒ＝（Ｘ−１）  ＮＡＮＤ  （Ｙ−１）  ＡＮＤ  Ｄの例を示している。図９には、サンプリングされて空間セグメントにされた直線が表されている。各セグメントに帰される値で、直線のビットフィールドが表されている。値は、「０」になるように設定される。３Ｄシーンの幾何形状によって交わられるセグメントは、１になるように設定され、すなわち、交わられる空間セグメントに関連付けられたビットはマークされている。
【０１２６】
図１０は、図９に表されたのと同じ直線を示している。図１０において、直線の１つのセグメントＸは、クエリセグメントの２つの点のうちの一方に対して最も近い整列を有するものとして識別されている。直線の第２のセグメントＹは、クエリセグメントの２つの点のうちの第２のものに対して最も近い整列を有するものとして識別されている。空間セグメントＸおよびＹのそれぞれのビットはマークされ、すなわち、それらの値は「１」になるように設定される。その後、図１１に示されるように、逆演算Ｘ−１およびＹ−１が、実行される。結果のＲが、図１２に示されるように計算され、この場合、Ｒは「０」と異なり、点ＸおよびＹは相互に可視ではない。
【０１２７】
図１３は、論理演算Ｒ＝（Ｘ−１）  ＮＡＮＤ  （Ｙ−１）  ＡＮＤ  Ｄの別の例を示しており、この場合、Ｒは「０」に等しく、点ＸおよびＹは相互に可視である。
【０１２８】
ビジビリティクエリの数が重要なことがある。例えば、低周波数現象のシミュレーションの場合がそうである。例において、クエリの数は、ビューポートをスーパーピクセルのセットに細分化することによって減少させることができる。スーパーピクセルは、ビューポートの連続するピクセルからなるグループである。２つのピクセルは、それらが共通の辺を共有する場合、連続である。実際には、グループ化は、ｎが整数である、ｎ×ｎピクセルからなる正方形グループ化であり、例えば、ビューポートの８×８隣接ピクセルからなる正方形グループ化である。このように、スーパーピクセルは、規則的なグリッドに基づいているので、スーパーピクセルの隣接ピクセルは、一定時間で到達されることができる。
【０１２９】
その後、スーパーピクセル毎に、スーパーピクセルをなすピクセルからなる１つまたは複数のクラスタが計算される。スーパーピクセルをなすピクセルからなるクラスタは、１つの共通するピクセルパラメータを共有するピクセルを含む。ピクセルパラメータは、深度、法線、粗さ、色、．．．などの、しかし、それらに限定されない、ピクセルの性質を特徴付ける。クラスタの生成は、非特許文献１と同じようにして実行される。
【０１３０】
クラスタ毎に、クラスタをなすピクセルの少なくとも１つのパラメータの平均値を表すサンプルが計算される。したがって、代表的なサンプルは、クラスタ内部のあらゆるピクセルに「近い」。計算されたサンプルのリファレンスが、そこからクラスタが計算されたスーパーピクセルに追加される。例において、代表的なサンプルを計算するために、重心位置、および平均法線、およびマテリアルが使用される。
【０１３１】
その後、ピクセルの代わりに、サンプルを用いて、ビジビリティクエリが、計算される。ビジビリティクエリは、Ｓ９０を参照してすでに説明したように実行される。サンプル毎に反復し、その後、テストされるビジビリティセグメントのセットを定義する光毎に反復する。その後、代表的なサンプル当たり、１つのＲＧＢシェーディング結果が記憶され、したがって、ステップＳ９０の結果が記憶される。
【０１３２】
その後、ビューポートのピクセル毎に、ピクセルが属するスーパーピクセルのすべてのサンプルについての加重和を計算することによって、ビューポートのあらゆるピクセルについての最終画像が、再構成される。したがって、再構成は、各スーパーピクセルのすべてのサンプルが考慮されることを除いて、非特許文献２において説明しているのと同様の方法で実行される。
【０１３３】
このようにして、受信機の数が低減され、したがって、計算の数を減らし、パイプラインの効率もそうである。クラスタリング戦略のおかげで、シェーディングにおいて、詳細さは失われない。これは、毛皮、群葉、またはワイヤフェンスなど、変化に富んだ幾何形状を有するシーンにおいて特に明らかである。
【０１３４】
図１４は、方法のパイプラインの例を示している。３Ｄシーンは、方向のセット１４０、１４２、１４４に沿って、ボクセル化され、ボクセル化の結果は、１が幾何形状を所有するボクセルを表し、０が空のものを表す、コンパクトな２進表現１０４ａ、１４２ａ、１４４ａを使用することによって、（シャドウマップまたはコンパクトなビットフィールド表現とも呼ばれる）テクスチャ配列内に記憶される。したがって、マップの各ピクセルは、ボクセル（すなわち、セットの与えられた平行な直線）が、３Ｄシーンの幾何形状と交わるかどうかについての情報を記憶する。マップの各ピクセルは、ピクセルが表す直線に関連付けられたビットフィールドにリンクされる。
【０１３５】
さらに図１４を参照すると、２つの世界空間点の間のビジビリティクエリ１４６について、ボクセル化方向の中で、クエリセグメントに対して最も良く整列させられたものを探索し、直線投影を記憶する数個のピクセルをフェッチする。図１４の例において、方向１４４が、選択される。その後、選択された視点内に入る直線ボクセル化に対応するビットが、見つけられる。最後に、直線ボクセルとフェッチされたデータとの間において、ビット毎の論理「ＡＮＤ」を計算することによって、ビジビリティクエリが一定時間で回答される。したがって、２つの点は、この演算の結果がゼロである場合に限って相互に可視である。
【０１３６】
したがって、本開示は、非常に一般的であり、入力シーンに対して仮定を設けず、きめ細かい並列アーキテクチャにおいて良好にスケール調整し、大きいシーンのための大域（global）照明シミュレーションにおいて間接的なビジビリティを解くための良好な候補のように見える。したがって、本開示は、３次元シーンの全体照明をレンダリングするための大域パイプラインにおいて、ビジビリティテストを実行するための良好な候補になる。
【０１３７】
特に、本開示は、参照によって本明細書に組み込まれる、特許文献１に開示された大域照明パイプラインを改善する。特に、本開示は、レンダリングが実行されるときに、ピクセルビジビリティテストのために、仮想点光源（ＶＰＬ）を計算することができ、計算されたＶＰＬを利用するために、３Ｄシーンとともに提供された１つまたは複数の直接光源を使用する。
【図１】
2019114261.tif 000048
【図２】
2019114261.tif 000049
【図３】
2019114261.tif 000050
【図４】
2019114261.tif 000051
【図５】
2019114261.tif 000052
【図６】
2019114261.tif 000053
【図７】
2019114261.tif 000054
【図８】
2019114261.tif 000055
【図９】
2019114261.tif 000056
【図１０】
2019114261.tif 000057
【図１１】
2019114261.tif 000058
【図１２】
2019114261.tif 000059
【図１３】
2019114261.tif 000060
【図１４】
2019114261.tif 000061
【図１５】
2019114261.tif 000062
【図１６】
2019114261.tif 000063
【図１７】
2019114261.tif 000064
【外国語明細書】
2019114261000001.pdf