(57)【要約】【課題】形状作成装置、コンピュータ装置を形状作成装置として動作させるための制御方法、該制御方法をコンピュータ装置に対して実行させるためのコンピュータ実行可能なプログラムを提供する。【解決手段】本発明の形状作成装置は、３次元の入力モデル・データを格納する入力モデル格納部２０と、入力モデルに面クラスタを割り当てて作成される隣接グラフ・データを格納する隣接グラフ格納部２２と、隣接グラフ・データの面クラスタの結合処理を実行するクラスタ結合部２８と、隣接グラフ・データを読み出して、読み出された隣接グラフ・データの位相を判断する、位相判断部３０と、位相判断部の判断に応答して、隣接グラフ・データのノード・データまたはアーク・データを変更する位相操作部３４とを含んでいる。【選択図】  図２１
2005004382.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ装置を使用する３次元物体のための形状作成装置であって、前記形状作成装置は、
３次元の入力モデル・データを格納する入力モデル格納部と、
前記入力モデル・データに面クラスタを割り当てて作成される隣接グラフ・データを格納する隣接グラフ格納部と、
前記隣接グラフ・データの面クラスタの結合処理を実行するクラスタ結合部と、
前記隣接グラフ・データを読み出して、読み出された隣接グラフ・データの位相を判断する、位相判断部と、
前記位相判断部の判断に応答して、隣接グラフ・データのノード・データまたはアーク・データを変更する位相操作部と
を含む形状作成装置。
【請求項２】
前記位相判断部は、前記隣接グラフ・データを読み出して、前記隣接グラフ・データのアークおよびノードの位相を判断し、前記判断に応答して、該当する隣接グラフ・データを前記位相操作部に取得させる、請求項１に記載の形状作成装置。
【請求項３】
前記位相判断部は、前記隣接グラフ・データの所定のノードから他のノードに到達するまでに横断するアークを識別して前記アークの横断方向を示す方向識別データと、前記所定のノードと前記他のノードとを対応させた軸方向グラフ・データを作成する軸方向グラフ・データ作成部を含み、前記形状作成装置は、作成された軸方向グラフ・データを格納する軸方向グラフ格納部を含む、請求項２に記載の形状作成装置。
【請求項４】
前記位相判断部は、前記軸方向グラフ格納部から軸方向グラフ・データを読み出して、前記方向識別データを使用して前記ノードの間におけるサイクルまたはループの存在を判断し、前記判断に応答して、該当する隣接グラフ・データを前記位相操作部に取得させる、請求項３に記載の形状作成装置。
【請求項５】
前記位相操作部は、取得した隣接グラフ・データのノード・データまたはアーク・データをトポロジー・テーブルを参照して隣接グラフ・データを変更し、変更した隣接グラフ・データで前記隣接グラフ・データ格納部のデータを更新する、請求項１に記載の形状作成装置。
【請求項６】
前記クラスタ結合部は、前記隣接グラフ・データの更新を判断して、更新された隣接グラフ・データを取得する、請求項５に記載の形状作成装置。
【請求項７】
コンピュータ装置を３次元物体のための形状作成装置として制御するための制御方法であって、前記制御方法は、前記コンピュータ装置に対して、
３次元の入力モデル・データを入力モデル格納部に格納させるステップ、
前記入力モデル・データに面クラスタを割り当てて作成される隣接グラフ・データを隣接グラフ・データ格納部に格納するステップと、
前記隣接グラフ・データをクラスタ結合部に読み込ませ、面クラスタの結合処理を実行させ、メモリに格納させるステップと、
前記メモリに格納された隣接グラフ・データを位相判断部に読み込ませ、隣接グラフ・データの位相を判断させるステップと、
前記位相判断部の判断に応答して、隣接グラフ・データを位相操作部に読み込ませるステップと
を実行させる制御方法。
【請求項８】
前記位相判断部に対して、前記隣接グラフ・データを読み出して、前記隣接グラフ・データのアークおよびノードの位相を判断させるステップと、
前記判断に応答して、該当する隣接グラフ・データを前記位相操作部に取得させるステップと、
を実行させる、請求項７に記載の方法。
【請求項９】
前記位相判断部は、軸方向グラフ・データ作成部を含み、前記制御方法は、前記軸方向グラフ・データ作成部に対して、
前記隣接グラフ・データの所定のノードから他のノードに到達するまでに横断するアークを識別して前記アークの横断方向を示す方向識別データを計算させるステップと、
前記方向識別データと前記所定のノードと前記他のノードとを対応させて登録した軸方向グラフ・データを作成し、軸方向グラフ格納部に格納させるステップと
を実行させる、請求項８に記載の方法。
【請求項１０】
前記位相判断部に対して、
前記軸方向グラフ格納部から軸方向グラフ・データを読み出して、前記方向識別データを使用して前記ノードの間におけるサイクルまたはループの存在を判断させるステップと、前記判断に応答して、該当する隣接グラフ・データを前記位相操作部に取得させるステップとを実行させる、請求項９に記載の方法。
【請求項１１】
前記位相操作部に対して、
取得した隣接グラフ・データのノード・データまたはアーク・データをトポロジー情報に基づいて変更して隣接グラフ・データを変更するステップと、
変更した隣接グラフ・データで前記隣接グラフ・データ格納部のデータを更新させるステップと、
を実行させる請求項１０に記載の方法。
【請求項１２】
前記クラスタ結合部に対して、前記隣接グラフ・データの更新を判断して、更新された隣接グラフ・データを取得させるステップを実行させる、請求項１１に記載の方法。
【請求項１３】
コンピュータ装置に対して請求項７〜請求項１２のいずれか１項に記載の制御方法を実行させる、コンピュータ実行可能なプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、入力された３次元形状からの認識モデルの作成に関し、より詳細には、３次元形状の入力モデルからクラスタ・データを作成して認識モデルを形成させる場合に、クラスタ・データの位相的整合性を保証することにより、認識モデルのスムースな作成を可能とする、形状作成装置、コンピュータ装置を形状作成装置として動作させるための制御方法、該制御方法をコンピュータ装置に対して実行させるためのコンピュータ実行可能なプログラムに関するものである。
【０００２】
【従来の技術】
有限要素解析などを目的とした６面体メッシュ生成の手法の１つに、「認識モデル」と呼ばれる近似立体を使う方法がある。認識モデルとは、ｉｊｋ空間と呼ぶ整数座標空間に定義される立体である。この認識モデルは、３つの軸のどれかに垂直な平面から構成され、単位立方体を積み上げて立体を近似させたモデルということができる。この単位立方体の表面の位相は、２次元多様体から構成される。元の立体を幾何的に近似する認識モデルを一旦作ることができれば、認識モデルは、単位立方体の要素からなる構造メッシュへと容易に変換することができる。こうして得られた構造メッシュの境界面を元の立体の表面にあてはめ、スムージングをかけることにより、元の立体に対応する６面体要素構造メッシュを得ることができる。
【０００３】
ここで、従来の認識モデルを構築する方法を概略的に説明する。例えば、認識モデルを構築する方法として、３次元形状の表面をクラスタ分けする方法が知られている。この場合、入力される値は、立体の表面を２次元（２Ｄ）要素（３角形か４角形）の集合として表したメッシュ・データである。入力された２Ｄ要素は、座標軸との角度や隣接要素との折れ角、領域としての形状（平面度など）を考慮しながら、クラスタとして参照される単位に徐々に寄せ集められる。各クラスタには、カーテシアン座標系の方向であるｉ、ｊ、ｋの３方向のいずれか１つが割り当てられ、また各クラスタには、各方向における向きに相当する正負の値が割り当てられる。最終的にすべての要素が３種のクラスタのどれかに属した状態が得られたとき、各クラスタを認識モデルの面分とみなして、認識モデルの位相構築が終了する。
【０００４】
クラスタ分けが終了した後、認識モデルの各稜線の分割数（長さに相当）を変数とした最適化問題が設定され、整数計画問題を解くことで認識モデルの構造メッシュが幾何的に確定される。従来のクラスタ法を使用する構造メッシュ生成装置は、概ね下記の機能を含んで構成されている。
（１）形状入力部→メッシュを生成する対象となる形状を入力する。
（２）クラスタ生成部→クラスタ分けによって表面を区分し認識モデルを生成する。
（３）認識モデル幾何決定部→位相が確定した認識モデルに対して、各稜線の分割数を決定する。
（４）メッシュ生成部→構造メッシュを生成し入力形状に合うように変形する。必要ならメッシュを改良する。
【０００５】
上述した従来のクラスタ法の問題点は、クラスタ構築の終了時において位相的に整合性のある認識モデルを生成する保証がないことにある。例えば、４角錐のような形を直感的にクラスタ分けすると、頂点の部分にはもともと何も面がないので、独立した面クラスタを割り当てることができず、底面と底面に対向する上側のクラスタが形成されないことになる。このようなクラスタ分けは、入力モデルを再現できない形状整合性を欠いた認識モデルを与えるので、次段階のメッシュ生成の処理に提供することができなかったり、またせっかくメッシュを生成させたとしても、立体的には、まったく別の形状として認識されてしまうという不都合が生じる。
【０００６】
そもそも認識モデルの頂点に着目すれば、頂点を取り囲むクラスタの方向として許される構成は、しらみつぶしにリストアップしても高々、数通りに限られる。そこで、クラスタの方向（ｉ、ｊ、ｋ）（以下、本発明では「色」として参照する。）を決める際に、制約に反する頂点が生じる場合は、そこを後回しにするという方法を使うこともできる。しかしそれだけではやはり、４角錐のような場合には行き詰まってしまう。
【０００７】
また、一見整合性のあるクラスタ分けが得られた場合でも、各稜線に分割数（正整数）を割り当てる段階で解が存在しえないことがある。これもやはり、クラスタ分け自体が、コンピュータ装置による自動形状認識に適切ではない不整合性を与えるためである。図２４には、従来手法において整合性のある認識モデルの生成に失敗する具体的な例を示す。図２４に示された入力モデルは、入力モデルを一定の方向に一回りすると、それまで高い位置にあったと認識される面が低いと認識される面に連続している。この場合、面の高低を認識させるために軸方向の長さを予め定義しておいたとしても、低い面と高い面とが連結される部分で、軸方向の長さに矛盾が生じ、メッシュの形成に失敗することになる。
【０００８】
【発明が解決しようとする課題】
すなわち、従来の入力モデルのクラスタ分けにおいては、
（ｉ）クラスタ分け（進行中のものも含む）に、位相的な不整合があるかどうかを判定すること、
（ｉｉ）位相的な不整合があるときは、クラスタ分けのどの箇所に原因があるのかを特定すること、
（ｉｉｉ）特定された箇所について、位相的な整合性を確保するための修正処理を自動的に実行させることが課題となっていた。
【０００９】
上述した課題は、位相的な整合性だけを抽出したものであり、正しい認識モデル提供するためには、位相的な整合性だけでなく幾何的な近似度も重要である。しかしながら、位相的な整合性がなければ、幾何学的な正確さを与えることはできないことになる。本発明は、位相的な整合性を満たし、かつ元のクラスタ分けに関連づけられたクラスタ分けを、可能な限りリストすることができれば、その後に幾何学的に正確な認識モデルを選択する場合に、効率よい選択を可能とすることができるものと考えられる。
【００１０】
【課題を解決するための手段】
本発明では形状作成装置を、クラスタ結合部の他に、位相整合性を判断する位相判断部と、位相判断部からの出力を受け取ってクラスタに対して適切な位相を付与するための位相操作部とを含んで構成する。位相判断部は、クラスタ分けの進行中またはクラスタ分けの完了したクラスタ・データの位相を検査・判断して、クラスタ・データの整合性を判断し、整合性の判断結果と、判断したクラスタのラベルと、整合性に対する不適合データとを位相操作部に送る。
【００１１】
本発明の形状作成装置は、位相整合性を判断するためのトポロジー情報を含んでいる。位相操作部は、クラスタ・データの位相を変更するための位相変更ルールを含むトポロジー情報を参照して、不適合データを解析し、不適合の内容を判断し、判断に応答して許容される位相条件を選択してクラスタ・データの位相を変更させ、クラスタ生成部へと位相整合性が許容されたクラスタ・データを返す処理を実行する。
【００１２】
本発明の構成を採用することにより、従来のクラスタ法では正常に処理できなかった入力形状に対しても、最終的に構造メッシュの生成を可能とする３次元形状を提供することが可能となる。
【００１３】
すなわち、本発明によれば、コンピュータ装置を使用する３次元物体のための形状作成装置であって、前記形状作成装置は、
３次元の入力モデル・データを格納する入力モデル格納部と、
前記入力モデル・データに面クラスタを割り当てて作成される隣接グラフ・データを格納する隣接グラフ格納部と、
前記隣接グラフ・データの面クラスタの結合処理を実行するクラスタ結合部と、
前記隣接グラフ・データを読み出して、読み出された隣接グラフ・データの位相を判断する、位相判断部と、
前記位相判断部の判断に応答して、隣接グラフ・データのノード・データまたはアーク・データを変更する位相操作部と
を含む形状作成装置が提供される。
【００１４】
本発明の前記位相判断部は、前記隣接グラフ・データを読み出して、前記隣接グラフ・データのアークおよびノードの位相を判断し、前記判断に応答して、該当する隣接グラフ・データを前記位相操作部に取得させる。
【００１５】
本発明の前記位相判断部は、前記隣接グラフ・データの所定のノードから他のノードに到達するまでに横断するアークを識別して前記アークの横断方向を示す方向識別データと、前記所定のノードと前記他のノードとを対応させた軸方向グラフ・データを作成する軸方向グラフ・データ作成部を含み、前記形状作成装置は、作成された軸方向グラフ・データを格納する軸方向グラフ格納部を含む。
【００１６】
本発明の前記位相判断部は、前記軸方向グラフ格納部から軸方向グラフ・データを読み出して、前記方向識別データを使用して前記ノードの間におけるサイクルまたはループの存在を判断し、前記判断に応答して、該当する隣接グラフ・データを前記位相操作部に取得させる。
【００１７】
本発明の前記位相操作部は、取得した隣接グラフ・データのノード・データまたはアーク・データをトポロジー・テーブルを参照して隣接グラフ・データを変更し、変更した隣接グラフ・データで前記隣接グラフ・データ格納部のデータを更新する。
【００１８】
本発明の前記クラスタ結合部は、前記隣接グラフ・データの更新を判断して、更新された隣接グラフ・データを取得する。
【００１９】
また、本発明によれば、コンピュータ装置を３次元物体のための形状作成装置として制御するための制御方法であって、前記制御方法は、前記コンピュータ装置に対して、
３次元の入力モデル・データを入力モデル格納部に格納させるステップ、
前記入力モデル・データに面クラスタを割り当てて作成される隣接グラフ・データを隣接グラフ・データ格納部に格納するステップと、
前記隣接グラフ・データをクラスタ結合部に読み込ませ、面クラスタの結合処理を実行させ、メモリに格納させるステップと、
前記メモリに格納された隣接グラフ・データを位相判断部に読み込ませ、隣接グラフ・データの位相を判断させるステップと、
前記位相判断部の判断に応答して、隣接グラフ・データを位相操作部に読み込ませるステップと
を実行させる制御方法が提供される。
【００２０】
本発明においては、前記位相判断部に対して、前記隣接グラフ・データを読み出して、前記隣接グラフ・データのアークおよびノードの位相を判断させるステップと、
前記判断に応答して、該当する隣接グラフ・データを前記位相操作部に取得させるステップと、
を実行させる。
【００２１】
本発明の前記位相判断部は、軸方向グラフ・データ作成部を含み、前記制御方法は、前記軸方向グラフ・データ作成部に対して、
前記隣接グラフ・データの所定のノードから他のノードに到達するまでに横断するアークを識別して前記アークの横断方向を示す方向識別データを計算させるステップと、
前記方向識別データと前記所定のノードと前記他のノードとを対応させて登録した軸方向グラフ・データを作成し、軸方向グラフ格納部に格納させるステップと
を実行させる。
【００２２】
本発明においては、前記位相判断部に対して、
前記軸方向グラフ格納部から軸方向グラフ・データを読み出して、前記方向識別データを使用して前記ノードの間におけるサイクルまたはループの存在を判断させるステップと、前記判断に応答して、該当する隣接グラフ・データを前記位相操作部に取得させるステップとを実行させる。
【００２３】
本発明では、前記位相操作部に対して、
取得した隣接グラフ・データのノード・データまたはアーク・データをトポロジー情報に基づいて変更して隣接グラフ・データを変更するステップと、
変更した隣接グラフ・データで前記隣接グラフ・データ格納部のデータを更新させるステップと、
を実行させる。
【００２４】
本発明においては、前記クラスタ結合部に対して、前記隣接グラフ・データの更新を判断して、更新された隣接グラフ・データを取得させるステップを実行させる。
【００２５】
さらに、本発明によれば、コンピュータ装置に対して上述した制御方法を実行させる、コンピュータ実行可能なプログラムが提供される。
【００２６】
【発明の実施の形態】
以下本発明を図面に示した実施の形態をもって詳細に説明するが、本発明は図面に示した実施の形態に限定されるものではない。
【００２７】
Ａ．隣接グラフによるクラスタ分けの表現
以下、本発明において共通する概念として使用される用語並びにクラスタ分けの表現手法について説明する。本発明においては、最初に未分類の要素（３角形、４角形）だけがある状態から、クラスタ分けを進行させてゆき、クラスタ分けが完成するまでの状態を、一貫して隣接グラフを使って表現する。本発明において使用する隣接グラフとは、正多面体の面を頂点に置き換え、隣り合っていた面についてはその置き換えられた頂点同士を辺で結んだグラフを意味する。また、本発明においては、隣接グラフにおいて、用語「ノード」は実モデルのクラスタを表し、用語「アーク」は、クラスタどうしの隣接関係（つまり稜線が共有されているか否か）を表すものとする。
【００２８】
なお、本発明では、隣接グラフについては「ノード」、「アーク」、「面分（多角形、ｎ角形）」を常に用い、実モデルを参照する場合には、「頂点」、「稜線」、「クラスタ」を使用する。クラスタ分けを始める前の状態では、各要素は、それぞれ１つのクラスタとみなすものとする（もしくは最初に要素をある程度寄せ集め、粒度を粗くしておくこともできる。）。図１は、本発明において使用するクラスタの一部（ａ）と、当該部分の隣接グラフ（ｂ）とを示した図である。図１において（ａ）と（ｂ）とは、いわゆる双対の関係にある。ノードのまわりのアークの順番は、元の形状モデルで隣接する要素との間にある稜線の順番を示している。
【００２９】
隣接グラフにおけるノードとアークとは、それぞれ対応した実モデル中のクラスタと稜線とを反映した属性値を有している。これらの属性値を、以下にまとめて示す。
（Ｉ）ノードの属性（クラスタの属性）
○向き（色）：ｉ、ｊ、ｋ、  ｕｎｋｎｏｗｎである。ｉ、ｊ、ｋのときはさらに＋方向と−方向に分かれるので、合計７種類となる。
（ＩＩ）アークの属性（クラスタ間の稜線の属性）
○稜線の向き（ｉ、ｊ、ｋ、  ｕｎｋｎｏｗｎ）である。ｕｎｋｎｏｗｎは、両端のノードの一方の向きが未定であるか、両側のノードが同色でかつ異符号であるときを意味する。例えば、（ｊ＋、ｕｎｋｎｏｗｎ）や（ｊ＋、  ｊ−）などにより示される。
（ＩＩＩ）稜線の凹凸（凹、凸、ｕｎｋｎｏｗｎ）
○向きが未定のアークでは常にｕｎｋｎｏｗｎとなる。それ以外の場合は、後述するように幾何計算（スカラー３重積）により決定することができる。
【００３０】
上述した稜線の凹凸は、認識モデル中での角度に応じて決定される。図２は、面クラスタｆ１、ｆ２と、稜線Ｌとからなる形状の凹凸を決定するための概略的な方法を示した図である。本発明において使用する隣接グラフにおいて凹凸を区別するには、上述したスカラー３重積（ｎ×ｍ）・ａの符号を使用する。具体的には、スカラー３重積が正ならば凸であり、負ならば凹である。また、本発明においては、３重積の絶対値が一定の閾値以下の場合は、ｕｎｋｎｏｗｎとしておく。但し、ｎ、ｍは、クラスタから決定される軸方向単位ベクトル（例、（０、−１、０））である。また、ａは、ｎのクラスタを正面から見て反時計方向に回る向きの稜線の方向ベクトルであり、実際のクラスタの幾何学的特性から決定する。稜線の凹凸が決まると、その後各稜線の向き（ｉ、ｊ、ｋ方向）に関する両端点の大小関係が、（ｎ、ｍ）の組合せと稜線の凹凸から論理的に決定することができる。図２に示した形状について得られる凹凸関係を図３に示す。図３に示された大小関係は、後に詳細に説明する位相判断において利用される。
【００３１】
クラスタ法のアルゴリズムでは、はじめに明確な法線方向を持ついくつかの要素（クラスタ）に対して方向（ｉ＋、  ｉ−、  ｊ＋、  ｊ−、  ｋ＋、  ｋ−）を決定する。そして方向が未定のクラスタを、最も適切なものから隣接クラスタに併合させてゆき、「色」を割り当ててゆく。
【００３２】
なお隣接グラフにおいては、ｕｎｋｎｏｗｎのノードどうしの場合を除いて同種のノードがアークを介して隣接することは許されない。この状態が生じるときは、直ちにアークを縮退させ両側のノードを統合して１つにする。統合されてできたノードは、元の２つのノードが表していたクラスタの和集合領域を表し、方向は元の通りとされる。
【００３３】
Ｂ．隣接グラフ上での整合性の条件
本発明においては、認識モデルの整合性の判断は、隣接グラフと、派生する「軸方向グラフ」を使用して、隣接グラフ上で一連の処理を行なう。整合性の判断は、ノードまたはアーク間の整合性を処理するための条件である局所的条件と、ノード間の順序整合性を処理するための大局的条件という、２つを使用する。局所的条件と、大局的条件とは、以下のように定義することができる。
【００３４】
（ａ）局所的条件
（ａ−１）隣接グラフの面分ごとの条件（クラスタの頂点周りで許されるパターン）
（ａ−２）隣接グラフのノードごとの条件（クラスタの輪郭をなす稜線についての制約）
（ｂ）大域的条件
軸方向グラフ中のサイクルまたはループの条件（稜線への分割数割り当ての可能性）である。上述した各条件の具体的な実施の形態については、より詳細に後述する。
【００３５】
Ｃ．本発明の形状作成方法の処理
図４には、本発明の形状作成方法の処理の概略的なフローチャートを示す。図４に示した処理は、ステップＳ１０から開始し、ステップＳ１２において初期クラスタを生成させ、ステップＳ１４でクラスタ稜線の指標値を適切なメモリに格納させる。クラスタ稜線の指標値は、その稜線によって代表される隣接クラスタのペアに対して、クラスタの併合の優先度を示すもので、両クラスタの代表法線のなす角度や、結合後クラスタの形状（平面度など）から計算される。ステップＳ１６においてクラスタ稜線を、指標値の順にソーティングして適切なメモリに格納させる。ステップＳ１８においてデータを指標値の大きい順にメモリから読み出させ、ステップＳ２０において読み出されたクラスタ稜線があるか否かを判断させる。ステップＳ２０の判断において稜線がある場合（ｙｅｓ）には、ステップＳ２２において稜線が結合可能であるか否かを判断する。
【００３６】
ステップＳ２２の判断において結合可能と判断された場合（ｙｅｓ）には、ステップＳ２４で対応する稜線の端点の位置座標の間の稜線のデータを削除し、新たな併合クラスタのデータを作成してクラスタを結合させ、結合クラスタのデータをメモリに登録する。ステップＳ２８で位相検査・操作処理を実行させて、位相整合性を変更させる。
【００３７】
一方、ステップＳ２０の判断において、稜線がないと判断された場合（ｎｏ）には、ステップＳ２６へと処理を進めてステップＳ２６において、クラスタの未だ色が決められていないもののうち、色を決定できるものについて色を決定させる。また、ステップＳ２２の判断において結合可能ではないと判断された場合（ｎｏ）には、処理をステップＳ１８に戻し、次のクラスタ稜線を読み出して、処理を繰り返させる。ステップＳ３０では、メモリに登録されたクラスタすべてについて処理が完了したか否かを、例えば色がｕｎｋｎｏｗｎなクラスタの有無により判断する。ステップＳ３０の判断において、クラスタ分けが完了したと判断された場合（ｙｅｓ）には、ステップＳ３２へと進んで、本発明の処理を終了させる。一方、ステップＳ３０の判断においてまだクラスタ分けが終了していないと判断された場合（ｎｏ）には、ステップＳ１４へと処理を戻し、ステップＳ１４からステップＳ２８までの処理により生成された結合クラスタのデータを反映させてデータを更新させ、再度ステップＳ１６〜ステップＳ３０の処理を繰り返させる。
【００３８】
図５には、本発明の形状作成方法におけるステップＳ２８の局所的条件の判断を行うための条件を、実モデルを使用して限定的に示す。ステップＳ２８において位相整合性の判断基準は、所定の頂点Ｖを取り囲んで形状を生成する３つの面の、例えば法線ベクトルのカーテシアン座標系における向きおよび面の凹凸を使用することができる。具体的な処理には、図２に示した方法にしたがって計算される面の向きおよび凹凸のデータを使用する。
【００３９】
図５に示されるように、所定の頂点Ｖを取り囲んで立方体を形成する面の種類は、６種類に限定されることが示される。これ以外の関係を面が頂点Ｖを取り囲んで立方体を形成する場合には、位相的に許容される認識モデルを形成することができない。本発明における位相整合性の検査は、図３に示されるような面のデータを使用して、所定の頂点を形成する３つの面のデータを判定する。判定の結果、図５に示される位相的な関係を有しないクラスタを排除し、位相的に許容されるクラスタを残すことにより実行される。
【００４０】
さらに、本発明におけるステップＳ２８の位相検査・操作処理の詳細について説明する。図６には、本発明における位相検査・操作処理の詳細なフローチャートを示す。図６に示す位相検査・操作処理は、ステップＳ４０において更新された隣接グラフのデータをメモリから読み出し、処理の間に保持させておくためのバッファ・メモリに隣接グラフのデータを格納する。ステップＳ４２において上述した局所的条件（ａ−１）を判断し、局所的条件（ａ−１）が満足されている場合（ｙｅｓ）には、ステップＳ４４へと処理を進め、さらに局所的条件（ａ−２）の判断を実行させる。
【００４１】
ステップＳ４２において局所的条件（ａ−１）が満たされない場合（ｎｏ）には、ステップＳ４６に処理を進め、後述する位相操作１または２をその時点で処理しているクラスタに対して実行させ、処理をステップＳ４２の判断へと戻す。また、ステップＳ４４の処理において、局所的条件（ａ−２）が満足されない場合（ｎｏ）には、ステップＳ４８へと処理を進め、後述する位相操作３をその時点で処理しているクラスタに対して実行させ、処理をステップＳ４２へと戻して局所的条件が満たされるまで処理を繰り返させる。
【００４２】
局所的条件が所定のクラスタについて満足されると、図６に示した位相検査・操作処理は、ステップＳ５０へと進み、修正の結果を軸方向グラフのデータへと反映させて、データ更新を実行させる。その後、ステップＳ５２へと進んで、更新されたデータを読み込んで、より詳細には後述する大域的条件を算出し、大域的条件が満たされているか否かを判断する。ステップＳ５２の判断において、大域的条件が満たされていないと判断された場合（ｎｏ）には、後述する処理を適用してステップＳ５４においてクラスタを分割し、処理をステップＳ５０へと戻して分割の結果で軸方向グラフのデータを更新して登録する。ステップＳ５２の判断において大域的条件が満たされている（ｙｅｓ）と判断された場合には、図５のステップＳ３０の判断へと処理を進め、位相整合性が、局所的および大局的に保証されるまで、所定のクラスタについて処理を繰り返させる。
【００４３】
Ｄ．位相整合性の判断処理の詳細
Ｄ−１＜局所的な整合性の条件：トポロジー情報＞
隣接グラフの面分ごとの条件（ａ−１）の判断は、図３で列挙したクラスタの頂点周りの並び方を、隣接グラフでのパターンに置換したデータを使用して実行する。この処理を概略的に図７に示す。図７（ａ）〜（ｃ）が実モデルを示しており、図７（ｄ）〜（ｆ）が隣接グラフにおけるパターンに置換したデータを示す。図７（ａ）から図７（ｄ）への変換は、具体的には例えば、図７（ａ）において所定の面分に含まれるポイントを、双対の関係を満たすようにして抽出して生成させ、これらのポイントを、頂点Ｖを含むように連結して形成することができる。
【００４４】
この際、図７（ａ）の実モデルのデータは、図７（ｄ）の３角形で示される隣接グラフの場合には、例えば（Ｐ１，Ｐ２，Ｐ３）で示されるデータへと変換される。図７に示されるように、実モデルでの頂点Ｖ（３つ以上の面クラスタが接する点）は、双対である隣接グラフでは、面分Ｆ１〜Ｆ３へと変換される。図７では、３種類のハッチングにより実モデルにおける面の色（ｉ、ｊ、ｋ）を表している（本発明において、面の「色」を単にｉとして参照する場合には、ｉ＋とｉ−の両方を含むものとする。）。
【００４５】
また、１つの隣接グラフのパターンに対して、同色のノードが複数あるときは、ノードに“１”や、“２”のラベルを付して、ノードの符号を相互に区別することができる。図３にも示したように、多角形を構成するアークの属性に関して言えば、立方体の積み重ねとして実モデルを考える場合には、稜線の凹凸について位相的な制約が生じる。隣接グラフが３角形の場合は、凹と凸のすべての組合せが許される。しかしながら、４角形と６角形の際は、凹と凸が交互に現れなければいけないことが、図３から示される。本発明の条件（ａ−１）の判定は、図７（ｄ）〜図７（ｆ）に示した隣接グラフの面分単位で行う。各面分の境界上に色が定められていないノードがなくなった時点で、評価を実行する。
【００４６】
また、隣接グラフのノードごとの条件（ａ−２）は、実モデル中のクラスタごとの条件に相当するので、下記のように言い換えることができる。
（ｉ）ノードに接続するアークは、ｉ、ｊ、ｋのうち、２色のクラスタ稜線に対応する（１色でも３色でも不可）。
（ｉｉ）アーク（クラスタ稜線）は、各色について２本以上ある。つまりアークは４本以上ある（ノードの度数は４以上）。
【００４７】
上述した判断は、クラスタ分けの途中において、「色」が定められていないノードが判定にリストされない限り、局所的条件（ａ−１）および（ａ−２）の判定が可能なので、位相的に局所的条件を満たしていない箇所を、隣接グラフの双対関係から容易に特定することができる。より具体的に局所的条件を満たしていない箇所は、局所的条件（ａ−１）では、実モデルにおける頂点として、局所的条件（ａ−２）の場合には、面分として特定することができる。
【００４８】
また、図７（ｄ）〜（ｆ）に示した隣接グラフのパターン（局所的条件ａ−１）の中には、同色で異符号のノードを結ぶ（ｉ＋、  ｉ−）のようなアークは存在しえないと言える。このため、異符号のノードを連結したアークについては、隣接グラフにおいて面分境界を共有するノードの「色」がすべて決まるより前の段階で、除外することができる。
【００４９】
Ｄ−２＜局所的条件の充足手法＞
クラスタ法の途中もしくは最後の時点で、局所的な整合性条件が満たされていない場合には、下記の操作を順次適用することにより、局所的な整合性条件を満たす位相的な隣接グラフを生成することができる。ただし下記に説明する修正処理では、関連するノードの「色」がｕｎｋｎｏｗｎでないことを前提とする。ｕｎｋｎｏｗｎの場合には、「色」が確定するまで、判断リストに該当する要素を含ませないでおくことにより、処理を進めることができる。
【００５０】
図８に、以下で説明する位相操作１〜位相操作３の処理の概略を示す。また、図８には、隣接グラフ上での各位相操作の図と共に、それに対応する実際のクラスタ分けの変化の典型的な実施の形態を示す。
【００５１】
位相操作１は、図８（ａ）に示すように、同色で異符号のノードを結ぶアークを、そのアークに対応した稜線（反対向きのクラスタが接する）に縮退させ、縮退した稜線の対のデータを削除することに相当する。これにより２つの３角形から４角形以上の多角形が生じることになる。図８（ａ）下側には、隣接グラフに対して施した処理に関連して実モデルがどのように変化するかが示されている。
【００５２】
また、位相操作２は、２つの操作ａおよびｂとして構成することができる。位相操作２ａは、隣接グラフの多角形の充足を行うものであり、図７のパターンを満たさない多角形を処理するものである。隣接グラフにおける多角形の面Ｆｃは、位相的には錐の頂点を表す。このため、実モデルでは、頂点を引き伸ばして稜線にするか、新規クラスタを挿入するかのいずれかにより解消されることになる。この処理は、本発明の特定の実施の形態では、図８（ｂ）に示されるように、新規なノード（新規クラスタ）を挿入する処理により実行させることができる。ｎ多角形（ｎ≧４）のループにおいて、２色のノードが交互に表れるものとする。この場合、２色のうち、いずれかを挿入しても図３の条件を満たさないことになるので、残りの１色のノードを新規に挿入し、ｎ個の３角形として隣接グラフを生成させる。この場合、２色のノードが交互になることから、ｎは偶数となる。新規ノードの符号については、この処理では判断せず、幾何的に実モデルへと変換して矛盾のないように決定することができる。この操作に対応する実モデルのクラスタ分けの変化は、例えば図８（ｂ）の下側に示されている。
【００５３】
また、同様に適用することができる位相操作２ｂは、対角線アークを隣接グラフに生成させる処理である。これを図８（ｃ）に示す。対角線の両端のノードとして可能な組合せは、ｎ角形の場合で、高々（ｎＣ２−ｎ）通り、例えば、４角形：２通り、５角形：５通り、６角形：９通りなどである。それぞれの場合につき、以下のどれかに該当するので、対応するように隣接グラフのデータを更新する処理を行なう。
【００５４】
２ｂ（ｉ）：対角線の両側が異種（ｉ、ｊ、ｋのうち異なる２つ）の場合、対角線アークを使う多角形が２つできる。３角形ができる場合は、条件（ａ−１）を必ず満たしている。４角形以上の場合は、局所的条件（ａ−１）を満たすか否かを上述した方法により判断し、満足していなければ、生成された多角形に対して上述した位相操作２（ｂ）の処理を再度適用する（図８（ｃ）の（ｉ））。
【００５５】
２ｂ（ｉｉ）：対角線の両側が同色で異符号の場合には、その組合せに対しては対角線アークを入れることはできない（図８（ｃ）の（ｉｉ））ので、他の可能な処理を行う。
【００５６】
２ｂ（ｉｉｉ）：また、対角線の両側が同色で同符号の場合には、対角線アークを挿入すると対角線間で直ちに縮退を生じさせることができるので、併合後、ノードの両側には多角形（３角形以上）かアークが計２つできる。この場合、アークができたときに限り、そのアークの反対側にあるノードに関して度数が１つ減少することになる（図８ｃ）の（ｉｉｉ））。
【００５７】
また、ノードの度数の問題（局所的条件（ｉｉ））を判断する隣接グラフに対しては、あらかじめ位相操作１を施してあるので、ノードは同色のノードと隣接していることはない。このため、互いに隣接するノードの色は１色か２色であることが特定されている。局所的条件のうち、ノードの度数の処理は具体的には、以下に説明するように実行する。図９には、実際のモデルを使用した位相操作３の概略的な処理手順を示す。図９（ａ）が、１色の場合の実施の形態であり、図９（ｂ）が、隣接ノードの色が２色あるものの、一方の色には隣接ノードが１つしかない場合の実施の形態である。
【００５８】
＜ノードの色の変更＞
隣接ノードの色が１色であるとき、自分自身の色と符号を、その隣接ノードと一致させる。直ちにアークの縮退が起き、整合性が解消されることになる。
【００５９】
＜隣接ノードを分割＞
隣接ノードの色が２色あるが、少なくとも一方の色の隣接ノードが１つしかない図９（ｂ）の状態は、明らかに１つしかない隣接ノードの表すクラスタが大きくなり過ぎているものと判断することができる。このため、該当するクラスタの色をｕｎｋｎｏｗｎに戻し、クラスタの複数（３つ以上）に分割して、クラスタを更新させ、再びクラスタ分けの処理を行なう。
【００６０】
本発明においては、上述した局所的な整合性条件を満たすクラスタ分けの隣接グラフのデータをメモリに格納しておき、それぞれの隣接グラフのデータをメモリから読み出して、双対関係を使用してクラスタ境界を実モデル上で幾何的に確定し、最後にそれらの中から適当な解を選択して認識モデルとすることにより、局所的条件を従属した認識モデルを提供することが可能となる。
【００６１】
Ｅ．大域的な整合性条件
上記の方法によって局所的条件を満たすクラスタ分けが得られる。しかしそれだけでは、認識モデルとして稜線に合理的な分割数が割り当てられないという問題が残る場合も想定される。図１０には、上述した大局的な位相不整合を含む実モデルの例を示す。図１０に示す位相不整合については、そのような不整合が存在するか、存在するとすればどこにあるか、それをどう修復するかが、位相整合性検査において判断する必要が生じる。この問題は、上述した局所的な位相整合性が満たされた状態でも存在し得るので、これを大域的な不整合として参照する。
【００６２】
図１１には、大域的不整合のある実モデルにおいて生じる、具体的な不都合の場合の実施の形態を示す。ｚ軸方向に着目すると、各稜線の長さ（分割数）を表す変数ｚａ、ｚｂ、ｚｃ、ｚｄについて、ｚａとｚｄとが位相的に等価な条件にあることを考えれば、下記式が成り立つことがわかる。
【００６３】
【数１】
2005004382.tif 000003
上記式（１）からｚｂ＋ｚｃ＝０が導かれる。一方、変数は正整数であることが前提とされるので、上記式（１）の制約を満たす解はそもそも存在しないことになる。
【００６４】
上述した制約を満たす分割処理は、例えば整数計画法を用いる手法では、下記式（２）のような目的関数の最小化と同時に行なわれる。下記式（２）では、大文字は元の形状モデルから決まる各辺の理想的分割数を示す。
【００６５】
【数２】
2005004382.tif 000004
整数計画法を使うにせよ使わないにせよ、矛盾する制約を含む問題を解こうとするのは、計算コストの無駄となる。さらに、解けないことが判明した段階で、不整合を引き起こしたクラスタの箇所を特定するのは容易ではない。
【００６６】
そこで、変数（稜線分割数）の制約に矛盾があるかどうかを、本発明においては、隣接グラフから「軸方向グラフ」を作成して判断する。図１２に、図１１に示した認識モデルのｋ方向（縦方向）に着目した軸方向グラフの実施の形態を示す。ノードは、ｋ方向のクラスタであり、方向つきアークは、ｋ方向における上下関係を示す。この上下関係は、隣接グラフのアークの属性の一つである「方向」を利用して生成することができる。なお、図１２に示したアークには、変数対応関係が視覚的に理解しやすいように、認識モデルにおける変数を示す符号を付記してある。図１２に示された軸方向グラフは、図１１に示した認識モデルの底面Ｋ０から面Ｋ２を経由して面Ｋ１に到達する場合に得られるｋ方向の軸方向グラフである。図１１および図１２を対比すれば理解されるように、面Ｋ０からは、ｚａ、ｚｄ方向にアークが存在し、面Ｋ２からは、アークｚｂを経由して面Ｋ１へと到達している。同時に、面Ｋ２からは、ｚｃ方向に進んで面Ｋ１に到達するので、図１２に示した軸方向グラフを形成することができる。
【００６７】
すなわち、軸方向グラフにおいて上述した不整合（変数に正の値を割り当てられない）が生じる場合は、軸方向グラフの要素間に循環関係（以下、本発明では、簡単に「サイクル」として参照する。）が見出されることに相当する。軸方向グラフの定式化には、種々の方法を採用することができるが、図１２に示した本発明の直感的に説明の容易な軸方向グラフの定式化は、例えば下記式（３）のベクトル表記で与えることができる。
【００６８】
【数３】
2005004382.tif 000005
上記式（３）において、Ｋ２とＫ１との間にｚｂ、ｚｃのサイクルが存在することが、軸方向グラフのデータセットにおいて、例えば隣接した面識別子ＫｍとＫｎとの間において、負の要素が存在するか否かを判断することにより、サイクルの存在を判断することができる。また、これ以外にもループ辺（両端のノードが同一である辺）も、サイクルのうちの一態様とされる。図１３には、上述した両端のノードが同一であるノードＫから出発してノードＫに戻るようなループ辺が存在する軸方向グラフの実施の形態を示す。同様のデータ表示の実施の形態については図１２のサイクルを構成する場合についても、ノードＫ２とノードＫ１との間に使用できる。下記式（４）には、図１２に示したノードＫ２とノードＫ１との間のサイクルおよび図１３に示すループ辺が存在する場合の、軸方向グラフのベクトル表記での実施の形態を示す。
【００６９】
【数４】
2005004382.tif 000006
【００７０】
図１１〜図１３では、具体的で、かつ直感的に理解のできる実施の形態を使用して説明を行った。図１４には、より一般的に軸方向グラフを作る手順を示す。図１４（ａ）が実モデルの構成を示し、図１４（ｂ）が対応する隣接グラフの実施の形態である。図１４（ａ）に示された実モデルからは、双対関係を使用して上述した手法により図１４（ｂ）に対応する隣接グラフ・データを作成して、登録する。さらに、本発明では、図１４（ｂ）に対応するデータを読み出して、下記に示す処理を実行させ、式（３）や、式（４）で例示的に記述されるデータ構造を生成させる。
【００７１】
実際的な軸方向グラフの生成手順は、以下のようになる。
【００７２】
（１）ｉ、ｊ、ｋのうち１つの方向に着目し（ここでは仮にｋとするが他の２方向についても同様）、隣接グラフからｋ方向のノード（クラスタ）をすべて抽出し、軸方向グラフのノード、例えばＫ０、Ｋ１、Ｋ２などとしてバッファ・メモリなどに一時的に格納させる。
（２）隣接グラフ中のｕｎｋｎｏｗｎでもｋでもない「色」のノード間を結ぶアークについて、対応するクラスタ稜線を探す。クラスタ稜線は、元の実モデル中の異なる色のクラスタが接する幾何的な稜線に対応し、これが、図１４（ｂ）中において矢線で示されている。上述したクラスタ稜線のすべてについて以下の処理を実行させる。
（２−１）隣接グラフに対応するデータにおいてノードを識別する。識別された２つのノード、例えばｋ０、ｋ１を抽出して、その間にクラスタ稜線を識別させると共に、ノードとの対応を指定することが可能な方向識別データ、例えばＬｉ，ｊを挿入して、例えば、ノード間に下記式（５）で示されるデータ構造を作成する。
【００７３】
【数５】
2005004382.tif 000007
上記方向識別データＬｉ，ｊは、図１４におけるアークに交差する短い矢線で示されている。隣接グラフにおけるアークの両側の面分は、クラスタ稜線の両端点に対応するので、クラスタ稜線に対してｋ軸方向の向き（正か負）が決まっていれば、座標が小さいほうから大きいほうへ向かうように、データを配列する。例えば、このようなデータ構造は、上記式（５）において、変数Ｌｉ，ｊの左が座標の小さいノードであり、右に座標の大きなノードとなるようにシーケンシャルに格納させて形成させることにより実現することができる。このとき問題なのは、ｋ軸方向の正負がｕｎｋｎｏｗｎの場合であるが、この場合は、方向識別データＬｉ，ｊを挿入しないことにより、図１４においては矢印を付さないことに対応する処理を実行させ、無駄な処理を行うことがないようにすることができる。
【００７４】
（２−２）クラスタ稜線の両端点につながるｋ方向の面分に相当するノードのペアに対して、軸方向グラフを与えるためのベクトル表記データを生成させ、メモリに格納させる。この処理は、まず、軸方向グラフの始点ノードと終点ノードとを選択し、始点ノードから近い方向識別データＬｉ，ｊを選択し、次ノードを選択し、その次の方向識別データＬｉ，ｊを選択して、順次バッファ・メモリにシーケンシャルに登録してゆくことにより作成することができる。この処理は、図１４においても追跡することができ、例えばノードＫ１から符号“ａ”、符号“ｂ”で示されるクラスタ稜線を通過して、ノードＫ２に達するようにして作成することができる。このとき、式（３）または式（４）に対応する表記は、符号“ａ”、符号“ｂ”についての変数Ｌｉ，ｊをそれぞれ、Ｌａ、Ｌｂとして記述すれば、下記式（６）で与えられることになる。
【００７５】
【数６】
2005004382.tif 000008
上記式（６）と、式（３）、式（４）とを比較すれば容易に判断されるように、軸方向グラフのアークｚａなどが方向識別データＬｉ，ｊにより指定されることが示されており、方向識別データＬｉ，ｊの符号をサイクルを判断するために使用することができることがわかる。また、上記隣接グラフの処理から、軸方向グラフのデータを導出することができることが示される。
【００７６】
上述した手順により、図１１の実モデルを使用して作成したｋ方向の軸方向グラフを図１５に示す。図１５に示されるように、軸方向グラフにおいて、ｋ方向のアークは、太い矢印で示されるように８本生成できる。これれが図１１に示した認識モデル中の８本のｋ方向の稜線を表すものとなっている。
【００７７】
上述した軸方向グラフを使った大域的不整合の判定は、進行中のクラスタ分けについても適用可能である。つまり、隣接グラフ中に「色」の定められていないノードが残っていても、ｉ、ｊ、ｋで指定される「色」情報が登録されたノードだけに着目して処理をすれば、確定した範囲内での不整合の有無がわかる。
【００７８】
Ｆ．大域的な整合性の充足方法
これまで説明したデータ構成を使用して、軸方向グラフにおけるサイクルが判断されることが示された。大域的な整合性を満たすための位相操作は、１つまたは複数のノードから形成されるサイクルやループを解消し、実モデルの整合性を与える操作に対応する。この位相操作としては、位相的に単純な方法として、サイクルまたはループ内のアークの方向の逆転またはノードの分割（クラスタの分割）として導入することができる。しかしながらアークを逆転させることは、元の認識モデルの幾何学的な整合性を大きく変化させる可能性がある。このため、アークの方向を逆転させる方法は、本発明において使用することができないと言うわけではないものの、幾何的な意味を考えると汎用的に採用するには無理があるといえる。このため、本発明の好適な実施の形態では、大局的な位相整合性を満たすための処理としては、ノード分割により大局的な位相整合性を満たす処理を実行することが好ましい。
【００７９】
ここで、ノードの分割によってサイクルや、ループを解消すると言っても、種々の分割方法を使用することができる。分割するノードの選び方はサイクル中のノードの数だけあるし、特定のノード（クラスタ）を分割するやり方についても、位相的に複数の方法が想定できる。本発明においては、位相的に可能な解決策をすべて提示することで幾何的な選択を可能にすることを目的とするので、できるだけ制限の少ない妥当な方法を使用することが望ましい。
【００８０】
一般にｎ角形を２つに分割するということは、それを構成するｎ個の頂点（すなわち接続するｎ本の稜線）を、２グループに分けることに相当する（多角形の頂点を通る分割は除外する）。すなわち、面分を構成するｎ本の稜線から２つを選んで、それを横切るように分割すると考えてもよい。したがってこの場合の選択数は、高々ｎＣ２通りである。しかも、本発明の目的においては、分割するべき多角形の２稜線の選び方には以下の制約があることがわかる。すなわち、２つの稜線は、ｉ、ｊ、ｋの３方向のうち同じ方向であること、およびクラスタの外周を一定方向に回る向きを考えたとき、２つの稜線は軸に対して正方向と負方向になること、である。上述した制約条件下では、結局のところ、許容される２稜線は、ｎＣ２通りのうちのごく一部だけが残されることになる。
【００８１】
図１６には、許容される分割方法（ａ）と、許容されない分割方法（ｂ）を示す。図１６（ａ）に示された許容される分割条件を文章化すれば、「クラスタ稜線であって、クラスタ外周に沿って一周した場合に所定の軸ｉ、ｊ、ｋのいずれかに関連して反対向きの稜線を横断して分割する」として表現することができる。コンピュータ装置を使用した分割の具体的な処理は、隣接グラフ領域で実行され、分割が許容されたクラスタ稜線のペアの適切な位置にノード・ペアを形成させ、このノード・ペア間に新たにクラスタ稜線を示す変数を挿入することにより実行させることができる。
【００８２】
図１７は、ノード分割の一般的なパターンを、図１１に示した実施の形態を使用して説明した図である。図１７（ａ）が軸方向グラフであり、図１７（ｂ）が軸方向グラフを与えた実モデルの概略的な形状を示した図である。図１７には、軸方向グラフの８本アーク（ａ−ｈ）と、実モデルの稜線とが対応するように、同一の符号を使用して示されている。図１７に示した実施の形態では、図１７（ａ）に示すように、２つのノードクラスタＫ１とＫ２とによりサイクルが構成されている。ここで、例えばＫ２を分割する場合の処理について説明する。
【００８３】
クラスタを分割することにより、図１７（ａ）の軸方向グラフの左側のサイクル（Ｋ１とＫ２との間）を解消するためには、Ｋ２に接続する（ａ、ｂ、ｃ、ｄ）の４つのアークを、（ａ、ｂ）および（ｃ、ｄ）に分けて、別々のノードに接続するようにするしかない。なぜなら、ａとｂとは、Ｋ２に入り、ｃとｄとは、Ｋ２から出る向きなので、これ以外の分割方法（例えば（ａ、ｃ）と（ｂ、ｄ））では、Ｋ２を分けた２つのノード間をどちら向きに連結してもサイクルは解消できないからである。
【００８４】
上述した点から、図１７に示すようにクラスタを分割する際に横切る稜線の１つは、Ｋ２とＪ１に共有される稜線でなければならない。この稜線は隣接グラフのＫ２とＪ１を結ぶ破線で示したアークに相当する。上述の条件から、横切るべきもう１つの稜線は、アーク（Ｋ２、Ｊ１）  またはアーク（Ｋ２、Ｊ２）のいずれかである。位相的にはどちらも同等に可能である。図１８には、アーク（Ｋ２、Ｊ２）を選択して、ノードＫ２をＫ２’とＫ２”とＩｘとに分解した様子を示す。Ｋ２がＫ２’とＫ２”に分割されたのに伴って新たにノードＩｘが挿入されている。またＫ２’とＫ２”の間のアークには、サイクルができない方向ｄ１、ｄ２を与える。また、そのような方向を与えることが幾何的に不適切であれば、このノードの分割は、後続する検査においていずれ排除されることになる。図１８（ｂ）には、図１８（ａ）において示した分割により生成される面クラスタの実施の形態を示す。
【００８５】
このパターンによって影響を受けたノードはＪ１、  Ｊ２、  Ｋ２’、  Ｋ２”の４つである。これらのノードに接続する隣接グラフのアーク数はどれも２本ずつ増えている。アークの数が減らないため、これらのノードが条件（ａ−２）を破ることはない。新しくできたノードＩｘも条件（ａ−２）を満たすことになる。また、図１８（ａ）に示される隣接グラフ中に新たな３角形が３つ形成されるが、どれも異なる３色のノードをあたえることで、（ａ−１）を満たすことがわかる。すなわち、この分割パターンの適用によって、局所的条件（ａ−１）および（ａ−２）が破られることはない。
【００８６】
また大域的条件（ｂ）について、Ｋ軸方向については今回の分割で充足されたが、他の軸方向については、新たなノード（Ｉｘ）が挿入されたこともあり、改めて条件のチェックを後続する検査において実行する必要がある。
【００８７】
図１８に示した分割方法は、人間が幾何的なことを考慮して判断すれば最も適当である。しかし本発明の目的は、幾何的な選択を行なうために位相的に許容される認識モデルを列挙することである。このため、上の解だけでなく、図１９に示すように、本発明では、例えば隣接グラフでアーク（Ｋ２、Ｊ１）と（Ｋ２、Ｊ０）を選んだ場合の位相的な解も同様に出力するものとし、またＫ１の分解についても同様に解を出すことも可能である。
【００８８】
図２０は、本発明の形状作成装置１０の概略的な機能ブロック図である。本発明の形状作成装置１０は、概ねＣＰＵと、メモリと、ハードディスクといった大容量の記憶装置とを含むコンピュータ装置１２を含んで構成されている。本発明の形状作成方法は、Ｃ＋＋言語、Ｃ言語、Ｊａｖａ（登録商標）などのコンピュータ実行可能な言語で記述されたプログラムをＣＰＵが読み込んで、コンピュータ装置１２のＣＰＵ自体、メモリ、ハードディスク装置、ディスプレイ装置などを制御させて、本発明により作成された形状を、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭなどの記録媒体や、ディスプレイ装置へと表示させることができる構成とされている。
【００８９】
図２０を参照して本発明の形状作成装置１０を説明すると、本発明の形状作成装置１０は、コンピュータ装置１２と、キーボード、マウスといった入力装置１４と、表示スクリーンを含むディスプレイ装置１６とを含んで構成されている。また、コンピュータ装置１２は、図示しないネットワーク・インタフェースを介して、インターネット、ＬＡＮ、ＷＡＮといったネットワーク１８に接続されていて、ネットワーク環境下で必要とされるデータを他のコンピュータ装置から入手できる構成とすることもできる。
【００９０】
また、コンピュータ装置１２には、入力モデル格納部２０と、隣接グラフ・データ格納部２２と、軸方向グラフ格納部２４とが接続されていて、各データを、処理要求に応答してコンピュータ装置１２へと提供している。ディスプレイ装置１６のスクリーンには、例えば、直前に行われた位相操作により与えられる、実モデルのデータが表示されていて、ユーザに対して位相操作の状態を表示させることができる構成とされている。
【００９１】
図２１には、コンピュータ装置１２の詳細な機能ブロック図を示す。図２１に示されたコンピュータ装置１２は、まず、認識モデルを作成することを希望する入力モデルの位置座標を、入力モデル格納部２０から読み出して、クラスタ・データ作成部２６において初期クラスタを作成し、作成されたクラスタの値を使用してクラスタ稜線や、頂点の指標値を算出する。算出されたクラスタ稜線および頂点の位置座標は、クラスタを識別するための識別子と共に、一旦適切なメモリ３２にクラスタ・データとして格納される。クラスタ結合部２８は、メモリ３２に格納されたクラスタ・データを読み出して、クラスタの「色」を決定すると共に、クラスタの結合処理を実行させ、クラスタ・データを結合の程度に応じて更新して、クラスタ・データとして再度メモリ３２に格納させる。
【００９２】
位相判断部３０は、更新されたクラスタ・データをメモリ３２から読み込んで、双対関係を使用して隣接グラフを算出させ、ハードディスクなどにより構成された隣接グラフ格納部２２へと隣接グラフ・データを格納させている。位相判断部３０は、さらに、隣接グラフ格納部２２から隣接グラフ・データを読み込んで、局所的整合条件および大局的整合条件の判定を実行させ、その結果を位相操作部３４へと渡している。位相操作部３４は、まず、局所的条件を満たすように隣接グラフ・データを処理し、処理が終了した後、処理後の隣接グラフ・データを再度位相判断部３２へと送り、大局的整合条件の判断を実行する。
【００９３】
位相判断部３０は、大局的整合条件の判断に際して、受け取った隣接グラフ・データから軸方向グラフを生成するための軸方向グラフ・データ作成部３０ａを含んでおり、軸方向グラフ・データ格納部２２に軸方向グラフ・データを格納させている。位相判断部３０は、軸方向グラフ・データを使用して、大局的整合条件を判断し、大局的整合条件が満たされていない場合には、対応する隣接グラフ・データを位相操作部３４へと読み込ませ、大局的整合条件を満足させるように隣接グラフ・データを分割処理させている。分割処理された隣接グラフ・データは、隣接グラフ・データ格納部２２へと格納され、データが更新される。その後、更新された隣接グラフ・データは、クラスタ結合部２８が読み出して、局所的整合条件および大局的整合条件を満足したクラスタ・データを作成し、再度クラスタ結合処理部へと、整合条件の改善されたクラスタ・データを渡して処理を実行させている。
【００９４】
図２２は、本発明における位相判断処理および位相操作処理の結果を概略的に示した図である。本発明の処理は、認識モデルとして位相的に整合性のある解を列挙的に生成する。これは、整合性条件充足の位相操作（後述する局所的操作と大域的な「ノードの分割」操作）を適用する場合に、複数通りの操作が適用できることに起因する。１つの不整合な状態（クラスタ分け）に対して複数通りの改善方法があるとき、方針として、各々の方法を適用した別々の状態を作る。このため、図２２に示すように状態はツリー状に発展してゆき、位相的な不整合が解消されたところ（ハッチングにより示したノード）で枝は止まる。
【００９５】
この過程で施される位相操作はどれも不整合を解消する方向に作用するので、ツリーが無限に大きくなることはない。また、枝の長さは加えた位相操作の数を示すので、位相的にあまり原型からと離れたクラスタ分けを避ける意味で、枝の長さを制限することもできる。いずれにせよ現実の問題で発生する不整合は少数なので、ツリーが巨大になることはない。
【００９６】
図２３は、本発明の方法にしたがって、認識モデルの作成段階ごとに、作成される形状を示した図である。処理のために使用する入力モデルは、大局的な不整合性を有する、図２４に示した入力モデルと同一である。本発明の方法にしたがって、大局的な不整合性を解消するべく、面が分割されており、良好な構造メッシュへの分割が可能とされているのがわかる。
【００９７】
本発明の処理により生成された整合性のあるクラスタ分けの集合は、一連の位相操作によって生成できるクラスタ分けをすべて含んでいる。したがってその中から、幾何的に最適なもの（近似度の高い認識モデルを構成できるもの）を、コンピュータ装置におけるグラフィカルな対話処理を使用して選択することができる。
【００９８】
【発明の効果】
また、形状モデルの表面を構成する要素３角形（及び４角形）をクラスタ分けして認識モデルの位相を構築する従来の方法は整合性の保証ができず、そのためメッシュ生成の処理が進まなくなる問題があった。本手法では、クラスタ分けの位相的構造を、隣接グラフと軸方向グラフという２つのグラフによって抽象化し、ノードとアークに与えた属性を利用して条件判定を行うことで、局所的および大域的な整合性の判定と原因箇所を特定することができる。
【００９９】
さらに、局所的・大局的な不整合の両方について、隣接グラフ上での一連の操作を適用することで、整合条件を満たす位相構造を機械的に得る方法を示した。これらの方法によって、位相的整合性を保証された認識モデルの候補解を複数示すことができる。このため、ユーザは、位相の問題に煩わされずに、幾何的な基準だけを考えて１つの解に絞り込むことができ、また幾何的な絞込みの自動化が実現すれば、全体を通した自動化も期待できる。
【０１００】
提案した判定および修正操作は、クラスタ分けの途中においても適用可能である。これらを早い段階で適用することにより、より望ましいクラスタ分けに到達する可能性を高めることもできる。
【０１０１】
＜先行技術文献のリスト＞
・高橋宏明ほか、形状認識を用いた三次元自動要素分割システムの開発、日本機械学会論文集（Ａ編），  ５９（５６９），  ｐｐ．  ２７９−２８５，  １９９３．
・Ｒｅｚａ  Ｔａｇｈａｖｉ，  Ａｕｔｏｍａｔｉｃ  Ｂｌｏｃｋ  Ｄｅｃｏｍｐｏｓｉｔｉｏｎ  Ｕｓｉｎｇ  Ｆｕｚｚｙ  Ｌｏｇｉｃ  Ａｎａｌｙｓｉｓ，  ９ｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｍｅｓｈｉｎｇ  Ｒｏｕｎｄｔａｂｌｅ，  ｐｐ．  １８７−１９２，  ２０００．
・Ｄａｖｉｄ  Ｒ．  Ｗｈｉｔｅ，  ｅｔ．  ａｌ，  Ａｕｔｏｍａｔｅｄ  Ｈｅｘａｈｅｄｒａｌ  Ｍｅｓｈ  Ｇｅｎｅｒａｔｉｏｎ  ｂｙ  Ｖｉｒｔｕａｌ  Ｄｅｃｏｍｐｏｓｉｔｉｏｎ，  ４ｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｍｅｓｈｉｎｇ  Ｒｏｕｎｄｔａｂｌｅ，  １９９５．
・土井淳ほか，６面体メッシュ生成のための認識モデル構築手法−クラスタリングによる位相生成−，  グラフィクスとＣＡＤシンポジウム
・山田敦ほか，６面体メッシュ生成のための自己干渉のない認識モデル構築手法，日本応用数理学会２００２年度年会，２００２／９／１９−２１．
【図面の簡単な説明】
【図１】本発明において使用するクラスタの一部（ａ）と、当該部分の隣接グラフ（ｂ）とを示した図。
【図２】面クラスタｆ１、ｆ２と、稜線Ｌとからなる形状の凹凸を決定するための概略的な方法を示した図。
【図３】図２に示した形状について得られる凹凸関係を示した図。
【図４】本発明の形状作成方法の処理の概略的なフローチャート。
【図５】本発明の形状作成方法におけるステップＳ２８の局所的条件の判断を行うための条件を、実モデルを使用して限定的に示した図。
【図６】本発明における位相検査・操作処理の詳細なフローチャート。
【図７】図３で列挙したクラスタの頂点周りの並び方を、隣接グラフでのパターンに置換したデータを使用して実行する処理を示した概略図。
【図８】位相操作１〜位相操作２の処理の概略を示した図。
【図９】実際のモデルを使用した位相操作３の概略的な処理手順を示した図。
【図１０】位相不整合を含む実モデルの例を示した図。
【図１１】大域的不整合のある実モデルにおいて生じる具体的な不都合の場合の実施の形態を示した図。
【図１２】図１１に示した認識モデルのｋ方向（縦方向）に着目した軸方向グラフの実施の形態を示した図。
【図１３】両端のノードが同一である辺が存在する軸方向グラフの実施の形態を示した図。
【図１４】一般的に軸方向グラフを作る手順を示した図。
【図１５】図１１の実モデルを使用して作成したｋ方向の軸方向グラフを示した図。
【図１６】許容される分割方法（ａ）と、許容されない分割方法（ｂ）を示した図。
【図１７】ノード分割の一般的なパターンを、図１１に示した実施の形態を使用して説明した図。
【図１８】アーク（Ｋ２、Ｊ２）を選択して、ノードＫ２をＫ２’とＫ２”とＩｘとに分解した様子を示した図。
【図１９】本発明の出力結果の別の実施形態を示した図。
【図２０】本発明の形状作成装置の概略的な機能ブロック図。
【図２１】コンピュータ装置１２の詳細な機能ブロック図。
【図２２】本発明における位相判断処理および位相操作処理の結果を概略的に示した図。
【図２３】本発明の方法にしたがって、認識モデルの作成段階ごとに、作成される形状を示した図。
【図２４】従来手法において整合性のある認識モデルの生成に失敗する具体的な例を示した図。
【符号の説明】
１０…形状作成装置、１２…コンピュータ装置、１４…入力装置、１６…ディスプレイ装置、１８…ネットワーク、２０…入力モデル格納部、２２…隣接グラフ格納部、２４…軸方向グラフ格納部、２６…クラスタ・データ作成部、２８…クラスタ結合部、３０…位相判断部、３２…メモリ、３４…位相操作部
【図１】
2005004382.tif 000009
【図２】
2005004382.tif 000010
【図３】
2005004382.tif 000011
【図４】
2005004382.tif 000012
【図５】
2005004382.tif 000013
【図６】
2005004382.tif 000014
【図７】
2005004382.tif 000015
【図８】
2005004382.tif 000016
【図９】
2005004382.tif 000017
【図１０】
2005004382.tif 000018
【図１１】
2005004382.tif 000019
【図１２】
2005004382.tif 000020
【図１３】
2005004382.tif 000021
【図１４】
2005004382.tif 000022
【図１５】
2005004382.tif 000023
【図１６】
2005004382.tif 000024
【図１７】
2005004382.tif 000025
【図１８】
2005004382.tif 000026
【図１９】
2005004382.tif 000027
【図２０】
2005004382.tif 000028
【図２１】
2005004382.tif 000029
【図２２】
2005004382.tif 000030
【図２３】
2005004382.tif 000031
【図２４】
2005004382.tif 000032