(57)【要約】キューブ・マップを使ったリアルタイム多重解像度3D衝突検出のための装置、システムおよび方法が開示される。たとえば、第一のポリゴンを受領し、第二のポリゴンを受領し、次いでメモリに記憶されているテクスチャー・マップを使って前記第一のポリゴンと前記第二のポリゴンの間の衝突を検出することを含む方法が開示される。他の実装も開示される。
2009545075.tif 000002
【特許請求の範囲】
【請求項１】
第一のポリゴンを受領する段階と；
第二のポリゴンを受領する段階と；
メモリに記憶されているテクスチャー・マップを使って前記第一のポリゴンと前記第二のポリゴンの間の衝突を検出する段階とを有する、
方法。
【請求項２】
前記テクスチャー・マップが、前記第一のポリゴンのある原点と前記第一のポリゴンのすべての面との間の距離を記憶するキューブ・マップを含む、請求項１記載の方法。
【請求項３】
前記第一のポリゴンの前記原点が、前記第一のポリゴンの包摂球面の重心または前記第一のポリゴンの外心の一方である、請求項２記載の方法。
【請求項４】
前記テクスチャー・マップを使って前記第一のポリゴンと前記第二のポリゴンの間の衝突を検出する段階が：
前記第一のポリゴンの前記原点から前記第二のポリゴンの頂点への距離に対応する第一の距離を決定する段階であって、ここで、前記第一のポリゴンの前記原点および前記第二のポリゴンの前記頂点は方向ベクトルを画定する、段階と；
前記キューブ・マップのテクスチャー・アドレスの検索を用いることによって、前記方向ベクトルに沿っての、前記第一のポリゴンの前記原点から前記第一のポリゴンの面までの距離に対応する第二の距離を決定する段階と；
前記第一の距離を前記第二の距離と比較する段階とを有する、
請求項２記載の方法。
【請求項５】
前記第一の距離を前記第二の距離と比較する段階が前記第一の距離の平方を前記第二の距離の平方と比較することを含む、請求項４記載の方法。
【請求項６】
前記第二の距離が前記第一の距離以上である場合に前記第一のポリゴンと前記第二のポリゴンの間の衝突を検出する段階をさらに有する、
請求項４記載の方法。
【請求項７】
前記第一のポリゴンの重心を決定し；
前記重心から前記第一のポリゴンのすべての面までの複数の距離を決定し、ここで、前記複数の距離の各距離は複数のベクトルのうちの対応するベクトルに沿って決定されるものであり、前記複数のベクトルの各ベクトルは前記重心に発して前記テクスチャー・マップの対応する要素を通るものであり；
前記複数の距離の各距離を、前記テクスチャー・マップの対応する要素の値として記憶することによって、
前記テクスチャー・マップを生成する段階をさらに有する、
請求項１記載の方法。
【請求項８】
命令が記憶された機械アクセス可能媒体を有する物品であって、前記命令は、機械によって実行されたときに前記機械に：
第一のポリゴンを受領する段階と；
第二のポリゴンを受領する段階と；
メモリに記憶されているテクスチャー・マップを使って前記第一のポリゴンと前記第二のポリゴンの間の衝突を検出する段階とを実行させる、
物品。
【請求項９】
前記テクスチャー・マップが、前記第一のポリゴンのある原点と前記第一のポリゴンのすべての面との間の距離を記憶するキューブ・マップを含む、請求項８記載の物品。
【請求項１０】
前記第一のポリゴンの前記原点が、前記第一のポリゴンの包摂球面の重心または前記第一のポリゴンの外心の一方である、請求項８記載の物品。
【請求項１１】
前記テクスチャー・マップを使って前記第一のポリゴンと前記第二のポリゴンの間の衝突を検出する命令が、機械によって実行されたときに、前記機械に：
前記第一のポリゴンの前記原点から前記第二のポリゴンの頂点への距離に対応する第一の距離を決定する段階であって、ここで、前記第一のポリゴンの前記原点および前記第二のポリゴンの前記頂点は方向ベクトルを画定する、段階と；
前記キューブ・マップのテクスチャー・アドレスの検索を用いることによって、前記方向ベクトルに沿っての、前記第一のポリゴンの前記原点から前記第一のポリゴンの面までの距離に対応する第二の距離を決定する段階と；
前記第一の距離を前記第二の距離と比較する段階とを実行させる、
請求項８記載の物品。
【請求項１２】
機械によって実行されたときに、前記機械に：
前記第二の距離が前記第一の距離以上である場合に前記第一のポリゴンと前記第二のポリゴンの間の衝突を検出する段階を実行させる命令をさらに記憶されている、請求項１１記載の物品。
【請求項１３】
機械によって実行されたときに、前記機械に：
前記第一のポリゴンの重心を決定し；
前記重心から前記第一のポリゴンのすべての面までの複数の距離を決定し、ここで、前記複数の距離の各距離は複数のベクトルのうちの対応するベクトルに沿って決定されるものであり、前記複数のベクトルの各ベクトルは前記重心に発して前記テクスチャー・マップの対応する要素を通るものであり；
前記複数の距離の各距離を、前記テクスチャー・マップの対応する要素の値として記憶することによって、
前記テクスチャー・マップを生成する段階を実行させる命令をさらに記憶されている、
請求項８記載の物品。
【請求項１４】
距離値を格納するピクセルを含むテクスチャー・マップを記憶するメモリと；
衝突検出アルゴリズムによって決定され、前記テクスチャー・マップのピクセルを指定する一つまたは複数の検索インデックスを受領し、前記一つまたは複数の検索インデックスに応答して前記距離値を取得するテクスチャー・サンプリング論理とを有する、
装置。
【請求項１５】
前記距離値が、第一のポリゴンのある原点と前記第一のポリゴンの面との間の距離である、請求項１４記載の装置。
【請求項１６】
前記テクスチャー・マップがキューブ・マップであり、前記衝突検出アルゴリズムが前記一つまたは複数の検索インデックスの決定を、前記第一のポリゴンの原点から第二のポリゴンの頂点までの方向ベクトルを決定することによって行い、前記方向ベクトルは前記キューブ・マップの座標対を指定し、前記一つまたは複数の検索インデックスは、前記方向ベクトルによって指定された前記キューブ・マップの座標対を囲む一つまたは複数のキューブ・マップ・ピクセルのテクスチャー座標を指定する、請求項１５記載の装置。
【請求項１７】
前記メモリが、動的ランダム・アクセス・メモリ（DRAM）、静的ランダム・アクセス・メモリ（SRAM）または不揮発性メモリのうちの一つを含む、請求項１４記載の装置。
【請求項１８】
前記衝突検出アルゴリズムを受信するアンテナをさらに有する、請求項１４記載の装置。
【請求項１９】
前記アンテナが、ダイポール・アンテナ、狭帯域蛇行線アンテナ（MLA）、広帯域MLA、逆「F」型アンテナ、平面状逆「F」型アンテナ、グーバー・アンテナまたはパッチ・アンテナのうちの一つを含む、請求項１８記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、三次元（3D）グラフィックスにおける衝突検出（collision  detection）に関する。
【背景技術】
【０００２】
三次元（3D）グラフィックスにおける衝突検出（collision  detection）は、二つのオブジェクト、典型的にはリンクされた、三角形のようなポリゴンからなる剛体が互いに接しているかどうかを判別する過程である。通例、これはあるオブジェクトの三角形が別のオブジェクトの三角形と空間的にかちあうかどうかを計算するアルゴリズムを実装するプロセッサをもつことによって行われる。この問題へは多様なアプローチがあるが、あらゆる標準的な解決策では、前記プロセッサを使って実行する計算は、八分木（octree）のような空間的データ構造を使ってオブジェクトからオブジェクトへの衝突について試験し、交差候補であると示されている包摂ボリューム（bounding  volume）をもつオブジェクトについてポリゴンからポリゴンへの衝突を評価するために一連の幾何学的計算を執り行うことを含む。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
中央処理ユニット（CPU）のようなプロセッサにおいて実装されるとき、衝突検出へのこれらの伝統的なアプローチはかなりのコンピューティング資源を占有することがありうる。そうしたコンピューティング資源は、特に3Dゲームのコンテキストでは、物理計算のようなCPU固有のタスクを執り行うこと、あるいは人工知能ルーチンを実装することに費やされるほうがよいかもしれないものである。さらに、グラフィカル処理ユニット（GPU:  graphical  processing  unit）のような専用のグラフィック・プロセッサではなくCPU内で衝突検出を実装することによって、伝統的なアプローチは、現代のグラフィック・テクスチャー・サンプリング・ハードウェアによってサポートされるハードウェア・プリミティブを活用し損なっている。
【課題を解決するための手段】
【０００４】
本願明細書に組み込まれ、本願明細書の一部をなす付属の図面は、本発明の原理と整合する一つまたは複数の実装を例解し、本発明の記載とともにそのような実装を説明する。図面は必ずしも縮尺通りではなく、本発明の原理を例解することに力点が置かれている。
【図面の簡単な説明】
【０００５】
【図１】本発明のいくつかの実装に基づく3Dレンダリング・エンジンまたは装置の諸部分を示す図である。
【図２】本発明のいくつかの実装に基づくプロセスを示すフローチャートである。
【図３】本発明のいくつかの実装に基づくプロセスを示すフローチャートである。
【図４】図２および図３のプロセスを論じるのに有用な例示的なスキームを示す図である。
【図５】図２および図３のプロセスを論じるのに有用な例示的なスキームを示す図である。
【図６】図２および図３のプロセスを論じるのに有用な例示的なスキームを示す図である。
【図７】図２および図３のプロセスを論じるのに有用な例示的なスキームを示す図である。
【図８】本発明のいくつかの実装に基づくシステムを示す図である。
【発明を実施するための形態】
【０００６】
以下の記述は付属の図面を参照する。さまざまな図面の間で、同じまたは類似の要素を特定するために同じ参照符号が使われることがある。以下の記述は、特定の構造、アーキテクチャ、インターフェース、技法などといった個別的な詳細を述べることによって、特許請求される発明のさまざまな側面の十全な理解を提供するものであるが、そのような詳細は説明のために与えられるのであり、限定するものと見なされるべきではない。さらに、当業者は、本開示に照らして、特許請求される本発明のさまざまな側面が、これらの個別的詳細から外れる他の例または実装において実施されてもよいことを理解するであろう。以下の開示においてある種の局面では、無用な詳細で本発明の記述を曇らせることを避けるため、よく知られた装置、回路および方法の記述は省略してある。
【０００７】
図１は、特許請求される発明のいくつかの実装に基づく、3Dレンダリング・エンジン１００の諸部分の簡略化されたブロック図である。エンジン１００は、衝突検出アルゴリズム１０２、テクスチャー・サンプリング器１０４およびテクスチャー・メモリ１０６を含む。当業者は、3Dレンダリング・エンジンが、本発明の実装を埋没させないよう図１からは除外されている他の構成要素（たとえば、テセレーション・ユニット（tessellation  unit）、頂点陰影付け器（vertex  shader）など）を有していてもよいことを認識するであろう。さらに、本発明はこの点に関し限定されるものではないが、図１は、アルゴリズム１０２をテクスチャー・サンプリング器１０４に結合させるために使用されうるピクセル陰影付け器（pixel  shader）１０８を含んでいる。さらに、図１は一つのテクスチャー・サンプリング器１０４を示しているが、当業者は、特許請求される本発明の範囲および精神から外れることなく衝突検出アルゴリズム１０２および／またはメモリ１０６に二つ以上のテクスチャー・サンプリング器が実装および／または結合されてもよいことを認識するであろう。
【０００８】
衝突検出アルゴリズム１０２は、オブジェクト間の衝突を検出するために使用されうるソフトウェアおよび／またはファームウェアの任意の組み合わせを含む検出ルーチンを有しうる。その目的に向け、アルゴリズム１０２は、テクスチャー・サンプリング器１０４に一つまたは複数の検索〔ルックアップ〕インデックスを提供しうる。あるいはまた、アルゴリズム１０２は一つまたは複数の検索インデックスを陰影付け器１０８に提供してもよく、陰影付け器１０８がそれらのインデックスをテクスチャー・サンプリング器１０４に伝達してもよい。サンプリング器１０４は次いでそれらのインデックスを使って、のちにより詳細に説明するようにテクスチャー・メモリ１０６に保持または記憶されているテクスチャー・マップの対応するテクスチャー・アドレスに記憶されている距離データにアクセスしうる。当業者は、アルゴリズム１０２は、エンジン１００をサポートするコンピューティング・システム上で実行される3Dグラフィック・アプリケーション（図示せず）によって派生された（spawned）衝突検出カーネルを有していてもよいことを認識するであろう。あるいはまた、アルゴリズム１０２は、ピクセル陰影付け器１０８によって派生された（spawned）衝突検出カーネルを有していてもよい。当業者はさらに、オブジェクト、幾何形状、ポリゴン、物体および多面体といった用語が交換可能に使用されうることを認識するであろう。
【０００９】
テクスチャー・サンプリング器１０４は、アルゴリズム１０２によって与えられる一つまたは複数の検索インデックスに応答してメモリ１０６内のテクスチャー・データにアクセスすることができるハードウェア、ソフトウェアおよび／またはファームウェアのいかなる組み合わせを有するいかなるテクスチャー・サンプリング論理であってもよい。本発明の諸実装によれば、メモリ１０６に記憶され、サンプリング器１０４によってアクセスされるテクスチャー・データは、のちにより詳細に説明するように距離値を記憶するピクセル（または「テクセル」）の配列〔アレイ〕を有する、キューブ・マップ（cube  map）のようなテクスチャー・マップを含みうる。サンプリング器１０４は次いでアルゴリズム１０２によって提供されるインデックスを使用して関連するテクスチャー・アドレスを決定しうる。このテクスチャー・アドレスが、メモリ１０６に記憶および／または保持されている対応する距離値にアクセスするために使われるものである。サンプリング器１０４は次いで、のちにより詳細に説明するように、それらの距離値を使って補間された距離値を生成し、それらの補間された距離値をアルゴリズム１０２に提供しうる。あるいはまた、サンプリング器１０４はそれらの距離値を陰影付け器１０８に提供してもよく、陰影付け器１０８が補間された距離値を生成し、それらの補間された距離値をアルゴリズム１０２に提供してもよい。
【００１０】
テクスチャー・メモリ１０６は、距離値のようなテクセル・データを指定する、一つまたは複数のキューブ・マップのような一つまたは複数のテクスチャー・マップを記憶および／または保持するために好適ないかなるメモリ・デバイスまたは機構を有していてもよい。メモリ１０６はランダム・アクセス・メモリ（RAM）型のメモリまたはフラッシュメモリといったいかなる揮発性または不揮発性メモリ技術を含んでいてもよいが、本発明は決してメモリ１０６として使うために採用されるメモリの型によって限定されることはない。
【００１１】
図２は、本発明のいくつかの実装に基づくプロセス２００を例解するフローチャートである。説明の簡単のため、プロセス２００は図１のエンジン１００に関して記述されることがあるが、特許請求される発明はこの点に関して限定されるものではなく、特許請求される発明に基づく適切な装置によってサポートされる他のプロセスまたはスキームも可能である。
【００１２】
プロセス２００は、第一のポリゴンの受領［工程２０２］および第二のポリゴンの受領［工程２０４］をもって始まりうる。いくつかの実装によれば、工程２０２および２０４は、たとえば、衝突検出アルゴリズム１０２が第一および第二の三角形の頂点座標を受領することを含みうる。ここで、前記座標はたとえば、3Dグラフィック・アプリケーション（図示せず）によって実装されうるモデル座標系に関して定義される。そのような3Dグラフィック・アプリケーションは派生（spawn）アルゴリズム１０２であってもよく、三角形のような幾何学的プリミティブをアルゴリズム１０２に供給してもよい。
【００１３】
当業者は、全体的な衝突検出プロセスの一環として、アルゴリズム１０２が、工程２０２および２０４に先立って、3Dグラフィック・オブジェクトを八分木またはkd木のような空間的データ構造を使って単純な拒否段階にすでにかけていてもよいことを認識するであろう。そうする際、アルゴリズム１０２は、一方が工程２０２の第一のポリゴンを含み他方が工程２０４の第二のポリゴンを含む二つのオブジェクトがこの単純な拒否段階を通過しており、さらなる衝突検出試験のための候補であることを判別し終わっていることがありうる。衝突検出プロセスの前記単純な拒否段階を執り行うさまざまな方法についての詳細は、特許請求される本発明の範囲外であり、当技術分野においてよく知られている。
【００１４】
プロセス２００は、距離値を記憶するテクスチャー・マップの生成をも含みうる［工程２０６］。本発明のいくつかの実装によれば、工程２０６は、プロセス２００の他のいかなるステップにも先立って行われる前処理段階においてアプリケーション・ソフトウェアによって執り行われうる。本発明の他の実装では、工程２０６は、プロセス２００の他の工程と並行してランタイムでアプリケーション・ソフトウェアによって執り行われうる。いずれにせよ、本発明は工程２０６がいつ執り行われるかによって限定されるものではない。
【００１５】
図３は、本発明のいくつかの実装に基づき、プロセス２００の工程２０６に基づいて距離値を記憶するテクスチャー・マップを生成するために執り行われうるプロセス３００を例解するフローチャートである。説明の簡単のため、プロセス３００は図１のエンジン１００に関して記載されうるが、特許請求される発明はこの点に関して限定されるものではなく、特許請求される本発明に基づく適切な装置によってサポートされる他のプロセスまたはスキームも可能である。
【００１６】
図４は、代表的なキューブ・マップ・ラベル付け方式４００を例解している。これは、プロセス３００および／または関係したプロセスの議論を助けるものの、いかなる仕方であれ特許請求される本発明を限定するものと解釈すべきではない。スキーム４００は、3Dキューブ・マップ・プリミティブ４０２を示している。これは、当業者は認識するであろうが、たとえばDirectXのようなよく知られた3Dグラフィック・アプリケーションによって定義されるような標準的なキューブ・マップ・プリミティブに対応しうる。ただし、本発明は、特定のキューブ・マップ・プリミティブに限定されない。マップ４０２は、立方体の面として配置された６つの二次元（2D）テクスチャー・マップ４０４〜４０９からなっていてもよい。ここで、マップ４０４〜４０９の各マップは８×８のピクセルの配列を有していてもよく、マップ４０４〜４０９の各ピクセルは浮動小数点の距離値を記憶することができてもよい。これについてはのちにより詳細に説明する。しかしながら、本発明は、マップ４０４〜４０９の特定の解像度に限定されるものではなく、また本発明はマップ４０４〜４０９内のピクセル位置に記憶される前記データ型に限定されるものでもない。さらに、当業者は、3Dキューブ・マップ４０２のマップ４０４〜４０９の各マップが、マップ４０４〜４０９の特定のピクセルを指定するインデックスを使うことによってアクセスされうる値の検索テーブルとして扱われてもよいことを認識するであろう。
【００１７】
当業者は認識するであろうように、2Dマップ４０４〜４０９の各ピクセルについての座標は、キューブ・マップ４０２の原点４１２を起点とする3D方向ベクトル４１０によってインデックスされてもよい。本発明のいくつかの実装では、原点４１２は、のちにさらに詳細に説明するように、ポリゴンのようなオブジェクトの重心（centroid）に対応してもよい。しかしながら、本発明は、原点４１２を定義する仕方に限定されるものではなく、よって、たとえば原点４１２はオブジェクトの外心（circumcenter）であってもよい。当業者はさらに、一セットのベクトルの各ベクトルが2Dマップ４０４〜４０９のうちのあるマップの対応するピクセルを通過するよう、一セットの一意的な方向ベクトルが定義されうることを認識するであろう。たとえば、ベクトル４１０はマップ４０８のピクセル４１４を通過する。ここで、マップ４０８はキューブ・マップ４０２の＋X面に対応するものであり、ピクセル４１４はマップ４０２の特定の(u,v)テクスチャー座標対に対応する。こうして、ベクトル４１０は、原点４１２と、ピクセル４１４に対応するテクスチャー座標対とによって定義されうる。
【００１８】
本発明のいくつかの実装によれば、原点４１２は、オブジェクトの重心またはオブジェクトの外心であってもよい。しかしながら、本発明はこの点に関して限定されるものではなく、原点４１２はオブジェクト内にあるいかなる点であってもよい。さらに、プロセス２００および３００において用いられるテクスチャー・プリミティブはキューブ・マップ・プリミティブを含みうるが、本発明はこの点に関して限定されるものではなく、よって、たとえばプロセス２００および３００は、６つを超える2D面を用いるテクスチャー・プリミティブ、あるいはたとえば放物面もしくは球面状のテクスチャー・プリミティブといった他の3Dテクスチャー・プリミティブを使って執り行われてもよい。
【００１９】
プロセス３００は、前記第一のポリゴンの原点の決定をもって始まりうる。ここで、そのポリゴンはプロセス２００の工程２０２で受領されたのと同じポリゴンである。当業者は、工程３０２に基づいてポリゴンの原点を決定する一つの方法として、ポリゴンの包摂球（bounding  sphere）を決定するよく知られた技法を認識するであろう。議論のために、図５は、工程３０２のいくつかの実装に基づいて包摂球を決定するスキーム５００を例解している。図解の目的のため、図５は包摂球５０２および関連するポリゴン５０４を2Dで示しているが、工程３０２の実装は3Dポリゴン上で執り行われ、結果として3Dの包摂球を与えてもよい。
【００２０】
当業者は、包摂球５０２は、球５０２のスカラー半径５０５が球の中心５０６からポリゴン５０４の任意の点までの最大距離を定義するようなポリゴン５０４を包含する仮想の球面を表していることを認識するであろう。そのように定義されるとき、球５０２の中心５０６はポリゴン５０４の重心を表す。よって、工程３０２の結果として、前記第一のポリゴンの重心のような原点が決定されうる。しかしながら、上記のように、本発明はオブジェクトの原点が決定または定義される仕方には限定されない。こうして、本発明によれば、プロセス３００によって処理されるべき3Dオブジェクトの原点を決定するために任意の手段が使用できる。
【００２１】
プロセス３００は、キューブ・マップ・プリミティブの受領に続きうる［工程３０４］。ここで、そのプリミティブは、テクスチャー・ピクセルの６つの2D配列を含む。上で論じたように、キューブ・マップはよく知られた型の3Dグラフィック・プリミティブである。プロセス３００は次いで、前記原点に発してキューブ・マップのピクセルを通る方向沿いでの、前記第一のポリゴンの原点から前記第一のポリゴンの面との交差点までの距離値の決定に続きうる［工程３０６］。
【００２２】
図６は、工程３０６のいくつかの実装に基づく距離値を決定するスキーム６００を例解している。図６は、ポリゴン６０２およびキューブ・マップ６０４の2D断面を示している。例解の目的のため、図６はポリゴン６０２およびマップ６０４の2D断面を示しているが、工程３０６の実装は、3Dキューブ・マップに関して距離値の決定につながる3Dポリゴン上で執り行われてもよい。図６は、マップ６０４の一つの面６０８のピクセルP1〜P7の一つの行６０６を示している。ここで、工程３０６のいくつかの実装によれば、距離値は、８つの一意的な方向６１２に沿って決定されうる。ここで、方向６１２のそれぞれは、ポリゴン６０２の原点６１４に始まり、ピクセル６０６のうち別個のものを通る。こうして、たとえば、ピクセルP7を通る方向６１６はポリゴン６０２の面との交差６１８をもち、原点６１４とピクセルP7の位置との間のテクスチャー空間単位での距離として定義される距離値６２０をもつ。同様にして、工程３０６に基づく距離値が図６のすべての方向６１２について、またキューブ・マップ６０４の残りのピクセルについての他のすべての方向（図示せず）について、決定されうる。
【００２３】
図６が断面を示すキューブ・マップ６０４は、マップ６０４の各面が８×８のピクセルの配列を有してもよくキューブ・マップ６０４が全部で144個のピクセルを含みうるようなものだが、本発明はプロセス２００および３００において用いられるキューブ・マップの特定の解像度には限定されない。よって、たとえば、工程３０６は、プロセス３００において処理された各ポリゴンについて異なる解像度のキューブ・マップをもって執り行われてもよい。たとえば、工程３０２で受領されたキューブ・マップは、６つの2Dの１６×１６のピクセル配列を含んでいて、プロセス２００および３００で用いられるキューブ・マップは全部で1536個のピクセルを含んでいてもよい。あるいはまた、工程３０２で受領されるキューブ・マップは６つの2Dの４×４のピクセル配列を含んでいて、プロセス２００および３００で用いられるキューブ・マップは全部で96個のピクセルを含んでいてもよい。さらに、当業者は、工程３０６が、あるサブセットの諸方向のみ（たとえば方向６１２のあるサブセットのみ）に沿っての距離値を決定することによって執り行われてもよく、残りの距離値は工程３０６で決定された距離値の対の間の線形補間によって決定されてもよいことを認識するであろう。
【００２４】
プロセス３００は、距離値をキューブ・マップのピクセル値として記憶することに続きうる［工程３０８］。本発明のいくつかの実装によれば、工程３０８は、工程３０６において決定された各距離値を、その距離値に関連付けられた方向上に載っているピクセルのピクセル値として記憶することを含みうる。たとえば、工程３０６が方向６１６に関連付けられた距離値６２０を決定することを含む場合、工程３０８は、距離値６２０を、方向６１６上にあるピクセルP7のピクセル値として記憶することを含みうる。本発明のいくつかの実装では、工程３０６で決定され工程３０８で記憶されるそれらの距離値は、浮動小数点値であってもよい。ただし、本発明の特定のデータ・フォーマットをもつ距離値に限定されるものではない。
【００２５】
さらに、本稿で与えられる詳細な記述はポリゴン５０４またはポリゴン６０２のような凸ポリゴンを参照しているが、本発明はこの点に関して限定されるものではなく、プロセス２００／３００において凹ポリゴンが用いられてもよい。当業者は、凸ポリゴンとは、当該オブジェクトの任意の二つの点を結ぶ任意の線分全体が当該オブジェクト内に完全に含まれるオブジェクトとして定義でき、一方、凹ポリゴンとは、オブジェクトの二つの点を結ぶ線分であって当該オブジェクトに完全に含まれないものが見出されてもよいオブジェクトとして定義できることを認識するであろう。
【００２６】
プロセス２００／３００において凹ポリゴンを用いるためには、凹ポリゴンの凸包に対応する包摂ボリュームが決定されうる。ここで、前記凸包包摂ボリュームは、前記オブジェクトのある原点と前記オブジェクトの任意の点との間の最大距離値に対応するスカラー半径をもつ。そのような凸包包摂ボリュームが次いで工程３０２で用いられうる。あるいはまた、凸分解（convex  decomposition）技法を使用して凹幾何形状をより小さな凸幾何形状に細分してもよい。次いで、プロセス２００／３００はそれらの凸サブ幾何形状の間の衝突を検出するために使用されうる。凸包包摂ボリュームおよび凸分解技法はいずれも当技術分野においてよく知られたものであり、本稿ではこれ以上詳細に論じることはしない。
【００２７】
再びプロセス２００を参照すると、本発明のいくつかの実装では、3Dグラフィック・アプリケーションのようなアプリケーションは、前処理段において（すなわち、プロセス２００が執り行われる前に）プロセス３００のすべての工程を執り行って、結果として得られるテクスチャー・マップを工程２０６でアルゴリズム１０２に供給してもよい。あるいはまた、本発明の他の実装では、アルゴリズム１０２は、エンジン１００によって実装される3Dレンダリングの間に起こる各衝突検出イベントに応答して、動的な仕方でプロセス３００を執り行ってもよい。さらに、工程２０２で受領される各ポリゴンについて、そのポリゴンについての距離値を記憶する関連付けられたキューブ・マップがプロセス３００で作成され（すなわち工程２０６で生成され）終わっていて、プロセス３００のさらなる諸工程で使用されてもよい。これについてはのちにより詳細に説明する。本発明のいくつかの実装によれば、プロセス３００は、メモリ１０６内で保持または記憶されるキューブ・マップであって特定のポリゴンについての諸距離値を記憶するキューブ・マップを結果として与えてもよい。
【００２８】
プロセス２００は、前記第一のポリゴンのある原点から前記第二のポリゴンのある頂点への第一の距離値を決定することに続きうる［工程２０８］。ここで、前記第一の距離は、前記第一のポリゴンの前記原点から前記第二のポリゴンのある頂点まで延びる方向ベクトル沿いにある距離である。図７は、工程２０８のいくつかの実装に基づく第一の距離値を決定するスキーム７００を例解している。
【００２９】
図７は、第一のポリゴン７０２および第二のポリゴン７０４を示している。ここで、工程２０８のいくつかの実装によれば、第一の距離値７０５は、ポリゴン７０２の原点７０６とポリゴン７０４の頂点７０８との間で、原点７０６に発して頂点７０８を通る方向ベクトル７１０沿いで決定されうる。同様に、たとえば工程２０８は、原点７０６とポリゴン７０４の頂点７１４の間の第一の距離値７１２を原点７０６に発して頂点７１４を通る方向ベクトル７１５沿いで決定することを含みうる。例示の目的のため、図７はポリゴン７０２および７０４の2D断面を示しているが、工程２０８の実装は3Dポリゴンに関して執り行われ、3D座標によって定義される方向ベクトル沿いの第一の距離値の決定を結果として与えてもよい。本発明のいくつかの実装では、工程２０８は、前記第一および第二のポリゴンをそれぞれ工程２０２および２０４において受領した後に、アルゴリズム１０２によって執り行われてもよい。
【００３０】
プロセス２００は次いで、テクスチャー・マップの一つまたは複数回の検索を実行することによって、前記第一のポリゴンの原点から前記第一のポリゴンのある面への、ある方向ベクトルに沿った第二の距離の決定に続きうる［工程２１０］。本発明のいくつかの実装では、再び図７を参照すると、工程２１０は、たとえば方向ベクトル７１０に沿っての原点７０６からポリゴン７０２の面７２２までの第二の距離７２０を決定することを含みうる。この例において、第二の距離７２０を決定することは、工程２０６で生成されたテクスチャー・マップのピクセル７２５および７２６に記憶された（すなわち工程３０８において）距離値（すなわち３０６で決定されたもの）を検索し、次いでそれらの距離値の間を線形補間して工程２１０で第二の距離７２０を得ることを含みうる。
【００３１】
同様に、たとえば工程２１０は、方向ベクトル７１５に沿っての原点７０６からポリゴン７０２の面７２２への第二の距離７２４を決定することを含みうる。その際、この例において、第二の距離７２４を決定することは、工程２０６で生成されたテクスチャー・マップのピクセル７２７および７２８に記憶されている距離値を検索し、それらの距離値の間を線形補間して工程２１０で第二の距離７２４を得ることを含みうる。本発明のいくつかの実装では、工程２１０は、アルゴリズム１０２が前記諸ピクセル（たとえばピクセル７２５および７２６またはピクセル７２７および７２８）に関連付けられた検索インデックスをテクスチャー・サンプリング器１０４に提供することを含みうる。サンプリング器１０４は次いでそれらのインデックスを使って、メモリ１０６に記憶されているキューブ・マップの対応するピクセルについての距離値にアクセスするための対応するメモリ・アドレスを生成する。サンプリング器１０４は次いでそれらの距離値の間を線形補間して、結果としての補間された距離値をアルゴリズム１０２に提供しうる。あるいはまた、サンプリング器１０４が前記距離値をアルゴリズム１０２に提供し、アルゴリズム１０２がそれらの値の間を線形補間して工程２１０で第二の距離を決定してもよい。
【００３２】
方向ベクトル７１０および７１５のそれぞれは、図７では、それぞれピクセル７２５と７２６の間およびピクセル７２７と７２８の間にあるテクスチャー座標対を通るまたは指定するものとして示されているが、本発明は図７に示される2D表現に限定されるものではない。こうして、たとえば、方向ベクトル７１０および７１５のいずれも、キューブ・マップのある面の二つのピクセル行またはピクセル列の間にあるテクスチャー座標対を通るまたは指定することができる。こうして、工程２１０は、そのテクスチャー座標対を囲む４つのピクセルに記憶された距離値にアクセスするために４つの検索インデックスを使い、それら４つの距離値の間で双線形補間して第二の距離値を得ることを含みうる。しかしながら、本発明は、線形補間（双線形、三重線形または他のものであれ）に限定されるものではない。こうして、たとえば、工程２１０は、テクスチャー・マップから得られた距離値の最近接点サンプリングを使って執り行われてもよい。
【００３３】
本発明の他の実装では、工程２１０は、アルゴリズム１０２がピクセル陰影付け器１０８に前記諸ピクセル（たとえばピクセル７２５および７２６またはピクセル７２７および７２８）に関連付けられた検索インデックスを提供することを含んでいてもよく、陰影付け器１０８はこれらのインデックスをテクスチャー・サンプリング器１０４に伝達してもよい。サンプリング器１０４は次いでそれらのインデックスを使ってメモリ１０６に記憶されているキューブ・マップの対応するピクセルについての距離値にアクセスするための対応するメモリ・アドレスを生成し、それらの距離値を陰影付け器１０８に提供してもよい。陰影付け器１０８は次いでそれらの距離値の間を線形補間して、結果として得られる補間された距離値をアルゴリズム１０２に与えてもよい。あるいはまた、陰影付け器１０８は距離値をアルゴリズム１０２に与え、アルゴリズム１０２がそれらの値の間を線形補間して工程２１０において第二の距離を決定してもよい。
【００３４】
プロセス２００は次いで、前記第一の距離値を前記第二の距離値と比べ［工程２１２］、前記第二の距離が前記第一の距離以上であれば、前記第一および第二のポリゴンの間の衝突を検出する［工程２１６］ことに続きうる。再び図７を参照すると、工程２１２は、たとえば、第一の距離７０５を方向ベクトル７１０に沿った第二の距離７２０に比較することを含みうる。この場合、第一の距離７０５のほうが第二の距離７２０より大きく、衝突は検出されない。しかしながら、工程２１２は、別の例については、第一の距離７１２を方向ベクトル７１５に沿った前記第二の距離７２４と比較することを含みうる。この場合、第二の距離７２４のほうが第一の距離７１２より大きく、よって工程２１６で衝突が検出されうる。本発明のいくつかの実装では、アルゴリズム１０２は工程２１２の比較を執り行い、第二の距離が第一の距離以上であれば工程２１６で衝突が起こったことを決定しうる。
【００３５】
上記の工程２０８および２１０はそれぞれ第一および第二の距離を決定することに言及し、工程２１２はこれら二つの距離を互いと比較することに言及しているが、本発明の他の実装では、プロセス２００は、それらの距離の平方を決定し、次いでそれらの平方距離値を互いと比較する工程を工程２１２に含んでいてもよい。こうして、これらの実装では、工程２１４は、第二の距離の平方が第一の距離の平方以上であるかどうかを判定することを含みうる。しかしながら、本発明は、工程２１２において距離または距離の平方を比較することに限定されるものではない。よって、たとえば、プロセス２００は、それらの距離の平方根を決定し、それらの平方根距離値を互いと比較することを工程２１２において含んでいてもよい。
【００３６】
図２および図３に示された諸工程は示された順序で実装される必要はないし、必ずしも全部の工程が実行される必要はない。また、他の工程に依存しない工程は該他の工程と並列に実行されてもよい。たとえば、工程２０２および２０４は並列に執り行われてもよい。あるいはまた、工程２０２および２０４は単一の動作に組み合わされてもよい。換言すれば、第一および第二のポリゴンの受領は単一の動作で行われてもよい。さらに、上記したように、工程２０６、キューブ・マップの生成は、本発明のいくつかの実装によれば、プロセス２００の他のすべての工程に先立って行われてもよいし、あるいはまた工程２０６は工程２０２もしくは２０４の後にまたは工程２０２もしくは２０４と並列に行われてもよい。さらに、この図における工程の少なくともいくつかは、機械可読媒体に具現された命令または命令の群として実装されてもよい。
【００３７】
本発明のいくつかの実装では、プロセス２００および／または３００において用いられるアルゴリズム１０２は次の擬似コードを含んでいてもよい。
【００３８】
【表１】
2009545075.tif 000003
本発明の他の実装では、プロセス２００および／または３００において用いられるアルゴリズム１０２は、エンジン１００のピクセル陰影付け器１０８によって派生され（spawned）あるいはエンジン１００のピクセル陰影付け器１０８と関連付けられてもよく、次の高レベル陰影付け言語（HLSL:  high  level  shading  language）ピクセル陰影付け器コードを含んでいてもよい。
【００３９】
【表２】
2009545075.tif 000004
【００４０】
【表３】
2009545075.tif 000005
【００４１】
【表４】
2009545075.tif 000006
【００４２】
【表５】
2009545075.tif 000007
図８は、本発明のいくつかの実装に基づく例示的なシステム８００を示す。システム５００は二つ以上の処理コア８０３を有するホスト・プロセッサ８０２、グラフィック・プロセッサ８０４、メモリ８０６および８０８（たとえば、動的ランダム・アクセス・メモリ（DRAM）、静的ランダム・アクセス・メモリ（SRAM）、不揮発性メモリなど）、バスもしくは通信路（単数または複数）８１０、ネットワーク・インターフェース８１４（たとえば有線および／または無線の構内ネットワーク（LAN）および／または広域ネットワーク（WAN）および／またはパーソナル・エリア・ネットワーク（PAN）および／または他の有線および／または無線のネットワーク・インターフェース）ならびにディスプレイ・プロセッサおよび／またはコントローラ８１６を含んでいてもよい。システム８００はまた、ネットワーク・インターフェース８１４に結合されたアンテナ８１５（たとえば、ダイポール・アンテナ、狭帯域蛇行線アンテナ（MLA:  Meander  Line  Antenna）、広帯域MLA、逆「F」型アンテナ、平面状逆「F」型アンテナ、グーバー（Goubau）アンテナ、パッチ・アンテナなど）をも含んでいてもよい。システム８００は、3Dグラフィック・データを処理してそのデータを表示装置（図示せず）上での呈示に好適なラスタ化されたフォーマットで提供するのに好適ないかなるシステムであってもよい。表示装置は、若干の例を挙げれば、液晶ディスプレイ（LCD）または陰極線管（CRT）ディスプレイといったものである。
【００４３】
システム８００は、多様な物理的実装形態をとりうる。たとえば、システム８００は、パーソナル・コンピュータ（PC）、ネットワーク接続されたPC、サーバー・コンピューティング・システム、ハンドヘルド型コンピューティング・プラットフォーム（たとえば携帯情報端末（PDA））、ゲーム・システム（携帯型であってもなくてもよい）、3D対応携帯電話端末機などにおいて実装されてもよい。さらに、システム８００の全コンポーネントは、システム・オン・チップ（SOC:  system-on-a-chip）集積回路（IC）のような単一のデバイス内に実装されてもよいが、システム８００のコンポーネントは複数のICまたはデバイスにまたがって分散されてもよい。たとえば、ホスト・プロセッサ８０２はコンポーネント８０６および８１４とともに、単一のPCに含まれる複数のICとして実装されてもよく、一方でグラフィック・プロセッサ８０４ならびにコンポーネント８０８および８１６はホスト・プロセッサ８０２およびコンポーネント８０６および８１４に通信路８１０を通じて結合された、テレビまたは他のディスプレイといった別個の装置内に実装されてもよい。
【００４４】
ホスト・プロセッサ８０２は、グラフィック・プロセッサ５０４に3Dグラフィック・データおよび／または命令を提供できるいかなる制御および／または処理論理、ハードウェア、ソフトウェアおよび／またはファームウェアを含む特殊目的または汎用のプロセッサを含んでいてもよい。プロセッサ８０２は、3D座標変換などといった多様な3Dグラフィック計算を実行しうる。その結果は、バス８１０を通じてグラフィック・プロセッサ８０４に提供されてもよく、および／またはそれはプロセッサ８０４による最終的な使用のためにメモリ８０６および／または８０８内に記憶されてもよい。本発明のいくつかの実装では、ホスト・プロセッサ８０２は中央処理ユニット（CPU）であってもよい。
【００４５】
ある実装では、ホスト・プロセッサ８０２は、キューブ・マップを使ったリアルタイムの多重解像度の（multi-resolution）3D衝突検出をサポートするまたは可能にするいくつかのタスクの任意のものを実行することができてもよい。サポート・タスクはたとえば、本発明がこの点に関して限定されるものではないが、3Dグラフィック・データをグラフィック・プロセッサ８０４に提供すること、キューブ・マップのような一つまたは複数のテクスチャー・マップをメモリ８０８に入れること、マイクロコードを（アンテナ８１５およびインターフェース８１４を介して）プロセッサ８０４にダウンロードすること、プロセッサ８０４内のレジスタを初期化および／または設定すること、割り込みサービスならびに3Dグラフィック・データのアップロードおよび／またはダウンロードのためのバス・インターフェースを設けることを含みうる。代替的な諸実装では、これらの機能の一部または全部はグラフィック・プロセッサ８０４によって実行されてもよい。図５はホスト・プロセッサ８０２およびグラフィック・プロセッサ８０４を相異なるコンポーネントとして示しているが、本発明はこの点に関して限定されるものではない。当業者はプロセッサ８０２および８０４に可能性としてはシステム８００の他のコンポーネントも加えて、単一のIC内に実装されてもよいことを認識するであろう。
【００４６】
本発明のいくつかの実装によれば、コア８０３のそれぞれが、並列に、衝突検出アルゴリズム１０２の別個の実装を使ってポリゴンの別々の対についてプロセス２００／３００を並列して実行してもよい。あるいはまた、そのような並列処理方式はグラフィック・プロセッサ８０４によって実装されてもよい。
【００４７】
グラフィック・プロセッサ８０４は、グラフィック・データを処理する機能をもついかなる処理論理、ハードウェア、ソフトウェアおよび／またはファームウェアを有していてもよい。ある実装では、グラフィック・プロセッサ８０４は、一つまたは複数の標準化されたレンダリング用アプリケーション・プログラミング・インターフェース（API）に従ってグラフィック・データを処理する機能のある3Dグラフィック・アーキテクチャを実装してもよい。そのようなAPIは、若干の名前を挙げれば、OpenGL2.0（商標）（「The  OpenGL  Graphics  System:  A  Specification」）（バージョン2.0、2004年10月22日）およびDirectX9.0（商標）（バージョン9.0c、2004年8月8日）といったものである。ただし、本発明はこの点に関して限定されるものではない。グラフィック・プロセッサ８０４はホスト・プロセッサ８０２によって提供される、メモリ８０６および／または８０８内に保持もしくは記憶されている、および／またはシステム８００の外部のソースによって提供され、バス８１０を通じてインターフェース８１４から得られる3Dグラフィック・データを処理しうる。
【００４８】
グラフィック・プロセッサ８０４は3Dシーン・データの形で3Dグラフィック・データを受領し、そのデータを処理して画像データを、ディスプレイ・プロセッサ８１６によるディスプレイ固有データへの変換のために好適なフォーマットで提供しうる。さらに、グラフィック・プロセッサ８０４は、テクスチャー・サンプリング器１０４と同様の一つまたは複数のテクスチャー・サンプリング器に加えて、ラスタ化器段など、多様な3Dグラフィック処理コンポーネントおよび／または段（図示せず）を実装しうる。グラフィック・プロセッサ８０４によって実装されるテクスチャー・サンプリング器は、メモリ８０６および８０８の一方または両方においてキューブ・マップの形で記憶または保持されているテクスチャー・データを取ってくるまたはこれにアクセスすることができる。さらに、本発明のいくつかの実装によれば、グラフィック・プロセッサ８０４は、並列的な仕方でポリゴンの複数の対について衝突検出を執り行うために一つまたは複数のキューブ・マップに記憶されている距離値を使うことができる二つ以上のテクスチャー・サンプリング器を実装してもよい。
【００４９】
バスまたは通信路（単数または複数）８１０は、システム８００の要素のうちの任意のものの間で情報（たとえばグラフィック・データ、命令など）を伝達するためのいかなる機構を有していてもよい。たとえば、本発明はこの点に関して限定されるものではないが、通信路（単数または複数）８１０は、プロセッサ８０２とプロセッサ８０４の間でたとえば命令（たとえばマクロコード）を伝達することができる多目的バスを有していてもよい。あるいはまた、経路（単数または複数）８１０は無線通信路を有していてもよい。
【００５０】
ディスプレイ・プロセッサ８１６は、グラフィック・プロセッサ８０４によって供給されるラスタ化された画像データをディスプレイを駆動するために好適なフォーマット（すなわちディスプレイ固有データ）に変換する機能のあるいかなる処理論理、ハードウェア、ソフトウェアおよび／またはファームウェアを有していてもよい。たとえば、本発明はこの点に関して限定されるものではないが、プロセッサ８０４は、画像データをプロセッサ８１６に、特定の色データ・フォーマットで、たとえば圧縮された赤・緑・青（RGB）フォーマットで、提供してもよく、プロセッサ８１６はそのようなRGBデータを、たとえば対応するLCD駆動データ・レベルを生成することなどによって処理してもよい。図８は、プロセッサ８０４および８１６を相異なるコンポーネントとして示しているが、本発明はこの点に関して限定されるものではない。当業者は、たとえば、ディスプレイ・プロセッサ８１６の機能のすべてとは言わないまでも一部が、グラフィック・プロセッサ８０４および／またはホスト・プロセッサ８０２によって実行されてもよいことを認識するであろう。
【００５１】
こうして、キューブ・マップのようなハードウェア・プリミティブを利用することによって、本発明に基づく衝突検出アルゴリズムは、プロセッサ８０４のようなグラフィック・プロセッサ上で完全に実行されうる。例外は、可能性としては、各ポリゴンについて一度実装され、プロセス２００の前に行われうるプロセス３００の前処理である。さらに、本発明に基づく衝突検出アルゴリズムは、オブジェクト‐オブジェクト検出を最小にするために高レベルの八分木構造をレバレッジすることができ、八分木構造によって候補として識別されるオブジェクト‐オブジェクト相互作用についてキューブ・マップに依拠してもよい。このように、衝突検出アルゴリズムをグラフィック・プロセッサ（たとえばプロセッサ８０４）に移すことによって、CPU（たとえばホスト・プロセッサ８０２）は他のタスクを執り行うために解放されうる。ただし、本発明に基づく衝突検出アルゴリズムはCPU上でも実行されうる。さらに、キューブ・マップのようなハードウェア・プリミティブを使って衝突を検出することは、衝突当たりの算術演算の著しい減少（可能性としては３分の１への減少）につながることがありえ、完全に独立な衝突検出試験を実行する機能のため、多数処理コア実装（たとえば、複数のコア８０３を使った実装）になじみやすい。
【００５２】
特許請求される発明と整合する一つまたは複数の具現についての以上の記載は本発明の例解および記述を与えるものながら、網羅的であることは意図されていないし、開示されている個別的な実装に本発明の範囲を限定することも意図されていない。明らかに、修正および変形が上記の教示に照らして可能であり、本発明のさまざまな実装の実践から取得されることもありうる。たとえば、図１および対応する本文は単一のテクスチャー・メモリ１０６に結合された単一のテクスチャー・サンプリング器１０４を図示し、記述しているかもしれないが、当業者は、本発明に基づくデータ・プロセッサが、一つまたは複数のテクスチャー・メモリに結合された、それぞれが本発明に従って動作する複数のテクスチャー・サンプリング器を用いるレンダリング・エンジンを含んでいてもよいことを認識するであろう。明らかに、本発明に基づくキューブ・マップを使ったリアルタイムの多重解像度の3D衝突検出を提供するためには、多くの他の実装が用いられうる。
【００５３】
本願の本記載において述べられているいかなる装置、要素、工程、データ型、命令等も、明示的にそう記載されているのでない限り、本発明にとって決定的または本質的であると解釈されるべきではない。また、ここでの用法では、単数形の表現は一つまたは複数の項目を含むことが意図されている。さらに、本稿または付属の請求項で「結合された」または「応答する」または「通信している」といった用語または句が使用されるときは、これらの用語は広義に解釈されることが意図されている。たとえば、「結合された」という句は、その句が使われている前後関係に適切なように、通信上結合されている、電気的に結合されている、および／または動作上結合されていることを指しうる。特許請求される発明の上記の実施形態に対して、本発明の精神および原理から実質的に外れることなく、変形および修正をなしうる。そのようなすべての修正および変形は、本開示の範囲内に含められ、付属の請求項によって保護されることが意図されている。
【図１】
2009545075.tif 000008
【図２】
2009545075.tif 000009
【図３】
2009545075.tif 000010
【図４】
2009545075.tif 000011
【図５】
2009545075.tif 000012
【図６】
2009545075.tif 000013
【図７】
2009545075.tif 000014
【図８】
2009545075.tif 000015
【国際調査報告】
2009545075.tif 000016
2009545075.tif 000017