(57)【特許請求の範囲】
【請求項１】
ＣＡＤシステムにおいて表される第１のオブジェクトおよび第２のオブジェクトの間の最小並進ベクトル（ＭＴＶ）を求める方法であって、
ＣＡＤシステムが、第１のオブジェクトおよび第２のオブジェクトを受け取るステップと、
前記ＣＡＤシステムが、前記第１オブジェクトおよび前記第２のオブジェクトを個々のファセットにテッセレーションするステップと、
前記ＣＡＤシステムが、前記第１のオブジェクトおよび前記第２のオブジェクトのそれぞれについて前記ファセットの境界ボリュームツリーを形成するステップと、
前記ＣＡＤシステムが、前記境界ボリュームツリーについて貪欲処理を実行して、修正ＭＴＶを生成するステップと、
前記ＣＡＤシステムが、前記境界ボリュームツリーおよび前記修正ＭＴＶに従って連続クリッピング処理を実行して、最終ＭＴＶを生成するステップと、
コンピュータ読み取り可能な媒体に前記最終ＭＴＶを保存するステップと、
を有し、
前記貪欲処理は、
初期データをロードするステップと、
ツリーレベルと、ＭＴＶを中心とするクリッピングウインドウとを初期化するステップと、
ツリーレベルが最大ツリーレベル以下であるとき、前記ツリーレベルおよび前記クリッピングウインドウを用いてボクセル処理を実行して、修正ＭＴＶを求めるステップと、
前記修正ＭＴＶを保存し、かつ、前記修正ＭＴＶを出力するステップと、
を有し、
前記ボクセル処理は、
ボクセル初期データをロードするステップと、
前記クリッピングウインドウのボクセルモデルを構築するステップと、
境界ボリュームツリー間のミンコフスキー差を計算するステップと、
前記クリッピングウインドウと前記ミンコフスキー差との間に重なりが存在するとき、前記ボクセルモデル内の各ボクセルにマークするステップと、
前記マークしたボクセルのうちから少なくとも１つの候補ボクセルを決定し、かつ、原点からの距離が最小のベクトルを有する候補ボクセルを求めるステップと、
前記原点からの距離が最小のベクトルを前記修正ＭＴＶとして出力するステップと、
を有し、
前記連続クリッピング処理は、
クリッピング処理の初期データをロードするステップと、
現在のＭＴＶを含み、従前のクリッピングウインドウよりも原点に近いクリッピングウインドウを構築し、
前記ツリーレベルおよび前記クリッピングウインドウを用いるボクセル処理を実行し、修正ＭＴＶを求めるステップと、
前記修正ＭＴＶが前記クリッピングウインドウ内にないとき、前記構築ステップおよび前記ボクセル処理ステップを繰り返すステップと、
前記修正ＭＴＶを保存し、かつ、前記修正したＭＴＶを最終ＭＴＶとして出力するステップと、
を有する、
ことを特徴とする方法。
【請求項２】
前記初期データには、最小レベル、最大レベル、クリッピングウインドウサイズ、境界ボリュームツリーおよび現在のＭＴＶの少なくとも１つが含まれる、請求項１記載の方法。
【請求項３】
ボクセル初期データには、ツリーレベル、クリッピングが真か偽かを示す「ボックス使用」値、前記クリッピングウインドウ、前記境界ボリュームツリーおよび現在のＭＴＶのうちの少なくとも１つが含まれる、請求項１または２記載の方法。
【請求項４】
プロセッサおよびアクセス可能メモリを有し、ＣＡＤシステムにおいて表される第１のオブジェクトおよび第２のオブジェクトの間の最小並進ベクトル（ＭＴＶ）を決定する処理を実行するＣＡＤシステムであって、前記ＣＡＤシステムが、
第１のオブジェクトおよび第２のオブジェクトを受け取り、
前記第１オブジェクトおよび前記第２のオブジェクトを個々のファセットにテッセレーションし、
前記第１のオブジェクトおよび前記第２のオブジェクトのそれぞれについて前記ファセットの境界ボリュームツリーを形成し、
前記境界ボリュームツリーについて貪欲処理を実行して、修正ＭＴＶを生成し、
前記境界ボリュームツリーおよび前記修正ＭＴＶに従う連続クリッピング処理を実行して、最終ＭＴＶを生成し、
コンピュータ読み取り可能な媒体に前記最終ＭＴＶを保存し、
前記貪欲処理として、
初期データをロードし、
ツリーレベルと、ＭＴＶを中心とするクリッピングウインドウとを初期化し、
ツリーレベルが最大ツリーレベル以下であるとき、前記ツリーレベルおよび前記クリッピングウインドウを用いてボクセル処理を実行して、修正ＭＴＶを求め、
前記修正ＭＴＶを保存し、かつ、前記修正ＭＴＶを出力し、
前記ボクセル処理として、
ボクセル初期データをロードし、
前記クリッピングウインドウのボクセルモデルを構築し、
境界ボリュームツリー間のミンコフスキー差を計算し、
前記クリッピングウインドウと前記ミンコフスキー差との間に重なりが存在するとき、前記ボクセルモデル内の各ボクセルにマークし、
前記マークしたボクセルのうちから少なくとも１つの候補ボクセルを決定し、かつ、原点からの距離が最小のベクトルを有する候補ボクセルを求め、
前記原点からの距離が最小のベクトルを前記修正ＭＴＶとして出力し、
前記連続クリッピング処理として、
クリッピング処理の初期データをロードし、
現在のＭＴＶを含み、従前のクリッピングウインドウよりも原点に近いクリッピングウインドウを構築し、
前記ツリーレベルおよび前記クリッピングウインドウを用いるボクセル処理を実行し、修正ＭＴＶを求め、
前記修正ＭＴＶが前記クリッピングウインドウ内にないとき、前記構築ステップおよび前記ボクセル処理ステップを繰り返し、
前記修正ＭＴＶを保存し、かつ、前記修正したＭＴＶを最終ＭＴＶとして出力する、
ことを特徴とするＣＡＤシステム。
【請求項５】
前記初期データには、最小レベル、最大レベル、クリッピングウインドウサイズ、境界ボリュームツリーおよび現在のＭＴＶの少なくとも１つが含まれる、請求項４記載のＣＡＤシステム。
【請求項６】
前記ボクセル初期データには、ツリーレベル、クリッピングが真か偽かを示す「ボックス使用」値、前記クリッピングウインドウ、前記境界ボリュームツリーおよび現在のＭＴＶの少なくとも１つが含まれる、請求項４または５記載のＣＡＤシステム。
【請求項７】
ＣＡＤシステムに設けられたプロセッサに、当該ＣＡＤシステムにおいて表される第１のオブジェクトおよび第２のオブジェクトの間の最小並進ベクトル（ＭＴＶ）を決定するための以下の各ステップを実行させるコンピュータプログラムであって、
第１のオブジェクトおよび第２のオブジェクトを受け取るステップと、
前記第１オブジェクトおよび前記第２のオブジェクトを個々のファセットにテッセレーションするステップと、
前記第１のオブジェクトおよび前記第２のオブジェクトのそれぞれについて前記ファセットの境界ボリュームツリーを形成するステップと、
前記境界ボリュームツリーについて貪欲処理を実行して、修正ＭＴＶを生成するステップと、
前記境界ボリュームツリーおよび前記修正ＭＴＶに従って連続クリッピング処理を実行して、最終ＭＴＶを生成するステップと、
コンピュータ読み取り可能な媒体に前記最終ＭＴＶを保存するステップと、
を有し、
前記貪欲処理として、
初期データをロードするステップと、
ツリーレベルと、ＭＴＶを中心とするクリッピングウインドウとを初期化するステップと、
ツリーレベルが最大ツリーレベル以下であるとき、前記ツリーレベルおよび前記クリッピングウインドウを用いてボクセル処理を実行して、修正ＭＴＶを求めるステップと、
前記修正ＭＴＶを保存し、かつ、前記修正ＭＴＶを出力するステップと、
を該プロセッサに実行させ、
前記ボクセル処理として、
ボクセル初期データをロードするステップと、
前記クリッピングウインドウのボクセルモデルを構築するステップと、
境界ボリュームツリー間のミンコフスキー差を計算するステップと、
前記クリッピングウインドウと前記ミンコフスキー差との間に重なりが存在するとき、前記ボクセルモデル内の各ボクセルにマークするステップと、
前記マークしたボクセルのうちから少なくとも１つの候補ボクセルを決定し、かつ、原点からの距離が最小のベクトルを有する候補ボクセルを求めるステップと、
前記原点からの距離が最小のベクトルを前記修正ＭＴＶとして出力するステップと、
を該プロセッサに実行させ、
前記連続クリッピング処理として、
クリッピング処理の初期データをロードするステップと、
現在のＭＴＶを含み、従前のクリッピングウインドウよりも原点に近いクリッピングウインドウを構築し、
前記ツリーレベルおよび前記クリッピングウインドウを用いるボクセル処理を実行し、修正ＭＴＶを求めるステップと、
前記修正ＭＴＶが前記クリッピングウインドウ内にないとき、前記構築ステップおよび前記ボクセル処理ステップを繰り返すステップと、
前記修正ＭＴＶを保存し、かつ、前記修正したＭＴＶを最終ＭＴＶとして出力するステップと、
を該プロセッサに実行させる、
ことを特徴とするプログラム。
【請求項８】
前記初期データには、最小レベル、最大レベル、クリッピングウインドウサイズ、境界ボリュームツリーおよび現在のＭＴＶの少なくとも１つが含まれる、請求項７記載のプログラム。
【請求項９】
ボクセル初期データには、ツリーレベル、クリッピングが真か偽かを示す「ボックス使用」値、前記クリッピングウインドウ、前記境界ボリュームツリーおよび現在のＭＴＶの少なくとも１つが含まれる、請求項７または８記載のプログラム。
【請求項１０】
請求項７乃至９記載のいずれか１項記載のプログラムが記録されているコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、米国仮特許出願番号６１／１４６，０９２（２００９年１月２１日出願）の優先権を主張し、該出願は本明細書中に参照により含まれる。
【０００２】
技術分野
本発明は、概して、コンピュータを使ったデザイン、製図、製造および可視化システム（個別におよび集約的に「ＣＡＤシステム」という）に関する。
【０００３】
発明の背景
ＣＡＤシステムにおいて用いられる用語として、最小並進ベクトル（Minimum Translation Vector；ＭＴＶ）は、１つのオブジェクトを他のオブジェクトに対して互いに衝突しないように動かすために必要とされる最小の変位ベクトルを意味する。ＭＴＶの長さは最小並進距離（Minimum Translation Distance；ＭＴＤ）と呼ばれ、侵入距離あるいは衝突深度としても知られている。
【０００４】
発明の概要
種々の実施形態には、ＣＡＤシステムにおいて表される第１のオブジェクトおよび第２のオブジェクトの間の最小並進ベクトル（ＭＴＶ）を求める方法、ならびに同様の方法を実行するＣＡＤシステムおよびコンピュータ読み取り可能な記録媒体にコードされるコンピュータプログラムが含まれる。該方法は、第１のオブジェクトおよび第２のオブジェクトを受け取るステップと、第１オブジェクトおよび第２のオブジェクト個々のファセットにテッセレーションするステップとを有する。該方法は、第１のオブジェクトおよび第２のオブジェクトのそれぞれに対応するファセットの境界ボリュームツリーを形成するステップを有する。該方法は、境界ボリュームツリーについて貪欲プロセスを実行して、初期ＭＴＶを生成するステップと、境界ボリュームツリーおよび初期ＭＴＶに従って連続クリッピング処理を実行して、最終ＭＴＶを生成するステップとを有する。該方法は、コンピュータ読み取り可能な媒体に最終ＭＴＶを保存するステップを有する。
【０００５】
いくつかの実施形態では、貪欲処理は、初回は推定ＭＴＶを求めるために実行され、２回目は修正ＭＴＶを求めて当該修正ＭＴＶを初期ＭＴＶとして出力するために実行される。いくつかの実施形態では、貪欲処理は、初期データをロードするステップと、ツリーレベルおよびクリッピングウインドウを初期化するステップと、ツリーレベルおよびクリッピングウインドウを用いてボクセル処理を実行して修正ＭＴＶを求めるステップと、修正ＭＴＶを保存するステップと、修正ＭＴＶを出力するステップと、を有する。いくつかの実施形態では、ツリーレベルが所定の最大値に達するまで、貪欲処理がより下位のツリーレベルについて繰り返される。
【０００６】
いくつかの実施形態では、初期データには、ツリーレベル値、ボックス使用値、クリッピング値、境界ボリュームツリーおよび現在のＭＴＶの少なくとも1つが含まれる。いくつかの実施形態では、ボクセル処理は、ボクセル初期データをロードするステップと、クリッピングウインドウのボクセルモデルを構築するステップと、境界ボリュームツリー間のミンコフスキー差を計算するステップと、ボクセルモデル内の各ボクセルをマークするステップと、マークしたボクセルのうちから少なくとも１つの候補ボクセルを決定するステップと、原点からの距離が最小のベクトルを有する候補ボクセルを決定するステップと、原点からの距離が最小のベクトルを修正ＭＴＶとして出力するステップと、を有する。
【０００７】
いくつかの実施形態では、ボクセル初期値には、クリッピングウインドウ、境界ボリュームツリーおよび現在のＭＴＶのうちの少なくとも1つが含まれる。いくつかの実施形態では、連続クリッピング処理は、クリッピング処理の初期データをロードするステップと、現在のＭＴＶを含み、従前のクリッピングウインドウよりも原点に近いクリッピングウインドウを構築し、ツリーレベルおよびクリッピングウインドウを用いるボクセル処理を実行し、修正ＭＴＶを求めるステップと、修正ＭＴＶを保存し、かつ、修正したＭＴＶを最終ＭＴＶとして出力するステップと、を有する。
【０００８】
上記のものは本開示の特徴および技術的利点を比較的広くなぞったものであり、当業者は以下の詳細な説明をより良く理解するであろう。請求項の対象を構成する本開示の他の特徴および利点は以下に記載されている。当業者はその概念および記載された特定の実施形態を、本開示と同一の目的を達するために、他の構成を修正または設計するための基礎として容易に用いることができることを理解するであろう。当業者はまたこのような等価構成が最も広い形態における本開示の精神および範囲から逸脱するものではないことも理解するであろう。
【０００９】
以下の［発明を実施するための形態］に入る前に、本願書類において用いられている特定の単語または表現の定義について述べておくことが有利であろう。「含む」と「有する」およびこれらに類似する語は、限定なく含むことを意味している。「または」の語は包括的なものであり、および／またはを意味する。「関連する」との表現およびこれに類似するものは、含む、含まれる、相互接続される、含有する、含有される、接続される、結合する、通信可能である、協働する、インターリーブする、並列する、近位される、結びつけられる、持つ、性質を持つなどを意味する場合がある。「コントローラ」との語は、少なくとも１つの動作を制御するハードウェアに実現される任意の装置であって、ハードウェア、ファームウェア、ソフトウェアまたはこれらの少なくとも２つの特定の組み合わせにおいて実現される装置を意味する。任意の特定のコントローラに関連する機能はローカルまたはリモートで、中央化または分散されていてもよいことに留意されたい。特定の語および表現の定義については、本願書類と通じて与えられ、当業者はこれらの定義が、当該語または表現の従前のまたは将来の使用に対する多くの、あるいはたいていの場合に適用されることは理解するであろう。いくつかの語は、多岐にわたる実施形態を含む一方で、添付の特許請求の範囲はこれらの語を特定の実施形態に明確に限定する場合がある。
【図面の簡単な説明】
【００１０】
【図１】実施形態にかかる、データ処理システムのブロック図である。
【図２ａ】実施形態にかかる、衝突するオブジェクトを示す。
【図２ｂ】実施形態にかかる、衝突するオブジェクトに対応するミンコフスキー差を示す。
【図３ａ】実施形態にかかる、２つの境界ボリュームツリーを示す。
【図３ｂ】実施形態にかかる、図３ａのボリュームツリーに対応するツリーノードの境界ボックスを示す。
【図４ａ】実施形態にかかる、衝突するオブジェクトを示す。
【図４ｂ】実施形態にかかる、最適ＭＴＶを示す。
【図４ｃ】実施形態にかかる、安全ＭＴＶを示す。
【図５ａ】実施形態にかかる、実際のＭＴＶおよび大体のＭＴＶを示す。
【図５ｂ】実施形態にかかる、クリッピングウインドウを示す。
【図６】実施形態にかかる、２つのミンコフスキー差および対応するボクセルモデルを示す。
【図７】連続クリッピング処理におけるクリッピングウインドウの動きの例を示す。
【図８】実施形態にかかる処理を示す。
【図９】実施形態にかかる処理を示す。
【図１０】実施形態にかかる処理を示す。
【図１１】実施形態にかかる処理を示す。
【発明を実施するための形態】
【００１１】
本発明およびその利点のより完全な理解のため、添付の図面と関連づけられた以下の詳細な説明について以下参照する。図面中、類似の番号は同様の対象を指す。
【００１２】
以下で説明する図１〜１１、および、本願出願書類における開示の基本を記載するために用いられる種々の実施形態は例示に過ぎず、いかなる意味においても開示の範囲を制限するものと理解されるべきではない。当業者は、本開示の基本が任意の適切に構成された装置において実現可能であることは理解するであろう。本出願の多数の革新的な教示は、例示的であり非限定的な実施形態を参照して説明される。
【００１３】
本明細書中に記載されている種々の実施形態には、互いに衝突（侵入）するＣＡＤシステムにおける１対の形状または幾何モデルの最小並進ベクトル（個別におよび集約的に「ＭＴＶ」という）を求めるシステムおよび方法が含まれる。当業者に理解されるように、ＭＴＶには距離と方向の双方が含まれ、一方、最小並進距離（ＭＴＤ）はＭＴＶの長さまたは距離を記述するものである。ＭＴＶとは、１つの幾何オブジェクトを他の幾何オブジェクトと接する（しかし衝突または侵入しない）ように動かすのに必要な最小の変位ベクトルであり、ＭＴＤとは、１つの幾何オブジェクトを他の幾何オブジェクトと接する（しかし衝突または侵入しない）ように動かすのに必要な最小の距離である。これらのオブジェクトが離れているときＭＴＤは最小の距離である；そうでないとき、ＭＴＤは侵入距離である。
【００１４】
衝突をなくすのに必要な距離は移動方向に依存する。最小距離をもたらし、ＭＴＶに対応する１つの方向が存在する。手間のかかる検索以外に「最適な」方向を求める簡単な方法はない。
【００１５】
数学的にいえば、ＭＴＶの計算は非常に大きな複雑さを有する。たとえば、１組のオブジェクトがファセット（メッシュ）モデルにより表される場合、計算上の複雑さは、一方のオブジェクトのファセットの数と、他方のオブジェクトのファセットの数との積の二乗（Ｎ１＊Ｎ２）２により表される。この計算を高速化するアルゴリズムが知られている。最速のものによれば、複雑さを（Ｎ１＊ｌｏｇＮ１）＊（Ｎ２＊ｌｏｇＮ２）まで低減可能である。しかし、商業用途における典型的なモデルは数億のファセットを含んでおり、これでも商業用途では遅すぎる。
【００１６】
開示の実施形態には、ＭＴＶを計算するための実用的で高速な処理が含まれ、商業用途に適したｌｏｇＮ１＊ｌｏｇＮ２程度の複雑さまで低減される。他の実施形態では、「最適な」方向を見つけ出す代わりに、開示の方法では代替的にまたは付加的に「安全な」方向を見つけ出す。この点で、ＭＴＶは、絶対的に最小のＭＴＶではなく、最小の「安全な」ＭＴＶである。
【００１７】
図１は、本明細書中に記載されたプロセスを実行するよう特定的に構成されたＣＡＤシステムとして一実施形態が具体化されたデータ処理システムのブロック図を示す。図示されたデータ処理システムは、プロセッサ１０２と、プロセッサ１０２が接続されているレベル２キャッシュ／ブリッジ１０４と、レベル２キャッシュ／ブリッジ１０４が接続されているローカルシステムバス１０６と、を有している。ローカルシステムバス１０６は、たとえば、ＰＣＩアーキテクチャバスである。例示のローカルシステムバス１０６には、メインメモリ１０８とグラフィックアダプタ１１０とが接続されている。グラフィックアダプタ１１０はたとえばディスプレイ１１１に接続されている。
【００１８】
他の周辺機器、たとえば、ＬＡＮ／ＷＡＮ／無線（たとえばＷｉＦｉ）アダプタ１１２もローカルシステムバス１０６に接続されている。拡張バスインタフェース１１４がローカルバスシステム１０６を入出力（Ｉ／Ｏ）バス１１６に接続している。Ｉ／Ｏバス１１６は、キーボード／マウスアダプタ１１８、ディスクコントローラ１２０およびＩ／Ｏアダプタ１２２に接続されている。ディスクコントローラ１２０は、たとえばストレージ１２６に接続されている。ストレージ１２６は機械で使用可能なまたは機械で読み取り可能な任意の記録媒体であってよく、たとえば、不揮発性のハードコード型媒体（たとえば読み出し専用メモリ（ＲＯＭ）または消去可能な、電気的消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ））、磁気テープストレージおよびユーザ記録型媒体（たとえばフロッピー（登録商標）ディスク、ハードディスクドライブおよびコンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）またはデジタルバーサティルディスク（ＤＶＤ））であってよいが、これらのものに限られない。
【００１９】
また、例示のＩ／Ｏバス１１６には、オーディオアダプタ１２４が接続されており、オーディオアダプタ１２４にはたとえば音声出力のためのスピーカ（図示せず）が接続されている。キーボード／マウスアダプタ１１８は、マウス、トラックボール、トラックポインタなどのポインティングデバイス（図示せず）のための接続を提供する。
【００２０】
当業者には、図１に示されるハードウェアが特定の実施形態では変えることができることが理解されるであろう。たとえば、他の周辺装置たとえば光学ディスクドライブが付加的にまたは図示のハードウェアの代わりに用いられてもよい。示される例は、説明を目的としたものに過ぎず、本開示に関する構造的な限定を示すものであることを意味しない。
【００２１】
本発明の実施の形態にかかるデータ処理システムは、グラフィカルユーザインタフェースを用いるオペレーティングシステムを含んでいる。オペレーティングシステムによって、異なるアプリケーションまたは同一のアプリケーションの異なるインスタンスをそれぞれ表示する複数の表示ウインドウを、グラフィカルユーザインタフェースに同時に表示することができる。グラフィカルユーザインタフェースのカーソルはポインティングデバイスを通じてたとえばユーザにより操作される。カーソル位置は変更可能であり、および／または、所望の応答が得られるようたとえばマウスボタンのクリックなどがなされる。
【００２２】
種々の商業的なオペレーティングシステムの１つ、たとえばマイクロソフト社（ワシントン州レドモンド）製ウインドウズ（登録商標）の１バージョンを、適切に修正されている限り用いることができる。オペレーティングシステムは記載されているように本発明に従って修正されまたは作成される。
【００２３】
ＬＡＮ／ＷＡＮ／無線アダプタ１１２は、ネットワーク１３０（データ処理システム１００の一部ではない）に接続可能である。ネットワーク１３０は、当業者に知られている、インターネットを含む、任意の公衆または私用データ処理システムネットワークまたはネットワークの組み合わせであってよい。データ処理システム１００は、サーバシステム１４０とネットワーク１３０を介して接続可能である。サーバシステム１４０も同様にデータ処理システム１００の一部ではないが、たとえば、別個のデータ処理システム１００として実現されてもよい。
【００２４】
ＭＴＶは衝突回避に重要であり、かつ、デジタル製造システムおよびＣＡＤシステムの分野に関して広範囲の用途に重要である。衝突検出および衝突回避は種々の要素、たとえばロボット、工作機械および他の製造設備の動作のプログラミングまたはシミュレーションにとって重要である。プログラムされた動作が衝突を引き起こす場合、好ましい解決方法は、たとえば、ＭＴＶを計算して、衝突を回避するようプログラムをどのように修正するかを決定することである。
【００２５】
衝突回避自体は、ＣＡＤシステムの共通の特徴であり、当業者にはよく知られている。しかし、この共通の能力は衝突の存在を検出するだけであり、衝突深度のさらなる分析を提供するものではない。
【００２６】
商業レベルのＭＴＶ処理機能が提供されていない理由の１つは、処理能力による制限である。上述したように、商業レベルでの複雑さは計算の実行を非常に遅くし、実用レベルでの具体化を妨げている。
【００２７】
２つの凸型オブジェクト間のＭＴＶの計算は、よく研究されたテーマである。たとえば下記のGilbertとCameronの論文に記載されている既知の方法は、２つのオブジェクト間のＭＴＶが、原点から当該２つのオブジェクトのミンコフスキー差までの最短のベクトルであるという観察に基づいている。すなわち、ＭＴＶの問題は、ミンコフスキー差の計算に等しい。
２つの狭義凸型のオブジェクト間のミンコフスキー差の計算はよく知られている。２つのオブジェクト（ボディ）ＡおよびＢ間のミンコフスキー差は次のように定義される：
0005404815.tif 000002
。すなわち、ミンコフスキー差は２つのオブジェクトの重ね合わせである。
【００２８】
図２ａに、互いに衝突しているオブジェクトＡ２０５およびオブジェクトＢ２１０を示す。図２ｂに、オブジェクトＡおよびＢのミンコフスキー差を示す。対応するＭＴＶ２１５は太矢印で示している。
【００２９】
応用においては、たいていの形状は非凸型である。不幸なことに、２つの非凸型オブジェクト間のミンコフスキー差の計算は非常に複雑であり、困難である。たとえば、下記のEhmannおよびKimの論文にあるように、非凸型形状に対して上記方法を一般化するためには、システムはまず各非凸型形状をより小さい凸型片の結合に分解する。全てのミンコフスキー差は個々の凸型片のミンコフスキー差の結合であることが証明可能である。
【００３０】
【数１】
0005404815.tif 000003
【００３１】
オブジェクト１にＮ１個の凸片が存在し、オブジェクト２にＮ２個の凸片が存在する場合、ミンコフスキー差の対の総数は、Ｎ１＊Ｎ２である。これらの結合を計算するため、たとえば、システムは他の全てに対する各ミンコフスキー差を分析し、このとき全体の複雑さはその二乗となる：（Ｎ１＊Ｎ２）２。
【００３２】
計算を高速化可能な特定の技術としては、たとえば以下のものが挙げられる。
【００３３】
・境界ボリューム階層（Bounding Volume Hierarchy）：オブジェクトの複数の凸片を１つの空間ツリーに組織化し、互いに近い全ての片は同じブランチに配置する。その１つの例はＫＤツリーである。各ブランチのノードについて、全ての下位のものの境界ボックスが計算され、保存される。図３ａは、本例において図２のオブジェクト２０５、２１０に対する例に対応する、２つの境界ボリュームツリー３０５、３１０の構造（各オブジェクトについて１つ）の例を示す。ルートレベル（レベル０）において、ルートのオブジェクトのみが、各オブジェクトについて１つのノードとして示されている。次のレベル（レベル１）では、各オブジェクトについて２つの下位ノードが示されている。
【００３４】
図３ｂは、ボリュームツリー３０５、３１０（そして図２のオブジェクト２０５、２１０）にそれぞれ対応する、ルートレベル３１５（レベル０）および次のレベル３２０（レベル１）に対応する境界ボックスの例を示す。ここで再び、レベル０において、それぞれ１つのオブジェクトに対応する２つの境界ボックスのみが示されている。レベル１には、各オブジェクトについて、図３ａのボリュームツリーに一致する２つの境界ボックスが存在する。
【００３５】
・階層カリング（Hierarchical Culling）：図３ａおよび３ｂから、システムがより高次のレベル（レベル０）から次のレベル（レベル１）に移るとき、境界ボックスはより小さくなり、したがって侵入深度はより小さくなることがわかる。すなわち、ＭＴＶ（太矢印で示す）は、システムがツリーレベルの下位に進むほどますます小さくなる。レベル１におけるＭＴＶ３３０はレベル０のＭＴＶ３２５より小さい。本実施形態では、パフォーマンスを向上するようこのカリング技術を用いることができる。
【００３６】
システムは最高レベルから開始し、（推定）ＭＴＶを計算する。たとえば、システムはその後１つ下のレベルに移り、従前のレベルから推定ＭＴＶよりも侵入深度の浅い（すなわち推定ＭＴＶよりも大きい）全てのノードの対を飛ばすことができる。このレベルを越えた後、システムは推定ＭＴＶを更新し（推定ＭＴＶは以前より小さいものとなる）、次の下位レベルに進む。リーフレベルに達するまで同一の処理がくり返され、リーフレベルにおけるＭＴＶが最終的な回答である。結果として、ツリーノードの大部分にアクセスすることはなく、計算時間は非常に削減される。
【００３７】
このカリング技術を用いると、予測される複雑さは、（Ｎ１＊Ｎ２）２から（Ｎ１＊ｌｏｇＮ１）＊（Ｎ２＊ｌｏｇＮ２）まで低減される。
【００３８】
パフォーマンスを向上させる他の技術も存在するが、（Ｎ１＊ｌｏｇＮ１）＊（Ｎ２＊ｌｏｇＮ２）に対してさほどの向上は得られないであろう。本実施形態では、予測される複雑さを（Ｎ１＊ｌｏｇＮ１）＊（Ｎ２＊ｌｏｇＮ２）から（ｌｏｇＮ１）＊（ｌｏｇＮ２）まで低減可能である。より積極的なカリング方法を設計することが重要である。この方法には、以下で詳述する複数のステップが含まれる。これには、所定のＣＡＤシステムプロセッサがより高速かつ効率的にＭＴＶを見つけ出すことを可能とし、または、より演算能力の低いプロセッサを有するＣＡＤシステムにおいて適切な速度および効率性を実現可能とするという格別な技術的利点がある。
【００３９】
種々の実施形態では、境界ボリューム階層スキームが用いられる。該スキームは、それが凸片（凸要素）の空間階層（たとえばツリー）を含み、各ノードが全ての下位の要素を含む境界ボックスを保存する限り、いかなる種類のスキームであってよい。境界ボリューム階層スキームのこれらの２つの特徴は、いくつかの実施形態において用いられ、本明細書中に記載される積極的なカリング方法を具体化する。
【００４０】
本処理は、ミンコフスキー差およびそれらの結合を計算するために用いられる方法に依存しない。それらのうちのいかなる方法も本発明とともに用いることができる。これは、軸並行境界ボックス（Axis-Aligned Bounding Box）および有向境界ボックス（Oriented Bounding Box）が一般的に選択される任意の種類の境界ボックスとともに用いることができる。凸片が利用可能である限り、これらはオブジェクトの表現方法にも依存せず、オブジェクトの凸片（凸要素）の計算方法にも依存しない。
【００４１】
種々の実施形態において、システムは最適なＭＴＶの代わりに安全なＭＴＶを見つけ出す。最適な（最小の）ＭＴＶを見つけ出すという目的を放棄し、代わりに「安全な」ＭＴＶを見つけ出すようにすることにより、効率が実質的に向上される。この意味で、もちろん、安全なＭＴＶは必ずしも「最小」並進ベクトルではないが、衝突または問題のある工具の配置をもたらす可能性が実質的に低い、最小に近い並進ベクトルである。
【００４２】
以下でより詳細に説明するように、安全なＭＴＶは最適なＭＴＶよりもはるかに高速に見つけ出せる。図４ａ〜４ｃには、オブジェクト４０５、４１０を用いて、最適なＭＴＶと安全なＭＴＶとの差が示されている。図４ａには、２つの衝突しているオブジェクト４０５、４１０が示されている。矢印４１５、４２０は、小オブジェクトを衝突しないように動かすための２つの候補ＭＴＶを示す。上方の矢印４１５は、最小（候補矢印４２０よりも小さい）であるので、最適なＭＴＶである。
【００４３】
しかし、図４ｂに示されるように、最適なＭＴＶ４１５はオブジェクトを狭いスポットへと動かすものであり、ここでオブジェクトはオブジェクト４０５によって３方が取り囲まれ、２つの方向においてオブジェクト４０５に非常に近い。
【００４４】
他方、矢印４２０を選択すると、オブジェクトは開放空間へと動かされる。この「安全な」ＭＴＶは最適なＭＴＶほど小さくないが、図４ｃに示されるように、衝突を無くすだけでなくオブジェクトを安全な開放空間へと動かす最小のＭＴＶである。
【００４５】
上述したように、コンピュータ支援製造におけるＭＴＶの共通の使用は、ロボットや工作機械などの製造設備の衝突回避のためである。衝突を無くしまたは回避するため、ロボットアームや切削工具を開放領域に動かすことがより安全で望ましい。すなわち、目的は全ての狭いスポットを無視し、オブジェクトを安全な開放領域に移動させる最小のＭＴＶだけを計算することである。
【００４６】
種々の実施形態において、システムは境界ボックスを用いて安全なＭＴＶを位置決めする。安全なＭＴＶを見つけ出すため、ＣＡＤシステムは階層構造の境界ボックスを用いることができる。好適には、システムは、浅いレベルたとえば８分ツリー構造の上層３レベルへのみ進み、レベル３（または他の選択された浅いレベル）のノードの境界ボックスを用いてＭＴＶとの差を計算する。
【００４７】
レベル３ノードで止める理由の１つは、８分ツリーを用いる場合のパフォーマンスを考慮したものである。経験的結果では、レベル３よりさらに進むと、かなりの計算時間がかかる一方で、レベル２の境界ボックスでは粗すぎる傾向がある。レベル深さは、ツリーの幅に依存して選択される。たとえば、二進ツリーについての対応する選択はレベル９であり、これは８分ツリーのレベル３に対応する。
【００４８】
ブランチノードの境界ボックスは、実際の下位の形状の凸包であり、該境界ボックスは該形状の凹みを「満たす」自然な方法である。これにより安全でなく狭い全ての空間は自動的に排除されるので、結果得られるＭＴＶは常に安全な開放空間へと導くものとなる。
【００４９】
境界ボックスは常に実際の形状よりも大きいため、境界ボックスから計算されたＭＴＶは、実際の最適なＭＴＶよりも常に大きい推定ＭＴＶである。この推定ＭＴＶは実際のＭＴＶの大体の（おおよその）位置を表す。大体のＭＴＶから実際のＭＴＶを正確に示す方法について、以下でより詳細に説明する。
【００５０】
いくつかの実施形態では、ＣＡＤシステムはクリッピングを用いてＭＴＶを修正し、完成する。境界ボックス処理から求められる大体のＭＴＶ位置は、実際のＭＴＶの大体の位置であり、システムはさらに探す必要はない。高速にするため、処理はクリッピングされた空間「ウインドウ」の立方体のみを考慮し、非常に積極的なカリングを行う。システムは階層構造のより深いレベルに進むが、それらの境界ボックスのミンコフスキー差がクリッピングウインドウと重ならない場合には、ノードの全ての対を飛ばす。
【００５１】
図５ａは、図２ｂに示すものと類似した、全ミンコフスキー差＜Ｂ−Ａ＞の簡単な例を示す。実線矢印５０５は実際のＭＴＶであり、破線矢印５１０は大体のＭＴＶを示す。図５ｂは、クリッピングウインドウを示す網掛けされた正方形５１５が追加された同一の例を示す。破線のボックス５２０は、（一対のノードの境界ボックスからの）可能なミンコフスキー差の対を表す。システムは、このミンコフスキー差が網掛けされたウインドウから離れていることを高速に判別することができ、このミンコフスキー差は実際のＭＴＶに決して寄与することはない。システムはこのノード対およびその下位レベルをスキップする。
【００５２】
システムは次いで、クリッピングウインドウの一部を占めうるミンコフスキー差を生成しうるノードのみへと進むので、少数のミンコフスキー差だけが用いられる。
【００５３】
いくつかの実施形態では、システムは、パフォーマンスを向上させるため、ＭＴＤの計算における３つの段階から構成される「貪欲」アプローチを用いることができる。これらの３つの段階は、「評価」、「改善」、「決定」の段階として示され、その例示的な処理をフローチャートに示す。
【００５４】
「評価」段階では、ＭＴＤベクトルの概略位置を見つけ出すことが目的である。この段階では、システムは２つの境界ボリュームツリーのそれぞれにおける上から３つのレベルへと進み、上述したように、境界ボリュームを用いてミンコフスキー差および対応するボクセルモデルＺ＋を計算する。得られるボクセルモデルは実際のモデルの近似であり、常にこれよりも大きい。システムはＺ＋を用いて推定ＭＴＤ＋および対応するＭＴＤベクトルを計算する。システムはこの処理を深度１〜３まで３度繰り返す。浅い深度で得られるＭＴＤ＋はより深い深度のブランチのカットに用いられる。ボクセルモデルのカバー範囲は、ルートノードの境界ボックスまでである。
【００５５】
「改善」段階では、ＭＴＤベクトルの精度を向上させ、検索範囲を狭めることが目的である。システムは、検索が少なくなるよう、ボクセルモデルに関する（従前の段階で得られた）推定ＭＴＤベクトルを中心とした「切り取り範囲（cropped range）」（カメラのファインダのようなもの）を選択する。切り取り範囲を用いて、システムはツリーレベル４からの境界ボックスを用いてＭＴＤベクトルのより正確な予測を行う。システムはボクセルモデルのより小さな切り取り範囲でもって処理を繰り返し、ツリーレベル５まで進んでＭＴＤに関するより精細で、より正確な結果を得る。その結果は未だおおよそのものであるが、実際の回答に非常に近いものである。処理はたとえばレベル１０あるいは選択されたより深いレベルまで繰り返される。
【００５６】
「評価」および「改善」の段階では、システムは境界ボックスのミンコフスキー差だけを用いる。２つのボックスのミンコフスキー差は１つのボックスでもあるので、このことはパフォーマンスにおいて格別な利点がある。ミンコフスキー差のボックスの最大の点は第１のボックスの最小の点から第２のボックスの最大の点までの変位ベクトルであり、ミンコフスキー差のボックスの最小の点は第１のボックスの最大の点から第２のボックスの最小の点までの変位ベクトルである。TCDMinkowskiSum.cpp内のソースコードは、入力された対が境界ボックスである場合にこの簡略化された計算が用いられるように修正される。
【００５７】
「決定」段階では、厳密な解を計算することが目的である。システムはＺＯＯＭ＿ＩＮ段階からの推定ＭＴＤベクトルを包囲する非常に精細なボクセルモデルを構築し、境界ボリュームモデルツリーをリーフレベルまでずっと進み、厳密なモデルＺを構築し、厳密なＭＴＤを計算する。アルゴリズムを効率的なものとするため、システムは境界ボックスを用いて余計な検索を排除する。ＴＣＤノードの所定の対より深いレベルに進む前に、システムは境界ボックスの対のミンコフスキー差を計算する。ミンコフスキー差の境界ボックスが精細なボクセルモデルの任意の範囲と重ならない場合、より深いレベルに進むことはない。
【００５８】
最後の「決定」段階は、リーフレベルにおけるファセットを主として用い、より遅い。しかし、最初の２つの段階からの結果によって、推定ＭＴＤの近傍の検索に絞ることができるので、ツリーの僅かの部分について処理が進められる。ツリーのブランチのほとんどはその近傍になく、対称から除外される。いくつかの実施形態では、システムはクリッピングにボクセルモデルを用いて高速な結果を得る。クリッピングウインドウが選択されると、システムはボクセルモデルを用いて実際のＭＴＶを位置決めする。クリッピングウインドウは基本的に立方体である。ボクセルモデルにおいて、システムは立方体を小さな等サイズの立方体に分割し、各ボクセル（小立方体）は３つの整数の組によりラベルされる。
【００５９】
本明細書中に記載されるボクセルモデルは、３次元空間をボクセルと呼ばれる小さな長方形のボックス（等サイズ）に分割し、それぞれは整数の組（ｉ，ｊ，ｋ）でラベルされる。各ボクセルは初期状態で「空」であり、空白の状態であることを意味する。所定のミンコフスキー差のボリュームを記録するため、システムはミンコフスキー差に含まれるボクセルを「被占」としてマークし、その外側のボクセルは空のままとする。さらに、システムは被占（内側）ボクセルと空（外側）ボクセルとの境界上のボクセルを「移行」としてマークする。
【００６０】
ＣＡＤの解は、ミンコフスキー差の「可視」側に関連するものであり、この実施形態では、システムは可視の移行ボクセルのみをマークする。可視側とは、原点上の光源から来る概念上の光とは反対の、無限遠から原点方向に向かう概念上の光に対して可視的な側である。システムは全ての可能な可視移行ボクセルにおけるミンコフスキー差に対するポインタも保存してもよい。
【００６１】
ＭＴＤを計算する１つの段階の呼び出しは、全てのミンコフスキー差の結合を計算することである。これらの実施形態において、システムはボクセルモデルに対する各ミンコフスキー差を探し、任意のミンコフスキー差に含まれる各ボクセルを被占としてマークし、可視側にあるボクセルを可視移行としてマークする。
【００６２】
空または可視移行のボクセルが別のミンコフスキー差によって占められるとき、該ボクセルは被占としてマークされる。可視移行ボクセルが別のミンコフスキー差の可視移行ボクセルでもあるとき、このミンコフスキー差に対するポインタは該ボクセル内に同様に保存される。最終的に、全ての被占ボクセルの結合が、ミンコフスキー差の結合されたものの大体の形状を形成する。
【００６３】
ＭＴＤを見つけ出すため、システムは、原点に最も近い可視移行ボクセルを検索し、このボクセル位置がＭＴＤベクトルの大体の位置である。ボクセルモデルの精度はボクセルのサイズによって決定される。
【００６４】
速度を犠牲にすることなく精度を向上するため、システムは「再帰的ボクセルモデル」を用いることができる。すなわち、システムは粗いボクセルモデルでスタートしてＭＴＤの全体的な位置を見つけ出し、粗いボクセルをより小さい多数の細かいボクセルに副分割し、これらのより細かいボクセルについてのマーキングを繰り返し、すべての処理を再帰的に繰り返し、所望の精度が達成される。最後に、候補ＭＴＤボクセルにおいて、システムは、全ての近傍の（ボクセル内に保存されていた）ミンコフスキー差を指定し、ＭＴＤの厳密な値を計算する。
【００６５】
図６は２つのミンコフスキー差と対応するボクセルモデルを示す。被占ボクセルは丸によりマークされている。被占ボクセルを包囲するボクセルが移行ボクセルである。点Ｑに近い移行ボクセルはＭＴＤベクトルを含むボクセルである。ここで点Ｏは原点である。原点Ｏからは候補ＭＴＤ６０５が延びている。
【００６６】
いくつかの実施形態では、システムは連続クリッピングを用いて正確性を確保する。上述のように、小さなクリッピングを選択して、クリッピングウインドウと重ならないツリーノードの大部分をスキップすることが、より良いパフォーマンスのためには望ましい。しかし、小さすぎるクリッピングウインドウを選択することは、実際のＭＴＶを外す可能性がある。クリッピングウインドウが実際のＭＴＶをカバーしない場合には、全てのボクセルは「空」のままであり、何も見つからない。
【００６７】
クリッピングウインドウが空である場合には、原点により近い解が常に存在する。したがって、システムは、たとえば、ＭＴＶが見つかるまで、クリッピングウインドウを原点により近く繰り返し動かす。図７はクリッピングウインドウの動きの例を示す。図７中、実際のＭＴＶ（太矢印７１０）を外れた第１のクリッピングウインドウが、一番右に示されている（網掛けされた四方形）。それに続くクリッピングウインドウ７１５、７２０は原点により近いものが選択され、３番目のものがＭＴＶを見つけ出す。この方法により安全なＭＴＶを確実に見つけることができる。
【００６８】
図８は、本実施形態に従う主な処理を示している。いくつかの実施形態では、ＭＴＶの計算には以下のステップが含まれる。
【００６９】
ＣＡＤシステムは２つの入力オブジェクトＡおよびＢを受け付ける（ステップ８０５）。この処理には、たとえば、これらのコンピュータ読み取り可能な記録媒体からのロード、ネットワークを介した受信、または、当業者には知られた他の手段が含まれる。オブジェクトはたとえば２次元または３次元オブジェクトモデルである。
【００７０】
システムは、入力されたオブジェクトＡおよびＢをファセット（三角形）または凸プリミティブＡｉおよびＢｊにテッセレーションする（ステップ８１０）。システムは、ファセット間の接続情報を記録できるが、必ずというわけではない。システムは、入力されたオブジェクトＡおよびＢのそれぞれについて、ファセットまたは凸プリミティブの境界ボリュームツリーを形成する（ステップ８１５）。
【００７１】
次に、システムは初期値を設定し、これには、いくつかの実施形態では、最小レベルを１に、最大レベルを３などの浅いレベルに設定すること、偽へのクリッピングを含んでおり、システムは、図９に示されているようなプロセッサの貪欲処理を呼び出す（ステップ８２０）。このステップは、先に説明した「評価」段階に対応する。
【００７２】
システムは、プロセッサの貪欲処理の結果を受け取り、いくつかの実施形態では、最小レベルを４にする設定、最大レベルを１０などの深いレベルにする設定、真へのクリッピングを含む第２の値を設定し、システムは再び、図９に示されているようなプロセッサの貪欲処理を呼び出す（ステップ８２５）。このステップは先に説明した「改善」段階に対応する。
【００７３】
システムは、第２のプロセッサの貪欲処理の結果を受け取り、図１１に示されているような最後のプロセッサ処理を呼び出し、連続クリッピングを用いてＭＴＶを決定する（ステップ８３０）。このステップは、先に説明した「決定」段階に対応する。決定されたＭＴＶはこの処理から戻され、ＣＡＤシステムまたは他のコンピュータ読み取り可能な媒体に保存され、場合によりユーザに対して表示される。
【００７４】
図９は、本実施形態にかかるプロセッサの貪欲処理を示す。この処理において、システムはまず初期データ（呼び出し処理からの通過データを含みうる）をロードする（ステップ９０５）。初期値には、最小レベル、最大レベル、クリッピング値、境界ボリュームツリー、現在のＭＴＶが含まれる。
【００７５】
システムはツリーレベルを最小レベルに設定することによって初期化する（ステップ９１０）。
【００７６】
システムは、クリッピングウインドウを、全てを含むボックスに初期化する（ステップ９１５）。
【００７７】
システムは、クリッピングが真かどうかチェックする（ステップ９２０）。Ｙｅｓの場合、システムは、ＭＴＶを中心としてクリッピングウインドウを構築し（ステップ９２５）、Ｎｏの場合、ステップ９２５を飛ばす。
【００７８】
システムは、「ボックス使用」の値を真に設定し、図１０に示されているようなボクセル処理を呼び出し、修正ＭＴＶを計算する（ステップ９３０）。
【００７９】
システムは、ボクセル処理の結果を受け取り、ツリーレベルをインクリメントする（ステップ９３５）。ツリーレベルが最大ツリーレベルを超えない場合（ステップ９４０）、処理はステップ９２０に戻って繰り返される。そうでない場合、システムは修正ＭＴＶを呼び出し処理に出力する（ステップ９４５）。
【００８０】
図１０は本実施形態にかかる、全てのミンコフスキー差
0005404815.tif 000004
の結合を形算するボクセル処理を示す。ここで、システムはツリーを進み、組をなすミンコフスキー差を計算し、以下でより詳細に説明するように、結合を表すボクセルモデルＺを構築する。
【００８１】
この処理において、システムは、まず（呼び出し処理からの通過データを含みうる）初期データをロードする（ステップ１００５）。初期データにはツリーレベル、「ボックス使用」値、クリッピングウインドウ、境界ボリュームツリー、現在のＭＴＶが含まれる。
【００８２】
システムは、クリッピングウインドウのボクセルモデルを構築し、ボクセルを空として初期化する（ステップ１０１０）。
【００８３】
システムは、境界ボリューム（ＢＶ）ツリーのルートへ進む（ステップ１０１５）。
【００８４】
このステップでは、「ボックス使用」値が真であるかどうか、または、リーフノードでないかどうかが判別される（ステップ１０２０）。これらのうちのいずれかに該当する場合、システムは境界ボリュームのミンコフスキー差を計算する（ステップ１０２５）。いずれにも該当しない場合、システムはファセット／プリミティブのミンコフスキー差を計算する（ステップ１０３０）。
【００８５】
システムは計算されたミンコフスキー差と現在のクリッピングウインドウとの間に重なりがあるかどうかを判別する（ステップ１０３５）。重なりがない場合、ステップ１０４０は飛ばされる。
【００８６】
重なりがある場合、システムは計算されたミンコフスキー差をボクセルモデルに入力し、ボクセルをマークする（ステップ１０４０）。ボクセルモデルにおいて、各ボクセルＶαβγは「外側（空）」、「内側（被占）」または「可視（移行）」のいずれかとしてマークされる。所定の「可視」ボクセルに近い全てのＣｊｉのＭＴＤポインタがボクセル内に保存される。ボクセルモデルＺにおける各ミンコフスキー差について、システムは以下のようにボクセルのマークを行う。
【００８７】
システムは、ボクセルがどのような状態にあったかにかかわらず、ミンコフスキー差により完全に占められている全てのボクセルを「被占」としてマークする。「被占」ボクセルは「被占」のままである。システムは、ボクセルが「被占」でなければ、「被占」と「空」との境界上の全てのボクセルを「移行」としてマークする。このミンコフスキー差の基準は、「移行」ボクセルの関連するメモリに加えられる。
【００８８】
次に、システムは、兄弟ノードまたは子ノードに進む（ステップ１０４５）。
【００８９】
システムは、処理がツリーレベルを越えたか、または、全ての子ノードを用い尽くしたがどうか判別する（ステップ１０５０）。Ｎｏの場合、処理はステップ１０２０に戻って繰り返される。
【００９０】
Ｙｅｓの場合、システムは、候補ボクセルを見つけ出し、原点からの距離が最小のベクトルを有するボクセルを決定する（ステップ１０５５）。システムは原点からの距離が最小のベクトルを修正ＭＴＶとして出力する（ステップ１０６０）。原点と、ボクセルモデルＺのこのボクセルとの間のベクトルは、オブジェクトＡおよびＢの間のＭＴＤに対応する：
0005404815.tif 000005
【００９１】
図１１は、本実施形態にかかる、連続クリッピング処理として記載されている最後のプロセッサ処理を示す。この処理において、システムは、まず初期データ（呼び出し処理からの通過データを含みうる）をロードする。初期データには境界ボリュームツリーおよび現在のＭＴＶが含まれる（ステップ１１０５）。
【００９２】
システムは、ＭＴＶを含み、原点により近いクリッピングウインドウを構築する。
【００９３】
システムは、いくつかの実施形態では、「ボックス使用」値を偽に設定することおよびツリーレベルを無限に設定することを含む初期値を設定し、図１０に示されるようなボクセルプロセッサ処理を呼び出し、最終ＭＴＶを計算する（ステップ１１１５）。
【００９４】
システムは、最終ＭＴＶがクリッピングウインドウ内にあるかどうかを判別する（ステップ１１２０）。Ｎｏの場合、処理はステップ１１１０に戻って繰り返される。Ｙｅｓの場合、システムは、最終的なＭＴＶを処理から出力する（ステップ１１２５）。
【００９５】
いくつかの実施形態では、シェルに含まれるボリュームの代わりに、表面シェルが表面の中空シェルに基づいて用いられる。いくつかの実施形態では、本明細書中に開示される処理は、最小のベクトルを表す全体で最小の並進ベクトルをレポートおよび／または保存し、第１の部分を第２の部分と衝突しないよう移動させる。いくつかの実施形態では、最小の並進ベクトルの侵入位置または開始位置は、第１の部分のシェルの上、最深の侵入のおおよそ近いところである。位置は特有のものではなくまたは十分定義されていないため、位置は正確ではない場合がある。いくつかの実施形態では、精度はたとえば部分のテッセレーションの密度に基づいて自動的に決定される。
【００９６】
本実施形態により用いることのできる当業者に知られている技術には、E.G. Gilbert, D. W. Johnson, and S.S. Keerthi, "A fast procedure for computing the distance between complex objects in three-dimensional space", IEEE J. Robotics and Automation, volume 4 (1988)、S. Cameron, "Enhancing GJK: Computing Minimum and Penetration Distances between Convex Polyhedra", IEEE Int. Conf. Robotics & Automation, Albuquerque, 22-24 Apr 1997; S.A. Ehmann and M.C. Lin, "Accurate and Fast Proximity Queries between Polyhedra Using Convex Surface Decomposition", Eurographics, volume 20 (2001)、YJ. Kim. M.A. Otuduy, M.C. Lin, and D. Manocha, "Fast Penetration Depth Computation for Physically-based Animation"', ACM Symposium on Computer Animation, 21-22 July 2002に記載のものが含まれ、これらは本明細書に参照により含まれる。
【００９７】
簡潔さと明瞭さのために、本開示とともの使用に適した全てのデータ処理システムの完全な構成および動作が本明細書中に記載されていないことは、当業者には理解されるところである。代わりに、本開示に特有であるか、または、本開示の理解のために必要であるような１つのデータ処理システムについて多く記載されている。データ処理システム１００の他の構成および動作は、当業者に知られている種々の現在実現および実施されている任意のものに適合可能である。
【００９８】
本開示には完全な機能システムの内容における記載が含まれるが、本開示の構成の少なくとも一部が機械使用可能な、任意の種々の形態の、コンピュータ使用可能なまたはコンピュータ読み取り可能な媒体に含まれる命令の形態で流通可能であり、本開示は流通の実際の実行に用いられる、命令または信号を保持する特定の種類の媒体またはストレージにかかわらず等しく適用することは当業者に理解されるであろう。機械使用可能／読み取り可能またはコンピュータ使用可能／読み取り可能な媒体の例には、読み取り専用メモリ（ＲＯＭ）や消去可能な電気プログラム可能な読み取り専用モデル（ＥＥＰＲＯＭ）等の不揮発性のハードコードタイプの媒体、および、フロッピー（登録商標）ディスク、ハードディスクドライブおよびコンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）またはデジタルバーサティルディスク（ＤＶＤ）等のユーザ記録タイプの媒体が挙げられる。
【００９９】
本開示の例示実施形態について詳細に説明したが、本明細書中に開示された種々の変化、置換、変更および改善はその最も広い形における開示の精神および範囲から逸脱することなくなされうることは当業者には理解されるであろう。
【０１００】
本願の開示のいずれも、特定の要素、ステップまたは機能のいずれかが請求項の範囲に含まれるべき不可欠の要素であることを意味するものとして理解されるべきではない。特許された発明の範囲は、許可された請求項によってのみ定められる。さらに、「〜手段」の語が「〜」の部分に分詞が来ない限り、請求項のいずれも米国特許法１１２条第６パラグラフの行使を意図するものではない。
【符号の説明】
【０１０１】
１０２  プロセッサ、  １０８  メモリ、  １２６  ストレージ
【図１】
0005404815.tif 000006
【図２ａ】
0005404815.tif 000007
【図２ｂ】
0005404815.tif 000008
【図３ａ】
0005404815.tif 000009
【図３ｂ】
0005404815.tif 000010
【図４ａ】
0005404815.tif 000011
【図４ｂ】
0005404815.tif 000012
【図４ｃ】
0005404815.tif 000013
【図５ａ】
0005404815.tif 000014
【図５ｂ】
0005404815.tif 000015
【図６】
0005404815.tif 000016
【図７】
0005404815.tif 000017
【図８】
0005404815.tif 000018
【図９】
0005404815.tif 000019
【図１０】
0005404815.tif 000020
【図１１】
0005404815.tif 000021