(57)【要約】【課題】  仮想物体同士の干渉判定をより高速に、且つメモリ効率を低下させることなく行うための技術を提供すること。【解決手段】  ポリゴン選択部１２５は、３次元仮想物体を構成する基本単位のうち干渉判定処理で使用する基本単位を、与えられた条件に基づいて選択する。干渉判定部１３０は、各仮想物体についてポリゴン選択部１２５が選択した基本単位を用いて、３次元仮想物体同士の干渉判定処理を行う。【選択図】  図１
2008090498.tif 000002
【特許請求の範囲】
【請求項１】
３次元仮想物体同士の干渉判定処理を行う画像処理方法であって、
３次元仮想物体を構成する基本単位のうち前記干渉判定処理で使用する基本単位を、与えられた条件に基づいて選択する選択工程と、
各仮想物体について前記選択工程で選択した基本単位を用いて、３次元仮想物体同士の干渉判定処理を行う干渉判定工程と
を備えることを特徴とする画像処理方法。
【請求項２】
前記選択工程は、
３次元仮想物体を形成するそれぞれの構成要素の面積を求める工程と、
それぞれの構成要素の面積を用いて、当該それぞれの構成要素を複数のグループに分割する工程と、
グループ内の構成要素のうち前記干渉判定処理で用いる構成要素を、当該グループ内の構成要素の面積に基づいて選択する工程と
を備えることを特徴とする請求項１に記載の画像処理方法。
【請求項３】
前記選択工程では、３次元仮想物体を形成するそれぞれの構成要素のうち前記干渉判定処理で用いる構成要素を、当該３次元仮想物体とその他の３次元仮想物体との相対速度に基づいて決定することを特徴とする請求項１に記載の画像処理方法。
【請求項４】
前記選択工程では、１フレーム内で干渉判定処理が完了する基本単位数の基本単位を選択することを特徴とする請求項１に記載の画像処理方法。
【請求項５】
３次元仮想物体同士の干渉判定処理を行う画像処理装置であって、
３次元仮想物体を構成する基本単位のうち前記干渉判定処理で使用する基本単位を、与えられた条件に基づいて選択する選択手段と、
各仮想物体について前記選択手段が選択した基本単位を用いて、３次元仮想物体同士の干渉判定処理を行う干渉判定手段と
を備えることを特徴とする画像処理装置。
【請求項６】
コンピュータに請求項１乃至５の何れか１項に記載の画像処理方法を実行させるためのプログラム。
【請求項７】
請求項６に記載のプログラムを格納したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３次元仮想物体同士の干渉判定技術に関するものである。
【背景技術】
【０００２】
コンピュータハードウェア、ディスプレイ技術、グラフィックプロセッサ等の進歩により、高度なCG（Computer Graphics）表現が可能となってきている。それに伴い、CAD（Computer Aided Design）等の産業応用にもCGは使用されるようになり、CG映像の高機能化が進んでいる。そのようなCG技術において映像のリアリティだけではなく、より実世界に近い挙動を表現するために3次元オブジェクト間の物理的挙動や干渉状態の演算を行う干渉判定機能の重要性は、CG描画の性能が上がるにつれて重要視されてきている。
【０００３】
干渉判定機能は、3次元オブジェクトを近似した3次元多角形同士が埋没する等、現実的にありえない挙動を示すことがないように相互間で干渉が発生していないかを計算によって求める機能である。
【０００４】
このような干渉判定機能は、設計分野においてはCADデータを用いた製品の試作や、実機が未だ存在しない状態での仮想トレーニング、設計データの動作時に部品同士が干渉しないかの仮想動作検証試験等に使われている。エンターテインメント分野では、映画やゲーム等のCGオブジェクトの挙動をリアルにするために使用されている。またロボット分野では、障害回避を行うためのシミュレーションや、運動軌道生成のプロセスで使用される等、多種の分野での応用が期待されている。
【０００５】
この中でもリアルタイムな体験を呈示するシステムでは、CG描画と同期し、使用者の動きにインタラクティブに反応し、現実世界に則した動作をリアルタイムにCG描画に反映させることが体験者の没入感向上に重要な役割を果たしている。そのため、干渉機能の重要性は高い。係るシステムには特に、VR（Virtual Reality）やMR（Mixed Reality）がある。
【０００６】
従来の干渉判定技術は、基本的には3次元オブジェクトを3次元多面体で近似し、その表面を構成する複数の3次元ポリゴン（多角形）に分割し、分割されたポリゴンのすべての組み合わせについてポリゴン同士の干渉を判定するものである。この方法では、3次元多面体を構成するポリゴンの数をｎとするとき、干渉判定を行うための計算コストはｎ２で増加する。そのため、MRやVRなどのインタラクティブなシステムにおいて、CADなどで作成した詳細な3次元オブジェクトを実時間で干渉判定を伴ってCG描画させることは非常に困難となっている。
【０００７】
それに対処するため、3次元多角形に前処理を施すことにより、干渉判定に影響ない要素をあらかじめ除去する等して、高速化する手法等がある（非特許文献１を参照）。これらの方法は、すべてのポリゴンに対して干渉判定演算を行う必要をなくすことで、必要最小限のポリゴンのみで上記干渉判定演算を行い、これにより高速化を実現している。しかし、長いオブジェクト同士や穴の中にオブジェクトを通過させるときの干渉判定等、多くの面が同時に接触しうる場合には、前処理でポリゴンを大きく除去することができず、速度が低下する問題も含んでいる。
【０００８】
そこで、計算時間の低下を防ぐために３次元多面体のポリゴン数を削減したデータをあらかじめ作成する手法がとられることが多く、その方法としては以下のようなものがある
・  ポリゴンリダクション：3次元多面体を構成する頂点情報を最適化し、3次元多面体を再構成することによってポリゴン数を軽減する手法
・  詳細度変更：ネジ等閾値以下の大きさの3次元多面体は除去する、閾値以下の直径の穴を除去する等の条件を与えることにより3次元オブジェクトの詳細度を落とし、詳細度の低い3次元多面体を別途作成することで、ポリゴン数を軽減する手法
【非特許文献１】Christer Ericson  Real-Time Collision Detection、Morgan Kaufmann Publishing
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従来の技術による干渉判定では、詳細度が高くポリゴン数の多い3次元オブジェクトに関してはリアルタイムには実行することができず、リアルタイムで動作させるときには詳細度を下げ、ポリゴン数を減らすことによって実行しているというのが現状である。
【００１０】
そのような干渉判定の機能において特にVRやMRなどのインタラクティブ性の高い分野では、CG描画は３０Hz〜６０Hzで動作していることが望ましい。更に、干渉判定によってCG描画の遅れを発生させることなく動作し、なおかつ使用者のインタラクティブな動作に応じたリアルタイム干渉判定も同時に必要とする。そのため、特に干渉判定演算の高速化が重要な課題となっている。
【００１１】
その中で従来技術を用いた干渉判定演算において課題となっている点は二つある。
【００１２】
・  ポリゴンリダクションや詳細度変更によって形状が変化してしまう。即ち、形状が変化してしまうことによって、CG描画された3次元多面体と干渉判定の結果に誤差が発生し、正確な干渉判定ができない。
【００１３】
・  干渉判定用にCG描画用とは別のデータを作成する必要がある。即ち、ポリゴンリダクションや詳細度変更によってCG描画用とは異なるデータを別途作成する必要が発生し、データも別途メモリ上に読み込まなければならない。
【００１４】
本発明は以上の問題に鑑みてなされたものであり、仮想物体同士の干渉判定をより高速に、且つメモリ効率を低下させることなく行うための技術を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の目的を達成するために、例えば、本発明の画像処理方法は以下の構成を備える。
【００１６】
即ち、３次元仮想物体同士の干渉判定処理を行う画像処理方法であって、
３次元仮想物体を構成する基本単位のうち前記干渉判定処理で使用する基本単位を、与えられた条件に基づいて選択する選択工程と、
各仮想物体について前記選択工程で選択した基本単位を用いて、３次元仮想物体同士の干渉判定処理を行う干渉判定工程と
を備えることを特徴とする。
【００１７】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。
【００１８】
即ち、３次元仮想物体同士の干渉判定処理を行う画像処理装置であって、
３次元仮想物体を構成する基本単位のうち前記干渉判定処理で使用する基本単位を、与えられた条件に基づいて選択する選択手段と、
各仮想物体について前記選択手段が選択した基本単位を用いて、３次元仮想物体同士の干渉判定処理を行う干渉判定手段と
を備えることを特徴とする。
【発明の効果】
【００１９】
本発明の構成により、仮想物体同士の干渉判定をより高速に、且つメモリ効率を低下させることなく行うことができる。
【発明を実施するための最良の形態】
【００２０】
以下添付図面を参照して、本発明をその好適な実施形態に従って詳細に説明する。
【００２１】
［第１の実施形態］
本実施形態では、設計物を模した仮想物体（設計物仮想物体）が１以上配置された仮想空間内で、人の手を模した仮想物体（手仮想物体）を移動させる際に行う、手仮想物体と設計物仮想物体との干渉判定処理について説明する。しかし以下に説明する干渉判定処理は、手仮想物体、設計物仮想物体以外の任意の仮想物体同士の干渉判定処理についても同様に適用することができる。
【００２２】
図１は、本実施形態に係る画像処理装置の機能構成を示すブロック図である。同図に示す如く、本実施形態に係る画像処理装置は、データ読み込み部１１０，ポリゴン判定部１２０，干渉判定部１３０，画像処理部１４０により構成されている。
【００２３】
先ず、データ読み込み部１１０について説明する。
【００２４】
データ読み込み部１１０は同図に示す如く、オブジェクトデータ読み込み部１１１とポリゴン列データ生成部１１２とで構成されている。
【００２５】
オブジェクトデータ読み込み部１１１は、各仮想物体（オブジェクト）の描画データを、不図示のメモリから読み出す。描画データとしては例えば、仮想物体をＣＡＤで作成することで作成されるＣＡＤデータがある。そしてオブジェクトデータ読み込み部１１１は読み出した各仮想物体の描画データを順次ポリゴン列データ生成部１１２に出力する。
【００２６】
ポリゴン列データ生成部１１２は、オブジェクトデータ読み込み部１１１から受けた各描画データを順次ポリゴン列データに変換する処理を行う。即ち、ＣＡＤで作成された仮想物体をポリゴンで構成された仮想物体に再構成する。そしてポリゴン列データ１１２は各仮想物体のポリゴン列データ（仮想物体を構成するポリゴン列のデータ）を、後段のポリゴン判定部１２０と画像処理部１４０とに出力する。
【００２７】
図３は、１つの仮想物体についてポリゴン列データ生成部１１２が作成したポリゴン列データの構成例を示す図である。同図において３０１はポリゴン列データ全体を示している。
【００２８】
領域３０２内の各列には、各ポリゴンの各頂点の座標値が登録されている。尚、各列（各頂点）に対しては固有の番号（頂点インデックス）が付けられているものとする。例えば、最上位の列から下方の列に向かって順に頂点インデックス１，２，３，…が付けられている。
【００２９】
領域３０３内の各列には、１つのポリゴンを構成している各頂点の頂点インデックスが登録されている。例えば「２００３，２００７，２００８，−１」は、頂点インデックスが２００３の頂点、頂点インデックスが２００７の頂点、頂点インデックスが２００８の頂点、の３つの頂点で構成されたポリゴンを定義している。尚、各列（各ポリゴン）に対しては固有の番号（ポリゴンインデックス）が付けられているものとする。例えば、最上位の列から下方の列に向かって順にポリゴンインデックス１，２，３，…が付けられている。
【００３０】
なお、仮想物体が予めポリゴンでもって構成されている場合には、オブジェクトデータ読み込み部１１１は図３に例示したポリゴン列データを仮想物体毎に読み込むことになるので、この場合、ポリゴンデータ列生成部１１２は不要となる。
【００３１】
次に、ポリゴン判定部１２０について説明する。ポリゴン判定部１２０は、無効化率関数設定部１２１、ヒストグラム生成部１２３、ポリゴン選択部１２５により構成されている。
【００３２】
以下では、１つの仮想物体についてのポリゴン列データがポリゴン判定部１２０に入力された場合における、ポリゴン判定部１２０の動作について説明する。しかし、実際には複数の仮想物体のそれぞれについてのポリゴン列データがポリゴン判定部１２０に入力されるので、その場合には、それぞれの仮想物体のポリゴン列データについてポリゴン判定部１２０は、以下説明する処理を行うことになる。
【００３３】
ヒストグラム生成部１２３はポリゴン列データを受けると先ず、このポリゴン列データに登録されている各ポリゴンの面積を求める。ここで係る処理についてより詳細に説明する。
【００３４】
上述の通り、１つのポリゴンを構成する各頂点の頂点インデックスは領域３０３内に記されているし、各頂点インデックスに対応する頂点の座標値は領域３０２内に記されている。そこで先ずヒストグラム生成部１２３は、領域３０３内の各列を順次参照し、参照した列に登録されている各頂点インデックスに対応する頂点の座標値を領域３０２から取得する。例えば領域３０３内で参照した列に登録されている頂点インデックスが「１，２，３，−１」である場合、ヒストグラム生成部１２３は頂点インデックス１の頂点座標値、頂点インデックス２の頂点座標値、頂点インデックス３の頂点座標値を領域３０２から取得する。
【００３５】
そして３頂点の座標値が得らるとヒストグラム生成部１２３は、この３頂点で構成されているポリゴン（三角形）の面積を求める。３点の座標値が既知である場合に、この３点を頂点とする三角形の面積を求める為の計算については周知であるので、係る処理に関する説明は省略する。そしてヒストグラム生成部１２３は、面積を求めたポリゴンのポリゴンインデックスと、この面積と、を関連付けて面積テーブルに登録する。この面積テーブルについては後述する。
【００３６】
このようにしてヒストグラム生成部１２３は、領域３０３内の各列を参照する毎に、参照した列に登録されている３つのインデックスに対応する３頂点の座標値を領域３０２から得、得た３頂点の座標値を用いて対応するポリゴンの面積を求める。これにより、ポリゴン列データに登録されている全てのポリゴンについて、その面積を求めることができる。なお、係る目的が達成されるのであれば、ポリゴン列データの構造やヒストグラム生成部１２３が行う処理については以上説明したものに限定しない。例えば、ポリゴン列データ内に予め各ポリゴンの面積を登録しておいても良い。この場合、ヒストグラム生成部１２３による各ポリゴンの面積計算処理は省略することができる。
【００３７】
次にヒストグラム生成部１２３は、計算した各ポリゴンの面積のヒストグラムを作成する。図４は、作成したヒストグラムの一例を示す図である。同図において横軸はポリゴンの面積を示し、縦軸は頻度（分布）を示す。
【００３８】
同図において区間４０１内には、ネジのような微小な部品を構成する面積の小さいポリゴンが多数分布している。区間４０２内には、センサ部品のような比較的小さい部品を構成するポリゴンが分布している。そして区間４０３内には天板、パネル等、手仮想物体よりも大きいポリゴンが分布しているものとする。
【００３９】
そしてヒストグラム生成部１２３はこのようにして作成したヒストグラムを表示装置などの画面上に対して出力する。これにより、本装置のユーザは、このヒストグラムにおいてどの区間にどのようなポリゴンが含まれているのかを、事前に把握することができる。従ってユーザは、各区間の区切りをこのヒストグラムを見て予め調べ、調べた区切りを閾値として予め設定する。係る設定入力は無効化率関数設定部１２１によって受け付ける。例えば図４では、区切り４１１におけるポリゴン面積を閾値１、区切り４１２におけるポリゴン面積を閾値２として設定されている。
【００４０】
もちろん、係る設定はユーザ入力以外にも、無効化率関数設定部１２１が行うようにしても良い。例えば、ヒストグラムにおいて面積の最大と最小との間を単純に３等分するように閾値を２つ設定しても良いし、手仮想物体の面積を閾値として１つのみ設定しても良い。本実施形態では、ユーザが上記閾値１，閾値２を設定したものとして説明するが、以下の説明は、無効化率関数設定部１２１が設定した閾値を用いても同様である。
【００４１】
次に無効化率関数設定部１２１は、閾値１未満の面積を有するポリゴンが属するグループ（グループ１）、閾値１以上閾値２未満の面積を有するポリゴンが属するグループ（グループ２）、閾値２以上の面積を有するポリゴンが属するグループ（グループ３）、のそれぞれのグループについて、無効化率を設定する。無効化率とは、グループ内に属するポリゴンのうち干渉判定で用いないポリゴンの割合を示すものであり、グループ毎に設定するものである。
【００４２】
図５は、各グループについて設定した無効化率のグラフを示す図である。同図において横軸はポリゴンの面積を示し、縦軸は無効化率を示す。
【００４３】
同図に示した無効化率では、区間４０１に含まれる面積を有するポリゴンのグループ（グループ１）については５０％よりも大きい無効化率（例えば７０％）を与えている。区間４０２に含まれる面積を有するポリゴンのグループ（グループ２）については５０％の無効化率を与えている。区間４０３に含まれる面積を有するポリゴンのグループ（グループ３）については、限りなく０％に近い無効化率を与えている。
【００４４】
ここで、各グループについて設定する無効化率について説明する。ここで例えば区切り４１２におけるポリゴン面積が、上記手仮想物体の面積を示すものであるとする。この場合、手仮想物体の面積よりも大きいポリゴン、即ち区間４０３に含まれる面積を有するポリゴンを干渉判定処理の対象から外すと、手仮想物体がこのポリゴンを貫通する可能性がある。そのため、区間４０３に含まれる面積を有するポリゴンについてはほぼ全てを干渉判定処理の対象とすべく、区間４０３（グループ３）に対しては無効化率を０％に近い値とする。
【００４５】
区間４０２内に含まれる面積を有するポリゴン、即ち、センサ部品等の比較的小さいものの動作検証等の作業においては欠くべからざる部品を構成するポリゴンは、手仮想物体の面積よりも十分に小さい。従って、係るポリゴンを含む仮想物体の形状をできるだけ損なうことなく、係るポリゴンのうち幾分かは干渉判定処理の対象外とするために、区間４０２（グループ２）については無効化率を５０％とする。
【００４６】
区間４０１内に含まれる面積を有するポリゴン、即ち、ネジのような微細な部品群を構成するポリゴンについては、形状を損なったとしても十分に干渉判定の精度を保つことができると思われる。従って、区間４０１（グループ１）については無効化率を５０％以上、例えば７５％とする。このように、高い無効化率を設定した区間に含まれる面積を有するポリゴンについてはあまり干渉判定処理には使用しないので、干渉判定処理をより高速に行うことができる。
【００４７】
以上の処理によって、各グループに対して無効化率を設定することができる。これにより、以降では、グループ内の全てのポリゴンのうち干渉判定処理に用いるポリゴンをどのような割合で選択するのかを、このグループについて設定された無効化率に基づいて決定することができる。
【００４８】
なお、１つの仮想物体を構成する各ポリゴンを、その面積に応じて幾つかのグループに分類し、その幾つかのグループのそれぞれについて無効化率を設定する方法については様々な方法があり、何れかの特定の方法に限定するものではない。もちろん、各グループに対して設定する無効化率についても特定の値に限定するものではない。図６は、図５に示したグラフ上に、図４に示したヒストグラムを重ねた図である。
【００４９】
そして次にポリゴン選択部１２５は、ポリゴン列データから、干渉判定処理に用いるポリゴンのデータを選択する処理を行う。即ちポリゴン選択部１２５は、グループ１に含まれている面積を有するポリゴン群については、グループ１について設定された無効化率に基づいて、干渉判定処理に用いるポリゴンを選択する。また、グループ２に含まれている面積を有するポリゴン群については、グループ２について設定された無効化率に基づいて、干渉判定処理に用いるポリゴンを選択する。また、グループ３に含まれている面積を有するポリゴン群については、グループ３について設定された無効化率に基づいて、干渉判定処理に用いるポリゴンを選択する。
【００５０】
ポリゴン選択部１２５の動作の一例について具体例を挙げて説明する。ポリゴン選択部１２５は先ず上記面積テーブルを参照し、閾値１未満の面積と関連付けられているポリゴンインデックスを全て読み出す。読み出したポリゴンインデックスの数が１０個であるとする。そして読み出した１０個のポリゴンインデックスのうち、グループ１について設定された無効化率（７０％とする）の分の数（＝７）を除いた３個のポリゴンインデックスを選択する。選択パターンについては特に限定しない。そして選択したポリゴンインデックスを有するポリゴンを構成する各頂点の座標値は領域３０２内に記されているので、ポリゴン選択部１２５は、この選択したポリゴンインデックスを有するポリゴンを構成する各頂点の座標値を領域３０２から取得する。そして取得した各頂点の座標値を後段の干渉判定部１３０に送出する。
【００５１】
次にポリゴン選択部１２５は上記面積テーブルを参照し、閾値１以上閾値２未満の面積と関連付けられているポリゴンインデックスを全て読み出す。読み出したポリゴンインデックスの数が２０個であるとする。そして読み出した２０個のポリゴンインデックスのうち、グループ２について設定された無効化率（５０％とする）の分の数（＝１０）を除いた１０個のポリゴンインデックスを選択する。選択パターンについては特に限定しない。そして選択したポリゴンインデックスを有するポリゴンを構成する各頂点の座標値は領域３０２内に記されているので、ポリゴン選択部１２５は、この選択したポリゴンインデックスを有するポリゴンを構成する各頂点の座標値を領域３０２から取得する。そして取得した各頂点の座標値を後段の干渉判定部１３０に送出する。
【００５２】
次にポリゴン選択部１２５は上記面積テーブルを参照し、閾値２以上の面積と関連付けられているポリゴンインデックスを全て読み出す。読み出したポリゴンインデックスの数が６個であるとする。そして読み出した６個のポリゴンインデックスのうち、グループ３について設定された無効化率（０％とする）の分の数（＝０）を除いた６個のポリゴンインデックスを選択する。選択パターンについては特に限定しない。そして選択したポリゴンインデックスを有するポリゴンを構成する各頂点の座標値は領域３０２内に記されているので、ポリゴン選択部１２５は、この選択したポリゴンインデックスを有するポリゴンを構成する各頂点の座標値を領域３０２から取得する。そして取得した各頂点の座標値を後段の干渉判定部１３０に送出する。
【００５３】
以上の処理により、各グループに含まれているポリゴンを、各グループについて設定された無効化率に基づいて選択することができる。しかもこの無効化率は、各グループに含まれるポリゴンが、手仮想物体の面積に対してどのような関係にあるのかを反映したものである。従って、係る無効化率を用いて選択したポリゴンを用いて干渉判定処理を行うことで、仮想物体全体の形状は尊重しつつ、干渉判定処理をより高速に行うべく、干渉判定処理に用いるポリゴン数を削減させることができる。
【００５４】
そしてポリゴン判定部１２０は以上の処理を行うことで、１つの仮想物体を構成するポリゴン群のうち、干渉判定処理に用いるポリゴンを選択し、選択したポリゴンを構成する各頂点の座標値を干渉判定部１３０に送出することができる。
【００５５】
次に、干渉判定部１３０について説明する。干渉判定部１３０は、各仮想物体について、干渉判定処理で用いるポリゴンの各頂点の座標値を受けると、これらを用いて仮想物体同士の干渉判定処理を行う。本実施形態では、手仮想物体と設計物仮想物体との干渉判定処理を行う。干渉判定の結果は画像処理部１４０に対して出力する。
【００５６】
次に画像処理部１４０について説明する。同図に示す如く、画像処理部１４０は、画像生成部１４１と描画部１４２とで構成されている。画像生成部１４１は、ポリゴン列データ生成部１１２から各仮想物体についてのポリゴン列データを受けると、これらを用いて各仮想物体を構築する。ポリゴン列データに基づいて仮想物体を構築する処理については周知の技術である。そして構築した各仮想物体を仮想空間中の与えられた位置姿勢でもって配置する。尚、その際、干渉判定部１３０から手仮想物体と干渉したと判定された設計物仮想物体については例えば干渉した箇所の表示を変更させたり、手仮想物体の移動方向にはじき飛ばすなど、その位置姿勢を変更したりしても良い。
【００５７】
描画部１４２は、このような仮想空間を、与えられた位置姿勢を有する視点から見た画像を生成する。所定の位置姿勢を有する視点から見た仮想空間の画像を生成する為の技術については周知の技術である。
【００５８】
この描画した仮想空間の画像は、不図示の表示装置に送出する。
【００５９】
図２は、以上説明した一連の干渉判定処理のフローチャートである。
【００６０】
先ずステップＳ２０１では、オブジェクトデータ読み込み部１１１が、各仮想物体の描画データを、不図示のメモリから読み出す。そしてオブジェクトデータ読み込み部１１１は読み出した各仮想物体の描画データを順次ポリゴン列データ生成部１１２に出力する。
【００６１】
ステップＳ２０２では、ポリゴン列データ生成部１１２は、オブジェクトデータ読み込み部１１１から受けた各描画データを順次ポリゴン列データに変換する処理を行う。そしてポリゴン列データ生成部１１２は各仮想物体のポリゴン列データを、後段のポリゴン判定部１２０と画像処理部１４０とに出力する。
【００６２】
ステップＳ２０３では、以降の処理で登場する無効化率が、ポリゴンの面積に基づいて決まるものであるという条件Ａを設定する。係る設定は予め行うようにしても良い。また、条件Ａは仮想物体毎に設定しても良い。
【００６３】
次にステップＳ２０４では先ず、ヒストグラム生成部１２３はポリゴン列データに登録されている各ポリゴンの面積を求める。そしてヒストグラム生成部１２３は、面積を求めたポリゴンのポリゴンインデックスと、この面積と、を関連付けて面積テーブルに登録する。次にヒストグラム生成部１２３は、計算した各ポリゴンの面積のヒストグラムを作成し、表示装置などの画面上に対して出力する。これによりユーザからは閾値１，閾値２が設定されるので、自動的にグループ１〜３が決定する。無効化率関数設定部１２１は、グループ１〜３のそれぞれのグループについて、無効化率を設定する。
【００６４】
次にステップＳ２０７では、ポリゴン選択部１２５は、ポリゴン列データから、干渉判定処理に用いるポリゴンのデータを選択する処理を行う。即ちポリゴン選択部１２５は、グループ１に含まれている面積を有するポリゴン群については、グループ１について設定された無効化率で、干渉判定処理に用いるポリゴンを選択する。また、グループ２に含まれている面積を有するポリゴン群については、グループ２について設定された無効化率で、干渉判定処理に用いるポリゴンを選択する。また、グループ３に含まれている面積を有するポリゴン群については、グループ３について設定された無効化率で、干渉判定処理に用いるポリゴンを選択する。例えば、まずある一つのポリゴンを選択し、その辺が接するポリゴンを非選択（若しくは選択）し、点が接するポリゴンを非選択（若しくは選択）する。
【００６５】
ステップＳ２１０では、干渉判定部１３０は、各仮想物体について、干渉判定処理で用いるポリゴンの各頂点の座標値を受けると、これらを用いて仮想物体同士の干渉判定処理を行う。干渉判定の結果は画像処理部１４０に対して出力する。
【００６６】
次に、上記条件Ａが変更された場合には処理をステップＳ２０３に戻すのであるが、変更されていない場合には処理をステップＳ２１２に進める。本処理を終了する指示が入力されたり、終了する条件が満たされない限りは処理はステップＳ２１２を介してステップＳ２１０に戻す。
【００６７】
以上の説明により、本実施形態では、ポリゴンリダクションや詳細度変更などの従来のポリゴン除去技術と同様に、ポリゴン数を減少することで高速な干渉判定を行うことが可能となる。
【００６８】
以上説明した本実施形態が従来技術に対して有用な点は次の通りである。即ち、他の手法では3次元多角形の形状そのものが変更されてしまうため、CG描画で使われる3次元多面体と結果が一致しない。しかし本実施形態では、ポリゴン列データ内での頂点情報を失うことなく面情報のみを干渉判定処理において無視する。そのため、頂点は完全にCG描画で使用され、3次元多面体と同一の形状を保つことができる。また、それによって干渉判定用とCG描画用とで別のデータを作成する必要がなく、CG描画用のデータをそのまま干渉判定に用いることができるので、メモリ効率を向上させることができる。
【００６９】
加えて、最大無効化率を５０％とした場合には、その領域においてポリゴンを交互に除去することにより、ポリゴンを除去しても3次元多面体における線分情報も保持されることとなる利点を持つ。
【００７０】
また、CG描画処理においては、同様の手法でポリゴンを無視すると隠蔽問題で視覚的に矛盾が生じるため正常な描画結果を得ることはできない。しかし、干渉判定においては視覚的に見える必要がないので、干渉対象がある程度以上の大きさの場合、ネジのような微細な部品における面積の小さいポリゴンは間引いて無視しても十分な精度で干渉結果を得ることができる。
【００７１】
上記の効果により、3次元オブジェクトの形状や作業の内容に応じて自由に無効化率を設定することにより、作業者の希望に応じた仮想体験を干渉判定も行いながらリアルに体験することができる。
【００７２】
なお、本実施形態では、閾値は予め設定されたものとして説明したが、適宜編集することができるようにしても良い。
【００７３】
［第２の実施形態］
本実施形態では上記条件Ａとして、手仮想物体と各設計物仮想物体との相対速度を用いる。本実施形態に係る画像処理装置の機能構成は図１に示したものを用いる。
【００７４】
本実施形態ではヒストグラム生成部１２３は、手仮想物体を移動させた場合にこの手仮想物体と他の各設計物仮想物体との間の相対速度を求める。そしてそれぞれの設計物仮想物体に対して求めた相対速度のヒストグラムを作成する。そしてヒストグラム生成部１２３はこのようにして作成したヒストグラムを表示装置などの画面上に対して出力する。これにより本装置のユーザは、このヒストグラムを見ることで、手仮想物体が各設計物仮想物体に対してどのような相対速度で移動しているのかを把握することができる。そしてユーザは、相対速度に対する閾値を１以上設定する。係る設定入力は無効化率関数設定部１２１によって受け付ける。もちろん、係る設定はユーザ入力以外にも、無効化率関数設定部１２１が行うようにしても良い。本実施形態では、ユーザが閾値１，閾値２を設定したものとして説明するが、以下の説明は、無効化率関数設定部１２１が設定した閾値を用いても同様である。
【００７５】
次に無効化率関数設定部１２１は、手仮想物体との相対速度が閾値１未満である設計物仮想物体が属するグループ（グループ１）、手仮想物体との相対速度が閾値１以上閾値２未満である設計物仮想物体が属するグループ（グループ２）、手仮想物体との相対速度が閾値２以上である設計物仮想物体が属するグループ（グループ３）、のそれぞれのグループについて、無効化率を設定する。本実施形態における無効化率とは、グループ内に属する設計物仮想物体を構成するポリゴンのうち干渉判定で用いないポリゴンの割合を示すものであり、グループ毎に設定するものである。
【００７６】
図７は、各グループについて設定した無効化率のグラフに、手仮想物体と各設計物仮想物体との相対速度のヒストグラムとを重ね合わせたものを示す図である。同図において横軸は手仮想物体と各設計物仮想物体との相対速度を示し、縦軸は無効化率と分布とを示す。
【００７７】
同図において６０１は、手仮想物体との相対速度が閾値１未満である区間である。６０２は、手仮想物体との相対速度が閾値１以上閾値２未満である区間である。６０３は、手仮想物体との相対速度が閾値２以上である区間である。
【００７８】
同図に示した無効化率では、区間６０１に含まれる設計物仮想物体については限りなく０％に近い無効化率を与えている。区間６０２に含まれる設計物仮想物体については５０％の無効化率を与えている。区間６０３に含まれる設計物仮想物体については、５０％よりも大きい無効化率（例えば７０％）を与えている。
【００７９】
ここで、各グループについて設定する無効化率について説明する。仮想動作検証試験において、検査を行いたい領域にすばやく移動させるといった場合には、精密な検査を行っておらず、動作の追従性（高速動作性）が大きく重要視される。手仮想物体が高速で移動している場合、手仮想物体と設計物仮想物体との相対速度の分布７１０は同図右の方に移動することになる。従ってこのような場合には、区間６０３に対しては５０％を超える高い無効化率を設定することで、高速動作している3次元多面体間の干渉処理を高速に行う。
【００８０】
一方、仮想動作検証試験において、領域に近づき詳細な動作検証を行っている場合には、手仮想物体と設計物仮想物体との相対速度は遅くなる。手仮想物体が低速で移動している場合、手仮想物体と設計物仮想物体との相対速度の分布７１０は図８に示す如く左の方に移動することになる。図８は、図７における分布７１０が左の方に移動した様子を示す図である。従ってこのような場合には、区間６０２に対しては５０％の無効化率を設定し、仮想物体の形状を損なうことなくポリゴン数を半減したデータを用いて詳細な干渉判定を行う。
【００８１】
また、区間６０１については、相対速度はより遅くなり、より詳細な動作検証を行っていることになる。従ってこのような場合には、区間６０１に対しては限りなく０％に近い無効化率を設定する。
【００８２】
以上の処理によれば、各設計物仮想物体について、無効化率を設定することができる。なお、設計物仮想物体を構成する全てのポリゴンのうち、どの割合の数のポリゴンを干渉判定に用いるのかについては第１の実施形態と同様に、この設計物仮想物体について設定された無効化率に基づいて決定する。
【００８３】
また、本実施形態に係る処理のフローチャートは基本的には図２に示したものと同じであるが以下の点が異なる。即ち、ステップＳ２０３では、以降の処理で登場する無効化率が、手仮想物体との相対速度に基づいて決まるものであるという条件Ａを設定する。
【００８４】
次にステップＳ２０４では先ず、ヒストグラム生成部１２３は手仮想物体と各設計物仮想物体との相対速度を求める。そしてヒストグラム生成部１２３は、計算した各相対速度のヒストグラムを作成し、表示装置などの画面上に対して出力する。これによりユーザからは閾値１，閾値２が設定されるので、自動的にグループ１〜３が決定する。無効化率関数設定部１２１は、グループ１〜３のそれぞれのグループについて、無効化率を設定する。
【００８５】
また、第１の実施形態と第２の実施形態とを適宜組み合わせても良い。即ち、ある設計物仮想物体について干渉判定処理に用いるポリゴンを選択するためには第１の実施形態を適用する。また、別の設計物仮想物体について干渉判定処理に用いるポリゴンを選択するためには第２の実施形態を適用する。これによれば、条件に応じて干渉判定対象ポリゴンを選択する基準を変更することができるため、簡易に現存する他の干渉判定演算装置に実装することができる。
【００８６】
［第３の実施形態］
本実施形態では、１フレーム内で仮想物体同士の干渉判定を行う際に用いるポリゴンの数を削減する。そのために本実施形態では、１つの仮想物体を構成するポリゴンをｍ個のグループに分割し、１フレーム内で干渉判定に用いるポリゴンは、何れか１つのグループに含まれるものを用いる。即ち、１つのフレーム内では１つのグループに含まれるポリゴンを用いて干渉判定処理を行、次のフレームではまた別のグループに含まれるポリゴンを用いて干渉判定処理を行う。
【００８７】
また、１つのグループに含まれているポリゴン数は、１フレーム内で干渉判定処理が終了することができるような数である。もちろんこの数は、干渉判定処理を行う装置の処理速度に応じて異なることになる。なお、本実施形態に係る画像処理装置の機能構成は、図１に示した構成において、無効化率関数設定部１２１、ヒストグラム生成部１２３を省いた構成となる。
【００８８】
図９は、ｍ＝２の場合について、本実施形態を説明する図である。図９において図３と同じものについては同じ番号を付けており、その説明は省略する。
【００８９】
領域３０３内の各列は、斜線で示されている列と、斜線が付けられていない列の２つ（＝ｍ）のグループに分割されている。同図において９０１は、領域３０３内の全ての列に記されているポリゴンを用いて構成されている仮想物体を示す。９０２は、領域３０３内の斜線で示されている列に記されているポリゴンのみを用いて構成されている仮想物体を示す。９０３は、領域３０３内の斜線で示されていない列に記されているポリゴンのみを用いて構成されている仮想物体を示す。仮想物体９０２，９０３において斜線で示している部分にはポリゴンが配置されており、斜線で示していない空白の部分についてはポリゴンは配置されていない。即ち、仮想物体９０２で使用しているポリゴンは仮想物体９０３では使用していないし、逆に、仮想物体９０３で使用しているポリゴンは仮想物体９０２では使用していない。
【００９０】
そして、各フレームにおいて仮想物体９０１を描画すると共に、仮想物体９０１との干渉判定を行う場合には、フレーム毎に仮想物体９０２、仮想物体９０３を交互に用いる。従ってこの場合、２フレームで、仮想物体９０１を構成する全てのポリゴンを用いた干渉判定処理を行うことができる。
【００９１】
もちろん上述の通り、グループの数ｍは２以外となることもある。即ち、グループ数ｍは、例えば仮想空間画像の描画レートが３０Ｈｚである場合、約３３ｍ秒で干渉判定が完了可能なポリゴン数で、仮想物体を構成する全てのポリゴン数を割った結果（小数点以下を切り上げた整数値）である。従ってこの場合、ｍフレームで、仮想物体９０１を構成する全てのポリゴンを用いた干渉判定処理を行うことができる。なお、領域３０３内の各列をｍ個のグループに分割する方法については上記選択パターンと同様、特に限定するものではない。
【００９２】
以上説明した処理を行うために、本実施形態に係る画像処理装置は以下のような動作を行う。データ読み込み部１１０は第１の実施形態と同様の処理を行う。ポリゴン選択部１２５はポリゴン列データを参照し、領域３０３内の各列をｍ個のグループに分割する。係る分割は予め行うようにしても良い。そして分割したグループのうち、現フレームで用いるグループを１つ選択する。そして選択したグループに含まれている列に登録されている各頂点の頂点インデックスに対応する頂点座標値を領域３０２から取得し、干渉判定部１３０に出力する。
【００９３】
図１０Ａ、１０Ｂは、仮想空間画像の描画と、これと並行して行われる干渉判定処理とのタイムチャートを示す図である。同図において横軸は時間を示す。
【００９４】
図１０Ａにおいて１００１、１００２は仮想物体９０１の描画期間を示しており、１０１１は仮想物体９０１との干渉判定処理を行う期間を示している。従来では図１０Ａに示す如く、期間１００１，１００２よりも期間１０１１の方が一般的には長い。従って同図に示す如く、仮想物体９０１の描画はタイミング１０２０の時点で終わっているものの、干渉判定処理はそれよりもずっと後のタイミング１０２１で終わることになる。そのため、「ｗａｉｔ」で示す期間（期間１００１の終了タイミングと期間１０１１の終了タイミングとの間の期間）だけ次のフレームの描画（期間１００２における描画）が遅れることになる。このような遅れにより、リアルタイムな体験を著しく妨げることとなる。
【００９５】
従って本実施形態では図１０Ｂに示す如く、タイミング１０２０の時点で仮想物体９０１の干渉判定処理が完了するようなポリゴン数（同図ではオリジナルの半分）で構成された仮想物体９０２を用いて干渉判定処理を行う。そして次のフレームでは、タイミング１０２１の時点で仮想物体９０１の干渉判定処理が完了するようなポリゴン数（同図ではオリジナルの半分）で構成された仮想物体９０３を用いて干渉判定処理を行う。これにより、１フレーム（同図ではタイミング１０２０からタイミング１０２１の間）内で描画処理と干渉判定処理の両方を完了させることができる。そしてこれにより、描画レートを妨げることなく干渉判定処理を行うことができる。
【００９６】
また、上述の通り、ｍフレームで１つの仮想物体を構成する全てのポリゴンについての干渉判定処理を行うことができるので、ｍフレーム毎に干渉判定結果を出力するようにしても良い。
【００９７】
なお、本実施形態において、選択したポリゴンを用いて仮想物体を構築する為の処理については第１の実施形態と同様である。
【００９８】
［第４の実施形態］
本実施形態では仮想空間画像の描画を行う装置と、第３の実施形態で説明した干渉判定処理を行う装置とを別個に用意し、それぞれを並行して動作させる場合について説明する。更に、グループ数をｍとすると、干渉判定処理を行う装置はｍ台用意し、１台の装置に１つのグループを担当させる。以下では例としてｍ＝２の場合について説明する。
【００９９】
図１１は、ｍ＝２の場合における各装置における処理のタイムチャートを示す図である。仮想空間画像の描画を行う装置（ＣＧ描画用ＰＣ）は、仮想空間画像の描画を１００１で示す期間内で行う。第３の実施形態で説明した干渉判定処理を行う装置は２台用意され、一方は干渉判定用ＰＣ１，他方は干渉判定用ＰＣ２とする。
【０１００】
干渉判定用ＰＣ１は期間１１０１内で仮想物体９０２を用いて干渉判定処理を行う。干渉判定用ＰＣ２は期間１１０２内で仮想物体９０３を用いて干渉判定処理を行う。何れの期間１１０１，１１０２も期間１００１の終了タイミング１１０５よりも前に終了するので、１フレーム内で描画処理と、２つの干渉判定処理を完了させることができる。
【０１０１】
そして、干渉判定部１３０は、干渉判定用ＰＣ１からの干渉判定処理結果と干渉判定用ＰＣ２からの干渉判定結果の両方を参照し、干渉があったか否かをチェックする。これにより、描画レートを落とすことなく、仮想物体を構成している全てのポリゴンについての干渉判定処理を行うことができる。
【０１０２】
なお、上記各装置に分散させた処理を、１つの装置内で並行して行うようにしても良い。
【０１０３】
［第５の実施形態］
図１に示した各部の一部若しくは全部をソフトウェアでもって実現し、残りをハードウェアでもって実現しても良い。この場合、例えば、このハードウェアをパーソナルコンピュータに挿入可能な機能拡張カードとして実現し、この機能拡張カードをパーソナルコンピュータに挿入する。また、このソフトウェアは、このパーソナルコンピュータが有するメモリ上に格納する。係る構成によれば、パーソナルコンピュータが有するＣＰＵがこのソフトウェアを実行すると共に、この機能拡張カードの動作制御をも行うことにより、第１の実施形態で説明した処理（図２のフローチャートに従った処理）と同様の処理を行うことができる。
【０１０４】
図１２は、このコンピュータのハードウェア構成を示すブロック図である。
【０１０５】
１４０１はＣＰＵで、ＲＡＭ１４０２やＲＯＭ１４０３に格納されているプログラムやデータを用いて本コンピュータ全体の制御を行う。
【０１０６】
１４０２はＲＡＭで、外部記憶装置１４０６からロードされたプログラムやデータ、Ｉ／Ｆ（インターフェース）１４０７を介して外部から受信したプログラムやデータを一時的に記憶するためのエリアを有する。更には、ＣＰＵ１４０１が各種の処理を実行する際に用いるワークエリアも有する。即ち、ＲＡＭ１４０２は各種のエリアを適宜提供することができる。
【０１０７】
１４０３はＲＯＭで、本コンピュータの設定データやブートプログラムなどを格納する。
【０１０８】
１４０４は操作部で、キーボードやマウスなどにより構成されており、本コンピュータの操作者が操作することで、各種の指示をＣＰＵ１４０１に対して入力することができる。
【０１０９】
１４０５は表示部で、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ１４０１による処理結果を画像や文字などでもって表示することができる。
【０１１０】
１４０６は外部記憶装置で、ハードディスクなどに代表される大容量情報記憶装置であって、ここにはＯＳ（オペレーティングシステム）や、本コンピュータが行う各種の処理をＣＰＵ１４０１に実行させるためのプログラムやデータ等が保存される。このプログラムやデータには、上記ソフトウェアや、機能拡張カード１４０８の動作制御プログラムなども含まれる。また、外部記憶装置１４０６には、各仮想物体についての上記ポリゴン列データや、Ｉ／Ｆ１４０７を介して外部から受信したプログラムやデータも保存される。
【０１１１】
外部記憶装置１４０６に保存されている各種の情報はＣＰＵ１４０１による制御に従って適宜ＲＡＭ１４０２にロードされる。そしてＣＰＵ１４０１がこのロードされたプログラムやデータを用いて処理を実行することにより、本コンピュータは上記各実施形態で説明した干渉判定処理を実行することができる。
【０１１２】
１４０７はＩ／Ｆで、本コンピュータをＬＡＮやインターネット等のネットワークに接続するためのものである。
【０１１３】
１４０８は機能拡張カードで、例えば、仮想物体の描画処理や干渉判定処理の一部若しくは全部を行う処理ボードである。
【０１１４】
１４０９は上述の各部を繋ぐバスである。
【０１１５】
［その他の実施形態］
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０１１６】
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１１７】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１１８】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０１１９】
【図１】本発明の第１の実施形態に係る画像処理装置の機能構成を示すブロック図である。
【図２】干渉判定処理のフローチャートである。
【図３】１つの仮想物体についてポリゴン列データ生成部１１２が作成したポリゴン列データの構成例を示す図である。
【図４】作成したヒストグラムの一例を示す図である。
【図５】各グループについて設定した無効化率のグラフを示す図である。
【図６】図５に示したグラフ上に、図４に示したヒストグラムを重ねた図である。
【図７】各グループについて設定した無効化率のグラフに、手仮想物体と各設計物仮想物体との相対速度のヒストグラムとを重ね合わせたものを示す図である。
【図８】図７における分布７１０が左の方に移動した様子を示す図である。
【図９】ｍ＝２の場合について、本発明の第３の実施形態を説明する図である。
【図１０Ａ】仮想空間画像の描画と、これと並行して行われる干渉判定処理とのタイムチャートを示す図である。
【図１０Ｂ】仮想空間画像の描画と、これと並行して行われる干渉判定処理とのタイムチャートを示す図である。
【図１１】ｍ＝２の場合における各装置における処理のタイムチャートを示す図である。
【図１２】コンピュータのハードウェア構成を示すブロック図である。
【図１】
2008090498.tif 000003
【図２】
2008090498.tif 000004
【図３】
2008090498.tif 000005
【図４】
2008090498.tif 000006
【図５】
2008090498.tif 000007
【図６】
2008090498.tif 000008
【図７】
2008090498.tif 000009
【図８】
2008090498.tif 000010
【図９】
2008090498.tif 000011
【図１０Ａ】
2008090498.tif 000012
【図１０Ｂ】
2008090498.tif 000013
【図１１】
2008090498.tif 000014
【図１２】
2008090498.tif 000015