(57)【特許請求の範囲】
【請求項１】
ポリゴンメッシュで表された立体形状に存在する凹形状を処理するための装置であって、
上記立体形状を構成している個々の上記ポリゴンメッシュを、それぞれ表向き法線方向に指定距離だけ膨張させる膨張処理部と、
上記膨張処理部により膨張されたポリゴンメッシュにより表される膨張立体形状において交差する部分を検出する交差部分検出部と、
上記交差部分検出部により交差していることが検出された部分の、上記膨張処理部により膨張される前のポリゴンメッシュから構成される面を、上記凹形状の構成要素であるフェイスとして検出する凹形状検出部とを備えたことを特徴とするポリゴンメッシュを用いた立体形状の凹形状処理装置。
【請求項２】
上記凹形状検出部は、
上記凹形状の構成要素として検出した複数のフェイスについて、立体形状のエッジを介して連結するフェイス群をグループ化するグループ化部と、
上記グループ化部により生成されたグループごとに、グループ内に含まれる複数のフェイスのそれぞれについて、表向き法線と、同一グループ内の他のフェイスとの交点を検出する交点検出部と、
上記表向き法線の始点から所定距離以内に上記交点が検出されたフェイスがグループ内に存在しない場合、そのグループのフェイス群を上記凹形状の構成要素から除外する除外処理部とを備えたことを特徴とする請求項１に記載のポリゴンメッシュを用いた立体形状の凹形状処理装置。
【請求項３】
上記凹形状検出部により上記フェイスとして検出された上記凹形状を、上記立体形状の中で識別可能に表示させる凹形状表示部を更に備えたことを特徴とする請求項１または２に記載のポリゴンメッシュを用いた立体形状の凹形状処理装置。
【請求項４】
上記凹形状検出部により上記フェイスとして検出された上記凹形状を覆う構成面を生成する覆面生成部を更に備えたことを特徴とする請求項１〜３の何れか１項に記載のポリゴンメッシュを用いた立体形状の凹形状処理装置。
【請求項５】
上記凹形状検出部により上記フェイスとして検出された上記凹形状を、上記立体形状の中で識別可能に表示させる凹形状表示部と、
上記凹形状表示部により表示された上記凹形状に対するユーザの選択操作を受け付ける操作受付部と、
上記操作受付部が受け付けた選択操作により選択された凹形状を対象として、当該凹形状を覆う構成面を生成する覆面生成部とを更に備えたことを特徴とする請求項１または２に記載のポリゴンメッシュを用いた立体形状の凹形状処理装置。
【請求項６】
上記凹形状検出部により上記フェイスとして検出された複数のポリゴンメッシュのうち、少なくとも１辺が他のポリゴンメッシュと共有されていないポリゴンメッシュを抽出し、抽出したポリゴンメッシュの隣り合うものどうしを連結して外周ループを検出する外周ループ検出部を更に備え、
上記覆面生成部は、上記外周ループの内側を覆う構成面を複数のポリゴンメッシュにより生成することを特徴とする請求項４または５に記載のポリゴンメッシュを用いた立体形状の凹形状処理装置。
【請求項７】
上記凹形状検出部により上記フェイスとして検出された複数のポリゴンメッシュのうち、少なくとも１辺が他のポリゴンメッシュと共有されていないポリゴンメッシュを抽出し、抽出したポリゴンメッシュの隣り合うものどうしを連結して外周ループを検出する外周ループ検出部と、
上記外周ループ検出部により検出された上記外周ループの数に応じて、上記凹形状の種類を判別する種類判別部とを更に備え、
上記凹形状表示部は、上記凹形状検出部により上記フェイスとして検出された上記凹形状を、上記種類判別部により判別された上記凹形状の種類を識別可能に表示させることを特徴とする請求項３または５に記載のポリゴンメッシュを用いた立体形状の凹形状処理装置。
【請求項８】
ポリゴンメッシュで表された立体形状に存在する凹形状を処理するための凹形状処理用プログラムであって、
上記立体形状を構成している個々の上記ポリゴンメッシュを、それぞれ表向き法線方向に指定距離だけ膨張させる膨張処理手段、
上記膨張処理手段により膨張されたポリゴンメッシュにより表される膨張立体形状において交差する部分を検出する交差部分検出手段、および
上記交差部分検出手段により交差していることが検出された部分の、上記膨張処理手段により膨張される前のポリゴンメッシュから構成される面を、上記凹形状の構成要素であるフェイスとして検出する凹形状検出手段
としてコンピュータを機能させるためのポリゴンメッシュを用いた立体形状の凹形状処理用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ポリゴンメッシュを用いた立体形状の凹形状処理装置および凹形状処理用プログラムに関し、特に、ポリゴンメッシュで表された立体形状に存在する凹形状を処理するための装置に用いて好適なものである。
【背景技術】
【０００２】
今日、製品の設計を行う際には、ＣＡＤ（Computer Aided Design）によって製品の形状データを生成することが一般的に行われている。一般に、ＣＡＤでは、複数の構成面の集合として１つの物体の形状を表す。個々の構成面の表面形状は、三角形や四角形から構成される多面体モデル（ポリゴンメッシュ）で表される。
【０００３】
ところで、例えば物体のスキャンデータからＣＡＤの形状データを生成する際などに、一部の構成面に関するポリゴンメッシュが欠落してしまい、貫通穴や袋穴、溝など（以下、これらをまとめて凹形状と称する）が生じる場合がある。これらの凹形状はなくす必要があるが、従来は、ユーザが画面上で凹形状の存在を目視により確認し、ポリゴンメッシュの変形操作などにより手動で凹形状の除去を行っていた。
【０００４】
なお、凹形状を含むＮ辺形領域を覆うようなＢ−スプライン曲面を生成するようにした曲面生成装置が知られている（例えば、特許文献１参照）。この特許文献１に記載の技術を用いれば、凹形状を曲面によって覆うことが可能となる。この特許文献１に記載の曲面生成装置では、凹形状の存在を以下の２つの方法により判定している。
【０００５】
（方法１）
２本の稜線が交わる頂点の単位接線ベクトルを求め、それらの外積ベクトルを求める。さらに、この外積ベクトルとＮ辺形領域の境界稜線列の平均法線ベクトルとの内積を計算し、内積値が正の場合は凸頂点とし、それ以外ならば凹頂点とする。そして、境界稜線中に１つでも凹頂点がある場合、その境界稜線をイレギュラーライン（凹形状を構成するライン）と判定する。
【０００６】
（方法２）
境界平面を求めた局所座標軸で定義されるＸＹ平面に、全ての境界稜線と横断線分を射影する。次に、全ての横断線分どうしの干渉点を得る。ここで、Ｎ辺形領域の凹形状の境界稜線から生成される複数の横断線分上には、干渉点が１点以上存在することになるので、このような干渉点を有する横断線分が属する境界稜線をイレギュラーラインと判定する。
【０００７】
また、ＣＡＤデータによる部品モデル間の隙間を計測する技術も知られている（例えば、特許文献２参照）。この特許文献２に記載の隙間計測方法では、ＣＡＤデータによる部品モデルの表面を複数の面要素に分割し、その分割された各面要素における法線ベクトルを使って接触判定を行い、隙間を形成する面要素間における法線ベクトルの距離を測定することで、部品モデル間の隙間を計測する。
【０００８】
上記接触判定とは、例えば、１つのポリゴンに接触する他の部品モデルからの法線ベクトルの数と、当該１つのポリゴンから発生した法線ベクトルが他の部品モデルに接触する数とで判定する。接触が０の場合は、隙間とみなさない。なお、ここでいう「接触する」とは、相手方の１つのポリゴンに法線ベクトルが当たること、或いは、法線ベクトルが、相手方のポリゴン面内への投影点を有することを示す。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１２−３４３２号公報
【特許文献２】特開２００４−２６５０５０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記特許文献１に記載の技術は、立体形状がトリム曲面で表される場合の凹形状判定処理を示すものであり、立体形状が三角形や四角形から成るポリゴンメッシュで表されるＣＡＤデータには適用することができない。また、上記特許文献２に記載の技術は、２つの部品モデル間に隙間があるか否かを判定する処理を示すものであり、１つの物体上に凹形状があるか否かを判定することはできない。
【００１１】
本発明は、このような問題を解決するために成されたものであり、ポリゴンメッシュで表された立体形状に関して、ユーザが画面上に表示された立体形状を目視により確認して凹形状を探す必要をなくし、立体形状に存在する凹形状を容易に検出できるようにすることを目的とする。
【課題を解決するための手段】
【００１２】
上記した課題を解決するために、本発明では、立体形状を構成している個々のポリゴンメッシュを、それぞれ表向き法線方向に指定距離だけ膨張させて、膨張された立体形状において交差する部分を検出する。そして、当該交差している部分における膨張前のポリゴンメッシュを、凹形状の構成要素として検出するようにしている。
【発明の効果】
【００１３】
上記のように構成した本発明によれば、立体形状において凹形状を構成していない面のポリゴンメッシュについては、これを表向き法線方向に膨張させても、立体形状上の他の面から膨張されたポリゴンメッシュと交差することがないのに対し、凹形状の一面を構成するポリゴンメッシュについては、これを表向き法線方向に膨張させると、同じ凹形状上の面で、上記一面から指定距離の２倍以内の距離に存在する他の面から膨張されたポリゴンメッシュと交差するので、この交差する部分を検出することにより、立体形状に存在する凹形状を検出することができる。これにより、本発明によれば、ユーザが画面上に表示された立体形状を目視により確認して凹形状を探す必要をなくし、立体形状に存在する凹形状を容易に検出することができる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施形態による凹形状処理装置の機能構成例を示すブロック図である。
【図２】本実施形態による膨張処理部の処理内容を示す図である。
【図３】本実施形態による交差部分検出部および凹形状検出部の処理内容を説明するための図である。
【図４】第２の実施形態において凹形状の検出対象から除外する形状を説明するための図である。
【図５】第２の実施形態による凹形状処理装置の機能構成例を示すブロック図である。
【図６】第２の実施形態による交点検出部および除外処理部の処理内容を説明するための図である。
【図７】第３の実施形態による凹形状処理装置の機能構成例を示すブロック図である。
【図８】第３の実施形態による外周ループ検出部の処理内容を説明するための図である。
【図９】第３の実施形態において凹形状にフィレットがある場合の処理内容を説明するための図である。
【図１０】第４の実施形態による凹形状処理装置の機能構成例を示すブロック図である。
【図１１】第４の実施形態による種類判別部の処理内容を説明するための図である。
【発明を実施するための形態】
【００１５】
（第１の実施形態）
以下、本発明の第１の実施形態を図面に基づいて説明する。図１は、第１の実施形態による凹形状処理装置の機能構成例を示すブロック図である。本実施形態の凹形状処理装置は、ポリゴンメッシュで表された立体形状に存在する凹形状を処理するための装置である。
【００１６】
図１に示すように、第１の実施形態による凹形状処理装置は、その機能構成として、膨張処理部１１、交差部分検出部１２、凹形状検出部１３および凹形状表示部１４を備えている。これらの各機能ブロック１１〜１４は、ハードウェア、ＤＳＰ（Digital Signal Processor）、ソフトウェアの何れによっても構成することが可能である。例えばソフトウェアによって構成する場合、上記各機能ブロック１１〜１４は、実際にはコンピュータのＣＰＵ、ＲＡＭ、ＲＯＭなどを備えて構成され、ＲＡＭやＲＯＭ、ハードディスクまたは半導体メモリ等の記録媒体に記憶されたプログラムが動作することによって実現される。
【００１７】
膨張処理部１１は、立体形状を構成している個々のポリゴンメッシュを、それぞれ表向き法線方向に指定距離だけ膨張させる。ここで、ポリゴンメッシュを膨張させる距離は、ユーザがコンピュータの図示しない操作部（キーボード、マウス、タッチパネル等）を操作することによって指定することが可能である。
【００１８】
ユーザが検出したいと考える凹形状における一方向の長さがＲの場合、その半分の値ｒ＝Ｒ／２より大きい長さを膨張距離として指定すれば、凹形状を検出することが可能である。例えば、検出したい凹形状が円形の貫通穴や袋穴（窪み）などである場合、その半径より大きい値を膨張距離として指定すればよい。また、検出したい凹形状が矩形の貫通穴や袋穴、溝などである場合、短辺の長さの半分より大きい値を膨張距離として指定すればよい。
【００１９】
また、ポリゴンメッシュを膨張させる「表向き法線方向」とは、立体形状の内側ではなく、外側に向けて、メッシュの法線方向に膨張させるという意味である。さらに、ポリゴンメッシュを表向き法線方向に膨張させるというのは、ポリゴンメッシュの各頂点を表向き法線方向に移動させ、その移動後の各頂点により新たなポリゴンメッシュを形成するという意味である。図２は、このような膨張処理部１１の処理内容を示す図である。
【００２０】
図２の例において、３つのポリゴンメッシュ２０１，２０２，２０３は、膨張処理を行う前の元の立体形状の一部を成すものである。この３つのポリゴンメッシュ２０１〜２０３は、５個の頂点２１１〜２１５により形成されている。膨張処理部１１は、これら５個の頂点２１１〜２１５を、表向き法線方向に指定距離だけ移動させる。そして、移動後の５個の頂点２１１’〜２１５’により新たなポリゴンメッシュ２０１’〜２０３’を形成する。
【００２１】
交差部分検出部１２は、膨張処理部１１により膨張されたポリゴンメッシュにより表される膨張立体形状において交差する部分を検出する。交差する部分とは、膨張されたポリゴンメッシュが、膨張された立体形状の内側に入り込んでいる部分という意味である。図３（ａ）〜（ｃ）は、この交差部分検出部１２の処理内容を説明するための図である。
【００２２】
図３（ａ）は、ポリゴンメッシュにより表される膨張前の立体形状３００Ａの一例を示す図である。ここでは説明の簡便のため、立体形状３００Ａを一方向から見た平面を示している。図３（ａ）に示す立体形状３００Ａは、袋穴３０１を有している。この図３（ａ）に示す例において、立体形状３００Ａを構成するポリゴンメッシュは何れも立体形状３００Ａの表面を構成するものであり、立体形状３００Ａの内側には入り込んでいない。
【００２３】
図３（ｂ）は、立体形状３００Ａが膨張処理部１１により膨張される様子を示す図である。この図３（ｂ）に示す例では、立体形状３００の表面を成している各ポリゴンメッシュが、それぞれ表向き法線方向に指定距離だけ膨張されている。その膨張された結果の膨張立体形状を示すのが立体形状３００Ｂである。
【００２４】
図３（ｃ）は、膨張処理部１１により膨張された立体形状３００Ｂにおいて交差する部分を示す図である。斜線で示す交差部分３０２では、膨張されたポリゴンメッシュが、膨張された立体形状３００Ｂの内側に入り込んでいる。一例として、袋穴３０１が直径Ｒを有する断面円形の円柱形状である場合、その半分の値ｒ＝Ｒ／２より大きい長さを膨張距離として指定しておけば、袋穴３０１を構成しているポリゴンメッシュを膨張させた部分において必ず交差部分３０２が生じる。
【００２５】
すなわち、立体形状３００Ａで袋穴３０１を構成していない面のポリゴンメッシュについては、これを表向き法線方向に膨張させても、立体形状３００Ａ上の他の面から膨張されたポリゴンメッシュと交差することはない。これに対し、袋穴３０１の一面を構成するポリゴンメッシュについては、これを表向き法線方向に膨張させると、同じ袋穴３０１を構成している面で、袋穴３０１の一面から指定距離の２倍以内の距離にある他の面から膨張されたポリゴンメッシュと交差することになる。交差部分検出部１２は、この交差部分３０２を検出する。
【００２６】
凹形状検出部１３は、交差部分検出部１２により交差していることが検出された部分の、膨張処理部１１により膨張される前のポリゴンメッシュから構成される面を、凹形状の構成要素であるフェイスとして検出する。図３（ｄ）は、この凹形状検出部１３の処理内容を説明するための図である。
【００２７】
図３（ｄ）の例において、凹形状検出部１３は、交差部分検出部１２により検出された交差部分３０２のポリゴンメッシュに関して、これが膨張される前のポリゴンメッシュを元の立体形状３００Ａ上から特定する。そして、特定した複数のポリゴンメッシュから構成される面を、袋穴３０１の構成要素であるフェイス３０３Ａ，３０３Ｂとして検出する。図３の例では袋穴３０１を円柱形状としているので、円柱形状の側面部分の構成面３０３Ａと、底面部分の構成面３０３Ｂとがそれぞれフェイスとして検出される。
【００２８】
凹形状表示部１４は、凹形状検出部１３によりフェイスとして検出された凹形状を、立体形状の中で識別可能に表示させる。例えば、凹形状表示部１４は、図３（ｄ）のように凹形状検出部１３により検出された袋穴３０１のフェイス３０３Ａ，３０３Ｂを、他の部分とは異なる色で表示させる。あるいは、凹形状検出部１３により検出された袋穴３０１に対して蓋をするような構成面を想定し、当該蓋の構成面を他の部分とは異なる色で表示させるようにしてもよい。
【００２９】
蓋の構成面は、例えば以下のような処理によって想定することが可能である。まず、凹形状検出部１３により袋穴３０１のフェイス３０３Ａ，３０３Ｂとして検出された複数のポリゴンメッシュのうち、袋穴３０１の開口部の縁となる部分を検出する。具体的には、フェイス３０３Ａ，３０３Ｂを構成している複数のポリゴンメッシュのうち、少なくとも１辺が他のポリゴンメッシュと共有されていないポリゴンメッシュを抽出することにより、袋穴３０１の開口部の縁となる部分を検出することが可能である。図３の例では、袋穴３０１の開口部の縁は円周ループにより構成される。
【００３０】
次に、検出した袋穴３０１の縁（円周ループ）の内側を覆う構成面を仮想的に生成する。図３の例では、円周ループ内の円形の構成面を仮想的に生成する。そして、仮想的に生成した構成面を、立体形状３００Ａを構成している他の構成面とは異なる色で表示させる。なお、この場合、袋穴３０１を構成しているフェイス３０３Ａ，３０３Ｂについては非表示とするようにしてもよい。
【００３１】
以上詳しく説明したように、第１の実施形態では、立体形状を構成している個々のポリゴンメッシュを、それぞれ表向き法線方向に指定距離だけ膨張させ、膨張された立体形状において交差する部分を検出する。そして、当該交差している部分における膨張前のポリゴンメッシュから構成される面を、凹形状の構成要素であるフェイスとして検出するようにしている。
【００３２】
このように構成した第１の実施形態によれば、凹形状の面を構成するポリゴンメッシュについては、これを表向き法線方向に膨張させると、同じ凹形状を構成している他の面から膨張されたポリゴンメッシュと交差するので、この交差する部分を検出することにより、立体形状に存在する凹形状を検出することができる。これにより、第１の実施形態によれば、ユーザが画面上に表示された立体形状を目視により確認して凹形状を探す必要をなくし、立体形状に存在する凹形状を容易に検出することができる。
【００３３】
また、第１の実施形態では、検出した凹形状のフェイス部分を可視化して表示させるようにしているので、画面上に表示された立体形状においてどこに凹形状が存在するのかを直ちに把握することができる。これにより、ユーザは、画面上で把握した凹形状の修正を、ポリゴンメッシュの変形操作などによって適宜行うことが可能となる。
【００３４】
（第２の実施形態）
次に、本発明の第２の実施形態を図面に基づいて説明する。第２の実施形態は、上記第１の実施形態にて説明した手法で検出される凹形状のうち、特定の形状については検出対象から除外できるようにしたものである。
【００３５】
図４は、凹形状の検出対象から除外する形状を説明するための図である。図４は、ポリゴンメッシュにより表される立体形状４００の一例を示す図である。ここでは説明の簡便のため、立体形状４００を一方向から見た平面を示している。図４に示す立体形状４００は、袋穴４０１を有するとともに、コーナー４０２を有している。
【００３６】
このような立体形状４００に対して第１の実施形態で説明した処理を実施すると、袋穴４０１およびコーナー４０２の両方が凹形状として検出されることになる。第２の実施形態では、袋穴４０１のみを凹形状として検出し、コーナー４０２については凹形状として検出しないようにする。以下に、そのための構成を説明する。
【００３７】
図５は、第２の実施形態による凹形状処理装置の機能構成例を示すブロック図である。なお、この図５において、図１に示した符号と同一の符号を付したものは同一の機能を有するものであるので、ここでは重複する説明を省略する。図５に示すように、第２の実施形態による凹形状処理装置は、図１に示した凹形状検出部１３に代えて凹形状検出部１３’を備えている。
【００３８】
凹形状検出部１３’は、第１の実施形態で説明した機能に加えて、グループ化部１３Ａ、交点検出部１３Ｂおよび除外処理部１３Ｃの機能を備えている。グループ化部１３Ａは、凹形状の構成要素として検出された複数のフェイスについて、立体形状のエッジを介して連結するフェイス群をグループ化する。例えば、図３のように、円柱形状の袋穴３０１に関して２つのフェイス３０３Ａ，３０３Ｂが検出された場合、これら２つのフェイス３０３Ａ，３０３Ｂは、円柱という立体形状のエッジ（底面の円周ループ）を介して連結しているので、これらを１つにグループ化する。
【００３９】
図４のように、袋穴４０１およびコーナー４０２を有する立体形状４００を処理対象とした場合は、袋穴４０１を構成している複数のフェイス群をグループ化する一方、コーナー４０２を構成している複数のフェイス群を別にグループ化する。コーナー４０２の場合、直交する２つのフェイスが検出されるので、これら２つのフェイスが１つにグループ化される。
【００４０】
交点検出部１３Ｂは、グループ化部１３Ａにより生成されたグループごとに、グループ内に含まれる複数のフェイスのそれぞれについて、表向き法線と、同一グループ内の他のフェイスとの交点を検出する。除外処理部１３Ｃは、表向き法線の始点から所定距離（例えば、指定距離の２倍）以内に交点が検出されたフェイスがグループ内に存在しない場合、そのグループのフェイス群を凹形状の構成要素から除外する。
【００４１】
図６は、この交点検出部１３Ｂおよび除外処理部１３Ｃの処理内容を説明するための図である。図６（ａ）は、袋穴４０１について生成されたグループに関する処理例を示したものである。図６（ｂ）は、コーナー４０２について生成されたグループに関する処理例を示したものである。
【００４２】
例えば、図６（ｂ）に示すコーナー４０２のグループに関して、交点検出部１３Ｂは、グループ内に含まれる２つのフェイス６０２Ａ，６０２Ｂのそれぞれについて、表向き法線６１２Ａ，６１２Ｂを設定する。そして、交点検出部１３Ｂは、この設定した表向き法線６１２Ａ，６１２Ｂと、同じグループ内に存在する他のフェイス６０２Ｂ，６０２Ａとの交点が存在するか否かを検出する。
【００４３】
具体的には、交点検出部１３Ｂは、第１のフェイス６０２Ａについて設定した第１の表向き法線６１２Ａと、同じグループ内に存在する第２のフェイス６０２Ｂとの交点が存在するか否かを検出する。また、交点検出部１３Ｂは、第２のフェイス６０２Ｂについて設定した第２の表向き法線６１２Ｂと、同じグループ内に存在する第１のフェイス６０２Ａとの交点が存在するか否かを検出する。
【００４４】
図６（ｂ）に示すコーナー４０２のグループに関しては、各フェイス６０２Ａ，６０２Ｂに設定した表向き法線６１２Ａ，６１２Ｂと、同じグループ内に存在する他のフェイス６０２Ｂ，６０２Ａとの交点は検出されない。この場合、除外処理部１３Ｃは、表向き法線の始点から所定距離以内に交点が検出されたフェイスがグループ内に存在しないとして、コーナー４０２のグループのフェイス群を凹形状の構成要素から除外する。
【００４５】
一方、交点検出部１３Ｂは、図６（ａ）に示す袋穴４０１のグループに関して、グループ内に含まれる２つのフェイス６０１Ａ，６０１Ｂのそれぞれについて、表向き法線６１１Ａ，６１１Ｂを設定する。そして、交点検出部１３Ｂは、この設定した表向き法線６１１Ａ，６１１Ｂと、同じグループ内に存在する他のフェイス６０１Ｂ，６０１Ａとの交点が存在するか否かを検出する。
【００４６】
図６（ａ）に示す袋穴４０１のグループに関しては、第２のフェイス６０１Ｂのエッジ部分に設定した表向き法線６１１Ｂと、同じグループ内に存在する他のフェイス６０１Ａのエッジ部分との間に交点が検出される。この交点は、表向き法線６１１Ｂの始点から指定距離の２倍以内に存在する。よって、この場合に除外処理部１３Ｃは、表向き法線の始点から所定距離以内に交点が検出されたフェイスがグループ内に存在するとして、袋穴３０１のグループのフェイス群を凹形状の構成要素としてそのまま維持する。
【００４７】
以上のように構成した第２の実施形態によれば、実際には凹形状ではないコーナー形状が凹形状であると誤検出されてしまうことを防止することができる。
【００４８】
（第３の実施形態）
次に、本発明の第３の実施形態を図面に基づいて説明する。第３の実施形態は、凹形状検出部１３により検出された凹形状を覆うような構成面を自動的に生成できるようにしたものである。
【００４９】
図７は、第３の実施形態による凹形状処理装置の機能構成例を示すブロック図である。なお、図７において、図１に示した符号と同一の符号を付したものは同一の機能を有するものであるので、ここでは重複する説明を省略する。図７に示すように、第３の実施形態による凹形状処理装置は、図１に示した機能構成に加えて、操作受付部１５、覆面生成部１６および外周ループ検出部１７を更に備えている。
【００５０】
操作受付部１５は、凹形状表示部１４により表示された凹形状に対するユーザの選択操作を受け付ける。覆面生成部１６は、操作受付部１５が受け付けた選択操作により選択された凹形状を対象として、当該凹形状を覆う構成面を生成する。このような構成面を生成するために、前提として外周ループ検出部１７の処理を実行する。
【００５１】
外周ループ検出部１７は、凹形状検出部１３により凹形状のフェイスとして検出された複数のポリゴンメッシュのうち、少なくとも１辺が他のポリゴンメッシュと共有されていないポリゴンメッシュを抽出し、抽出したポリゴンメッシュの隣り合うものどうしを連結して外周ループを検出する。ここで、少なくとも１辺が他のポリゴンメッシュと共有されていないポリゴンメッシュは、凹形状の開口部のエッジ部分を構成するものである。
【００５２】
例えば、図８（ａ）のように、断面円形の円柱形状をした袋穴８００が存在する場合、凹形状検出部１３により凹形状のフェイスとして検出された複数のポリゴンメッシュのうち、少なくとも１辺が他のポリゴンメッシュと共有されていないポリゴンメッシュとは、袋穴８００の開口部に沿った円形のエッジ部分を構成する複数のポリゴンメッシュである。これら複数のポリゴンメッシュの隣り合うものどうしを連結することにより、円周ループ８０１が検出される。
【００５３】
また、図８（ｂ）のように、断面矩形の四角柱形状をした袋穴８１０が存在する場合、凹形状検出部１３により凹形状のフェイスとして検出された複数のポリゴンメッシュのうち、少なくとも１辺が他のポリゴンメッシュと共有されていないポリゴンメッシュとは、袋穴８１０の開口部に沿った四角形のエッジ部分を構成する複数のポリゴンメッシュである。これら複数のポリゴンメッシュの隣り合うものどうしを連結することにより、矩形ループ８１１が検出される。
【００５４】
覆面生成部１６は、外周ループ検出部１７により検出した外周ループの内側を覆う構成面を、複数のポリゴンメッシュにより生成する。ここで生成される構成面は、穴の開口部を塞ぐような形状をした構成面となる。例えば、図８（ａ）のように、断面円形の円柱形状をした袋穴８００が存在する場合、当該袋穴８００の開口部を塞ぐ円形の構成面が覆面生成部１６により生成される。また、図８（ｂ）のように、断面矩形の四角柱形状をした袋穴８１０が存在する場合、当該袋穴８１０の開口部を塞ぐ四角形の構成面が覆面生成部１６により生成される。
【００５５】
以上のように構成した第３の実施形態によれば、凹形状検出部１３により検出された凹形状の修正（穴埋め）を、ユーザが手動でポリゴンメッシュの変形操作などによって行う必要がなく、自動的に行うことができる。また、第３の実施形態では、凹形状表示部１４により表示された凹形状のうち、ユーザにより選択された凹形状を覆面生成部１６の処理対象としているので、第２の実施形態のようにコーナー形状を除外しなくても（コーナー形状が凹形状の１つとして表示されたとしても）、ユーザがそれを選択しなければ、穴埋めの対象から外すことができる。
【００５６】
なお、第３の実施形態では、凹形状検出部１３により検出された凹形状のうち、ユーザにより選択された凹形状のみを覆面生成部１６の処理対象としているが、凹形状表示部１４および操作受付部１５を不要とし、凹形状検出部１３により検出された凹形状の全てを自動的に覆面生成部１６の処理対象とするようにしてもよい。この場合、第２の実施形態のように、凹形状検出部１３に代えて凹形状検出部１３’を設け、凹形状検出部１３’により検出された凹形状を自動的に覆面生成部１６の処理対象とするようにしてもよい。
【００５７】
ところで、図９（ａ）に示すように、立体形状に存在する穴９００の開口部のエッジ部分９０１にフィレットがかかっている（丸みを有している）場合、指定距離の値によっては、フィレットの途中部分（点線で示す部分）より表面側では、膨張処理部１１により膨張された立体形状において交差する部分が検出されない。よって、凹形状検出部１３は、図９（ｂ）に示すように、点線で示したフィレットの途中部分に凹形状の開口部があると誤検出してしまう。
【００５８】
この場合、覆面生成部１６が、凹形状検出部１３により検出された凹形状を対象として、当該凹形状を覆う構成面を生成すると、図９（ｃ）に示すように、立体形状の表面が少し窪み９０２のある形状となってしまう。これを防ぐために、凹形状表示部１４により表示された凹形状の中からユーザが何れかを選択する際に、表示された凹形状より広い領域をマウスのドラッグ操作によって指定することにより、指定された領域内を対象として、領域内の凹形状を覆う構成面を生成するようにしてもよい。
【００５９】
すなわち、凹形状検出部１３により検出された凹形状よりも広い領域を処理対象とすれば、外周ループ検出部１７により抽出されるエッジ部分のポリゴンメッシュ（少なくとも１辺が他のポリゴンメッシュと共有されていないポリゴンメッシュ）は、凹形状検出部１３により誤検出された凹形状のエッジ部分（フィレットの途中部分）のポリゴンメッシュではなく、フィレットの端部を構成するポリゴンメッシュとなる。よって、図９（ｃ）のような窪み９０２がない、穴９００の全体を覆う構成面を生成することが可能となる。
【００６０】
（第４の実施形態）
次に、本発明の第４の実施形態を図面に基づいて説明する。第４の実施形態は、上記第３の実施形態を変形したものであり、凹形状検出部１３により検出された凹形状を、その種類に応じた態様で表示させるようにしたものである。
【００６１】
図１０は、第４の実施形態による凹形状処理装置の機能構成例を示すブロック図である。なお、この図１０において、図７に示した符号と同一の符号を付したものは同一の機能を有するものであるので、ここでは重複する説明を省略する。図１０に示すように、第４の実施形態による凹形状処理装置は、図７に示した機能構成に加えて、種類判別部１８を更に備えている。また、凹形状表示部１４に代えて凹形状表示部１４’を備えている。
【００６２】
種類判別部１８は、外周ループ検出部１７により検出された外周ループの数に応じて、凹形状の種類を判別する。図１１は、この種類判別部１８の処理内容を説明するための図である。図１１（ａ）のように、凹形状検出部１３により検出された１つの凹形状に関して外周ループ検出部１７により検出された外周ループの数が１つの場合、種類判別部１８は、その凹形状は袋穴であると判定する。また、図１１（ｂ）または（ｃ）のように、１つの凹形状に関して外周ループ検出部１７により検出された外周ループの数が２つ以上の場合、種類判別部１８は、その凹形状は貫通穴であると判定する。
【００６３】
凹形状表示部１４’は、凹形状検出部１３によりフェイスとして検出された凹形状を、種類判別部１８により判別された凹形状の種類を識別可能に表示させる。例えば、袋穴と貫通穴とを異なる色で表示させる。このようにすれば、凹形状検出部１３により検出された凹形状の中からユーザが何れかを選択して穴埋めする際に、種類に応じて穴埋めする凹形状と穴埋めしない凹形状とを一目で把握することが可能となる。例えば、貫通穴は立体形状に意図的に開けられた穴であるのに対し、袋穴は傷に相当するものである場合が考えられる。この場合、ユーザは、覆面生成部１６の処理対象として、袋穴だけを選択することが容易にできるようになる。
【００６４】
なお、第４の実施形態は、第３の実施形態の変形例として説明したが、第１または第２の実施形態に対する変形例として適用することも可能である。
【００６５】
以上、第１〜第４の実施形態について説明したが、これらは何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその要旨、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００６６】
１１  膨張処理部
１２  交差部分検出部
１３  凹形状検出部
１３Ａ  グループ化部
１３Ｂ  交点検出部
１３Ｃ  除外処理部
１４，１４’  凹形状表示部
１５  操作受付部
１６  覆面生成部
１７  外周ループ検出部
１８  種類判別部
【図１】
0006626742.tif 000002
【図２】
0006626742.tif 000003
【図３】
0006626742.tif 000004
【図４】
0006626742.tif 000005
【図５】
0006626742.tif 000006
【図６】
0006626742.tif 000007
【図７】
0006626742.tif 000008
【図８】
0006626742.tif 000009
【図９】
0006626742.tif 000010
【図１０】
0006626742.tif 000011
【図１１】
0006626742.tif 000012